From a0d26b1dbf4a3da5778c87e95c8305427d5f8aa8 Mon Sep 17 00:00:00 2001 From: Hai Liang Wang Date: Thu, 13 Sep 2018 00:55:05 +0800 Subject: [PATCH] =?UTF-8?q?Closed=20#77=20=E4=BC=98=E5=8C=96java=20package?= =?UTF-8?q?=E7=9B=AE=E5=BD=95=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../aggregation/CallOutHangupAggsResult.java | 2 +- .../aggregation/CallOutHangupAuditResult.java | 2 +- .../cc/{util => }/aggregation/MathHelper.java | 2 +- .../filter}/AgentCallOutFilter.java | 6 +- .../filter}/AgentStatusBusyOrgiFilter.java | 4 +- .../filter}/AgentStatusOrgiFilter.java | 4 +- .../filter}/AgentUserOrgiFilter.java | 4 +- .../filter}/AiCallOutFilter.java | 6 +- .../com/chatopera/cc/app/Application.java | 5 +- .../AutomaticServiceDist.java} | 34 +- .../cc/app/{ => basic}/MainContext.java | 14 +- .../cc/app/{ => basic}/MainUtils.java | 32 +- .../cc/app/{ => basic}/Viewport.java | 2 +- .../app/{ => basic}/aop/SyncDatabaseExt.java | 10 +- .../resource/ActivityResource.java | 28 +- .../resource/BatchResource.java | 20 +- .../resource/OutputTextFormat.java | 4 +- .../{service => basic}/resource/Resource.java | 4 +- .../cc/app/{service => }/cache/CacheBean.java | 2 +- .../app/{service => }/cache/CacheHelper.java | 4 +- .../{service => }/cache/CacheInstance.java | 2 +- .../cache/hazelcast/HazlcastCacheHelper.java | 24 +- .../hazelcast/impl/AgentStatusCache.java | 4 +- .../cache/hazelcast/impl/AgentUserCache.java | 4 +- .../cache/hazelcast/impl/ApiUserCache.java | 4 +- .../cache/hazelcast/impl/CallCenterCache.java | 4 +- .../cache/hazelcast/impl/JobCache.java | 4 +- .../cache/hazelcast/impl/MultiCache.java | 4 +- .../cache/hazelcast/impl/OnlineCache.java | 4 +- .../cache/hazelcast/impl/SystemCache.java | 4 +- .../app/config/ApiRequestMatchingFilter.java | 4 +- .../config/ApplicationStartupListener.java | 2 +- .../config/DelegateRequestMatchingFilter.java | 2 +- .../cc/app/config/DisruptorConfigure.java | 14 +- .../cc/app/config/IMServerConfiguration.java | 4 +- .../cc/app/config/RedisConfigure.java | 2 +- .../cc/app/config/StartedEventListener.java | 16 +- .../cc/app/config/WebServerConfiguration.java | 2 +- .../cc/app/handler/ApplicationController.java | 9 +- .../com/chatopera/cc/app/handler/Handler.java | 10 +- .../cc/app/handler/LoginController.java | 14 +- .../cc/app/handler/admin/AdminController.java | 22 +- .../handler/admin/area/AreaController.java | 8 +- .../callcenter/CallCenterAclController.java | 4 +- .../callcenter/CallCenterBlackController.java | 4 +- .../callcenter/CallCenterController.java | 6 +- .../CallCenterExtentionController.java | 18 +- .../callcenter/CallCenterIvrController.java | 6 +- .../callcenter/CallCenterMediaController.java | 6 +- .../CallCenterResourceController.java | 10 +- .../CallCenterRouterController.java | 4 +- .../CallCenterSipTrunkController.java | 6 +- .../callcenter/CallCenterSkillController.java | 8 +- .../channel/CalloutChannelController.java | 10 +- .../admin/channel/SNSAccountIMController.java | 12 +- .../admin/channel/WebIMController.java | 14 +- .../admin/config/SystemConfigController.java | 14 +- .../admin/config/SystemMessageController.java | 6 +- .../handler/admin/organ/OrganController.java | 16 +- .../handler/admin/role/RoleController.java | 12 +- .../admin/skill/AgentSkillController.java | 2 +- .../system/HazelcastMonitorController.java | 2 +- .../handler/admin/system/LogController.java | 4 +- .../admin/system/MetadataController.java | 12 +- .../admin/system/SysDicController.java | 4 +- .../admin/system/TemplateController.java | 10 +- .../handler/admin/users/UsersController.java | 14 +- .../app/handler/api/ApiLoginController.java | 10 +- .../api/rest/ApiAgentUserController.java | 2 +- .../api/rest/ApiCallMonitorController.java | 6 +- .../api/rest/ApiCallRecordsController.java | 18 +- .../api/rest/ApiChatMessageController.java | 2 +- .../api/rest/ApiChatbotController.java | 6 +- .../api/rest/ApiContactNotesController.java | 10 +- .../api/rest/ApiContactTagsController.java | 8 +- .../api/rest/ApiContactsController.java | 2 +- .../api/rest/ApiDailplanRunController.java | 8 +- .../api/rest/ApiLeavemsgController.java | 4 +- .../api/rest/ApiOnlineUserController.java | 4 +- .../handler/api/rest/ApiOrganController.java | 2 +- .../api/rest/ApiQualityController.java | 4 +- .../api/rest/ApiQuickReplyController.java | 2 +- .../api/rest/ApiQuickTypeController.java | 4 +- .../api/rest/ApiServiceQueneController.java | 32 +- .../handler/api/rest/ApiTagsController.java | 2 +- .../handler/api/rest/ApiUserController.java | 4 +- .../handler/api/rest/ApiWebIMController.java | 2 +- .../api/rest/UkefuApiTagsController.java | 4 +- .../cc/app/handler/apps/AppsController.java | 24 +- .../handler/apps/agent/AgentController.java | 54 +- .../apps/callcenter/ExtentionController.java | 18 +- .../apps/callcenter/SipTrunkController.java | 16 +- .../apps/callout/CalloutController.java | 6 +- .../apps/contacts/ContactsController.java | 22 +- .../apps/customer/CustomerController.java | 26 +- .../handler/apps/entim/EntIMController.java | 14 +- .../handler/apps/internet/IMController.java | 36 +- .../app/handler/apps/job/JobController.java | 4 +- .../app/handler/apps/kbs/KbsController.java | 12 +- .../app/handler/apps/kbs/TopicController.java | 30 +- .../organization/OrganizationController.java | 6 +- .../apps/quality/AgentQualityController.java | 16 +- .../handler/apps/report/CubeController.java | 18 +- .../apps/report/CubeLevelController.java | 8 +- .../apps/report/CubeMeasureController.java | 6 +- .../apps/report/DimensionController.java | 8 +- .../handler/apps/report/ReportController.java | 26 +- .../apps/report/ReportDesignController.java | 26 +- .../apps/report/ReportViewController.java | 6 +- .../apps/service/AgentSummaryController.java | 16 +- .../apps/service/ChatServiceController.java | 44 +- .../apps/service/CommentController.java | 2 +- .../apps/service/OnlineUserController.java | 28 +- .../service/ProcessedSummaryController.java | 16 +- .../handler/apps/service/StatsController.java | 8 +- .../apps/setting/IMAgentController.java | 20 +- .../apps/setting/QuickReplyController.java | 22 +- .../handler/apps/tenant/TenantController.java | 20 +- .../app/handler/apps/test/TestController.java | 4 +- .../resource/CallAgentResourceController.java | 4 +- .../resource/ContactsResourceController.java | 2 +- .../app/handler/resource/MediaController.java | 4 +- .../resource/UsersResourceController.java | 6 +- .../com/chatopera/cc/app/im/ServerRunner.java | 2 +- .../cc/app/im/client/NettyAgentClient.java | 2 +- .../app/im/client/NettyCallCenterClient.java | 2 +- .../cc/app/im/client/NettyCalloutClient.java | 2 +- .../cc/app/im/client/NettyChatbotClient.java | 2 +- .../cc/app/im/client/NettyClients.java | 2 +- .../cc/app/im/client/NettyIMClient.java | 2 +- .../cc/app/im/handler/AgentEventHandler.java | 22 +- .../app/im/handler/CalloutEventHandler.java | 2 +- .../app/im/handler/ChatbotEventHandler.java | 22 +- .../cc/app/im/handler/EntIMEventHandler.java | 10 +- .../cc/app/im/handler/IMEventHandler.java | 21 +- .../app/im/message/AgentServiceMessage.java | 2 +- .../cc/app/im/message/AgentStatusMessage.java | 2 +- .../cc/app/im/message/ChatMessage.java | 4 +- .../chatopera/cc/app/im/message/Message.java | 2 +- .../cc/app/im/message/NewRequestMessage.java | 2 +- .../cc/app/im/router/MessageRouter.java | 18 +- .../cc/app/im/util/ChatbotUtils.java | 148 + .../chatopera/cc/app/im/util/HumanUtils.java | 223 ++ .../cc/app/im/util/RichMediaUtils.java | 157 + .../interceptor/CrossInterceptorHandler.java | 2 +- .../interceptor/LogIntercreptorHandler.java | 4 +- .../interceptor/UserInterceptorHandler.java | 10 +- .../chatopera/cc/app/model/AgentReport.java | 2 +- .../chatopera/cc/app/model/AgentService.java | 4 +- .../chatopera/cc/app/model/AgentStatus.java | 10 +- .../com/chatopera/cc/app/model/AgentUser.java | 2 +- .../chatopera/cc/app/model/ContactNotes.java | 2 +- .../com/chatopera/cc/app/model/Contacts.java | 2 +- .../java/com/chatopera/cc/app/model/Cube.java | 2 +- .../chatopera/cc/app/model/EntCustomer.java | 2 +- .../com/chatopera/cc/app/model/Extention.java | 2 +- .../com/chatopera/cc/app/model/Favorites.java | 2 +- .../cc/app/model/FormFilterItem.java | 2 +- .../chatopera/cc/app/model/Instruction.java | 6 +- .../chatopera/cc/app/model/InviteRecord.java | 2 +- .../com/chatopera/cc/app/model/JobDetail.java | 2 +- .../com/chatopera/cc/app/model/KbsTopic.java | 2 +- .../cc/app/model/KbsTopicComment.java | 2 +- .../cc/app/model/MessageInContent.java | 2 +- .../chatopera/cc/app/model/MetadataTable.java | 2 +- .../chatopera/cc/app/model/OnlineUser.java | 2 +- .../chatopera/cc/app/model/OrdersComment.java | 2 +- .../chatopera/cc/app/model/PublishedCube.java | 2 +- .../cc/app/model/PublishedReport.java | 2 +- .../chatopera/cc/app/model/QuickReply.java | 2 +- .../com/chatopera/cc/app/model/Report.java | 2 +- .../chatopera/cc/app/model/ReportFilter.java | 2 +- .../chatopera/cc/app/model/ReportModel.java | 2 +- .../chatopera/cc/app/model/RequestLog.java | 2 +- .../com/chatopera/cc/app/model/Scene.java | 2 +- .../com/chatopera/cc/app/model/ServiceAi.java | 2 +- .../chatopera/cc/app/model/StatusEvent.java | 4 +- .../com/chatopera/cc/app/model/Topic.java | 2 +- .../com/chatopera/cc/app/model/UKeFuDic.java | 4 +- .../cc/app/model/UKefuCallOutNames.java | 2 +- .../chatopera/cc/app/model/UserHistory.java | 4 +- .../cc/app/model/UserTraceHistory.java | 2 +- .../chatopera/cc/app/model/WorkOrders.java | 2 +- .../es/ContactNotesRepository.java | 2 +- .../es/ContactsEsCommonRepository.java | 2 +- .../es/ContactsRepository.java | 2 +- .../es/ContactsRepositoryImpl.java | 4 +- .../es/EntCustomerEsCommonRepository.java | 2 +- .../es/EntCustomerRepository.java | 2 +- .../es/EntCustomerRepositoryImpl.java | 4 +- .../es/KbsTopicCommentEsCommonRepository.java | 2 +- .../es/KbsTopicCommentRepository.java | 2 +- .../es/KbsTopicCommentRepositoryImpl.java | 2 +- .../es/KbsTopicEsCommonRepository.java | 2 +- .../es/KbsTopicRepository.java | 2 +- .../es/KbsTopicRepositoryImpl.java | 2 +- .../es/QuickReplyEsCommonRepository.java | 2 +- .../es/QuickReplyRepository.java | 2 +- .../es/QuickReplyRepositoryImpl.java | 4 +- .../es/TopicEsCommonRepository.java | 2 +- .../es/TopicRepository.java | 2 +- .../es/TopicRepositoryImpl.java | 4 +- .../es/UKAggResultExtractor.java | 2 +- .../es/UKAggTopResultExtractor.java | 2 +- .../es/UKResultMapper.java | 2 +- .../hibernate/BaseService.java | 2 +- .../impl/AgentUserService.java | 4 +- .../impl/BatchDataProcess.java | 8 +- .../impl/CallOutQuene.java | 8 +- .../impl/ContactsDataExchangeImpl.java | 6 +- .../impl/DataBatProcess.java | 8 +- .../impl/ESDataExchangeImpl.java | 12 +- .../impl/HazelcastService.java | 2 +- .../impl/OrganDataExchangeImpl.java | 6 +- .../impl/QuickTypeDataExchangeImpl.java | 6 +- .../impl/ServiceDataExchangeImpl.java | 6 +- .../impl/TopicDataExchangeImpl.java | 6 +- .../impl/TopicMoreDataExchangeImpl.java | 8 +- .../impl/TopicTypeDataExchangeImpl.java | 6 +- .../impl/UserDataExchangeImpl.java | 6 +- .../impl/UserService.java | 2 +- .../repository/AclRepository.java | 2 +- .../repository/AdTypeRepository.java | 2 +- .../repository/AgentReportRepository.java | 2 +- .../repository/AgentServiceRepository.java | 2 +- .../AgentServiceSatisRepository.java | 2 +- .../repository/AgentStatusRepository.java | 2 +- .../AgentUserContactsRepository.java | 2 +- .../repository/AgentUserRepository.java | 2 +- .../repository/AgentUserTaskRepository.java | 2 +- .../repository/AiConfigRepository.java | 2 +- .../repository/AiSNSAccountRepository.java | 2 +- .../repository/AreaTypeRepository.java | 2 +- .../repository/AttachmentRepository.java | 2 +- .../repository/BaseRepository.java | 2 +- .../repository/BlackListRepository.java | 2 +- .../repository/CallAgentRepository.java | 2 +- .../repository/CallCenterSkillRepository.java | 2 +- .../CallMonitorPerformanceRepository.java | 2 +- .../repository/CallMonitorRepository.java | 2 +- .../repository/CallOutDialplanRepository.java | 2 +- .../CallOutLogDialPlanRepository.java | 2 +- .../repository/CallOutTargetRepository.java | 2 +- .../repository/ChatMessageRepository.java | 2 +- .../repository/ChatbotRepository.java | 2 +- .../ColumnPropertiesRepository.java | 2 +- .../repository/ConsultInviteRepository.java | 2 +- .../repository/CubeLevelRepository.java | 2 +- .../repository/CubeMeasureRepository.java | 2 +- .../repository/CubeMetadataRepository.java | 2 +- .../repository/CubeRepository.java | 2 +- .../repository/CubeService.java | 6 +- .../repository/CubeTypeRepository.java | 2 +- .../repository/DataDicRepository.java | 2 +- .../repository/DataEventRepository.java | 2 +- .../repository/DataSourceService.java | 2 +- .../repository/DbDataRepository.java | 2 +- .../repository/DimensionRepository.java | 2 +- .../repository/DrilldownRepository.java | 2 +- .../repository/ExtentionRepository.java | 2 +- .../repository/FormFilterItemRepository.java | 2 +- .../repository/FormFilterRepository.java | 2 +- .../repository/GenerationRepository.java | 2 +- .../repository/IMGroupRepository.java | 2 +- .../repository/IMGroupUserRepository.java | 2 +- .../repository/InstructionRepository.java | 2 +- .../repository/InviteRecordRepository.java | 2 +- .../repository/IvrMenuRepository.java | 2 +- .../repository/JobDetailRepository.java | 2 +- .../repository/KbsExpertRepository.java | 2 +- .../repository/KbsTypeRepository.java | 2 +- .../repository/KnowledgeTypeRepository.java | 2 +- .../repository/LeaveMsgRepository.java | 2 +- .../repository/LogRepository.java | 2 +- .../repository/MediaRepository.java | 2 +- .../repository/MetadataRepository.java | 2 +- .../repository/OnlineUserHisRepository.java | 2 +- .../repository/OnlineUserRepository.java | 2 +- .../repository/OrganRepository.java | 2 +- .../repository/OrganRoleRepository.java | 2 +- .../repository/OrganizationRepository.java | 2 +- .../repository/OrgiSkillRelRepository.java | 2 +- .../repository/PbxHostRepository.java | 2 +- .../repository/ProcessContentRepository.java | 2 +- .../repository/ProductRepository.java | 2 +- .../repository/PropertiesEventRepository.java | 2 +- .../repository/PublishedCubeRepository.java | 2 +- .../repository/PublishedReportRepository.java | 2 +- .../repository/QualityRepository.java | 2 +- .../repository/QueSurveyAnswerRepository.java | 2 +- .../QueSurveyProcessRepository.java | 2 +- .../QueSurveyQuestionRepository.java | 2 +- .../repository/QuickTypeRepository.java | 2 +- .../repository/RecentUserRepository.java | 2 +- .../repository/ReportCubeService.java | 6 +- .../repository/ReportFilterRepository.java | 2 +- .../repository/ReportModelRepository.java | 2 +- .../repository/ReportRepository.java | 2 +- .../repository/ReporterRepository.java | 2 +- .../repository/RequestLogRepository.java | 2 +- .../repository/RoleAuthRepository.java | 2 +- .../repository/RoleRepository.java | 2 +- .../repository/RouterRulesRepository.java | 2 +- .../repository/SNSAccountRepository.java | 2 +- .../repository/SaleStatusRepository.java | 2 +- .../repository/SceneRepository.java | 2 +- .../repository/SecretRepository.java | 2 +- .../repository/ServiceAiRepository.java | 2 +- .../repository/ServiceSummaryRepository.java | 2 +- .../repository/SessionConfigRepository.java | 2 +- .../repository/SipTrunkRepository.java | 2 +- .../repository/SkillExtentionRepository.java | 2 +- .../repository/SkillRepository.java | 2 +- .../repository/StatusEventRepository.java | 2 +- .../StatusEventSatisfRepository.java | 2 +- .../repository/SysDicRepository.java | 2 +- .../repository/SystemConfigRepository.java | 2 +- .../repository/SystemMessageRepository.java | 2 +- .../repository/TablePropertiesRepository.java | 2 +- .../repository/TagRelationRepository.java | 2 +- .../repository/TagRepository.java | 2 +- .../repository/TemplateRepository.java | 2 +- .../repository/TenantRepository.java | 2 +- .../repository/TopicItemRepository.java | 2 +- .../UKefuCallOutConfigRepository.java | 2 +- .../UKefuCallOutFilterRepository.java | 2 +- .../UKefuCallOutNamesRepository.java | 2 +- .../UKefuCallOutRoleRepository.java | 2 +- .../UKefuCallOutTaskRepository.java | 2 +- .../repository/UserEventRepository.java | 2 +- .../repository/UserRepository.java | 2 +- .../repository/UserRoleRepository.java | 2 +- .../repository/UserTraceRepository.java | 2 +- .../repository/WeiXinUserRepository.java | 2 +- .../repository/WorkMonitorRepository.java | 2 +- .../repository/WorkOrderTypeRepository.java | 2 +- .../repository/WorkSessionRepository.java | 2 +- .../repository/WorkTimeRepository.java | 2 +- .../repository/WxMpEventRepository.java | 2 +- .../repository/XiaoEUKResultMapper.java | 2 +- .../storage/MinioService.java | 2 +- .../task => schedule}/CallOutPlanTask.java | 8 +- .../task => schedule}/CallOutSheetTask.java | 10 +- .../task => schedule}/CallOutWireTask.java | 20 +- .../{service/task => schedule}/Fetcher.java | 14 +- .../{service/task => schedule}/LogTask.java | 6 +- .../{service/task => schedule}/NamesTask.java | 10 +- .../app/{service/task => schedule}/Task.java | 10 +- .../{service/task => schedule}/WebIMTask.java | 36 +- .../ChatbotDisruptorExceptionHandler.java | 2 +- .../chatbot/ChatbotEvent.java | 6 +- .../chatbot/ChatbotEventFactory.java | 4 +- .../chatbot/ChatbotEventHandler.java | 37 + .../chatbot/ChatbotEventProducer.java | 4 +- .../task => concurrent/dsdata}/DSData.java | 4 +- .../dsdata}/DSDataEvent.java | 2 +- .../dsdata}/DSDataEventFactory.java | 2 +- .../dsdata}/DSDataEventHandler.java | 4 +- .../dsdata}/DSDataEventProducer.java | 2 +- .../dsdata}/DSQueueProcessHandler.java | 2 +- .../dsdata}/DataProcess.java | 2 +- .../task => concurrent/dsdata}/ESData.java | 2 +- .../dsdata}/ExcelImportProecess.java | 12 +- .../dsdata}/ExcelImportUtils.java | 6 +- .../dsdata}/export/ExcelExporterProcess.java | 6 +- .../dsdata}/export/ExportData.java | 2 +- .../dsdata}/process/ContactsProcess.java | 4 +- .../dsdata}/process/EntCustomerProcess.java | 4 +- .../dsdata}/process/JPAProcess.java | 2 +- .../dsdata}/process/QuickReplyProcess.java | 4 +- .../dsdata}/process/TopicProcess.java | 8 +- .../multiupdate/MultiUpdateEvent.java | 6 +- .../multiupdate/MultiUpdateEventFactory.java | 4 +- .../multiupdate/MultiUpdateEventHandler.java | 8 +- .../multiupdate/MultiUpdateEventProducer.java | 4 +- .../user/UserDataEvent.java | 4 +- .../user/UserDataEventFactory.java | 2 +- .../user/UserDataEventProducer.java | 4 +- .../user/UserEventHandler.java | 14 +- .../chatbot/ChatbotEventHandler.java | 45 - .../CallCenterInterface.java | 2 +- .../{event => exchange}/CallOutWireEvent.java | 6 +- .../DataExchangeInterface.java | 2 +- .../cc/{event => exchange}/UserEvent.java | 2 +- .../chatopera/cc/util/CallCenterUtils.java | 32 +- .../com/chatopera/cc/util/CallOutUtils.java | 16 +- .../com/chatopera/cc/util/ChatbotUtils.java | 51 - .../java/com/chatopera/cc/util/Constants.java | 2 +- .../java/com/chatopera/cc/util/CronTools.java | 2 +- .../java/com/chatopera/cc/util/IPTools.java | 2 +- .../com/chatopera/cc/util/MessageUtils.java | 328 -- .../chatopera/cc/util/OnlineUserUtils.java | 22 +- .../com/chatopera/cc/util/bi/model/Level.java | 2 +- .../chatopera/cc/util/bi/model/ValueData.java | 2 +- .../chatopera/cc/{ => util}/es/ESTools.java | 4 +- .../cc/{ => util}/es/SearchTools.java | 6 +- .../cc/{ => util}/es/UKDataBean.java | 2 +- .../chatopera/cc/util/log/UKeFuAppender.java | 4 +- .../java/com/chatopera/cc/util/mail/Mail.java | 2 +- .../spi/impl/SqlStatisticsProvider.java | 2 +- .../net/coobird/thumbnailator/Thumbnails.java | 4 +- .../tasks/FileThumbnailTask.java | 4 +- .../tasks/StreamThumbnailTask.java | 4 +- .../thumbnailator/tasks/io/ImageSink.java | 2 +- .../static/im/js/kindeditor/kindeditor-all.js | 2713 +++++++++-------- .../im/js/kindeditor/plugins/code/prettify.js | 2 +- .../plugins/multiimage/multiimage.js | 20 +- .../main/resources/static/im/js/socket.io.js | 76 +- .../resources/static/js/CSKeFu_Callout.v1.js | 2 +- .../main/resources/static/js/UKeFu-InfoAcq.js | 2 +- .../src/main/resources/static/js/ace/ace.js | 2 +- .../static/js/ace/ext-language_tools.js | 2 +- .../resources/static/js/ace/ext-old_ie.js | 2 +- .../resources/static/js/ace/ext-searchbox.js | 2 +- .../resources/static/js/ace/ext-spellcheck.js | 2 +- .../resources/static/js/ace/ext-textarea.js | 2 +- .../main/resources/static/js/ace/mode-ada.js | 2 +- .../resources/static/js/ace/mode-csharp.js | 2 +- .../main/resources/static/js/ace/mode-lsl.js | 2 +- .../resources/static/js/ace/mode-matlab.js | 2 +- .../resources/static/js/ace/mode-mysql.js | 2 +- .../resources/static/js/ace/mode-pgsql.js | 2 +- .../resources/static/js/ace/mode-verilog.js | 2 +- .../static/js/ace/snippets/javascript.js | 2 +- .../resources/static/js/ace/snippets/ruby.js | 2 +- .../resources/static/js/ace/worker-html.js | 2 +- .../static/js/ace/worker-javascript.js | 2 +- .../static/js/jquery-ui-1.10.2.custom.min.js | 4 +- .../resources/static/js/jquery.darktooltip.js | 2 +- .../main/resources/static/js/jquery.form.js | 14 +- .../resources/static/js/jquery.orgchart.js | 10 +- .../static/js/kindeditor/kindeditor-all.js | 2713 +++++++++-------- .../js/kindeditor/plugins/code/prettify.js | 2 +- .../plugins/multiimage/multiimage.js | 20 +- .../static/js/select/js/select2.full.js | 52 +- .../resources/static/js/select/js/select2.js | 36 +- .../static/js/snaker/snaker.designer.js | 2 +- .../static/js/snaker/snaker.model.js | 2 +- .../resources/static/js/snaker/snaker.util.js | 2 +- .../static/js/timelineMe/jquery.timelineMe.js | 6 +- .../static/js/ukefu-report.design.js | 4 +- .../resources/static/lay/dest/layui.all.js | 2 +- .../resources/static/lay/modules/layedit.js | 2 +- .../static/layui/lay/modules/table.js | 2 +- .../main/resources/static/layui/layui.all.js | 2 +- .../apps/agent/mainagentuser_callout.html | 2 +- .../apps/business/contacts/detail.html | 2 +- .../apps/callout/dialplan/index.html | 8 +- 448 files changed, 4616 insertions(+), 4380 deletions(-) rename contact-center/app/src/main/java/com/chatopera/cc/{util => }/aggregation/CallOutHangupAggsResult.java (98%) rename contact-center/app/src/main/java/com/chatopera/cc/{util => }/aggregation/CallOutHangupAuditResult.java (99%) rename contact-center/app/src/main/java/com/chatopera/cc/{util => }/aggregation/MathHelper.java (98%) rename contact-center/app/src/main/java/com/chatopera/cc/{app/service/quene => aggregation/filter}/AgentCallOutFilter.java (88%) rename contact-center/app/src/main/java/com/chatopera/cc/{app/service/quene => aggregation/filter}/AgentStatusBusyOrgiFilter.java (90%) rename contact-center/app/src/main/java/com/chatopera/cc/{app/service/quene => aggregation/filter}/AgentStatusOrgiFilter.java (90%) rename contact-center/app/src/main/java/com/chatopera/cc/{app/service/quene => aggregation/filter}/AgentUserOrgiFilter.java (91%) rename contact-center/app/src/main/java/com/chatopera/cc/{app/service/quene => aggregation/filter}/AiCallOutFilter.java (88%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service/acd/ServiceQuene.java => algorithm/AutomaticServiceDist.java} (94%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{ => basic}/MainContext.java (94%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{ => basic}/MainUtils.java (95%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{ => basic}/Viewport.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{ => basic}/aop/SyncDatabaseExt.java (90%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => basic}/resource/ActivityResource.java (92%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => basic}/resource/BatchResource.java (86%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => basic}/resource/OutputTextFormat.java (91%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => basic}/resource/Resource.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => }/cache/CacheBean.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => }/cache/CacheHelper.java (92%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => }/cache/CacheInstance.java (92%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => }/cache/hazelcast/HazlcastCacheHelper.java (79%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => }/cache/hazelcast/impl/AgentStatusCache.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => }/cache/hazelcast/impl/AgentUserCache.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => }/cache/hazelcast/impl/ApiUserCache.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => }/cache/hazelcast/impl/CallCenterCache.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => }/cache/hazelcast/impl/JobCache.java (92%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => }/cache/hazelcast/impl/MultiCache.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => }/cache/hazelcast/impl/OnlineCache.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => }/cache/hazelcast/impl/SystemCache.java (93%) create mode 100644 contact-center/app/src/main/java/com/chatopera/cc/app/im/util/ChatbotUtils.java create mode 100644 contact-center/app/src/main/java/com/chatopera/cc/app/im/util/HumanUtils.java create mode 100644 contact-center/app/src/main/java/com/chatopera/cc/app/im/util/RichMediaUtils.java rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/es/ContactNotesRepository.java (95%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/es/ContactsEsCommonRepository.java (95%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/es/ContactsRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/es/ContactsRepositoryImpl.java (96%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/es/EntCustomerEsCommonRepository.java (95%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/es/EntCustomerRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/es/EntCustomerRepositoryImpl.java (95%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/es/KbsTopicCommentEsCommonRepository.java (94%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/es/KbsTopicCommentRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/es/KbsTopicCommentRepositoryImpl.java (97%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/es/KbsTopicEsCommonRepository.java (94%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/es/KbsTopicRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/es/KbsTopicRepositoryImpl.java (97%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/es/QuickReplyEsCommonRepository.java (94%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/es/QuickReplyRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/es/QuickReplyRepositoryImpl.java (96%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/es/TopicEsCommonRepository.java (94%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/es/TopicRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/es/TopicRepositoryImpl.java (96%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/es/UKAggResultExtractor.java (96%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/es/UKAggTopResultExtractor.java (95%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/es/UKResultMapper.java (96%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/hibernate/BaseService.java (94%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/impl/AgentUserService.java (89%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/impl/BatchDataProcess.java (87%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/impl/CallOutQuene.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/impl/ContactsDataExchangeImpl.java (86%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/impl/DataBatProcess.java (86%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/impl/ESDataExchangeImpl.java (95%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/impl/HazelcastService.java (92%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/impl/OrganDataExchangeImpl.java (86%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/impl/QuickTypeDataExchangeImpl.java (86%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/impl/ServiceDataExchangeImpl.java (86%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/impl/TopicDataExchangeImpl.java (86%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/impl/TopicMoreDataExchangeImpl.java (83%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/impl/TopicTypeDataExchangeImpl.java (86%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/impl/UserDataExchangeImpl.java (86%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/impl/UserService.java (91%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/AclRepository.java (92%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/AdTypeRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/AgentReportRepository.java (92%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/AgentServiceRepository.java (95%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/AgentServiceSatisRepository.java (92%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/AgentStatusRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/AgentUserContactsRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/AgentUserRepository.java (94%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/AgentUserTaskRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/AiConfigRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/AiSNSAccountRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/AreaTypeRepository.java (92%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/AttachmentRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/BaseRepository.java (91%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/BlackListRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/CallAgentRepository.java (94%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/CallCenterSkillRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/CallMonitorPerformanceRepository.java (92%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/CallMonitorRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/CallOutDialplanRepository.java (97%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/CallOutLogDialPlanRepository.java (95%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/CallOutTargetRepository.java (94%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/ChatMessageRepository.java (95%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/ChatbotRepository.java (94%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/ColumnPropertiesRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/ConsultInviteRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/CubeLevelRepository.java (92%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/CubeMeasureRepository.java (92%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/CubeMetadataRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/CubeRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/CubeService.java (96%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/CubeTypeRepository.java (92%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/DataDicRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/DataEventRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/DataSourceService.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/DbDataRepository.java (92%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/DimensionRepository.java (92%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/DrilldownRepository.java (91%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/ExtentionRepository.java (94%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/FormFilterItemRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/FormFilterRepository.java (94%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/GenerationRepository.java (92%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/IMGroupRepository.java (92%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/IMGroupUserRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/InstructionRepository.java (94%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/InviteRecordRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/IvrMenuRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/JobDetailRepository.java (95%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/KbsExpertRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/KbsTypeRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/KnowledgeTypeRepository.java (94%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/LeaveMsgRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/LogRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/MediaRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/MetadataRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/OnlineUserHisRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/OnlineUserRepository.java (97%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/OrganRepository.java (94%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/OrganRoleRepository.java (92%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/OrganizationRepository.java (92%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/OrgiSkillRelRepository.java (95%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/PbxHostRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/ProcessContentRepository.java (94%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/ProductRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/PropertiesEventRepository.java (92%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/PublishedCubeRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/PublishedReportRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/QualityRepository.java (92%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/QueSurveyAnswerRepository.java (94%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/QueSurveyProcessRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/QueSurveyQuestionRepository.java (94%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/QuickTypeRepository.java (94%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/RecentUserRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/ReportCubeService.java (97%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/ReportFilterRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/ReportModelRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/ReportRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/ReporterRepository.java (94%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/RequestLogRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/RoleAuthRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/RoleRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/RouterRulesRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/SNSAccountRepository.java (95%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/SaleStatusRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/SceneRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/SecretRepository.java (92%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/ServiceAiRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/ServiceSummaryRepository.java (94%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/SessionConfigRepository.java (92%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/SipTrunkRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/SkillExtentionRepository.java (92%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/SkillRepository.java (95%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/StatusEventRepository.java (96%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/StatusEventSatisfRepository.java (92%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/SysDicRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/SystemConfigRepository.java (92%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/SystemMessageRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/TablePropertiesRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/TagRelationRepository.java (92%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/TagRepository.java (94%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/TemplateRepository.java (92%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/TenantRepository.java (92%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/TopicItemRepository.java (92%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/UKefuCallOutConfigRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/UKefuCallOutFilterRepository.java (94%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/UKefuCallOutNamesRepository.java (95%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/UKefuCallOutRoleRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/UKefuCallOutTaskRepository.java (94%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/UserEventRepository.java (96%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/UserRepository.java (97%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/UserRoleRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/UserTraceRepository.java (94%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/WeiXinUserRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/WorkMonitorRepository.java (94%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/WorkOrderTypeRepository.java (92%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/WorkSessionRepository.java (94%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/WorkTimeRepository.java (92%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/WxMpEventRepository.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/repository/XiaoEUKResultMapper.java (96%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service => persistence}/storage/MinioService.java (96%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service/task => schedule}/CallOutPlanTask.java (96%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service/task => schedule}/CallOutSheetTask.java (97%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service/task => schedule}/CallOutWireTask.java (97%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service/task => schedule}/Fetcher.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service/task => schedule}/LogTask.java (86%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service/task => schedule}/NamesTask.java (88%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service/task => schedule}/Task.java (88%) rename contact-center/app/src/main/java/com/chatopera/cc/app/{service/task => schedule}/WebIMTask.java (91%) rename contact-center/app/src/main/java/com/chatopera/cc/{disruptor => concurrent}/chatbot/ChatbotDisruptorExceptionHandler.java (96%) rename contact-center/app/src/main/java/com/chatopera/cc/{disruptor => concurrent}/chatbot/ChatbotEvent.java (86%) rename contact-center/app/src/main/java/com/chatopera/cc/{disruptor => concurrent}/chatbot/ChatbotEventFactory.java (86%) create mode 100644 contact-center/app/src/main/java/com/chatopera/cc/concurrent/chatbot/ChatbotEventHandler.java rename contact-center/app/src/main/java/com/chatopera/cc/{disruptor => concurrent}/chatbot/ChatbotEventProducer.java (89%) rename contact-center/app/src/main/java/com/chatopera/cc/{util/task => concurrent/dsdata}/DSData.java (91%) rename contact-center/app/src/main/java/com/chatopera/cc/{util/task => concurrent/dsdata}/DSDataEvent.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/{util/task => concurrent/dsdata}/DSDataEventFactory.java (92%) rename contact-center/app/src/main/java/com/chatopera/cc/{util/task => concurrent/dsdata}/DSDataEventHandler.java (91%) rename contact-center/app/src/main/java/com/chatopera/cc/{util/task => concurrent/dsdata}/DSDataEventProducer.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/{util/task => concurrent/dsdata}/DSQueueProcessHandler.java (94%) rename contact-center/app/src/main/java/com/chatopera/cc/{util/task => concurrent/dsdata}/DataProcess.java (92%) rename contact-center/app/src/main/java/com/chatopera/cc/{util/task => concurrent/dsdata}/ESData.java (91%) rename contact-center/app/src/main/java/com/chatopera/cc/{util/task => concurrent/dsdata}/ExcelImportProecess.java (96%) rename contact-center/app/src/main/java/com/chatopera/cc/{util/task => concurrent/dsdata}/ExcelImportUtils.java (97%) rename contact-center/app/src/main/java/com/chatopera/cc/{util/task => concurrent/dsdata}/export/ExcelExporterProcess.java (95%) rename contact-center/app/src/main/java/com/chatopera/cc/{util/task => concurrent/dsdata}/export/ExportData.java (92%) rename contact-center/app/src/main/java/com/chatopera/cc/{util/task => concurrent/dsdata}/process/ContactsProcess.java (87%) rename contact-center/app/src/main/java/com/chatopera/cc/{util/task => concurrent/dsdata}/process/EntCustomerProcess.java (87%) rename contact-center/app/src/main/java/com/chatopera/cc/{util/task => concurrent/dsdata}/process/JPAProcess.java (91%) rename contact-center/app/src/main/java/com/chatopera/cc/{util/task => concurrent/dsdata}/process/QuickReplyProcess.java (87%) rename contact-center/app/src/main/java/com/chatopera/cc/{util/task => concurrent/dsdata}/process/TopicProcess.java (87%) rename contact-center/app/src/main/java/com/chatopera/cc/{disruptor => concurrent}/multiupdate/MultiUpdateEvent.java (87%) rename contact-center/app/src/main/java/com/chatopera/cc/{disruptor => concurrent}/multiupdate/MultiUpdateEventFactory.java (87%) rename contact-center/app/src/main/java/com/chatopera/cc/{disruptor => concurrent}/multiupdate/MultiUpdateEventHandler.java (86%) rename contact-center/app/src/main/java/com/chatopera/cc/{disruptor => concurrent}/multiupdate/MultiUpdateEventProducer.java (89%) rename contact-center/app/src/main/java/com/chatopera/cc/{disruptor => concurrent}/user/UserDataEvent.java (88%) rename contact-center/app/src/main/java/com/chatopera/cc/{disruptor => concurrent}/user/UserDataEventFactory.java (92%) rename contact-center/app/src/main/java/com/chatopera/cc/{disruptor => concurrent}/user/UserDataEventProducer.java (90%) rename contact-center/app/src/main/java/com/chatopera/cc/{disruptor => concurrent}/user/UserEventHandler.java (83%) delete mode 100644 contact-center/app/src/main/java/com/chatopera/cc/disruptor/chatbot/ChatbotEventHandler.java rename contact-center/app/src/main/java/com/chatopera/cc/{util/extra => exchange}/CallCenterInterface.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/{event => exchange}/CallOutWireEvent.java (98%) rename contact-center/app/src/main/java/com/chatopera/cc/{util/extra => exchange}/DataExchangeInterface.java (93%) rename contact-center/app/src/main/java/com/chatopera/cc/{event => exchange}/UserEvent.java (93%) delete mode 100644 contact-center/app/src/main/java/com/chatopera/cc/util/ChatbotUtils.java delete mode 100644 contact-center/app/src/main/java/com/chatopera/cc/util/MessageUtils.java rename contact-center/app/src/main/java/com/chatopera/cc/{ => util}/es/ESTools.java (95%) rename contact-center/app/src/main/java/com/chatopera/cc/{ => util}/es/SearchTools.java (96%) rename contact-center/app/src/main/java/com/chatopera/cc/{ => util}/es/UKDataBean.java (94%) diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/aggregation/CallOutHangupAggsResult.java b/contact-center/app/src/main/java/com/chatopera/cc/aggregation/CallOutHangupAggsResult.java similarity index 98% rename from contact-center/app/src/main/java/com/chatopera/cc/util/aggregation/CallOutHangupAggsResult.java rename to contact-center/app/src/main/java/com/chatopera/cc/aggregation/CallOutHangupAggsResult.java index 644db712..34f336f0 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/aggregation/CallOutHangupAggsResult.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/aggregation/CallOutHangupAggsResult.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.util.aggregation; +package com.chatopera.cc.aggregation; import com.chatopera.cc.exception.CallOutRecordException; import org.slf4j.Logger; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/aggregation/CallOutHangupAuditResult.java b/contact-center/app/src/main/java/com/chatopera/cc/aggregation/CallOutHangupAuditResult.java similarity index 99% rename from contact-center/app/src/main/java/com/chatopera/cc/util/aggregation/CallOutHangupAuditResult.java rename to contact-center/app/src/main/java/com/chatopera/cc/aggregation/CallOutHangupAuditResult.java index b26d2e5a..2be6c094 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/aggregation/CallOutHangupAuditResult.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/aggregation/CallOutHangupAuditResult.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.util.aggregation; +package com.chatopera.cc.aggregation; import com.chatopera.cc.exception.CallOutRecordException; import com.google.gson.JsonObject; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/aggregation/MathHelper.java b/contact-center/app/src/main/java/com/chatopera/cc/aggregation/MathHelper.java similarity index 98% rename from contact-center/app/src/main/java/com/chatopera/cc/util/aggregation/MathHelper.java rename to contact-center/app/src/main/java/com/chatopera/cc/aggregation/MathHelper.java index 060ea338..e43b23ba 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/aggregation/MathHelper.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/aggregation/MathHelper.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.util.aggregation; +package com.chatopera.cc.aggregation; import java.util.Date; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/quene/AgentCallOutFilter.java b/contact-center/app/src/main/java/com/chatopera/cc/aggregation/filter/AgentCallOutFilter.java similarity index 88% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/quene/AgentCallOutFilter.java rename to contact-center/app/src/main/java/com/chatopera/cc/aggregation/filter/AgentCallOutFilter.java index 7b8eba3e..1ca4dc45 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/quene/AgentCallOutFilter.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/aggregation/filter/AgentCallOutFilter.java @@ -14,13 +14,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.quene; +package com.chatopera.cc.aggregation.filter; -import com.chatopera.cc.app.service.cache.CacheHelper; +import com.chatopera.cc.app.cache.CacheHelper; import org.apache.commons.lang.StringUtils; import com.hazelcast.mapreduce.KeyPredicate; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.app.model.UKefuCallOutNames; @SuppressWarnings("deprecation") diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/quene/AgentStatusBusyOrgiFilter.java b/contact-center/app/src/main/java/com/chatopera/cc/aggregation/filter/AgentStatusBusyOrgiFilter.java similarity index 90% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/quene/AgentStatusBusyOrgiFilter.java rename to contact-center/app/src/main/java/com/chatopera/cc/aggregation/filter/AgentStatusBusyOrgiFilter.java index 6faa885e..367c28b3 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/quene/AgentStatusBusyOrgiFilter.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/aggregation/filter/AgentStatusBusyOrgiFilter.java @@ -14,9 +14,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.quene; +package com.chatopera.cc.aggregation.filter; -import com.chatopera.cc.app.service.cache.CacheHelper; +import com.chatopera.cc.app.cache.CacheHelper; import com.chatopera.cc.app.model.AgentStatus; import org.apache.commons.lang.StringUtils; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/quene/AgentStatusOrgiFilter.java b/contact-center/app/src/main/java/com/chatopera/cc/aggregation/filter/AgentStatusOrgiFilter.java similarity index 90% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/quene/AgentStatusOrgiFilter.java rename to contact-center/app/src/main/java/com/chatopera/cc/aggregation/filter/AgentStatusOrgiFilter.java index 21ee926e..8e638cf9 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/quene/AgentStatusOrgiFilter.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/aggregation/filter/AgentStatusOrgiFilter.java @@ -14,9 +14,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.quene; +package com.chatopera.cc.aggregation.filter; -import com.chatopera.cc.app.service.cache.CacheHelper; +import com.chatopera.cc.app.cache.CacheHelper; import com.chatopera.cc.app.model.AgentStatus; import org.apache.commons.lang.StringUtils; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/quene/AgentUserOrgiFilter.java b/contact-center/app/src/main/java/com/chatopera/cc/aggregation/filter/AgentUserOrgiFilter.java similarity index 91% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/quene/AgentUserOrgiFilter.java rename to contact-center/app/src/main/java/com/chatopera/cc/aggregation/filter/AgentUserOrgiFilter.java index 71960a84..e225acea 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/quene/AgentUserOrgiFilter.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/aggregation/filter/AgentUserOrgiFilter.java @@ -14,9 +14,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.quene; +package com.chatopera.cc.aggregation.filter; -import com.chatopera.cc.app.service.cache.CacheHelper; +import com.chatopera.cc.app.cache.CacheHelper; import com.chatopera.cc.app.model.AgentUser; import org.apache.commons.lang.StringUtils; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/quene/AiCallOutFilter.java b/contact-center/app/src/main/java/com/chatopera/cc/aggregation/filter/AiCallOutFilter.java similarity index 88% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/quene/AiCallOutFilter.java rename to contact-center/app/src/main/java/com/chatopera/cc/aggregation/filter/AiCallOutFilter.java index 7ddd6be0..f743d3c8 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/quene/AiCallOutFilter.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/aggregation/filter/AiCallOutFilter.java @@ -14,10 +14,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.quene; +package com.chatopera.cc.aggregation.filter; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.app.service.cache.CacheHelper; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.cache.CacheHelper; import com.chatopera.cc.app.model.UKefuCallOutNames; import org.apache.commons.lang.StringUtils; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/Application.java b/contact-center/app/src/main/java/com/chatopera/cc/app/Application.java index 02d4cf04..7e55984d 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/Application.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/Application.java @@ -16,6 +16,7 @@ */ package com.chatopera.cc.app; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.mobile.MobileNumberUtils; import com.chatopera.cc.app.config.StartedEventListener; import org.slf4j.Logger; @@ -37,8 +38,8 @@ import javax.servlet.MultipartConfigElement; import java.io.IOException; @SpringBootApplication -@EnableJpaRepositories("com.chatopera.cc.app.service.repository") -@EnableElasticsearchRepositories("com.chatopera.cc.app.service.es") +@EnableJpaRepositories("com.chatopera.cc.app.persistence.repository") +@EnableElasticsearchRepositories("com.chatopera.cc.app.persistence.es") @EnableAsync public class Application { private static final Logger logger = LoggerFactory.getLogger(Application.class); diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/acd/ServiceQuene.java b/contact-center/app/src/main/java/com/chatopera/cc/app/algorithm/AutomaticServiceDist.java similarity index 94% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/acd/ServiceQuene.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/algorithm/AutomaticServiceDist.java index b4e6c400..d2349223 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/acd/ServiceQuene.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/algorithm/AutomaticServiceDist.java @@ -14,18 +14,18 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.acd; +package com.chatopera.cc.app.algorithm; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.app.im.client.NettyClients; import com.chatopera.cc.app.im.router.OutMessageRouter; import com.chatopera.cc.app.model.*; -import com.chatopera.cc.app.service.cache.CacheHelper; -import com.chatopera.cc.app.service.quene.AgentStatusBusyOrgiFilter; -import com.chatopera.cc.app.service.quene.AgentStatusOrgiFilter; -import com.chatopera.cc.app.service.quene.AgentUserOrgiFilter; -import com.chatopera.cc.app.service.repository.*; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.aggregation.filter.AgentStatusBusyOrgiFilter; +import com.chatopera.cc.aggregation.filter.AgentStatusOrgiFilter; +import com.chatopera.cc.aggregation.filter.AgentUserOrgiFilter; +import com.chatopera.cc.app.persistence.repository.*; import com.chatopera.cc.util.WebIMReport; import com.corundumstudio.socketio.SocketIONamespace; import com.hazelcast.core.IMap; @@ -46,8 +46,8 @@ import java.util.concurrent.locks.Lock; * Automatic Call Distribution */ @SuppressWarnings("deprecation") -public class ServiceQuene { - private final static Logger logger = LoggerFactory.getLogger(ServiceQuene.class); +public class AutomaticServiceDist { + private final static Logger logger = LoggerFactory.getLogger(AutomaticServiceDist.class); /** * 载入坐席 ACD策略配置 @@ -193,7 +193,7 @@ public class ServiceQuene { } agentStatusList.addAll(((IMap) CacheHelper.getAgentUserCacheBean().getCache()).values(pagingPredicate)); for (AgentUser agentUser : agentStatusList) { - SessionConfig sessionConfig = ServiceQuene.initSessionConfig(orgi); + SessionConfig sessionConfig = AutomaticServiceDist.initSessionConfig(orgi); long maxusers = sessionConfig != null ? sessionConfig.getMaxuser() : MainContext.AGENT_STATUS_MAX_USER; if (agentStatus != null && agentStatus.getUsers() < maxusers) { //坐席未达到最大咨询访客数量 CacheHelper.getAgentUserCacheBean().delete(agentUser.getUserid(), orgi); //从队列移除,进入正在处理的队列, 避免使用 分布式锁 @@ -201,7 +201,7 @@ public class ServiceQuene { AgentService agentService = processAgentService(agentStatus, agentUser, orgi); MessageOutContent outMessage = new MessageOutContent(); - outMessage.setMessage(ServiceQuene.getSuccessMessage(agentService, agentUser.getChannel(), orgi)); + outMessage.setMessage(AutomaticServiceDist.getSuccessMessage(agentService, agentUser.getChannel(), orgi)); outMessage.setMessageType(MainContext.MediaTypeEnum.TEXT.toString()); outMessage.setCalltype(MainContext.CallTypeEnum.IN.toString()); outMessage.setNickName(agentStatus.getUsername()); @@ -243,7 +243,7 @@ public class ServiceQuene { AgentUserRepository agentUserRepository = MainContext.getContext().getBean(AgentUserRepository.class); AgentUser agentUseDataBean = agentUserRepository.findByIdAndOrgi(agentUser.getId(), agentUser.getOrgi()); - SessionConfig sessionConfig = ServiceQuene.initSessionConfig(orgi); + SessionConfig sessionConfig = AutomaticServiceDist.initSessionConfig(orgi); if (agentUseDataBean != null) { agentUseDataBean.setStatus(MainContext.AgentUserStatusEnum.END.toString()); if (agentUser.getServicetime() != null) { @@ -316,7 +316,7 @@ public class ServiceQuene { router = (OutMessageRouter) MainContext.getContext().getBean(agentUser.getChannel()); if (router != null) { MessageOutContent outMessage = new MessageOutContent(); - outMessage.setMessage(ServiceQuene.getServiceFinishMessage(agentUser.getChannel(), orgi)); + outMessage.setMessage(AutomaticServiceDist.getServiceFinishMessage(agentUser.getChannel(), orgi)); outMessage.setMessageType(MainContext.AgentUserStatusEnum.END.toString()); outMessage.setCalltype(MainContext.CallTypeEnum.IN.toString()); if (agentStatus != null) { @@ -367,7 +367,7 @@ public class ServiceQuene { /** * 坐席状态改变,通知监测服务 */ - AgentReport agentReport = ServiceQuene.getAgentReport(orgi); + AgentReport agentReport = AutomaticServiceDist.getAgentReport(orgi); AgentReportRepository agentReportRes = MainContext.getContext().getBean(AgentReportRepository.class); if (agentReportRes != null) { agentReport.setOrgi(orgi); @@ -825,10 +825,10 @@ public class ServiceQuene { AgentStatusRepository agentStatusRes = MainContext.getContext().getBean(AgentStatusRepository.class); List agentStatusList = agentStatusRes.findByAgentnoAndOrgi(userid, orgi); for (AgentStatus agentStatus : agentStatusList) { - ServiceQuene.recordAgentStatus(agentStatus.getAgentno(), agentStatus.getUsername(), agentStatus.getAgentno(), agentStatus.getSkill(), isAdmin, agentStatus.getAgentno(), agentStatus.isBusy() ? MainContext.AgentStatusEnum.BUSY.toString() : MainContext.AgentStatusEnum.NOTREADY.toString(), MainContext.AgentStatusEnum.NOTREADY.toString(), MainContext.AgentWorkType.MEIDIACHAT.toString(), agentStatus.getOrgi(), agentStatus.getUpdatetime()); + AutomaticServiceDist.recordAgentStatus(agentStatus.getAgentno(), agentStatus.getUsername(), agentStatus.getAgentno(), agentStatus.getSkill(), isAdmin, agentStatus.getAgentno(), agentStatus.isBusy() ? MainContext.AgentStatusEnum.BUSY.toString() : MainContext.AgentStatusEnum.NOTREADY.toString(), MainContext.AgentStatusEnum.NOTREADY.toString(), MainContext.AgentWorkType.MEIDIACHAT.toString(), agentStatus.getOrgi(), agentStatus.getUpdatetime()); agentStatusRes.delete(agentStatus); } CacheHelper.getAgentStatusCacheBean().delete(userid, orgi); - ServiceQuene.publishMessage(orgi, "agent", "leave", userid); + AutomaticServiceDist.publishMessage(orgi, "agent", "leave", userid); } } diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/MainContext.java b/contact-center/app/src/main/java/com/chatopera/cc/app/basic/MainContext.java similarity index 94% rename from contact-center/app/src/main/java/com/chatopera/cc/app/MainContext.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/basic/MainContext.java index 003144a2..d55b1023 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/MainContext.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/basic/MainContext.java @@ -15,11 +15,11 @@ * limitations under the License. */ -package com.chatopera.cc.app; +package com.chatopera.cc.app.basic; import com.chatopera.cc.util.DateConverter; -import com.chatopera.cc.app.service.resource.ActivityResource; -import com.chatopera.cc.app.service.resource.BatchResource; +import com.chatopera.cc.app.basic.resource.ActivityResource; +import com.chatopera.cc.app.basic.resource.BatchResource; import com.chatopera.cc.app.model.Log; import org.apache.commons.beanutils.ConvertUtils; import org.springframework.context.ApplicationContext; @@ -508,9 +508,9 @@ public class MainContext { } - public enum AiItemType { + public enum ChatbotItemType { USERINPUT, - AIREPLY; + BOTREPLY; public String toString() { return super.toString().toLowerCase(); @@ -728,8 +728,8 @@ public class MainContext { AGENT("/im/agent"), ENTIM("/im/ent"), CHATBOT("/im/chatbot"), - CALLCENTER("/callcenter/event"), - CALLOUT("/callout/event"); + CALLCENTER("/callcenter/exchange"), + CALLOUT("/callout/exchange"); private String namespace; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/MainUtils.java b/contact-center/app/src/main/java/com/chatopera/cc/app/basic/MainUtils.java similarity index 95% rename from contact-center/app/src/main/java/com/chatopera/cc/app/MainUtils.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/basic/MainUtils.java index fb567d99..decdc172 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/MainUtils.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/basic/MainUtils.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app; +package com.chatopera.cc.app.basic; import java.beans.BeanInfo; import java.beans.Introspector; @@ -51,12 +51,12 @@ import javax.servlet.http.HttpServletResponse; import com.chatopera.cc.util.*; import com.chatopera.cc.util.asr.AsrResult; -import com.chatopera.cc.disruptor.chatbot.ChatbotEvent; -import com.chatopera.cc.disruptor.multiupdate.MultiUpdateEvent; -import com.chatopera.cc.disruptor.user.UserDataEvent; -import com.chatopera.cc.event.UserEvent; +import com.chatopera.cc.concurrent.chatbot.ChatbotEvent; +import com.chatopera.cc.concurrent.multiupdate.MultiUpdateEvent; +import com.chatopera.cc.concurrent.user.UserDataEvent; +import com.chatopera.cc.exchange.UserEvent; import com.chatopera.cc.util.mail.MailSender; -import com.chatopera.cc.app.service.cache.CacheHelper; +import com.chatopera.cc.app.cache.CacheHelper; import org.apache.commons.beanutils.BeanUtilsBean; import org.apache.commons.beanutils.ConversionException; import org.apache.commons.beanutils.ConvertUtils; @@ -89,14 +89,14 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; import com.googlecode.aviator.AviatorEvaluator; import com.lmax.disruptor.dsl.Disruptor; -import com.chatopera.cc.app.service.repository.AdTypeRepository; -import com.chatopera.cc.app.service.repository.AreaTypeRepository; -import com.chatopera.cc.app.service.repository.AttachmentRepository; -import com.chatopera.cc.app.service.repository.SecretRepository; -import com.chatopera.cc.app.service.repository.SystemConfigRepository; -import com.chatopera.cc.app.service.repository.SystemMessageRepository; -import com.chatopera.cc.app.service.repository.TablePropertiesRepository; -import com.chatopera.cc.app.service.repository.TemplateRepository; +import com.chatopera.cc.app.persistence.repository.AdTypeRepository; +import com.chatopera.cc.app.persistence.repository.AreaTypeRepository; +import com.chatopera.cc.app.persistence.repository.AttachmentRepository; +import com.chatopera.cc.app.persistence.repository.SecretRepository; +import com.chatopera.cc.app.persistence.repository.SystemConfigRepository; +import com.chatopera.cc.app.persistence.repository.SystemMessageRepository; +import com.chatopera.cc.app.persistence.repository.TablePropertiesRepository; +import com.chatopera.cc.app.persistence.repository.TemplateRepository; import com.chatopera.cc.app.model.AdType; import com.chatopera.cc.app.model.AttachmentFile; import com.chatopera.cc.app.model.JobDetail; @@ -741,7 +741,7 @@ public class MainUtils { strb.append(".").append(msgtype) ; if(msgtype.equals("text")){ strb.append(".").append(msg) ; - }else if(msgtype.equals("event")){ + }else if(msgtype.equals("exchange")){ strb.append(".").append(eventype.toLowerCase()) ; if(!StringUtils.isBlank(eventkey)){ strb.append(".").append(eventkey) ; @@ -758,7 +758,7 @@ public class MainUtils { strb.append(".").append(msgtype) ; if(msgtype.equals("text")){ strb.append(".").append(msgtype) ; - }else if(msgtype.equals("event")){ + }else if(msgtype.equals("exchange")){ strb.append(".").append(eventype.toLowerCase()) ; }else{ strb.append(".").append(msgtype) ; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/Viewport.java b/contact-center/app/src/main/java/com/chatopera/cc/app/basic/Viewport.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/Viewport.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/basic/Viewport.java index a48cb9a4..b2ecdae3 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/Viewport.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/basic/Viewport.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app; +package com.chatopera.cc.app.basic; public class Viewport { private String page ; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/aop/SyncDatabaseExt.java b/contact-center/app/src/main/java/com/chatopera/cc/app/basic/aop/SyncDatabaseExt.java similarity index 90% rename from contact-center/app/src/main/java/com/chatopera/cc/app/aop/SyncDatabaseExt.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/basic/aop/SyncDatabaseExt.java index b3162b14..ac4152f8 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/aop/SyncDatabaseExt.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/basic/aop/SyncDatabaseExt.java @@ -14,15 +14,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.aop; +package com.chatopera.cc.app.basic.aop; import java.util.List; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.util.UKeFuList; -import com.chatopera.cc.disruptor.multiupdate.MultiUpdateEvent; -import com.chatopera.cc.app.service.hibernate.BaseService; +import com.chatopera.cc.concurrent.multiupdate.MultiUpdateEvent; +import com.chatopera.cc.app.persistence.hibernate.BaseService; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/resource/ActivityResource.java b/contact-center/app/src/main/java/com/chatopera/cc/app/basic/resource/ActivityResource.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/resource/ActivityResource.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/basic/resource/ActivityResource.java index de51b026..780ba6ee 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/resource/ActivityResource.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/basic/resource/ActivityResource.java @@ -14,29 +14,29 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.resource; +package com.chatopera.cc.app.basic.resource; import java.util.Date; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.app.model.JobDetail; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.data.domain.PageImpl; -import com.chatopera.cc.es.SearchTools; -import com.chatopera.cc.es.UKDataBean; -import com.chatopera.cc.app.service.impl.BatchDataProcess; -import com.chatopera.cc.app.service.impl.ESDataExchangeImpl; -import com.chatopera.cc.app.service.repository.CallAgentRepository; -import com.chatopera.cc.app.service.repository.UKefuCallOutFilterRepository; -import com.chatopera.cc.app.service.repository.UKefuCallOutTaskRepository; -import com.chatopera.cc.app.service.repository.FormFilterItemRepository; -import com.chatopera.cc.app.service.repository.FormFilterRepository; -import com.chatopera.cc.app.service.repository.JobDetailRepository; -import com.chatopera.cc.app.service.repository.MetadataRepository; +import com.chatopera.cc.util.es.SearchTools; +import com.chatopera.cc.util.es.UKDataBean; +import com.chatopera.cc.app.persistence.impl.BatchDataProcess; +import com.chatopera.cc.app.persistence.impl.ESDataExchangeImpl; +import com.chatopera.cc.app.persistence.repository.CallAgentRepository; +import com.chatopera.cc.app.persistence.repository.UKefuCallOutFilterRepository; +import com.chatopera.cc.app.persistence.repository.UKefuCallOutTaskRepository; +import com.chatopera.cc.app.persistence.repository.FormFilterItemRepository; +import com.chatopera.cc.app.persistence.repository.FormFilterRepository; +import com.chatopera.cc.app.persistence.repository.JobDetailRepository; +import com.chatopera.cc.app.persistence.repository.MetadataRepository; import com.chatopera.cc.app.model.CallAgent; import com.chatopera.cc.app.model.UKefuCallOutFilter; import com.chatopera.cc.app.model.UKefuCallOutTask; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/resource/BatchResource.java b/contact-center/app/src/main/java/com/chatopera/cc/app/basic/resource/BatchResource.java similarity index 86% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/resource/BatchResource.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/basic/resource/BatchResource.java index aab160f7..5106f4ed 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/resource/BatchResource.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/basic/resource/BatchResource.java @@ -14,26 +14,26 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.resource; +package com.chatopera.cc.app.basic.resource; import java.io.File; import java.net.URL; import java.util.Date; import java.util.HashMap; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.app.service.impl.BatchDataProcess; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.persistence.impl.BatchDataProcess; import com.chatopera.cc.app.model.JobDetail; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; -import com.chatopera.cc.util.task.DSData; -import com.chatopera.cc.util.task.DSDataEvent; -import com.chatopera.cc.util.task.ExcelImportProecess; -import com.chatopera.cc.app.service.impl.ESDataExchangeImpl; -import com.chatopera.cc.app.service.repository.MetadataRepository; -import com.chatopera.cc.app.service.repository.ReporterRepository; +import com.chatopera.cc.concurrent.dsdata.DSData; +import com.chatopera.cc.concurrent.dsdata.DSDataEvent; +import com.chatopera.cc.concurrent.dsdata.ExcelImportProecess; +import com.chatopera.cc.app.persistence.impl.ESDataExchangeImpl; +import com.chatopera.cc.app.persistence.repository.MetadataRepository; +import com.chatopera.cc.app.persistence.repository.ReporterRepository; import com.chatopera.cc.app.model.MetadataTable; public class BatchResource extends Resource{ diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/resource/OutputTextFormat.java b/contact-center/app/src/main/java/com/chatopera/cc/app/basic/resource/OutputTextFormat.java similarity index 91% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/resource/OutputTextFormat.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/basic/resource/OutputTextFormat.java index 71f57f92..dbe62de5 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/resource/OutputTextFormat.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/basic/resource/OutputTextFormat.java @@ -14,12 +14,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.resource; +package com.chatopera.cc.app.basic.resource; import java.util.HashMap; import java.util.Map; -import com.chatopera.cc.es.UKDataBean; +import com.chatopera.cc.util.es.UKDataBean; import com.chatopera.cc.app.model.JobDetail; public class OutputTextFormat { diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/resource/Resource.java b/contact-center/app/src/main/java/com/chatopera/cc/app/basic/resource/Resource.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/resource/Resource.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/basic/resource/Resource.java index 7c181fac..6ad549a7 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/resource/Resource.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/basic/resource/Resource.java @@ -14,12 +14,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.resource; +package com.chatopera.cc.app.basic.resource; import java.lang.reflect.InvocationTargetException; import java.util.logging.Logger; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.app.model.JobDetail; /** diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/cache/CacheBean.java b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/CacheBean.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/cache/CacheBean.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/cache/CacheBean.java index 7f16ad83..ba998af9 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/cache/CacheBean.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/CacheBean.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.cache; +package com.chatopera.cc.app.cache; import java.util.Collection; import java.util.concurrent.locks.Lock; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/cache/CacheHelper.java b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/CacheHelper.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/cache/CacheHelper.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/cache/CacheHelper.java index cd931256..b3337091 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/cache/CacheHelper.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/CacheHelper.java @@ -14,9 +14,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.cache; +package com.chatopera.cc.app.cache; -import com.chatopera.cc.app.service.cache.hazelcast.HazlcastCacheHelper; +import com.chatopera.cc.app.cache.hazelcast.HazlcastCacheHelper; public class CacheHelper { private static CacheHelper instance = new CacheHelper(); diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/cache/CacheInstance.java b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/CacheInstance.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/cache/CacheInstance.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/cache/CacheInstance.java index 62b8862d..161295ee 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/cache/CacheInstance.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/CacheInstance.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.cache; +package com.chatopera.cc.app.cache; public interface CacheInstance { diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/cache/hazelcast/HazlcastCacheHelper.java b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/HazlcastCacheHelper.java similarity index 79% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/cache/hazelcast/HazlcastCacheHelper.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/HazlcastCacheHelper.java index 73387d20..691660e4 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/cache/hazelcast/HazlcastCacheHelper.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/HazlcastCacheHelper.java @@ -14,19 +14,19 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.cache.hazelcast; +package com.chatopera.cc.app.cache.hazelcast; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.app.service.cache.CacheBean; -import com.chatopera.cc.app.service.cache.CacheInstance; -import com.chatopera.cc.app.service.cache.hazelcast.impl.AgentStatusCache; -import com.chatopera.cc.app.service.cache.hazelcast.impl.AgentUserCache; -import com.chatopera.cc.app.service.cache.hazelcast.impl.ApiUserCache; -import com.chatopera.cc.app.service.cache.hazelcast.impl.CallCenterCache; -import com.chatopera.cc.app.service.cache.hazelcast.impl.JobCache; -import com.chatopera.cc.app.service.cache.hazelcast.impl.MultiCache; -import com.chatopera.cc.app.service.cache.hazelcast.impl.OnlineCache; -import com.chatopera.cc.app.service.cache.hazelcast.impl.SystemCache; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.cache.CacheBean; +import com.chatopera.cc.app.cache.CacheInstance; +import com.chatopera.cc.app.cache.hazelcast.impl.AgentStatusCache; +import com.chatopera.cc.app.cache.hazelcast.impl.AgentUserCache; +import com.chatopera.cc.app.cache.hazelcast.impl.ApiUserCache; +import com.chatopera.cc.app.cache.hazelcast.impl.CallCenterCache; +import com.chatopera.cc.app.cache.hazelcast.impl.JobCache; +import com.chatopera.cc.app.cache.hazelcast.impl.MultiCache; +import com.chatopera.cc.app.cache.hazelcast.impl.OnlineCache; +import com.chatopera.cc.app.cache.hazelcast.impl.SystemCache; /** * Hazlcast缓存处理实例类 * @author admin diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/cache/hazelcast/impl/AgentStatusCache.java b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/AgentStatusCache.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/cache/hazelcast/impl/AgentStatusCache.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/AgentStatusCache.java index 8e93b012..afc643ea 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/cache/hazelcast/impl/AgentStatusCache.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/AgentStatusCache.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.cache.hazelcast.impl; +package com.chatopera.cc.app.cache.hazelcast.impl; import java.util.Collection; import java.util.concurrent.locks.Lock; @@ -24,7 +24,7 @@ import org.springframework.stereotype.Service; import com.hazelcast.com.eclipsesource.json.JsonObject; import com.hazelcast.core.HazelcastInstance; -import com.chatopera.cc.app.service.cache.CacheBean; +import com.chatopera.cc.app.cache.CacheBean; @Service("agentstatus_cache") public class AgentStatusCache implements CacheBean{ diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/cache/hazelcast/impl/AgentUserCache.java b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/AgentUserCache.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/cache/hazelcast/impl/AgentUserCache.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/AgentUserCache.java index 0d8b083f..f03c5989 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/cache/hazelcast/impl/AgentUserCache.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/AgentUserCache.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.cache.hazelcast.impl; +package com.chatopera.cc.app.cache.hazelcast.impl; import java.util.Collection; import java.util.concurrent.locks.Lock; @@ -24,7 +24,7 @@ import org.springframework.stereotype.Service; import com.hazelcast.com.eclipsesource.json.JsonObject; import com.hazelcast.core.HazelcastInstance; -import com.chatopera.cc.app.service.cache.CacheBean; +import com.chatopera.cc.app.cache.CacheBean; @Service("agentuser_cache") public class AgentUserCache implements CacheBean{ diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/cache/hazelcast/impl/ApiUserCache.java b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/ApiUserCache.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/cache/hazelcast/impl/ApiUserCache.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/ApiUserCache.java index 184a077a..8d9f74fb 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/cache/hazelcast/impl/ApiUserCache.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/ApiUserCache.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.cache.hazelcast.impl; +package com.chatopera.cc.app.cache.hazelcast.impl; import java.util.Collection; import java.util.concurrent.locks.Lock; @@ -24,7 +24,7 @@ import org.springframework.stereotype.Service; import com.hazelcast.com.eclipsesource.json.JsonObject; import com.hazelcast.core.HazelcastInstance; -import com.chatopera.cc.app.service.cache.CacheBean; +import com.chatopera.cc.app.cache.CacheBean; @Service("api_user_cache") public class ApiUserCache implements CacheBean{ diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/cache/hazelcast/impl/CallCenterCache.java b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/CallCenterCache.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/cache/hazelcast/impl/CallCenterCache.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/CallCenterCache.java index c490ca74..e01a1ea6 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/cache/hazelcast/impl/CallCenterCache.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/CallCenterCache.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.cache.hazelcast.impl; +package com.chatopera.cc.app.cache.hazelcast.impl; import java.util.Collection; import java.util.concurrent.locks.Lock; @@ -24,7 +24,7 @@ import org.springframework.stereotype.Service; import com.hazelcast.com.eclipsesource.json.JsonObject; import com.hazelcast.core.HazelcastInstance; -import com.chatopera.cc.app.service.cache.CacheBean; +import com.chatopera.cc.app.cache.CacheBean; @Service("callcenter_current_call") public class CallCenterCache implements CacheBean{ diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/cache/hazelcast/impl/JobCache.java b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/JobCache.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/cache/hazelcast/impl/JobCache.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/JobCache.java index 04d4a16f..bb39934c 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/cache/hazelcast/impl/JobCache.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/JobCache.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.cache.hazelcast.impl; +package com.chatopera.cc.app.cache.hazelcast.impl; import java.util.Collection; import java.util.concurrent.locks.Lock; @@ -24,7 +24,7 @@ import org.springframework.stereotype.Service; import com.hazelcast.com.eclipsesource.json.JsonObject; import com.hazelcast.core.HazelcastInstance; -import com.chatopera.cc.app.service.cache.CacheBean; +import com.chatopera.cc.app.cache.CacheBean; @Service("job_cache") public class JobCache implements CacheBean{ diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/cache/hazelcast/impl/MultiCache.java b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/MultiCache.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/cache/hazelcast/impl/MultiCache.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/MultiCache.java index a7ad0b49..00cca20f 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/cache/hazelcast/impl/MultiCache.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/MultiCache.java @@ -14,12 +14,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.cache.hazelcast.impl; +package com.chatopera.cc.app.cache.hazelcast.impl; import java.util.Collection; import java.util.concurrent.locks.Lock; -import com.chatopera.cc.app.service.cache.CacheBean; +import com.chatopera.cc.app.cache.CacheBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/cache/hazelcast/impl/OnlineCache.java b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/OnlineCache.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/cache/hazelcast/impl/OnlineCache.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/OnlineCache.java index 259da2d0..157b9d83 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/cache/hazelcast/impl/OnlineCache.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/OnlineCache.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.cache.hazelcast.impl; +package com.chatopera.cc.app.cache.hazelcast.impl; import java.util.Collection; import java.util.concurrent.locks.Lock; @@ -24,7 +24,7 @@ import org.springframework.stereotype.Service; import com.hazelcast.com.eclipsesource.json.JsonObject; import com.hazelcast.core.HazelcastInstance; -import com.chatopera.cc.app.service.cache.CacheBean; +import com.chatopera.cc.app.cache.CacheBean; @Service("online_cache") public class OnlineCache implements CacheBean{ diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/cache/hazelcast/impl/SystemCache.java b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/SystemCache.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/cache/hazelcast/impl/SystemCache.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/SystemCache.java index 4d04a202..80492759 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/cache/hazelcast/impl/SystemCache.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/SystemCache.java @@ -14,12 +14,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.cache.hazelcast.impl; +package com.chatopera.cc.app.cache.hazelcast.impl; import java.util.Collection; import java.util.concurrent.locks.Lock; -import com.chatopera.cc.app.service.cache.CacheBean; +import com.chatopera.cc.app.cache.CacheBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/config/ApiRequestMatchingFilter.java b/contact-center/app/src/main/java/com/chatopera/cc/app/config/ApiRequestMatchingFilter.java index 755804ce..dee5f14d 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/config/ApiRequestMatchingFilter.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/config/ApiRequestMatchingFilter.java @@ -27,12 +27,12 @@ import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import com.chatopera.cc.app.service.cache.CacheHelper; +import com.chatopera.cc.app.cache.CacheHelper; import org.apache.commons.lang.StringUtils; import org.springframework.http.HttpStatus; import org.springframework.security.web.util.matcher.RequestMatcher; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; public class ApiRequestMatchingFilter implements Filter { private RequestMatcher[] ignoredRequests; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/config/ApplicationStartupListener.java b/contact-center/app/src/main/java/com/chatopera/cc/app/config/ApplicationStartupListener.java index f91d8626..c8ae6a3b 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/config/ApplicationStartupListener.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/config/ApplicationStartupListener.java @@ -16,7 +16,7 @@ */ package com.chatopera.cc.app.config; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.app.model.Favorites; import com.chatopera.cc.app.model.WorkOrders; import org.springframework.beans.factory.annotation.Autowired; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/config/DelegateRequestMatchingFilter.java b/contact-center/app/src/main/java/com/chatopera/cc/app/config/DelegateRequestMatchingFilter.java index a63b471d..41eb2492 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/config/DelegateRequestMatchingFilter.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/config/DelegateRequestMatchingFilter.java @@ -27,7 +27,7 @@ import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.app.model.User; import org.apache.catalina.connector.ClientAbortException; import org.springframework.security.web.util.matcher.RequestMatcher; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/config/DisruptorConfigure.java b/contact-center/app/src/main/java/com/chatopera/cc/app/config/DisruptorConfigure.java index 7aa79916..91b65a10 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/config/DisruptorConfigure.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/config/DisruptorConfigure.java @@ -19,19 +19,19 @@ package com.chatopera.cc.app.config; import java.util.concurrent.Executor; import java.util.concurrent.Executors; -import com.chatopera.cc.disruptor.chatbot.ChatbotDisruptorExceptionHandler; -import com.chatopera.cc.disruptor.chatbot.ChatbotEventFactory; -import com.chatopera.cc.disruptor.multiupdate.MultiUpdateEventFactory; -import com.chatopera.cc.disruptor.multiupdate.MultiUpdateEventHandler; +import com.chatopera.cc.concurrent.chatbot.ChatbotDisruptorExceptionHandler; +import com.chatopera.cc.concurrent.chatbot.ChatbotEventFactory; +import com.chatopera.cc.concurrent.multiupdate.MultiUpdateEventFactory; +import com.chatopera.cc.concurrent.multiupdate.MultiUpdateEventHandler; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; import com.lmax.disruptor.SleepingWaitStrategy; import com.lmax.disruptor.dsl.Disruptor; import com.lmax.disruptor.dsl.ProducerType; -import com.chatopera.cc.disruptor.user.UserDataEvent; -import com.chatopera.cc.disruptor.user.UserDataEventFactory; -import com.chatopera.cc.disruptor.user.UserEventHandler; +import com.chatopera.cc.concurrent.user.UserDataEvent; +import com.chatopera.cc.concurrent.user.UserDataEventFactory; +import com.chatopera.cc.concurrent.user.UserEventHandler; @Component public class DisruptorConfigure { diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/config/IMServerConfiguration.java b/contact-center/app/src/main/java/com/chatopera/cc/app/config/IMServerConfiguration.java index 9d5829cf..9f0ea440 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/config/IMServerConfiguration.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/config/IMServerConfiguration.java @@ -25,7 +25,7 @@ import java.util.Properties; import javax.annotation.PreDestroy; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; @@ -35,7 +35,7 @@ import com.corundumstudio.socketio.Configuration; import com.corundumstudio.socketio.HandshakeData; import com.corundumstudio.socketio.SocketIOServer; import com.corundumstudio.socketio.annotation.SpringAnnotationScanner; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.exception.UCKeFuExceptionListener; @org.springframework.context.annotation.Configuration diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/config/RedisConfigure.java b/contact-center/app/src/main/java/com/chatopera/cc/app/config/RedisConfigure.java index 301c3c36..4539c90c 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/config/RedisConfigure.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/config/RedisConfigure.java @@ -16,7 +16,7 @@ package com.chatopera.cc.app.config; import com.chatopera.cc.util.Constants; -import com.chatopera.cc.app.service.task.CallOutWireTask; +import com.chatopera.cc.app.schedule.CallOutWireTask; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/config/StartedEventListener.java b/contact-center/app/src/main/java/com/chatopera/cc/app/config/StartedEventListener.java index 93a666c4..9521c88d 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/config/StartedEventListener.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/config/StartedEventListener.java @@ -20,22 +20,22 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.app.service.cache.CacheHelper; -import com.chatopera.cc.app.service.repository.GenerationRepository; -import com.chatopera.cc.app.service.repository.SysDicRepository; -import com.chatopera.cc.app.service.repository.SystemConfigRepository; -import com.chatopera.cc.app.service.repository.TablePropertiesRepository; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.persistence.repository.GenerationRepository; +import com.chatopera.cc.app.persistence.repository.SysDicRepository; +import com.chatopera.cc.app.persistence.repository.SystemConfigRepository; +import com.chatopera.cc.app.persistence.repository.TablePropertiesRepository; import com.chatopera.cc.app.model.Generation; import com.chatopera.cc.app.model.SysDic; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.stereotype.Component; -import com.chatopera.cc.app.service.repository.BlackListRepository; +import com.chatopera.cc.app.persistence.repository.BlackListRepository; import com.chatopera.cc.app.model.BlackEntity; import com.chatopera.cc.app.model.SystemConfig; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/config/WebServerConfiguration.java b/contact-center/app/src/main/java/com/chatopera/cc/app/config/WebServerConfiguration.java index 24f0feab..a204ffa3 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/config/WebServerConfiguration.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/config/WebServerConfiguration.java @@ -22,7 +22,7 @@ import java.io.IOException; import java.security.NoSuchAlgorithmException; import java.util.Properties; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; import org.apache.catalina.connector.Connector; import org.apache.commons.lang3.StringUtils; import org.apache.coyote.http11.Http11NioProtocol; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/ApplicationController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/ApplicationController.java index 8507942f..81f3d52c 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/ApplicationController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/ApplicationController.java @@ -18,16 +18,15 @@ package com.chatopera.cc.app.handler; import javax.servlet.http.HttpServletRequest; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.app.service.cache.CacheHelper; +import com.chatopera.cc.app.algorithm.AutomaticServiceDist; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.cache.CacheHelper; import com.chatopera.cc.app.model.User; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.app.service.acd.ServiceQuene; - @Controller public class ApplicationController extends Handler{ @@ -35,7 +34,7 @@ public class ApplicationController extends Handler{ public ModelAndView admin(HttpServletRequest request) { ModelAndView view = request(super.createRequestPageTempletResponse("/apps/index")); User user = super.getUser(request) ; - view.addObject("agentStatusReport",ServiceQuene.getAgentReport(user.getOrgi())) ; + view.addObject("agentStatusReport", AutomaticServiceDist.getAgentReport(user.getOrgi())) ; view.addObject("tenant",super.getTenant(request)); view.addObject("istenantshare",super.isEnabletneant()); if(super.isEnabletneant()) { diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/Handler.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/Handler.java index 44f73db9..71f70097 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/Handler.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/Handler.java @@ -24,12 +24,12 @@ import java.text.ParseException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.app.MainUtils; -import com.chatopera.cc.app.Viewport; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.basic.MainUtils; +import com.chatopera.cc.app.basic.Viewport; import com.chatopera.cc.exception.CSKefuException; -import com.chatopera.cc.app.service.cache.CacheHelper; -import com.chatopera.cc.app.service.repository.TenantRepository; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.persistence.repository.TenantRepository; import com.chatopera.cc.app.handler.api.rest.QueryParams; import com.chatopera.cc.app.model.Tenant; import com.chatopera.cc.app.model.User; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/LoginController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/LoginController.java index 7d038e98..e4d249cc 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/LoginController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/LoginController.java @@ -16,15 +16,15 @@ */ package com.chatopera.cc.app.handler; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.util.Menu; import com.chatopera.cc.app.model.*; -import com.chatopera.cc.app.service.cache.CacheHelper; -import com.chatopera.cc.app.service.repository.OrganRepository; -import com.chatopera.cc.app.service.repository.RoleAuthRepository; -import com.chatopera.cc.app.service.repository.UserRepository; -import com.chatopera.cc.app.service.repository.UserRoleRepository; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.persistence.repository.OrganRepository; +import com.chatopera.cc.app.persistence.repository.RoleAuthRepository; +import com.chatopera.cc.app.persistence.repository.UserRepository; +import com.chatopera.cc.app.persistence.repository.UserRoleRepository; import com.chatopera.cc.util.OnlineUserUtils; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/AdminController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/AdminController.java index a034e8d6..68368319 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/AdminController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/AdminController.java @@ -23,14 +23,15 @@ import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.algorithm.AutomaticServiceDist; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.util.Menu; import com.chatopera.cc.app.im.client.NettyClients; -import com.chatopera.cc.app.service.cache.CacheHelper; -import com.chatopera.cc.app.service.repository.OnlineUserRepository; -import com.chatopera.cc.app.service.repository.SysDicRepository; -import com.chatopera.cc.app.service.repository.UserEventRepository; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.persistence.repository.OnlineUserRepository; +import com.chatopera.cc.app.persistence.repository.SysDicRepository; +import com.chatopera.cc.app.persistence.repository.UserEventRepository; import com.chatopera.cc.util.OnlineUserUtils; import com.chatopera.cc.app.model.SysDic; import com.chatopera.cc.app.model.User; @@ -41,8 +42,7 @@ import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.app.service.acd.ServiceQuene; -import com.chatopera.cc.app.service.repository.UserRepository; +import com.chatopera.cc.app.persistence.repository.UserRepository; import com.chatopera.cc.app.handler.Handler; @Controller @@ -64,7 +64,7 @@ public class AdminController extends Handler{ public ModelAndView index(ModelMap map ,HttpServletRequest request) { ModelAndView view = request(super.createRequestPageTempletResponse("redirect:/")); User user = super.getUser(request) ; - view.addObject("agentStatusReport",ServiceQuene.getAgentReport(user.getOrgi())) ; + view.addObject("agentStatusReport", AutomaticServiceDist.getAgentReport(user.getOrgi())) ; view.addObject("agentStatus", CacheHelper.getAgentStatusCacheBean().getCacheObject(user.getId(), user.getOrgi())) ; return view; @@ -77,7 +77,7 @@ public class AdminController extends Handler{ map.put("chatClients", NettyClients.getInstance().size()) ; map.put("systemCaches", CacheHelper.getSystemCacheBean().getSize()) ; - map.put("agentReport", ServiceQuene.getAgentReport(super.getOrgi(request))) ; + map.put("agentReport", AutomaticServiceDist.getAgentReport(super.getOrgi(request))) ; map.put("webIMReport", MainUtils.getWebIMReport(userEventRes.findByOrgiAndCreatetimeRange(super.getOrgi(request), MainUtils.getStartTime() , MainUtils.getEndTime()))) ; map.put("agents",getAgent(request).size()) ; @@ -144,7 +144,7 @@ public class AdminController extends Handler{ if(!StringUtils.isBlank(iconstr) && !StringUtils.isBlank(icontext)){ map.addAttribute("iconstr", iconstr.replaceAll(icontext, "&#x"+ MainUtils.string2HexString(icontext)+";")) ; } - return request(super.createRequestPageTempletResponse("/admin/system/auth/event")); + return request(super.createRequestPageTempletResponse("/admin/system/auth/exchange")); } @RequestMapping("/admin/auth/save") diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/area/AreaController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/area/AreaController.java index f639c0ed..4df06d74 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/area/AreaController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/area/AreaController.java @@ -23,17 +23,17 @@ import java.util.Date; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.repository.AreaTypeRepository; -import com.chatopera.cc.app.service.repository.SysDicRepository; +import com.chatopera.cc.app.persistence.repository.AreaTypeRepository; +import com.chatopera.cc.app.persistence.repository.SysDicRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.AreaType; import com.chatopera.cc.app.model.SysDic; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterAclController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterAclController.java index a61e2fb6..b85fda6a 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterAclController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterAclController.java @@ -20,7 +20,7 @@ import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.repository.PbxHostRepository; +import com.chatopera.cc.app.persistence.repository.PbxHostRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.Acl; import org.apache.commons.lang.StringUtils; @@ -30,7 +30,7 @@ import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.app.service.repository.AclRepository; +import com.chatopera.cc.app.persistence.repository.AclRepository; @Controller @RequestMapping("/admin/callcenter") diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterBlackController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterBlackController.java index 62916cda..b2a831e0 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterBlackController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterBlackController.java @@ -19,7 +19,7 @@ package com.chatopera.cc.app.handler.admin.callcenter; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -28,7 +28,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.repository.BlackListRepository; +import com.chatopera.cc.app.persistence.repository.BlackListRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.BlackEntity; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterController.java index 1a9bbe83..8c764f87 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterController.java @@ -21,10 +21,10 @@ import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.util.extra.CallCenterInterface; -import com.chatopera.cc.app.service.repository.PbxHostRepository; +import com.chatopera.cc.exchange.CallCenterInterface; +import com.chatopera.cc.app.persistence.repository.PbxHostRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.PbxHost; import org.apache.commons.lang.StringUtils; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterExtentionController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterExtentionController.java index 837f6da4..0ad89c3e 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterExtentionController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterExtentionController.java @@ -23,9 +23,9 @@ import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.cache.CacheHelper; -import com.chatopera.cc.app.service.repository.PbxHostRepository; -import com.chatopera.cc.app.service.repository.ProductRepository; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.persistence.repository.PbxHostRepository; +import com.chatopera.cc.app.persistence.repository.ProductRepository; import com.chatopera.cc.app.model.PbxHost; import com.chatopera.cc.app.model.User; import org.apache.commons.lang.StringUtils; @@ -36,12 +36,12 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import com.chatopera.cc.util.freeswitch.model.CallCenterAgent; -import com.chatopera.cc.app.service.impl.CallOutQuene; -import com.chatopera.cc.app.service.repository.ExtentionRepository; -import com.chatopera.cc.app.service.repository.MediaRepository; -import com.chatopera.cc.app.service.repository.QueSurveyProcessRepository; -import com.chatopera.cc.app.service.repository.ServiceAiRepository; -import com.chatopera.cc.app.service.repository.SipTrunkRepository; +import com.chatopera.cc.app.persistence.impl.CallOutQuene; +import com.chatopera.cc.app.persistence.repository.ExtentionRepository; +import com.chatopera.cc.app.persistence.repository.MediaRepository; +import com.chatopera.cc.app.persistence.repository.QueSurveyProcessRepository; +import com.chatopera.cc.app.persistence.repository.ServiceAiRepository; +import com.chatopera.cc.app.persistence.repository.SipTrunkRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.Extention; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterIvrController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterIvrController.java index 3d88de5c..cd5212a8 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterIvrController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterIvrController.java @@ -20,7 +20,7 @@ import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.repository.PbxHostRepository; +import com.chatopera.cc.app.persistence.repository.PbxHostRepository; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -28,8 +28,8 @@ import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.app.service.repository.ExtentionRepository; -import com.chatopera.cc.app.service.repository.IvrMenuRepository; +import com.chatopera.cc.app.persistence.repository.ExtentionRepository; +import com.chatopera.cc.app.persistence.repository.IvrMenuRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.Extention; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterMediaController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterMediaController.java index 496a4dc1..90bb85d8 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterMediaController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterMediaController.java @@ -34,9 +34,9 @@ import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.MainUtils; -import com.chatopera.cc.app.service.repository.MediaRepository; -import com.chatopera.cc.app.service.repository.PbxHostRepository; +import com.chatopera.cc.app.basic.MainUtils; +import com.chatopera.cc.app.persistence.repository.MediaRepository; +import com.chatopera.cc.app.persistence.repository.PbxHostRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.Media; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterResourceController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterResourceController.java index ec1ba7ed..575f35c3 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterResourceController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterResourceController.java @@ -21,11 +21,11 @@ import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.util.extra.CallCenterInterface; -import com.chatopera.cc.app.service.repository.PbxHostRepository; -import com.chatopera.cc.app.service.repository.ServiceAiRepository; +import com.chatopera.cc.exchange.CallCenterInterface; +import com.chatopera.cc.app.persistence.repository.PbxHostRepository; +import com.chatopera.cc.app.persistence.repository.ServiceAiRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.PbxHost; import org.apache.commons.lang.StringUtils; @@ -35,7 +35,7 @@ import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.app.service.repository.ExtentionRepository; +import com.chatopera.cc.app.persistence.repository.ExtentionRepository; @Controller @RequestMapping("/admin/callcenter") diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterRouterController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterRouterController.java index fa966e35..588a1150 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterRouterController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterRouterController.java @@ -22,7 +22,7 @@ import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.repository.PbxHostRepository; +import com.chatopera.cc.app.persistence.repository.PbxHostRepository; import com.chatopera.cc.app.model.PbxHost; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -31,7 +31,7 @@ import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.app.service.repository.RouterRulesRepository; +import com.chatopera.cc.app.persistence.repository.RouterRulesRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.RouterRules; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterSipTrunkController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterSipTrunkController.java index d5f04b97..1afaa1fc 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterSipTrunkController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterSipTrunkController.java @@ -20,8 +20,8 @@ import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.cache.CacheHelper; -import com.chatopera.cc.app.service.repository.PbxHostRepository; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.persistence.repository.PbxHostRepository; import com.chatopera.cc.app.model.SipTrunk; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -30,7 +30,7 @@ import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.app.service.repository.SipTrunkRepository; +import com.chatopera.cc.app.persistence.repository.SipTrunkRepository; import com.chatopera.cc.app.handler.Handler; @Controller diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterSkillController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterSkillController.java index fd9290eb..c6777e41 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterSkillController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterSkillController.java @@ -23,10 +23,10 @@ import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.repository.CallCenterSkillRepository; -import com.chatopera.cc.app.service.repository.ExtentionRepository; -import com.chatopera.cc.app.service.repository.PbxHostRepository; -import com.chatopera.cc.app.service.repository.SkillExtentionRepository; +import com.chatopera.cc.app.persistence.repository.CallCenterSkillRepository; +import com.chatopera.cc.app.persistence.repository.ExtentionRepository; +import com.chatopera.cc.app.persistence.repository.PbxHostRepository; +import com.chatopera.cc.app.persistence.repository.SkillExtentionRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.CallCenterSkill; import com.chatopera.cc.app.model.Extention; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/channel/CalloutChannelController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/channel/CalloutChannelController.java index 8e24813d..fa1f75c0 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/channel/CalloutChannelController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/channel/CalloutChannelController.java @@ -15,13 +15,13 @@ */ package com.chatopera.cc.app.handler.admin.channel; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.exception.CSKefuException; -import com.chatopera.cc.app.service.repository.ConsultInviteRepository; -import com.chatopera.cc.app.service.repository.SNSAccountRepository; -import com.chatopera.cc.app.service.repository.SecretRepository; +import com.chatopera.cc.app.persistence.repository.ConsultInviteRepository; +import com.chatopera.cc.app.persistence.repository.SNSAccountRepository; +import com.chatopera.cc.app.persistence.repository.SecretRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.CousultInvite; import com.chatopera.cc.app.model.SNSAccount; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/channel/SNSAccountIMController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/channel/SNSAccountIMController.java index 442aafbd..fcb044d3 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/channel/SNSAccountIMController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/channel/SNSAccountIMController.java @@ -16,14 +16,14 @@ */ package com.chatopera.cc.app.handler.admin.channel; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.Base62; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.MainUtils; -import com.chatopera.cc.app.service.repository.ConsultInviteRepository; -import com.chatopera.cc.app.service.repository.OrganRepository; -import com.chatopera.cc.app.service.repository.SNSAccountRepository; -import com.chatopera.cc.app.service.repository.SecretRepository; +import com.chatopera.cc.app.basic.MainUtils; +import com.chatopera.cc.app.persistence.repository.ConsultInviteRepository; +import com.chatopera.cc.app.persistence.repository.OrganRepository; +import com.chatopera.cc.app.persistence.repository.SNSAccountRepository; +import com.chatopera.cc.app.persistence.repository.SecretRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.CousultInvite; import com.chatopera.cc.app.model.SNSAccount; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/channel/WebIMController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/channel/WebIMController.java index 469c3e3c..6ccc30ce 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/channel/WebIMController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/channel/WebIMController.java @@ -25,7 +25,7 @@ import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.cache.CacheHelper; +import com.chatopera.cc.app.cache.CacheHelper; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.CousultInvite; import com.chatopera.cc.app.model.Organ; @@ -42,12 +42,12 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.app.service.repository.ConsultInviteRepository; -import com.chatopera.cc.app.service.repository.OrganRepository; -import com.chatopera.cc.app.service.repository.OrgiSkillRelRepository; -import com.chatopera.cc.app.service.repository.SNSAccountRepository; -import com.chatopera.cc.app.service.repository.ServiceAiRepository; -import com.chatopera.cc.app.service.repository.UserRepository; +import com.chatopera.cc.app.persistence.repository.ConsultInviteRepository; +import com.chatopera.cc.app.persistence.repository.OrganRepository; +import com.chatopera.cc.app.persistence.repository.OrgiSkillRelRepository; +import com.chatopera.cc.app.persistence.repository.SNSAccountRepository; +import com.chatopera.cc.app.persistence.repository.ServiceAiRepository; +import com.chatopera.cc.app.persistence.repository.UserRepository; @Controller @RequestMapping("/admin/webim") diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/config/SystemConfigController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/config/SystemConfigController.java index cbb932df..788d5b2f 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/config/SystemConfigController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/config/SystemConfigController.java @@ -28,14 +28,14 @@ import java.util.Properties; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.cache.CacheHelper; -import com.chatopera.cc.app.service.repository.SecretRepository; -import com.chatopera.cc.app.service.repository.SystemConfigRepository; -import com.chatopera.cc.app.service.repository.SystemMessageRepository; -import com.chatopera.cc.app.service.repository.TemplateRepository; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.persistence.repository.SecretRepository; +import com.chatopera.cc.app.persistence.repository.SystemConfigRepository; +import com.chatopera.cc.app.persistence.repository.SystemMessageRepository; +import com.chatopera.cc.app.persistence.repository.TemplateRepository; import com.chatopera.cc.app.model.Secret; import com.chatopera.cc.app.model.SysDic; import org.apache.commons.io.FileUtils; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/config/SystemMessageController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/config/SystemMessageController.java index 71b709a2..cb15c350 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/config/SystemMessageController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/config/SystemMessageController.java @@ -23,9 +23,9 @@ import java.security.NoSuchAlgorithmException; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.repository.SystemMessageRepository; +import com.chatopera.cc.app.persistence.repository.SystemMessageRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.SystemMessage; import com.chatopera.cc.app.model.UKeFuDic; @@ -37,7 +37,7 @@ import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; @Controller @RequestMapping("/admin") diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/organ/OrganController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/organ/OrganController.java index 4a197fcb..2b3651e3 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/organ/OrganController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/organ/OrganController.java @@ -23,11 +23,11 @@ import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.cache.CacheHelper; -import com.chatopera.cc.app.service.repository.OrganRepository; -import com.chatopera.cc.app.service.repository.SysDicRepository; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.persistence.repository.OrganRepository; +import com.chatopera.cc.app.persistence.repository.SysDicRepository; import com.chatopera.cc.util.OnlineUserUtils; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -36,10 +36,10 @@ import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.app.service.repository.AreaTypeRepository; -import com.chatopera.cc.app.service.repository.OrganRoleRepository; -import com.chatopera.cc.app.service.repository.RoleRepository; -import com.chatopera.cc.app.service.repository.UserRepository; +import com.chatopera.cc.app.persistence.repository.AreaTypeRepository; +import com.chatopera.cc.app.persistence.repository.OrganRoleRepository; +import com.chatopera.cc.app.persistence.repository.RoleRepository; +import com.chatopera.cc.app.persistence.repository.UserRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.AgentStatus; import com.chatopera.cc.app.model.Organ; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/role/RoleController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/role/RoleController.java index 60e2ba09..20f82a22 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/role/RoleController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/role/RoleController.java @@ -22,11 +22,11 @@ import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.repository.RoleAuthRepository; -import com.chatopera.cc.app.service.repository.SysDicRepository; -import com.chatopera.cc.app.service.repository.UserRoleRepository; +import com.chatopera.cc.app.persistence.repository.RoleAuthRepository; +import com.chatopera.cc.app.persistence.repository.SysDicRepository; +import com.chatopera.cc.app.persistence.repository.UserRoleRepository; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.PageRequest; @@ -35,8 +35,8 @@ import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.app.service.repository.RoleRepository; -import com.chatopera.cc.app.service.repository.UserRepository; +import com.chatopera.cc.app.persistence.repository.RoleRepository; +import com.chatopera.cc.app.persistence.repository.UserRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.Role; import com.chatopera.cc.app.model.RoleAuth; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/skill/AgentSkillController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/skill/AgentSkillController.java index ce8bfe3e..82cddb0a 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/skill/AgentSkillController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/skill/AgentSkillController.java @@ -30,7 +30,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.repository.SkillRepository; +import com.chatopera.cc.app.persistence.repository.SkillRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.Skill; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/system/HazelcastMonitorController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/system/HazelcastMonitorController.java index 68a87a8e..6ab4bbfc 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/system/HazelcastMonitorController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/system/HazelcastMonitorController.java @@ -31,7 +31,7 @@ import org.springframework.web.servlet.ModelAndView; import com.google.gson.Gson; import com.hazelcast.com.eclipsesource.json.JsonObject; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.cache.CacheHelper; +import com.chatopera.cc.app.cache.CacheHelper; import com.chatopera.cc.app.handler.Handler; @Controller diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/system/LogController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/system/LogController.java index 1a6b2415..b3e46980 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/system/LogController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/system/LogController.java @@ -19,7 +19,7 @@ package com.chatopera.cc.app.handler.admin.system; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort.Direction; @@ -29,7 +29,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.repository.LogRepository; +import com.chatopera.cc.app.persistence.repository.LogRepository; import com.chatopera.cc.app.handler.Handler; @Controller diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/system/MetadataController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/system/MetadataController.java index 8baabc69..653a72d8 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/system/MetadataController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/system/MetadataController.java @@ -28,14 +28,14 @@ import javax.persistence.PersistenceContext; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.Menu; import com.chatopera.cc.util.metadata.DatabaseMetaDataHandler; import com.chatopera.cc.util.metadata.UKColumnMetadata; import com.chatopera.cc.util.metadata.UKTableMetaData; -import com.chatopera.cc.app.service.hibernate.BaseService; -import com.chatopera.cc.app.service.repository.SysDicRepository; -import com.chatopera.cc.app.service.repository.TablePropertiesRepository; +import com.chatopera.cc.app.persistence.hibernate.BaseService; +import com.chatopera.cc.app.persistence.repository.SysDicRepository; +import com.chatopera.cc.app.persistence.repository.TablePropertiesRepository; import com.chatopera.cc.app.model.SysDic; import com.chatopera.cc.app.model.TableProperties; import com.chatopera.cc.app.model.User; @@ -51,9 +51,9 @@ import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.util.UKeFuList; -import com.chatopera.cc.app.service.repository.MetadataRepository; +import com.chatopera.cc.app.persistence.repository.MetadataRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.MetadataTable; import com.chatopera.cc.app.model.UKeFuDic; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/system/SysDicController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/system/SysDicController.java index 5fdac01e..985beb99 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/system/SysDicController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/system/SysDicController.java @@ -22,8 +22,8 @@ import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; -import com.chatopera.cc.app.service.cache.CacheHelper; -import com.chatopera.cc.app.service.repository.SysDicRepository; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.persistence.repository.SysDicRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort.Direction; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/system/TemplateController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/system/TemplateController.java index 4af2ee34..49c76a0e 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/system/TemplateController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/system/TemplateController.java @@ -33,12 +33,12 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.MainUtils; -import com.chatopera.cc.app.service.cache.CacheHelper; -import com.chatopera.cc.app.service.repository.SysDicRepository; -import com.chatopera.cc.app.service.repository.TemplateRepository; +import com.chatopera.cc.app.basic.MainUtils; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.persistence.repository.SysDicRepository; +import com.chatopera.cc.app.persistence.repository.TemplateRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.SysDic; import com.chatopera.cc.app.model.Template; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/users/UsersController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/users/UsersController.java index ee58b112..57ad6a87 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/users/UsersController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/users/UsersController.java @@ -24,9 +24,10 @@ import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.app.service.cache.CacheHelper; -import com.chatopera.cc.app.service.repository.UserRoleRepository; +import com.chatopera.cc.app.algorithm.AutomaticServiceDist; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.persistence.repository.UserRoleRepository; import com.chatopera.cc.app.model.AgentStatus; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -38,9 +39,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.MainUtils; -import com.chatopera.cc.app.service.acd.ServiceQuene; -import com.chatopera.cc.app.service.repository.UserRepository; +import com.chatopera.cc.app.basic.MainUtils; +import com.chatopera.cc.app.persistence.repository.UserRepository; import com.chatopera.cc.util.OnlineUserUtils; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.User; @@ -168,7 +168,7 @@ public class UsersController extends Handler{ //切换成非坐席 判断是否坐席 以及 是否有对话 if(!user.isAgent()) { AgentStatus agentStatus = (AgentStatus) CacheHelper.getAgentStatusCacheBean().getCacheObject((super.getUser(request)).getId(), super.getOrgi(request)); - if(!(agentStatus==null && ServiceQuene.getAgentUsers(super.getUser(request).getId(), super.getOrgi(request))==0)) { + if(!(agentStatus==null && AutomaticServiceDist.getAgentUsers(super.getUser(request).getId(), super.getOrgi(request))==0)) { return request(super.createRequestPageTempletResponse("redirect:/admin/user/index.html?msg=t1")); } } diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/ApiLoginController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/ApiLoginController.java index 55114fbb..6d7c1e43 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/ApiLoginController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/ApiLoginController.java @@ -16,10 +16,10 @@ */ package com.chatopera.cc.app.handler.api; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.cache.CacheHelper; -import com.chatopera.cc.app.service.repository.UserRoleRepository; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.persistence.repository.UserRoleRepository; import com.chatopera.cc.app.model.User; import com.chatopera.cc.app.model.UserRole; import io.swagger.annotations.Api; @@ -42,8 +42,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.app.service.repository.UserRepository; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.persistence.repository.UserRepository; import com.chatopera.cc.app.handler.Handler; @RestController diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiAgentUserController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiAgentUserController.java index 9ff72f8b..f1d67e7c 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiAgentUserController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiAgentUserController.java @@ -33,7 +33,7 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.repository.AgentUserRepository; +import com.chatopera.cc.app.persistence.repository.AgentUserRepository; import com.chatopera.cc.util.RestResultType; import com.chatopera.cc.app.handler.Handler; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiCallMonitorController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiCallMonitorController.java index 1fa346df..aca898e4 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiCallMonitorController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiCallMonitorController.java @@ -16,13 +16,13 @@ */ package com.chatopera.cc.app.handler.api.rest; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.Constants; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.util.aggregation.MathHelper; +import com.chatopera.cc.aggregation.MathHelper; import com.chatopera.cc.exception.CallOutRecordException; import com.chatopera.cc.app.model.*; -import com.chatopera.cc.app.service.repository.*; +import com.chatopera.cc.app.persistence.repository.*; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.handler.api.request.RestUtils; import com.google.gson.JsonArray; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiCallRecordsController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiCallRecordsController.java index d82203cd..4eda9170 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiCallRecordsController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiCallRecordsController.java @@ -15,18 +15,18 @@ */ package com.chatopera.cc.app.handler.api.rest; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.Constants; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.util.aggregation.CallOutHangupAggsResult; -import com.chatopera.cc.util.aggregation.CallOutHangupAuditResult; -import com.chatopera.cc.util.aggregation.MathHelper; +import com.chatopera.cc.aggregation.CallOutHangupAggsResult; +import com.chatopera.cc.aggregation.CallOutHangupAuditResult; +import com.chatopera.cc.aggregation.MathHelper; import com.chatopera.cc.exception.CallOutRecordException; -import com.chatopera.cc.app.service.repository.OrganRepository; -import com.chatopera.cc.app.service.repository.SNSAccountRepository; -import com.chatopera.cc.app.service.repository.StatusEventRepository; -import com.chatopera.cc.app.service.repository.UserRepository; -import com.chatopera.cc.app.service.storage.MinioService; +import com.chatopera.cc.app.persistence.repository.OrganRepository; +import com.chatopera.cc.app.persistence.repository.SNSAccountRepository; +import com.chatopera.cc.app.persistence.repository.StatusEventRepository; +import com.chatopera.cc.app.persistence.repository.UserRepository; +import com.chatopera.cc.app.persistence.storage.MinioService; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.handler.api.request.RestUtils; import com.chatopera.cc.app.model.Organ; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiChatMessageController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiChatMessageController.java index 1abecdea..c5141225 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiChatMessageController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiChatMessageController.java @@ -31,7 +31,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; -import com.chatopera.cc.app.service.repository.ChatMessageRepository; +import com.chatopera.cc.app.persistence.repository.ChatMessageRepository; import com.chatopera.cc.util.RestResultType; import com.chatopera.cc.app.handler.Handler; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiChatbotController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiChatbotController.java index b6a18ddc..7d6e78fb 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiChatbotController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiChatbotController.java @@ -16,12 +16,12 @@ package com.chatopera.cc.app.handler.api.rest; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.exception.CallOutRecordException; import com.chatopera.cc.app.model.*; -import com.chatopera.cc.app.service.repository.*; +import com.chatopera.cc.app.persistence.repository.*; import com.chatopera.cc.util.OnlineUserUtils; -import com.chatopera.cc.util.ChatbotUtils; +import com.chatopera.cc.app.im.util.ChatbotUtils; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.handler.api.request.RestUtils; import com.chatopera.chatbot.ChatbotAPI; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiContactNotesController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiContactNotesController.java index bdc72711..1d1ec5f2 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiContactNotesController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiContactNotesController.java @@ -15,15 +15,15 @@ */ package com.chatopera.cc.app.handler.api.rest; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.Constants; import com.chatopera.cc.util.Menu; import com.chatopera.cc.exception.CSKefuRestException; import com.chatopera.cc.util.json.GsonTools; -import com.chatopera.cc.app.service.es.ContactNotesRepository; -import com.chatopera.cc.app.service.es.ContactsRepository; -import com.chatopera.cc.app.service.repository.OrganRepository; -import com.chatopera.cc.app.service.repository.UserRepository; +import com.chatopera.cc.app.persistence.es.ContactNotesRepository; +import com.chatopera.cc.app.persistence.es.ContactsRepository; +import com.chatopera.cc.app.persistence.repository.OrganRepository; +import com.chatopera.cc.app.persistence.repository.UserRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.handler.api.request.RestUtils; import com.chatopera.cc.app.model.ContactNotes; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiContactTagsController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiContactTagsController.java index 8b945e86..9a155028 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiContactTagsController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiContactTagsController.java @@ -16,13 +16,13 @@ package com.chatopera.cc.app.handler.api.rest; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.Menu; import com.chatopera.cc.exception.CSKefuRestException; import com.chatopera.cc.util.json.GsonTools; -import com.chatopera.cc.app.service.repository.TagRelationRepository; -import com.chatopera.cc.app.service.repository.TagRepository; -import com.chatopera.cc.app.service.repository.UserRepository; +import com.chatopera.cc.app.persistence.repository.TagRelationRepository; +import com.chatopera.cc.app.persistence.repository.TagRepository; +import com.chatopera.cc.app.persistence.repository.UserRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.handler.api.request.RestUtils; import com.chatopera.cc.app.model.Tag; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiContactsController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiContactsController.java index 8260117c..bc2e9cae 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiContactsController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiContactsController.java @@ -17,7 +17,7 @@ package com.chatopera.cc.app.handler.api.rest; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.es.ContactsRepository; +import com.chatopera.cc.app.persistence.es.ContactsRepository; import com.chatopera.cc.util.RestResult; import com.chatopera.cc.util.RestResultType; import com.chatopera.cc.app.handler.Handler; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiDailplanRunController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiDailplanRunController.java index c6167005..269b6ccb 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiDailplanRunController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiDailplanRunController.java @@ -15,13 +15,13 @@ */ package com.chatopera.cc.app.handler.api.rest; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.Constants; import com.chatopera.cc.util.Menu; import com.chatopera.cc.exception.CallOutRuntimeException; -import com.chatopera.cc.app.service.repository.CallOutDialplanRepository; -import com.chatopera.cc.app.service.repository.UserRepository; -import com.chatopera.cc.app.service.task.CallOutPlanTask; +import com.chatopera.cc.app.persistence.repository.CallOutDialplanRepository; +import com.chatopera.cc.app.persistence.repository.UserRepository; +import com.chatopera.cc.app.schedule.CallOutPlanTask; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.handler.api.request.RestUtils; import com.chatopera.cc.app.model.CallOutDialplan; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiLeavemsgController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiLeavemsgController.java index 77abe756..07b7f358 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiLeavemsgController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiLeavemsgController.java @@ -25,7 +25,7 @@ import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; import javax.servlet.http.HttpServletRequest; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.Menu; import com.chatopera.cc.util.RestResult; import org.springframework.beans.factory.annotation.Autowired; @@ -39,7 +39,7 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.chatopera.cc.app.service.repository.AgentServiceRepository; +import com.chatopera.cc.app.persistence.repository.AgentServiceRepository; import com.chatopera.cc.util.RestResultType; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.AgentService; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiOnlineUserController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiOnlineUserController.java index 26deb157..dde1f44b 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiOnlineUserController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiOnlineUserController.java @@ -16,7 +16,7 @@ */ package com.chatopera.cc.app.handler.api.rest; -import com.chatopera.cc.app.service.repository.OnlineUserRepository; +import com.chatopera.cc.app.persistence.repository.OnlineUserRepository; import com.chatopera.cc.util.RestResult; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -35,7 +35,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.Menu; import com.chatopera.cc.util.RestResultType; import com.chatopera.cc.app.handler.Handler; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiOrganController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiOrganController.java index 8a99f2d7..c4ba27a4 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiOrganController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiOrganController.java @@ -17,7 +17,7 @@ package com.chatopera.cc.app.handler.api.rest; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.repository.OrganRepository; +import com.chatopera.cc.app.persistence.repository.OrganRepository; import com.chatopera.cc.util.RestResult; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiQualityController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiQualityController.java index ebdf2e58..af80a5bb 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiQualityController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiQualityController.java @@ -26,9 +26,9 @@ import javax.persistence.criteria.Root; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.repository.AgentServiceRepository; +import com.chatopera.cc.app.persistence.repository.AgentServiceRepository; import com.chatopera.cc.util.RestResult; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiQuickReplyController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiQuickReplyController.java index 7f1c79b2..c0c1f611 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiQuickReplyController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiQuickReplyController.java @@ -17,7 +17,7 @@ package com.chatopera.cc.app.handler.api.rest; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.es.QuickReplyRepository; +import com.chatopera.cc.app.persistence.es.QuickReplyRepository; import com.chatopera.cc.util.RestResult; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.QuickReply; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiQuickTypeController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiQuickTypeController.java index 27230db3..cd0ea55e 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiQuickTypeController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiQuickTypeController.java @@ -17,8 +17,8 @@ package com.chatopera.cc.app.handler.api.rest; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.es.QuickReplyRepository; -import com.chatopera.cc.app.service.repository.QuickTypeRepository; +import com.chatopera.cc.app.persistence.es.QuickReplyRepository; +import com.chatopera.cc.app.persistence.repository.QuickTypeRepository; import com.chatopera.cc.util.RestResult; import com.chatopera.cc.util.RestResultType; import com.chatopera.cc.app.handler.Handler; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiServiceQueneController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiServiceQueneController.java index 325ee2d6..836d1435 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiServiceQueneController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiServiceQueneController.java @@ -22,11 +22,12 @@ import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.algorithm.AutomaticServiceDist; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.cache.CacheHelper; -import com.chatopera.cc.app.service.repository.AgentStatusRepository; -import com.chatopera.cc.app.service.repository.OrganRepository; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.persistence.repository.AgentStatusRepository; +import com.chatopera.cc.app.persistence.repository.OrganRepository; import com.chatopera.cc.util.RestResult; import com.chatopera.cc.app.model.AgentStatus; import com.chatopera.cc.app.model.User; @@ -38,8 +39,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; -import com.chatopera.cc.app.service.acd.ServiceQuene; -import com.chatopera.cc.app.service.repository.AgentUserRepository; +import com.chatopera.cc.app.persistence.repository.AgentUserRepository; import com.chatopera.cc.util.RestResultType; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.Organ; @@ -71,7 +71,7 @@ public class ApiServiceQueneController extends Handler{ @Menu(type = "apps" , subtype = "user" , access = true) @ApiOperation("获取队列统计信息,包含当前队列服务中的访客数,排队人数,坐席数") public ResponseEntity list(HttpServletRequest request) { - return new ResponseEntity<>(new RestResult(RestResultType.OK , ServiceQuene.getAgentReport(super.getOrgi(request))), HttpStatus.OK); + return new ResponseEntity<>(new RestResult(RestResultType.OK , AutomaticServiceDist.getAgentReport(super.getOrgi(request))), HttpStatus.OK); } /** @@ -104,7 +104,7 @@ public class ApiServiceQueneController extends Handler{ } } - SessionConfig sessionConfig = ServiceQuene.initSessionConfig(super.getOrgi(request)) ; + SessionConfig sessionConfig = AutomaticServiceDist.initSessionConfig(super.getOrgi(request)) ; agentStatus.setUsers(agentUserRepository.countByAgentnoAndStatusAndOrgi(user.getId(), MainContext.AgentUserStatusEnum.INSERVICE.toString(), super.getOrgi(request))); @@ -119,18 +119,18 @@ public class ApiServiceQueneController extends Handler{ /** * 更新当前用户状态 */ - agentStatus.setUsers(ServiceQuene.getAgentUsers(agentStatus.getAgentno(), super.getOrgi(request))); + agentStatus.setUsers(AutomaticServiceDist.getAgentUsers(agentStatus.getAgentno(), super.getOrgi(request))); agentStatus.setStatus(MainContext.AgentStatusEnum.READY.toString()); CacheHelper.getAgentStatusCacheBean().put(agentStatus.getAgentno(), agentStatus, super.getOrgi(request)); - ServiceQuene.recordAgentStatus(agentStatus.getAgentno(),agentStatus.getUsername(),agentStatus.getAgentno(), agentStatus.getSkill(),"0".equals(super.getUser(request).getUsertype()), agentStatus.getAgentno(), MainContext.AgentStatusEnum.OFFLINE.toString(), MainContext.AgentStatusEnum.READY.toString(), MainContext.AgentWorkType.MEIDIACHAT.toString() , agentStatus.getOrgi() , null); + AutomaticServiceDist.recordAgentStatus(agentStatus.getAgentno(),agentStatus.getUsername(),agentStatus.getAgentno(), agentStatus.getSkill(),"0".equals(super.getUser(request).getUsertype()), agentStatus.getAgentno(), MainContext.AgentStatusEnum.OFFLINE.toString(), MainContext.AgentStatusEnum.READY.toString(), MainContext.AgentWorkType.MEIDIACHAT.toString() , agentStatus.getOrgi() , null); - ServiceQuene.allotAgent(agentStatus.getAgentno(), super.getOrgi(request)); + AutomaticServiceDist.allotAgent(agentStatus.getAgentno(), super.getOrgi(request)); } }else if(!StringUtils.isBlank(status)) { if(status.equals(MainContext.AgentStatusEnum.NOTREADY.toString())) { List agentStatusList = agentStatusRepository.findByAgentnoAndOrgi(user.getId() , super.getOrgi(request)); for(AgentStatus temp : agentStatusList){ - ServiceQuene.recordAgentStatus(temp.getAgentno(),temp.getUsername(),temp.getAgentno(), temp.getSkill(),"0".equals(super.getUser(request).getUsertype()), temp.getAgentno(), temp.isBusy() ? MainContext.AgentStatusEnum.BUSY.toString(): MainContext.AgentStatusEnum.READY.toString(), MainContext.AgentStatusEnum.NOTREADY.toString(), MainContext.AgentWorkType.MEIDIACHAT.toString() , temp.getOrgi() , temp.getUpdatetime()); + AutomaticServiceDist.recordAgentStatus(temp.getAgentno(),temp.getUsername(),temp.getAgentno(), temp.getSkill(),"0".equals(super.getUser(request).getUsertype()), temp.getAgentno(), temp.isBusy() ? MainContext.AgentStatusEnum.BUSY.toString(): MainContext.AgentStatusEnum.READY.toString(), MainContext.AgentStatusEnum.NOTREADY.toString(), MainContext.AgentWorkType.MEIDIACHAT.toString() , temp.getOrgi() , temp.getUpdatetime()); agentStatusRepository.delete(temp); } CacheHelper.getAgentStatusCacheBean().delete(super.getUser(request).getId(),super.getOrgi(request)); @@ -139,7 +139,7 @@ public class ApiServiceQueneController extends Handler{ if(agentStatusList.size() > 0){ agentStatus = agentStatusList.get(0) ; agentStatus.setBusy(true); - ServiceQuene.recordAgentStatus(agentStatus.getAgentno(),agentStatus.getUsername(), agentStatus.getAgentno(),agentStatus.getSkill(), "0".equals(super.getUser(request).getUsertype()),agentStatus.getAgentno(), MainContext.AgentStatusEnum.READY.toString(), MainContext.AgentStatusEnum.BUSY.toString(), MainContext.AgentWorkType.MEIDIACHAT.toString() , agentStatus.getOrgi() , agentStatus.getUpdatetime()); + AutomaticServiceDist.recordAgentStatus(agentStatus.getAgentno(),agentStatus.getUsername(), agentStatus.getAgentno(),agentStatus.getSkill(), "0".equals(super.getUser(request).getUsertype()),agentStatus.getAgentno(), MainContext.AgentStatusEnum.READY.toString(), MainContext.AgentStatusEnum.BUSY.toString(), MainContext.AgentWorkType.MEIDIACHAT.toString() , agentStatus.getOrgi() , agentStatus.getUpdatetime()); agentStatus.setUpdatetime(new Date()); agentStatusRepository.save(agentStatus); @@ -150,15 +150,15 @@ public class ApiServiceQueneController extends Handler{ if(agentStatusList.size() > 0){ agentStatus = agentStatusList.get(0) ; agentStatus.setBusy(false); - ServiceQuene.recordAgentStatus(agentStatus.getAgentno(),agentStatus.getUsername(), agentStatus.getAgentno(),agentStatus.getSkill(), "0".equals(super.getUser(request).getUsertype()),agentStatus.getAgentno(), MainContext.AgentStatusEnum.BUSY.toString(), MainContext.AgentStatusEnum.READY.toString(), MainContext.AgentWorkType.MEIDIACHAT.toString() , agentStatus.getOrgi() , agentStatus.getUpdatetime()); + AutomaticServiceDist.recordAgentStatus(agentStatus.getAgentno(),agentStatus.getUsername(), agentStatus.getAgentno(),agentStatus.getSkill(), "0".equals(super.getUser(request).getUsertype()),agentStatus.getAgentno(), MainContext.AgentStatusEnum.BUSY.toString(), MainContext.AgentStatusEnum.READY.toString(), MainContext.AgentWorkType.MEIDIACHAT.toString() , agentStatus.getOrgi() , agentStatus.getUpdatetime()); agentStatus.setUpdatetime(new Date()); agentStatusRepository.save(agentStatus); CacheHelper.getAgentStatusCacheBean().put(agentStatus.getAgentno(), agentStatus,super.getOrgi(request)); } - ServiceQuene.allotAgent(agentStatus.getAgentno(), super.getOrgi(request)); + AutomaticServiceDist.allotAgent(agentStatus.getAgentno(), super.getOrgi(request)); } - ServiceQuene.publishMessage(super.getOrgi(request) , "agent" , "api" , super.getUser(request).getId()); + AutomaticServiceDist.publishMessage(super.getOrgi(request) , "agent" , "api" , super.getUser(request).getId()); } return new ResponseEntity<>(new RestResult(RestResultType.OK , agentStatus), HttpStatus.OK); } diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiTagsController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiTagsController.java index 8370ecb4..9120013d 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiTagsController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiTagsController.java @@ -19,7 +19,7 @@ package com.chatopera.cc.app.handler.api.rest; import com.chatopera.cc.util.Menu; import com.chatopera.cc.exception.CSKefuRestException; import com.chatopera.cc.util.json.GsonTools; -import com.chatopera.cc.app.service.repository.TagRepository; +import com.chatopera.cc.app.persistence.repository.TagRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.handler.api.request.RestUtils; import com.chatopera.cc.app.model.Tag; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiUserController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiUserController.java index 412e8002..5cae69ba 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiUserController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiUserController.java @@ -33,8 +33,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; -import com.chatopera.cc.app.MainUtils; -import com.chatopera.cc.app.service.repository.UserRepository; +import com.chatopera.cc.app.basic.MainUtils; +import com.chatopera.cc.app.persistence.repository.UserRepository; import com.chatopera.cc.util.RestResultType; import io.swagger.annotations.Api; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiWebIMController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiWebIMController.java index d2c0ccb1..fc6bc46d 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiWebIMController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/ApiWebIMController.java @@ -33,7 +33,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; -import com.chatopera.cc.app.service.repository.ConsultInviteRepository; +import com.chatopera.cc.app.persistence.repository.ConsultInviteRepository; import com.chatopera.cc.util.RestResultType; import com.chatopera.cc.app.handler.Handler; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/UkefuApiTagsController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/UkefuApiTagsController.java index 9ef1a35b..6b5f0fbd 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/UkefuApiTagsController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/api/rest/UkefuApiTagsController.java @@ -16,9 +16,9 @@ */ package com.chatopera.cc.app.handler.api.rest; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.repository.TagRepository; +import com.chatopera.cc.app.persistence.repository.TagRepository; import com.chatopera.cc.util.RestResult; import com.chatopera.cc.app.handler.Handler; import io.swagger.annotations.Api; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/AppsController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/AppsController.java index 333d4735..3c18b864 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/AppsController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/AppsController.java @@ -23,12 +23,12 @@ import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.acd.ServiceQuene; -import com.chatopera.cc.app.service.cache.CacheHelper; -import com.chatopera.cc.app.service.es.ContactsRepository; +import com.chatopera.cc.app.algorithm.AutomaticServiceDist; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.persistence.es.ContactsRepository; import com.chatopera.cc.util.OnlineUserUtils; import com.chatopera.cc.app.handler.Handler; import org.apache.commons.lang.StringUtils; @@ -41,11 +41,11 @@ import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.app.service.repository.InviteRecordRepository; -import com.chatopera.cc.app.service.repository.OnlineUserRepository; -import com.chatopera.cc.app.service.repository.OrgiSkillRelRepository; -import com.chatopera.cc.app.service.repository.UserEventRepository; -import com.chatopera.cc.app.service.repository.UserRepository; +import com.chatopera.cc.app.persistence.repository.InviteRecordRepository; +import com.chatopera.cc.app.persistence.repository.OnlineUserRepository; +import com.chatopera.cc.app.persistence.repository.OrgiSkillRelRepository; +import com.chatopera.cc.app.persistence.repository.UserEventRepository; +import com.chatopera.cc.app.persistence.repository.UserRepository; import com.chatopera.cc.app.model.AgentStatus; import com.chatopera.cc.app.model.Contacts; import com.chatopera.cc.app.model.InviteRecord; @@ -106,7 +106,7 @@ public class AppsController extends Handler { } private void aggValues(ModelMap map , HttpServletRequest request){ - map.put("agentReport", ServiceQuene.getAgentReport(super.getOrgi(request))) ; + map.put("agentReport", AutomaticServiceDist.getAgentReport(super.getOrgi(request))) ; map.put("webIMReport", MainUtils.getWebIMReport(userEventRes.findByOrgiAndCreatetimeRange(super.getOrgi(request), MainUtils.getStartTime() , MainUtils.getEndTime()))) ; map.put("agents",getUsers(request).size()) ; @@ -197,7 +197,7 @@ public class AppsController extends Handler { //切换成非坐席 判断是否坐席 以及 是否有对话 if(!user.isAgent()) { AgentStatus agentStatus = (AgentStatus) CacheHelper.getAgentStatusCacheBean().getCacheObject((super.getUser(request)).getId(), super.getOrgi(request)); - if(!(agentStatus==null && ServiceQuene.getAgentUsers(super.getUser(request).getId(), super.getOrgi(request))==0)) { + if(!(agentStatus==null && AutomaticServiceDist.getAgentUsers(super.getUser(request).getId(), super.getOrgi(request))==0)) { if(StringUtils.isBlank(index)) { return request(super.createRequestPageTempletResponse("redirect:/apps/content.html?msg=t1")); } diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/agent/AgentController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/agent/AgentController.java index e5794b62..8e309408 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/agent/AgentController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/agent/AgentController.java @@ -28,19 +28,19 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.*; import com.chatopera.cc.app.im.client.NettyClients; import com.chatopera.cc.exception.CSKefuException; -import com.chatopera.cc.util.extra.DataExchangeInterface; +import com.chatopera.cc.exchange.DataExchangeInterface; import com.chatopera.cc.util.mobile.MobileAddress; import com.chatopera.cc.util.mobile.MobileNumberUtils; import com.chatopera.cc.app.model.*; -import com.chatopera.cc.app.service.acd.ServiceQuene; -import com.chatopera.cc.app.service.cache.CacheHelper; -import com.chatopera.cc.app.service.es.ContactsRepository; -import com.chatopera.cc.app.service.es.QuickReplyRepository; -import com.chatopera.cc.app.service.repository.*; +import com.chatopera.cc.app.algorithm.AutomaticServiceDist; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.persistence.es.ContactsRepository; +import com.chatopera.cc.app.persistence.es.QuickReplyRepository; +import com.chatopera.cc.app.persistence.repository.*; import com.chatopera.cc.app.im.router.OutMessageRouter; import com.chatopera.cc.app.im.message.ChatMessage; import org.apache.commons.io.FileUtils; @@ -62,7 +62,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.app.handler.Handler; import freemarker.template.TemplateException; @@ -195,7 +195,7 @@ public class AgentController extends Handler { List agentUserList = agentUserRepository.findByAgentnoAndOrgi(user.getId() , super.getOrgi(request) , defaultSort); view.addObject("agentUserList", agentUserList) ; - SessionConfig sessionConfig = ServiceQuene.initSessionConfig(super.getOrgi(request)) ; + SessionConfig sessionConfig = AutomaticServiceDist.initSessionConfig(super.getOrgi(request)) ; view.addObject("sessionConfig", sessionConfig) ; if(sessionConfig.isOtherquickplay()) { @@ -403,7 +403,7 @@ public class AgentController extends Handler { view.addObject("tagRelationList", tagRelationRes.findByUserid(agentUser.getUserid())) ; } - SessionConfig sessionConfig = ServiceQuene.initSessionConfig(super.getOrgi(request)) ; + SessionConfig sessionConfig = AutomaticServiceDist.initSessionConfig(super.getOrgi(request)) ; view.addObject("sessionConfig", sessionConfig) ; if(sessionConfig.isOtherquickplay()) { @@ -424,7 +424,7 @@ public class AgentController extends Handler { @RequestMapping("/other/topic") @Menu(type = "apps", subtype = "othertopic") public ModelAndView othertopic(ModelMap map ,HttpServletRequest request , String q) throws IOException, TemplateException { - SessionConfig sessionConfig = ServiceQuene.initSessionConfig(super.getOrgi(request)) ; + SessionConfig sessionConfig = AutomaticServiceDist.initSessionConfig(super.getOrgi(request)) ; map.put("sessionConfig", sessionConfig) ; if(sessionConfig.isOtherquickplay()) { @@ -437,7 +437,7 @@ public class AgentController extends Handler { @RequestMapping("/other/topic/detail") @Menu(type = "apps", subtype = "othertopicdetail") public ModelAndView othertopicdetail(ModelMap map ,HttpServletRequest request , String id) throws IOException, TemplateException { - SessionConfig sessionConfig = ServiceQuene.initSessionConfig(super.getOrgi(request)) ; + SessionConfig sessionConfig = AutomaticServiceDist.initSessionConfig(super.getOrgi(request)) ; map.put("sessionConfig", sessionConfig) ; if(sessionConfig.isOtherquickplay()) { @@ -486,7 +486,7 @@ public class AgentController extends Handler { } } agentStatus.setUpdatetime(new Date()); - SessionConfig sessionConfig = ServiceQuene.initSessionConfig(super.getOrgi(request)) ; + SessionConfig sessionConfig = AutomaticServiceDist.initSessionConfig(super.getOrgi(request)) ; agentStatus.setUsers(agentUserRepository.countByAgentnoAndStatusAndOrgi(user.getId(), MainContext.AgentUserStatusEnum.INSERVICE.toString(), super.getOrgi(request))); @@ -498,13 +498,13 @@ public class AgentController extends Handler { /** * 更新当前用户状态 */ - agentStatus.setUsers(ServiceQuene.getAgentUsers(agentStatus.getAgentno(), super.getOrgi(request))); + agentStatus.setUsers(AutomaticServiceDist.getAgentUsers(agentStatus.getAgentno(), super.getOrgi(request))); agentStatus.setStatus(MainContext.AgentStatusEnum.READY.toString()); CacheHelper.getAgentStatusCacheBean().put(agentStatus.getAgentno(), agentStatus, super.getOrgi(request)); - ServiceQuene.allotAgent(agentStatus.getAgentno(), super.getOrgi(request)); + AutomaticServiceDist.allotAgent(agentStatus.getAgentno(), super.getOrgi(request)); - ServiceQuene.recordAgentStatus(agentStatus.getAgentno(),agentStatus.getUsername(), agentStatus.getAgentno(), agentStatus.getSkill(), "0".equals(super.getUser(request).getUsertype()) ,agentStatus.getAgentno(), MainContext.AgentStatusEnum.OFFLINE.toString(), MainContext.AgentStatusEnum.READY.toString(), MainContext.AgentWorkType.MEIDIACHAT.toString() , agentStatus.getOrgi() , null); + AutomaticServiceDist.recordAgentStatus(agentStatus.getAgentno(),agentStatus.getUsername(), agentStatus.getAgentno(), agentStatus.getSkill(), "0".equals(super.getUser(request).getUsertype()) ,agentStatus.getAgentno(), MainContext.AgentStatusEnum.OFFLINE.toString(), MainContext.AgentStatusEnum.READY.toString(), MainContext.AgentWorkType.MEIDIACHAT.toString() , agentStatus.getOrgi() , null); } return request(super.createRequestPageTempletResponse("/public/success")) ; @@ -515,7 +515,7 @@ public class AgentController extends Handler { public ModelAndView notready(HttpServletRequest request){ User user = super.getUser(request) ; if(user!=null) { - ServiceQuene.deleteAgentStatus(user.getId(), user.getOrgi(), "0".equals(user.getUsertype())); + AutomaticServiceDist.deleteAgentStatus(user.getId(), user.getOrgi(), "0".equals(user.getUsertype())); } return request(super.createRequestPageTempletResponse("/public/success")) ; } @@ -529,12 +529,12 @@ public class AgentController extends Handler { if(agentStatusList.size() > 0){ agentStatus = agentStatusList.get(0) ; agentStatus.setBusy(true); - ServiceQuene.recordAgentStatus(agentStatus.getAgentno(),agentStatus.getUsername(), agentStatus.getAgentno(), agentStatus.getSkill(), "0".equals(super.getUser(request).getUsertype()),agentStatus.getAgentno(), MainContext.AgentStatusEnum.READY.toString(), MainContext.AgentStatusEnum.BUSY.toString(), MainContext.AgentWorkType.MEIDIACHAT.toString() , agentStatus.getOrgi() , agentStatus.getUpdatetime()); + AutomaticServiceDist.recordAgentStatus(agentStatus.getAgentno(),agentStatus.getUsername(), agentStatus.getAgentno(), agentStatus.getSkill(), "0".equals(super.getUser(request).getUsertype()),agentStatus.getAgentno(), MainContext.AgentStatusEnum.READY.toString(), MainContext.AgentStatusEnum.BUSY.toString(), MainContext.AgentWorkType.MEIDIACHAT.toString() , agentStatus.getOrgi() , agentStatus.getUpdatetime()); agentStatus.setUpdatetime(new Date()); agentStatusRepository.save(agentStatus); CacheHelper.getAgentStatusCacheBean().put(agentStatus.getAgentno(), agentStatus, super.getOrgi(request)); } - ServiceQuene.publishMessage(super.getOrgi(request) , "agent" , "busy" , user.getId()); + AutomaticServiceDist.publishMessage(super.getOrgi(request) , "agent" , "busy" , user.getId()); return request(super.createRequestPageTempletResponse("/public/success")) ; } @@ -548,12 +548,12 @@ public class AgentController extends Handler { if(agentStatusList.size() > 0){ agentStatus = agentStatusList.get(0) ; agentStatus.setBusy(false); - ServiceQuene.recordAgentStatus(agentStatus.getAgentno(),agentStatus.getUsername(), agentStatus.getAgentno(), agentStatus.getSkill(),"0".equals(super.getUser(request).getUsertype()), agentStatus.getAgentno(), MainContext.AgentStatusEnum.BUSY.toString(), MainContext.AgentStatusEnum.READY.toString(), MainContext.AgentWorkType.MEIDIACHAT.toString() , agentStatus.getOrgi() , agentStatus.getUpdatetime()); + AutomaticServiceDist.recordAgentStatus(agentStatus.getAgentno(),agentStatus.getUsername(), agentStatus.getAgentno(), agentStatus.getSkill(),"0".equals(super.getUser(request).getUsertype()), agentStatus.getAgentno(), MainContext.AgentStatusEnum.BUSY.toString(), MainContext.AgentStatusEnum.READY.toString(), MainContext.AgentWorkType.MEIDIACHAT.toString() , agentStatus.getOrgi() , agentStatus.getUpdatetime()); agentStatus.setUpdatetime(new Date()); agentStatusRepository.save(agentStatus); CacheHelper.getAgentStatusCacheBean().put(agentStatus.getAgentno(), agentStatus,super.getOrgi(request)); - ServiceQuene.allotAgent(agentStatus.getAgentno(), super.getOrgi(request)); + AutomaticServiceDist.allotAgent(agentStatus.getAgentno(), super.getOrgi(request)); } return request(super.createRequestPageTempletResponse("/public/success")) ; } @@ -565,7 +565,7 @@ public class AgentController extends Handler { List agentServiceList = new ArrayList(); for(AgentUser agentUser : agentUserList){ if(agentUser!=null && super.getUser(request).getId().equals(agentUser.getAgentno())){ - ServiceQuene.deleteAgentUser(agentUser, super.getOrgi(request)); + AutomaticServiceDist.deleteAgentUser(agentUser, super.getOrgi(request)); AgentService agentService = agentServiceRepository.findByIdAndOrgi(agentUser.getAgentserviceid(), super.getOrgi(request)) ; if(agentService!=null){ agentService.setStatus(MainContext.AgentUserStatusEnum.END.toString()); @@ -585,7 +585,7 @@ public class AgentController extends Handler { throws Exception { AgentUser agentUser = agentUserRepository.findByIdAndOrgi(userid, super.getOrgi(request)); if(agentUser!=null && super.getUser(request).getId().equals(agentUser.getAgentno())){ - ServiceQuene.deleteAgentUser(agentUser, super.getOrgi(request)); + AutomaticServiceDist.deleteAgentUser(agentUser, super.getOrgi(request)); if(!StringUtils.isBlank(agentUser.getAgentserviceid())){ AgentService agentService = agentServiceRepository.findByIdAndOrgi(agentUser.getAgentserviceid(), super.getOrgi(request)) ; agentService.setStatus(MainContext.AgentUserStatusEnum.END.toString()); @@ -974,7 +974,7 @@ public class AgentController extends Handler { currentOrgan = skillList.get(0).getId(); } } - List agentStatusList = ServiceQuene.getAgentStatus(null , super.getOrgi(request)); + List agentStatusList = AutomaticServiceDist.getAgentStatus(null , super.getOrgi(request)); List usersids = new ArrayList(); if(!agentStatusList.isEmpty()) { for(AgentStatus agentStatus:agentStatusList) { @@ -1007,7 +1007,7 @@ public class AgentController extends Handler { public ModelAndView transferagent(ModelMap map , HttpServletRequest request , @Valid String organ){ if(!StringUtils.isBlank(organ)){ List usersids = new ArrayList(); - List agentStatusList = ServiceQuene.getAgentStatus(organ , super.getOrgi(request)); + List agentStatusList = AutomaticServiceDist.getAgentStatus(organ , super.getOrgi(request)); if(!agentStatusList.isEmpty()) { for(AgentStatus agentStatus:agentStatusList) { if(agentStatus!=null && !agentStatus.getAgentno().equals(super.getUser(request).getId())){ @@ -1042,12 +1042,12 @@ public class AgentController extends Handler { AgentStatus agentStatus = (AgentStatus) CacheHelper.getAgentStatusCacheBean().getCacheObject(super.getUser(request).getId(), super.getOrgi(request)) ; if(agentStatus!=null){ - ServiceQuene.updateAgentStatus(agentStatus, agentUser, super.getOrgi(request), false); + AutomaticServiceDist.updateAgentStatus(agentStatus, agentUser, super.getOrgi(request), false); } AgentStatus transAgentStatus = (AgentStatus) CacheHelper.getAgentStatusCacheBean().getCacheObject(agentno, super.getOrgi(request)) ; if(transAgentStatus!=null){ - ServiceQuene.updateAgentStatus(transAgentStatus, agentUser, super.getOrgi(request), true); + AutomaticServiceDist.updateAgentStatus(transAgentStatus, agentUser, super.getOrgi(request), true); agentService.setAgentno(agentno); agentService.setAgentusername(transAgentStatus.getUsername()); } diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/callcenter/ExtentionController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/callcenter/ExtentionController.java index b19310ed..6002d1c5 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/callcenter/ExtentionController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/callcenter/ExtentionController.java @@ -24,8 +24,8 @@ import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.repository.CallCenterSkillRepository; -import com.chatopera.cc.app.service.repository.PbxHostRepository; +import com.chatopera.cc.app.persistence.repository.CallCenterSkillRepository; +import com.chatopera.cc.app.persistence.repository.PbxHostRepository; import com.chatopera.cc.app.model.Extention; import com.chatopera.cc.app.model.PbxHost; import com.chatopera.cc.app.model.Template; @@ -36,13 +36,13 @@ import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.app.MainUtils; -import com.chatopera.cc.app.service.repository.AclRepository; -import com.chatopera.cc.app.service.repository.ExtentionRepository; -import com.chatopera.cc.app.service.repository.RouterRulesRepository; -import com.chatopera.cc.app.service.repository.SipTrunkRepository; -import com.chatopera.cc.app.service.repository.SkillExtentionRepository; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.basic.MainUtils; +import com.chatopera.cc.app.persistence.repository.AclRepository; +import com.chatopera.cc.app.persistence.repository.ExtentionRepository; +import com.chatopera.cc.app.persistence.repository.RouterRulesRepository; +import com.chatopera.cc.app.persistence.repository.SipTrunkRepository; +import com.chatopera.cc.app.persistence.repository.SkillExtentionRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.SystemConfig; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/callcenter/SipTrunkController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/callcenter/SipTrunkController.java index 6c9f8ed3..573d594c 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/callcenter/SipTrunkController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/callcenter/SipTrunkController.java @@ -24,10 +24,10 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.es.SearchTools; -import com.chatopera.cc.es.UKDataBean; -import com.chatopera.cc.app.service.cache.CacheHelper; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.util.es.SearchTools; +import com.chatopera.cc.util.es.UKDataBean; +import com.chatopera.cc.app.cache.CacheHelper; import com.chatopera.cc.util.CallCenterUtils; import com.chatopera.cc.app.model.User; import org.apache.commons.lang3.StringUtils; @@ -40,10 +40,10 @@ import org.springframework.web.servlet.ModelAndView; import com.chatopera.cc.util.Menu; import com.chatopera.cc.util.freeswitch.model.CallCenterAgent; -import com.chatopera.cc.app.service.impl.CallOutQuene; -import com.chatopera.cc.app.service.repository.ExtentionRepository; -import com.chatopera.cc.app.service.repository.SipTrunkRepository; -import com.chatopera.cc.app.service.repository.UserRepository; +import com.chatopera.cc.app.persistence.impl.CallOutQuene; +import com.chatopera.cc.app.persistence.repository.ExtentionRepository; +import com.chatopera.cc.app.persistence.repository.SipTrunkRepository; +import com.chatopera.cc.app.persistence.repository.UserRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.SipTrunk; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/callout/CalloutController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/callout/CalloutController.java index 31f9be91..080b6fc8 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/callout/CalloutController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/callout/CalloutController.java @@ -16,11 +16,11 @@ package com.chatopera.cc.app.handler.apps.callout; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.task.CallOutSheetTask; +import com.chatopera.cc.app.schedule.CallOutSheetTask; import com.chatopera.cc.exception.CallOutRuntimeException; -import com.chatopera.cc.app.service.repository.*; +import com.chatopera.cc.app.persistence.repository.*; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.CallOutDialplan; import com.chatopera.cc.app.model.CallOutLogDialPlan; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/contacts/ContactsController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/contacts/ContactsController.java index 8ae4d91e..357a3113 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/contacts/ContactsController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/contacts/ContactsController.java @@ -19,20 +19,20 @@ package com.chatopera.cc.app.handler.apps.contacts; import com.chatopera.cc.util.Menu; import com.chatopera.cc.util.PinYinTools; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.exception.CSKefuException; -import com.chatopera.cc.util.task.DSData; -import com.chatopera.cc.util.task.DSDataEvent; -import com.chatopera.cc.util.task.ExcelImportProecess; -import com.chatopera.cc.util.task.export.ExcelExporterProcess; -import com.chatopera.cc.util.task.process.ContactsProcess; +import com.chatopera.cc.concurrent.dsdata.DSData; +import com.chatopera.cc.concurrent.dsdata.DSDataEvent; +import com.chatopera.cc.concurrent.dsdata.ExcelImportProecess; +import com.chatopera.cc.concurrent.dsdata.export.ExcelExporterProcess; +import com.chatopera.cc.concurrent.dsdata.process.ContactsProcess; import com.chatopera.cc.app.model.Contacts; import com.chatopera.cc.app.model.MetadataTable; import com.chatopera.cc.app.model.PropertiesEvent; -import com.chatopera.cc.app.service.es.ContactsRepository; -import com.chatopera.cc.app.service.repository.MetadataRepository; -import com.chatopera.cc.app.service.repository.PropertiesEventRepository; -import com.chatopera.cc.app.service.repository.ReporterRepository; +import com.chatopera.cc.app.persistence.es.ContactsRepository; +import com.chatopera.cc.app.persistence.repository.MetadataRepository; +import com.chatopera.cc.app.persistence.repository.PropertiesEventRepository; +import com.chatopera.cc.app.persistence.repository.ReporterRepository; import com.chatopera.cc.util.PropertiesEventUtils; import com.chatopera.cc.app.handler.Handler; import org.apache.commons.io.FileUtils; @@ -271,7 +271,7 @@ public class ContactsController extends Handler { event.getDSData().setProcess(new ContactsProcess(contactsRes)); event.setOrgi(super.getOrgi(request)); /*if(!StringUtils.isBlank(ckind)){ - event.getValues().put("ckind", ckind) ; + exchange.getValues().put("ckind", ckind) ; }*/ event.getValues().put("creater", super.getUser(request).getId()); reporterRes.save(event.getDSData().getReport()); diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/customer/CustomerController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/customer/CustomerController.java index 1a1a931b..eaa5abbb 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/customer/CustomerController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/customer/CustomerController.java @@ -32,18 +32,18 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.util.Menu; import com.chatopera.cc.util.PinYinTools; import com.chatopera.cc.exception.CSKefuException; -import com.chatopera.cc.util.task.DSData; -import com.chatopera.cc.util.task.ExcelImportProecess; -import com.chatopera.cc.util.task.export.ExcelExporterProcess; -import com.chatopera.cc.util.task.process.EntCustomerProcess; -import com.chatopera.cc.app.service.es.ContactsRepository; -import com.chatopera.cc.app.service.es.EntCustomerRepository; -import com.chatopera.cc.app.service.repository.PropertiesEventRepository; +import com.chatopera.cc.concurrent.dsdata.DSData; +import com.chatopera.cc.concurrent.dsdata.ExcelImportProecess; +import com.chatopera.cc.concurrent.dsdata.export.ExcelExporterProcess; +import com.chatopera.cc.concurrent.dsdata.process.EntCustomerProcess; +import com.chatopera.cc.app.persistence.es.ContactsRepository; +import com.chatopera.cc.app.persistence.es.EntCustomerRepository; +import com.chatopera.cc.app.persistence.repository.PropertiesEventRepository; import com.chatopera.cc.util.PropertiesEventUtils; import org.apache.commons.io.FileUtils; import org.apache.commons.lang.StringUtils; @@ -59,9 +59,9 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.util.task.DSDataEvent; -import com.chatopera.cc.app.service.repository.MetadataRepository; -import com.chatopera.cc.app.service.repository.ReporterRepository; +import com.chatopera.cc.concurrent.dsdata.DSDataEvent; +import com.chatopera.cc.app.persistence.repository.MetadataRepository; +import com.chatopera.cc.app.persistence.repository.ReporterRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.CustomerGroupForm; import com.chatopera.cc.app.model.EntCustomer; @@ -318,7 +318,7 @@ public class CustomerController extends Handler{ event.getDSData().setProcess(new EntCustomerProcess(entCustomerRes)); event.setOrgi(super.getOrgi(request)); /*if(!StringUtils.isBlank(ekind)){ - event.getValues().put("ekind", ekind) ; + exchange.getValues().put("ekind", ekind) ; }*/ event.getValues().put("creater", super.getUser(request).getId()) ; reporterRes.save(event.getDSData().getReport()) ; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/entim/EntIMController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/entim/EntIMController.java index 4f87c6d4..bb8926b2 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/entim/EntIMController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/entim/EntIMController.java @@ -21,12 +21,12 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.util.Menu; import com.chatopera.cc.app.im.client.NettyClients; -import com.chatopera.cc.app.service.repository.IMGroupRepository; -import com.chatopera.cc.app.service.repository.IMGroupUserRepository; -import com.chatopera.cc.app.service.repository.OrganRepository; +import com.chatopera.cc.app.persistence.repository.IMGroupRepository; +import com.chatopera.cc.app.persistence.repository.IMGroupUserRepository; +import com.chatopera.cc.app.persistence.repository.OrganRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.IMGroupUser; import com.chatopera.cc.app.model.RecentUser; @@ -39,9 +39,9 @@ import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.app.service.repository.ChatMessageRepository; -import com.chatopera.cc.app.service.repository.RecentUserRepository; -import com.chatopera.cc.app.service.repository.UserRepository; +import com.chatopera.cc.app.persistence.repository.ChatMessageRepository; +import com.chatopera.cc.app.persistence.repository.RecentUserRepository; +import com.chatopera.cc.app.persistence.repository.UserRepository; import com.chatopera.cc.app.model.IMGroup; @Controller diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/internet/IMController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/internet/IMController.java index 5a133513..ac7fd2ab 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/internet/IMController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/internet/IMController.java @@ -17,18 +17,16 @@ package com.chatopera.cc.app.handler.apps.internet; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.app.MainUtils; -import com.chatopera.cc.util.*; -import com.chatopera.cc.util.WebIMClient; -import com.chatopera.cc.app.model.*; -import com.chatopera.cc.app.service.acd.ServiceQuene; -import com.chatopera.cc.app.service.cache.CacheHelper; -import com.chatopera.cc.app.service.es.ContactsRepository; -import com.chatopera.cc.app.service.repository.*; -import com.chatopera.cc.util.MessageUtils; -import com.chatopera.cc.util.OnlineUserUtils; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.app.handler.Handler; +import com.chatopera.cc.app.im.util.RichMediaUtils; +import com.chatopera.cc.app.model.*; +import com.chatopera.cc.app.algorithm.AutomaticServiceDist; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.persistence.es.ContactsRepository; +import com.chatopera.cc.app.persistence.repository.*; +import com.chatopera.cc.util.*; import org.apache.commons.io.FileUtils; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; @@ -356,7 +354,7 @@ public class IMController extends Handler { } String nickname = "Guest_" + userID; boolean consult = true; //是否已收集用户信息 - SessionConfig sessionConfig = ServiceQuene.initSessionConfig(orgi); + SessionConfig sessionConfig = AutomaticServiceDist.initSessionConfig(orgi); map.addAttribute("sessionConfig", sessionConfig); map.addAttribute("hostname", request.getServerName()); @@ -407,7 +405,7 @@ public class IMController extends Handler { map.addAttribute("aiid", invite.getAiid()); } - AgentReport report = ServiceQuene.getAgentReport(invite.getOrgi()); + AgentReport report = AutomaticServiceDist.getAgentReport(invite.getOrgi()); if (report.getAgents() == 0 || (sessionConfig.isHourcheck() && !MainUtils.isInWorkingHours(sessionConfig.getWorkinghours()) && invite.isLeavemessage())) { view = request(super.createRequestPageTempletResponse("/apps/im/leavemsg")); @@ -726,9 +724,7 @@ public class IMController extends Handler { String thumbnailsFileName = "upload/" + fileid; MainUtils.processImage(new File(path, thumbnailsFileName), imageFile); - upload = new UploadStatus("0", "/res/image.html?id=" + thumbnailsFileName); - String image = "/res/image.html?id=" + thumbnailsFileName; if (request.getServerPort() == 80) { image = "/res/image.html?id=" + thumbnailsFileName; @@ -737,15 +733,13 @@ public class IMController extends Handler { } if (paste == null) { if (StringUtils.isNotBlank(channel)) { - MessageUtils.uploadImage(image, fileid, (int) imgFile.getSize(), imgFile.getName(), channel, userid, username, appid, orgi); + RichMediaUtils.uploadImageWithChannel(image, fileid, (int) imgFile.getSize(), imgFile.getName(), channel, userid, username, appid, orgi); } else { - MessageUtils.uploadImage(image, fileid, (int) imgFile.getSize(), imgFile.getName(), userid); + RichMediaUtils.uploadImage(image, fileid, (int) imgFile.getSize(), imgFile.getName(), userid); } } } else { - String id = processAttachmentFile(imgFile, request); - upload = new UploadStatus("0", "/res/file.html?id=" + id); String file = "/res/file.html?id=" + id; if (request.getServerPort() == 80) { @@ -755,9 +749,9 @@ public class IMController extends Handler { } File tempFile = new File(imgFile.getOriginalFilename()); if (StringUtils.isNotBlank(channel)) { - MessageUtils.uploadFile(file, (int) imgFile.getSize(), tempFile.getName(), channel, userid, username, appid, orgi, id); + RichMediaUtils.uploadFileWithChannel(file, (int) imgFile.getSize(), tempFile.getName(), channel, userid, username, appid, orgi, id); } else { - MessageUtils.uploadFile(file, (int) imgFile.getSize(), tempFile.getName(), userid, id); + RichMediaUtils.uploadFile(file, (int) imgFile.getSize(), tempFile.getName(), userid, id); } } } else { diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/job/JobController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/job/JobController.java index b4c4cc20..cab372c9 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/job/JobController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/job/JobController.java @@ -23,7 +23,7 @@ import java.util.Date; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.util.Menu; import com.chatopera.cc.app.model.JobDetail; import com.chatopera.cc.app.model.JobTask; @@ -34,7 +34,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import com.fasterxml.jackson.databind.ObjectMapper; -import com.chatopera.cc.app.service.repository.JobDetailRepository; +import com.chatopera.cc.app.persistence.repository.JobDetailRepository; import com.chatopera.cc.app.handler.Handler; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/kbs/KbsController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/kbs/KbsController.java index a6054f1f..da388d8b 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/kbs/KbsController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/kbs/KbsController.java @@ -25,12 +25,12 @@ import java.util.Date; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.es.KbsTopicRepository; -import com.chatopera.cc.app.service.repository.AttachmentRepository; -import com.chatopera.cc.app.service.repository.KbsTypeRepository; -import com.chatopera.cc.app.service.repository.TagRepository; +import com.chatopera.cc.app.persistence.es.KbsTopicRepository; +import com.chatopera.cc.app.persistence.repository.AttachmentRepository; +import com.chatopera.cc.app.persistence.repository.KbsTypeRepository; +import com.chatopera.cc.app.persistence.repository.TagRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.AttachmentFile; import com.chatopera.cc.app.model.KbsTopic; @@ -46,7 +46,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; @Controller @RequestMapping({"/apps/kbs"}) diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/kbs/TopicController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/kbs/TopicController.java index 5fb44e65..0748d742 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/kbs/TopicController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/kbs/TopicController.java @@ -30,15 +30,15 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.util.extra.DataExchangeInterface; -import com.chatopera.cc.util.task.DSData; -import com.chatopera.cc.util.task.ExcelImportProecess; -import com.chatopera.cc.util.task.export.ExcelExporterProcess; -import com.chatopera.cc.app.service.repository.SysDicRepository; -import com.chatopera.cc.app.service.repository.TopicItemRepository; +import com.chatopera.cc.exchange.DataExchangeInterface; +import com.chatopera.cc.concurrent.dsdata.DSData; +import com.chatopera.cc.concurrent.dsdata.ExcelImportProecess; +import com.chatopera.cc.concurrent.dsdata.export.ExcelExporterProcess; +import com.chatopera.cc.app.persistence.repository.SysDicRepository; +import com.chatopera.cc.app.persistence.repository.TopicItemRepository; import com.chatopera.cc.util.OnlineUserUtils; import com.chatopera.cc.app.model.KnowledgeType; import com.chatopera.cc.app.model.SysDic; @@ -56,13 +56,13 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.util.task.DSDataEvent; -import com.chatopera.cc.util.task.process.TopicProcess; -import com.chatopera.cc.app.service.es.TopicRepository; -import com.chatopera.cc.app.service.repository.AreaTypeRepository; -import com.chatopera.cc.app.service.repository.KnowledgeTypeRepository; -import com.chatopera.cc.app.service.repository.MetadataRepository; -import com.chatopera.cc.app.service.repository.ReporterRepository; +import com.chatopera.cc.concurrent.dsdata.DSDataEvent; +import com.chatopera.cc.concurrent.dsdata.process.TopicProcess; +import com.chatopera.cc.app.persistence.es.TopicRepository; +import com.chatopera.cc.app.persistence.repository.AreaTypeRepository; +import com.chatopera.cc.app.persistence.repository.KnowledgeTypeRepository; +import com.chatopera.cc.app.persistence.repository.MetadataRepository; +import com.chatopera.cc.app.persistence.repository.ReporterRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.MetadataTable; import com.chatopera.cc.app.model.UKeFuDic; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/organization/OrganizationController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/organization/OrganizationController.java index 38f8b623..7aa68249 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/organization/OrganizationController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/organization/OrganizationController.java @@ -23,9 +23,9 @@ import java.security.NoSuchAlgorithmException; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.repository.OrganizationRepository; +import com.chatopera.cc.app.persistence.repository.OrganizationRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.Organization; import com.chatopera.cc.app.model.User; @@ -36,7 +36,7 @@ import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.app.service.repository.UserRepository; +import com.chatopera.cc.app.persistence.repository.UserRepository; import com.chatopera.cc.app.model.SystemConfig; @Controller diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/quality/AgentQualityController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/quality/AgentQualityController.java index f1b04915..0a7177e2 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/quality/AgentQualityController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/quality/AgentQualityController.java @@ -23,11 +23,11 @@ import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; +import com.chatopera.cc.app.algorithm.AutomaticServiceDist; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.acd.ServiceQuene; -import com.chatopera.cc.app.service.cache.CacheHelper; -import com.chatopera.cc.app.service.repository.SessionConfigRepository; -import com.chatopera.cc.app.service.repository.TagRepository; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.persistence.repository.SessionConfigRepository; +import com.chatopera.cc.app.persistence.repository.TagRepository; import com.chatopera.cc.app.model.Quality; import com.chatopera.cc.app.model.QualityRequest; import com.chatopera.cc.app.model.Tag; @@ -37,8 +37,8 @@ import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.app.service.repository.QualityRepository; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.persistence.repository.QualityRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.SessionConfig; @@ -60,7 +60,7 @@ public class AgentQualityController extends Handler{ @RequestMapping(value = "/index") @Menu(type = "agent" , subtype = "quality" , access = false) public ModelAndView index(ModelMap map , HttpServletRequest request ) { - map.addAttribute("sessionConfig", ServiceQuene.initSessionConfig(super.getOrgi(request))) ; + map.addAttribute("sessionConfig", AutomaticServiceDist.initSessionConfig(super.getOrgi(request))) ; map.addAttribute("qualityList", qualityRes.findByQualitytypeAndOrgi(MainContext.QualityType.CHAT.toString(), super.getOrgi(request))) ; map.addAttribute("tagList", tagRes.findByOrgiAndTagtype(super.getOrgi(request), MainContext.TagTypeEnum.QUALITY.toString())) ; return request(super.createAppsTempletResponse("/apps/quality/index")); @@ -90,7 +90,7 @@ public class AgentQualityController extends Handler{ if(tempList.size() > 0) { qualityRes.save(tempList) ; } - SessionConfig config = ServiceQuene.initSessionConfig(super.getOrgi(request)) ; + SessionConfig config = AutomaticServiceDist.initSessionConfig(super.getOrgi(request)) ; if(config!=null) { if("points".equals(request.getParameter("qualityscore"))) { config.setQualityscore("points"); diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/report/CubeController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/report/CubeController.java index 4d832192..709d1432 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/report/CubeController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/report/CubeController.java @@ -22,7 +22,7 @@ import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.util.Menu; import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang.StringUtils; @@ -33,14 +33,14 @@ import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.app.service.repository.CubeLevelRepository; -import com.chatopera.cc.app.service.repository.CubeMeasureRepository; -import com.chatopera.cc.app.service.repository.CubeMetadataRepository; -import com.chatopera.cc.app.service.repository.CubeRepository; -import com.chatopera.cc.app.service.repository.CubeTypeRepository; -import com.chatopera.cc.app.service.repository.DimensionRepository; -import com.chatopera.cc.app.service.repository.MetadataRepository; -import com.chatopera.cc.app.service.repository.PublishedCubeRepository; +import com.chatopera.cc.app.persistence.repository.CubeLevelRepository; +import com.chatopera.cc.app.persistence.repository.CubeMeasureRepository; +import com.chatopera.cc.app.persistence.repository.CubeMetadataRepository; +import com.chatopera.cc.app.persistence.repository.CubeRepository; +import com.chatopera.cc.app.persistence.repository.CubeTypeRepository; +import com.chatopera.cc.app.persistence.repository.DimensionRepository; +import com.chatopera.cc.app.persistence.repository.MetadataRepository; +import com.chatopera.cc.app.persistence.repository.PublishedCubeRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.Cube; import com.chatopera.cc.app.model.CubeMeasure; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/report/CubeLevelController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/report/CubeLevelController.java index 3dc4f0e7..9fc5405c 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/report/CubeLevelController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/report/CubeLevelController.java @@ -21,8 +21,8 @@ import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; -import com.chatopera.cc.app.service.repository.CubeMetadataRepository; -import com.chatopera.cc.app.service.repository.DimensionRepository; +import com.chatopera.cc.app.persistence.repository.CubeMetadataRepository; +import com.chatopera.cc.app.persistence.repository.DimensionRepository; import com.chatopera.cc.app.model.Dimension; import com.chatopera.cc.app.model.TableProperties; import org.apache.commons.lang.StringUtils; @@ -33,8 +33,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.repository.CubeLevelRepository; -import com.chatopera.cc.app.service.repository.TablePropertiesRepository; +import com.chatopera.cc.app.persistence.repository.CubeLevelRepository; +import com.chatopera.cc.app.persistence.repository.TablePropertiesRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.CubeLevel; import com.chatopera.cc.app.model.CubeMetadata; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/report/CubeMeasureController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/report/CubeMeasureController.java index 9c079460..5f0ce547 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/report/CubeMeasureController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/report/CubeMeasureController.java @@ -22,9 +22,9 @@ import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.repository.CubeMeasureRepository; -import com.chatopera.cc.app.service.repository.CubeMetadataRepository; -import com.chatopera.cc.app.service.repository.TablePropertiesRepository; +import com.chatopera.cc.app.persistence.repository.CubeMeasureRepository; +import com.chatopera.cc.app.persistence.repository.CubeMetadataRepository; +import com.chatopera.cc.app.persistence.repository.TablePropertiesRepository; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/report/DimensionController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/report/DimensionController.java index 16a735e4..81e169ea 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/report/DimensionController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/report/DimensionController.java @@ -22,9 +22,9 @@ import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.repository.CubeMetadataRepository; -import com.chatopera.cc.app.service.repository.DimensionRepository; -import com.chatopera.cc.app.service.repository.TablePropertiesRepository; +import com.chatopera.cc.app.persistence.repository.CubeMetadataRepository; +import com.chatopera.cc.app.persistence.repository.DimensionRepository; +import com.chatopera.cc.app.persistence.repository.TablePropertiesRepository; import com.chatopera.cc.app.model.Dimension; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -33,7 +33,7 @@ import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.app.service.repository.CubeLevelRepository; +import com.chatopera.cc.app.persistence.repository.CubeLevelRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.CubeLevel; import com.chatopera.cc.app.model.CubeMetadata; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/report/ReportController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/report/ReportController.java index 2069b1b2..8b796c77 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/report/ReportController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/report/ReportController.java @@ -30,10 +30,10 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.app.service.repository.PublishedReportRepository; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.persistence.repository.PublishedReportRepository; import com.chatopera.cc.app.model.ReportFilter; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; import org.apache.commons.io.FileUtils; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -47,14 +47,14 @@ import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.util.task.DSData; -import com.chatopera.cc.util.task.DSDataEvent; -import com.chatopera.cc.util.task.ExcelImportProecess; -import com.chatopera.cc.util.task.export.ExcelExporterProcess; -import com.chatopera.cc.app.service.repository.DataDicRepository; -import com.chatopera.cc.app.service.repository.MetadataRepository; -import com.chatopera.cc.app.service.repository.ReportCubeService; -import com.chatopera.cc.app.service.repository.ReportRepository; +import com.chatopera.cc.concurrent.dsdata.DSData; +import com.chatopera.cc.concurrent.dsdata.DSDataEvent; +import com.chatopera.cc.concurrent.dsdata.ExcelImportProecess; +import com.chatopera.cc.concurrent.dsdata.export.ExcelExporterProcess; +import com.chatopera.cc.app.persistence.repository.DataDicRepository; +import com.chatopera.cc.app.persistence.repository.MetadataRepository; +import com.chatopera.cc.app.persistence.repository.ReportCubeService; +import com.chatopera.cc.app.persistence.repository.ReportRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.DataDic; import com.chatopera.cc.app.model.MetadataTable; @@ -270,8 +270,8 @@ public class ReportController extends Handler{ } event.getValues().put("type", MainContext.QuickTypeEnum.PUB.toString()) ; event.getValues().put("creater", super.getUser(request).getId()) ; -// event.getDSData().setProcess(new QuickReplyProcess(reportRes)); -// reporterRes.save(event.getDSData().getReport()) ; +// exchange.getDSData().setProcess(new QuickReplyProcess(reportRes)); +// reporterRes.save(exchange.getDSData().getReport()) ; new ExcelImportProecess(event).process() ; //启动导入任务 } diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/report/ReportDesignController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/report/ReportDesignController.java index 3a39e20b..71bf141e 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/report/ReportDesignController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/report/ReportDesignController.java @@ -25,8 +25,8 @@ import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.util.Menu; import com.chatopera.cc.util.bi.ReportData; import org.apache.commons.codec.binary.Base64; @@ -39,17 +39,17 @@ import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.app.service.repository.ColumnPropertiesRepository; -import com.chatopera.cc.app.service.repository.MetadataRepository; -import com.chatopera.cc.app.service.repository.PublishedCubeRepository; -import com.chatopera.cc.app.service.repository.PublishedReportRepository; -import com.chatopera.cc.app.service.repository.ReportCubeService; -import com.chatopera.cc.app.service.repository.ReportFilterRepository; -import com.chatopera.cc.app.service.repository.ReportModelRepository; -import com.chatopera.cc.app.service.repository.ReportRepository; -import com.chatopera.cc.app.service.repository.SysDicRepository; -import com.chatopera.cc.app.service.repository.TablePropertiesRepository; -import com.chatopera.cc.app.service.repository.TemplateRepository; +import com.chatopera.cc.app.persistence.repository.ColumnPropertiesRepository; +import com.chatopera.cc.app.persistence.repository.MetadataRepository; +import com.chatopera.cc.app.persistence.repository.PublishedCubeRepository; +import com.chatopera.cc.app.persistence.repository.PublishedReportRepository; +import com.chatopera.cc.app.persistence.repository.ReportCubeService; +import com.chatopera.cc.app.persistence.repository.ReportFilterRepository; +import com.chatopera.cc.app.persistence.repository.ReportModelRepository; +import com.chatopera.cc.app.persistence.repository.ReportRepository; +import com.chatopera.cc.app.persistence.repository.SysDicRepository; +import com.chatopera.cc.app.persistence.repository.TablePropertiesRepository; +import com.chatopera.cc.app.persistence.repository.TemplateRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.ChartProperties; import com.chatopera.cc.app.model.ColumnProperties; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/report/ReportViewController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/report/ReportViewController.java index 880230d4..bc2f018f 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/report/ReportViewController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/report/ReportViewController.java @@ -23,7 +23,7 @@ import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; -import com.chatopera.cc.app.service.repository.PublishedReportRepository; +import com.chatopera.cc.app.persistence.repository.PublishedReportRepository; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -35,8 +35,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.repository.DataDicRepository; -import com.chatopera.cc.app.service.repository.ReportCubeService; +import com.chatopera.cc.app.persistence.repository.DataDicRepository; +import com.chatopera.cc.app.persistence.repository.ReportCubeService; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.PublishedReport; import com.chatopera.cc.app.model.ReportFilter; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/service/AgentSummaryController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/service/AgentSummaryController.java index 722b0532..2b7585c6 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/service/AgentSummaryController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/service/AgentSummaryController.java @@ -33,14 +33,14 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.util.task.export.ExcelExporterProcess; -import com.chatopera.cc.app.service.es.ContactsRepository; -import com.chatopera.cc.app.service.repository.AgentServiceRepository; -import com.chatopera.cc.app.service.repository.ServiceSummaryRepository; -import com.chatopera.cc.app.service.repository.TagRepository; +import com.chatopera.cc.concurrent.dsdata.export.ExcelExporterProcess; +import com.chatopera.cc.app.persistence.es.ContactsRepository; +import com.chatopera.cc.app.persistence.repository.AgentServiceRepository; +import com.chatopera.cc.app.persistence.repository.ServiceSummaryRepository; +import com.chatopera.cc.app.persistence.repository.TagRepository; import com.chatopera.cc.app.model.AgentServiceSummary; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -53,7 +53,7 @@ import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.app.service.repository.MetadataRepository; +import com.chatopera.cc.app.persistence.repository.MetadataRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.AgentService; import com.chatopera.cc.app.model.Contacts; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/service/ChatServiceController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/service/ChatServiceController.java index 943a76c8..5e8497b7 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/service/ChatServiceController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/service/ChatServiceController.java @@ -28,13 +28,13 @@ import javax.persistence.criteria.Root; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.IP; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.util.Menu; import com.chatopera.cc.app.im.client.NettyClients; -import com.chatopera.cc.app.service.acd.ServiceQuene; -import com.chatopera.cc.app.service.cache.CacheHelper; +import com.chatopera.cc.app.algorithm.AutomaticServiceDist; +import com.chatopera.cc.app.cache.CacheHelper; import com.chatopera.cc.util.OnlineUserUtils; import com.chatopera.cc.app.handler.Handler; import org.apache.commons.lang3.StringUtils; @@ -48,13 +48,13 @@ import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.app.service.repository.AgentServiceRepository; -import com.chatopera.cc.app.service.repository.AgentStatusRepository; -import com.chatopera.cc.app.service.repository.AgentUserRepository; -import com.chatopera.cc.app.service.repository.LeaveMsgRepository; -import com.chatopera.cc.app.service.repository.OrganRepository; -import com.chatopera.cc.app.service.repository.OrgiSkillRelRepository; -import com.chatopera.cc.app.service.repository.UserRepository; +import com.chatopera.cc.app.persistence.repository.AgentServiceRepository; +import com.chatopera.cc.app.persistence.repository.AgentStatusRepository; +import com.chatopera.cc.app.persistence.repository.AgentUserRepository; +import com.chatopera.cc.app.persistence.repository.LeaveMsgRepository; +import com.chatopera.cc.app.persistence.repository.OrganRepository; +import com.chatopera.cc.app.persistence.repository.OrgiSkillRelRepository; +import com.chatopera.cc.app.persistence.repository.UserRepository; import com.chatopera.cc.app.model.AgentService; import com.chatopera.cc.app.model.AgentStatus; import com.chatopera.cc.app.model.AgentUser; @@ -163,7 +163,7 @@ public class ChatServiceController extends Handler { currentOrgan = skillList.get(0).getId(); } } - List agentStatusList = ServiceQuene.getAgentStatus(null , super.getOrgi(request)); + List agentStatusList = AutomaticServiceDist.getAgentStatus(null , super.getOrgi(request)); List usersids = new ArrayList(); if(!agentStatusList.isEmpty()) { for(AgentStatus agentStatus:agentStatusList) { @@ -203,12 +203,12 @@ public class ChatServiceController extends Handler { AgentStatus agentStatus = (AgentStatus) CacheHelper.getAgentStatusCacheBean().getCacheObject(super.getUser(request).getId(), super.getOrgi(request)) ; if(agentStatus!=null){ - ServiceQuene.updateAgentStatus(agentStatus, agentUser, super.getOrgi(request), false); + AutomaticServiceDist.updateAgentStatus(agentStatus, agentUser, super.getOrgi(request), false); } AgentStatus transAgentStatus = (AgentStatus) CacheHelper.getAgentStatusCacheBean().getCacheObject(agentno, super.getOrgi(request)) ; if(transAgentStatus!=null){ - ServiceQuene.updateAgentStatus(transAgentStatus, agentUser, super.getOrgi(request), true); + AutomaticServiceDist.updateAgentStatus(transAgentStatus, agentUser, super.getOrgi(request), true); agentService.setAgentno(agentno); agentService.setAgentusername(transAgentStatus.getUsername()); } @@ -245,7 +245,7 @@ public class ChatServiceController extends Handler { User user = super.getUser(request); AgentUser agentUser = agentUserRepository.findByIdAndOrgi(agentService.getAgentuserid(), super.getOrgi(request)); if(agentUser!=null){ - ServiceQuene.deleteAgentUser(agentUser, user.getOrgi()); + AutomaticServiceDist.deleteAgentUser(agentUser, user.getOrgi()); } agentService.setStatus(MainContext.AgentUserStatusEnum.END.toString()); agentServiceRes.save(agentService) ; @@ -276,7 +276,7 @@ public class ChatServiceController extends Handler { @RequestMapping("/quene/index") - @Menu(type = "service" , subtype = "quene" , admin= true) + @Menu(type = "service" , subtype = "filter" , admin= true) public ModelAndView quene(ModelMap map , HttpServletRequest request) { Page agentUserList = agentUserRes.findByOrgiAndStatus(super.getOrgi(request), MainContext.AgentUserStatusEnum.INQUENE.toString() ,new PageRequest(super.getP(request), super.getPs(request), Direction.DESC , "createtime")) ; List skillList = new ArrayList(); @@ -300,7 +300,7 @@ public class ChatServiceController extends Handler { } } map.put("agentUserList", agentUserList) ; - return request(super.createAppsTempletResponse("/apps/service/quene/index")); + return request(super.createAppsTempletResponse("/apps/service/filter/index")); } @RequestMapping("/quene/clean") @@ -312,9 +312,9 @@ public class ChatServiceController extends Handler { agentUser.setSkill(null); agentUserRes.save(agentUser) ; CacheHelper.getAgentUserCacheBean().put(agentUser.getUserid(), agentUser, super.getOrgi(request)); - ServiceQuene.allotAgent(agentUser, super.getOrgi(request)) ; + AutomaticServiceDist.allotAgent(agentUser, super.getOrgi(request)) ; } - return request(super.createRequestPageTempletResponse("redirect:/service/quene/index.html")); + return request(super.createRequestPageTempletResponse("redirect:/service/filter/index.html")); } @RequestMapping("/quene/invite") @@ -322,9 +322,9 @@ public class ChatServiceController extends Handler { public ModelAndView invite(ModelMap map , HttpServletRequest request ,@Valid String id) throws Exception { AgentUser agentUser = agentUserRes.findByIdAndOrgi(id, super.getOrgi(request)) ; if(agentUser!=null && agentUser.getStatus().equals(MainContext.AgentUserStatusEnum.INQUENE.toString())){ - ServiceQuene.allotAgentForInvite(super.getUser(request).getId() , agentUser, super.getOrgi(request)) ; + AutomaticServiceDist.allotAgentForInvite(super.getUser(request).getId() , agentUser, super.getOrgi(request)) ; } - return request(super.createRequestPageTempletResponse("redirect:/service/quene/index.html")); + return request(super.createRequestPageTempletResponse("redirect:/service/filter/index.html")); } @RequestMapping("/agent/index") @@ -375,7 +375,7 @@ public class ChatServiceController extends Handler { agentStatusRepository.delete(agentStatus); } CacheHelper.getAgentStatusCacheBean().delete(agentStatus.getAgentno(), super.getOrgi(request));; - ServiceQuene.publishMessage(super.getOrgi(request) , "agent" , "offline" , super.getUser(request).getId()); + AutomaticServiceDist.publishMessage(super.getOrgi(request) , "agent" , "offline" , super.getUser(request).getId()); return request(super.createRequestPageTempletResponse("redirect:/service/agent/index.html")); diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/service/CommentController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/service/CommentController.java index 60467777..afb523e8 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/service/CommentController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/service/CommentController.java @@ -20,7 +20,7 @@ import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.repository.AgentServiceRepository; +import com.chatopera.cc.app.persistence.repository.AgentServiceRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/service/OnlineUserController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/service/OnlineUserController.java index b6496dd9..ed3621f7 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/service/OnlineUserController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/service/OnlineUserController.java @@ -21,10 +21,10 @@ import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.es.ContactsRepository; -import com.chatopera.cc.app.service.impl.AgentUserService; +import com.chatopera.cc.app.persistence.es.ContactsRepository; +import com.chatopera.cc.app.persistence.impl.AgentUserService; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.AgentServiceSummary; import com.chatopera.cc.app.model.AgentUser; @@ -39,17 +39,17 @@ import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.app.MainUtils; -import com.chatopera.cc.app.service.repository.AgentServiceRepository; -import com.chatopera.cc.app.service.repository.AgentUserContactsRepository; -import com.chatopera.cc.app.service.repository.ChatMessageRepository; -import com.chatopera.cc.app.service.repository.OnlineUserHisRepository; -import com.chatopera.cc.app.service.repository.OnlineUserRepository; -import com.chatopera.cc.app.service.repository.ServiceSummaryRepository; -import com.chatopera.cc.app.service.repository.TagRelationRepository; -import com.chatopera.cc.app.service.repository.TagRepository; -import com.chatopera.cc.app.service.repository.UserEventRepository; -import com.chatopera.cc.app.service.repository.WeiXinUserRepository; +import com.chatopera.cc.app.basic.MainUtils; +import com.chatopera.cc.app.persistence.repository.AgentServiceRepository; +import com.chatopera.cc.app.persistence.repository.AgentUserContactsRepository; +import com.chatopera.cc.app.persistence.repository.ChatMessageRepository; +import com.chatopera.cc.app.persistence.repository.OnlineUserHisRepository; +import com.chatopera.cc.app.persistence.repository.OnlineUserRepository; +import com.chatopera.cc.app.persistence.repository.ServiceSummaryRepository; +import com.chatopera.cc.app.persistence.repository.TagRelationRepository; +import com.chatopera.cc.app.persistence.repository.TagRepository; +import com.chatopera.cc.app.persistence.repository.UserEventRepository; +import com.chatopera.cc.app.persistence.repository.WeiXinUserRepository; import com.chatopera.cc.app.model.AgentService; import com.chatopera.cc.app.model.WeiXinUser; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/service/ProcessedSummaryController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/service/ProcessedSummaryController.java index 9adb84d6..fc095a1f 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/service/ProcessedSummaryController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/service/ProcessedSummaryController.java @@ -32,8 +32,8 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.basic.MainUtils; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; @@ -46,12 +46,12 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.util.task.export.ExcelExporterProcess; -import com.chatopera.cc.app.service.es.ContactsRepository; -import com.chatopera.cc.app.service.repository.AgentServiceRepository; -import com.chatopera.cc.app.service.repository.MetadataRepository; -import com.chatopera.cc.app.service.repository.ServiceSummaryRepository; -import com.chatopera.cc.app.service.repository.TagRepository; +import com.chatopera.cc.concurrent.dsdata.export.ExcelExporterProcess; +import com.chatopera.cc.app.persistence.es.ContactsRepository; +import com.chatopera.cc.app.persistence.repository.AgentServiceRepository; +import com.chatopera.cc.app.persistence.repository.MetadataRepository; +import com.chatopera.cc.app.persistence.repository.ServiceSummaryRepository; +import com.chatopera.cc.app.persistence.repository.TagRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.AgentService; import com.chatopera.cc.app.model.AgentServiceSummary; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/service/StatsController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/service/StatsController.java index 6a9b5a14..06247668 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/service/StatsController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/service/StatsController.java @@ -25,9 +25,9 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.bi.ReportData; -import com.chatopera.cc.app.service.repository.DataSourceService; +import com.chatopera.cc.app.persistence.repository.DataSourceService; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -37,10 +37,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.util.bi.UKExcelUtil; import com.chatopera.cc.util.bi.model.Level; -import com.chatopera.cc.app.service.repository.CubeService; +import com.chatopera.cc.app.persistence.repository.CubeService; import com.chatopera.cc.util.OnlineUserUtils; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.SysDic; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/setting/IMAgentController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/setting/IMAgentController.java index ebc7ec1f..e7c6b97b 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/setting/IMAgentController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/setting/IMAgentController.java @@ -24,15 +24,15 @@ import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.acd.ServiceQuene; -import com.chatopera.cc.app.service.cache.CacheHelper; -import com.chatopera.cc.app.service.repository.AdTypeRepository; -import com.chatopera.cc.app.service.repository.SessionConfigRepository; -import com.chatopera.cc.app.service.repository.TagRepository; -import com.chatopera.cc.app.service.repository.TemplateRepository; +import com.chatopera.cc.app.algorithm.AutomaticServiceDist; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.persistence.repository.AdTypeRepository; +import com.chatopera.cc.app.persistence.repository.SessionConfigRepository; +import com.chatopera.cc.app.persistence.repository.TagRepository; +import com.chatopera.cc.app.persistence.repository.TemplateRepository; import com.chatopera.cc.app.model.AdType; import com.chatopera.cc.app.model.SysDic; import com.chatopera.cc.app.model.Tag; @@ -49,7 +49,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.app.service.repository.BlackListRepository; +import com.chatopera.cc.app.persistence.repository.BlackListRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.BlackEntity; import com.chatopera.cc.app.model.SessionConfig; @@ -124,7 +124,7 @@ public class IMAgentController extends Handler{ CacheHelper.getSystemCacheBean().delete(MainContext.SYSTEM_CACHE_SESSION_CONFIG_LIST , MainContext.SYSTEM_ORGI) ; - ServiceQuene.initSessionConfigList() ; + AutomaticServiceDist.initSessionConfigList() ; map.put("sessionConfig", tempSessionConfig) ; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/setting/QuickReplyController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/setting/QuickReplyController.java index 502a8098..62f4585b 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/setting/QuickReplyController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/setting/QuickReplyController.java @@ -29,18 +29,18 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.util.task.DSData; -import com.chatopera.cc.util.task.DSDataEvent; -import com.chatopera.cc.util.task.ExcelImportProecess; -import com.chatopera.cc.util.task.export.ExcelExporterProcess; -import com.chatopera.cc.util.task.process.QuickReplyProcess; -import com.chatopera.cc.app.service.es.QuickReplyRepository; -import com.chatopera.cc.app.service.repository.MetadataRepository; -import com.chatopera.cc.app.service.repository.QuickTypeRepository; -import com.chatopera.cc.app.service.repository.ReporterRepository; +import com.chatopera.cc.concurrent.dsdata.DSData; +import com.chatopera.cc.concurrent.dsdata.DSDataEvent; +import com.chatopera.cc.concurrent.dsdata.ExcelImportProecess; +import com.chatopera.cc.concurrent.dsdata.export.ExcelExporterProcess; +import com.chatopera.cc.concurrent.dsdata.process.QuickReplyProcess; +import com.chatopera.cc.app.persistence.es.QuickReplyRepository; +import com.chatopera.cc.app.persistence.repository.MetadataRepository; +import com.chatopera.cc.app.persistence.repository.QuickTypeRepository; +import com.chatopera.cc.app.persistence.repository.ReporterRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.MetadataTable; import com.chatopera.cc.app.model.QuickReply; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/tenant/TenantController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/tenant/TenantController.java index 09035c72..7769ff1d 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/tenant/TenantController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/tenant/TenantController.java @@ -30,10 +30,10 @@ import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.acd.ServiceQuene; -import com.chatopera.cc.app.service.cache.CacheHelper; +import com.chatopera.cc.app.algorithm.AutomaticServiceDist; +import com.chatopera.cc.app.cache.CacheHelper; import com.chatopera.cc.util.OnlineUserUtils; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -46,11 +46,11 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.app.service.repository.AgentUserRepository; -import com.chatopera.cc.app.service.repository.OrganRepository; -import com.chatopera.cc.app.service.repository.OrganizationRepository; -import com.chatopera.cc.app.service.repository.OrgiSkillRelRepository; -import com.chatopera.cc.app.service.repository.TenantRepository; +import com.chatopera.cc.app.persistence.repository.AgentUserRepository; +import com.chatopera.cc.app.persistence.repository.OrganRepository; +import com.chatopera.cc.app.persistence.repository.OrganizationRepository; +import com.chatopera.cc.app.persistence.repository.OrgiSkillRelRepository; +import com.chatopera.cc.app.persistence.repository.TenantRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.AgentStatus; import com.chatopera.cc.app.model.AgentUser; @@ -237,7 +237,7 @@ public class TenantController extends Handler{ public ModelAndView canswitch(HttpServletRequest request ,@Valid Tenant tenant) throws UnsupportedEncodingException { ModelAndView view = request(super.createRequestPageTempletResponse("redirect:/")); AgentStatus agentStatus = (AgentStatus) CacheHelper.getAgentStatusCacheBean().getCacheObject((super.getUser(request)).getId(), super.getOrgi(request)); - if(agentStatus==null && ServiceQuene.getAgentUsers(super.getUser(request).getId(), super.getOrgi(request))==0) { + if(agentStatus==null && AutomaticServiceDist.getAgentUsers(super.getUser(request).getId(), super.getOrgi(request))==0) { Tenant temp = tenantRes.findById(tenant.getId()) ; if(temp!=null) { super.getUser(request).setOrgi(temp.getId()); @@ -278,7 +278,7 @@ public class TenantController extends Handler{ public ModelAndView switchTenant(HttpServletRequest request ,@Valid Tenant tenant) { ModelAndView view = request(super.createRequestPageTempletResponse("redirect:/")); AgentStatus agentStatus = (AgentStatus)CacheHelper.getAgentStatusCacheBean().getCacheObject((super.getUser(request)).getId(), super.getOrgi(request)); - if(agentStatus==null && ServiceQuene.getAgentUsers(super.getUser(request).getId(), super.getOrgi(request))==0) { + if(agentStatus==null && AutomaticServiceDist.getAgentUsers(super.getUser(request).getId(), super.getOrgi(request))==0) { Tenant temp = tenantRes.findById(tenant.getId()) ; if(temp!=null) { super.getUser(request).setOrgi(temp.getId()); diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/test/TestController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/test/TestController.java index 269c039c..f5da9d6c 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/test/TestController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/apps/test/TestController.java @@ -18,8 +18,8 @@ package com.chatopera.cc.app.handler.apps.test; import javax.servlet.http.HttpServletRequest; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.util.Menu; import com.chatopera.cc.util.OnlineUserUtils; import com.chatopera.cc.app.handler.Handler; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/resource/CallAgentResourceController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/resource/CallAgentResourceController.java index 94f4a5b2..40d27186 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/resource/CallAgentResourceController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/resource/CallAgentResourceController.java @@ -27,9 +27,9 @@ import javax.persistence.criteria.Root; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.repository.UserRepository; +import com.chatopera.cc.app.persistence.repository.UserRepository; import com.chatopera.cc.util.CallCenterUtils; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.User; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/resource/ContactsResourceController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/resource/ContactsResourceController.java index 3fa92d38..28e19f15 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/resource/ContactsResourceController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/resource/ContactsResourceController.java @@ -27,7 +27,7 @@ import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.app.service.es.ContactsRepository; +import com.chatopera.cc.app.persistence.es.ContactsRepository; import com.chatopera.cc.app.handler.Handler; @Controller diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/resource/MediaController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/resource/MediaController.java index 99dbe4a3..b65f9f1c 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/resource/MediaController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/resource/MediaController.java @@ -39,8 +39,8 @@ import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.MainUtils; -import com.chatopera.cc.app.service.repository.AttachmentRepository; +import com.chatopera.cc.app.basic.MainUtils; +import com.chatopera.cc.app.persistence.repository.AttachmentRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.AttachmentFile; import com.chatopera.cc.app.model.UploadStatus; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/resource/UsersResourceController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/resource/UsersResourceController.java index ddc21327..96fd5bb9 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/resource/UsersResourceController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/resource/UsersResourceController.java @@ -23,8 +23,8 @@ import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.repository.OrganRepository; -import com.chatopera.cc.app.service.repository.OrgiSkillRelRepository; +import com.chatopera.cc.app.persistence.repository.OrganRepository; +import com.chatopera.cc.app.persistence.repository.OrgiSkillRelRepository; import com.chatopera.cc.app.model.OrgiSkillRel; import com.chatopera.cc.app.model.User; import org.springframework.beans.factory.annotation.Autowired; @@ -35,7 +35,7 @@ import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.app.service.repository.UserRepository; +import com.chatopera.cc.app.persistence.repository.UserRepository; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.Organ; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/im/ServerRunner.java b/contact-center/app/src/main/java/com/chatopera/cc/app/im/ServerRunner.java index cfa020d4..efb6c682 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/im/ServerRunner.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/im/ServerRunner.java @@ -16,7 +16,7 @@ */ package com.chatopera.cc.app.im; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.app.im.handler.AgentEventHandler; import com.chatopera.cc.app.im.handler.EntIMEventHandler; import com.chatopera.cc.app.im.handler.IMEventHandler; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/im/client/NettyAgentClient.java b/contact-center/app/src/main/java/com/chatopera/cc/app/im/client/NettyAgentClient.java index 9ce91ce1..5bb584c0 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/im/client/NettyAgentClient.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/im/client/NettyAgentClient.java @@ -20,7 +20,7 @@ import java.util.List; import com.corundumstudio.socketio.SocketIOClient; import com.google.common.collect.ArrayListMultimap; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; public class NettyAgentClient implements NettyClient{ diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/im/client/NettyCallCenterClient.java b/contact-center/app/src/main/java/com/chatopera/cc/app/im/client/NettyCallCenterClient.java index 88b0e7cb..8016339e 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/im/client/NettyCallCenterClient.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/im/client/NettyCallCenterClient.java @@ -18,7 +18,7 @@ package com.chatopera.cc.app.im.client; import java.util.List; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; import com.corundumstudio.socketio.SocketIOClient; import com.google.common.collect.ArrayListMultimap; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/im/client/NettyCalloutClient.java b/contact-center/app/src/main/java/com/chatopera/cc/app/im/client/NettyCalloutClient.java index 05226c1c..f911e10f 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/im/client/NettyCalloutClient.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/im/client/NettyCalloutClient.java @@ -15,7 +15,7 @@ */ package com.chatopera.cc.app.im.client; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; import com.corundumstudio.socketio.SocketIOClient; import com.google.common.collect.ArrayListMultimap; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/im/client/NettyChatbotClient.java b/contact-center/app/src/main/java/com/chatopera/cc/app/im/client/NettyChatbotClient.java index 4b128da4..39e89d43 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/im/client/NettyChatbotClient.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/im/client/NettyChatbotClient.java @@ -15,7 +15,7 @@ */ package com.chatopera.cc.app.im.client; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; import com.corundumstudio.socketio.SocketIOClient; import com.google.common.collect.ArrayListMultimap; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/im/client/NettyClients.java b/contact-center/app/src/main/java/com/chatopera/cc/app/im/client/NettyClients.java index 05e466bf..b45af141 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/im/client/NettyClients.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/im/client/NettyClients.java @@ -19,7 +19,7 @@ package com.chatopera.cc.app.im.client; import java.util.List; import com.corundumstudio.socketio.SocketIOClient; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/im/client/NettyIMClient.java b/contact-center/app/src/main/java/com/chatopera/cc/app/im/client/NettyIMClient.java index 65e07487..07cace39 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/im/client/NettyIMClient.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/im/client/NettyIMClient.java @@ -20,7 +20,7 @@ import java.util.List; import com.corundumstudio.socketio.SocketIOClient; import com.google.common.collect.ArrayListMultimap; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; public class NettyIMClient implements NettyClient{ diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/im/handler/AgentEventHandler.java b/contact-center/app/src/main/java/com/chatopera/cc/app/im/handler/AgentEventHandler.java index ec454fd5..f18ed5c5 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/im/handler/AgentEventHandler.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/im/handler/AgentEventHandler.java @@ -20,11 +20,11 @@ import java.net.InetSocketAddress; import java.util.Date; import java.util.List; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.algorithm.AutomaticServiceDist; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.app.im.client.NettyClients; -import com.chatopera.cc.app.service.acd.ServiceQuene; -import com.chatopera.cc.app.service.cache.CacheHelper; +import com.chatopera.cc.app.cache.CacheHelper; import com.chatopera.cc.app.im.router.OutMessageRouter; import com.chatopera.cc.app.im.message.AgentServiceMessage; import com.chatopera.cc.app.im.message.AgentStatusMessage; @@ -38,11 +38,11 @@ import com.corundumstudio.socketio.SocketIOServer; import com.corundumstudio.socketio.annotation.OnConnect; import com.corundumstudio.socketio.annotation.OnDisconnect; import com.corundumstudio.socketio.annotation.OnEvent; -import com.chatopera.cc.app.service.repository.AgentStatusRepository; -import com.chatopera.cc.app.service.repository.AgentUserRepository; -import com.chatopera.cc.app.service.repository.AgentUserTaskRepository; -import com.chatopera.cc.app.service.repository.ChatMessageRepository; -import com.chatopera.cc.app.service.repository.WorkSessionRepository; +import com.chatopera.cc.app.persistence.repository.AgentStatusRepository; +import com.chatopera.cc.app.persistence.repository.AgentUserRepository; +import com.chatopera.cc.app.persistence.repository.AgentUserTaskRepository; +import com.chatopera.cc.app.persistence.repository.ChatMessageRepository; +import com.chatopera.cc.app.persistence.repository.WorkSessionRepository; import com.chatopera.cc.app.model.AgentStatus; import com.chatopera.cc.app.model.AgentUser; import com.chatopera.cc.app.model.AgentUserTask; @@ -99,7 +99,7 @@ public class AgentEventHandler String orgi = client.getHandshakeData().getSingleUrlParam("orgi") ; String admin = client.getHandshakeData().getSingleUrlParam("admin") ; if(!StringUtils.isBlank(user)){ - ServiceQuene.deleteAgentStatus(user, orgi, !StringUtils.isBlank(admin) && admin.equals("true")); + AutomaticServiceDist.deleteAgentStatus(user, orgi, !StringUtils.isBlank(admin) && admin.equals("true")); NettyClients.getInstance().removeAgentEventClient(user , MainUtils.getContextID(client.getSessionId().toString())); WorkSessionRepository workSessionRepository = MainContext.getContext().getBean(WorkSessionRepository.class) ; @@ -158,7 +158,7 @@ public class AgentEventHandler if(agentUser == null){ agentUser = MainContext.getContext().getBean(AgentUserRepository.class).findByIdAndOrgi(data.getTouser() , data.getOrgi()) ; try { - ServiceQuene.serviceFinish(agentUser, data.getOrgi()); + AutomaticServiceDist.serviceFinish(agentUser, data.getOrgi()); } catch (Exception e) { e.printStackTrace(); } diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/im/handler/CalloutEventHandler.java b/contact-center/app/src/main/java/com/chatopera/cc/app/im/handler/CalloutEventHandler.java index cbbab49f..aed2980a 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/im/handler/CalloutEventHandler.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/im/handler/CalloutEventHandler.java @@ -16,7 +16,7 @@ package com.chatopera.cc.app.im.handler; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.app.im.client.NettyClients; import com.corundumstudio.socketio.SocketIOClient; import com.corundumstudio.socketio.SocketIOServer; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/im/handler/ChatbotEventHandler.java b/contact-center/app/src/main/java/com/chatopera/cc/app/im/handler/ChatbotEventHandler.java index 35fa944c..c7f206d0 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/im/handler/ChatbotEventHandler.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/im/handler/ChatbotEventHandler.java @@ -15,19 +15,19 @@ */ package com.chatopera.cc.app.im.handler; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.algorithm.AutomaticServiceDist; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.im.util.ChatbotUtils; import com.chatopera.cc.util.IP; import com.chatopera.cc.util.IPTools; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.app.im.client.NettyClients; import com.chatopera.cc.app.model.*; -import com.chatopera.cc.app.service.acd.ServiceQuene; -import com.chatopera.cc.app.service.cache.CacheHelper; -import com.chatopera.cc.app.service.repository.AgentUserRepository; -import com.chatopera.cc.app.service.repository.ConsultInviteRepository; -import com.chatopera.cc.app.service.repository.OnlineUserRepository; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.persistence.repository.AgentUserRepository; +import com.chatopera.cc.app.persistence.repository.ConsultInviteRepository; +import com.chatopera.cc.app.persistence.repository.OnlineUserRepository; import com.chatopera.cc.app.im.router.OutMessageRouter; -import com.chatopera.cc.util.MessageUtils; import com.chatopera.cc.util.OnlineUserUtils; import com.chatopera.cc.app.im.message.AgentStatusMessage; import com.chatopera.cc.app.im.message.ChatMessage; @@ -142,7 +142,7 @@ public class ChatbotEventHandler { agentUser.setCity(onlineUser.getCity()); agentUser.setProvince(onlineUser.getProvince()); agentUser.setCountry(onlineUser.getCountry()); - AgentService agentService = ServiceQuene.processChatbotService(agentUser, orgi); + AgentService agentService = AutomaticServiceDist.processChatbotService(agentUser, orgi); agentUser.setAgentserviceid(agentService.getId()); getAgentUserRes().save(agentUser); @@ -165,7 +165,7 @@ public class ChatbotEventHandler { AgentUser agentUser = (AgentUser) CacheHelper.getAgentUserCacheBean().getCacheObject(user, orgi); OnlineUser onlineUser = (OnlineUser) CacheHelper.getOnlineUserCacheBean().getCacheObject(user, orgi); if (agentUser != null) { - ServiceQuene.processChatbotService(agentUser, orgi); + AutomaticServiceDist.processChatbotService(agentUser, orgi); CacheHelper.getAgentUserCacheBean().delete(user, MainContext.SYSTEM_ORGI); CacheHelper.getOnlineUserCacheBean().delete(user, orgi); agentUser.setStatus(MainContext.OnlineUserOperatorStatus.OFFLINE.toString()); @@ -227,7 +227,7 @@ public class ChatbotEventHandler { */ data.setContextid(agentUser.getAgentserviceid()); } - MessageOutContent outMessage = MessageUtils.createAiMessage(data, data.getAppid(), data.getChannel(), MainContext.CallTypeEnum.IN.toString(), MainContext.AiItemType.USERINPUT.toString(), MainContext.MediaTypeEnum.TEXT.toString(), data.getUserid()); + MessageOutContent outMessage = ChatbotUtils.createTextMessage(data, data.getAppid(), data.getChannel(), MainContext.CallTypeEnum.IN.toString(), MainContext.ChatbotItemType.USERINPUT.toString(), data.getUserid()); if (StringUtils.isNotBlank(data.getUserid()) && MainContext.MessageTypeEnum.MESSAGE.toString().equals(data.getType())) { if (!StringUtils.isBlank(data.getTouser())) { OutMessageRouter router = null; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/im/handler/EntIMEventHandler.java b/contact-center/app/src/main/java/com/chatopera/cc/app/im/handler/EntIMEventHandler.java index 946f47de..c5114b34 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/im/handler/EntIMEventHandler.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/im/handler/EntIMEventHandler.java @@ -18,8 +18,8 @@ package com.chatopera.cc.app.im.handler; import java.util.List; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.basic.MainUtils; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -30,9 +30,9 @@ import com.corundumstudio.socketio.annotation.OnConnect; import com.corundumstudio.socketio.annotation.OnDisconnect; import com.corundumstudio.socketio.annotation.OnEvent; import com.chatopera.cc.app.im.client.NettyClients; -import com.chatopera.cc.app.service.repository.ChatMessageRepository; -import com.chatopera.cc.app.service.repository.IMGroupUserRepository; -import com.chatopera.cc.app.service.repository.RecentUserRepository; +import com.chatopera.cc.app.persistence.repository.ChatMessageRepository; +import com.chatopera.cc.app.persistence.repository.IMGroupUserRepository; +import com.chatopera.cc.app.persistence.repository.RecentUserRepository; import com.chatopera.cc.app.im.message.ChatMessage; import com.chatopera.cc.app.model.IMGroupUser; import com.chatopera.cc.app.model.MessageOutContent; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/im/handler/IMEventHandler.java b/contact-center/app/src/main/java/com/chatopera/cc/app/im/handler/IMEventHandler.java index 815ffec0..f7a45e62 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/im/handler/IMEventHandler.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/im/handler/IMEventHandler.java @@ -21,10 +21,10 @@ import java.net.InetSocketAddress; import java.util.Date; import java.util.List; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.app.service.cache.CacheHelper; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.cache.CacheHelper; import com.chatopera.cc.app.im.message.ChatMessage; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -35,11 +35,11 @@ import com.corundumstudio.socketio.annotation.OnConnect; import com.corundumstudio.socketio.annotation.OnDisconnect; import com.corundumstudio.socketio.annotation.OnEvent; import com.chatopera.cc.app.im.client.NettyClients; -import com.chatopera.cc.app.service.acd.ServiceQuene; -import com.chatopera.cc.app.service.impl.AgentUserService; -import com.chatopera.cc.app.service.repository.AgentServiceRepository; -import com.chatopera.cc.app.service.repository.ConsultInviteRepository; -import com.chatopera.cc.util.MessageUtils; +import com.chatopera.cc.app.algorithm.AutomaticServiceDist; +import com.chatopera.cc.app.persistence.impl.AgentUserService; +import com.chatopera.cc.app.persistence.repository.AgentServiceRepository; +import com.chatopera.cc.app.persistence.repository.ConsultInviteRepository; +import com.chatopera.cc.app.im.util.HumanUtils; import com.chatopera.cc.util.OnlineUserUtils; import com.chatopera.cc.app.im.message.AgentStatusMessage; import com.chatopera.cc.app.im.message.NewRequestMessage; @@ -121,7 +121,7 @@ public class IMEventHandler /** * 用户主动断开服务 */ - ServiceQuene.serviceFinish((AgentUser) CacheHelper.getAgentUserCacheBean().getCacheObject(user, MainContext.SYSTEM_ORGI), orgi); + AutomaticServiceDist.serviceFinish((AgentUser) CacheHelper.getAgentUserCacheBean().getCacheObject(user, MainContext.SYSTEM_ORGI), orgi); } catch (Exception e) { e.printStackTrace(); } @@ -191,7 +191,6 @@ public class IMEventHandler * 处理表情 */ data.setMessage(MainUtils.processEmoti(data.getMessage())); - - MessageUtils.createMessage(data , MainContext.MediaTypeEnum.TEXT.toString(), data.getUserid()); + HumanUtils.createTextMessage(data, data.getUserid()); } } \ No newline at end of file diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/im/message/AgentServiceMessage.java b/contact-center/app/src/main/java/com/chatopera/cc/app/im/message/AgentServiceMessage.java index 2bc2d437..bdf1e265 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/im/message/AgentServiceMessage.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/im/message/AgentServiceMessage.java @@ -16,7 +16,7 @@ */ package com.chatopera.cc.app.im.message; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; public class AgentServiceMessage extends Message{ /** diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/im/message/AgentStatusMessage.java b/contact-center/app/src/main/java/com/chatopera/cc/app/im/message/AgentStatusMessage.java index ab30094a..449448ec 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/im/message/AgentStatusMessage.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/im/message/AgentStatusMessage.java @@ -16,7 +16,7 @@ */ package com.chatopera.cc.app.im.message; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; public class AgentStatusMessage extends Message{ /** diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/im/message/ChatMessage.java b/contact-center/app/src/main/java/com/chatopera/cc/app/im/message/ChatMessage.java index 5e268b0a..75f9c6af 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/im/message/ChatMessage.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/im/message/ChatMessage.java @@ -31,8 +31,8 @@ import javax.persistence.Transient; import org.apache.commons.lang3.StringUtils; import org.hibernate.annotations.GenericGenerator; -import com.chatopera.cc.app.MainUtils; -import com.chatopera.cc.event.UserEvent; +import com.chatopera.cc.app.basic.MainUtils; +import com.chatopera.cc.exchange.UserEvent; import com.chatopera.cc.util.OnlineUserUtils; @Entity diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/im/message/Message.java b/contact-center/app/src/main/java/com/chatopera/cc/app/im/message/Message.java index 69a25b86..b1f8131e 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/im/message/Message.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/im/message/Message.java @@ -16,7 +16,7 @@ */ package com.chatopera.cc.app.im.message; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; public abstract class Message implements java.io.Serializable{ diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/im/message/NewRequestMessage.java b/contact-center/app/src/main/java/com/chatopera/cc/app/im/message/NewRequestMessage.java index c414099d..67831373 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/im/message/NewRequestMessage.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/im/message/NewRequestMessage.java @@ -16,7 +16,7 @@ */ package com.chatopera.cc.app.im.message; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; public class NewRequestMessage extends Message{ /** diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/im/router/MessageRouter.java b/contact-center/app/src/main/java/com/chatopera/cc/app/im/router/MessageRouter.java index f61bfa65..8b174631 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/im/router/MessageRouter.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/im/router/MessageRouter.java @@ -16,10 +16,10 @@ */ package com.chatopera.cc.app.im.router; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.algorithm.AutomaticServiceDist; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.app.im.client.NettyClients; -import com.chatopera.cc.app.service.acd.ServiceQuene; import com.chatopera.cc.app.model.AgentService; import com.chatopera.cc.app.model.MessageDataBean; import com.chatopera.cc.app.model.MessageOutContent; @@ -42,9 +42,9 @@ public class MessageRouter extends Router{ */ if(outMessage.getAgentUser()!=null && outMessage.getAgentUser().getStatus()!=null){ if(outMessage.getAgentUser().getStatus().equals(MainContext.AgentUserStatusEnum.INQUENE.toString())){ - int queneIndex = ServiceQuene.getQueneIndex(inMessage.getAgentUser().getAgent() , inMessage.getOrgi(), inMessage.getAgentUser().getSkill()) ; + int queneIndex = AutomaticServiceDist.getQueneIndex(inMessage.getAgentUser().getAgent() , inMessage.getOrgi(), inMessage.getAgentUser().getSkill()) ; if(MainContext.AgentUserStatusEnum.INQUENE.toString().equals(outMessage.getAgentUser().getStatus())){ - outMessage.setMessage(ServiceQuene.getQueneMessage(queneIndex , outMessage.getAgentUser().getChannel(),inMessage.getOrgi())); + outMessage.setMessage(AutomaticServiceDist.getQueneMessage(queneIndex , outMessage.getAgentUser().getChannel(),inMessage.getOrgi())); } }else if(outMessage.getAgentUser().getStatus().equals(MainContext.AgentUserStatusEnum.INSERVICE.toString())){ @@ -54,15 +54,15 @@ public class MessageRouter extends Router{ * 找到空闲坐席,如果未找到坐席, 则将该用户放入到 排队队列 * */ - AgentService agentService = ServiceQuene.allotAgent(inMessage.getAgentUser(), inMessage.getOrgi()) ; + AgentService agentService = AutomaticServiceDist.allotAgent(inMessage.getAgentUser(), inMessage.getOrgi()) ; if(agentService!=null && MainContext.AgentUserStatusEnum.INSERVICE.toString().equals(agentService.getStatus())){ - outMessage.setMessage(ServiceQuene.getSuccessMessage(agentService , inMessage.getAgentUser().getChannel(),inMessage.getOrgi())); + outMessage.setMessage(AutomaticServiceDist.getSuccessMessage(agentService , inMessage.getAgentUser().getChannel(),inMessage.getOrgi())); NettyClients.getInstance().sendAgentEventMessage(agentService.getAgentno(), MainContext.MessageTypeEnum.NEW.toString(), inMessage.getAgentUser()); }else{ if(agentService.getQueneindex() > 0){ //当前有坐席 - outMessage.setMessage(ServiceQuene.getQueneMessage(agentService.getQueneindex(), inMessage.getAgentUser().getChannel(), inMessage.getOrgi())); + outMessage.setMessage(AutomaticServiceDist.getQueneMessage(agentService.getQueneindex(), inMessage.getAgentUser().getChannel(), inMessage.getOrgi())); }else{ - outMessage.setMessage(ServiceQuene.getNoAgentMessage(agentService.getQueneindex(), inMessage.getAgentUser().getChannel(), inMessage.getOrgi())); + outMessage.setMessage(AutomaticServiceDist.getNoAgentMessage(agentService.getQueneindex(), inMessage.getAgentUser().getChannel(), inMessage.getOrgi())); } } } diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/im/util/ChatbotUtils.java b/contact-center/app/src/main/java/com/chatopera/cc/app/im/util/ChatbotUtils.java new file mode 100644 index 00000000..36fc97e7 --- /dev/null +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/im/util/ChatbotUtils.java @@ -0,0 +1,148 @@ +/* + * Copyright (C) 2018 Chatopera Inc, + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.chatopera.cc.app.im.util; + +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.im.client.NettyClients; +import com.chatopera.cc.app.im.message.ChatMessage; +import com.chatopera.cc.app.model.AgentUser; +import com.chatopera.cc.app.model.MessageOutContent; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.persistence.repository.ChatMessageRepository; +import org.apache.commons.lang.StringUtils; + +import java.util.Arrays; +import java.util.HashSet; + +public class ChatbotUtils { + public static final HashSet VALID_LANGS = new HashSet(Arrays.asList(new String[]{"zh_CN", "en_US"})); + public static final String CHATBOT_FIRST = "机器人客服优先"; + public static final String HUMAN_FIRST = "人工客服优先"; + public static final HashSet VALID_WORKMODELS = new HashSet(Arrays.asList(new String[]{CHATBOT_FIRST, HUMAN_FIRST})); + + public static final String SNS_TYPE_WEBIM = "app"; + + + /** + * 使用snsid得到ChatbotID + * + * @param snsid + * @return + */ + public static String resolveChatbotIDWithSnsid(String snsid, String clientId) { + return (clientId + "_" + snsid).toLowerCase(); + } + + /** + * 使用chatbotID得到snsid + * + * @param chatbotID + * @return + */ + public static String resolveSnsidWithChatbotID(String chatbotID, String clientId) { + return StringUtils.remove(chatbotID, clientId.toLowerCase() + "_"); + } + + /** + * 发送聊天机器人消息 + * + * @param data + * @param appid + * @param channel + * @param direction + * @param chatype + * @param msgtype + * @param userid + * @return + */ + protected static MessageOutContent createMessage(ChatMessage data, String appid, String channel, String direction, String chatype, String msgtype, String userid) { + MessageOutContent outMessage = new MessageOutContent(); + + outMessage.setMessage(data.getMessage()); + outMessage.setMessageType(msgtype); + outMessage.setCalltype(direction); + outMessage.setAgentUser(null); + outMessage.setSnsAccount(null); + + { + data.setUserid(userid); + data.setUsername(data.getUsername()); + data.setTouser(userid); + + data.setAgentuser(userid); + + + data.setAgentserviceid(data.getContextid()); + data.setChatype(chatype); + + data.setChannel(channel); + + data.setAppid(data.getAppid()); + data.setOrgi(data.getOrgi()); + + data.setMsgtype(msgtype); + + data.setUsername(data.getUsername()); + data.setUsession(data.getUserid()); //agentUser作为 session id + data.setContextid(data.getContextid()); + data.setCalltype(direction); + + outMessage.setContextid(data.getContextid()); + outMessage.setFromUser(data.getUserid()); + outMessage.setToUser(data.getTouser()); + outMessage.setChannelMessage(data); + outMessage.setNickName(data.getUsername()); + outMessage.setCreatetime(data.getCreatetime()); + + if (!StringUtils.isBlank(data.getSuggestmsg())) { + outMessage.setSuggest(data.getSuggest()); + } + + data.setUpdatetime(System.currentTimeMillis()); + + /** + * 保存消息 + */ + if (MainContext.MessageTypeEnum.MESSAGE.toString().equals(data.getType())) { + MainContext.getContext().getBean(ChatMessageRepository.class).save(data); + } + AgentUser agentUser = (AgentUser) CacheHelper.getAgentUserCacheBean().getCacheObject(userid, MainContext.SYSTEM_ORGI); + if (agentUser != null && !StringUtils.isBlank(agentUser.getAgentno())) { + //将消息发送给 坐席 + + if (MainContext.CallTypeEnum.OUT.toString().equals(direction)) { + data.setUserid(agentUser.getAgentno()); + } + NettyClients.getInstance().sendAgentEventMessage(agentUser.getAgentno(), MainContext.MessageTypeEnum.MESSAGE.toString(), data); + } + } + return outMessage; + } + + /** + * 发送文字消息 + * @param data + * @param appid + * @param channel + * @param direction + * @param chatype + * @param userid + * @return + */ + public static MessageOutContent createTextMessage(ChatMessage data, String appid, String channel, String direction, String chatype, String userid) { + return createMessage(data, appid, channel, direction, chatype, MainContext.MediaTypeEnum.TEXT.toString(), userid); + } +} diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/im/util/HumanUtils.java b/contact-center/app/src/main/java/com/chatopera/cc/app/im/util/HumanUtils.java new file mode 100644 index 00000000..da4efde2 --- /dev/null +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/im/util/HumanUtils.java @@ -0,0 +1,223 @@ +/* + * Copyright (C) 2017 优客服-多渠道客服系统 + * Modifications copyright (C) 2018 Chatopera Inc, + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.chatopera.cc.app.im.util; + +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.im.client.NettyClients; +import com.chatopera.cc.app.im.message.ChatMessage; +import com.chatopera.cc.app.model.AgentUser; +import com.chatopera.cc.app.model.AgentUserTask; +import com.chatopera.cc.app.model.MessageOutContent; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.persistence.repository.AgentUserTaskRepository; +import com.chatopera.cc.app.persistence.repository.ChatMessageRepository; +import org.apache.commons.lang.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Date; + +public class HumanUtils { + private final static Logger logger = LoggerFactory.getLogger(HumanUtils.class); + + /** + * 发送文本消息 + * + * @param data + * @param userid + */ + public static void createTextMessage(ChatMessage data, String userid) { + createMessage(data, MainContext.MediaTypeEnum.TEXT.toString(), userid); + } + + /** + * 发送各种消息的底层方法 + * + * @param data + * @param msgtype + * @param userid + */ + protected static void createMessage(ChatMessage data, String msgtype, String userid) { + AgentUser agentUser = (AgentUser) CacheHelper.getAgentUserCacheBean().getCacheObject(userid, MainContext.SYSTEM_ORGI); + MessageOutContent outMessage = new MessageOutContent(); + + outMessage.setMessage(data.getMessage()); + outMessage.setFilename(data.getFilename()); + outMessage.setFilesize(data.getFilesize()); + + outMessage.setMessageType(msgtype); + outMessage.setCalltype(MainContext.CallTypeEnum.IN.toString()); + outMessage.setAgentUser(agentUser); + outMessage.setSnsAccount(null); + + MessageOutContent statusMessage = null; + if (agentUser == null) { + statusMessage = new MessageOutContent(); + statusMessage.setMessage(data.getMessage()); + statusMessage.setMessageType(MainContext.MessageTypeEnum.STATUS.toString()); + statusMessage.setCalltype(MainContext.CallTypeEnum.OUT.toString()); + statusMessage.setMessage("当前坐席全忙,请稍候"); + } else { + data.setUserid(agentUser.getUserid()); + data.setUsername(agentUser.getUsername()); + data.setTouser(agentUser.getAgentno()); + data.setAgentuser(agentUser.getId()); + data.setAgentserviceid(agentUser.getAgentserviceid()); + data.setAppid(agentUser.getAppid()); + data.setOrgi(agentUser.getOrgi()); + data.setMsgtype(msgtype); + data.setUsername(agentUser.getUsername()); + data.setUsession(agentUser.getUserid()); //agentUser作为 session id + data.setContextid(agentUser.getContextid()); + data.setCalltype(MainContext.CallTypeEnum.IN.toString()); + if (!StringUtils.isBlank(agentUser.getAgentno())) { + data.setTouser(agentUser.getAgentno()); + } + data.setChannel(agentUser.getChannel()); + + outMessage.setContextid(agentUser.getContextid()); + outMessage.setFromUser(data.getUserid()); + outMessage.setToUser(data.getTouser()); + outMessage.setChannelMessage(data); + outMessage.setNickName(agentUser.getUsername()); + outMessage.setCreatetime(data.getCreatetime()); + + if (data.getType() != null && data.getType().equals(MainContext.MessageTypeEnum.MESSAGE.toString())) { + AgentUserTaskRepository agentUserTaskRes = MainContext.getContext().getBean(AgentUserTaskRepository.class); + AgentUserTask agentUserTask = agentUserTaskRes.getOne(agentUser.getId()); + if (agentUserTask != null) { + if (agentUserTask.getLastgetmessage() != null && agentUserTask.getLastmessage() != null) { + data.setLastagentmsgtime(agentUserTask.getLastgetmessage()); + data.setLastmsgtime(agentUserTask.getLastmessage()); + data.setAgentreplyinterval((int) ((System.currentTimeMillis() - agentUserTask.getLastgetmessage().getTime()) / 1000)); //坐席上次回复消息的间隔 + data.setAgentreplytime((int) ((System.currentTimeMillis() - agentUserTask.getLastmessage().getTime()) / 1000)); //坐席回复消息花费时间 + } + agentUserTask.setUserasks(agentUserTask.getUserasks() + 1); //总咨询记录数量 + agentUserTask.setAgentreplytime(agentUserTask.getAgentreplytime() + data.getAgentreplyinterval()); //总时长 + if (agentUserTask.getUserasks() > 0) { + agentUserTask.setAvgreplytime(agentUserTask.getAgentreplytime() / agentUserTask.getUserasks()); + } + + agentUserTask.setLastmessage(new Date()); + agentUserTask.setWarnings("0"); + agentUserTask.setWarningtime(null); + + /** + * 去掉坐席超时回复消息提醒 + */ + agentUserTask.setReptime(null); + agentUserTask.setReptimes("0"); + + agentUserTask.setLastmsg(data.getMessage().length() > 100 ? data.getMessage().substring(0, 100) : data.getMessage()); + agentUserTask.setTokenum(agentUserTask.getTokenum() + 1); + data.setTokenum(agentUserTask.getTokenum()); + agentUserTaskRes.save(agentUserTask); + } + } + + /** + * 保存消息 + */ + if (MainContext.MessageTypeEnum.MESSAGE.toString().equals(data.getType())) { + MainContext.getContext().getBean(ChatMessageRepository.class).save(data); + } + } + if (StringUtils.isNotBlank(data.getUserid()) && MainContext.MessageTypeEnum.MESSAGE.toString().equals(data.getType())) { + NettyClients.getInstance().sendIMEventMessage(data.getUserid(), MainContext.MessageTypeEnum.MESSAGE.toString(), outMessage); + if (statusMessage != null) { + NettyClients.getInstance().sendIMEventMessage(data.getUserid(), MainContext.MessageTypeEnum.STATUS.toString(), statusMessage); + } + } + if (agentUser != null && StringUtils.isNotBlank(agentUser.getAgentno())) { + //将消息发送给 坐席 + NettyClients.getInstance().sendAgentEventMessage(agentUser.getAgentno(), MainContext.MessageTypeEnum.MESSAGE.toString(), data); + } + } + + + +// /** +// * 发送消息 +// * +// * @param data +// * @param msgtype +// */ +// private static void sendMessage(ChatMessage data, String msgtype) { +// MessageOutContent outMessage = new MessageOutContent(); +// +// outMessage.setMessage(data.getMessage()); +// outMessage.setFilename(data.getFilename()); +// outMessage.setFilesize(data.getFilesize()); +// +// +// outMessage.setMessageType(msgtype); +// outMessage.setCalltype(MainContext.CallTypeEnum.IN.toString()); +// outMessage.setSnsAccount(null); +// +// outMessage.setContextid(data.getContextid()); +// outMessage.setFromUser(data.getUserid()); +// outMessage.setToUser(data.getTouser()); +// outMessage.setChannelMessage(data); +// outMessage.setNickName(data.getUsername()); +// outMessage.setCreatetime(data.getCreatetime()); +// +// if (!StringUtils.isBlank(data.getUserid()) && MainContext.MessageTypeEnum.MESSAGE.toString().equals(data.getType())) { +// NettyClients.getInstance().sendIMEventMessage(data.getUserid(), MainContext.MessageTypeEnum.MESSAGE.toString(), outMessage); +// } +// } + +// /** +// * +// * @param message +// * @param length +// * @param name +// * @param channel +// * @param msgtype +// * @param userid +// * @param username +// * @param appid +// * @param orgi +// * @param attachid +// * @param aiid +// * @return +// */ +// public static ChatMessage createRichMediaMessageWithChannel(String message, int length, String name, String channel, String msgtype, String userid, String username, String appid, String orgi, String attachid, String aiid) { +// ChatMessage data = new ChatMessage(); +// if (!StringUtils.isBlank(userid)) { +// data.setUserid(userid); +// data.setUsername(username); +// data.setTouser(userid); +// data.setAppid(appid); +// data.setOrgi(orgi); +// data.setChannel(channel); +// data.setMessage(message); +// +// data.setAiid(aiid); +// +// data.setFilesize(length); +// data.setFilename(name); +// data.setAttachmentid(attachid); +// +// data.setMsgtype(msgtype); +// +// data.setType(MainContext.MessageTypeEnum.MESSAGE.toString()); +// createChatbotMessage(data, appid, channel, MainContext.CallTypeEnum.IN.toString(), MainContext.ChatbotItemType.USERINPUT.toString(), msgtype, data.getUserid()); +// } +// return data; +// } + +} diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/im/util/RichMediaUtils.java b/contact-center/app/src/main/java/com/chatopera/cc/app/im/util/RichMediaUtils.java new file mode 100644 index 00000000..1ea16837 --- /dev/null +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/im/util/RichMediaUtils.java @@ -0,0 +1,157 @@ +package com.chatopera.cc.app.im.util; + +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.im.message.ChatMessage; +import com.chatopera.cc.app.model.AgentUser; +import com.chatopera.cc.app.cache.CacheHelper; +import org.apache.commons.lang.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class RichMediaUtils { + private final static Logger logger = LoggerFactory.getLogger(RichMediaUtils.class); + + /** + * 上传图片 + * + * @param image + * @param attachid + * @param size + * @param name + * @param userid + * @return + */ + public static ChatMessage uploadImage(String image, String attachid, int size, String name, String userid) { + return createRichMediaMessage(image, size, name, MainContext.MediaTypeEnum.IMAGE.toString(), userid, attachid); + } + + /** + * 上传图片 + * + * @param image + * @param attachid + * @param size + * @param name + * @param channel + * @param userid + * @param username + * @param appid + * @param orgi + * @return + */ + public static ChatMessage uploadImageWithChannel(String image, String attachid, int size, String name, String channel, String userid, String username, String appid, String orgi) { + return createRichMediaMessageWithChannel(image, size, name, channel, MainContext.MediaTypeEnum.IMAGE.toString(), userid, username, appid, orgi, attachid); + } + + + /** + * 上传文件 + * + * @param url + * @param size + * @param name + * @param userid + * @param attachid + * @return + */ + public static ChatMessage uploadFile(String url, int size, String name, String userid, String attachid) { + return createRichMediaMessage(url, size, name, MainContext.MediaTypeEnum.FILE.toString(), userid, attachid); + } + + /** + * 上传文件 + * + * @param url + * @param size + * @param name + * @param channel + * @param userid + * @param username + * @param appid + * @param orgi + * @param attachid + * @return + */ + public static ChatMessage uploadFileWithChannel(String url, int size, String name, String channel, String userid, String username, String appid, String orgi, String attachid) { + return createRichMediaMessageWithChannel(url, size, name, channel, MainContext.MediaTypeEnum.FILE.toString(), userid, username, appid, orgi, attachid); + } + + /** + * 创建图片,文件消息 + * + * @param message + * @param length + * @param name + * @param msgtype + * @param userid + * @param attachid + * @return + */ + public static ChatMessage createRichMediaMessage(String message, int length, String name, String msgtype, String userid, String attachid) { + AgentUser agentUser = (AgentUser) CacheHelper.getAgentUserCacheBean().getCacheObject(userid, MainContext.SYSTEM_ORGI); + ChatMessage data = new ChatMessage(); + data.setFilesize(length); + data.setFilename(name); + data.setAttachmentid(attachid); + data.setMessage(message); + data.setMsgtype(msgtype); + data.setType(MainContext.MessageTypeEnum.MESSAGE.toString()); + + if (agentUser != null) { + data.setUserid(agentUser.getUserid()); + data.setUsername(agentUser.getUsername()); + data.setTouser(agentUser.getAgentno()); + data.setAppid(agentUser.getAppid()); + data.setOrgi(agentUser.getOrgi()); + if (StringUtils.equals(agentUser.getOpttype(), MainContext.OptTypeEnum.CHATBOT.toString())) { + // TODO #75 create Chatbot Message + // https://github.com/chatopera/cosin/issues/75 + logger.info("[createRichMediaMessageWithChannel] TODO #75 create Chatbot Message"); + } else { + HumanUtils.createMessage(data, msgtype, userid); + } + } + return data; + } + + /** + * 创建图片,文件消息 + * + * @param message + * @param length + * @param name + * @param channel + * @param msgtype + * @param userid + * @param username + * @param appid + * @param orgi + * @param attachid + * @return + */ + public static ChatMessage createRichMediaMessageWithChannel(String message, int length, String name, String channel, String msgtype, String userid, String username, String appid, String orgi, String attachid) { + ChatMessage data = new ChatMessage(); + data.setUserid(userid); + data.setUsername(username); + data.setTouser(userid); + data.setAppid(appid); + data.setOrgi(orgi); + data.setChannel(channel); + data.setMessage(message); + data.setFilesize(length); + data.setFilename(name); + data.setAttachmentid(attachid); + data.setMsgtype(msgtype); + data.setType(MainContext.MessageTypeEnum.MESSAGE.toString()); + + if (StringUtils.isNotBlank(userid)) { + AgentUser agentUser = (AgentUser) CacheHelper.getAgentUserCacheBean().getCacheObject(userid, MainContext.SYSTEM_ORGI); + if ((agentUser != null) && StringUtils.equals(agentUser.getOpttype(), MainContext.OptTypeEnum.CHATBOT.toString())) { + ChatbotUtils.createMessage(data, appid, channel, MainContext.CallTypeEnum.IN.toString(), MainContext.ChatbotItemType.USERINPUT.toString(), msgtype, data.getUserid()); + } else { + HumanUtils.createMessage(data, msgtype, userid); + } + } + return data; + } +} diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/interceptor/CrossInterceptorHandler.java b/contact-center/app/src/main/java/com/chatopera/cc/app/interceptor/CrossInterceptorHandler.java index f8a6665b..5628752d 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/interceptor/CrossInterceptorHandler.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/interceptor/CrossInterceptorHandler.java @@ -19,7 +19,7 @@ package com.chatopera.cc.app.interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/interceptor/LogIntercreptorHandler.java b/contact-center/app/src/main/java/com/chatopera/cc/app/interceptor/LogIntercreptorHandler.java index f54effe7..4b169a27 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/interceptor/LogIntercreptorHandler.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/interceptor/LogIntercreptorHandler.java @@ -22,7 +22,7 @@ import java.util.Enumeration; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.util.Menu; import com.chatopera.cc.app.model.User; import org.apache.commons.lang3.StringUtils; @@ -30,7 +30,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.app.handler.Handler; import com.chatopera.cc.app.model.RequestLog; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/interceptor/UserInterceptorHandler.java b/contact-center/app/src/main/java/com/chatopera/cc/app/interceptor/UserInterceptorHandler.java index b6830039..0f1a2ac2 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/interceptor/UserInterceptorHandler.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/interceptor/UserInterceptorHandler.java @@ -19,9 +19,10 @@ package com.chatopera.cc.app.interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.algorithm.AutomaticServiceDist; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.app.service.cache.CacheHelper; +import com.chatopera.cc.app.cache.CacheHelper; import com.chatopera.cc.app.model.User; import org.apache.commons.lang.StringUtils; import org.apache.log4j.LogManager; @@ -31,8 +32,7 @@ import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; -import com.chatopera.cc.app.MainUtils; -import com.chatopera.cc.app.service.acd.ServiceQuene; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.app.model.SystemConfig; import com.chatopera.cc.app.model.UKeFuDic; @@ -98,7 +98,7 @@ public class UserInterceptorHandler extends HandlerInterceptorAdapter { view.addObject("models", MainContext.model) ; if(user!=null){ - view.addObject("agentStatusReport",ServiceQuene.getAgentReport(user.getOrgi())) ; + view.addObject("agentStatusReport", AutomaticServiceDist.getAgentReport(user.getOrgi())) ; } /** * WebIM共享用户 diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/model/AgentReport.java b/contact-center/app/src/main/java/com/chatopera/cc/app/model/AgentReport.java index b41c23ab..5cb7ebb9 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/model/AgentReport.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/model/AgentReport.java @@ -25,7 +25,7 @@ import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; import org.hibernate.annotations.GenericGenerator; @Entity diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/model/AgentService.java b/contact-center/app/src/main/java/com/chatopera/cc/app/model/AgentService.java index 6fbc60de..e6de192b 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/model/AgentService.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/model/AgentService.java @@ -27,11 +27,11 @@ import javax.persistence.Id; import javax.persistence.Table; import javax.persistence.Transient; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Proxy; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; @Entity @Table(name = "uk_agentservice") diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/model/AgentStatus.java b/contact-center/app/src/main/java/com/chatopera/cc/app/model/AgentStatus.java index a3028fa9..e0ab9d85 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/model/AgentStatus.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/model/AgentStatus.java @@ -25,11 +25,11 @@ import javax.persistence.Id; import javax.persistence.Table; import javax.persistence.Transient; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import org.apache.commons.lang3.StringUtils; import org.hibernate.annotations.GenericGenerator; -import com.chatopera.cc.app.service.acd.ServiceQuene; +import com.chatopera.cc.app.algorithm.AutomaticServiceDist; @Entity @Table(name = "uk_agentstatus") @@ -146,7 +146,7 @@ public class AgentStatus implements java.io.Serializable , Comparable extends HashMap{ diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/model/UKefuCallOutNames.java b/contact-center/app/src/main/java/com/chatopera/cc/app/model/UKefuCallOutNames.java index bbcfdb87..b32175ee 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/model/UKefuCallOutNames.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/model/UKefuCallOutNames.java @@ -27,7 +27,7 @@ import javax.persistence.Transient; import org.hibernate.annotations.GenericGenerator; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; @Entity @Table(name = "uk_act_callnames") diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/model/UserHistory.java b/contact-center/app/src/main/java/com/chatopera/cc/app/model/UserHistory.java index 64bc32a8..18a3a514 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/model/UserHistory.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/model/UserHistory.java @@ -24,8 +24,8 @@ import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; -import com.chatopera.cc.event.UserEvent; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.exchange.UserEvent; +import com.chatopera.cc.app.basic.MainUtils; import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Proxy; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/model/UserTraceHistory.java b/contact-center/app/src/main/java/com/chatopera/cc/app/model/UserTraceHistory.java index 8b08cb7a..772bf216 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/model/UserTraceHistory.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/model/UserTraceHistory.java @@ -24,7 +24,7 @@ import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; -import com.chatopera.cc.event.UserEvent; +import com.chatopera.cc.exchange.UserEvent; import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Proxy; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/model/WorkOrders.java b/contact-center/app/src/main/java/com/chatopera/cc/app/model/WorkOrders.java index 2106aec6..8e04f31e 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/model/WorkOrders.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/model/WorkOrders.java @@ -25,7 +25,7 @@ import javax.persistence.Id; import javax.persistence.Table; import javax.persistence.Transient; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; import org.hibernate.annotations.GenericGenerator; import org.springframework.data.elasticsearch.annotations.Document; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/ContactNotesRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/ContactNotesRepository.java similarity index 95% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/es/ContactNotesRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/ContactNotesRepository.java index 583c44e3..990f0c8e 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/ContactNotesRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/ContactNotesRepository.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.chatopera.cc.app.service.es; +package com.chatopera.cc.app.persistence.es; import com.chatopera.cc.app.model.ContactNotes; import org.springframework.data.domain.Page; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/ContactsEsCommonRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/ContactsEsCommonRepository.java similarity index 95% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/es/ContactsEsCommonRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/ContactsEsCommonRepository.java index 4ecb9cb9..4e1cee1a 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/ContactsEsCommonRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/ContactsEsCommonRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.es; +package com.chatopera.cc.app.persistence.es; import java.util.Date; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/ContactsRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/ContactsRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/es/ContactsRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/ContactsRepository.java index 8fc6febf..5b6fde4a 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/ContactsRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/ContactsRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.es; +package com.chatopera.cc.app.persistence.es; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/ContactsRepositoryImpl.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/ContactsRepositoryImpl.java similarity index 96% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/es/ContactsRepositoryImpl.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/ContactsRepositoryImpl.java index 99dd473c..52437ace 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/ContactsRepositoryImpl.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/ContactsRepositoryImpl.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.es; +package com.chatopera.cc.app.persistence.es; import static org.elasticsearch.index.query.QueryBuilders.termQuery; @@ -38,7 +38,7 @@ import org.springframework.data.elasticsearch.core.ElasticsearchTemplate; import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; import org.springframework.stereotype.Component; -import com.chatopera.cc.app.service.repository.UserRepository; +import com.chatopera.cc.app.persistence.repository.UserRepository; import com.chatopera.cc.app.model.Contacts; @Component diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/EntCustomerEsCommonRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/EntCustomerEsCommonRepository.java similarity index 95% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/es/EntCustomerEsCommonRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/EntCustomerEsCommonRepository.java index cd9983ff..7befc739 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/EntCustomerEsCommonRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/EntCustomerEsCommonRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.es; +package com.chatopera.cc.app.persistence.es; import java.util.Date; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/EntCustomerRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/EntCustomerRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/es/EntCustomerRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/EntCustomerRepository.java index 9d23bed4..6d9856db 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/EntCustomerRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/EntCustomerRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.es; +package com.chatopera.cc.app.persistence.es; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/EntCustomerRepositoryImpl.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/EntCustomerRepositoryImpl.java similarity index 95% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/es/EntCustomerRepositoryImpl.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/EntCustomerRepositoryImpl.java index 119853f2..4e812833 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/EntCustomerRepositoryImpl.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/EntCustomerRepositoryImpl.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.es; +package com.chatopera.cc.app.persistence.es; import static org.elasticsearch.index.query.QueryBuilders.termQuery; @@ -39,7 +39,7 @@ import org.springframework.data.elasticsearch.core.ElasticsearchTemplate; import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; import org.springframework.stereotype.Repository; -import com.chatopera.cc.app.service.repository.UserRepository; +import com.chatopera.cc.app.persistence.repository.UserRepository; import com.chatopera.cc.app.model.EntCustomer; @Repository diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/KbsTopicCommentEsCommonRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/KbsTopicCommentEsCommonRepository.java similarity index 94% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/es/KbsTopicCommentEsCommonRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/KbsTopicCommentEsCommonRepository.java index 19ecc586..acb3afa4 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/KbsTopicCommentEsCommonRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/KbsTopicCommentEsCommonRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.es; +package com.chatopera.cc.app.persistence.es; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/KbsTopicCommentRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/KbsTopicCommentRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/es/KbsTopicCommentRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/KbsTopicCommentRepository.java index 34753ff3..bd23ae0d 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/KbsTopicCommentRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/KbsTopicCommentRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.es; +package com.chatopera.cc.app.persistence.es; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/KbsTopicCommentRepositoryImpl.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/KbsTopicCommentRepositoryImpl.java similarity index 97% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/es/KbsTopicCommentRepositoryImpl.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/KbsTopicCommentRepositoryImpl.java index 84683de9..6a090caf 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/KbsTopicCommentRepositoryImpl.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/KbsTopicCommentRepositoryImpl.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.es; +package com.chatopera.cc.app.persistence.es; import static org.elasticsearch.index.query.QueryBuilders.termQuery; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/KbsTopicEsCommonRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/KbsTopicEsCommonRepository.java similarity index 94% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/es/KbsTopicEsCommonRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/KbsTopicEsCommonRepository.java index 30b5e295..e7432160 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/KbsTopicEsCommonRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/KbsTopicEsCommonRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.es; +package com.chatopera.cc.app.persistence.es; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/KbsTopicRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/KbsTopicRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/es/KbsTopicRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/KbsTopicRepository.java index 115b82f6..083ee0f7 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/KbsTopicRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/KbsTopicRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.es; +package com.chatopera.cc.app.persistence.es; import com.chatopera.cc.app.model.KbsTopic; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/KbsTopicRepositoryImpl.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/KbsTopicRepositoryImpl.java similarity index 97% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/es/KbsTopicRepositoryImpl.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/KbsTopicRepositoryImpl.java index d9627757..9693da48 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/KbsTopicRepositoryImpl.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/KbsTopicRepositoryImpl.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.es; +package com.chatopera.cc.app.persistence.es; import static org.elasticsearch.index.query.QueryBuilders.termQuery; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/QuickReplyEsCommonRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/QuickReplyEsCommonRepository.java similarity index 94% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/es/QuickReplyEsCommonRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/QuickReplyEsCommonRepository.java index a4b6fa24..a553cac4 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/QuickReplyEsCommonRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/QuickReplyEsCommonRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.es; +package com.chatopera.cc.app.persistence.es; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/QuickReplyRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/QuickReplyRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/es/QuickReplyRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/QuickReplyRepository.java index f65dd63d..31b032c7 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/QuickReplyRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/QuickReplyRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.es; +package com.chatopera.cc.app.persistence.es; import com.chatopera.cc.app.model.QuickReply; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/QuickReplyRepositoryImpl.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/QuickReplyRepositoryImpl.java similarity index 96% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/es/QuickReplyRepositoryImpl.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/QuickReplyRepositoryImpl.java index bce8b127..4a3dce83 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/QuickReplyRepositoryImpl.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/QuickReplyRepositoryImpl.java @@ -14,14 +14,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.es; +package com.chatopera.cc.app.persistence.es; import static org.elasticsearch.index.query.QueryBuilders.termQuery; import java.util.Date; import java.util.List; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.app.model.QuickReply; import org.apache.commons.lang.StringUtils; import org.elasticsearch.index.query.BoolQueryBuilder; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/TopicEsCommonRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/TopicEsCommonRepository.java similarity index 94% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/es/TopicEsCommonRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/TopicEsCommonRepository.java index 5485d88d..de598ef0 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/TopicEsCommonRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/TopicEsCommonRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.es; +package com.chatopera.cc.app.persistence.es; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/TopicRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/TopicRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/es/TopicRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/TopicRepository.java index 4b4f9b5f..f3b34526 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/TopicRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/TopicRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.es; +package com.chatopera.cc.app.persistence.es; import com.chatopera.cc.app.model.Topic; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/TopicRepositoryImpl.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/TopicRepositoryImpl.java similarity index 96% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/es/TopicRepositoryImpl.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/TopicRepositoryImpl.java index 5b37ce31..42d0c7be 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/TopicRepositoryImpl.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/TopicRepositoryImpl.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.es; +package com.chatopera.cc.app.persistence.es; import static org.elasticsearch.index.query.QueryBuilders.termQuery; @@ -38,7 +38,7 @@ import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilde import org.springframework.data.elasticsearch.core.query.SearchQuery; import org.springframework.stereotype.Component; -import com.chatopera.cc.app.service.repository.XiaoEUKResultMapper; +import com.chatopera.cc.app.persistence.repository.XiaoEUKResultMapper; import com.chatopera.cc.app.model.Topic; @Component diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/UKAggResultExtractor.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/UKAggResultExtractor.java similarity index 96% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/es/UKAggResultExtractor.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/UKAggResultExtractor.java index ca64a659..50ae252b 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/UKAggResultExtractor.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/UKAggResultExtractor.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.es; +package com.chatopera.cc.app.persistence.es; import java.util.ArrayList; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/UKAggTopResultExtractor.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/UKAggTopResultExtractor.java similarity index 95% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/es/UKAggTopResultExtractor.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/UKAggTopResultExtractor.java index 8d416f28..dad3ea90 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/UKAggTopResultExtractor.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/UKAggTopResultExtractor.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.es; +package com.chatopera.cc.app.persistence.es; import java.util.ArrayList; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/UKResultMapper.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/UKResultMapper.java similarity index 96% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/es/UKResultMapper.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/UKResultMapper.java index 3839525d..031ad60d 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/es/UKResultMapper.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/es/UKResultMapper.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.es; +package com.chatopera.cc.app.persistence.es; import java.io.ByteArrayOutputStream; import java.io.IOException; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/hibernate/BaseService.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/hibernate/BaseService.java similarity index 94% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/hibernate/BaseService.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/hibernate/BaseService.java index 6543a801..9cd9be43 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/hibernate/BaseService.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/hibernate/BaseService.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.hibernate; +package com.chatopera.cc.app.persistence.hibernate; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/AgentUserService.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/AgentUserService.java similarity index 89% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/AgentUserService.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/AgentUserService.java index db3e4b76..251585ba 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/AgentUserService.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/AgentUserService.java @@ -14,11 +14,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.impl; +package com.chatopera.cc.app.persistence.impl; import java.util.List; -import com.chatopera.cc.app.service.repository.AgentUserRepository; +import com.chatopera.cc.app.persistence.repository.AgentUserRepository; import com.chatopera.cc.app.model.AgentUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/BatchDataProcess.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/BatchDataProcess.java similarity index 87% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/BatchDataProcess.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/BatchDataProcess.java index 5185a69d..f36825c6 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/BatchDataProcess.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/BatchDataProcess.java @@ -14,15 +14,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.impl; +package com.chatopera.cc.app.persistence.impl; import java.util.Map; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.es.UKDataBean; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.util.es.UKDataBean; import org.elasticsearch.action.bulk.BulkRequestBuilder; -import com.chatopera.cc.util.task.process.JPAProcess; +import com.chatopera.cc.concurrent.dsdata.process.JPAProcess; import com.chatopera.cc.app.model.MetadataTable; public class BatchDataProcess implements JPAProcess{ diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/CallOutQuene.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/CallOutQuene.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/CallOutQuene.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/CallOutQuene.java index 2c8ee076..36dbcc0f 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/CallOutQuene.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/CallOutQuene.java @@ -14,13 +14,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.impl; +package com.chatopera.cc.app.persistence.impl; import java.util.ArrayList; import java.util.List; -import com.chatopera.cc.app.service.cache.CacheHelper; -import com.chatopera.cc.app.service.quene.AgentCallOutFilter; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.aggregation.filter.AgentCallOutFilter; import org.springframework.stereotype.Service; import com.hazelcast.core.IMap; @@ -29,7 +29,7 @@ import com.hazelcast.mapreduce.aggregation.Supplier; import com.hazelcast.query.PagingPredicate; import com.hazelcast.query.SqlPredicate; import com.chatopera.cc.util.freeswitch.model.CallCenterAgent; -import com.chatopera.cc.app.service.quene.AiCallOutFilter; +import com.chatopera.cc.aggregation.filter.AiCallOutFilter; import com.chatopera.cc.app.model.UKefuCallOutNames; @SuppressWarnings("deprecation") diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/ContactsDataExchangeImpl.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/ContactsDataExchangeImpl.java similarity index 86% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/ContactsDataExchangeImpl.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/ContactsDataExchangeImpl.java index 1a280121..82aaf58a 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/ContactsDataExchangeImpl.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/ContactsDataExchangeImpl.java @@ -14,13 +14,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.impl; +package com.chatopera.cc.app.persistence.impl; import java.io.Serializable; import java.util.List; -import com.chatopera.cc.util.extra.DataExchangeInterface; -import com.chatopera.cc.app.service.es.ContactsRepository; +import com.chatopera.cc.exchange.DataExchangeInterface; +import com.chatopera.cc.app.persistence.es.ContactsRepository; import com.chatopera.cc.app.model.Contacts; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/DataBatProcess.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/DataBatProcess.java similarity index 86% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/DataBatProcess.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/DataBatProcess.java index d4f732af..16784ad9 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/DataBatProcess.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/DataBatProcess.java @@ -14,13 +14,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.impl; +package com.chatopera.cc.app.persistence.impl; import org.elasticsearch.action.bulk.BulkRequestBuilder; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.es.UKDataBean; -import com.chatopera.cc.util.task.process.JPAProcess; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.util.es.UKDataBean; +import com.chatopera.cc.concurrent.dsdata.process.JPAProcess; public class DataBatProcess implements JPAProcess{ diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/ESDataExchangeImpl.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/ESDataExchangeImpl.java similarity index 95% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/ESDataExchangeImpl.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/ESDataExchangeImpl.java index e4ae6d98..98fafd37 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/ESDataExchangeImpl.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/ESDataExchangeImpl.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.impl; +package com.chatopera.cc.app.persistence.impl; import java.util.ArrayList; import java.util.HashMap; @@ -22,10 +22,10 @@ import java.util.Iterator; import java.util.List; import java.util.Map; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.es.UKDataBean; -import com.chatopera.cc.app.service.repository.UKefuCallOutTaskRepository; -import com.chatopera.cc.app.service.repository.OrganRepository; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.util.es.UKDataBean; +import com.chatopera.cc.app.persistence.repository.UKefuCallOutTaskRepository; +import com.chatopera.cc.app.persistence.repository.OrganRepository; import com.chatopera.cc.app.model.TableProperties; import com.chatopera.cc.app.model.User; import org.apache.commons.lang3.StringUtils; @@ -51,7 +51,7 @@ import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort.Order; import org.springframework.stereotype.Repository; -import com.chatopera.cc.app.service.repository.UserRepository; +import com.chatopera.cc.app.persistence.repository.UserRepository; import com.chatopera.cc.app.model.UKefuCallOutTask; import com.chatopera.cc.app.model.MetadataTable; import com.chatopera.cc.app.model.Organ; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/HazelcastService.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/HazelcastService.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/HazelcastService.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/HazelcastService.java index 2d317dbe..262a3b06 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/HazelcastService.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/HazelcastService.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.impl; +package com.chatopera.cc.app.persistence.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/OrganDataExchangeImpl.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/OrganDataExchangeImpl.java similarity index 86% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/OrganDataExchangeImpl.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/OrganDataExchangeImpl.java index b8e1c54a..3e3f5bdc 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/OrganDataExchangeImpl.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/OrganDataExchangeImpl.java @@ -14,13 +14,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.impl; +package com.chatopera.cc.app.persistence.impl; import java.io.Serializable; import java.util.List; -import com.chatopera.cc.util.extra.DataExchangeInterface; -import com.chatopera.cc.app.service.repository.OrganRepository; +import com.chatopera.cc.exchange.DataExchangeInterface; +import com.chatopera.cc.app.persistence.repository.OrganRepository; import com.chatopera.cc.app.model.Organ; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/QuickTypeDataExchangeImpl.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/QuickTypeDataExchangeImpl.java similarity index 86% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/QuickTypeDataExchangeImpl.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/QuickTypeDataExchangeImpl.java index 4f965827..b83194b6 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/QuickTypeDataExchangeImpl.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/QuickTypeDataExchangeImpl.java @@ -14,17 +14,17 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.impl; +package com.chatopera.cc.app.persistence.impl; import java.io.Serializable; import java.util.List; -import com.chatopera.cc.util.extra.DataExchangeInterface; +import com.chatopera.cc.exchange.DataExchangeInterface; import com.chatopera.cc.app.model.QuickType; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.chatopera.cc.app.service.repository.QuickTypeRepository; +import com.chatopera.cc.app.persistence.repository.QuickTypeRepository; @Service("quicktypedata") public class QuickTypeDataExchangeImpl implements DataExchangeInterface { diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/ServiceDataExchangeImpl.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/ServiceDataExchangeImpl.java similarity index 86% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/ServiceDataExchangeImpl.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/ServiceDataExchangeImpl.java index cfccbed3..22ac81f7 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/ServiceDataExchangeImpl.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/ServiceDataExchangeImpl.java @@ -14,13 +14,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.impl; +package com.chatopera.cc.app.persistence.impl; import java.io.Serializable; import java.util.List; -import com.chatopera.cc.util.extra.DataExchangeInterface; -import com.chatopera.cc.app.service.repository.TagRepository; +import com.chatopera.cc.exchange.DataExchangeInterface; +import com.chatopera.cc.app.persistence.repository.TagRepository; import com.chatopera.cc.app.model.Tag; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/TopicDataExchangeImpl.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/TopicDataExchangeImpl.java similarity index 86% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/TopicDataExchangeImpl.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/TopicDataExchangeImpl.java index ee093d57..b98f660b 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/TopicDataExchangeImpl.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/TopicDataExchangeImpl.java @@ -14,15 +14,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.impl; +package com.chatopera.cc.app.persistence.impl; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.chatopera.cc.util.extra.DataExchangeInterface; -import com.chatopera.cc.app.service.es.TopicRepository; +import com.chatopera.cc.exchange.DataExchangeInterface; +import com.chatopera.cc.app.persistence.es.TopicRepository; import com.chatopera.cc.app.model.Topic; @Service("topic") diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/TopicMoreDataExchangeImpl.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/TopicMoreDataExchangeImpl.java similarity index 83% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/TopicMoreDataExchangeImpl.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/TopicMoreDataExchangeImpl.java index 77241aaa..19e274b9 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/TopicMoreDataExchangeImpl.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/TopicMoreDataExchangeImpl.java @@ -14,16 +14,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.impl; +package com.chatopera.cc.app.persistence.impl; import java.util.List; -import com.chatopera.cc.app.service.repository.TopicItemRepository; +import com.chatopera.cc.app.persistence.repository.TopicItemRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.chatopera.cc.util.extra.DataExchangeInterface; -import com.chatopera.cc.util.task.process.TopicProcess; +import com.chatopera.cc.exchange.DataExchangeInterface; +import com.chatopera.cc.concurrent.dsdata.process.TopicProcess; import com.chatopera.cc.app.model.TopicItem; @Service("topicmore") diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/TopicTypeDataExchangeImpl.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/TopicTypeDataExchangeImpl.java similarity index 86% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/TopicTypeDataExchangeImpl.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/TopicTypeDataExchangeImpl.java index 1b0d8401..19f293d7 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/TopicTypeDataExchangeImpl.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/TopicTypeDataExchangeImpl.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.impl; +package com.chatopera.cc.app.persistence.impl; import java.util.List; @@ -22,8 +22,8 @@ import com.chatopera.cc.app.model.KnowledgeType; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.chatopera.cc.util.extra.DataExchangeInterface; -import com.chatopera.cc.app.service.repository.KnowledgeTypeRepository; +import com.chatopera.cc.exchange.DataExchangeInterface; +import com.chatopera.cc.app.persistence.repository.KnowledgeTypeRepository; @Service("topictype") public class TopicTypeDataExchangeImpl implements DataExchangeInterface{ diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/UserDataExchangeImpl.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/UserDataExchangeImpl.java similarity index 86% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/UserDataExchangeImpl.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/UserDataExchangeImpl.java index 4f39f069..d35f64c2 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/UserDataExchangeImpl.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/UserDataExchangeImpl.java @@ -14,13 +14,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.impl; +package com.chatopera.cc.app.persistence.impl; import java.io.Serializable; import java.util.List; -import com.chatopera.cc.util.extra.DataExchangeInterface; -import com.chatopera.cc.app.service.repository.UserRepository; +import com.chatopera.cc.exchange.DataExchangeInterface; +import com.chatopera.cc.app.persistence.repository.UserRepository; import com.chatopera.cc.app.model.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/UserService.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/UserService.java similarity index 91% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/UserService.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/UserService.java index f21ab39a..f5e447b1 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/impl/UserService.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/impl/UserService.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.impl; +package com.chatopera.cc.app.persistence.impl; import org.springframework.stereotype.Service; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/AclRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/AclRepository.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/AclRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/AclRepository.java index 2934fd08..c63a3dfa 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/AclRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/AclRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/AdTypeRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/AdTypeRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/AdTypeRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/AdTypeRepository.java index 37b88d39..4ed9b8e7 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/AdTypeRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/AdTypeRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/AgentReportRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/AgentReportRepository.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/AgentReportRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/AgentReportRepository.java index 68c841f9..f339bdf5 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/AgentReportRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/AgentReportRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/AgentServiceRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/AgentServiceRepository.java similarity index 95% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/AgentServiceRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/AgentServiceRepository.java index 05024a73..4cc2eeb4 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/AgentServiceRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/AgentServiceRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/AgentServiceSatisRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/AgentServiceSatisRepository.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/AgentServiceSatisRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/AgentServiceSatisRepository.java index 8770beb4..8baa7c0c 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/AgentServiceSatisRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/AgentServiceSatisRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import com.chatopera.cc.app.model.AgentServiceSatis; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/AgentStatusRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/AgentStatusRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/AgentStatusRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/AgentStatusRepository.java index 68a5d52d..5eeca935 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/AgentStatusRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/AgentStatusRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/AgentUserContactsRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/AgentUserContactsRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/AgentUserContactsRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/AgentUserContactsRepository.java index 057740c8..47f9a394 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/AgentUserContactsRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/AgentUserContactsRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/AgentUserRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/AgentUserRepository.java similarity index 94% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/AgentUserRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/AgentUserRepository.java index bfcab763..e974be16 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/AgentUserRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/AgentUserRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/AgentUserTaskRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/AgentUserTaskRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/AgentUserTaskRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/AgentUserTaskRepository.java index 197a6799..93e08fde 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/AgentUserTaskRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/AgentUserTaskRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.Date; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/AiConfigRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/AiConfigRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/AiConfigRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/AiConfigRepository.java index 7feb9c6a..280e8633 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/AiConfigRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/AiConfigRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/AiSNSAccountRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/AiSNSAccountRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/AiSNSAccountRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/AiSNSAccountRepository.java index 0c70e29e..b8518e8e 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/AiSNSAccountRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/AiSNSAccountRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/AreaTypeRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/AreaTypeRepository.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/AreaTypeRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/AreaTypeRepository.java index c16ccfe2..bde836d8 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/AreaTypeRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/AreaTypeRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/AttachmentRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/AttachmentRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/AttachmentRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/AttachmentRepository.java index 92a9a0b6..b11f500f 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/AttachmentRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/AttachmentRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/BaseRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/BaseRepository.java similarity index 91% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/BaseRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/BaseRepository.java index 0eb54b18..eda5390e 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/BaseRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/BaseRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import com.chatopera.cc.app.model.User; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/BlackListRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/BlackListRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/BlackListRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/BlackListRepository.java index ef36e950..20a0f7dd 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/BlackListRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/BlackListRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/CallAgentRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/CallAgentRepository.java similarity index 94% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/CallAgentRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/CallAgentRepository.java index 0999cec7..bbb25da1 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/CallAgentRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/CallAgentRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/CallCenterSkillRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/CallCenterSkillRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/CallCenterSkillRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/CallCenterSkillRepository.java index 2b43dfd1..65f6d007 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/CallCenterSkillRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/CallCenterSkillRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/CallMonitorPerformanceRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/CallMonitorPerformanceRepository.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/CallMonitorPerformanceRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/CallMonitorPerformanceRepository.java index 3a07f30d..c4645146 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/CallMonitorPerformanceRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/CallMonitorPerformanceRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/CallMonitorRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/CallMonitorRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/CallMonitorRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/CallMonitorRepository.java index b73c4f4b..e5461a1c 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/CallMonitorRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/CallMonitorRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/CallOutDialplanRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/CallOutDialplanRepository.java similarity index 97% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/CallOutDialplanRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/CallOutDialplanRepository.java index b68f6222..a5e818dd 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/CallOutDialplanRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/CallOutDialplanRepository.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import com.chatopera.cc.app.model.CallOutDialplan; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/CallOutLogDialPlanRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/CallOutLogDialPlanRepository.java similarity index 95% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/CallOutLogDialPlanRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/CallOutLogDialPlanRepository.java index 902eccc4..ac04edcc 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/CallOutLogDialPlanRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/CallOutLogDialPlanRepository.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import com.chatopera.cc.app.model.CallOutLogDialPlan; import org.springframework.data.domain.Page; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/CallOutTargetRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/CallOutTargetRepository.java similarity index 94% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/CallOutTargetRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/CallOutTargetRepository.java index dd6bdc73..9ebb88e4 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/CallOutTargetRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/CallOutTargetRepository.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import com.chatopera.cc.app.model.CallOutTarget; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ChatMessageRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ChatMessageRepository.java similarity index 95% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ChatMessageRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ChatMessageRepository.java index 47b58080..c02efb83 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ChatMessageRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ChatMessageRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ChatbotRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ChatbotRepository.java similarity index 94% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ChatbotRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ChatbotRepository.java index 59b3a821..bb7ab7ed 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ChatbotRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ChatbotRepository.java @@ -1,4 +1,4 @@ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import com.chatopera.cc.app.model.Chatbot; import org.springframework.data.domain.Page; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ColumnPropertiesRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ColumnPropertiesRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ColumnPropertiesRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ColumnPropertiesRepository.java index 91fcdc5f..fffff8ee 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ColumnPropertiesRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ColumnPropertiesRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ConsultInviteRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ConsultInviteRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ConsultInviteRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ConsultInviteRepository.java index ece57d87..99f17c28 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ConsultInviteRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ConsultInviteRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/CubeLevelRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/CubeLevelRepository.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/CubeLevelRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/CubeLevelRepository.java index bcc2072a..3dbe0867 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/CubeLevelRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/CubeLevelRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/CubeMeasureRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/CubeMeasureRepository.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/CubeMeasureRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/CubeMeasureRepository.java index 85e7b3ea..f3f265d9 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/CubeMeasureRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/CubeMeasureRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/CubeMetadataRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/CubeMetadataRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/CubeMetadataRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/CubeMetadataRepository.java index 81d33f03..9fa14145 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/CubeMetadataRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/CubeMetadataRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/CubeRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/CubeRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/CubeRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/CubeRepository.java index c9f1746b..0e7a0cc8 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/CubeRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/CubeRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/CubeService.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/CubeService.java similarity index 96% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/CubeService.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/CubeService.java index 3ef5a799..55d66894 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/CubeService.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/CubeService.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.io.File; import java.io.IOException; @@ -25,13 +25,13 @@ import java.util.Iterator; import java.util.List; import java.util.Map; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.bi.model.ValueData; import com.chatopera.cc.app.model.ColumnProperties; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.util.bi.CubeReportData; import com.chatopera.cc.util.bi.model.FirstTitle; import com.chatopera.cc.util.bi.model.Level; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/CubeTypeRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/CubeTypeRepository.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/CubeTypeRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/CubeTypeRepository.java index 5b4472f1..450dc726 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/CubeTypeRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/CubeTypeRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/DataDicRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/DataDicRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/DataDicRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/DataDicRepository.java index 3ecf7a6b..2dd38dde 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/DataDicRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/DataDicRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/DataEventRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/DataEventRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/DataEventRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/DataEventRepository.java index f7363723..1d6c6e96 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/DataEventRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/DataEventRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/DataSourceService.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/DataSourceService.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/DataSourceService.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/DataSourceService.java index 84b728a3..d8c21961 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/DataSourceService.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/DataSourceService.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import mondrian.olap.Connection; import mondrian.olap.DriverManager; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/DbDataRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/DbDataRepository.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/DbDataRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/DbDataRepository.java index cf464925..b8e0f191 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/DbDataRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/DbDataRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import com.chatopera.cc.app.model.User; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/DimensionRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/DimensionRepository.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/DimensionRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/DimensionRepository.java index 716e801f..791c9089 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/DimensionRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/DimensionRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/DrilldownRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/DrilldownRepository.java similarity index 91% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/DrilldownRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/DrilldownRepository.java index 9f6b46dc..181043e2 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/DrilldownRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/DrilldownRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ExtentionRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ExtentionRepository.java similarity index 94% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ExtentionRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ExtentionRepository.java index 62fac53c..f79381a4 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ExtentionRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ExtentionRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/FormFilterItemRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/FormFilterItemRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/FormFilterItemRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/FormFilterItemRepository.java index 70ccde0f..9d7d5432 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/FormFilterItemRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/FormFilterItemRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/FormFilterRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/FormFilterRepository.java similarity index 94% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/FormFilterRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/FormFilterRepository.java index d9e9514b..84d3a0cc 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/FormFilterRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/FormFilterRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/GenerationRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/GenerationRepository.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/GenerationRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/GenerationRepository.java index eb42eef5..0f1c881c 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/GenerationRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/GenerationRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/IMGroupRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/IMGroupRepository.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/IMGroupRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/IMGroupRepository.java index 44a30d2a..f031149e 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/IMGroupRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/IMGroupRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/IMGroupUserRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/IMGroupUserRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/IMGroupUserRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/IMGroupUserRepository.java index 2b0ba690..436403fd 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/IMGroupUserRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/IMGroupUserRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/InstructionRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/InstructionRepository.java similarity index 94% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/InstructionRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/InstructionRepository.java index 2e972f6d..7d009848 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/InstructionRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/InstructionRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/InviteRecordRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/InviteRecordRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/InviteRecordRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/InviteRecordRepository.java index d81e3a19..f4118d35 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/InviteRecordRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/InviteRecordRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/IvrMenuRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/IvrMenuRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/IvrMenuRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/IvrMenuRepository.java index 0507cff7..ed7433f0 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/IvrMenuRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/IvrMenuRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/JobDetailRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/JobDetailRepository.java similarity index 95% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/JobDetailRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/JobDetailRepository.java index 92a796b6..4365869a 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/JobDetailRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/JobDetailRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.Date; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/KbsExpertRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/KbsExpertRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/KbsExpertRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/KbsExpertRepository.java index a671a0b6..6bf40b8f 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/KbsExpertRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/KbsExpertRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/KbsTypeRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/KbsTypeRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/KbsTypeRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/KbsTypeRepository.java index da4b6a2b..82e9da23 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/KbsTypeRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/KbsTypeRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/KnowledgeTypeRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/KnowledgeTypeRepository.java similarity index 94% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/KnowledgeTypeRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/KnowledgeTypeRepository.java index 0a7e7fb6..6195a51d 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/KnowledgeTypeRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/KnowledgeTypeRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/LeaveMsgRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/LeaveMsgRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/LeaveMsgRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/LeaveMsgRepository.java index f6d53399..25162401 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/LeaveMsgRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/LeaveMsgRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/LogRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/LogRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/LogRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/LogRepository.java index 98654bb7..907aa5c9 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/LogRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/LogRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/MediaRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/MediaRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/MediaRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/MediaRepository.java index b5c29925..cbf1b310 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/MediaRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/MediaRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/MetadataRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/MetadataRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/MetadataRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/MetadataRepository.java index 518b6b27..a7c9dbbc 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/MetadataRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/MetadataRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/OnlineUserHisRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/OnlineUserHisRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/OnlineUserHisRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/OnlineUserHisRepository.java index b278bcd5..8d01665a 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/OnlineUserHisRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/OnlineUserHisRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/OnlineUserRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/OnlineUserRepository.java similarity index 97% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/OnlineUserRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/OnlineUserRepository.java index f272c91e..adecec21 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/OnlineUserRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/OnlineUserRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.Date; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/OrganRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/OrganRepository.java similarity index 94% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/OrganRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/OrganRepository.java index 645a38d3..d348f095 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/OrganRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/OrganRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/OrganRoleRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/OrganRoleRepository.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/OrganRoleRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/OrganRoleRepository.java index 994b376a..8140fa80 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/OrganRoleRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/OrganRoleRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/OrganizationRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/OrganizationRepository.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/OrganizationRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/OrganizationRepository.java index 6190f226..808d52c0 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/OrganizationRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/OrganizationRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import com.chatopera.cc.app.model.Organization; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/OrgiSkillRelRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/OrgiSkillRelRepository.java similarity index 95% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/OrgiSkillRelRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/OrgiSkillRelRepository.java index 70337e51..3ba21ec2 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/OrgiSkillRelRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/OrgiSkillRelRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/PbxHostRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/PbxHostRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/PbxHostRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/PbxHostRepository.java index 223871b1..64ab2344 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/PbxHostRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/PbxHostRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ProcessContentRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ProcessContentRepository.java similarity index 94% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ProcessContentRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ProcessContentRepository.java index b14b3251..ccc34c55 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ProcessContentRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ProcessContentRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ProductRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ProductRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ProductRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ProductRepository.java index cdbd4253..175821eb 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ProductRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ProductRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/PropertiesEventRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/PropertiesEventRepository.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/PropertiesEventRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/PropertiesEventRepository.java index 360e1c43..1fbd28a8 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/PropertiesEventRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/PropertiesEventRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/PublishedCubeRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/PublishedCubeRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/PublishedCubeRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/PublishedCubeRepository.java index feec30fa..900d0e08 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/PublishedCubeRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/PublishedCubeRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/PublishedReportRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/PublishedReportRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/PublishedReportRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/PublishedReportRepository.java index 1aa8447b..7be1253f 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/PublishedReportRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/PublishedReportRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/QualityRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/QualityRepository.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/QualityRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/QualityRepository.java index f197abd4..0b4114a4 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/QualityRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/QualityRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/QueSurveyAnswerRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/QueSurveyAnswerRepository.java similarity index 94% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/QueSurveyAnswerRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/QueSurveyAnswerRepository.java index 63897dc6..f95d06f9 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/QueSurveyAnswerRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/QueSurveyAnswerRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/QueSurveyProcessRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/QueSurveyProcessRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/QueSurveyProcessRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/QueSurveyProcessRepository.java index 6ee8ed2f..2ffdc29f 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/QueSurveyProcessRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/QueSurveyProcessRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/QueSurveyQuestionRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/QueSurveyQuestionRepository.java similarity index 94% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/QueSurveyQuestionRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/QueSurveyQuestionRepository.java index e2dc7aae..201ee61d 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/QueSurveyQuestionRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/QueSurveyQuestionRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/QuickTypeRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/QuickTypeRepository.java similarity index 94% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/QuickTypeRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/QuickTypeRepository.java index f14589ab..14bf5e5a 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/QuickTypeRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/QuickTypeRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/RecentUserRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/RecentUserRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/RecentUserRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/RecentUserRepository.java index 4a62436e..68b276c1 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/RecentUserRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/RecentUserRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ReportCubeService.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ReportCubeService.java similarity index 97% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ReportCubeService.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ReportCubeService.java index 5df61941..ea0b417a 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ReportCubeService.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ReportCubeService.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.io.IOException; import java.util.HashMap; @@ -23,8 +23,8 @@ import java.util.Map; import javax.servlet.http.HttpServletRequest; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.util.bi.ReportData; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ReportFilterRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ReportFilterRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ReportFilterRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ReportFilterRepository.java index 30e2cb65..bc521af0 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ReportFilterRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ReportFilterRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ReportModelRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ReportModelRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ReportModelRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ReportModelRepository.java index 58ed2394..b8144693 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ReportModelRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ReportModelRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ReportRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ReportRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ReportRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ReportRepository.java index 9c0d44e7..39e590f5 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ReportRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ReportRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ReporterRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ReporterRepository.java similarity index 94% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ReporterRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ReporterRepository.java index f4ac8835..505c3d58 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ReporterRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ReporterRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import com.chatopera.cc.app.model.Reporter; import org.springframework.data.domain.Page; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/RequestLogRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/RequestLogRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/RequestLogRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/RequestLogRepository.java index f6429552..2f19d51f 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/RequestLogRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/RequestLogRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import com.chatopera.cc.app.model.RequestLog; import org.springframework.data.domain.Page; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/RoleAuthRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/RoleAuthRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/RoleAuthRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/RoleAuthRepository.java index e643bcd7..c45fe82e 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/RoleAuthRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/RoleAuthRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/RoleRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/RoleRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/RoleRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/RoleRepository.java index 10b6cf08..44dcf76f 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/RoleRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/RoleRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/RouterRulesRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/RouterRulesRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/RouterRulesRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/RouterRulesRepository.java index c94907cf..3b1e81f3 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/RouterRulesRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/RouterRulesRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/SNSAccountRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/SNSAccountRepository.java similarity index 95% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/SNSAccountRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/SNSAccountRepository.java index 939f4566..5a17cb4f 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/SNSAccountRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/SNSAccountRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/SaleStatusRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/SaleStatusRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/SaleStatusRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/SaleStatusRepository.java index 47e61a6f..23a02c94 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/SaleStatusRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/SaleStatusRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/SceneRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/SceneRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/SceneRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/SceneRepository.java index ade4f454..525f53ed 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/SceneRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/SceneRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import com.chatopera.cc.app.model.Scene; import org.springframework.data.domain.Page; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/SecretRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/SecretRepository.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/SecretRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/SecretRepository.java index 077ca248..71a48eb7 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/SecretRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/SecretRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ServiceAiRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ServiceAiRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ServiceAiRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ServiceAiRepository.java index b54324a5..fc044f77 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ServiceAiRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ServiceAiRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ServiceSummaryRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ServiceSummaryRepository.java similarity index 94% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ServiceSummaryRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ServiceSummaryRepository.java index 841461d6..2c8e5ede 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/ServiceSummaryRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/ServiceSummaryRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import com.chatopera.cc.app.model.AgentServiceSummary; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/SessionConfigRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/SessionConfigRepository.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/SessionConfigRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/SessionConfigRepository.java index 80e40c8b..065401ba 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/SessionConfigRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/SessionConfigRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/SipTrunkRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/SipTrunkRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/SipTrunkRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/SipTrunkRepository.java index 8fc30637..177f2786 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/SipTrunkRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/SipTrunkRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/SkillExtentionRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/SkillExtentionRepository.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/SkillExtentionRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/SkillExtentionRepository.java index c802deb2..21b2c58f 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/SkillExtentionRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/SkillExtentionRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/SkillRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/SkillRepository.java similarity index 95% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/SkillRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/SkillRepository.java index b94949a4..3f4443cd 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/SkillRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/SkillRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import com.chatopera.cc.app.model.Skill; import org.springframework.data.domain.Page; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/StatusEventRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/StatusEventRepository.java similarity index 96% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/StatusEventRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/StatusEventRepository.java index bc727b78..745d51cd 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/StatusEventRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/StatusEventRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import com.chatopera.cc.app.model.StatusEvent; import org.springframework.data.domain.Page; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/StatusEventSatisfRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/StatusEventSatisfRepository.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/StatusEventSatisfRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/StatusEventSatisfRepository.java index 3c32a178..91d7732b 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/StatusEventSatisfRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/StatusEventSatisfRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import com.chatopera.cc.app.model.StatusEventSatisf; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/SysDicRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/SysDicRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/SysDicRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/SysDicRepository.java index 49d3e7f9..9b485f38 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/SysDicRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/SysDicRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/SystemConfigRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/SystemConfigRepository.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/SystemConfigRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/SystemConfigRepository.java index 22bcbc0c..e1aa8b24 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/SystemConfigRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/SystemConfigRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/SystemMessageRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/SystemMessageRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/SystemMessageRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/SystemMessageRepository.java index 3836d47a..2bfd8cd8 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/SystemMessageRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/SystemMessageRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/TablePropertiesRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/TablePropertiesRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/TablePropertiesRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/TablePropertiesRepository.java index ddb8aece..1e519660 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/TablePropertiesRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/TablePropertiesRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/TagRelationRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/TagRelationRepository.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/TagRelationRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/TagRelationRepository.java index 4f382e13..7a446087 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/TagRelationRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/TagRelationRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/TagRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/TagRepository.java similarity index 94% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/TagRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/TagRepository.java index 98967dad..f7a3e59b 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/TagRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/TagRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/TemplateRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/TemplateRepository.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/TemplateRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/TemplateRepository.java index 15f8f2dc..d4fc4970 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/TemplateRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/TemplateRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/TenantRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/TenantRepository.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/TenantRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/TenantRepository.java index 493a10ff..13bc46b7 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/TenantRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/TenantRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/TopicItemRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/TopicItemRepository.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/TopicItemRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/TopicItemRepository.java index 48d96515..bbfcd717 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/TopicItemRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/TopicItemRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/UKefuCallOutConfigRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/UKefuCallOutConfigRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/UKefuCallOutConfigRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/UKefuCallOutConfigRepository.java index e8934f69..07c292bd 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/UKefuCallOutConfigRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/UKefuCallOutConfigRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/UKefuCallOutFilterRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/UKefuCallOutFilterRepository.java similarity index 94% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/UKefuCallOutFilterRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/UKefuCallOutFilterRepository.java index 6fa4a595..67df3184 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/UKefuCallOutFilterRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/UKefuCallOutFilterRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/UKefuCallOutNamesRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/UKefuCallOutNamesRepository.java similarity index 95% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/UKefuCallOutNamesRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/UKefuCallOutNamesRepository.java index 6acf9fec..221d257f 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/UKefuCallOutNamesRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/UKefuCallOutNamesRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/UKefuCallOutRoleRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/UKefuCallOutRoleRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/UKefuCallOutRoleRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/UKefuCallOutRoleRepository.java index 75682c30..6aac9861 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/UKefuCallOutRoleRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/UKefuCallOutRoleRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/UKefuCallOutTaskRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/UKefuCallOutTaskRepository.java similarity index 94% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/UKefuCallOutTaskRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/UKefuCallOutTaskRepository.java index 3364de50..59093b7d 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/UKefuCallOutTaskRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/UKefuCallOutTaskRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/UserEventRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/UserEventRepository.java similarity index 96% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/UserEventRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/UserEventRepository.java index d43e0a22..3cbf9da3 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/UserEventRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/UserEventRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.Date; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/UserRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/UserRepository.java similarity index 97% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/UserRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/UserRepository.java index de44222d..d5b7cf40 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/UserRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/UserRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/UserRoleRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/UserRoleRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/UserRoleRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/UserRoleRepository.java index 22fe1318..17edfb10 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/UserRoleRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/UserRoleRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/UserTraceRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/UserTraceRepository.java similarity index 94% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/UserTraceRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/UserTraceRepository.java index 15e78b78..eb3e0948 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/UserTraceRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/UserTraceRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/WeiXinUserRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/WeiXinUserRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/WeiXinUserRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/WeiXinUserRepository.java index d2c18b39..859952de 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/WeiXinUserRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/WeiXinUserRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/WorkMonitorRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/WorkMonitorRepository.java similarity index 94% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/WorkMonitorRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/WorkMonitorRepository.java index 605f4ecc..fd0d76ca 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/WorkMonitorRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/WorkMonitorRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/WorkOrderTypeRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/WorkOrderTypeRepository.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/WorkOrderTypeRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/WorkOrderTypeRepository.java index e5277253..c4a01d3c 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/WorkOrderTypeRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/WorkOrderTypeRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/WorkSessionRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/WorkSessionRepository.java similarity index 94% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/WorkSessionRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/WorkSessionRepository.java index 1bfe30d5..07ad7357 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/WorkSessionRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/WorkSessionRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/WorkTimeRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/WorkTimeRepository.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/WorkTimeRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/WorkTimeRepository.java index 54324b3a..5ffb2d3b 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/WorkTimeRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/WorkTimeRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/WxMpEventRepository.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/WxMpEventRepository.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/WxMpEventRepository.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/WxMpEventRepository.java index a8c12835..93ecc759 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/WxMpEventRepository.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/WxMpEventRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.util.Date; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/XiaoEUKResultMapper.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/XiaoEUKResultMapper.java similarity index 96% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/XiaoEUKResultMapper.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/XiaoEUKResultMapper.java index 554b3bf8..01a70d36 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/repository/XiaoEUKResultMapper.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/repository/XiaoEUKResultMapper.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.repository; +package com.chatopera.cc.app.persistence.repository; import java.io.ByteArrayOutputStream; import java.io.IOException; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/storage/MinioService.java b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/storage/MinioService.java similarity index 96% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/storage/MinioService.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/persistence/storage/MinioService.java index 48be4d34..aa09c23a 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/storage/MinioService.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/persistence/storage/MinioService.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.storage; +package com.chatopera.cc.app.persistence.storage; import io.minio.MinioClient; import io.minio.errors.InvalidEndpointException; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/task/CallOutPlanTask.java b/contact-center/app/src/main/java/com/chatopera/cc/app/schedule/CallOutPlanTask.java similarity index 96% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/task/CallOutPlanTask.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/schedule/CallOutPlanTask.java index 1802ed0e..d01cb8e7 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/task/CallOutPlanTask.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/schedule/CallOutPlanTask.java @@ -13,14 +13,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.task; +package com.chatopera.cc.app.schedule; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.Constants; import com.chatopera.cc.exception.CallOutRuntimeException; -import com.chatopera.cc.app.service.repository.CallOutDialplanRepository; -import com.chatopera.cc.app.service.repository.CallOutTargetRepository; +import com.chatopera.cc.app.persistence.repository.CallOutDialplanRepository; +import com.chatopera.cc.app.persistence.repository.CallOutTargetRepository; import com.chatopera.cc.app.model.CallOutDialplan; import com.chatopera.cc.app.model.CallOutTarget; import com.google.gson.JsonArray; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/task/CallOutSheetTask.java b/contact-center/app/src/main/java/com/chatopera/cc/app/schedule/CallOutSheetTask.java similarity index 97% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/task/CallOutSheetTask.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/schedule/CallOutSheetTask.java index 8d8d6bd5..1c09b99b 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/task/CallOutSheetTask.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/schedule/CallOutSheetTask.java @@ -13,14 +13,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.task; +package com.chatopera.cc.app.schedule; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.mobile.MobileAddress; import com.chatopera.cc.util.mobile.MobileNumberUtils; -import com.chatopera.cc.app.service.es.ContactsRepository; -import com.chatopera.cc.app.service.repository.CallOutDialplanRepository; -import com.chatopera.cc.app.service.repository.CallOutTargetRepository; +import com.chatopera.cc.app.persistence.es.ContactsRepository; +import com.chatopera.cc.app.persistence.repository.CallOutDialplanRepository; +import com.chatopera.cc.app.persistence.repository.CallOutTargetRepository; import com.chatopera.cc.app.model.CallOutDialplan; import com.chatopera.cc.app.model.CallOutTarget; import org.apache.commons.lang.StringUtils; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/task/CallOutWireTask.java b/contact-center/app/src/main/java/com/chatopera/cc/app/schedule/CallOutWireTask.java similarity index 97% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/task/CallOutWireTask.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/schedule/CallOutWireTask.java index ae065b39..2c4afa4a 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/task/CallOutWireTask.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/schedule/CallOutWireTask.java @@ -13,23 +13,23 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.task; +package com.chatopera.cc.app.schedule; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.algorithm.AutomaticServiceDist; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.Constants; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.app.im.client.NettyClients; -import com.chatopera.cc.event.CallOutWireEvent; +import com.chatopera.cc.exchange.CallOutWireEvent; import com.chatopera.cc.exception.CSKefuException; import com.chatopera.cc.exception.CallOutRuntimeException; import com.chatopera.cc.exception.FreeSwitchException; import com.chatopera.cc.util.mobile.MobileAddress; import com.chatopera.cc.util.mobile.MobileNumberUtils; import com.chatopera.cc.app.model.*; -import com.chatopera.cc.app.service.acd.ServiceQuene; -import com.chatopera.cc.app.service.cache.CacheHelper; -import com.chatopera.cc.app.service.es.ContactsRepository; -import com.chatopera.cc.app.service.repository.*; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.persistence.es.ContactsRepository; +import com.chatopera.cc.app.persistence.repository.*; import com.chatopera.cc.util.OnlineUserUtils; import com.google.gson.JsonObject; import com.google.gson.JsonParser; @@ -364,7 +364,7 @@ public class CallOutWireTask implements MessageListener { MainContext.AgentUserStatusEnum.INSERVICE.toString()); for (AgentUser au : agentUsers) { CacheHelper.getAgentUserCacheBean().delete(au.getId(), MainContext.SYSTEM_ORGI); - ServiceQuene.serviceFinish(au, MainContext.SYSTEM_ORGI); + AutomaticServiceDist.serviceFinish(au, MainContext.SYSTEM_ORGI); // update Status Events,更新通话记录 if (StringUtils.isNotBlank(au.getAgentserviceid())) closeStatusEvent(au, event.getCreatetime(), event.getRecord()); @@ -433,7 +433,7 @@ public class CallOutWireTask implements MessageListener { } if (StringUtils.isNotBlank(sip)) { // 发送通知给浏览器客户端 - logger.info("[callout wire] push event to sip account {} ...", sip); + logger.info("[callout wire] push exchange to sip account {} ...", sip); List users = userRes.findBySipaccountAndDatastatus(sip, false); if (users.size() == 0) { throw new FreeSwitchException(String.format("[callout wire] User does not exist for Sip Account [%s]", sip)); diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/task/Fetcher.java b/contact-center/app/src/main/java/com/chatopera/cc/app/schedule/Fetcher.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/task/Fetcher.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/schedule/Fetcher.java index 74dc3c87..3b111024 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/task/Fetcher.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/schedule/Fetcher.java @@ -14,21 +14,21 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.task; +package com.chatopera.cc.app.schedule; import java.io.IOException; import java.util.Date; import java.util.concurrent.atomic.AtomicInteger; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.app.service.cache.CacheHelper; -import com.chatopera.cc.app.service.resource.Resource; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.basic.resource.Resource; import com.chatopera.cc.app.model.JobDetail; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; import org.apache.commons.lang.exception.ExceptionUtils; -import com.chatopera.cc.app.service.repository.ReporterRepository; -import com.chatopera.cc.app.service.resource.OutputTextFormat; +import com.chatopera.cc.app.persistence.repository.ReporterRepository; +import com.chatopera.cc.app.basic.resource.OutputTextFormat; public class Fetcher implements Runnable { diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/task/LogTask.java b/contact-center/app/src/main/java/com/chatopera/cc/app/schedule/LogTask.java similarity index 86% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/task/LogTask.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/schedule/LogTask.java index 3145e35e..e685b4af 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/task/LogTask.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/schedule/LogTask.java @@ -14,10 +14,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.task; +package com.chatopera.cc.app.schedule; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.app.service.repository.LogRepository; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.persistence.repository.LogRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableScheduling; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/task/NamesTask.java b/contact-center/app/src/main/java/com/chatopera/cc/app/schedule/NamesTask.java similarity index 88% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/task/NamesTask.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/schedule/NamesTask.java index 52d31b80..4c6e0e9b 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/task/NamesTask.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/schedule/NamesTask.java @@ -14,15 +14,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.task; +package com.chatopera.cc.app.schedule; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.CallOutUtils; import com.chatopera.cc.app.im.client.NettyClients; -import com.chatopera.cc.es.SearchTools; -import com.chatopera.cc.es.UKDataBean; +import com.chatopera.cc.util.es.SearchTools; +import com.chatopera.cc.util.es.UKDataBean; import com.chatopera.cc.util.freeswitch.model.CallCenterAgent; -import com.chatopera.cc.app.service.cache.CacheHelper; +import com.chatopera.cc.app.cache.CacheHelper; import org.springframework.data.domain.Page; public class NamesTask implements Runnable{ diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/task/Task.java b/contact-center/app/src/main/java/com/chatopera/cc/app/schedule/Task.java similarity index 88% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/task/Task.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/schedule/Task.java index 1db16518..0068b9cf 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/task/Task.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/schedule/Task.java @@ -14,15 +14,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.task; +package com.chatopera.cc.app.schedule; import java.util.Date; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.TaskTools; -import com.chatopera.cc.app.service.cache.CacheHelper; -import com.chatopera.cc.app.service.repository.JobDetailRepository; -import com.chatopera.cc.app.service.repository.ReporterRepository; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.persistence.repository.JobDetailRepository; +import com.chatopera.cc.app.persistence.repository.ReporterRepository; import com.chatopera.cc.app.model.JobDetail; import com.chatopera.cc.app.model.Reporter; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/service/task/WebIMTask.java b/contact-center/app/src/main/java/com/chatopera/cc/app/schedule/WebIMTask.java similarity index 91% rename from contact-center/app/src/main/java/com/chatopera/cc/app/service/task/WebIMTask.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/schedule/WebIMTask.java index 81e460c9..e11dc5b9 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/app/service/task/WebIMTask.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/schedule/WebIMTask.java @@ -13,24 +13,24 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.app.service.task; +package com.chatopera.cc.app.schedule; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.List; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.algorithm.AutomaticServiceDist; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.app.im.client.NettyClients; -import com.chatopera.cc.app.MainUtils; -import com.chatopera.cc.util.extra.DataExchangeInterface; +import com.chatopera.cc.app.basic.MainUtils; +import com.chatopera.cc.exchange.DataExchangeInterface; import com.chatopera.cc.util.freeswitch.model.CallCenterAgent; -import com.chatopera.cc.app.service.acd.ServiceQuene; -import com.chatopera.cc.app.service.cache.CacheHelper; -import com.chatopera.cc.app.service.impl.CallOutQuene; -import com.chatopera.cc.app.service.repository.AgentUserTaskRepository; -import com.chatopera.cc.app.service.repository.JobDetailRepository; -import com.chatopera.cc.app.service.repository.OnlineUserRepository; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.persistence.impl.CallOutQuene; +import com.chatopera.cc.app.persistence.repository.AgentUserTaskRepository; +import com.chatopera.cc.app.persistence.repository.JobDetailRepository; +import com.chatopera.cc.app.persistence.repository.OnlineUserRepository; import com.chatopera.cc.util.OnlineUserUtils; import com.chatopera.cc.app.im.router.OutMessageRouter; import com.chatopera.cc.app.im.message.ChatMessage; @@ -43,8 +43,8 @@ import org.springframework.data.domain.PageRequest; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; -import com.chatopera.cc.app.service.repository.ChatMessageRepository; -import com.chatopera.cc.app.service.repository.ConsultInviteRepository; +import com.chatopera.cc.app.persistence.repository.ChatMessageRepository; +import com.chatopera.cc.app.persistence.repository.ConsultInviteRepository; import com.chatopera.cc.app.model.AgentStatus; import com.chatopera.cc.app.model.AgentUser; import com.chatopera.cc.app.model.AgentUserTask; @@ -74,7 +74,7 @@ public class WebIMTask { @Scheduled(fixedDelay = 5000) // 每5秒执行一次 public void task() { - List sessionConfigList = ServiceQuene.initSessionConfigList(); + List sessionConfigList = AutomaticServiceDist.initSessionConfigList(); if (sessionConfigList != null && sessionConfigList.size() > 0 && MainContext.getContext() != null) { for (SessionConfig sessionConfig : sessionConfigList) { if (sessionConfig.isSessiontimeout()) { //设置了启用 超时提醒 @@ -97,7 +97,7 @@ public class WebIMTask { */ processMessage(sessionConfig, sessionConfig.getRetimeoutmsg(), sessionConfig.getServicename(), agentUser, agentStatus, task); try { - ServiceQuene.serviceFinish(agentUser, task.getOrgi()); + AutomaticServiceDist.serviceFinish(agentUser, task.getOrgi()); } catch (Exception e) { e.printStackTrace(); } @@ -116,7 +116,7 @@ public class WebIMTask { */ processMessage(sessionConfig, sessionConfig.getRetimeoutmsg(), agentStatus.getUsername(), agentUser, agentStatus, task); try { - ServiceQuene.serviceFinish(agentUser, task.getOrgi()); + AutomaticServiceDist.serviceFinish(agentUser, task.getOrgi()); } catch (Exception e) { e.printStackTrace(); } @@ -134,7 +134,7 @@ public class WebIMTask { */ processMessage(sessionConfig, sessionConfig.getQuenetimeoutmsg(), sessionConfig.getServicename(), agentUser, null, task); try { - ServiceQuene.serviceFinish(agentUser, task.getOrgi()); + AutomaticServiceDist.serviceFinish(agentUser, task.getOrgi()); } catch (Exception e) { e.printStackTrace(); } @@ -147,10 +147,10 @@ public class WebIMTask { @Scheduled(fixedDelay = 5000) // 每5秒执行一次 public void agent() { - List sessionConfigList = ServiceQuene.initSessionConfigList(); + List sessionConfigList = AutomaticServiceDist.initSessionConfigList(); if (sessionConfigList != null && sessionConfigList.size() > 0 && MainContext.getContext() != null) { for (SessionConfig sessionConfig : sessionConfigList) { - sessionConfig = ServiceQuene.initSessionConfig(sessionConfig.getOrgi()); + sessionConfig = AutomaticServiceDist.initSessionConfig(sessionConfig.getOrgi()); if (sessionConfig != null && MainContext.getContext() != null && sessionConfig.isAgentreplaytimeout()) { List agentUserTask = agentUserTaskRes.findByLastgetmessageLessThanAndStatusAndOrgi(MainUtils.getLastTime(sessionConfig.getAgenttimeout()), MainContext.AgentUserStatusEnum.INSERVICE.toString(), sessionConfig.getOrgi()); for (AgentUserTask task : agentUserTask) { // 超时未回复 diff --git a/contact-center/app/src/main/java/com/chatopera/cc/disruptor/chatbot/ChatbotDisruptorExceptionHandler.java b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/chatbot/ChatbotDisruptorExceptionHandler.java similarity index 96% rename from contact-center/app/src/main/java/com/chatopera/cc/disruptor/chatbot/ChatbotDisruptorExceptionHandler.java rename to contact-center/app/src/main/java/com/chatopera/cc/concurrent/chatbot/ChatbotDisruptorExceptionHandler.java index 867bbc39..c10dcc5f 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/disruptor/chatbot/ChatbotDisruptorExceptionHandler.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/chatbot/ChatbotDisruptorExceptionHandler.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.chatopera.cc.disruptor.chatbot; +package com.chatopera.cc.concurrent.chatbot; import com.lmax.disruptor.ExceptionHandler; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/disruptor/chatbot/ChatbotEvent.java b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/chatbot/ChatbotEvent.java similarity index 86% rename from contact-center/app/src/main/java/com/chatopera/cc/disruptor/chatbot/ChatbotEvent.java rename to contact-center/app/src/main/java/com/chatopera/cc/concurrent/chatbot/ChatbotEvent.java index 3fec895a..8ad995f9 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/disruptor/chatbot/ChatbotEvent.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/chatbot/ChatbotEvent.java @@ -13,10 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.disruptor.chatbot; +package com.chatopera.cc.concurrent.chatbot; -import com.chatopera.cc.app.service.hibernate.BaseService; -import com.chatopera.cc.event.UserEvent; +import com.chatopera.cc.app.persistence.hibernate.BaseService; +import com.chatopera.cc.exchange.UserEvent; public class ChatbotEvent implements UserEvent { diff --git a/contact-center/app/src/main/java/com/chatopera/cc/disruptor/chatbot/ChatbotEventFactory.java b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/chatbot/ChatbotEventFactory.java similarity index 86% rename from contact-center/app/src/main/java/com/chatopera/cc/disruptor/chatbot/ChatbotEventFactory.java rename to contact-center/app/src/main/java/com/chatopera/cc/concurrent/chatbot/ChatbotEventFactory.java index ac004ff0..688098dc 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/disruptor/chatbot/ChatbotEventFactory.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/chatbot/ChatbotEventFactory.java @@ -13,9 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.disruptor.chatbot; +package com.chatopera.cc.concurrent.chatbot; -import com.chatopera.cc.disruptor.user.UserDataEvent; +import com.chatopera.cc.concurrent.user.UserDataEvent; import com.lmax.disruptor.EventFactory; public class ChatbotEventFactory implements EventFactory{ diff --git a/contact-center/app/src/main/java/com/chatopera/cc/concurrent/chatbot/ChatbotEventHandler.java b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/chatbot/ChatbotEventHandler.java new file mode 100644 index 00000000..1986e5c1 --- /dev/null +++ b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/chatbot/ChatbotEventHandler.java @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2018 Chatopera Inc, + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.chatopera.cc.concurrent.chatbot; + +import com.chatopera.cc.concurrent.user.UserDataEvent; +import com.lmax.disruptor.EventHandler; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +@SuppressWarnings("rawtypes") +public class ChatbotEventHandler implements EventHandler { + private final static Logger logger = LoggerFactory.getLogger(ChatbotEventHandler.class); + + @Override + public void onEvent(UserDataEvent event, long arg1, boolean arg2) + throws Exception { + if (event.getEvent() != null) { + ChatbotEvent x = (ChatbotEvent) event.getEvent(); + // TODO #75 + logger.info("onEvent"); + } + } + +} diff --git a/contact-center/app/src/main/java/com/chatopera/cc/disruptor/chatbot/ChatbotEventProducer.java b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/chatbot/ChatbotEventProducer.java similarity index 89% rename from contact-center/app/src/main/java/com/chatopera/cc/disruptor/chatbot/ChatbotEventProducer.java rename to contact-center/app/src/main/java/com/chatopera/cc/concurrent/chatbot/ChatbotEventProducer.java index b5a8ee81..5cc29ed4 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/disruptor/chatbot/ChatbotEventProducer.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/chatbot/ChatbotEventProducer.java @@ -13,9 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.disruptor.chatbot; +package com.chatopera.cc.concurrent.chatbot; -import com.chatopera.cc.disruptor.user.UserDataEvent; +import com.chatopera.cc.concurrent.user.UserDataEvent; import com.lmax.disruptor.RingBuffer; @SuppressWarnings("rawtypes") diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/task/DSData.java b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/DSData.java similarity index 91% rename from contact-center/app/src/main/java/com/chatopera/cc/util/task/DSData.java rename to contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/DSData.java index aab7320e..9a6e42de 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/task/DSData.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/DSData.java @@ -14,13 +14,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.util.task; +package com.chatopera.cc.concurrent.dsdata; import java.io.File; import com.chatopera.cc.app.model.JobDetail; import com.chatopera.cc.app.model.User; -import com.chatopera.cc.util.task.process.JPAProcess; +import com.chatopera.cc.concurrent.dsdata.process.JPAProcess; import com.chatopera.cc.app.model.MetadataTable; import com.chatopera.cc.app.model.Reporter; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/task/DSDataEvent.java b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/DSDataEvent.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/util/task/DSDataEvent.java rename to contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/DSDataEvent.java index 2d28a516..bafbb04f 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/task/DSDataEvent.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/DSDataEvent.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.util.task; +package com.chatopera.cc.concurrent.dsdata; import java.util.HashMap; import java.util.Map; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/task/DSDataEventFactory.java b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/DSDataEventFactory.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/util/task/DSDataEventFactory.java rename to contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/DSDataEventFactory.java index 6d80f7a4..e062d0d0 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/task/DSDataEventFactory.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/DSDataEventFactory.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.util.task; +package com.chatopera.cc.concurrent.dsdata; import com.lmax.disruptor.EventFactory; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/task/DSDataEventHandler.java b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/DSDataEventHandler.java similarity index 91% rename from contact-center/app/src/main/java/com/chatopera/cc/util/task/DSDataEventHandler.java rename to contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/DSDataEventHandler.java index 105279ef..e32c4fb8 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/task/DSDataEventHandler.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/DSDataEventHandler.java @@ -14,10 +14,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.util.task; +package com.chatopera.cc.concurrent.dsdata; import com.lmax.disruptor.EventHandler; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; public class DSDataEventHandler implements EventHandler { diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/task/DSDataEventProducer.java b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/DSDataEventProducer.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/util/task/DSDataEventProducer.java rename to contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/DSDataEventProducer.java index 02d12ca0..0f5ed5fb 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/task/DSDataEventProducer.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/DSDataEventProducer.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.util.task; +package com.chatopera.cc.concurrent.dsdata; import com.lmax.disruptor.RingBuffer; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/task/DSQueueProcessHandler.java b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/DSQueueProcessHandler.java similarity index 94% rename from contact-center/app/src/main/java/com/chatopera/cc/util/task/DSQueueProcessHandler.java rename to contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/DSQueueProcessHandler.java index c82085d4..2932181f 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/task/DSQueueProcessHandler.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/DSQueueProcessHandler.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.util.task; +package com.chatopera.cc.concurrent.dsdata; import java.util.concurrent.Executor; import java.util.concurrent.Executors; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/task/DataProcess.java b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/DataProcess.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/util/task/DataProcess.java rename to contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/DataProcess.java index 89b12490..c7e41c7c 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/task/DataProcess.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/DataProcess.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.util.task; +package com.chatopera.cc.concurrent.dsdata; public abstract class DataProcess { diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/task/ESData.java b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/ESData.java similarity index 91% rename from contact-center/app/src/main/java/com/chatopera/cc/util/task/ESData.java rename to contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/ESData.java index 3e2d33fd..4c65be76 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/task/ESData.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/ESData.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.util.task; +package com.chatopera.cc.concurrent.dsdata; public interface ESData { diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/task/ExcelImportProecess.java b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/ExcelImportProecess.java similarity index 96% rename from contact-center/app/src/main/java/com/chatopera/cc/util/task/ExcelImportProecess.java rename to contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/ExcelImportProecess.java index 218404ce..f7316bc7 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/task/ExcelImportProecess.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/ExcelImportProecess.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.util.task; +package com.chatopera.cc.concurrent.dsdata; import java.io.FileInputStream; import java.io.FileNotFoundException; @@ -29,11 +29,11 @@ import java.util.List; import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.app.model.JobDetail; import com.chatopera.cc.app.model.SysDic; import com.chatopera.cc.app.model.TableProperties; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.PropertyUtils; import org.apache.commons.lang.StringUtils; @@ -48,9 +48,9 @@ import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import com.google.common.collect.ArrayListMultimap; -import com.chatopera.cc.util.extra.DataExchangeInterface; -import com.chatopera.cc.app.service.repository.JobDetailRepository; -import com.chatopera.cc.app.service.repository.ReporterRepository; +import com.chatopera.cc.exchange.DataExchangeInterface; +import com.chatopera.cc.app.persistence.repository.JobDetailRepository; +import com.chatopera.cc.app.persistence.repository.ReporterRepository; import com.chatopera.cc.app.model.MetadataTable; import com.chatopera.cc.app.model.UKeFuDic; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/task/ExcelImportUtils.java b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/ExcelImportUtils.java similarity index 97% rename from contact-center/app/src/main/java/com/chatopera/cc/util/task/ExcelImportUtils.java rename to contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/ExcelImportUtils.java index 0d722bb7..d969e1b2 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/task/ExcelImportUtils.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/ExcelImportUtils.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.util.task; +package com.chatopera.cc.concurrent.dsdata; import java.io.FileInputStream; import java.io.FileNotFoundException; @@ -25,10 +25,10 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.app.model.MetadataTable; import com.chatopera.cc.app.model.TableProperties; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; import org.apache.commons.lang3.StringUtils; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFDataFormat; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/task/export/ExcelExporterProcess.java b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/export/ExcelExporterProcess.java similarity index 95% rename from contact-center/app/src/main/java/com/chatopera/cc/util/task/export/ExcelExporterProcess.java rename to contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/export/ExcelExporterProcess.java index 1447bbbd..f2fd29c1 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/task/export/ExcelExporterProcess.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/export/ExcelExporterProcess.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.util.task.export; +package com.chatopera.cc.concurrent.dsdata.export; import java.io.IOException; import java.io.OutputStream; @@ -22,7 +22,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.app.model.SysDic; import com.chatopera.cc.app.model.TableProperties; import org.apache.commons.lang.StringUtils; @@ -37,7 +37,7 @@ import org.apache.poi.ss.usermodel.Font; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; -import com.chatopera.cc.util.extra.DataExchangeInterface; +import com.chatopera.cc.exchange.DataExchangeInterface; import com.chatopera.cc.app.model.MetadataTable; import com.chatopera.cc.app.model.UKeFuDic; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/task/export/ExportData.java b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/export/ExportData.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/util/task/export/ExportData.java rename to contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/export/ExportData.java index 3888aa2a..8a72336e 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/task/export/ExportData.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/export/ExportData.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.util.task.export; +package com.chatopera.cc.concurrent.dsdata.export; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/task/process/ContactsProcess.java b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/process/ContactsProcess.java similarity index 87% rename from contact-center/app/src/main/java/com/chatopera/cc/util/task/process/ContactsProcess.java rename to contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/process/ContactsProcess.java index 3158867e..e9bd0bbb 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/task/process/ContactsProcess.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/process/ContactsProcess.java @@ -14,9 +14,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.util.task.process; +package com.chatopera.cc.concurrent.dsdata.process; -import com.chatopera.cc.app.service.es.ContactsRepository; +import com.chatopera.cc.app.persistence.es.ContactsRepository; import com.chatopera.cc.app.model.Contacts; public class ContactsProcess implements JPAProcess{ diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/task/process/EntCustomerProcess.java b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/process/EntCustomerProcess.java similarity index 87% rename from contact-center/app/src/main/java/com/chatopera/cc/util/task/process/EntCustomerProcess.java rename to contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/process/EntCustomerProcess.java index 95d4bd94..173b3324 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/task/process/EntCustomerProcess.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/process/EntCustomerProcess.java @@ -14,9 +14,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.util.task.process; +package com.chatopera.cc.concurrent.dsdata.process; -import com.chatopera.cc.app.service.es.EntCustomerRepository; +import com.chatopera.cc.app.persistence.es.EntCustomerRepository; import com.chatopera.cc.app.model.EntCustomer; public class EntCustomerProcess implements JPAProcess{ diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/task/process/JPAProcess.java b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/process/JPAProcess.java similarity index 91% rename from contact-center/app/src/main/java/com/chatopera/cc/util/task/process/JPAProcess.java rename to contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/process/JPAProcess.java index 31d1b3b3..28a477d5 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/task/process/JPAProcess.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/process/JPAProcess.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.util.task.process; +package com.chatopera.cc.concurrent.dsdata.process; public interface JPAProcess { public void process(Object data) ; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/task/process/QuickReplyProcess.java b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/process/QuickReplyProcess.java similarity index 87% rename from contact-center/app/src/main/java/com/chatopera/cc/util/task/process/QuickReplyProcess.java rename to contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/process/QuickReplyProcess.java index e29cdf54..6500fd88 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/task/process/QuickReplyProcess.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/process/QuickReplyProcess.java @@ -14,9 +14,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.util.task.process; +package com.chatopera.cc.concurrent.dsdata.process; -import com.chatopera.cc.app.service.es.QuickReplyRepository; +import com.chatopera.cc.app.persistence.es.QuickReplyRepository; import com.chatopera.cc.app.model.QuickReply; public class QuickReplyProcess implements JPAProcess{ diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/task/process/TopicProcess.java b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/process/TopicProcess.java similarity index 87% rename from contact-center/app/src/main/java/com/chatopera/cc/util/task/process/TopicProcess.java rename to contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/process/TopicProcess.java index 8c6d2fe1..945be06b 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/task/process/TopicProcess.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/dsdata/process/TopicProcess.java @@ -14,14 +14,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.util.task.process; +package com.chatopera.cc.concurrent.dsdata.process; import java.util.Date; import java.util.List; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.app.service.es.TopicRepository; -import com.chatopera.cc.app.service.repository.TopicItemRepository; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.persistence.es.TopicRepository; +import com.chatopera.cc.app.persistence.repository.TopicItemRepository; import com.chatopera.cc.app.model.Topic; import com.chatopera.cc.app.model.TopicItem; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/disruptor/multiupdate/MultiUpdateEvent.java b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/multiupdate/MultiUpdateEvent.java similarity index 87% rename from contact-center/app/src/main/java/com/chatopera/cc/disruptor/multiupdate/MultiUpdateEvent.java rename to contact-center/app/src/main/java/com/chatopera/cc/concurrent/multiupdate/MultiUpdateEvent.java index 08ec3bc8..b3afaa4e 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/disruptor/multiupdate/MultiUpdateEvent.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/multiupdate/MultiUpdateEvent.java @@ -14,10 +14,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.disruptor.multiupdate; +package com.chatopera.cc.concurrent.multiupdate; -import com.chatopera.cc.app.service.hibernate.BaseService; -import com.chatopera.cc.event.UserEvent; +import com.chatopera.cc.app.persistence.hibernate.BaseService; +import com.chatopera.cc.exchange.UserEvent; public class MultiUpdateEvent implements UserEvent { diff --git a/contact-center/app/src/main/java/com/chatopera/cc/disruptor/multiupdate/MultiUpdateEventFactory.java b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/multiupdate/MultiUpdateEventFactory.java similarity index 87% rename from contact-center/app/src/main/java/com/chatopera/cc/disruptor/multiupdate/MultiUpdateEventFactory.java rename to contact-center/app/src/main/java/com/chatopera/cc/concurrent/multiupdate/MultiUpdateEventFactory.java index 764b5885..090aed0a 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/disruptor/multiupdate/MultiUpdateEventFactory.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/multiupdate/MultiUpdateEventFactory.java @@ -14,10 +14,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.disruptor.multiupdate; +package com.chatopera.cc.concurrent.multiupdate; import com.lmax.disruptor.EventFactory; -import com.chatopera.cc.disruptor.user.UserDataEvent; +import com.chatopera.cc.concurrent.user.UserDataEvent; public class MultiUpdateEventFactory implements EventFactory{ diff --git a/contact-center/app/src/main/java/com/chatopera/cc/disruptor/multiupdate/MultiUpdateEventHandler.java b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/multiupdate/MultiUpdateEventHandler.java similarity index 86% rename from contact-center/app/src/main/java/com/chatopera/cc/disruptor/multiupdate/MultiUpdateEventHandler.java rename to contact-center/app/src/main/java/com/chatopera/cc/concurrent/multiupdate/MultiUpdateEventHandler.java index 6a5587b7..600a0201 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/disruptor/multiupdate/MultiUpdateEventHandler.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/multiupdate/MultiUpdateEventHandler.java @@ -14,12 +14,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.disruptor.multiupdate; +package com.chatopera.cc.concurrent.multiupdate; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.lmax.disruptor.EventHandler; -import com.chatopera.cc.disruptor.user.UserDataEvent; -import com.chatopera.cc.util.task.ESData; +import com.chatopera.cc.concurrent.user.UserDataEvent; +import com.chatopera.cc.concurrent.dsdata.ESData; @SuppressWarnings("rawtypes") public class MultiUpdateEventHandler implements EventHandler{ diff --git a/contact-center/app/src/main/java/com/chatopera/cc/disruptor/multiupdate/MultiUpdateEventProducer.java b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/multiupdate/MultiUpdateEventProducer.java similarity index 89% rename from contact-center/app/src/main/java/com/chatopera/cc/disruptor/multiupdate/MultiUpdateEventProducer.java rename to contact-center/app/src/main/java/com/chatopera/cc/concurrent/multiupdate/MultiUpdateEventProducer.java index 1b7cf379..691035d6 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/disruptor/multiupdate/MultiUpdateEventProducer.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/multiupdate/MultiUpdateEventProducer.java @@ -14,10 +14,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.disruptor.multiupdate; +package com.chatopera.cc.concurrent.multiupdate; import com.lmax.disruptor.RingBuffer; -import com.chatopera.cc.disruptor.user.UserDataEvent; +import com.chatopera.cc.concurrent.user.UserDataEvent; @SuppressWarnings("rawtypes") public class MultiUpdateEventProducer { diff --git a/contact-center/app/src/main/java/com/chatopera/cc/disruptor/user/UserDataEvent.java b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/user/UserDataEvent.java similarity index 88% rename from contact-center/app/src/main/java/com/chatopera/cc/disruptor/user/UserDataEvent.java rename to contact-center/app/src/main/java/com/chatopera/cc/concurrent/user/UserDataEvent.java index 414a212c..0a59d2a6 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/disruptor/user/UserDataEvent.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/user/UserDataEvent.java @@ -14,10 +14,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.disruptor.user; +package com.chatopera.cc.concurrent.user; -import com.chatopera.cc.event.UserEvent; +import com.chatopera.cc.exchange.UserEvent; public class UserDataEvent{ private long id ; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/disruptor/user/UserDataEventFactory.java b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/user/UserDataEventFactory.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/disruptor/user/UserDataEventFactory.java rename to contact-center/app/src/main/java/com/chatopera/cc/concurrent/user/UserDataEventFactory.java index f3cf7408..8a3f4f32 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/disruptor/user/UserDataEventFactory.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/user/UserDataEventFactory.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.disruptor.user; +package com.chatopera.cc.concurrent.user; import com.lmax.disruptor.EventFactory; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/disruptor/user/UserDataEventProducer.java b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/user/UserDataEventProducer.java similarity index 90% rename from contact-center/app/src/main/java/com/chatopera/cc/disruptor/user/UserDataEventProducer.java rename to contact-center/app/src/main/java/com/chatopera/cc/concurrent/user/UserDataEventProducer.java index fed91a28..57dd6eb0 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/disruptor/user/UserDataEventProducer.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/user/UserDataEventProducer.java @@ -14,10 +14,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.disruptor.user; +package com.chatopera.cc.concurrent.user; import com.lmax.disruptor.RingBuffer; -import com.chatopera.cc.event.UserEvent; +import com.chatopera.cc.exchange.UserEvent; public class UserDataEventProducer { private final RingBuffer ringBuffer; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/disruptor/user/UserEventHandler.java b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/user/UserEventHandler.java similarity index 83% rename from contact-center/app/src/main/java/com/chatopera/cc/disruptor/user/UserEventHandler.java rename to contact-center/app/src/main/java/com/chatopera/cc/concurrent/user/UserEventHandler.java index 7544bc42..1d4b4728 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/disruptor/user/UserEventHandler.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/concurrent/user/UserEventHandler.java @@ -14,22 +14,22 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.disruptor.user; +package com.chatopera.cc.concurrent.user; import java.util.List; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.mail.Mail; -import com.chatopera.cc.app.service.repository.OnlineUserRepository; -import com.chatopera.cc.app.service.repository.UserEventRepository; -import com.chatopera.cc.app.service.repository.UserTraceRepository; +import com.chatopera.cc.app.persistence.repository.OnlineUserRepository; +import com.chatopera.cc.app.persistence.repository.UserEventRepository; +import com.chatopera.cc.app.persistence.repository.UserTraceRepository; import com.chatopera.cc.app.model.OnlineUser; import com.chatopera.cc.app.model.UserTraceHistory; import org.apache.commons.lang3.StringUtils; import com.lmax.disruptor.EventHandler; -import com.chatopera.cc.app.MainUtils; -import com.chatopera.cc.app.service.repository.RequestLogRepository; +import com.chatopera.cc.app.basic.MainUtils; +import com.chatopera.cc.app.persistence.repository.RequestLogRepository; import com.chatopera.cc.app.model.RequestLog; import com.chatopera.cc.app.model.UserHistory; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/disruptor/chatbot/ChatbotEventHandler.java b/contact-center/app/src/main/java/com/chatopera/cc/disruptor/chatbot/ChatbotEventHandler.java deleted file mode 100644 index 5c49086f..00000000 --- a/contact-center/app/src/main/java/com/chatopera/cc/disruptor/chatbot/ChatbotEventHandler.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (C) 2018 Chatopera Inc, - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.chatopera.cc.disruptor.chatbot; - -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.disruptor.multiupdate.MultiUpdateEvent; -import com.chatopera.cc.disruptor.user.UserDataEvent; -import com.chatopera.cc.util.task.ESData; -import com.lmax.disruptor.EventHandler; - -@SuppressWarnings("rawtypes") -public class ChatbotEventHandler implements EventHandler{ - - @Override - public void onEvent(UserDataEvent event, long arg1, boolean arg2) - throws Exception { - if(event.getEvent()!=null){ - MultiUpdateEvent multiEventEvent = (MultiUpdateEvent)event.getEvent() ; - if(multiEventEvent.getData() instanceof ESData){ - //只存储到 ES,不存储到数据库。目前只有名单数据 - }else{ - if(MainContext.MultiUpdateType.SAVE.toString().equals(multiEventEvent.getEventype())){ - multiEventEvent.getCrudRes().delete(multiEventEvent.getData()) ; - multiEventEvent.getCrudRes().save(multiEventEvent.getData()) ; - }else if(MainContext.MultiUpdateType.DELETE.toString().equals(multiEventEvent.getEventype())){ - multiEventEvent.getCrudRes().delete(multiEventEvent.getData()) ; - } - } - } - } - -} diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/extra/CallCenterInterface.java b/contact-center/app/src/main/java/com/chatopera/cc/exchange/CallCenterInterface.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/util/extra/CallCenterInterface.java rename to contact-center/app/src/main/java/com/chatopera/cc/exchange/CallCenterInterface.java index 683d72cd..0099eb27 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/extra/CallCenterInterface.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/exchange/CallCenterInterface.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.util.extra; +package com.chatopera.cc.exchange; import com.chatopera.cc.app.model.PbxHost; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/event/CallOutWireEvent.java b/contact-center/app/src/main/java/com/chatopera/cc/exchange/CallOutWireEvent.java similarity index 98% rename from contact-center/app/src/main/java/com/chatopera/cc/event/CallOutWireEvent.java rename to contact-center/app/src/main/java/com/chatopera/cc/exchange/CallOutWireEvent.java index 78dd0d83..834695b1 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/event/CallOutWireEvent.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/exchange/CallOutWireEvent.java @@ -13,10 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.event; +package com.chatopera.cc.exchange; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.app.MainContext.CallTypeEnum; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.basic.MainContext.CallTypeEnum; import com.chatopera.cc.util.Constants; import com.chatopera.cc.exception.CallOutRuntimeException; import com.google.gson.JsonObject; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/extra/DataExchangeInterface.java b/contact-center/app/src/main/java/com/chatopera/cc/exchange/DataExchangeInterface.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/util/extra/DataExchangeInterface.java rename to contact-center/app/src/main/java/com/chatopera/cc/exchange/DataExchangeInterface.java index 9f959b2f..72f5dc96 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/extra/DataExchangeInterface.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/exchange/DataExchangeInterface.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.util.extra; +package com.chatopera.cc.exchange; import java.io.Serializable; import java.util.List; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/event/UserEvent.java b/contact-center/app/src/main/java/com/chatopera/cc/exchange/UserEvent.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/event/UserEvent.java rename to contact-center/app/src/main/java/com/chatopera/cc/exchange/UserEvent.java index 97af5cb7..7715a8a8 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/event/UserEvent.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/exchange/UserEvent.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.event; +package com.chatopera.cc.exchange; public interface UserEvent extends java.io.Serializable { diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/CallCenterUtils.java b/contact-center/app/src/main/java/com/chatopera/cc/util/CallCenterUtils.java index 127c4403..cc00c2b4 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/CallCenterUtils.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/util/CallCenterUtils.java @@ -29,28 +29,28 @@ import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; import javax.validation.Valid; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.app.service.repository.UserRoleRepository; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.persistence.repository.UserRoleRepository; import org.apache.commons.lang.StringUtils; import org.elasticsearch.index.query.BoolQueryBuilder; import org.springframework.data.domain.PageImpl; import org.springframework.data.jpa.domain.Specification; import org.springframework.ui.ModelMap; -import com.chatopera.cc.es.SearchTools; -import com.chatopera.cc.es.UKDataBean; -import com.chatopera.cc.app.service.cache.CacheHelper; -import com.chatopera.cc.app.service.repository.CallAgentRepository; -import com.chatopera.cc.app.service.repository.UKefuCallOutFilterRepository; -import com.chatopera.cc.app.service.repository.UKefuCallOutRoleRepository; -import com.chatopera.cc.app.service.repository.UKefuCallOutTaskRepository; -import com.chatopera.cc.app.service.repository.ExtentionRepository; -import com.chatopera.cc.app.service.repository.FormFilterRepository; -import com.chatopera.cc.app.service.repository.JobDetailRepository; -import com.chatopera.cc.app.service.repository.OrganRepository; -import com.chatopera.cc.app.service.repository.SaleStatusRepository; -import com.chatopera.cc.app.service.repository.SipTrunkRepository; -import com.chatopera.cc.app.service.repository.UserRepository; +import com.chatopera.cc.util.es.SearchTools; +import com.chatopera.cc.util.es.UKDataBean; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.persistence.repository.CallAgentRepository; +import com.chatopera.cc.app.persistence.repository.UKefuCallOutFilterRepository; +import com.chatopera.cc.app.persistence.repository.UKefuCallOutRoleRepository; +import com.chatopera.cc.app.persistence.repository.UKefuCallOutTaskRepository; +import com.chatopera.cc.app.persistence.repository.ExtentionRepository; +import com.chatopera.cc.app.persistence.repository.FormFilterRepository; +import com.chatopera.cc.app.persistence.repository.JobDetailRepository; +import com.chatopera.cc.app.persistence.repository.OrganRepository; +import com.chatopera.cc.app.persistence.repository.SaleStatusRepository; +import com.chatopera.cc.app.persistence.repository.SipTrunkRepository; +import com.chatopera.cc.app.persistence.repository.UserRepository; import com.chatopera.cc.app.model.CallAgent; import com.chatopera.cc.app.model.UKefuCallOutFilter; import com.chatopera.cc.app.model.UKefuCallOutRole; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/CallOutUtils.java b/contact-center/app/src/main/java/com/chatopera/cc/util/CallOutUtils.java index 25de2531..73cee2e0 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/CallOutUtils.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/util/CallOutUtils.java @@ -19,10 +19,10 @@ package com.chatopera.cc.util; import java.util.Date; import java.util.List; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.es.UKDataBean; -import com.chatopera.cc.app.service.cache.CacheHelper; -import com.chatopera.cc.app.service.repository.UKefuCallOutTaskRepository; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.util.es.UKDataBean; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.persistence.repository.UKefuCallOutTaskRepository; import com.chatopera.cc.app.model.UKefuCallOutConfig; import com.chatopera.cc.app.model.JobDetail; import com.chatopera.cc.app.model.TableProperties; @@ -30,10 +30,10 @@ import org.apache.commons.lang.StringUtils; import com.chatopera.cc.app.im.client.NettyClients; import com.chatopera.cc.util.freeswitch.model.CallCenterAgent; -import com.chatopera.cc.app.service.repository.UKefuCallOutConfigRepository; -import com.chatopera.cc.app.service.repository.UKefuCallOutNamesRepository; -import com.chatopera.cc.app.service.repository.JobDetailRepository; -import com.chatopera.cc.app.service.repository.MetadataRepository; +import com.chatopera.cc.app.persistence.repository.UKefuCallOutConfigRepository; +import com.chatopera.cc.app.persistence.repository.UKefuCallOutNamesRepository; +import com.chatopera.cc.app.persistence.repository.JobDetailRepository; +import com.chatopera.cc.app.persistence.repository.MetadataRepository; import com.chatopera.cc.app.model.UKefuCallOutNames; import com.chatopera.cc.app.model.UKefuCallOutTask; import com.chatopera.cc.app.model.MetadataTable; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/ChatbotUtils.java b/contact-center/app/src/main/java/com/chatopera/cc/util/ChatbotUtils.java deleted file mode 100644 index 64dac624..00000000 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/ChatbotUtils.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (C) 2018 Chatopera Inc, - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.chatopera.cc.util; - -import org.apache.commons.lang.StringUtils; - -import java.util.Arrays; -import java.util.HashSet; - -public class ChatbotUtils { - public static final HashSet VALID_LANGS = new HashSet(Arrays.asList(new String[]{"zh_CN", "en_US"})); - public static final String CHATBOT_FIRST = "机器人客服优先"; - public static final String HUMAN_FIRST = "人工客服优先"; - public static final HashSet VALID_WORKMODELS = new HashSet(Arrays.asList(new String[]{CHATBOT_FIRST, HUMAN_FIRST})); - - public static final String SNS_TYPE_WEBIM = "app"; - - - /** - * 使用snsid得到ChatbotID - * - * @param snsid - * @return - */ - public static String resolveChatbotIDWithSnsid(String snsid, String clientId) { - return (clientId + "_" + snsid).toLowerCase(); - } - - /** - * 使用chatbotID得到snsid - * - * @param chatbotID - * @return - */ - public static String resolveSnsidWithChatbotID(String chatbotID, String clientId) { - return StringUtils.remove(chatbotID, clientId.toLowerCase() + "_"); - } -} diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/Constants.java b/contact-center/app/src/main/java/com/chatopera/cc/util/Constants.java index a0dff2b7..7efd6f7b 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/Constants.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/util/Constants.java @@ -15,7 +15,7 @@ */ package com.chatopera.cc.util; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import java.text.DecimalFormat; import java.text.SimpleDateFormat; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/CronTools.java b/contact-center/app/src/main/java/com/chatopera/cc/util/CronTools.java index 6862af75..e04ab135 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/CronTools.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/util/CronTools.java @@ -19,7 +19,7 @@ package com.chatopera.cc.util; import java.text.ParseException; import java.util.Date; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; import org.quartz.CronExpression; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/IPTools.java b/contact-center/app/src/main/java/com/chatopera/cc/util/IPTools.java index 9f44435b..0f81ce49 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/IPTools.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/util/IPTools.java @@ -26,7 +26,7 @@ import org.lionsoul.ip2region.DbConfig; import org.lionsoul.ip2region.DbMakerConfigException; import org.lionsoul.ip2region.DbSearcher; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; public class IPTools { private String IP_DATA_PATH = "WEB-INF/data/ip/ip.db"; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/MessageUtils.java b/contact-center/app/src/main/java/com/chatopera/cc/util/MessageUtils.java deleted file mode 100644 index 34818364..00000000 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/MessageUtils.java +++ /dev/null @@ -1,328 +0,0 @@ -/* - * Copyright (C) 2017 优客服-多渠道客服系统 - * Modifications copyright (C) 2018 Chatopera Inc, - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.chatopera.cc.util; - -import java.util.Date; - -import com.chatopera.cc.app.im.client.NettyClients; -import com.chatopera.cc.app.service.cache.CacheHelper; -import com.chatopera.cc.app.service.repository.AgentUserTaskRepository; -import com.chatopera.cc.app.im.message.ChatMessage; -import com.chatopera.cc.app.model.AgentUser; -import org.apache.commons.lang.StringUtils; - -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.app.service.repository.ChatMessageRepository; -import com.chatopera.cc.app.model.AgentUserTask; -import com.chatopera.cc.app.model.AiUser; -import com.chatopera.cc.app.model.MessageOutContent; - -public class MessageUtils { - /** - * - * @param image - * @param userid - */ - public static ChatMessage uploadImage(String image , String attachid, int size , String name , String userid){ - return createMessage(image , size , name , MainContext.MediaTypeEnum.IMAGE.toString(), userid , attachid); - } - public static ChatMessage uploadImage(String image , String attachid, int size , String name , String channel , String userid , String username , String appid , String orgi){ - return createMessage(image , size , name , channel , MainContext.MediaTypeEnum.IMAGE.toString(), userid , username, appid , orgi , attachid); - } - - /** - * - * @param userid - */ - public static ChatMessage uploadFile(String url , int size , String name , String userid , String attachid){ - return createMessage(url , size , name , MainContext.MediaTypeEnum.FILE.toString(), userid , attachid); - } - public static ChatMessage uploadFile(String url , int size , String name, String channel , String userid , String username , String appid , String orgi , String attachid){ - return createMessage(url , size , name , channel , MainContext.MediaTypeEnum.FILE.toString(), userid , username, appid , orgi , attachid); - } - public static ChatMessage createMessage(String message , int length , String name , String msgtype , String userid , String attachid){ - AgentUser agentUser = (AgentUser) CacheHelper.getAgentUserCacheBean().getCacheObject(userid, MainContext.SYSTEM_ORGI); - ChatMessage data = new ChatMessage() ; - data.setFilesize(length); - data.setFilename(name); - data.setAttachmentid(attachid); - - data.setMessage(message); - - data.setMsgtype(msgtype); - - data.setType(MainContext.MessageTypeEnum.MESSAGE.toString()); - - if(agentUser != null){ - data.setUserid(agentUser.getUserid()); - data.setUsername(agentUser.getUsername()); - data.setTouser(agentUser.getAgentno()); - data.setAppid(agentUser.getAppid()); - data.setOrgi(agentUser.getOrgi()); - createMessage(data, msgtype, userid); - } - // TODO #75 create Chatbot Message - // https://github.com/chatopera/cosin/issues/75 - return data ; - } - /** - * 发送消息 - * @param data - * @param msgtype - */ - private static void sendMessage(ChatMessage data , String msgtype) { - MessageOutContent outMessage = new MessageOutContent() ; - - outMessage.setMessage(data.getMessage()); - outMessage.setFilename(data.getFilename()); - outMessage.setFilesize(data.getFilesize()); - - - outMessage.setMessageType(msgtype); - outMessage.setCalltype(MainContext.CallTypeEnum.IN.toString()); - outMessage.setSnsAccount(null); - - outMessage.setContextid(data.getContextid()); - outMessage.setFromUser(data.getUserid()); - outMessage.setToUser(data.getTouser()); - outMessage.setChannelMessage(data); - outMessage.setNickName(data.getUsername()); - outMessage.setCreatetime(data.getCreatetime()); - - if(!StringUtils.isBlank(data.getUserid()) && MainContext.MessageTypeEnum.MESSAGE.toString().equals(data.getType())){ - NettyClients.getInstance().sendIMEventMessage(data.getUserid(), MainContext.MessageTypeEnum.MESSAGE.toString(), outMessage); - } - } - - public static ChatMessage createMessage(String message , int length , String name ,String channel ,String msgtype , String userid , String username , String appid , String orgi , String attachid){ - ChatMessage data = new ChatMessage() ; - if(!StringUtils.isBlank(userid)){ - data.setUserid(userid); - data.setUsername(username); - data.setTouser(userid); - data.setAppid(appid); - data.setOrgi(orgi); - data.setChannel(channel); - data.setMessage(message); - - data.setFilesize(length); - data.setFilename(name); - data.setAttachmentid(attachid); - - data.setMsgtype(msgtype); - - data.setType(MainContext.MessageTypeEnum.MESSAGE.toString()); - createAiMessage(data , appid , channel, MainContext.CallTypeEnum.IN.toString() , MainContext.AiItemType.USERINPUT.toString() , msgtype, data.getUserid()); - } - return data ; - } - - public static void createMessage(ChatMessage data , String msgtype , String userid){ - AgentUser agentUser = (AgentUser) CacheHelper.getAgentUserCacheBean().getCacheObject(userid, MainContext.SYSTEM_ORGI); - MessageOutContent outMessage = new MessageOutContent() ; - - outMessage.setMessage(data.getMessage()); - outMessage.setFilename(data.getFilename()); - outMessage.setFilesize(data.getFilesize()); - - - outMessage.setMessageType(msgtype); - outMessage.setCalltype(MainContext.CallTypeEnum.IN.toString()); - outMessage.setAgentUser(agentUser); - outMessage.setSnsAccount(null); - - MessageOutContent statusMessage = null ; - if(agentUser==null){ - statusMessage = new MessageOutContent() ; - statusMessage.setMessage(data.getMessage()); - statusMessage.setMessageType(MainContext.MessageTypeEnum.STATUS.toString()); - statusMessage.setCalltype(MainContext.CallTypeEnum.OUT.toString()); - statusMessage.setMessage("当前坐席全忙,请稍候"); - }else{ - data.setUserid(agentUser.getUserid()); - data.setUsername(agentUser.getUsername()); - data.setTouser(agentUser.getAgentno()); - - data.setAgentuser(agentUser.getId()); - - data.setAgentserviceid(agentUser.getAgentserviceid()); - - data.setAppid(agentUser.getAppid()); - data.setOrgi(agentUser.getOrgi()); - - data.setMsgtype(msgtype); - - - data.setUsername(agentUser.getUsername()); - data.setUsession(agentUser.getUserid()); //agentUser作为 session id - data.setContextid(agentUser.getContextid()); - data.setCalltype(MainContext.CallTypeEnum.IN.toString()); - if(!StringUtils.isBlank(agentUser.getAgentno())){ - data.setTouser(agentUser.getAgentno()); - } - data.setChannel(agentUser.getChannel()); - - outMessage.setContextid(agentUser.getContextid()); - outMessage.setFromUser(data.getUserid()); - outMessage.setToUser(data.getTouser()); - outMessage.setChannelMessage(data); - outMessage.setNickName(agentUser.getUsername()); - outMessage.setCreatetime(data.getCreatetime()); - - if(data.getType()!=null && data.getType().equals(MainContext.MessageTypeEnum.MESSAGE.toString())){ - AgentUserTaskRepository agentUserTaskRes = MainContext.getContext().getBean(AgentUserTaskRepository.class) ; - AgentUserTask agentUserTask = agentUserTaskRes.getOne(agentUser.getId()) ; - if(agentUserTask!=null){ - if(agentUserTask.getLastgetmessage() != null && agentUserTask.getLastmessage()!=null){ - data.setLastagentmsgtime(agentUserTask.getLastgetmessage()); - data.setLastmsgtime(agentUserTask.getLastmessage()); - data.setAgentreplyinterval((int)((System.currentTimeMillis() - agentUserTask.getLastgetmessage().getTime())/1000)); //坐席上次回复消息的间隔 - data.setAgentreplytime((int)((System.currentTimeMillis() - agentUserTask.getLastmessage().getTime())/1000)); //坐席回复消息花费时间 - } - agentUserTask.setUserasks(agentUserTask.getUserasks()+1); //总咨询记录数量 - agentUserTask.setAgentreplytime(agentUserTask.getAgentreplytime() + data.getAgentreplyinterval()); //总时长 - if(agentUserTask.getUserasks()>0){ - agentUserTask.setAvgreplytime(agentUserTask.getAgentreplytime() / agentUserTask.getUserasks()); - } - - agentUserTask.setLastmessage(new Date()); - agentUserTask.setWarnings("0"); - agentUserTask.setWarningtime(null); - - /** - * 去掉坐席超时回复消息提醒 - */ - agentUserTask.setReptime(null); - agentUserTask.setReptimes("0"); - - agentUserTask.setLastmsg(data.getMessage().length() > 100 ? data.getMessage().substring(0 , 100) : data.getMessage()); - agentUserTask.setTokenum(agentUserTask.getTokenum()+1); - data.setTokenum(agentUserTask.getTokenum()); - agentUserTaskRes.save(agentUserTask) ; - } - } - - /** - * 保存消息 - */ - if(MainContext.MessageTypeEnum.MESSAGE.toString().equals(data.getType())){ - MainContext.getContext().getBean(ChatMessageRepository.class).save(data) ; - } - } - if(!StringUtils.isBlank(data.getUserid()) && MainContext.MessageTypeEnum.MESSAGE.toString().equals(data.getType())){ - NettyClients.getInstance().sendIMEventMessage(data.getUserid(), MainContext.MessageTypeEnum.MESSAGE.toString(), outMessage); - if(statusMessage!=null){ - NettyClients.getInstance().sendIMEventMessage(data.getUserid(), MainContext.MessageTypeEnum.STATUS.toString(), statusMessage); - } - } - if(agentUser!=null && !StringUtils.isBlank(agentUser.getAgentno())){ - //将消息发送给 坐席 - NettyClients.getInstance().sendAgentEventMessage(agentUser.getAgentno(), MainContext.MessageTypeEnum.MESSAGE.toString(), data); - } - } - - public static ChatMessage createMessage(String message , int length , String name ,String channel ,String msgtype , String userid , String username , String appid , String orgi , String attachid ,String aiid){ - ChatMessage data = new ChatMessage() ; - if(!StringUtils.isBlank(userid)){ - data.setUserid(userid); - data.setUsername(username); - data.setTouser(userid); - data.setAppid(appid); - data.setOrgi(orgi); - data.setChannel(channel); - data.setMessage(message); - - data.setAiid(aiid); - - data.setFilesize(length); - data.setFilename(name); - data.setAttachmentid(attachid); - - data.setMsgtype(msgtype); - - data.setType(MainContext.MessageTypeEnum.MESSAGE.toString()); - createAiMessage(data , appid , channel, MainContext.CallTypeEnum.IN.toString() , MainContext.AiItemType.USERINPUT.toString() , msgtype, data.getUserid()); - } - return data ; - } - - public static MessageOutContent createAiMessage(ChatMessage data , String appid,String channel , String direction , String chatype, String msgtype , String userid){ - MessageOutContent outMessage = new MessageOutContent() ; - - outMessage.setMessage(data.getMessage()); - outMessage.setMessageType(msgtype); - outMessage.setCalltype(direction); - outMessage.setAgentUser(null); - outMessage.setSnsAccount(null); - - { - data.setUserid(userid); - data.setUsername(data.getUsername()); - data.setTouser(userid); - - data.setAgentuser(userid); - - - data.setAgentserviceid(data.getContextid()); - data.setChatype(chatype); - - data.setChannel(channel); - - data.setAppid(data.getAppid()); - data.setOrgi(data.getOrgi()); - - data.setMsgtype(msgtype); - - data.setUsername(data.getUsername()); - data.setUsession(data.getUserid()); //agentUser作为 session id - data.setContextid(data.getContextid()); - data.setCalltype(direction); - - outMessage.setContextid(data.getContextid()); - outMessage.setFromUser(data.getUserid()); - outMessage.setToUser(data.getTouser()); - outMessage.setChannelMessage(data); - outMessage.setNickName(data.getUsername()); - outMessage.setCreatetime(data.getCreatetime()); - - if(!StringUtils.isBlank(data.getSuggestmsg())) { - outMessage.setSuggest(data.getSuggest()); - } - - data.setUpdatetime(System.currentTimeMillis()); - - - /** - * 保存消息 - */ - if(MainContext.MessageTypeEnum.MESSAGE.toString().equals(data.getType())){ - MainContext.getContext().getBean(ChatMessageRepository.class).save(data) ; - } - AgentUser agentUser = (AgentUser) CacheHelper.getAgentUserCacheBean().getCacheObject(userid, MainContext.SYSTEM_ORGI); - if(agentUser!=null && !StringUtils.isBlank(agentUser.getAgentno())){ - //将消息发送给 坐席 - - if(MainContext.CallTypeEnum.OUT.toString().equals(direction)) { - data.setUserid(agentUser.getAgentno()); - } - NettyClients.getInstance().sendAgentEventMessage(agentUser.getAgentno(), MainContext.MessageTypeEnum.MESSAGE.toString(), data); - } - } - return outMessage ; - } - -} diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/OnlineUserUtils.java b/contact-center/app/src/main/java/com/chatopera/cc/util/OnlineUserUtils.java index fb8ea347..23669882 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/OnlineUserUtils.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/util/OnlineUserUtils.java @@ -16,14 +16,14 @@ */ package com.chatopera.cc.util; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.app.MainUtils; -import com.chatopera.cc.util.extra.DataExchangeInterface; +import com.chatopera.cc.app.algorithm.AutomaticServiceDist; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.basic.MainUtils; +import com.chatopera.cc.exchange.DataExchangeInterface; import com.chatopera.cc.app.model.*; -import com.chatopera.cc.app.service.acd.ServiceQuene; -import com.chatopera.cc.app.service.cache.CacheHelper; -import com.chatopera.cc.app.service.impl.AgentUserService; -import com.chatopera.cc.app.service.repository.*; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.persistence.impl.AgentUserService; +import com.chatopera.cc.app.persistence.repository.*; import com.chatopera.cc.app.im.router.RouterHelper; import com.chatopera.cc.app.im.message.NewRequestMessage; import com.chatopera.cc.app.im.message.OtherMessageItem; @@ -848,8 +848,8 @@ public class OnlineUserUtils { MessageDataBean outMessageDataBean = null; - SessionConfig sessionConfig = ServiceQuene.initSessionConfig(data.getOrgi()); - AgentReport report = ServiceQuene.getAgentReport(data.getOrgi()); + SessionConfig sessionConfig = AutomaticServiceDist.initSessionConfig(data.getOrgi()); + AgentReport report = AutomaticServiceDist.getAgentReport(data.getOrgi()); if (sessionConfig.isHourcheck() && !MainUtils.isInWorkingHours(sessionConfig.getWorkinghours())) { data.setMessage(sessionConfig.getNotinwhmsg()); @@ -1147,7 +1147,7 @@ public class OnlineUserUtils { public static List search(String q, String orgi, User user) throws IOException, TemplateException { List otherMessageItemList = null; String param = ""; - SessionConfig sessionConfig = ServiceQuene.initSessionConfig(orgi); + SessionConfig sessionConfig = AutomaticServiceDist.initSessionConfig(orgi); if (!StringUtils.isBlank(sessionConfig.getOqrsearchurl())) { Template templet = MainUtils.getTemplate(sessionConfig.getOqrsearchinput()); Map values = new HashMap(); @@ -1205,7 +1205,7 @@ public class OnlineUserUtils { public static OtherMessageItem detail(String id, String orgi, User user) throws IOException, TemplateException { OtherMessageItem otherMessageItem = null; String param = ""; - SessionConfig sessionConfig = ServiceQuene.initSessionConfig(orgi); + SessionConfig sessionConfig = AutomaticServiceDist.initSessionConfig(orgi); if (!StringUtils.isBlank(sessionConfig.getOqrdetailinput())) { Template templet = MainUtils.getTemplate(sessionConfig.getOqrdetailinput()); Map values = new HashMap(); diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/bi/model/Level.java b/contact-center/app/src/main/java/com/chatopera/cc/util/bi/model/Level.java index 50b2647e..c5dc4cf0 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/bi/model/Level.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/util/bi/model/Level.java @@ -22,7 +22,7 @@ import java.util.List; import org.apache.commons.lang.StringUtils; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; public class Level implements java.io.Serializable{ /** diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/bi/model/ValueData.java b/contact-center/app/src/main/java/com/chatopera/cc/util/bi/model/ValueData.java index 2c009ea3..8c9938b2 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/bi/model/ValueData.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/util/bi/model/ValueData.java @@ -19,7 +19,7 @@ package com.chatopera.cc.util.bi.model; import java.util.List; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.app.model.ColumnProperties; public class ValueData implements java.io.Serializable,Cloneable{ diff --git a/contact-center/app/src/main/java/com/chatopera/cc/es/ESTools.java b/contact-center/app/src/main/java/com/chatopera/cc/util/es/ESTools.java similarity index 95% rename from contact-center/app/src/main/java/com/chatopera/cc/es/ESTools.java rename to contact-center/app/src/main/java/com/chatopera/cc/util/es/ESTools.java index de0ce11e..add1f915 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/es/ESTools.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/util/es/ESTools.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.es; +package com.chatopera.cc.util.es; import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder; @@ -27,7 +27,7 @@ import org.elasticsearch.common.xcontent.XContentBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.app.model.MetadataTable; public class ESTools { diff --git a/contact-center/app/src/main/java/com/chatopera/cc/es/SearchTools.java b/contact-center/app/src/main/java/com/chatopera/cc/util/es/SearchTools.java similarity index 96% rename from contact-center/app/src/main/java/com/chatopera/cc/es/SearchTools.java rename to contact-center/app/src/main/java/com/chatopera/cc/util/es/SearchTools.java index 05613f71..31df49d7 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/es/SearchTools.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/util/es/SearchTools.java @@ -14,14 +14,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.es; +package com.chatopera.cc.util.es; import static org.elasticsearch.index.query.QueryBuilders.rangeQuery; import static org.elasticsearch.index.query.QueryBuilders.termQuery; import java.util.List; -import com.chatopera.cc.app.MainContext; +import com.chatopera.cc.app.basic.MainContext; import org.apache.commons.lang3.StringUtils; import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.QueryBuilder; @@ -31,7 +31,7 @@ import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; -import com.chatopera.cc.app.service.impl.ESDataExchangeImpl; +import com.chatopera.cc.app.persistence.impl.ESDataExchangeImpl; import com.chatopera.cc.app.model.FormFilter; import com.chatopera.cc.app.model.FormFilterItem; import com.chatopera.cc.app.model.MetadataTable; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/es/UKDataBean.java b/contact-center/app/src/main/java/com/chatopera/cc/util/es/UKDataBean.java similarity index 94% rename from contact-center/app/src/main/java/com/chatopera/cc/es/UKDataBean.java rename to contact-center/app/src/main/java/com/chatopera/cc/util/es/UKDataBean.java index df1263f5..fd4a4337 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/es/UKDataBean.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/util/es/UKDataBean.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.es; +package com.chatopera.cc.util.es; import java.util.Date; import java.util.HashMap; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/log/UKeFuAppender.java b/contact-center/app/src/main/java/com/chatopera/cc/util/log/UKeFuAppender.java index 9a4fce2d..99610a13 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/log/UKeFuAppender.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/util/log/UKeFuAppender.java @@ -21,8 +21,8 @@ import java.util.Date; import ch.qos.logback.classic.Level; import ch.qos.logback.classic.spi.ILoggingEvent; -import com.chatopera.cc.app.MainContext; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.app.model.Log; public class UKeFuAppender extends ch.qos.logback.core.ConsoleAppender { diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/mail/Mail.java b/contact-center/app/src/main/java/com/chatopera/cc/util/mail/Mail.java index b18ee8a6..7ab95e09 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/mail/Mail.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/util/mail/Mail.java @@ -18,7 +18,7 @@ package com.chatopera.cc.util.mail; import java.util.List; -import com.chatopera.cc.event.UserEvent; +import com.chatopera.cc.exchange.UserEvent; public class Mail implements UserEvent{ public Mail(String email, String subject, String content) { diff --git a/contact-center/app/src/main/java/mondrian/spi/impl/SqlStatisticsProvider.java b/contact-center/app/src/main/java/mondrian/spi/impl/SqlStatisticsProvider.java index c76d99b3..8156afb5 100644 --- a/contact-center/app/src/main/java/mondrian/spi/impl/SqlStatisticsProvider.java +++ b/contact-center/app/src/main/java/mondrian/spi/impl/SqlStatisticsProvider.java @@ -15,7 +15,7 @@ import java.util.Arrays; import javax.sql.DataSource; -import com.chatopera.cc.app.MainUtils; +import com.chatopera.cc.app.basic.MainUtils; import mondrian.rolap.RolapUtil; import mondrian.rolap.SqlStatement; diff --git a/contact-center/app/src/main/java/net/coobird/thumbnailator/Thumbnails.java b/contact-center/app/src/main/java/net/coobird/thumbnailator/Thumbnails.java index 6ecea8fb..464f8fee 100644 --- a/contact-center/app/src/main/java/net/coobird/thumbnailator/Thumbnails.java +++ b/contact-center/app/src/main/java/net/coobird/thumbnailator/Thumbnails.java @@ -353,7 +353,7 @@ public final class Thumbnails /** * The builder interface for Thumbnailator to set up the thumbnail - * generation task. + * generation schedule. *

* Thumbnailator is intended to be used by calling one of the * {@code Thumbnails.of(...)} methods, then chaining methods such as @@ -2233,7 +2233,7 @@ watermark(Positions.CENTER, image, opacity); checkReadiness(); /* * TODO To get the precise error information, there would have to - * be an event notification mechanism. + * be an exchange notification mechanism. */ return new BufferedImageIterable(); } diff --git a/contact-center/app/src/main/java/net/coobird/thumbnailator/tasks/FileThumbnailTask.java b/contact-center/app/src/main/java/net/coobird/thumbnailator/tasks/FileThumbnailTask.java index 5742d2eb..3617ca0d 100644 --- a/contact-center/app/src/main/java/net/coobird/thumbnailator/tasks/FileThumbnailTask.java +++ b/contact-center/app/src/main/java/net/coobird/thumbnailator/tasks/FileThumbnailTask.java @@ -9,7 +9,7 @@ import net.coobird.thumbnailator.tasks.io.FileImageSink; import net.coobird.thumbnailator.tasks.io.FileImageSource; /** - * A thumbnail generation task which reads and writes data from and to a + * A thumbnail generation schedule which reads and writes data from and to a * {@link File}. *

* Only the first image included in the image file will be read. Subsequent @@ -21,7 +21,7 @@ import net.coobird.thumbnailator.tasks.io.FileImageSource; public class FileThumbnailTask extends ThumbnailTask { /** - * The {@link SourceSinkThumbnailTask} used to perform the task. + * The {@link SourceSinkThumbnailTask} used to perform the schedule. */ private final SourceSinkThumbnailTask task; diff --git a/contact-center/app/src/main/java/net/coobird/thumbnailator/tasks/StreamThumbnailTask.java b/contact-center/app/src/main/java/net/coobird/thumbnailator/tasks/StreamThumbnailTask.java index 11954171..4d1ff6d3 100644 --- a/contact-center/app/src/main/java/net/coobird/thumbnailator/tasks/StreamThumbnailTask.java +++ b/contact-center/app/src/main/java/net/coobird/thumbnailator/tasks/StreamThumbnailTask.java @@ -10,7 +10,7 @@ import net.coobird.thumbnailator.tasks.io.InputStreamImageSource; import net.coobird.thumbnailator.tasks.io.OutputStreamImageSink; /** - * A thumbnail generation task which streams data from an {@link InputStream} + * A thumbnail generation schedule which streams data from an {@link InputStream} * to an {@link OutputStream}. *

* This class does not close the {@link InputStream} and {@link OutputStream} @@ -25,7 +25,7 @@ import net.coobird.thumbnailator.tasks.io.OutputStreamImageSink; public class StreamThumbnailTask extends ThumbnailTask { /** - * The {@link SourceSinkThumbnailTask} used to perform the task. + * The {@link SourceSinkThumbnailTask} used to perform the schedule. */ private final SourceSinkThumbnailTask task; diff --git a/contact-center/app/src/main/java/net/coobird/thumbnailator/tasks/io/ImageSink.java b/contact-center/app/src/main/java/net/coobird/thumbnailator/tasks/io/ImageSink.java index ba11f732..b54f311f 100644 --- a/contact-center/app/src/main/java/net/coobird/thumbnailator/tasks/io/ImageSink.java +++ b/contact-center/app/src/main/java/net/coobird/thumbnailator/tasks/io/ImageSink.java @@ -7,7 +7,7 @@ import net.coobird.thumbnailator.ThumbnailParameter; /** * An interface to be implemented by classes which stores the image resulting - * from a thumbnail generation task. + * from a thumbnail generation schedule. * * @param The destination class to which the thumbnail is stored * or written. diff --git a/contact-center/app/src/main/resources/static/im/js/kindeditor/kindeditor-all.js b/contact-center/app/src/main/resources/static/im/js/kindeditor/kindeditor-all.js index 9a9f51da..688d0b8f 100644 --- a/contact-center/app/src/main/resources/static/im/js/kindeditor/kindeditor-all.js +++ b/contact-center/app/src/main/resources/static/im/js/kindeditor/kindeditor-all.js @@ -11,7 +11,7 @@ if (window.KindEditor) { return; } - + if (!window.console) { window.console = {}; @@ -156,7 +156,8 @@ function _extend(child, parent, proto) { child.prototype = childProto; child.parent = parent ? parent.prototype : null; } - + + function _json(text) { var match; if ((match = /\{[\s\S]*\}|\[[\s\S]*\]/.exec(text))) { @@ -217,7 +218,7 @@ var _INLINE_TAG_MAP = _toMap('a,abbr,acronym,b,basefont,bdo,big,br,button,cite,c _AUTOCLOSE_TAG_MAP = _toMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr'), _FILL_ATTR_MAP = _toMap('checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected'), _VALUE_TAG_MAP = _toMap('input,button,textarea,select'); - + function _getBasePath() { var els = document.getElementsByTagName('script'), src; @@ -313,12 +314,15 @@ K.options = { }, layout : '

' }; - + var _useCapture = false; - -var _INPUT_KEY_MAP = _toMap('8,9,13,32,46,48..57,59,61,65..90,106,109..111,188,190..192,219..222'); -var _CURSORMOVE_KEY_MAP = _toMap('33..40'); + + +var _INPUT_KEY_MAP = _toMap('8,9,13,32,46,48..57,59,61,65..90,106,109..111,188,190..192,219..222'); + +var _CURSORMOVE_KEY_MAP = _toMap('33..40'); + var _CHANGE_KEY_MAP = {}; _each(_INPUT_KEY_MAP, function(key, val) { _CHANGE_KEY_MAP[key] = val; @@ -326,14 +330,16 @@ _each(_INPUT_KEY_MAP, function(key, val) { _each(_CURSORMOVE_KEY_MAP, function(key, val) { _CHANGE_KEY_MAP[key] = val; }); - + + function _bindEvent(el, type, fn) { if (el.addEventListener){ el.addEventListener(type, fn, _useCapture); } else if (el.attachEvent){ el.attachEvent('on' + type, fn); } -} +} + function _unbindEvent(el, type, fn) { if (el.removeEventListener){ el.removeEventListener(type, fn, _useCapture); @@ -344,7 +350,8 @@ function _unbindEvent(el, type, fn) { var _EVENT_PROPS = ('altKey,attrChange,attrName,bubbles,button,cancelable,charCode,clientX,clientY,ctrlKey,currentTarget,' + 'data,detail,eventPhase,fromElement,handler,keyCode,metaKey,newValue,offsetX,offsetY,originalTarget,pageX,' + 'pageY,prevValue,relatedNode,relatedTarget,screenX,screenY,shiftKey,srcElement,target,toElement,view,wheelDelta,which').split(','); - + + function KEvent(el, event) { this.init(el, event); } @@ -613,7 +620,7 @@ if (window.attachEvent) { } K.ctrl = _ctrl; K.ready = _ready; - + function _getCssList(css) { var list = {}, reg = /\s*([\w\-]+)\s*:([^;]*)(;|$)/g, @@ -901,7 +908,8 @@ function _formatHtml(html, htmlTags, urlType, wellFormatted, indentChar) { html = html.replace(/\n\s*\n/g, '\n'); html = html.replace(/\n/g, '\n'); return _trim(html); -} +} + function _clearMsWord(html, htmlTags) { html = html.replace(//ig, '') .replace(//ig, '') @@ -914,7 +922,8 @@ function _clearMsWord(html, htmlTags) { return full.replace(/border-bottom:([#\w\s]+)/ig, 'border:$1'); }); return _formatHtml(html, htmlTags); -} +} + function _mediaType(src) { if (/\.(rm|rmvb)(\?|$)/i.test(src)) { return 'audio/x-pn-realaudio-plugin'; @@ -923,7 +932,8 @@ function _mediaType(src) { return 'application/x-shockwave-flash'; } return 'video/x-ms-asf-plugin'; -} +} + function _mediaClass(type) { if (/realaudio/i.test(type)) { return 'ke-rm'; @@ -967,7 +977,10 @@ function _mediaImg(blankPath, attrs) { html += 'data-ke-tag="' + escape(srcTag) + '" alt="" />'; return html; } - + + + + function _tmpl(str, data) { var fn = new Function("obj", "var p=[],print=function(){p.push.apply(p,arguments);};" + @@ -991,7 +1004,7 @@ K.mediaEmbed = _mediaEmbed; K.mediaImg = _mediaImg; K.clearMsWord = _clearMsWord; K.tmpl = _tmpl; - + function _contains(nodeA, nodeB) { if (nodeA.nodeType == 9 && nodeB.nodeType != 9) { @@ -1211,7 +1224,7 @@ function _query(expr, root) { } K.query = _query; K.queryAll = _queryAll; - + function _get(val) { return K(val)[0]; @@ -1304,7 +1317,8 @@ function _getScrollPos(doc) { } return {x : x, y : y}; } - + + function KNode(node) { this.init(node); } @@ -1811,7 +1825,7 @@ _each(_K, function(key, val) { }); K.NodeClass = KNode; window.KindEditor = K; - + var _START_TO_START = 0, _START_TO_END = 1, @@ -1940,7 +1954,8 @@ function _copyAndDelete(range, isCopy, isDelete) { } } return isCopy ? frag : range; -} +} + function _moveToElementText(range, el) { var node = el; while (node) { @@ -1953,7 +1968,8 @@ function _moveToElementText(range, el) { try { range.moveToElementText(el); } catch(e) {} -} +} + function _getStartEnd(rng, isStart) { var doc = rng.parentElement().ownerDocument, pointRange = rng.duplicate(); @@ -2018,7 +2034,8 @@ function _getStartEnd(rng, isStart) { } } return {node: startNode, offset: startPos}; -} +} + function _getEndRange(node, offset) { var doc = node.ownerDocument || node, range = doc.body.createTextRange(); @@ -2075,7 +2092,8 @@ function _getEndRange(node, offset) { range.moveStart('character', offset); K(dummy).remove(); return range; -} +} + function _toRange(rng) { var doc, range; function tr2td(start) { @@ -2108,7 +2126,8 @@ function _toRange(rng) { range.setEnd(rng.endContainer, rng.endOffset); return range; } - + + function KRange(doc) { this.init(doc); } @@ -2525,13 +2544,15 @@ K.START_TO_START = _START_TO_START; K.START_TO_END = _START_TO_END; K.END_TO_END = _END_TO_END; K.END_TO_START = _END_TO_START; - - + + + function _nativeCommand(doc, key, val) { try { doc.execCommand(key, false, val); } catch(e) {} -} +} + function _nativeCommandValue(doc, key) { var val = ''; try { @@ -2541,11 +2562,13 @@ function _nativeCommandValue(doc, key) { val = ''; } return val; -} +} + function _getSel(doc) { var win = _getWin(doc); return _IERANGE ? doc.selection : win.getSelection(); -} +} + function _getRng(doc) { var sel = _getSel(doc), rng; try { @@ -2559,7 +2582,8 @@ function _getRng(doc) { return null; } return rng; -} +} + function _singleKeyMap(map) { var newMap = {}, arr, v; _each(map, function(key, val) { @@ -2570,7 +2594,8 @@ function _singleKeyMap(map) { } }); return newMap; -} +} + function _hasAttrOrCss(knode, map) { return _hasAttrOrCssByKey(knode, map, '*') || _hasAttrOrCssByKey(knode, map); } @@ -2601,7 +2626,8 @@ function _hasAttrOrCssByKey(knode, map, mapKey) { } } return false; -} +} + function _removeAttrOrCss(knode, map) { if (knode.type != 1) { return; @@ -2639,20 +2665,26 @@ function _removeAttrOrCssByKey(knode, map, mapKey) { if (allFlag) { knode.remove(true); } -} +} + function _getInnerNode(knode) { var inner = knode; while (inner.first()) { inner = inner.first(); } return inner; -} +} + function _isEmptyNode(knode) { if (knode.type != 1 || knode.isSingle()) { return false; } return knode.html().replace(/<[^>]+>/g, '') === ''; -} +} + + + + function _mergeWrapper(a, b) { a = a.clone(true); var lastA = _getInnerNode(a), childA = a, merged = false; @@ -2671,7 +2703,8 @@ function _mergeWrapper(a, b) { b = b.first(); } return a; -} +} + function _wrapNode(knode, wrapper) { wrapper = wrapper.clone(true); if (knode.type == 3) { @@ -2695,7 +2728,8 @@ function _wrapNode(knode, wrapper) { } nodeWrapper.replaceWith(wrapper); return wrapper; -} +} + function _mergeAttrs(knode, attrs, styles) { _each(attrs, function(key, val) { if (key !== 'style') { @@ -2705,7 +2739,8 @@ function _mergeAttrs(knode, attrs, styles) { _each(styles, function(key, val) { knode.css(key, val); }); -} +} + function _inPreElement(knode) { while (knode && knode.name != 'body') { if (_PRE_TAG_MAP[knode.name] || knode.name == 'div' && knode.hasClass('ke-script')) { @@ -2714,7 +2749,8 @@ function _inPreElement(knode) { knode = knode.parent(); } return false; -} +} + function KCmd(range) { this.init(range); } @@ -3329,7 +3365,7 @@ function _cmd(mixed) { } K.CmdClass = KCmd; K.cmd = _cmd; - + function _drag(options) { var moveEl = options.moveEl, @@ -3398,7 +3434,8 @@ function _drag(options) { } }); } - + + function KWidget(options) { this.init(options); } @@ -3547,7 +3584,7 @@ function _widget(options) { } K.WidgetClass = KWidget; K.widget = _widget; - + function _iframeDoc(iframe) { iframe = _get(iframe); @@ -3638,7 +3675,8 @@ function _elementVal(knode, val) { } return knode.html(val); } - + + function KEdit(options) { this.init(options); } @@ -3885,7 +3923,7 @@ function _edit(options) { K.EditClass = KEdit; K.edit = _edit; K.iframeDoc = _iframeDoc; - + function _selectToolbar(name, fn) { var self = this, @@ -3897,7 +3935,8 @@ function _selectToolbar(name, fn) { fn(knode); } } - + + function KToolbar(options) { this.init(options); } @@ -4016,8 +4055,9 @@ function _toolbar(options) { } K.ToolbarClass = KToolbar; K.toolbar = _toolbar; - - + + + function KMenu(options) { this.init(options); } @@ -4099,8 +4139,9 @@ function _menu(options) { } K.MenuClass = KMenu; K.menu = _menu; - - + + + function KColorPicker(options) { this.init(options); } @@ -4176,7 +4217,7 @@ function _colorpicker(options) { } K.ColorPickerClass = KColorPicker; K.colorpicker = _colorpicker; - + function KUploadButton(options) { this.init(options); @@ -4269,7 +4310,7 @@ function _uploadbutton(options) { } K.UploadButtonClass = KUploadButton; K.uploadbutton = _uploadbutton; - + function _createButton(arg) { arg = arg || {}; @@ -4282,7 +4323,8 @@ function _createButton(arg) { span.append(btn); return span; } - + + function KDialog(options) { this.init(options); } @@ -4407,7 +4449,7 @@ function _dialog(options) { } K.DialogClass = KDialog; K.dialog = _dialog; - + function _tabs(options) { var self = _widget(options), @@ -4463,7 +4505,7 @@ function _tabs(options) { return self; } K.tabs = _tabs; - + function _loadScript(url, fn) { var head = document.getElementsByTagName('head')[0] || (_QUIRKS ? document.body : document.documentElement), @@ -4481,7 +4523,8 @@ function _loadScript(url, fn) { } }; } - + + function _chopQuery(url) { var index = url.indexOf('?'); return index > 0 ? url.substr(0, index) : url; @@ -4532,7 +4575,7 @@ function _ajax(url, fn, method, param, dataType) { K.loadScript = _loadScript; K.loadStyle = _loadStyle; K.ajax = _ajax; - + var _plugins = {}; function _plugin(name, fn) { @@ -4577,7 +4620,8 @@ function _lang(mixed, langType) { _language[langType][obj.ns][obj.key] = val; }); } - + + function _getImageFromRange(range, fn) { if (range.collapsed) { return; @@ -4788,7 +4832,9 @@ function _addBookmarkToStack(stack, bookmark) { stack.push(bookmark); } } - + + + function _undoToRedo(fromStack, toStack) { var self = this, edit = self.edit, body = edit.doc.body, @@ -5547,7 +5593,8 @@ K.appendHtml = function(expr, val) { this.appendHtml(val); }); }; - + + if (_IE && _V < 7) { _nativeCommand(document, 'BackgroundImageCache', true); } @@ -5557,7 +5604,8 @@ K.create = _create; K.instances = _instances; K.plugin = _plugin; K.lang = _lang; - + + _plugin('core', function(K) { var self = this, shortcutKeys = { @@ -6029,10 +6077,10 @@ _plugin('core', function(K) { }); }); }); - + })(window); - + /******************************************************************************* * KindEditor - WYSIWYG HTML Editor for Internet * Copyright (C) 2006-2011 kindsoft.net @@ -6268,187 +6316,7 @@ KindEditor.lang({ '3.html' : '项目编号' } }, 'zh-CN'); -KindEditor.options.langType = 'zh-CN'; -/******************************************************************************* -* KindEditor - WYSIWYG HTML Editor for Internet -* Copyright (C) 2006-2011 kindsoft.net -* -* @author Roddy -* @site http://www.kindsoft.net/ -* @licence http://www.kindsoft.net/license.php -*******************************************************************************/ -KindEditor.plugin('anchor', function(K) { - var self = this, name = 'anchor', lang = self.lang(name + '.'); - self.plugin.anchor = { - edit : function() { - var html = ['
', - '
', - '', - '', - '
', - '
'].join(''); - var dialog = self.createDialog({ - name : name, - width : 300, - title : self.lang(name), - body : html, - yesBtn : { - name : self.lang('yes'), - click : function(e) { - self.insertHtml('').hideDialog().focus(); - } - } - }); - var div = dialog.div, - nameBox = K('input[name="name"]', div); - var img = self.plugin.getSelectedAnchor(); - if (img) { - nameBox.val(unescape(img.attr('data-ke-name'))); - } - nameBox[0].focus(); - nameBox[0].select(); - }, - 'delete' : function() { - self.plugin.getSelectedAnchor().remove(); - } - }; - self.clickToolbar(name, self.plugin.anchor.edit); -}); - -/******************************************************************************* -* KindEditor - WYSIWYG HTML Editor for Internet -* Copyright (C) 2006-2011 kindsoft.net -* -* @author Roddy -* @site http://www.kindsoft.net/ -* @licence http://www.kindsoft.net/license.php -*******************************************************************************/ -KindEditor.plugin('autoheight', function(K) { - var self = this; - if (!self.autoHeightMode) { - return; - } - var minHeight; - function hideScroll() { - var edit = self.edit; - var body = edit.doc.body; - edit.iframe[0].scroll = 'no'; - body.style.overflowY = 'hidden'; - } - function resetHeight() { - var edit = self.edit; - var body = edit.doc.body; - edit.iframe.height(minHeight); - self.resize(null, Math.max((K.IE ? body.scrollHeight : body.offsetHeight) + 76, minHeight)); - } - function init() { - minHeight = K.removeUnit(self.height); - self.edit.afterChange(resetHeight); - hideScroll(); - resetHeight(); - } - if (self.isCreated) { - init(); - } else { - self.afterCreate(init); - } -}); -/* -* 如何实现真正的自动高度? -* 修改编辑器高度之后,再次获取body内容高度时,最小值只会是当前iframe的设置高度,这样就导致高度只增不减。 -* 所以每次获取body内容高度之前,先将iframe的高度重置为最小高度,这样就能获取body的实际高度。 -* 由此就实现了真正的自动高度 -* 测试:chrome、firefox、IE9、IE8 -* */ - -/******************************************************************************* -* KindEditor - WYSIWYG HTML Editor for Internet -* Copyright (C) 2006-2011 kindsoft.net -* -* @author Roddy -* @site http://www.kindsoft.net/ -* @licence http://www.kindsoft.net/license.php -*******************************************************************************/ -KindEditor.plugin('baidumap', function(K) { - var self = this, name = 'baidumap', lang = self.lang(name + '.'); - var mapWidth = K.undef(self.mapWidth, 558); - var mapHeight = K.undef(self.mapHeight, 360); - self.clickToolbar(name, function() { - var html = ['
', - '
', - '
', - lang.address + ' ', - '', - '', - '', - '
', - '
', - ' ', - '
', - '
', - '
', - '
', - '
'].join(''); - var dialog = self.createDialog({ - name : name, - width : mapWidth + 42, - title : self.lang(name), - body : html, - yesBtn : { - name : self.lang('yes'), - click : function(e) { - var map = win.map; - var centerObj = map.getCenter(); - var center = centerObj.lng + ',' + centerObj.lat; - var zoom = map.getZoom(); - var url = [checkbox[0].checked ? self.pluginsPath + 'baidumap/index.html' : 'http://api.map.baidu.com/staticimage', - '?center=' + encodeURIComponent(center), - '&zoom=' + encodeURIComponent(zoom), - '&width=' + mapWidth, - '&height=' + mapHeight, - '&markers=' + encodeURIComponent(center), - '&markerStyles=' + encodeURIComponent('l,A')].join(''); - if (checkbox[0].checked) { - self.insertHtml(''); - } else { - self.exec('insertimage', url); - } - self.hideDialog().focus(); - } - }, - beforeRemove : function() { - searchBtn.remove(); - if (doc) { - doc.write(''); - } - iframe.remove(); - } - }); - var div = dialog.div, - addressBox = K('[name="address"]', div), - searchBtn = K('[name="searchBtn"]', div), - checkbox = K('[name="insertDynamicMap"]', dialog.div), - win, doc; - var iframe = K(''); - function ready() { - win = iframe[0].contentWindow; - doc = K.iframeDoc(iframe); - } - iframe.bind('load', function() { - iframe.unbind('load'); - if (K.IE) { - ready(); - } else { - setTimeout(ready, 0); - } - }); - K('.ke-map', div).replaceWith(iframe); - searchBtn.click(function() { - win.search(addressBox.val()); - }); - }); -}); - +KindEditor.options.langType = 'zh-CN'; /******************************************************************************* * KindEditor - WYSIWYG HTML Editor for Internet * Copyright (C) 2006-2011 kindsoft.net @@ -6457,7 +6325,188 @@ KindEditor.plugin('baidumap', function(K) { * @site http://www.kindsoft.net/ * @licence http://www.kindsoft.net/license.php *******************************************************************************/ - +KindEditor.plugin('anchor', function(K) { + var self = this, name = 'anchor', lang = self.lang(name + '.'); + self.plugin.anchor = { + edit : function() { + var html = ['
', + '
', + '', + '', + '
', + '
'].join(''); + var dialog = self.createDialog({ + name : name, + width : 300, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + self.insertHtml('
').hideDialog().focus(); + } + } + }); + var div = dialog.div, + nameBox = K('input[name="name"]', div); + var img = self.plugin.getSelectedAnchor(); + if (img) { + nameBox.val(unescape(img.attr('data-ke-name'))); + } + nameBox[0].focus(); + nameBox[0].select(); + }, + 'delete' : function() { + self.plugin.getSelectedAnchor().remove(); + } + }; + self.clickToolbar(name, self.plugin.anchor.edit); +}); + +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ +KindEditor.plugin('autoheight', function(K) { + var self = this; + if (!self.autoHeightMode) { + return; + } + var minHeight; + function hideScroll() { + var edit = self.edit; + var body = edit.doc.body; + edit.iframe[0].scroll = 'no'; + body.style.overflowY = 'hidden'; + } + function resetHeight() { + var edit = self.edit; + var body = edit.doc.body; + edit.iframe.height(minHeight); + self.resize(null, Math.max((K.IE ? body.scrollHeight : body.offsetHeight) + 76, minHeight)); + } + function init() { + minHeight = K.removeUnit(self.height); + self.edit.afterChange(resetHeight); + hideScroll(); + resetHeight(); + } + if (self.isCreated) { + init(); + } else { + self.afterCreate(init); + } +}); +/* +* 如何实现真正的自动高度? +* 修改编辑器高度之后,再次获取body内容高度时,最小值只会是当前iframe的设置高度,这样就导致高度只增不减。 +* 所以每次获取body内容高度之前,先将iframe的高度重置为最小高度,这样就能获取body的实际高度。 +* 由此就实现了真正的自动高度 +* 测试:chrome、firefox、IE9、IE8 +* */ + +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ +KindEditor.plugin('baidumap', function(K) { + var self = this, name = 'baidumap', lang = self.lang(name + '.'); + var mapWidth = K.undef(self.mapWidth, 558); + var mapHeight = K.undef(self.mapHeight, 360); + self.clickToolbar(name, function() { + var html = ['
', + '
', + '
', + lang.address + ' ', + '', + '', + '', + '
', + '
', + ' ', + '
', + '
', + '
', + '
', + '
'].join(''); + var dialog = self.createDialog({ + name : name, + width : mapWidth + 42, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var map = win.map; + var centerObj = map.getCenter(); + var center = centerObj.lng + ',' + centerObj.lat; + var zoom = map.getZoom(); + var url = [checkbox[0].checked ? self.pluginsPath + 'baidumap/index.html' : 'http://api.map.baidu.com/staticimage', + '?center=' + encodeURIComponent(center), + '&zoom=' + encodeURIComponent(zoom), + '&width=' + mapWidth, + '&height=' + mapHeight, + '&markers=' + encodeURIComponent(center), + '&markerStyles=' + encodeURIComponent('l,A')].join(''); + if (checkbox[0].checked) { + self.insertHtml(''); + } else { + self.exec('insertimage', url); + } + self.hideDialog().focus(); + } + }, + beforeRemove : function() { + searchBtn.remove(); + if (doc) { + doc.write(''); + } + iframe.remove(); + } + }); + var div = dialog.div, + addressBox = K('[name="address"]', div), + searchBtn = K('[name="searchBtn"]', div), + checkbox = K('[name="insertDynamicMap"]', dialog.div), + win, doc; + var iframe = K(''); + function ready() { + win = iframe[0].contentWindow; + doc = K.iframeDoc(iframe); + } + iframe.bind('load', function() { + iframe.unbind('load'); + if (K.IE) { + ready(); + } else { + setTimeout(ready, 0); + } + }); + K('.ke-map', div).replaceWith(iframe); + searchBtn.click(function() { + win.search(addressBox.val()); + }); + }); +}); + +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + + KindEditor.plugin('map', function(K) { var self = this, name = 'map', lang = self.lang(name + '.'); self.clickToolbar(name, function() { @@ -6579,7 +6628,7 @@ KindEditor.plugin('map', function(K) { }); }); }); - + /******************************************************************************* * KindEditor - WYSIWYG HTML Editor for Internet * Copyright (C) 2006-2011 kindsoft.net @@ -6608,7 +6657,7 @@ KindEditor.plugin('clearhtml', function(K) { self.addBookmark(); }); }); - + /******************************************************************************* * KindEditor - WYSIWYG HTML Editor for Internet * Copyright (C) 2006-2011 kindsoft.net @@ -6617,7 +6666,9 @@ KindEditor.plugin('clearhtml', function(K) { * @site http://www.kindsoft.net/ * @licence http://www.kindsoft.net/license.php *******************************************************************************/ - + + + KindEditor.plugin('code', function(K) { var self = this, name = 'code'; self.clickToolbar(name, function() { @@ -6668,7 +6719,7 @@ KindEditor.plugin('code', function(K) { textarea[0].focus(); }); }); - + /******************************************************************************* * KindEditor - WYSIWYG HTML Editor for Internet * Copyright (C) 2006-2011 kindsoft.net @@ -6797,7 +6848,7 @@ KindEditor.plugin('emoticons', function(K) { createPageTable(currentPageNum); }); }); - + /******************************************************************************* * KindEditor - WYSIWYG HTML Editor for Internet * Copyright (C) 2006-2011 kindsoft.net @@ -6979,7 +7030,7 @@ KindEditor.plugin('filemanager', function(K) { return dialog; } }); - + /******************************************************************************* * KindEditor - WYSIWYG HTML Editor for Internet * Copyright (C) 2006-2011 kindsoft.net @@ -7133,7 +7184,7 @@ KindEditor.plugin('flash', function(K) { }; self.clickToolbar(name, self.plugin.flash.edit); }); - + /******************************************************************************* * KindEditor - WYSIWYG HTML Editor for Internet * Copyright (C) 2006-2011 kindsoft.net @@ -7442,7 +7493,7 @@ KindEditor.plugin('image', function(K) { }; self.clickToolbar(name, self.plugin.image.edit); }); - + /******************************************************************************* * KindEditor - WYSIWYG HTML Editor for Internet * Copyright (C) 2006-2011 kindsoft.net @@ -7576,7 +7627,7 @@ KindEditor.plugin('insertfile', function(K) { }); }); }); - + /******************************************************************************* * KindEditor - WYSIWYG HTML Editor for Internet * Copyright (C) 2006-2011 kindsoft.net @@ -7614,7 +7665,7 @@ KindEditor.plugin('lineheight', function(K) { }); }); }); - + /******************************************************************************* * KindEditor - WYSIWYG HTML Editor for Internet * Copyright (C) 2006-2011 kindsoft.net @@ -7678,7 +7729,7 @@ KindEditor.plugin('link', function(K) { }; self.clickToolbar(name, self.plugin.link.edit); }); - + /******************************************************************************* * KindEditor - WYSIWYG HTML Editor for Internet * Copyright (C) 2006-2011 kindsoft.net @@ -7840,1046 +7891,1046 @@ KindEditor.plugin('media', function(K) { }; self.clickToolbar(name, self.plugin.media.edit); }); - -/******************************************************************************* -* KindEditor - WYSIWYG HTML Editor for Internet -* Copyright (C) 2006-2011 kindsoft.net -* -* @author Roddy -* @site http://www.kindsoft.net/ -* @licence http://www.kindsoft.net/license.php -*******************************************************************************/ -(function(K) { -function KSWFUpload(options) { - this.init(options); -} -K.extend(KSWFUpload, { - init : function(options) { - var self = this; - options.afterError = options.afterError || function(str) { - alert(str); - }; - self.options = options; - self.progressbars = {}; - self.div = K(options.container).html([ - '
', - '
', - '
', - '', - '
', - '
' + options.uploadDesc + '
', - '', - '', - '', - '
', - '
', - '
' - ].join('')); - self.bodyDiv = K('.ke-swfupload-body', self.div); - function showError(itemDiv, msg) { - K('.ke-status > div', itemDiv).hide(); - K('.ke-message', itemDiv).addClass('ke-error').show().html(K.escape(msg)); - } - var settings = { - debug : false, - upload_url : options.uploadUrl, - flash_url : options.flashUrl, - file_post_name : options.filePostName, - button_placeholder : K('.ke-swfupload-button > input', self.div)[0], - button_image_url: options.buttonImageUrl, - button_width: options.buttonWidth, - button_height: options.buttonHeight, - button_cursor : SWFUpload.CURSOR.HAND, - file_types : options.fileTypes, - file_types_description : options.fileTypesDesc, - file_upload_limit : options.fileUploadLimit, - file_size_limit : options.fileSizeLimit, - post_params : options.postParams, - file_queued_handler : function(file) { - file.url = self.options.fileIconUrl; - self.appendFile(file); - }, - file_queue_error_handler : function(file, errorCode, message) { - var errorName = ''; - switch (errorCode) { - case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED: - errorName = options.queueLimitExceeded; - break; - case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT: - errorName = options.fileExceedsSizeLimit; - break; - case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE: - errorName = options.zeroByteFile; - break; - case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE: - errorName = options.invalidFiletype; - break; - default: - errorName = options.unknownError; - break; - } - K.DEBUG && alert(errorName); - }, - upload_start_handler : function(file) { - var self = this; - var itemDiv = K('div[data-id="' + file.id + '"]', self.bodyDiv); - K('.ke-status > div', itemDiv).hide(); - K('.ke-progressbar', itemDiv).show(); - }, - upload_progress_handler : function(file, bytesLoaded, bytesTotal) { - var percent = Math.round(bytesLoaded * 100 / bytesTotal); - var progressbar = self.progressbars[file.id]; - progressbar.bar.css('width', Math.round(percent * 80 / 100) + 'px'); - progressbar.percent.html(percent + '%'); - }, - upload_error_handler : function(file, errorCode, message) { - if (file && file.filestatus == SWFUpload.FILE_STATUS.ERROR) { - var itemDiv = K('div[data-id="' + file.id + '"]', self.bodyDiv).eq(0); - showError(itemDiv, self.options.errorMessage); - } - }, - upload_success_handler : function(file, serverData) { - var itemDiv = K('div[data-id="' + file.id + '"]', self.bodyDiv).eq(0); - var data = {}; - try { - data = K.json(serverData); - } catch (e) { - self.options.afterError.call(this, '' + serverData + ''); - } - if (data.error !== 0) { - showError(itemDiv, K.DEBUG ? data.message : self.options.errorMessage); - return; - } - file.url = data.url; - K('.ke-img', itemDiv).attr('src', file.url).attr('data-status', file.filestatus).data('data', data); - K('.ke-status > div', itemDiv).hide(); - } - }; - self.swfu = new SWFUpload(settings); - K('.ke-swfupload-startupload input', self.div).click(function() { - self.swfu.startUpload(); - }); - }, - getUrlList : function() { - var list = []; - K('.ke-img', self.bodyDiv).each(function() { - var img = K(this); - var status = img.attr('data-status'); - if (status == SWFUpload.FILE_STATUS.COMPLETE) { - list.push(img.data('data')); - } - }); - return list; - }, - removeFile : function(fileId) { - var self = this; - self.swfu.cancelUpload(fileId); - var itemDiv = K('div[data-id="' + fileId + '"]', self.bodyDiv); - K('.ke-photo', itemDiv).unbind(); - K('.ke-delete', itemDiv).unbind(); - itemDiv.remove(); - }, - removeFiles : function() { - var self = this; - K('.ke-item', self.bodyDiv).each(function() { - self.removeFile(K(this).attr('data-id')); - }); - }, - appendFile : function(file) { - var self = this; - var itemDiv = K('
'); - self.bodyDiv.append(itemDiv); - var photoDiv = K('
') - .mouseover(function(e) { - K(this).addClass('ke-on'); - }) - .mouseout(function(e) { - K(this).removeClass('ke-on'); - }); - itemDiv.append(photoDiv); - var img = K('' + file.name + ''); - photoDiv.append(img); - K('').appendTo(photoDiv).click(function() { - self.removeFile(file.id); - }); - var statusDiv = K('
').appendTo(photoDiv); - K(['
', - '
', - '
0%
'].join('')).hide().appendTo(statusDiv); - K('
' + self.options.pendingMessage + '
').appendTo(statusDiv); - itemDiv.append('
' + file.name + '
'); - self.progressbars[file.id] = { - bar : K('.ke-progressbar-bar-inner', photoDiv), - percent : K('.ke-progressbar-percent', photoDiv) - }; - }, - remove : function() { - this.removeFiles(); - this.swfu.destroy(); - this.div.html(''); - } -}); -K.swfupload = function(element, options) { - return new KSWFUpload(element, options); -}; -})(KindEditor); -KindEditor.plugin('multiimage', function(K) { - var self = this, name = 'multiimage', - formatUploadUrl = K.undef(self.formatUploadUrl, true), - uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'), - imgPath = self.pluginsPath + 'multiimage/images/', - imageSizeLimit = K.undef(self.imageSizeLimit, '1MB'), - imageFileTypes = K.undef(self.imageFileTypes, '*.jpg;*.gif;*.png'), - imageUploadLimit = K.undef(self.imageUploadLimit, 20), - filePostName = K.undef(self.filePostName, 'imgFile'), - lang = self.lang(name + '.'); - self.plugin.multiImageDialog = function(options) { - var clickFn = options.clickFn, - uploadDesc = K.tmpl(lang.uploadDesc, {uploadLimit : imageUploadLimit, sizeLimit : imageSizeLimit}); - var html = [ - '
', - '
', - '
', - '
' - ].join(''); - var dialog = self.createDialog({ - name : name, - width : 650, - height : 510, - title : self.lang(name), - body : html, - previewBtn : { - name : lang.insertAll, - click : function(e) { - clickFn.call(self, swfupload.getUrlList()); - } - }, - yesBtn : { - name : lang.clearAll, - click : function(e) { - swfupload.removeFiles(); - } - }, - beforeRemove : function() { - if (!K.IE || K.V <= 8) { - swfupload.remove(); - } - } - }), - div = dialog.div; - var swfupload = K.swfupload({ - container : K('.swfupload', div), - buttonImageUrl : imgPath + (self.langType == 'zh-CN' ? 'select-files-zh-CN.png' : 'select-files-en.png'), - buttonWidth : self.langType == 'zh-CN' ? 72 : 88, - buttonHeight : 23, - fileIconUrl : imgPath + 'image.png', - uploadDesc : uploadDesc, - startButtonValue : lang.startUpload, - uploadUrl : K.addParam(uploadJson, 'dir=image'), - flashUrl : imgPath + 'swfupload.swf', - filePostName : filePostName, - fileTypes : '*.jpg;*.jpeg;*.gif;*.png;*.bmp', - fileTypesDesc : 'Image Files', - fileUploadLimit : imageUploadLimit, - fileSizeLimit : imageSizeLimit, - postParams : K.undef(self.extraFileUploadParams, {}), - queueLimitExceeded : lang.queueLimitExceeded, - fileExceedsSizeLimit : lang.fileExceedsSizeLimit, - zeroByteFile : lang.zeroByteFile, - invalidFiletype : lang.invalidFiletype, - unknownError : lang.unknownError, - pendingMessage : lang.pending, - errorMessage : lang.uploadError, - afterError : function(html) { - self.errorDialog(html); - } - }); - return dialog; - }; - self.clickToolbar(name, function() { - self.plugin.multiImageDialog({ - clickFn : function (urlList) { - if (urlList.length === 0) { - return; - } - K.each(urlList, function(i, data) { - if (self.afterUpload) { - self.afterUpload.call(self, data.url, data, 'multiimage'); - } - self.exec('insertimage', data.url, data.title, data.width, data.height, data.border, data.align); - }); - setTimeout(function() { - self.hideDialog().focus(); - }, 0); - } - }); - }); -}); -/* ******************* */ -/* Constructor & Init */ -/* ******************* */ -(function() { -window.SWFUpload = function (settings) { - this.initSWFUpload(settings); -}; -SWFUpload.prototype.initSWFUpload = function (settings) { - try { - this.customSettings = {}; - this.settings = settings; - this.eventQueue = []; - this.movieName = "KindEditor_SWFUpload_" + SWFUpload.movieCount++; - this.movieElement = null; - SWFUpload.instances[this.movieName] = this; - this.initSettings(); - this.loadFlash(); - this.displayDebugInfo(); - } catch (ex) { - delete SWFUpload.instances[this.movieName]; - throw ex; - } -}; -/* *************** */ -/* Static Members */ -/* *************** */ -SWFUpload.instances = {}; -SWFUpload.movieCount = 0; -SWFUpload.version = "2.2.0 2009-03-25"; -SWFUpload.QUEUE_ERROR = { - QUEUE_LIMIT_EXCEEDED : -100, - FILE_EXCEEDS_SIZE_LIMIT : -110, - ZERO_BYTE_FILE : -120, - INVALID_FILETYPE : -130 -}; -SWFUpload.UPLOAD_ERROR = { - HTTP_ERROR : -200, - MISSING_UPLOAD_URL : -210, - IO_ERROR : -220, - SECURITY_ERROR : -230, - UPLOAD_LIMIT_EXCEEDED : -240, - UPLOAD_FAILED : -250, - SPECIFIED_FILE_ID_NOT_FOUND : -260, - FILE_VALIDATION_FAILED : -270, - FILE_CANCELLED : -280, - UPLOAD_STOPPED : -290 -}; -SWFUpload.FILE_STATUS = { - QUEUED : -1, - IN_PROGRESS : -2, - ERROR : -3, - COMPLETE : -4, - CANCELLED : -5 -}; -SWFUpload.BUTTON_ACTION = { - SELECT_FILE : -100, - SELECT_FILES : -110, - START_UPLOAD : -120 -}; -SWFUpload.CURSOR = { - ARROW : -1, - HAND : -2 -}; -SWFUpload.WINDOW_MODE = { - WINDOW : "window", - TRANSPARENT : "transparent", - OPAQUE : "opaque" -}; -SWFUpload.completeURL = function(url) { - if (typeof(url) !== "string" || url.match(/^https?:\/\//i) || url.match(/^\//)) { - return url; - } - var currentURL = window.location.protocol + "//" + window.location.hostname + (window.location.port ? ":" + window.location.port : ""); - var indexSlash = window.location.pathname.lastIndexOf("/"); - if (indexSlash <= 0) { - path = "/"; - } else { - path = window.location.pathname.substr(0, indexSlash) + "/"; - } - return /*currentURL +*/ path + url; -}; -/* ******************** */ -/* Instance Members */ -/* ******************** */ -SWFUpload.prototype.initSettings = function () { - this.ensureDefault = function (settingName, defaultValue) { - this.settings[settingName] = (this.settings[settingName] == undefined) ? defaultValue : this.settings[settingName]; - }; - this.ensureDefault("upload_url", ""); - this.ensureDefault("preserve_relative_urls", false); - this.ensureDefault("file_post_name", "Filedata"); - this.ensureDefault("post_params", {}); - this.ensureDefault("use_query_string", false); - this.ensureDefault("requeue_on_error", false); - this.ensureDefault("http_success", []); - this.ensureDefault("assume_success_timeout", 0); - this.ensureDefault("file_types", "*.*"); - this.ensureDefault("file_types_description", "All Files"); - this.ensureDefault("file_size_limit", 0); - this.ensureDefault("file_upload_limit", 0); - this.ensureDefault("file_queue_limit", 0); - this.ensureDefault("flash_url", "swfupload.swf"); - this.ensureDefault("prevent_swf_caching", true); - this.ensureDefault("button_image_url", ""); - this.ensureDefault("button_width", 1); - this.ensureDefault("button_height", 1); - this.ensureDefault("button_text", ""); - this.ensureDefault("button_text_style", "color: #000000; font-size: 16pt;"); - this.ensureDefault("button_text_top_padding", 0); - this.ensureDefault("button_text_left_padding", 0); - this.ensureDefault("button_action", SWFUpload.BUTTON_ACTION.SELECT_FILES); - this.ensureDefault("button_disabled", false); - this.ensureDefault("button_placeholder_id", ""); - this.ensureDefault("button_placeholder", null); - this.ensureDefault("button_cursor", SWFUpload.CURSOR.ARROW); - this.ensureDefault("button_window_mode", SWFUpload.WINDOW_MODE.WINDOW); - this.ensureDefault("debug", false); - this.settings.debug_enabled = this.settings.debug; - this.settings.return_upload_start_handler = this.returnUploadStart; - this.ensureDefault("swfupload_loaded_handler", null); - this.ensureDefault("file_dialog_start_handler", null); - this.ensureDefault("file_queued_handler", null); - this.ensureDefault("file_queue_error_handler", null); - this.ensureDefault("file_dialog_complete_handler", null); - this.ensureDefault("upload_start_handler", null); - this.ensureDefault("upload_progress_handler", null); - this.ensureDefault("upload_error_handler", null); - this.ensureDefault("upload_success_handler", null); - this.ensureDefault("upload_complete_handler", null); - this.ensureDefault("debug_handler", this.debugMessage); - this.ensureDefault("custom_settings", {}); - this.customSettings = this.settings.custom_settings; - if (!!this.settings.prevent_swf_caching) { - this.settings.flash_url = this.settings.flash_url + (this.settings.flash_url.indexOf("?") < 0 ? "?" : "&") + "preventswfcaching=" + new Date().getTime(); - } - if (!this.settings.preserve_relative_urls) { - this.settings.upload_url = SWFUpload.completeURL(this.settings.upload_url); - this.settings.button_image_url = SWFUpload.completeURL(this.settings.button_image_url); - } - delete this.ensureDefault; -}; -SWFUpload.prototype.loadFlash = function () { - var targetElement, tempParent; - if (document.getElementById(this.movieName) !== null) { - throw "ID " + this.movieName + " is already in use. The Flash Object could not be added"; - } - targetElement = document.getElementById(this.settings.button_placeholder_id) || this.settings.button_placeholder; - if (targetElement == undefined) { - throw "Could not find the placeholder element: " + this.settings.button_placeholder_id; - } - tempParent = document.createElement("div"); - tempParent.innerHTML = this.getFlashHTML(); - targetElement.parentNode.replaceChild(tempParent.firstChild, targetElement); - if (window[this.movieName] == undefined) { - window[this.movieName] = this.getMovieElement(); - } -}; -SWFUpload.prototype.getFlashHTML = function () { - var classid = ''; - if (KindEditor.IE && KindEditor.V > 8) { - classid = ' classid = "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"'; - } - return ['', - '', - '', - '', - '', - '', - '', - ''].join(""); -}; -SWFUpload.prototype.getFlashVars = function () { - var paramString = this.buildParamString(); - var httpSuccessString = this.settings.http_success.join(","); - return ["movieName=", encodeURIComponent(this.movieName), - "&uploadURL=", encodeURIComponent(this.settings.upload_url), - "&useQueryString=", encodeURIComponent(this.settings.use_query_string), - "&requeueOnError=", encodeURIComponent(this.settings.requeue_on_error), - "&httpSuccess=", encodeURIComponent(httpSuccessString), - "&assumeSuccessTimeout=", encodeURIComponent(this.settings.assume_success_timeout), - "&params=", encodeURIComponent(paramString), - "&filePostName=", encodeURIComponent(this.settings.file_post_name), - "&fileTypes=", encodeURIComponent(this.settings.file_types), - "&fileTypesDescription=", encodeURIComponent(this.settings.file_types_description), - "&fileSizeLimit=", encodeURIComponent(this.settings.file_size_limit), - "&fileUploadLimit=", encodeURIComponent(this.settings.file_upload_limit), - "&fileQueueLimit=", encodeURIComponent(this.settings.file_queue_limit), - "&debugEnabled=", encodeURIComponent(this.settings.debug_enabled), - "&buttonImageURL=", encodeURIComponent(this.settings.button_image_url), - "&buttonWidth=", encodeURIComponent(this.settings.button_width), - "&buttonHeight=", encodeURIComponent(this.settings.button_height), - "&buttonText=", encodeURIComponent(this.settings.button_text), - "&buttonTextTopPadding=", encodeURIComponent(this.settings.button_text_top_padding), - "&buttonTextLeftPadding=", encodeURIComponent(this.settings.button_text_left_padding), - "&buttonTextStyle=", encodeURIComponent(this.settings.button_text_style), - "&buttonAction=", encodeURIComponent(this.settings.button_action), - "&buttonDisabled=", encodeURIComponent(this.settings.button_disabled), - "&buttonCursor=", encodeURIComponent(this.settings.button_cursor) - ].join(""); -}; -SWFUpload.prototype.getMovieElement = function () { - if (this.movieElement == undefined) { - this.movieElement = document.getElementById(this.movieName); - } - if (this.movieElement === null) { - throw "Could not find Flash element"; - } - return this.movieElement; -}; -SWFUpload.prototype.buildParamString = function () { - var postParams = this.settings.post_params; - var paramStringPairs = []; - if (typeof(postParams) === "object") { - for (var name in postParams) { - if (postParams.hasOwnProperty(name)) { - paramStringPairs.push(encodeURIComponent(name.toString()) + "=" + encodeURIComponent(postParams[name].toString())); - } - } - } - return paramStringPairs.join("&"); -}; -SWFUpload.prototype.destroy = function () { - try { - this.cancelUpload(null, false); - var movieElement = null; - movieElement = this.getMovieElement(); - if (movieElement && typeof(movieElement.CallFunction) === "unknown") { - for (var i in movieElement) { - try { - if (typeof(movieElement[i]) === "function") { - movieElement[i] = null; - } - } catch (ex1) {} - } - try { - movieElement.parentNode.removeChild(movieElement); - } catch (ex) {} - } - window[this.movieName] = null; - SWFUpload.instances[this.movieName] = null; - delete SWFUpload.instances[this.movieName]; - this.movieElement = null; - this.settings = null; - this.customSettings = null; - this.eventQueue = null; - this.movieName = null; - return true; - } catch (ex2) { - return false; - } -}; -SWFUpload.prototype.displayDebugInfo = function () { - this.debug( - [ - "---SWFUpload Instance Info---\n", - "Version: ", SWFUpload.version, "\n", - "Movie Name: ", this.movieName, "\n", - "Settings:\n", - "\t", "upload_url: ", this.settings.upload_url, "\n", - "\t", "flash_url: ", this.settings.flash_url, "\n", - "\t", "use_query_string: ", this.settings.use_query_string.toString(), "\n", - "\t", "requeue_on_error: ", this.settings.requeue_on_error.toString(), "\n", - "\t", "http_success: ", this.settings.http_success.join(", "), "\n", - "\t", "assume_success_timeout: ", this.settings.assume_success_timeout, "\n", - "\t", "file_post_name: ", this.settings.file_post_name, "\n", - "\t", "post_params: ", this.settings.post_params.toString(), "\n", - "\t", "file_types: ", this.settings.file_types, "\n", - "\t", "file_types_description: ", this.settings.file_types_description, "\n", - "\t", "file_size_limit: ", this.settings.file_size_limit, "\n", - "\t", "file_upload_limit: ", this.settings.file_upload_limit, "\n", - "\t", "file_queue_limit: ", this.settings.file_queue_limit, "\n", - "\t", "debug: ", this.settings.debug.toString(), "\n", - "\t", "prevent_swf_caching: ", this.settings.prevent_swf_caching.toString(), "\n", - "\t", "button_placeholder_id: ", this.settings.button_placeholder_id.toString(), "\n", - "\t", "button_placeholder: ", (this.settings.button_placeholder ? "Set" : "Not Set"), "\n", - "\t", "button_image_url: ", this.settings.button_image_url.toString(), "\n", - "\t", "button_width: ", this.settings.button_width.toString(), "\n", - "\t", "button_height: ", this.settings.button_height.toString(), "\n", - "\t", "button_text: ", this.settings.button_text.toString(), "\n", - "\t", "button_text_style: ", this.settings.button_text_style.toString(), "\n", - "\t", "button_text_top_padding: ", this.settings.button_text_top_padding.toString(), "\n", - "\t", "button_text_left_padding: ", this.settings.button_text_left_padding.toString(), "\n", - "\t", "button_action: ", this.settings.button_action.toString(), "\n", - "\t", "button_disabled: ", this.settings.button_disabled.toString(), "\n", - "\t", "custom_settings: ", this.settings.custom_settings.toString(), "\n", - "Event Handlers:\n", - "\t", "swfupload_loaded_handler assigned: ", (typeof this.settings.swfupload_loaded_handler === "function").toString(), "\n", - "\t", "file_dialog_start_handler assigned: ", (typeof this.settings.file_dialog_start_handler === "function").toString(), "\n", - "\t", "file_queued_handler assigned: ", (typeof this.settings.file_queued_handler === "function").toString(), "\n", - "\t", "file_queue_error_handler assigned: ", (typeof this.settings.file_queue_error_handler === "function").toString(), "\n", - "\t", "upload_start_handler assigned: ", (typeof this.settings.upload_start_handler === "function").toString(), "\n", - "\t", "upload_progress_handler assigned: ", (typeof this.settings.upload_progress_handler === "function").toString(), "\n", - "\t", "upload_error_handler assigned: ", (typeof this.settings.upload_error_handler === "function").toString(), "\n", - "\t", "upload_success_handler assigned: ", (typeof this.settings.upload_success_handler === "function").toString(), "\n", - "\t", "upload_complete_handler assigned: ", (typeof this.settings.upload_complete_handler === "function").toString(), "\n", - "\t", "debug_handler assigned: ", (typeof this.settings.debug_handler === "function").toString(), "\n" - ].join("") - ); -}; -/* Note: addSetting and getSetting are no longer used by SWFUpload but are included - the maintain v2 API compatibility -*/ -SWFUpload.prototype.addSetting = function (name, value, default_value) { - if (value == undefined) { - return (this.settings[name] = default_value); - } else { - return (this.settings[name] = value); - } -}; -SWFUpload.prototype.getSetting = function (name) { - if (this.settings[name] != undefined) { - return this.settings[name]; - } - return ""; -}; -SWFUpload.prototype.callFlash = function (functionName, argumentArray) { - argumentArray = argumentArray || []; - var movieElement = this.getMovieElement(); - var returnValue, returnString; - try { - returnString = movieElement.CallFunction('' + __flash__argumentsToXML(argumentArray, 0) + ''); - returnValue = eval(returnString); - } catch (ex) { - throw "Call to " + functionName + " failed"; - } - if (returnValue != undefined && typeof returnValue.post === "object") { - returnValue = this.unescapeFilePostParams(returnValue); - } - return returnValue; -}; -/* ***************************** - -- Flash control methods -- - Your UI should use these - to operate SWFUpload - ***************************** */ -SWFUpload.prototype.selectFile = function () { - this.callFlash("SelectFile"); -}; -SWFUpload.prototype.selectFiles = function () { - this.callFlash("SelectFiles"); -}; -SWFUpload.prototype.startUpload = function (fileID) { - this.callFlash("StartUpload", [fileID]); -}; -SWFUpload.prototype.cancelUpload = function (fileID, triggerErrorEvent) { - if (triggerErrorEvent !== false) { - triggerErrorEvent = true; - } - this.callFlash("CancelUpload", [fileID, triggerErrorEvent]); -}; -SWFUpload.prototype.stopUpload = function () { - this.callFlash("StopUpload"); -}; -/* ************************ - * Settings methods - * These methods change the SWFUpload settings. - * SWFUpload settings should not be changed directly on the settings object - * since many of the settings need to be passed to Flash in order to take - * effect. - * *********************** */ -SWFUpload.prototype.getStats = function () { - return this.callFlash("GetStats"); -}; -SWFUpload.prototype.setStats = function (statsObject) { - this.callFlash("SetStats", [statsObject]); -}; -SWFUpload.prototype.getFile = function (fileID) { - if (typeof(fileID) === "number") { - return this.callFlash("GetFileByIndex", [fileID]); - } else { - return this.callFlash("GetFile", [fileID]); - } -}; -SWFUpload.prototype.addFileParam = function (fileID, name, value) { - return this.callFlash("AddFileParam", [fileID, name, value]); -}; -SWFUpload.prototype.removeFileParam = function (fileID, name) { - this.callFlash("RemoveFileParam", [fileID, name]); -}; -SWFUpload.prototype.setUploadURL = function (url) { - this.settings.upload_url = url.toString(); - this.callFlash("SetUploadURL", [url]); -}; -SWFUpload.prototype.setPostParams = function (paramsObject) { - this.settings.post_params = paramsObject; - this.callFlash("SetPostParams", [paramsObject]); -}; -SWFUpload.prototype.addPostParam = function (name, value) { - this.settings.post_params[name] = value; - this.callFlash("SetPostParams", [this.settings.post_params]); -}; -SWFUpload.prototype.removePostParam = function (name) { - delete this.settings.post_params[name]; - this.callFlash("SetPostParams", [this.settings.post_params]); -}; -SWFUpload.prototype.setFileTypes = function (types, description) { - this.settings.file_types = types; - this.settings.file_types_description = description; - this.callFlash("SetFileTypes", [types, description]); -}; -SWFUpload.prototype.setFileSizeLimit = function (fileSizeLimit) { - this.settings.file_size_limit = fileSizeLimit; - this.callFlash("SetFileSizeLimit", [fileSizeLimit]); -}; -SWFUpload.prototype.setFileUploadLimit = function (fileUploadLimit) { - this.settings.file_upload_limit = fileUploadLimit; - this.callFlash("SetFileUploadLimit", [fileUploadLimit]); -}; -SWFUpload.prototype.setFileQueueLimit = function (fileQueueLimit) { - this.settings.file_queue_limit = fileQueueLimit; - this.callFlash("SetFileQueueLimit", [fileQueueLimit]); -}; -SWFUpload.prototype.setFilePostName = function (filePostName) { - this.settings.file_post_name = filePostName; - this.callFlash("SetFilePostName", [filePostName]); -}; -SWFUpload.prototype.setUseQueryString = function (useQueryString) { - this.settings.use_query_string = useQueryString; - this.callFlash("SetUseQueryString", [useQueryString]); -}; -SWFUpload.prototype.setRequeueOnError = function (requeueOnError) { - this.settings.requeue_on_error = requeueOnError; - this.callFlash("SetRequeueOnError", [requeueOnError]); -}; -SWFUpload.prototype.setHTTPSuccess = function (http_status_codes) { - if (typeof http_status_codes === "string") { - http_status_codes = http_status_codes.replace(" ", "").split(","); - } - this.settings.http_success = http_status_codes; - this.callFlash("SetHTTPSuccess", [http_status_codes]); -}; -SWFUpload.prototype.setAssumeSuccessTimeout = function (timeout_seconds) { - this.settings.assume_success_timeout = timeout_seconds; - this.callFlash("SetAssumeSuccessTimeout", [timeout_seconds]); -}; -SWFUpload.prototype.setDebugEnabled = function (debugEnabled) { - this.settings.debug_enabled = debugEnabled; - this.callFlash("SetDebugEnabled", [debugEnabled]); -}; -SWFUpload.prototype.setButtonImageURL = function (buttonImageURL) { - if (buttonImageURL == undefined) { - buttonImageURL = ""; - } - this.settings.button_image_url = buttonImageURL; - this.callFlash("SetButtonImageURL", [buttonImageURL]); -}; -SWFUpload.prototype.setButtonDimensions = function (width, height) { - this.settings.button_width = width; - this.settings.button_height = height; - var movie = this.getMovieElement(); - if (movie != undefined) { - movie.style.width = width + "px"; - movie.style.height = height + "px"; - } - this.callFlash("SetButtonDimensions", [width, height]); -}; -SWFUpload.prototype.setButtonText = function (html) { - this.settings.button_text = html; - this.callFlash("SetButtonText", [html]); -}; -SWFUpload.prototype.setButtonTextPadding = function (left, top) { - this.settings.button_text_top_padding = top; - this.settings.button_text_left_padding = left; - this.callFlash("SetButtonTextPadding", [left, top]); -}; -SWFUpload.prototype.setButtonTextStyle = function (css) { - this.settings.button_text_style = css; - this.callFlash("SetButtonTextStyle", [css]); -}; -SWFUpload.prototype.setButtonDisabled = function (isDisabled) { - this.settings.button_disabled = isDisabled; - this.callFlash("SetButtonDisabled", [isDisabled]); -}; -SWFUpload.prototype.setButtonAction = function (buttonAction) { - this.settings.button_action = buttonAction; - this.callFlash("SetButtonAction", [buttonAction]); -}; -SWFUpload.prototype.setButtonCursor = function (cursor) { - this.settings.button_cursor = cursor; - this.callFlash("SetButtonCursor", [cursor]); -}; -/* ******************************* - Flash Event Interfaces - These functions are used by Flash to trigger the various - events. - All these functions a Private. - Because the ExternalInterface library is buggy the event calls - are added to a queue and the queue then executed by a setTimeout. - This ensures that events are executed in a determinate order and that - the ExternalInterface bugs are avoided. -******************************* */ -SWFUpload.prototype.queueEvent = function (handlerName, argumentArray) { - if (argumentArray == undefined) { - argumentArray = []; - } else if (!(argumentArray instanceof Array)) { - argumentArray = [argumentArray]; - } - var self = this; - if (typeof this.settings[handlerName] === "function") { - this.eventQueue.push(function () { - this.settings[handlerName].apply(this, argumentArray); - }); - setTimeout(function () { - self.executeNextEvent(); - }, 0); - } else if (this.settings[handlerName] !== null) { - throw "Event handler " + handlerName + " is unknown or is not a function"; - } -}; -SWFUpload.prototype.executeNextEvent = function () { - var f = this.eventQueue ? this.eventQueue.shift() : null; - if (typeof(f) === "function") { - f.apply(this); - } -}; -SWFUpload.prototype.unescapeFilePostParams = function (file) { - var reg = /[$]([0-9a-f]{4})/i; - var unescapedPost = {}; - var uk; - if (file != undefined) { - for (var k in file.post) { - if (file.post.hasOwnProperty(k)) { - uk = k; - var match; - while ((match = reg.exec(uk)) !== null) { - uk = uk.replace(match[0], String.fromCharCode(parseInt("0x" + match[1], 16))); - } - unescapedPost[uk] = file.post[k]; - } - } - file.post = unescapedPost; - } - return file; -}; -SWFUpload.prototype.testExternalInterface = function () { - try { - return this.callFlash("TestExternalInterface"); - } catch (ex) { - return false; - } -}; -SWFUpload.prototype.flashReady = function () { - var movieElement = this.getMovieElement(); - if (!movieElement) { - this.debug("Flash called back ready but the flash movie can't be found."); - return; - } - this.cleanUp(movieElement); - this.queueEvent("swfupload_loaded_handler"); -}; -SWFUpload.prototype.cleanUp = function (movieElement) { - try { - if (this.movieElement && typeof(movieElement.CallFunction) === "unknown") { - this.debug("Removing Flash functions hooks (this should only run in IE and should prevent memory leaks)"); - for (var key in movieElement) { - try { - if (typeof(movieElement[key]) === "function") { - movieElement[key] = null; - } - } catch (ex) { - } - } - } - } catch (ex1) { - } - window["__flash__removeCallback"] = function (instance, name) { - try { - if (instance) { - instance[name] = null; - } - } catch (flashEx) { - } - }; -}; -/* This is a chance to do something before the browse window opens */ -SWFUpload.prototype.fileDialogStart = function () { - this.queueEvent("file_dialog_start_handler"); -}; -/* Called when a file is successfully added to the queue. */ -SWFUpload.prototype.fileQueued = function (file) { - file = this.unescapeFilePostParams(file); - this.queueEvent("file_queued_handler", file); -}; -/* Handle errors that occur when an attempt to queue a file fails. */ -SWFUpload.prototype.fileQueueError = function (file, errorCode, message) { - file = this.unescapeFilePostParams(file); - this.queueEvent("file_queue_error_handler", [file, errorCode, message]); -}; -/* Called after the file dialog has closed and the selected files have been queued. - You could call startUpload here if you want the queued files to begin uploading immediately. */ -SWFUpload.prototype.fileDialogComplete = function (numFilesSelected, numFilesQueued, numFilesInQueue) { - this.queueEvent("file_dialog_complete_handler", [numFilesSelected, numFilesQueued, numFilesInQueue]); -}; -SWFUpload.prototype.uploadStart = function (file) { - file = this.unescapeFilePostParams(file); - this.queueEvent("return_upload_start_handler", file); -}; -SWFUpload.prototype.returnUploadStart = function (file) { - var returnValue; - if (typeof this.settings.upload_start_handler === "function") { - file = this.unescapeFilePostParams(file); - returnValue = this.settings.upload_start_handler.call(this, file); - } else if (this.settings.upload_start_handler != undefined) { - throw "upload_start_handler must be a function"; - } - if (returnValue === undefined) { - returnValue = true; - } - returnValue = !!returnValue; - this.callFlash("ReturnUploadStart", [returnValue]); -}; -SWFUpload.prototype.uploadProgress = function (file, bytesComplete, bytesTotal) { - file = this.unescapeFilePostParams(file); - this.queueEvent("upload_progress_handler", [file, bytesComplete, bytesTotal]); -}; -SWFUpload.prototype.uploadError = function (file, errorCode, message) { - file = this.unescapeFilePostParams(file); - this.queueEvent("upload_error_handler", [file, errorCode, message]); -}; -SWFUpload.prototype.uploadSuccess = function (file, serverData, responseReceived) { - file = this.unescapeFilePostParams(file); - this.queueEvent("upload_success_handler", [file, serverData, responseReceived]); -}; -SWFUpload.prototype.uploadComplete = function (file) { - file = this.unescapeFilePostParams(file); - this.queueEvent("upload_complete_handler", file); -}; -/* Called by SWFUpload JavaScript and Flash functions when debug is enabled. By default it writes messages to the - internal debug console. You can override this event and have messages written where you want. */ -SWFUpload.prototype.debug = function (message) { - this.queueEvent("debug_handler", message); -}; -/* ********************************** - Debug Console - The debug console is a self contained, in page location - for debug message to be sent. The Debug Console adds - itself to the body if necessary. - The console is automatically scrolled as messages appear. - If you are using your own debug handler or when you deploy to production and - have debug disabled you can remove these functions to reduce the file size - and complexity. -********************************** */ -SWFUpload.prototype.debugMessage = function (message) { - if (this.settings.debug) { - var exceptionMessage, exceptionValues = []; - if (typeof message === "object" && typeof message.name === "string" && typeof message.message === "string") { - for (var key in message) { - if (message.hasOwnProperty(key)) { - exceptionValues.push(key + ": " + message[key]); - } - } - exceptionMessage = exceptionValues.join("\n") || ""; - exceptionValues = exceptionMessage.split("\n"); - exceptionMessage = "EXCEPTION: " + exceptionValues.join("\nEXCEPTION: "); - SWFUpload.Console.writeLine(exceptionMessage); - } else { - SWFUpload.Console.writeLine(message); - } - } -}; -SWFUpload.Console = {}; -SWFUpload.Console.writeLine = function (message) { - var console, documentForm; - try { - console = document.getElementById("SWFUpload_Console"); - if (!console) { - documentForm = document.createElement("form"); - document.getElementsByTagName("body")[0].appendChild(documentForm); - console = document.createElement("textarea"); - console.id = "SWFUpload_Console"; - console.style.fontFamily = "monospace"; - console.setAttribute("wrap", "off"); - console.wrap = "off"; - console.style.overflow = "auto"; - console.style.width = "700px"; - console.style.height = "350px"; - console.style.margin = "5px"; - documentForm.appendChild(console); - } - console.value += message + "\n"; - console.scrollTop = console.scrollHeight - console.clientHeight; - } catch (ex) { - alert("Exception: " + ex.name + " Message: " + ex.message); - } -}; -})(); -(function() { -/* - Queue Plug-in - Features: - *Adds a cancelQueue() method for cancelling the entire queue. - *All queued files are uploaded when startUpload() is called. - *If false is returned from uploadComplete then the queue upload is stopped. - If false is not returned (strict comparison) then the queue upload is continued. - *Adds a QueueComplete event that is fired when all the queued files have finished uploading. - Set the event handler with the queue_complete_handler setting. - */ -if (typeof(SWFUpload) === "function") { - SWFUpload.queue = {}; - SWFUpload.prototype.initSettings = (function (oldInitSettings) { - return function () { - if (typeof(oldInitSettings) === "function") { - oldInitSettings.call(this); - } - this.queueSettings = {}; - this.queueSettings.queue_cancelled_flag = false; - this.queueSettings.queue_upload_count = 0; - this.queueSettings.user_upload_complete_handler = this.settings.upload_complete_handler; - this.queueSettings.user_upload_start_handler = this.settings.upload_start_handler; - this.settings.upload_complete_handler = SWFUpload.queue.uploadCompleteHandler; - this.settings.upload_start_handler = SWFUpload.queue.uploadStartHandler; - this.settings.queue_complete_handler = this.settings.queue_complete_handler || null; - }; - })(SWFUpload.prototype.initSettings); - SWFUpload.prototype.startUpload = function (fileID) { - this.queueSettings.queue_cancelled_flag = false; - this.callFlash("StartUpload", [fileID]); - }; - SWFUpload.prototype.cancelQueue = function () { - this.queueSettings.queue_cancelled_flag = true; - this.stopUpload(); - var stats = this.getStats(); - while (stats.files_queued > 0) { - this.cancelUpload(); - stats = this.getStats(); - } - }; - SWFUpload.queue.uploadStartHandler = function (file) { - var returnValue; - if (typeof(this.queueSettings.user_upload_start_handler) === "function") { - returnValue = this.queueSettings.user_upload_start_handler.call(this, file); - } - returnValue = (returnValue === false) ? false : true; - this.queueSettings.queue_cancelled_flag = !returnValue; - return returnValue; - }; - SWFUpload.queue.uploadCompleteHandler = function (file) { - var user_upload_complete_handler = this.queueSettings.user_upload_complete_handler; - var continueUpload; - if (file.filestatus === SWFUpload.FILE_STATUS.COMPLETE) { - this.queueSettings.queue_upload_count++; - } - if (typeof(user_upload_complete_handler) === "function") { - continueUpload = (user_upload_complete_handler.call(this, file) === false) ? false : true; - } else if (file.filestatus === SWFUpload.FILE_STATUS.QUEUED) { - continueUpload = false; - } else { - continueUpload = true; - } - if (continueUpload) { - var stats = this.getStats(); - if (stats.files_queued > 0 && this.queueSettings.queue_cancelled_flag === false) { - this.startUpload(); - } else if (this.queueSettings.queue_cancelled_flag === false) { - this.queueEvent("queue_complete_handler", [this.queueSettings.queue_upload_count]); - this.queueSettings.queue_upload_count = 0; - } else { - this.queueSettings.queue_cancelled_flag = false; - this.queueSettings.queue_upload_count = 0; - } - } - }; -} -})(); - + +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ +(function(K) { +function KSWFUpload(options) { + this.init(options); +} +K.extend(KSWFUpload, { + init : function(options) { + var self = this; + options.afterError = options.afterError || function(str) { + alert(str); + }; + self.options = options; + self.progressbars = {}; + self.div = K(options.container).html([ + '
', + '
', + '
', + '', + '
', + '
' + options.uploadDesc + '
', + '', + '', + '', + '
', + '
', + '
' + ].join('')); + self.bodyDiv = K('.ke-swfupload-body', self.div); + function showError(itemDiv, msg) { + K('.ke-status > div', itemDiv).hide(); + K('.ke-message', itemDiv).addClass('ke-error').show().html(K.escape(msg)); + } + var settings = { + debug : false, + upload_url : options.uploadUrl, + flash_url : options.flashUrl, + file_post_name : options.filePostName, + button_placeholder : K('.ke-swfupload-button > input', self.div)[0], + button_image_url: options.buttonImageUrl, + button_width: options.buttonWidth, + button_height: options.buttonHeight, + button_cursor : SWFUpload.CURSOR.HAND, + file_types : options.fileTypes, + file_types_description : options.fileTypesDesc, + file_upload_limit : options.fileUploadLimit, + file_size_limit : options.fileSizeLimit, + post_params : options.postParams, + file_queued_handler : function(file) { + file.url = self.options.fileIconUrl; + self.appendFile(file); + }, + file_queue_error_handler : function(file, errorCode, message) { + var errorName = ''; + switch (errorCode) { + case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED: + errorName = options.queueLimitExceeded; + break; + case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT: + errorName = options.fileExceedsSizeLimit; + break; + case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE: + errorName = options.zeroByteFile; + break; + case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE: + errorName = options.invalidFiletype; + break; + default: + errorName = options.unknownError; + break; + } + K.DEBUG && alert(errorName); + }, + upload_start_handler : function(file) { + var self = this; + var itemDiv = K('div[data-id="' + file.id + '"]', self.bodyDiv); + K('.ke-status > div', itemDiv).hide(); + K('.ke-progressbar', itemDiv).show(); + }, + upload_progress_handler : function(file, bytesLoaded, bytesTotal) { + var percent = Math.round(bytesLoaded * 100 / bytesTotal); + var progressbar = self.progressbars[file.id]; + progressbar.bar.css('width', Math.round(percent * 80 / 100) + 'px'); + progressbar.percent.html(percent + '%'); + }, + upload_error_handler : function(file, errorCode, message) { + if (file && file.filestatus == SWFUpload.FILE_STATUS.ERROR) { + var itemDiv = K('div[data-id="' + file.id + '"]', self.bodyDiv).eq(0); + showError(itemDiv, self.options.errorMessage); + } + }, + upload_success_handler : function(file, serverData) { + var itemDiv = K('div[data-id="' + file.id + '"]', self.bodyDiv).eq(0); + var data = {}; + try { + data = K.json(serverData); + } catch (e) { + self.options.afterError.call(this, '' + serverData + ''); + } + if (data.error !== 0) { + showError(itemDiv, K.DEBUG ? data.message : self.options.errorMessage); + return; + } + file.url = data.url; + K('.ke-img', itemDiv).attr('src', file.url).attr('data-status', file.filestatus).data('data', data); + K('.ke-status > div', itemDiv).hide(); + } + }; + self.swfu = new SWFUpload(settings); + K('.ke-swfupload-startupload input', self.div).click(function() { + self.swfu.startUpload(); + }); + }, + getUrlList : function() { + var list = []; + K('.ke-img', self.bodyDiv).each(function() { + var img = K(this); + var status = img.attr('data-status'); + if (status == SWFUpload.FILE_STATUS.COMPLETE) { + list.push(img.data('data')); + } + }); + return list; + }, + removeFile : function(fileId) { + var self = this; + self.swfu.cancelUpload(fileId); + var itemDiv = K('div[data-id="' + fileId + '"]', self.bodyDiv); + K('.ke-photo', itemDiv).unbind(); + K('.ke-delete', itemDiv).unbind(); + itemDiv.remove(); + }, + removeFiles : function() { + var self = this; + K('.ke-item', self.bodyDiv).each(function() { + self.removeFile(K(this).attr('data-id')); + }); + }, + appendFile : function(file) { + var self = this; + var itemDiv = K('
'); + self.bodyDiv.append(itemDiv); + var photoDiv = K('
') + .mouseover(function(e) { + K(this).addClass('ke-on'); + }) + .mouseout(function(e) { + K(this).removeClass('ke-on'); + }); + itemDiv.append(photoDiv); + var img = K('' + file.name + ''); + photoDiv.append(img); + K('').appendTo(photoDiv).click(function() { + self.removeFile(file.id); + }); + var statusDiv = K('
').appendTo(photoDiv); + K(['
', + '
', + '
0%
'].join('')).hide().appendTo(statusDiv); + K('
' + self.options.pendingMessage + '
').appendTo(statusDiv); + itemDiv.append('
' + file.name + '
'); + self.progressbars[file.id] = { + bar : K('.ke-progressbar-bar-inner', photoDiv), + percent : K('.ke-progressbar-percent', photoDiv) + }; + }, + remove : function() { + this.removeFiles(); + this.swfu.destroy(); + this.div.html(''); + } +}); +K.swfupload = function(element, options) { + return new KSWFUpload(element, options); +}; +})(KindEditor); +KindEditor.plugin('multiimage', function(K) { + var self = this, name = 'multiimage', + formatUploadUrl = K.undef(self.formatUploadUrl, true), + uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'), + imgPath = self.pluginsPath + 'multiimage/images/', + imageSizeLimit = K.undef(self.imageSizeLimit, '1MB'), + imageFileTypes = K.undef(self.imageFileTypes, '*.jpg;*.gif;*.png'), + imageUploadLimit = K.undef(self.imageUploadLimit, 20), + filePostName = K.undef(self.filePostName, 'imgFile'), + lang = self.lang(name + '.'); + self.plugin.multiImageDialog = function(options) { + var clickFn = options.clickFn, + uploadDesc = K.tmpl(lang.uploadDesc, {uploadLimit : imageUploadLimit, sizeLimit : imageSizeLimit}); + var html = [ + '
', + '
', + '
', + '
' + ].join(''); + var dialog = self.createDialog({ + name : name, + width : 650, + height : 510, + title : self.lang(name), + body : html, + previewBtn : { + name : lang.insertAll, + click : function(e) { + clickFn.call(self, swfupload.getUrlList()); + } + }, + yesBtn : { + name : lang.clearAll, + click : function(e) { + swfupload.removeFiles(); + } + }, + beforeRemove : function() { + if (!K.IE || K.V <= 8) { + swfupload.remove(); + } + } + }), + div = dialog.div; + var swfupload = K.swfupload({ + container : K('.swfupload', div), + buttonImageUrl : imgPath + (self.langType == 'zh-CN' ? 'select-files-zh-CN.png' : 'select-files-en.png'), + buttonWidth : self.langType == 'zh-CN' ? 72 : 88, + buttonHeight : 23, + fileIconUrl : imgPath + 'image.png', + uploadDesc : uploadDesc, + startButtonValue : lang.startUpload, + uploadUrl : K.addParam(uploadJson, 'dir=image'), + flashUrl : imgPath + 'swfupload.swf', + filePostName : filePostName, + fileTypes : '*.jpg;*.jpeg;*.gif;*.png;*.bmp', + fileTypesDesc : 'Image Files', + fileUploadLimit : imageUploadLimit, + fileSizeLimit : imageSizeLimit, + postParams : K.undef(self.extraFileUploadParams, {}), + queueLimitExceeded : lang.queueLimitExceeded, + fileExceedsSizeLimit : lang.fileExceedsSizeLimit, + zeroByteFile : lang.zeroByteFile, + invalidFiletype : lang.invalidFiletype, + unknownError : lang.unknownError, + pendingMessage : lang.pending, + errorMessage : lang.uploadError, + afterError : function(html) { + self.errorDialog(html); + } + }); + return dialog; + }; + self.clickToolbar(name, function() { + self.plugin.multiImageDialog({ + clickFn : function (urlList) { + if (urlList.length === 0) { + return; + } + K.each(urlList, function(i, data) { + if (self.afterUpload) { + self.afterUpload.call(self, data.url, data, 'multiimage'); + } + self.exec('insertimage', data.url, data.title, data.width, data.height, data.border, data.align); + }); + setTimeout(function() { + self.hideDialog().focus(); + }, 0); + } + }); + }); +}); +/* ******************* */ +/* Constructor & Init */ +/* ******************* */ +(function() { +window.SWFUpload = function (settings) { + this.initSWFUpload(settings); +}; +SWFUpload.prototype.initSWFUpload = function (settings) { + try { + this.customSettings = {}; + this.settings = settings; + this.eventQueue = []; + this.movieName = "KindEditor_SWFUpload_" + SWFUpload.movieCount++; + this.movieElement = null; + SWFUpload.instances[this.movieName] = this; + this.initSettings(); + this.loadFlash(); + this.displayDebugInfo(); + } catch (ex) { + delete SWFUpload.instances[this.movieName]; + throw ex; + } +}; +/* *************** */ +/* Static Members */ +/* *************** */ +SWFUpload.instances = {}; +SWFUpload.movieCount = 0; +SWFUpload.version = "2.2.0 2009-03-25"; +SWFUpload.QUEUE_ERROR = { + QUEUE_LIMIT_EXCEEDED : -100, + FILE_EXCEEDS_SIZE_LIMIT : -110, + ZERO_BYTE_FILE : -120, + INVALID_FILETYPE : -130 +}; +SWFUpload.UPLOAD_ERROR = { + HTTP_ERROR : -200, + MISSING_UPLOAD_URL : -210, + IO_ERROR : -220, + SECURITY_ERROR : -230, + UPLOAD_LIMIT_EXCEEDED : -240, + UPLOAD_FAILED : -250, + SPECIFIED_FILE_ID_NOT_FOUND : -260, + FILE_VALIDATION_FAILED : -270, + FILE_CANCELLED : -280, + UPLOAD_STOPPED : -290 +}; +SWFUpload.FILE_STATUS = { + QUEUED : -1, + IN_PROGRESS : -2, + ERROR : -3, + COMPLETE : -4, + CANCELLED : -5 +}; +SWFUpload.BUTTON_ACTION = { + SELECT_FILE : -100, + SELECT_FILES : -110, + START_UPLOAD : -120 +}; +SWFUpload.CURSOR = { + ARROW : -1, + HAND : -2 +}; +SWFUpload.WINDOW_MODE = { + WINDOW : "window", + TRANSPARENT : "transparent", + OPAQUE : "opaque" +}; +SWFUpload.completeURL = function(url) { + if (typeof(url) !== "string" || url.match(/^https?:\/\//i) || url.match(/^\//)) { + return url; + } + var currentURL = window.location.protocol + "//" + window.location.hostname + (window.location.port ? ":" + window.location.port : ""); + var indexSlash = window.location.pathname.lastIndexOf("/"); + if (indexSlash <= 0) { + path = "/"; + } else { + path = window.location.pathname.substr(0, indexSlash) + "/"; + } + return /*currentURL +*/ path + url; +}; +/* ******************** */ +/* Instance Members */ +/* ******************** */ +SWFUpload.prototype.initSettings = function () { + this.ensureDefault = function (settingName, defaultValue) { + this.settings[settingName] = (this.settings[settingName] == undefined) ? defaultValue : this.settings[settingName]; + }; + this.ensureDefault("upload_url", ""); + this.ensureDefault("preserve_relative_urls", false); + this.ensureDefault("file_post_name", "Filedata"); + this.ensureDefault("post_params", {}); + this.ensureDefault("use_query_string", false); + this.ensureDefault("requeue_on_error", false); + this.ensureDefault("http_success", []); + this.ensureDefault("assume_success_timeout", 0); + this.ensureDefault("file_types", "*.*"); + this.ensureDefault("file_types_description", "All Files"); + this.ensureDefault("file_size_limit", 0); + this.ensureDefault("file_upload_limit", 0); + this.ensureDefault("file_queue_limit", 0); + this.ensureDefault("flash_url", "swfupload.swf"); + this.ensureDefault("prevent_swf_caching", true); + this.ensureDefault("button_image_url", ""); + this.ensureDefault("button_width", 1); + this.ensureDefault("button_height", 1); + this.ensureDefault("button_text", ""); + this.ensureDefault("button_text_style", "color: #000000; font-size: 16pt;"); + this.ensureDefault("button_text_top_padding", 0); + this.ensureDefault("button_text_left_padding", 0); + this.ensureDefault("button_action", SWFUpload.BUTTON_ACTION.SELECT_FILES); + this.ensureDefault("button_disabled", false); + this.ensureDefault("button_placeholder_id", ""); + this.ensureDefault("button_placeholder", null); + this.ensureDefault("button_cursor", SWFUpload.CURSOR.ARROW); + this.ensureDefault("button_window_mode", SWFUpload.WINDOW_MODE.WINDOW); + this.ensureDefault("debug", false); + this.settings.debug_enabled = this.settings.debug; + this.settings.return_upload_start_handler = this.returnUploadStart; + this.ensureDefault("swfupload_loaded_handler", null); + this.ensureDefault("file_dialog_start_handler", null); + this.ensureDefault("file_queued_handler", null); + this.ensureDefault("file_queue_error_handler", null); + this.ensureDefault("file_dialog_complete_handler", null); + this.ensureDefault("upload_start_handler", null); + this.ensureDefault("upload_progress_handler", null); + this.ensureDefault("upload_error_handler", null); + this.ensureDefault("upload_success_handler", null); + this.ensureDefault("upload_complete_handler", null); + this.ensureDefault("debug_handler", this.debugMessage); + this.ensureDefault("custom_settings", {}); + this.customSettings = this.settings.custom_settings; + if (!!this.settings.prevent_swf_caching) { + this.settings.flash_url = this.settings.flash_url + (this.settings.flash_url.indexOf("?") < 0 ? "?" : "&") + "preventswfcaching=" + new Date().getTime(); + } + if (!this.settings.preserve_relative_urls) { + this.settings.upload_url = SWFUpload.completeURL(this.settings.upload_url); + this.settings.button_image_url = SWFUpload.completeURL(this.settings.button_image_url); + } + delete this.ensureDefault; +}; +SWFUpload.prototype.loadFlash = function () { + var targetElement, tempParent; + if (document.getElementById(this.movieName) !== null) { + throw "ID " + this.movieName + " is already in use. The Flash Object could not be added"; + } + targetElement = document.getElementById(this.settings.button_placeholder_id) || this.settings.button_placeholder; + if (targetElement == undefined) { + throw "Could not find the placeholder element: " + this.settings.button_placeholder_id; + } + tempParent = document.createElement("div"); + tempParent.innerHTML = this.getFlashHTML(); + targetElement.parentNode.replaceChild(tempParent.firstChild, targetElement); + if (window[this.movieName] == undefined) { + window[this.movieName] = this.getMovieElement(); + } +}; +SWFUpload.prototype.getFlashHTML = function () { + var classid = ''; + if (KindEditor.IE && KindEditor.V > 8) { + classid = ' classid = "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"'; + } + return ['', + '', + '', + '', + '', + '', + '', + ''].join(""); +}; +SWFUpload.prototype.getFlashVars = function () { + var paramString = this.buildParamString(); + var httpSuccessString = this.settings.http_success.join(","); + return ["movieName=", encodeURIComponent(this.movieName), + "&uploadURL=", encodeURIComponent(this.settings.upload_url), + "&useQueryString=", encodeURIComponent(this.settings.use_query_string), + "&requeueOnError=", encodeURIComponent(this.settings.requeue_on_error), + "&httpSuccess=", encodeURIComponent(httpSuccessString), + "&assumeSuccessTimeout=", encodeURIComponent(this.settings.assume_success_timeout), + "&params=", encodeURIComponent(paramString), + "&filePostName=", encodeURIComponent(this.settings.file_post_name), + "&fileTypes=", encodeURIComponent(this.settings.file_types), + "&fileTypesDescription=", encodeURIComponent(this.settings.file_types_description), + "&fileSizeLimit=", encodeURIComponent(this.settings.file_size_limit), + "&fileUploadLimit=", encodeURIComponent(this.settings.file_upload_limit), + "&fileQueueLimit=", encodeURIComponent(this.settings.file_queue_limit), + "&debugEnabled=", encodeURIComponent(this.settings.debug_enabled), + "&buttonImageURL=", encodeURIComponent(this.settings.button_image_url), + "&buttonWidth=", encodeURIComponent(this.settings.button_width), + "&buttonHeight=", encodeURIComponent(this.settings.button_height), + "&buttonText=", encodeURIComponent(this.settings.button_text), + "&buttonTextTopPadding=", encodeURIComponent(this.settings.button_text_top_padding), + "&buttonTextLeftPadding=", encodeURIComponent(this.settings.button_text_left_padding), + "&buttonTextStyle=", encodeURIComponent(this.settings.button_text_style), + "&buttonAction=", encodeURIComponent(this.settings.button_action), + "&buttonDisabled=", encodeURIComponent(this.settings.button_disabled), + "&buttonCursor=", encodeURIComponent(this.settings.button_cursor) + ].join(""); +}; +SWFUpload.prototype.getMovieElement = function () { + if (this.movieElement == undefined) { + this.movieElement = document.getElementById(this.movieName); + } + if (this.movieElement === null) { + throw "Could not find Flash element"; + } + return this.movieElement; +}; +SWFUpload.prototype.buildParamString = function () { + var postParams = this.settings.post_params; + var paramStringPairs = []; + if (typeof(postParams) === "object") { + for (var name in postParams) { + if (postParams.hasOwnProperty(name)) { + paramStringPairs.push(encodeURIComponent(name.toString()) + "=" + encodeURIComponent(postParams[name].toString())); + } + } + } + return paramStringPairs.join("&"); +}; +SWFUpload.prototype.destroy = function () { + try { + this.cancelUpload(null, false); + var movieElement = null; + movieElement = this.getMovieElement(); + if (movieElement && typeof(movieElement.CallFunction) === "unknown") { + for (var i in movieElement) { + try { + if (typeof(movieElement[i]) === "function") { + movieElement[i] = null; + } + } catch (ex1) {} + } + try { + movieElement.parentNode.removeChild(movieElement); + } catch (ex) {} + } + window[this.movieName] = null; + SWFUpload.instances[this.movieName] = null; + delete SWFUpload.instances[this.movieName]; + this.movieElement = null; + this.settings = null; + this.customSettings = null; + this.eventQueue = null; + this.movieName = null; + return true; + } catch (ex2) { + return false; + } +}; +SWFUpload.prototype.displayDebugInfo = function () { + this.debug( + [ + "---SWFUpload Instance Info---\n", + "Version: ", SWFUpload.version, "\n", + "Movie Name: ", this.movieName, "\n", + "Settings:\n", + "\t", "upload_url: ", this.settings.upload_url, "\n", + "\t", "flash_url: ", this.settings.flash_url, "\n", + "\t", "use_query_string: ", this.settings.use_query_string.toString(), "\n", + "\t", "requeue_on_error: ", this.settings.requeue_on_error.toString(), "\n", + "\t", "http_success: ", this.settings.http_success.join(", "), "\n", + "\t", "assume_success_timeout: ", this.settings.assume_success_timeout, "\n", + "\t", "file_post_name: ", this.settings.file_post_name, "\n", + "\t", "post_params: ", this.settings.post_params.toString(), "\n", + "\t", "file_types: ", this.settings.file_types, "\n", + "\t", "file_types_description: ", this.settings.file_types_description, "\n", + "\t", "file_size_limit: ", this.settings.file_size_limit, "\n", + "\t", "file_upload_limit: ", this.settings.file_upload_limit, "\n", + "\t", "file_queue_limit: ", this.settings.file_queue_limit, "\n", + "\t", "debug: ", this.settings.debug.toString(), "\n", + "\t", "prevent_swf_caching: ", this.settings.prevent_swf_caching.toString(), "\n", + "\t", "button_placeholder_id: ", this.settings.button_placeholder_id.toString(), "\n", + "\t", "button_placeholder: ", (this.settings.button_placeholder ? "Set" : "Not Set"), "\n", + "\t", "button_image_url: ", this.settings.button_image_url.toString(), "\n", + "\t", "button_width: ", this.settings.button_width.toString(), "\n", + "\t", "button_height: ", this.settings.button_height.toString(), "\n", + "\t", "button_text: ", this.settings.button_text.toString(), "\n", + "\t", "button_text_style: ", this.settings.button_text_style.toString(), "\n", + "\t", "button_text_top_padding: ", this.settings.button_text_top_padding.toString(), "\n", + "\t", "button_text_left_padding: ", this.settings.button_text_left_padding.toString(), "\n", + "\t", "button_action: ", this.settings.button_action.toString(), "\n", + "\t", "button_disabled: ", this.settings.button_disabled.toString(), "\n", + "\t", "custom_settings: ", this.settings.custom_settings.toString(), "\n", + "Event Handlers:\n", + "\t", "swfupload_loaded_handler assigned: ", (typeof this.settings.swfupload_loaded_handler === "function").toString(), "\n", + "\t", "file_dialog_start_handler assigned: ", (typeof this.settings.file_dialog_start_handler === "function").toString(), "\n", + "\t", "file_queued_handler assigned: ", (typeof this.settings.file_queued_handler === "function").toString(), "\n", + "\t", "file_queue_error_handler assigned: ", (typeof this.settings.file_queue_error_handler === "function").toString(), "\n", + "\t", "upload_start_handler assigned: ", (typeof this.settings.upload_start_handler === "function").toString(), "\n", + "\t", "upload_progress_handler assigned: ", (typeof this.settings.upload_progress_handler === "function").toString(), "\n", + "\t", "upload_error_handler assigned: ", (typeof this.settings.upload_error_handler === "function").toString(), "\n", + "\t", "upload_success_handler assigned: ", (typeof this.settings.upload_success_handler === "function").toString(), "\n", + "\t", "upload_complete_handler assigned: ", (typeof this.settings.upload_complete_handler === "function").toString(), "\n", + "\t", "debug_handler assigned: ", (typeof this.settings.debug_handler === "function").toString(), "\n" + ].join("") + ); +}; +/* Note: addSetting and getSetting are no longer used by SWFUpload but are included + the maintain v2 API compatibility +*/ +SWFUpload.prototype.addSetting = function (name, value, default_value) { + if (value == undefined) { + return (this.settings[name] = default_value); + } else { + return (this.settings[name] = value); + } +}; +SWFUpload.prototype.getSetting = function (name) { + if (this.settings[name] != undefined) { + return this.settings[name]; + } + return ""; +}; +SWFUpload.prototype.callFlash = function (functionName, argumentArray) { + argumentArray = argumentArray || []; + var movieElement = this.getMovieElement(); + var returnValue, returnString; + try { + returnString = movieElement.CallFunction('' + __flash__argumentsToXML(argumentArray, 0) + ''); + returnValue = eval(returnString); + } catch (ex) { + throw "Call to " + functionName + " failed"; + } + if (returnValue != undefined && typeof returnValue.post === "object") { + returnValue = this.unescapeFilePostParams(returnValue); + } + return returnValue; +}; +/* ***************************** + -- Flash control methods -- + Your UI should use these + to operate SWFUpload + ***************************** */ +SWFUpload.prototype.selectFile = function () { + this.callFlash("SelectFile"); +}; +SWFUpload.prototype.selectFiles = function () { + this.callFlash("SelectFiles"); +}; +SWFUpload.prototype.startUpload = function (fileID) { + this.callFlash("StartUpload", [fileID]); +}; +SWFUpload.prototype.cancelUpload = function (fileID, triggerErrorEvent) { + if (triggerErrorEvent !== false) { + triggerErrorEvent = true; + } + this.callFlash("CancelUpload", [fileID, triggerErrorEvent]); +}; +SWFUpload.prototype.stopUpload = function () { + this.callFlash("StopUpload"); +}; +/* ************************ + * Settings methods + * These methods change the SWFUpload settings. + * SWFUpload settings should not be changed directly on the settings object + * since many of the settings need to be passed to Flash in order to take + * effect. + * *********************** */ +SWFUpload.prototype.getStats = function () { + return this.callFlash("GetStats"); +}; +SWFUpload.prototype.setStats = function (statsObject) { + this.callFlash("SetStats", [statsObject]); +}; +SWFUpload.prototype.getFile = function (fileID) { + if (typeof(fileID) === "number") { + return this.callFlash("GetFileByIndex", [fileID]); + } else { + return this.callFlash("GetFile", [fileID]); + } +}; +SWFUpload.prototype.addFileParam = function (fileID, name, value) { + return this.callFlash("AddFileParam", [fileID, name, value]); +}; +SWFUpload.prototype.removeFileParam = function (fileID, name) { + this.callFlash("RemoveFileParam", [fileID, name]); +}; +SWFUpload.prototype.setUploadURL = function (url) { + this.settings.upload_url = url.toString(); + this.callFlash("SetUploadURL", [url]); +}; +SWFUpload.prototype.setPostParams = function (paramsObject) { + this.settings.post_params = paramsObject; + this.callFlash("SetPostParams", [paramsObject]); +}; +SWFUpload.prototype.addPostParam = function (name, value) { + this.settings.post_params[name] = value; + this.callFlash("SetPostParams", [this.settings.post_params]); +}; +SWFUpload.prototype.removePostParam = function (name) { + delete this.settings.post_params[name]; + this.callFlash("SetPostParams", [this.settings.post_params]); +}; +SWFUpload.prototype.setFileTypes = function (types, description) { + this.settings.file_types = types; + this.settings.file_types_description = description; + this.callFlash("SetFileTypes", [types, description]); +}; +SWFUpload.prototype.setFileSizeLimit = function (fileSizeLimit) { + this.settings.file_size_limit = fileSizeLimit; + this.callFlash("SetFileSizeLimit", [fileSizeLimit]); +}; +SWFUpload.prototype.setFileUploadLimit = function (fileUploadLimit) { + this.settings.file_upload_limit = fileUploadLimit; + this.callFlash("SetFileUploadLimit", [fileUploadLimit]); +}; +SWFUpload.prototype.setFileQueueLimit = function (fileQueueLimit) { + this.settings.file_queue_limit = fileQueueLimit; + this.callFlash("SetFileQueueLimit", [fileQueueLimit]); +}; +SWFUpload.prototype.setFilePostName = function (filePostName) { + this.settings.file_post_name = filePostName; + this.callFlash("SetFilePostName", [filePostName]); +}; +SWFUpload.prototype.setUseQueryString = function (useQueryString) { + this.settings.use_query_string = useQueryString; + this.callFlash("SetUseQueryString", [useQueryString]); +}; +SWFUpload.prototype.setRequeueOnError = function (requeueOnError) { + this.settings.requeue_on_error = requeueOnError; + this.callFlash("SetRequeueOnError", [requeueOnError]); +}; +SWFUpload.prototype.setHTTPSuccess = function (http_status_codes) { + if (typeof http_status_codes === "string") { + http_status_codes = http_status_codes.replace(" ", "").split(","); + } + this.settings.http_success = http_status_codes; + this.callFlash("SetHTTPSuccess", [http_status_codes]); +}; +SWFUpload.prototype.setAssumeSuccessTimeout = function (timeout_seconds) { + this.settings.assume_success_timeout = timeout_seconds; + this.callFlash("SetAssumeSuccessTimeout", [timeout_seconds]); +}; +SWFUpload.prototype.setDebugEnabled = function (debugEnabled) { + this.settings.debug_enabled = debugEnabled; + this.callFlash("SetDebugEnabled", [debugEnabled]); +}; +SWFUpload.prototype.setButtonImageURL = function (buttonImageURL) { + if (buttonImageURL == undefined) { + buttonImageURL = ""; + } + this.settings.button_image_url = buttonImageURL; + this.callFlash("SetButtonImageURL", [buttonImageURL]); +}; +SWFUpload.prototype.setButtonDimensions = function (width, height) { + this.settings.button_width = width; + this.settings.button_height = height; + var movie = this.getMovieElement(); + if (movie != undefined) { + movie.style.width = width + "px"; + movie.style.height = height + "px"; + } + this.callFlash("SetButtonDimensions", [width, height]); +}; +SWFUpload.prototype.setButtonText = function (html) { + this.settings.button_text = html; + this.callFlash("SetButtonText", [html]); +}; +SWFUpload.prototype.setButtonTextPadding = function (left, top) { + this.settings.button_text_top_padding = top; + this.settings.button_text_left_padding = left; + this.callFlash("SetButtonTextPadding", [left, top]); +}; +SWFUpload.prototype.setButtonTextStyle = function (css) { + this.settings.button_text_style = css; + this.callFlash("SetButtonTextStyle", [css]); +}; +SWFUpload.prototype.setButtonDisabled = function (isDisabled) { + this.settings.button_disabled = isDisabled; + this.callFlash("SetButtonDisabled", [isDisabled]); +}; +SWFUpload.prototype.setButtonAction = function (buttonAction) { + this.settings.button_action = buttonAction; + this.callFlash("SetButtonAction", [buttonAction]); +}; +SWFUpload.prototype.setButtonCursor = function (cursor) { + this.settings.button_cursor = cursor; + this.callFlash("SetButtonCursor", [cursor]); +}; +/* ******************************* + Flash Event Interfaces + These functions are used by Flash to trigger the various + events. + All these functions a Private. + Because the ExternalInterface library is buggy the exchange calls + are added to a queue and the queue then executed by a setTimeout. + This ensures that events are executed in a determinate order and that + the ExternalInterface bugs are avoided. +******************************* */ +SWFUpload.prototype.queueEvent = function (handlerName, argumentArray) { + if (argumentArray == undefined) { + argumentArray = []; + } else if (!(argumentArray instanceof Array)) { + argumentArray = [argumentArray]; + } + var self = this; + if (typeof this.settings[handlerName] === "function") { + this.eventQueue.push(function () { + this.settings[handlerName].apply(this, argumentArray); + }); + setTimeout(function () { + self.executeNextEvent(); + }, 0); + } else if (this.settings[handlerName] !== null) { + throw "Event handler " + handlerName + " is unknown or is not a function"; + } +}; +SWFUpload.prototype.executeNextEvent = function () { + var f = this.eventQueue ? this.eventQueue.shift() : null; + if (typeof(f) === "function") { + f.apply(this); + } +}; +SWFUpload.prototype.unescapeFilePostParams = function (file) { + var reg = /[$]([0-9a-f]{4})/i; + var unescapedPost = {}; + var uk; + if (file != undefined) { + for (var k in file.post) { + if (file.post.hasOwnProperty(k)) { + uk = k; + var match; + while ((match = reg.exec(uk)) !== null) { + uk = uk.replace(match[0], String.fromCharCode(parseInt("0x" + match[1], 16))); + } + unescapedPost[uk] = file.post[k]; + } + } + file.post = unescapedPost; + } + return file; +}; +SWFUpload.prototype.testExternalInterface = function () { + try { + return this.callFlash("TestExternalInterface"); + } catch (ex) { + return false; + } +}; +SWFUpload.prototype.flashReady = function () { + var movieElement = this.getMovieElement(); + if (!movieElement) { + this.debug("Flash called back ready but the flash movie can't be found."); + return; + } + this.cleanUp(movieElement); + this.queueEvent("swfupload_loaded_handler"); +}; +SWFUpload.prototype.cleanUp = function (movieElement) { + try { + if (this.movieElement && typeof(movieElement.CallFunction) === "unknown") { + this.debug("Removing Flash functions hooks (this should only run in IE and should prevent memory leaks)"); + for (var key in movieElement) { + try { + if (typeof(movieElement[key]) === "function") { + movieElement[key] = null; + } + } catch (ex) { + } + } + } + } catch (ex1) { + } + window["__flash__removeCallback"] = function (instance, name) { + try { + if (instance) { + instance[name] = null; + } + } catch (flashEx) { + } + }; +}; +/* This is a chance to do something before the browse window opens */ +SWFUpload.prototype.fileDialogStart = function () { + this.queueEvent("file_dialog_start_handler"); +}; +/* Called when a file is successfully added to the queue. */ +SWFUpload.prototype.fileQueued = function (file) { + file = this.unescapeFilePostParams(file); + this.queueEvent("file_queued_handler", file); +}; +/* Handle errors that occur when an attempt to queue a file fails. */ +SWFUpload.prototype.fileQueueError = function (file, errorCode, message) { + file = this.unescapeFilePostParams(file); + this.queueEvent("file_queue_error_handler", [file, errorCode, message]); +}; +/* Called after the file dialog has closed and the selected files have been queued. + You could call startUpload here if you want the queued files to begin uploading immediately. */ +SWFUpload.prototype.fileDialogComplete = function (numFilesSelected, numFilesQueued, numFilesInQueue) { + this.queueEvent("file_dialog_complete_handler", [numFilesSelected, numFilesQueued, numFilesInQueue]); +}; +SWFUpload.prototype.uploadStart = function (file) { + file = this.unescapeFilePostParams(file); + this.queueEvent("return_upload_start_handler", file); +}; +SWFUpload.prototype.returnUploadStart = function (file) { + var returnValue; + if (typeof this.settings.upload_start_handler === "function") { + file = this.unescapeFilePostParams(file); + returnValue = this.settings.upload_start_handler.call(this, file); + } else if (this.settings.upload_start_handler != undefined) { + throw "upload_start_handler must be a function"; + } + if (returnValue === undefined) { + returnValue = true; + } + returnValue = !!returnValue; + this.callFlash("ReturnUploadStart", [returnValue]); +}; +SWFUpload.prototype.uploadProgress = function (file, bytesComplete, bytesTotal) { + file = this.unescapeFilePostParams(file); + this.queueEvent("upload_progress_handler", [file, bytesComplete, bytesTotal]); +}; +SWFUpload.prototype.uploadError = function (file, errorCode, message) { + file = this.unescapeFilePostParams(file); + this.queueEvent("upload_error_handler", [file, errorCode, message]); +}; +SWFUpload.prototype.uploadSuccess = function (file, serverData, responseReceived) { + file = this.unescapeFilePostParams(file); + this.queueEvent("upload_success_handler", [file, serverData, responseReceived]); +}; +SWFUpload.prototype.uploadComplete = function (file) { + file = this.unescapeFilePostParams(file); + this.queueEvent("upload_complete_handler", file); +}; +/* Called by SWFUpload JavaScript and Flash functions when debug is enabled. By default it writes messages to the + internal debug console. You can override this exchange and have messages written where you want. */ +SWFUpload.prototype.debug = function (message) { + this.queueEvent("debug_handler", message); +}; +/* ********************************** + Debug Console + The debug console is a self contained, in page location + for debug message to be sent. The Debug Console adds + itself to the body if necessary. + The console is automatically scrolled as messages appear. + If you are using your own debug handler or when you deploy to production and + have debug disabled you can remove these functions to reduce the file size + and complexity. +********************************** */ +SWFUpload.prototype.debugMessage = function (message) { + if (this.settings.debug) { + var exceptionMessage, exceptionValues = []; + if (typeof message === "object" && typeof message.name === "string" && typeof message.message === "string") { + for (var key in message) { + if (message.hasOwnProperty(key)) { + exceptionValues.push(key + ": " + message[key]); + } + } + exceptionMessage = exceptionValues.join("\n") || ""; + exceptionValues = exceptionMessage.split("\n"); + exceptionMessage = "EXCEPTION: " + exceptionValues.join("\nEXCEPTION: "); + SWFUpload.Console.writeLine(exceptionMessage); + } else { + SWFUpload.Console.writeLine(message); + } + } +}; +SWFUpload.Console = {}; +SWFUpload.Console.writeLine = function (message) { + var console, documentForm; + try { + console = document.getElementById("SWFUpload_Console"); + if (!console) { + documentForm = document.createElement("form"); + document.getElementsByTagName("body")[0].appendChild(documentForm); + console = document.createElement("textarea"); + console.id = "SWFUpload_Console"; + console.style.fontFamily = "monospace"; + console.setAttribute("wrap", "off"); + console.wrap = "off"; + console.style.overflow = "auto"; + console.style.width = "700px"; + console.style.height = "350px"; + console.style.margin = "5px"; + documentForm.appendChild(console); + } + console.value += message + "\n"; + console.scrollTop = console.scrollHeight - console.clientHeight; + } catch (ex) { + alert("Exception: " + ex.name + " Message: " + ex.message); + } +}; +})(); +(function() { +/* + Queue Plug-in + Features: + *Adds a cancelQueue() method for cancelling the entire queue. + *All queued files are uploaded when startUpload() is called. + *If false is returned from uploadComplete then the queue upload is stopped. + If false is not returned (strict comparison) then the queue upload is continued. + *Adds a QueueComplete exchange that is fired when all the queued files have finished uploading. + Set the exchange handler with the queue_complete_handler setting. + */ +if (typeof(SWFUpload) === "function") { + SWFUpload.queue = {}; + SWFUpload.prototype.initSettings = (function (oldInitSettings) { + return function () { + if (typeof(oldInitSettings) === "function") { + oldInitSettings.call(this); + } + this.queueSettings = {}; + this.queueSettings.queue_cancelled_flag = false; + this.queueSettings.queue_upload_count = 0; + this.queueSettings.user_upload_complete_handler = this.settings.upload_complete_handler; + this.queueSettings.user_upload_start_handler = this.settings.upload_start_handler; + this.settings.upload_complete_handler = SWFUpload.queue.uploadCompleteHandler; + this.settings.upload_start_handler = SWFUpload.queue.uploadStartHandler; + this.settings.queue_complete_handler = this.settings.queue_complete_handler || null; + }; + })(SWFUpload.prototype.initSettings); + SWFUpload.prototype.startUpload = function (fileID) { + this.queueSettings.queue_cancelled_flag = false; + this.callFlash("StartUpload", [fileID]); + }; + SWFUpload.prototype.cancelQueue = function () { + this.queueSettings.queue_cancelled_flag = true; + this.stopUpload(); + var stats = this.getStats(); + while (stats.files_queued > 0) { + this.cancelUpload(); + stats = this.getStats(); + } + }; + SWFUpload.queue.uploadStartHandler = function (file) { + var returnValue; + if (typeof(this.queueSettings.user_upload_start_handler) === "function") { + returnValue = this.queueSettings.user_upload_start_handler.call(this, file); + } + returnValue = (returnValue === false) ? false : true; + this.queueSettings.queue_cancelled_flag = !returnValue; + return returnValue; + }; + SWFUpload.queue.uploadCompleteHandler = function (file) { + var user_upload_complete_handler = this.queueSettings.user_upload_complete_handler; + var continueUpload; + if (file.filestatus === SWFUpload.FILE_STATUS.COMPLETE) { + this.queueSettings.queue_upload_count++; + } + if (typeof(user_upload_complete_handler) === "function") { + continueUpload = (user_upload_complete_handler.call(this, file) === false) ? false : true; + } else if (file.filestatus === SWFUpload.FILE_STATUS.QUEUED) { + continueUpload = false; + } else { + continueUpload = true; + } + if (continueUpload) { + var stats = this.getStats(); + if (stats.files_queued > 0 && this.queueSettings.queue_cancelled_flag === false) { + this.startUpload(); + } else if (this.queueSettings.queue_cancelled_flag === false) { + this.queueEvent("queue_complete_handler", [this.queueSettings.queue_upload_count]); + this.queueSettings.queue_upload_count = 0; + } else { + this.queueSettings.queue_cancelled_flag = false; + this.queueSettings.queue_upload_count = 0; + } + } + }; +} +})(); + /******************************************************************************* * KindEditor - WYSIWYG HTML Editor for Internet * Copyright (C) 2006-2011 kindsoft.net @@ -8905,7 +8956,7 @@ KindEditor.plugin('pagebreak', function(K) { } }); }); - + /******************************************************************************* * KindEditor - WYSIWYG HTML Editor for Internet * Copyright (C) 2006-2011 kindsoft.net @@ -8946,7 +8997,7 @@ KindEditor.plugin('plainpaste', function(K) { textarea[0].focus(); }); }); - + /******************************************************************************* * KindEditor - WYSIWYG HTML Editor for Internet * Copyright (C) 2006-2011 kindsoft.net @@ -8977,7 +9028,7 @@ KindEditor.plugin('preview', function(K) { iframe[0].contentWindow.focus(); }); }); - + /******************************************************************************* * KindEditor - WYSIWYG HTML Editor for Internet * Copyright (C) 2006-2011 kindsoft.net @@ -9033,7 +9084,7 @@ KindEditor.plugin('quickformat', function(K) { self.addBookmark(); }); }); - + /******************************************************************************* * KindEditor - WYSIWYG HTML Editor for Internet * Copyright (C) 2006-2011 kindsoft.net @@ -9708,7 +9759,7 @@ KindEditor.plugin('table', function(K) { }; self.clickToolbar(name, self.plugin.table.prop); }); - + /******************************************************************************* * KindEditor - WYSIWYG HTML Editor for Internet * Copyright (C) 2006-2011 kindsoft.net @@ -9764,7 +9815,7 @@ KindEditor.plugin('template', function(K) { }); }); }); - + /******************************************************************************* * KindEditor - WYSIWYG HTML Editor for Internet * Copyright (C) 2006-2011 kindsoft.net @@ -9815,33 +9866,33 @@ KindEditor.plugin('wordpaste', function(K) { iframe[0].contentWindow.focus(); }); }); - - -KindEditor.plugin('fixtoolbar', function (K) { - var self = this; - if (!self.fixToolBar) { - return; - } - function init() { - var toolbar = K('.ke-toolbar'); - var originY = toolbar.pos().y; - K(window).bind('scroll', function () { - if (toolbar.css('position') == 'fixed') { - if(document.body.scrollTop - originY < 0){ - toolbar.css('position', 'static'); - toolbar.css('top', 'auto'); - } - } else { - if (toolbar.pos().y - document.body.scrollTop < 0) { - toolbar.css('position', 'fixed'); - toolbar.css('top', 0); - } - } - }); - } - if (self.isCreated) { - init(); - } else { - self.afterCreate(init); - } -}); + + +KindEditor.plugin('fixtoolbar', function (K) { + var self = this; + if (!self.fixToolBar) { + return; + } + function init() { + var toolbar = K('.ke-toolbar'); + var originY = toolbar.pos().y; + K(window).bind('scroll', function () { + if (toolbar.css('position') == 'fixed') { + if(document.body.scrollTop - originY < 0){ + toolbar.css('position', 'static'); + toolbar.css('top', 'auto'); + } + } else { + if (toolbar.pos().y - document.body.scrollTop < 0) { + toolbar.css('position', 'fixed'); + toolbar.css('top', 0); + } + } + }); + } + if (self.isCreated) { + init(); + } else { + self.afterCreate(init); + } +}); diff --git a/contact-center/app/src/main/resources/static/im/js/kindeditor/plugins/code/prettify.js b/contact-center/app/src/main/resources/static/im/js/kindeditor/plugins/code/prettify.js index eef5ad7e..011cf277 100644 --- a/contact-center/app/src/main/resources/static/im/js/kindeditor/plugins/code/prettify.js +++ b/contact-center/app/src/main/resources/static/im/js/kindeditor/plugins/code/prettify.js @@ -16,7 +16,7 @@ m);var r=s.createElement("OL");r.className="linenums";for(var n=Math.max(0,m-1|0 a.g;try{var e=M(a.h),h=e.a;a.a=h;a.c=e.c;a.d=0;C(m,h)(a);var k=/\bMSIE\b/.test(navigator.userAgent),m=/\n/g,t=a.a,s=t.length,e=0,l=a.c,p=l.length,h=0,d=a.e,g=d.length,a=0;d[g]=s;var r,n;for(n=r=0;n=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], "catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"], -H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], +H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,exchange,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+ I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]), ["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css", diff --git a/contact-center/app/src/main/resources/static/im/js/kindeditor/plugins/multiimage/multiimage.js b/contact-center/app/src/main/resources/static/im/js/kindeditor/plugins/multiimage/multiimage.js index bb629c80..e5b3a061 100644 --- a/contact-center/app/src/main/resources/static/im/js/kindeditor/plugins/multiimage/multiimage.js +++ b/contact-center/app/src/main/resources/static/im/js/kindeditor/plugins/multiimage/multiimage.js @@ -793,7 +793,7 @@ SWFUpload.prototype.startUpload = function (fileID) { // Public: cancelUpload cancels any queued file. The fileID parameter may be the file ID or index. // If you do not specify a fileID the current uploading file or first file in the queue is cancelled. -// If you do not want the uploadError event to trigger you can specify false for the triggerErrorEvent parameter. +// If you do not want the uploadError exchange to trigger you can specify false for the triggerErrorEvent parameter. SWFUpload.prototype.cancelUpload = function (fileID, triggerErrorEvent) { if (triggerErrorEvent !== false) { triggerErrorEvent = true; @@ -1004,7 +1004,7 @@ SWFUpload.prototype.setButtonCursor = function (cursor) { All these functions a Private. - Because the ExternalInterface library is buggy the event calls + Because the ExternalInterface library is buggy the exchange calls are added to a queue and the queue then executed by a setTimeout. This ensures that events are executed in a determinate order and that the ExternalInterface bugs are avoided. @@ -1021,12 +1021,12 @@ SWFUpload.prototype.queueEvent = function (handlerName, argumentArray) { var self = this; if (typeof this.settings[handlerName] === "function") { - // Queue the event + // Queue the exchange this.eventQueue.push(function () { this.settings[handlerName].apply(this, argumentArray); }); - // Execute the next queued event + // Execute the next queued exchange setTimeout(function () { self.executeNextEvent(); }, 0); @@ -1036,7 +1036,7 @@ SWFUpload.prototype.queueEvent = function (handlerName, argumentArray) { } }; -// Private: Causes the next event in the queue to be executed. Since events are queued using a setTimeout +// Private: Causes the next exchange in the queue to be executed. Since events are queued using a setTimeout // we must queue them in order to garentee that they are executed in order. SWFUpload.prototype.executeNextEvent = function () { // Warning: Don't call this.debug inside here or you'll create an infinite loop @@ -1082,8 +1082,8 @@ SWFUpload.prototype.testExternalInterface = function () { } }; -// Private: This event is called by Flash when it has finished loading. Don't modify this. -// Use the swfupload_loaded_handler event setting to execute custom code when SWFUpload has loaded. +// Private: This exchange is called by Flash when it has finished loading. Don't modify this. +// Use the swfupload_loaded_handler exchange setting to execute custom code when SWFUpload has loaded. SWFUpload.prototype.flashReady = function () { // Check that the movie element is loaded correctly with its ExternalInterface methods defined var movieElement = this.getMovieElement(); @@ -1206,7 +1206,7 @@ SWFUpload.prototype.uploadComplete = function (file) { }; /* Called by SWFUpload JavaScript and Flash functions when debug is enabled. By default it writes messages to the - internal debug console. You can override this event and have messages written where you want. */ + internal debug console. You can override this exchange and have messages written where you want. */ SWFUpload.prototype.debug = function (message) { this.queueEvent("debug_handler", message); }; @@ -1291,8 +1291,8 @@ SWFUpload.Console.writeLine = function (message) { *All queued files are uploaded when startUpload() is called. *If false is returned from uploadComplete then the queue upload is stopped. If false is not returned (strict comparison) then the queue upload is continued. - *Adds a QueueComplete event that is fired when all the queued files have finished uploading. - Set the event handler with the queue_complete_handler setting. + *Adds a QueueComplete exchange that is fired when all the queued files have finished uploading. + Set the exchange handler with the queue_complete_handler setting. */ diff --git a/contact-center/app/src/main/resources/static/im/js/socket.io.js b/contact-center/app/src/main/resources/static/im/js/socket.io.js index cedf8d1a..9d53f63f 100644 --- a/contact-center/app/src/main/resources/static/im/js/socket.io.js +++ b/contact-center/app/src/main/resources/static/im/js/socket.io.js @@ -164,7 +164,7 @@ function Manager(uri, opts){ } /** - * Propagate given event to sockets and emit on `this` + * Propagate given exchange to sockets and emit on `this` * * @api private */ @@ -558,7 +558,7 @@ Manager.prototype.disconnect = function(){ this.reconnecting = false; if ('opening' == this.readyState) { // `onclose` will not fire because - // an open event never happened + // an open exchange never happened this.cleanup(); } this.backoff.reset(); @@ -786,7 +786,7 @@ Socket.prototype.connect = function(){ }; /** - * Sends a `message` event. + * Sends a `message` exchange. * * @return {Socket} self * @api public @@ -801,9 +801,9 @@ Socket.prototype.send = function(){ /** * Override `emit`. - * If the event is in `events`, it's emitted normally. + * If the exchange is in `events`, it's emitted normally. * - * @param {String} event name + * @param {String} exchange name * @return {Socket} self * @api public */ @@ -822,7 +822,7 @@ Socket.prototype.emit = function(ev){ packet.options = {}; packet.options.compress = !this.flags || false !== this.flags.compress; - // event ack callback + // exchange ack callback if ('function' == typeof args[args.length - 1]) { debug('emitting packet with ack id %d', this.ids); this.acks[this.ids] = args.pop(); @@ -924,7 +924,7 @@ Socket.prototype.onpacket = function(packet){ }; /** - * Called upon a server event. + * Called upon a server exchange. * * @param {Object} packet * @api private @@ -932,10 +932,10 @@ Socket.prototype.onpacket = function(packet){ Socket.prototype.onevent = function(packet){ var args = packet.data || []; - debug('emitting event %j', args); + debug('emitting exchange %j', args); if (null != packet.id) { - debug('attaching ack callback to event'); + debug('attaching ack callback to exchange'); args.push(this.ack(packet.id)); } @@ -947,7 +947,7 @@ Socket.prototype.onevent = function(packet){ }; /** - * Produces an ack callback to emit with an event. + * Produces an ack callback to emit with an exchange. * * @api private */ @@ -1547,7 +1547,7 @@ function mixin(obj) { } /** - * Listen on the given `event` with `fn`. + * Listen on the given `exchange` with `fn`. * * @param {String} event * @param {Function} fn @@ -1564,7 +1564,7 @@ Emitter.prototype.addEventListener = function(event, fn){ }; /** - * Adds an `event` listener that will be invoked a single + * Adds an `exchange` listener that will be invoked a single * time then automatically removed. * * @param {String} event @@ -1585,7 +1585,7 @@ Emitter.prototype.once = function(event, fn){ }; /** - * Remove the given callback for `event` or all + * Remove the given callback for `exchange` or all * registered callbacks. * * @param {String} event @@ -1606,7 +1606,7 @@ Emitter.prototype.removeEventListener = function(event, fn){ return this; } - // specific event + // specific exchange var callbacks = this._callbacks['$' + event]; if (!callbacks) return this; @@ -1629,7 +1629,7 @@ Emitter.prototype.removeEventListener = function(event, fn){ }; /** - * Emit `event` with the given args. + * Emit `exchange` with the given args. * * @param {String} event * @param {Mixed} ... @@ -1652,7 +1652,7 @@ Emitter.prototype.emit = function(event){ }; /** - * Return array of callbacks for `event`. + * Return array of callbacks for `exchange`. * * @param {String} event * @return {Array} @@ -1665,7 +1665,7 @@ Emitter.prototype.listeners = function(event){ }; /** - * Check if this emitter has `event` handlers. + * Check if this emitter has `exchange` handlers. * * @param {String} event * @return {Boolean} @@ -2590,7 +2590,7 @@ Socket.prototype.ping = function () { }; /** - * Called on `drain` event + * Called on `drain` exchange * * @api private */ @@ -2759,7 +2759,7 @@ Socket.prototype.onClose = function (reason, desc) { clearTimeout(this.pingIntervalTimer); clearTimeout(this.pingTimeoutTimer); - // stop event from firing again for transport + // stop exchange from firing again for transport this.transport.removeAllListeners('close'); // ensure transport won't stay open @@ -2774,11 +2774,11 @@ Socket.prototype.onClose = function (reason, desc) { // clear session id this.id = null; - // emit close event + // emit close exchange this.emit('close', reason, desc); // clean buffers after, so users can still - // grab the buffers on `close` event + // grab the buffers on `close` exchange self.writeBuffer = []; self.prevBufferLen = 0; } @@ -3498,7 +3498,7 @@ Request.prototype.create = function(){ if (200 == xhr.status || 1223 == xhr.status) { self.onLoad(); } else { - // make sure the `error` event handler that's user-set + // make sure the `error` exchange handler that's user-set // does not throw in the same tick and gets caught here setTimeout(function(){ self.onError(xhr.status); @@ -3511,7 +3511,7 @@ Request.prototype.create = function(){ xhr.send(this.data); } catch (e) { // Need to defer since .create() is called directly fhrom the constructor - // and thus the 'error' event can only be only bound *after* this exception + // and thus the 'error' exchange can only be only bound *after* this exception // occurs. Therefore, also, we cannot throw here at all. setTimeout(function() { self.onError(e); @@ -3824,7 +3824,7 @@ Polling.prototype.onData = function(data){ // decode payload parser.decodePayload(data, this.socket.binaryType, callback); - // if an event did not trigger closing + // if an exchange did not trigger closing if ('closed' != this.readyState) { // if we got data we're not polling this.polling = false; @@ -4040,7 +4040,7 @@ WS.prototype.doOpen = function(){ }; /** - * Adds event listeners to the socket + * Adds exchange listeners to the socket * * @api private */ @@ -4122,7 +4122,7 @@ WS.prototype.write = function(packets){ self.ws.send(data, opts); } } catch (e){ - debug('websocket closed before onclose event'); + debug('websocket closed before onclose exchange'); } --total || done(); @@ -4286,7 +4286,7 @@ function mixin(obj) { } /** - * Listen on the given `event` with `fn`. + * Listen on the given `exchange` with `fn`. * * @param {String} event * @param {Function} fn @@ -4303,7 +4303,7 @@ Emitter.prototype.addEventListener = function(event, fn){ }; /** - * Adds an `event` listener that will be invoked a single + * Adds an `exchange` listener that will be invoked a single * time then automatically removed. * * @param {String} event @@ -4327,7 +4327,7 @@ Emitter.prototype.once = function(event, fn){ }; /** - * Remove the given callback for `event` or all + * Remove the given callback for `exchange` or all * registered callbacks. * * @param {String} event @@ -4348,7 +4348,7 @@ Emitter.prototype.removeEventListener = function(event, fn){ return this; } - // specific event + // specific exchange var callbacks = this._callbacks[event]; if (!callbacks) return this; @@ -4371,7 +4371,7 @@ Emitter.prototype.removeEventListener = function(event, fn){ }; /** - * Emit `event` with the given args. + * Emit `exchange` with the given args. * * @param {String} event * @param {Mixed} ... @@ -4394,7 +4394,7 @@ Emitter.prototype.emit = function(event){ }; /** - * Return array of callbacks for `event`. + * Return array of callbacks for `exchange`. * * @param {String} event * @return {Array} @@ -4407,7 +4407,7 @@ Emitter.prototype.listeners = function(event){ }; /** - * Check if this emitter has `event` handlers. + * Check if this emitter has `exchange` handlers. * * @param {String} event * @return {Boolean} @@ -6361,7 +6361,7 @@ var isBuf = _dereq_('./is-buffer'); * Anything with blobs or files should be fed through removeBlobs before coming * here. * - * @param {Object} packet - socket.io event packet + * @param {Object} packet - socket.io exchange packet * @return {Object} with deconstructed packet and list of buffers * @api public */ @@ -6402,7 +6402,7 @@ exports.deconstructPacket = function(packet){ /** * Reconstructs a binary packet from its placeholder packet and buffers * - * @param {Object} packet - event packet with placeholders + * @param {Object} packet - exchange packet with placeholders * @param {Array} buffers - binary buffers to put in placeholder positions * @return {Object} reconstructed packet * @api public @@ -6544,7 +6544,7 @@ exports.CONNECT = 0; exports.DISCONNECT = 1; /** - * Packet type `event`. + * Packet type `exchange`. * * @api public */ @@ -6568,7 +6568,7 @@ exports.ACK = 3; exports.ERROR = 4; /** - * Packet type 'binary event' + * Packet type 'binary exchange' * * @api public */ @@ -6840,7 +6840,7 @@ Decoder.prototype.destroy = function() { }; /** - * A manager of a binary event's 'buffer sequence'. Should + * A manager of a binary exchange's 'buffer sequence'. Should * be constructed whenever a packet of type BINARY_EVENT is * decoded. * diff --git a/contact-center/app/src/main/resources/static/js/CSKeFu_Callout.v1.js b/contact-center/app/src/main/resources/static/js/CSKeFu_Callout.v1.js index f39dc804..16ad62e0 100644 --- a/contact-center/app/src/main/resources/static/js/CSKeFu_Callout.v1.js +++ b/contact-center/app/src/main/resources/static/js/CSKeFu_Callout.v1.js @@ -2,7 +2,7 @@ var socketCallout; $(document).ready(function () { var protocol = window.location.protocol.replace(/:/g,''); - socketCallout = io.connect(protocol + '://' + hostname + ':' + port + '/callout/event?orgi=' + orgi + "&userid=" + userid + "&session=" + session + "&admin=" + adminuser); + socketCallout = io.connect(protocol + '://' + hostname + ':' + port + '/callout/exchange?orgi=' + orgi + "&userid=" + userid + "&session=" + session + "&admin=" + adminuser); socketCallout.on('connect', function () { console.log("Callout 连接初始化成功"); //请求服务端记录 当前用户在线事件 diff --git a/contact-center/app/src/main/resources/static/js/UKeFu-InfoAcq.js b/contact-center/app/src/main/resources/static/js/UKeFu-InfoAcq.js index eb9f6393..6d67c9c0 100644 --- a/contact-center/app/src/main/resources/static/js/UKeFu-InfoAcq.js +++ b/contact-center/app/src/main/resources/static/js/UKeFu-InfoAcq.js @@ -18,7 +18,7 @@ $(document).ready(function(){ href = $(this).attr("href"); } $.ajax({ - url:"/admin/auth/event.html?title="+encodeURIComponent(title)+"&url="+encodeURIComponent(href)+"&iconstr="+iconstr+"&icontext="+encodeURIComponent(icontext), + url:"/admin/auth/exchange.html?title="+encodeURIComponent(title)+"&url="+encodeURIComponent(href)+"&iconstr="+iconstr+"&icontext="+encodeURIComponent(icontext), cache:false, success: function(data){ top.layer.open({ diff --git a/contact-center/app/src/main/resources/static/js/ace/ace.js b/contact-center/app/src/main/resources/static/js/ace/ace.js index 97150267..22024ba0 100644 --- a/contact-center/app/src/main/resources/static/js/ace/ace.js +++ b/contact-center/app/src/main/resources/static/js/ace/ace.js @@ -1 +1 @@ -(function(){function o(e){var i=function(e,t){return r("",e,t)},s=t;e&&(t[e]||(t[e]={}),s=t[e]);if(!s.define||!s.define.packaged)n.original=s.define,s.define=n,s.define.packaged=!0;if(!s.require||!s.require.packaged)r.original=s.require,s.require=i,s.require.packaged=!0}var e="ace",t=function(){return this}();if(!e&&typeof requirejs!="undefined")return;var n=function(e,t,r){if(typeof e!="string"){n.original?n.original.apply(window,arguments):(console.error("dropping module because define wasn't a string."),console.trace());return}arguments.length==2&&(r=t),n.modules||(n.modules={},n.payloads={}),n.payloads[e]=r,n.modules[e]=null},r=function(e,t,n){if(Object.prototype.toString.call(t)==="[object Array]"){var i=[];for(var o=0,u=t.length;o=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}}).call(r.prototype),t.TokenIterator=r}),ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(e,t,n){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;ithis.row)return;if(n.start.row==this.row&&n.start.column>this.column)return;var r=this.row,i=this.column,s=n.start,o=n.end;if(t.action==="insertText")if(s.row===r&&s.column<=i){if(s.column!==i||!this.$insertRight)s.row===o.row?i+=o.column-s.column:(i-=s.column,r+=o.row-s.row)}else s.row!==o.row&&s.row=i?i=s.column:i=Math.max(0,i-(o.column-s.column)):s.row!==o.row&&s.row=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)}),ace.define("ace/background_tokenizer",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=function(e,t){this.running=!1,this.lines=[],this.states=[],this.currentLine=0,this.tokenizer=e;var n=this;this.$worker=function(){if(!n.running)return;var e=new Date,t=n.currentLine,r=-1,i=n.doc;while(n.lines[t])t++;var s=t,o=i.getLength(),u=0;n.running=!1;while(t20){n.running=setTimeout(n.$worker,20),n.currentLine=t;return}}n.currentLine=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.range,n=t.start.row,r=t.end.row-n;if(r===0)this.lines[n]=null;else if(e.action=="removeText"||e.action=="removeLines")this.lines.splice(n,r+1,null),this.states.splice(n,r+1,null);else{var i=Array(r+1);i.unshift(n,1),this.lines.splice.apply(this.lines,i),this.states.splice.apply(this.states,i)}this.currentLine=Math.min(n,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}),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){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}),ace.define("ace/edit_session/folding",["require","exports","module","ace/range","ace/edit_session/fold_line","ace/edit_session/fold","ace/token_iterator"],function(e,t,n){function u(){this.getFoldAt=function(e,t,n){var r=this.getFoldLine(e);if(!r)return null;var i=r.folds;for(var s=0;s=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=0),t==null&&(t=e.end.row,n=this.getLine(t).length);var s=this.doc,o="";return e.walk(function(e,t,n,u){if(t=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.removeListener("change",this.$updateFoldWidgets),this._emit("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.on("change",this.$updateFoldWidgets)},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){t.children||t.all?this.removeFold(s):this.expandFold(s);return}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)){this.removeFold(s);return}}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,o.end.row,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.data,n=t.range,r=n.start.row,i=n.end.row-r;if(i===0)this.foldWidgets[r]=null;else if(t.action=="removeText"||t.action=="removeLines")this.foldWidgets.splice(r,i+1,null);else{var s=Array(i+1);s.unshift(r,1),this.foldWidgets.splice.apply(this.foldWidgets,s)}}}var r=e("../range").Range,i=e("./fold_line").FoldLine,s=e("./fold").Fold,o=e("../token_iterator").TokenIterator;t.Folding=u}),ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(e,t,n){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;f1?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),f.__proto__=null}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){r=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 m=e.substring(l,v-d.length);c.type==h?c.value+=m:(c.type&&f.push(c),c={type:h,value:m})}for(var g=0;gr){while(l1&&n[0]!==i&&n.unshift(i),{tokens:f,state:n.length?n:i}}}).call(i.prototype),t.Tokenizer=i}),ace.define("ace/edit_session/fold",["require","exports","module","ace/range","ace/range_list","ace/lib/oop"],function(e,t,n){function u(e,t){e.row-=t.row,e.row==0&&(e.column-=t.column)}function a(e,t){u(e.start,t),u(e.end,t)}function f(e,t){e.row==0&&(e.column+=t.column),e.row+=t.row}function l(e,t){f(e.start,t),f(e.end,t)}var r=e("../range").Range,i=e("../range_list").RangeList,s=e("../lib/oop"),o=t.Fold=function(e,t){this.foldLine=null,this.placeholder=t,this.range=e,this.start=e.start,this.end=e.end,this.sameRow=e.start.row==e.end.row,this.subFolds=this.ranges=[]};s.inherits(o,i),function(){this.toString=function(){return'"'+this.placeholder+'" '+this.range.toString()},this.setFoldLine=function(e){this.foldLine=e,this.subFolds.forEach(function(t){t.setFoldLine(e)})},this.clone=function(){var e=this.range.clone(),t=new o(e,this.placeholder);return this.subFolds.forEach(function(e){t.subFolds.push(e.clone())}),t.collapseChildren=this.collapseChildren,t},this.addSubFold=function(e){if(this.range.isEqual(e))return;if(!this.range.containsRange(e))throw new Error("A fold can't intersect already existing fold"+e.range+this.range);a(e,this.start);var t=e.start.row,n=e.start.column;for(var r=0,i=-1;r2?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)}),a==Infinity&&(a=E,s=!1,o=!1),l&&a%f!=0&&(a=Math.floor(a/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 a(t,r.row,r.column),o=s.getCurrentToken(),u=t.selection,l=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 f(m,g,m,g+i.start.length);break}o=s.stepBackward()}var s=new a(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 f(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);l.start.row==c&&(l.start.column+=h),l.end.row==c&&(l.end.column+=h),t.selection.fromOrientedRange(l)},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)e[t]&&(this.$embeds.push(t),this.$modes[t]=new e[t]);var n=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"];for(var t=0;t0)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.call(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.rowi)break;c.start.row==i&&c.start.column>=n.column&&(c.start.column!=n.column||!this.$insertRight)&&(c.start.column+=u,c.start.row+=o);if(c.end.row==i&&c.end.column>=n.column){if(c.end.column==n.column&&this.$insertRight)continue;c.end.column==n.column&&u>0&&fc.start.column&&c.end.column==a[f+1].start.column&&(c.end.column-=u),c.end.column+=u,c.end.row+=o}}if(o!=0&&f ["+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.row=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")+")+"));var a=t.column-o.getCurrentTokenColumn();for(;;){var f=u.value,l=f.length;while(at.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(){var e=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(e,this.doc.getLine(e).length)},this.setRange=this.setSelectionRange=function(e,t){t?(this.setSelectionAnchor(e.end.row,e.end.column),this.selectTo(e.start.row,e.start.column)):(this.setSelectionAnchor(e.start.row,e.start.column),this.selectTo(e.end.row,e.end.column)),this.getRange().isEmpty()&&(this.$isEmpty=!0),this.$desiredColumn=null},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.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.session.isTabStop(e)&&this.doc.getLine(e.row).slice(e.column-n,e.column).split(" ").length-1==n?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),i;this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var s=this.session.getFoldAt(e,t,1);if(s){this.moveCursorTo(s.end.row,s.end.column);return}if(i=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}if(o=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,n=0,r,i=/\s/,s=this.session.tokenRe;s.lastIndex=0;if(t=this.session.tokenRe.exec(e))n=this.session.tokenRe.lastIndex;else{while((r=e[n])&&i.test(r))n++;if(n<1){s.lastIndex=0;while((r=e[n])&&!s.test(r)){s.lastIndex=0,n++;if(i.test(r)){if(n>2){n--;break}while((r=e[n])&&i.test(r))n++;if(n>2)break}}}}return s.lastIndex=0,n},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);t===0&&(this.$desiredColumn?n.column=this.$desiredColumn:this.$desiredColumn=n.column);var r=this.session.screenToDocumentPosition(n.row+e,n.column);e!==0&&t===0&&r.row===this.lead.row&&r.column===this.lead.column&&this.session.lineWidgets&&this.session.lineWidgets[r.row]&&r.row++,this.moveCursorTo(r.row,r.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,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.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){this.toSingleRange(e[0]);for(var t=e.length;t--;){var n=o.fromPoints(e[t].start,e[t].end);e.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}),ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){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.$matchIterator(e,this.$options);if(!t)return!1;var n=null;return t.forEach(function(e,t,r){if(!e.start){var i=e.offset+(r||0);n=new s(t,i,t,i+e.length)}else n=e;return!0}),n},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=0;u--)if(o(s[u],t,i))return!0};else var f=function(e,t,i){var s=r.getMatchOffsets(e,n);for(var u=0;u=o;r--)if(n(e.getLine(r),r))return;if(t.wrap==0)return;for(r=u,o=s.row;r>=o;r--)if(n(e.getLine(r),r))return}:function(n){var r=s.row,i=e.getLine(r).substr(s.column);if(n(i,r,s.column))return;for(r+=1;r<=u;r++)if(n(e.getLine(r),r))return;if(t.wrap==0)return;for(r=o,u=s.row;r<=u;r++)if(n(e.getLine(r),r))return};return{forEach:a}}}).call(o.prototype),t.Search=o}),ace.define("ace/edit_session",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/config","ace/lib/event_emitter","ace/selection","ace/mode/text","ace/range","ace/document","ace/background_tokenizer","ace/search_highlight","ace/edit_session/folding","ace/edit_session/bracket_match"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/lang"),s=e("./config"),o=e("./lib/event_emitter").EventEmitter,u=e("./selection").Selection,a=e("./mode/text").Mode,f=e("./range").Range,l=e("./document").Document,c=e("./background_tokenizer").BackgroundTokenizer,h=e("./search_highlight").SearchHighlight,p=function(e,t){this.$breakpoints=[],this.$decorations=[],this.$frontMarkers={},this.$backMarkers={},this.$markerId=1,this.$undoSelect=!0,this.$foldData=[],this.$foldData.toString=function(){return this.join("\n")},this.on("changeFold",this.onChangeFold.bind(this)),this.$onChange=this.onChange.bind(this);if(typeof e!="object"||!e.getLine)e=new l(e);this.setDocument(e),this.selection=new u(this),s.resetOptions(this),this.setMode(t),s._signal("session",this)};(function(){function g(e){return e<4352?!1:e>=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,o),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.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel();if(e){var t=this;this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.$deltasFold.length&&(t.$deltas.push({group:"fold",deltas:t.$deltasFold}),t.$deltasFold=[]),t.$deltasDoc.length&&(t.$deltas.push({group:"doc",deltas:t.$deltasDoc}),t.$deltasDoc=[]),t.$deltas.length>0&&e.execute({action:"aceupdate",args:[t.$deltas,t],merge:t.mergeUndoDeltas}),t.mergeUndoDeltas=!1,t.$deltas=[]},this.$informUndoManager=i.delayedCall(this.$syncInformUndoManager)}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset: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.$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.undoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;var n=null;for(var r=e.length-1;r!=-1;r--){var i=e[r];i.group=="doc"?(this.doc.revertDeltas(i.deltas),n=this.$getUndoSelection(i.deltas,!0,n)):i.deltas.forEach(function(e){this.addFolds(e.folds)},this)}return this.$fromUndo=!1,n&&this.$undoSelect&&!t&&this.selection.setSelectionRange(n),n},this.redoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;var n=null;for(var r=0;re.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,l=s.start,o=l.row-a.row,u=l.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.insert({row:r,column:0},n)},this.outdentRows=function(e){var t=e.collapseRows(),n=new f(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 f(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.removeLines(e,t);return this.doc.insertLines(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._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,r=e.data.action,i=e.data.range.start.row,s=e.data.range.end.row,o=e.data.range.start,u=e.data.range.end,a=null;r.indexOf("Lines")!=-1?(r=="insertLines"?s=i+e.data.lines.length:s=i,n=e.data.lines?e.data.lines.length:s-i):n=s-i,this.$updating=!0;if(n!=0)if(r.indexOf("remove")!=-1){this[t?"$wrapData":"$rowLengthCache"].splice(i,n);var f=this.$foldData;a=this.getFoldsInRange(e.data.range),this.removeFolds(a);var l=this.getFoldLine(u.row),c=0;if(l){l.addRemoveChars(u.row,u.column,o.column-u.column),l.shiftRow(-n);var h=this.getFoldLine(i);h&&h!==l&&(h.merge(l),l=h),c=f.indexOf(l)+1}for(c;c=u.row&&l.shiftRow(-n)}s=i}else{var p=Array(n);p.unshift(i,0);var d=t?this.$wrapData:this.$rowLengthCache;d.splice.apply(d,p);var f=this.$foldData,l=this.getFoldLine(i),c=0;if(l){var v=l.range.compareInside(o.row,o.column);v==0?(l=l.split(o.row,o.column),l.shiftRow(n),l.addRemoveChars(s,0,u.column-o.column)):v==-1&&(l.addRemoveChars(i,0,u.column-o.column),l.shiftRow(n)),c=f.indexOf(l)+1}for(c;c=i&&l.shiftRow(n)}}else{n=Math.abs(e.data.range.start.column-e.data.range.end.column),r.indexOf("remove")!=-1&&(a=this.getFoldsInRange(e.data.range),this.removeFolds(a),n=-n);var l=this.getFoldLine(i);l&&l.addRemoveChars(i,o.column,n)}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(i,s):this.$updateRowLengthCache(i,s),a},this.$updateRowLengthCache=function(e,t,n){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(e,t){var n=this.doc.getAllLines(),r=this.getTabSize(),i=this.$wrapData,s=this.$wrapLimit,o,a,f=e;t=Math.min(t,n.length-1);while(f<=t)a=this.getFoldLine(f,a),a?(o=[],a.walk(function(e,t,r,i){var s;if(e!=null){s=this.$getDisplayTokens(e,o.length),s[0]=u;for(var a=1;at){var f=i+t;if(e[f-1]>=d&&e[f]>=d){a(f);continue}if(e[f]==u||e[f]==l){for(f;f!=i-1;f--)if(e[f]==u)break;if(f>i){a(f);continue}f=i+t;for(f;f>2)),i-1);while(f>c&&e[f]c&&e[f]c&&e[f]==p)f--}else while(f>c&&e[f]c){a(++f);continue}f=i+t,a(f)}return n},this.$getDisplayTokens=function(e,r){var i=[],s;r=r||0;for(var o=0;o39&&u<48||u>57&&u<64?i.push(p):u>=4352&&g(u)?i.push(t,n):i.push(t)}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&&g(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.getScreenLastRowColumn=function(e){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE);return this.documentToScreenColumn(t.row,t.column)},this.getDocumentLastRowColumn=function(e,t){var n=this.documentToScreenRow(e,t);return this.getScreenLastRowColumn(n)},this.getDocumentLastRowColumnPosition=function(e,t){var n=this.documentToScreenRow(e,t);return this.screenToDocumentPosition(n,Number.MAX_VALUE/10)},this.getRowSplitData=function(e){return this.$useWrapMode?this.$wrapData[e]:undefined},this.getScreenTabSize=function(e){return this.$tabSize-e%this.$tabSize},this.screenToDocumentRow=function(e,t){return this.screenToDocumentPosition(e,t).row},this.screenToDocumentColumn=function(e,t){return this.screenToDocumentPosition(e,t).column},this.screenToDocumentPosition=function(e,t){if(e<0)return{row:0,column:0};var n,r=0,i=0,s,o=0,u=0,a=this.$screenRowCache,f=this.$getRowCacheIndex(a,e),l=a.length;if(l&&f>=0)var o=a[f],r=this.$docRowCache[f],c=e>a[l-1];else var c=!l;var h=this.getLength()-1,p=this.getNextFoldLine(r),d=p?p.start.row:Infinity;while(o<=e){u=this.getRowLength(r);if(o+u>e||r>=h)break;o+=u,r++,r>d&&(r=p.end.row+1,p=this.getNextFoldLine(r,p),d=p?p.start.row:Infinity),c&&(this.$docRowCache.push(r),this.$screenRowCache.push(o))}if(p&&p.start.row<=r)n=this.getFoldDisplayLine(p),r=p.start.row;else{if(o+u<=e||r>h)return{row:h,column:this.getLine(h).length};n=this.getLine(r),p=null}if(this.$useWrapMode){var v=this.$wrapData[r];if(v){var m=Math.floor(e-o);s=v[m],m>0&&v.length&&(i=v[m-1]||v[v.length-1],n=n.substring(i))}}return i+=this.$getStringScreenWidth(n,t)[1],this.$useWrapMode&&i>=s&&(i=s-1),p?p.idxToPosition(i):{row:r,column:i}},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);if(this.$useWrapMode){var v=this.$wrapData[i];if(v){var m=0;while(d.length>=v[m])r++,m++;d=d.substring(v[m-1]||0,d.length)}}return{row:r,column: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){}}).call(p.prototype),e("./edit_session/folding").Folding.call(p.prototype),e("./edit_session/bracket_match").BracketMatch.call(p.prototype),s.defineOptions(p.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;if(!e)this.setUseWrapMode(!1);else{var t=typeof e=="number"?e:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}this.$wrap=e},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.$modified=!0,this.$resetRowCache(0),this.$updateWrapData(0,this.getLength()-1)))},initialValue:"auto"},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){if(isNaN(e)||this.$tabSize===e)return;this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._signal("changeTabSize")},initialValue:4,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}}}),t.EditSession=p}),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t,n){var r=e("../lib/oop"),i=e("../keyboard/hash_handler").HashHandler,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){typeof e=="string"&&(e=this.commands[e]);if(!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;var r={editor:t,command:e,args:n},i=this._emit("exec",r);return this._signal("afterExec",r),i===!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}),ace.define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(e,t,n){var r=e("../lib/keys"),i=e("../lib/event"),s=function(e){this.$editor=e,this.$data={},this.$handlers=[],this.setDefaultHandler(e.commands)};(function(){this.setDefaultHandler=function(e){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=e,this.addKeyboardHandler(e,0),this.$data={editor:this.$editor}},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.$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},this.onCommandKey=function(e,t,n){var i=r.keyCodeToString(n);this.$callKeyboardHandlers(t,i,n,e)},this.onTextInput=function(e){var t=this.$callKeyboardHandlers(-1,e);t||this.$editor.commands.exec("insertstring",this.$editor,e)}}).call(s.prototype),t.KeyBinding=s}),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){function s(e,t){this.platform=t||(i.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={};if(this.__defineGetter__&&this.__defineSetter__&&typeof console!="undefined"&&console.error){var n=!1,r=function(){n||(n=!0,console.error("commmandKeyBinding has too many m's. use commandKeyBinding"))};this.__defineGetter__("commmandKeyBinding",function(){return r(),this.commandKeyBinding}),this.__defineSetter__("commmandKeyBinding",function(e){return r(),this.commandKeyBinding=e})}else this.commmandKeyBinding=this.commandKeyBinding;this.addCommands(e)}var r=e("../lib/keys"),i=e("../lib/useragent");(function(){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){var t=typeof e=="string"?e:e.name;e=this.commands[t],delete this.commands[t];var n=this.commandKeyBinding;for(var r in n)for(var i in n[r])n[r][i]==e&&delete n[r][i]},this.bindKey=function(e,t){if(!e)return;if(typeof t=="function"){this.addCommand({exec:t,bindKey:e,name:t.name||e});return}var n=this.commandKeyBinding;e.split("|").forEach(function(e){var r=this.parseKeys(e,t),i=r.hashId;(n[i]||(n[i]={}))[r.key]=t},this)},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){var t=e.bindKey;if(!t)return;var n=typeof t=="string"?t:t[this.platform];this.bindKey(n,e)},this.parseKeys=function(e){e.indexOf(" ")!=-1&&(e=e.split(/\s+/).pop());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=this.commandKeyBinding;return r[t]&&r[t][n]},this.handleKeyboard=function(e,t,n,r){return{command:this.findKeyCommand(t,n)}}}).call(s.prototype),t.HashHandler=s}),ace.define("ace/mouse/fold_handler",["require","exports","module"],function(e,t,n){function r(e){e.on("click",function(t){var n=t.getDocumentPosition(),r=e.session,i=r.getFoldAt(n.row,n.column,1);i&&(t.getAccelKey()?r.removeFold(i):r.expandFold(i),t.stop())}),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()}})}t.FoldHandler=r}),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config"],function(e,t,n){function s(e,t){return{win:e,mac:t}}var r=e("../lib/lang"),i=e("../config");t.commands=[{name:"showSettingsMenu",bindKey:s("Ctrl-,","Command-,"),exec:function(e){i.loadModule("ace/ext/settings_menu",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:s("Alt-E","Ctrl-E"),exec:function(e){i.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:s("Alt-Shift-E","Ctrl-Shift-E"),exec:function(e){i.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",bindKey:s("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",bindKey:s(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:s("Ctrl-L","Command-L"),exec:function(e){var t=parseInt(prompt("Enter line number:"),10);isNaN(t)||e.gotoLine(t)},readOnly:!0},{name:"fold",bindKey:s("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:s("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:s("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:s("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},scrollIntoView:"center",readOnly:!0},{name:"foldall",bindKey:s("Ctrl-Alt-0","Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",bindKey:s("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",bindKey:s("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",bindKey:s("Ctrl-K","Command-G"),exec:function(e){e.findNext()},readOnly:!0},{name:"findprevious",bindKey:s("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},readOnly:!0},{name:"selectOrFindNext",bindKey:s("ALt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",bindKey:s("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",bindKey:s("Ctrl-F","Command-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e)})},readOnly:!0},{name:"overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",bindKey:s("Ctrl-Shift-Home","Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:s("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:s("Shift-Up","Shift-Up"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",readOnly:!0},{name:"golineup",bindKey:s("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",readOnly:!0},{name:"selecttoend",bindKey:s("Ctrl-Shift-End","Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:s("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:s("Shift-Down","Shift-Down"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",bindKey:s("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",bindKey:s("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",bindKey:s("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",bindKey:s("Alt-Shift-Left","Command-Shift-Left"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",bindKey:s("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",bindKey:s("Shift-Left","Shift-Left"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",bindKey:s("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",bindKey:s("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",bindKey:s("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",bindKey:s("Alt-Shift-Right","Command-Shift-Right"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",bindKey:s("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",bindKey:s("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",bindKey:s("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",bindKey:s(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:s("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",bindKey:s(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:s("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:s("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",bindKey:s("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",bindKey:s("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",bindKey:s("Ctrl-P","Ctrl-Shift-P"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",readOnly:!0},{name:"selecttomatching",bindKey:s("Ctrl-Shift-P",null),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",readOnly:!0},{name:"cut",exec:function(e){var t=e.getSelectionRange();e._emit("cut",t),e.selection.isEmpty()||(e.session.remove(t),e.clearSelection())},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"removeline",bindKey:s("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:s("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",bindKey:s("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:s("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:s("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",bindKey:s("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:s("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},multiSelectAction:"forEach"},{name:"replace",bindKey:s("Ctrl-H","Command-Option-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"undo",bindKey:s("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",bindKey:s("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",bindKey:s("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",bindKey:s("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",bindKey:s("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",bindKey:s("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",bindKey:s("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",bindKey:s("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",bindKey:s("Shift-Delete",null),exec:function(e){if(!e.selection.isEmpty())return!1;e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",bindKey:s("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",bindKey:s("Alt-Delete","Ctrl-K"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",bindKey:s("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",bindKey:s("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",bindKey:s("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:s("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:s("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:s("Ctrl-]","Ctrl-]"),exec:function(e){e.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",exec:function(e,t){e.insert(r.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",bindKey:s(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",bindKey:s("Ctrl-T","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",bindKey:s("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",bindKey:s("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"}]}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){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;o0},this.hasRedo=function(){return this.$redoStack.length>0},this.markClean=function(){this.dirtyCounter=0},this.isClean=function(){return this.dirtyCounter===0}}).call(r.prototype),t.UndoManager=r}),ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(e,t,n){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()}}}),ace.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/renderloop","ace/layer/font_metrics","ace/lib/event_emitter"],function(e,t,n){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_editor {position: relative;overflow: hidden;font-family: \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace;font-size: 12px;line-height: normal;direction: ltr;}.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;}.ace_content {position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: text;min-width: 100%;}.ace_dragging, .ace_dragging * {cursor: move !important;}.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;}.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 {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 {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;text-indent: -1em;-ms-user-select: text;-moz-user-select: text;-webkit-user-select: text;user-select: text;}.ace_text-input.ace_composition {background: #f8f8f8;color: #111;z-index: 1000;opacity: 1;text-indent: 0;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;white-space: pre;height: 100%;width: 100%;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;/* setting pointer-events: auto; on node under the mouse, which changesduring scroll, will break mouse wheel scrolling in Safari */pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;}.ace_text-layer {font: inherit !important;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;border-left: 2px solid}.ace_slim-cursors .ace_cursor {border-left-width: 1px;}.ace_overwrite-cursors .ace_cursor {border-left-width: 0px;border-bottom: 1px solid;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_smooth-blinking .ace_cursor {-moz-transition: opacity 0.18s;-webkit-transition: opacity 0.18s;-o-transition: opacity 0.18s;-ms-transition: opacity 0.18s;transition: opacity 0.18s;}.ace_editor.ace_multiselect .ace_cursor {border-left-width: 1px;}.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;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;}.ace_line .ace_fold {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;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;-moz-border-radius: 2px;-webkit-border-radius: 2px;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: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));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;display: block;max-width: 100%;padding: 3px 4px;position: fixed;z-index: 999999;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;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 {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;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);-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);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);-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}/*** Dark version for fold widgets*/.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 {-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {-moz-transition: opacity 0.4s ease 0.05s;-webkit-transition: opacity 0.4s ease 0.05s;-o-transition: opacity 0.4s ease 0.05s;-ms-transition: opacity 0.4s ease 0.05s;transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {-moz-transition: opacity 0.05s ease 0.05s;-webkit-transition: opacity 0.05s ease 0.05s;-o-transition: opacity 0.05s ease 0.05s;-ms-transition: opacity 0.05s ease 0.05s;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;}';i.importCssString(v,"ace_editor");var m=function(e,t){var n=this;this.container=e||i.createElement("div"),this.$keepTextAreaAtCursor=!0,i.addCssClass(this.container,"ace_editor"),this.setTheme(t),this.$gutter=i.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),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,500),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.$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;if(!e)return;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),this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode)},this.updateLines=function(e,t){t===undefined&&(t=Infinity),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRowthis.layerConfig.lastRow||this.$changedLines.lastRow2)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.$updateCachedSize=function(e,t,n,r){r-=this.$extraHeight||0;var i=0,s=this.$size,o={width:s.width,height:s.height,scrollerHeight:s.scrollerHeight,scrollerWidth:s.scrollerWidth};r&&(e||s.height!=r)&&(s.height=r,i|=this.CHANGE_SIZE,s.scrollerHeight=s.height,this.$horizScroll&&(s.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",i|=this.CHANGE_SCROLL);if(n&&(e||s.width!=n)){i|=this.CHANGE_SIZE,s.width=n,t==null&&(t=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=t,this.scrollBarH.element.style.left=this.scroller.style.left=t+"px",s.scrollerWidth=Math.max(0,n-t-this.scrollBarV.getWidth()),this.scrollBarH.element.style.right=this.scroller.style.right=this.scrollBarV.getWidth()+"px",this.scroller.style.bottom=this.scrollBarH.getHeight()+"px";if(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)i|=this.CHANGE_FULL}return s.$dirty=!n||!r,i&&this._signal("resize",o),i},this.onGutterResize=function(){var e=this.$showGutter?this.$gutter.offsetWidth:0;e!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,e,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.$loop.schedule(this.CHANGE_MARKER))},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.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.$updateGutterLineHighlight=function(){var e=this.$cursorLayer.$pixelPos,t=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var n=this.session.selection.getCursor();n.column=0,e=this.$cursorLayer.getPixelPosition(n,!0),t*=this.session.getRowLength(n.row)}this.$gutterLineHighlight.style.top=e.top-this.layerConfig.offset+"px",this.$gutterLineHighlight.style.height=t+"px"},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=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.content},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(!this.$keepTextAreaAtCursor)return;var e=this.layerConfig,t=this.$cursorLayer.$pixelPos.top,n=this.$cursorLayer.$pixelPos.left;t-=e.offset;var r=this.lineHeight;if(t<0||t>e.height-r)return;var i=this.characterWidth;if(this.$composition){var s=this.textarea.value.replace(/^\x01+/,"");i*=this.session.$getStringScreenWidth(s)[0]+2,r+=2,t-=1}n-=this.scrollLeft,n>this.$size.scrollerWidth-i&&(n=this.$size.scrollerWidth-i),n-=this.scrollBar.width,this.textarea.style.height=r+"px",this.textarea.style.width=i+"px",this.textarea.style.right=Math.max(0,this.$size.scrollerWidth-n-i)+"px",this.textarea.style.bottom=Math.max(0,this.$size.height-t-r)+"px"},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=Math.floor((this.layerConfig.height+this.layerConfig.offset)/this.layerConfig.lineHeight);return this.layerConfig.firstRow-1+e},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.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(e){this.setOption("hScrollBarAlwaysVisible",e)},this.getVScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(e){this.setOption("vScrollBarAlwaysVisible",e)},this.$updateScrollBarV=function(){this.scrollBarV.setScrollHeight(this.layerConfig.maxHeight+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");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(),n=this.layerConfig,this.$updateScrollBarV(),e&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),this.$gutterLayer.element.style.marginTop=-n.offset+"px",this.content.style.marginTop=-n.offset+"px",this.content.style.width=n.width+2*this.$padding+"px",this.content.style.height=n.minHeight+"px";e&this.CHANGE_H_SCROLL&&(this.content.style.marginLeft=-this.scrollLeft+"px",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.$highlightGutterLine&&this.$updateGutterLineHighlight(),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&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),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.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),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.max((this.$minLines||1)*this.lineHeight,Math.min(t,e))+this.scrollMargin.v+(this.$extraHeight||0),r=e>t;if(n!=this.desiredHeight||this.$size.height!=this.desiredHeight||r!=this.$vScroll){r!=this.$vScroll&&(this.$vScroll=r,this.scrollBarV.setVisible(r));var i=this.container.clientWidth;this.container.style.height=n+"px",this.$updateCachedSize(!0,this.$gutterWidth,i,n),this.desiredHeight=n}},this.$computeLayerConfig=function(){this.$maxLines&&this.lineHeight>1&&this.$autosize();var e=this.session,t=this.$size,n=t.height<=2*this.lineHeight,r=this.session.getScreenLength(),i=r*this.lineHeight,s=this.scrollTop%this.lineHeight,o=t.scrollerHeight+this.lineHeight,u=this.$getLongestLine(),a=!n&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-u-2*this.$padding<0),f=this.$horizScroll!==a;f&&(this.$horizScroll=a,this.scrollBarH.setVisible(a)),!this.$maxLines&&this.$scrollPastEnd&&this.scrollTop>i-t.scrollerHeight&&(i+=Math.min((t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd,this.scrollTop-i+t.scrollerHeight));var l=!n&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-i<0),c=this.$vScroll!==l;c&&(this.$vScroll=l,this.scrollBarV.setVisible(l)),this.session.setScrollTop(Math.max(-this.scrollMargin.top,Math.min(this.scrollTop,i-t.scrollerHeight+this.scrollMargin.bottom))),this.session.setScrollLeft(Math.max(-this.scrollMargin.left,Math.min(this.scrollLeft,u+2*this.$padding-t.scrollerWidth+this.scrollMargin.right)));var h=Math.ceil(o/this.lineHeight)-1,p=Math.max(0,Math.round((this.scrollTop-s)/this.lineHeight)),d=p+h,v,m,g=this.lineHeight;p=e.screenToDocumentRow(p,0);var y=e.getFoldLine(p);y&&(p=y.start.row),v=e.documentToScreenRow(p,0),m=e.getRowLength(p)*g,d=Math.min(e.screenToDocumentRow(d,0),e.getLength()-1),o=t.scrollerHeight+e.getRowLength(d)*g+m,s=this.scrollTop-v*g;var b=0;this.layerConfig.width!=u&&(b=this.CHANGE_H_SCROLL);if(f||c)b=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal("scrollbarVisibilityChanged"),c&&(u=this.$getLongestLine());return this.layerConfig={width:u,padding:this.$padding,firstRow:p,firstRowScreen:v,lastRow:d,lineHeight:g,characterWidth:this.characterWidth,minHeight:o,maxHeight:i,offset:s,gutterOffset:Math.max(0,Math.ceil((s+t.height-t.scrollerHeight)/g)),height:this.$size.scrollerHeight},b},this.$updateLines=function(){var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var n=this.layerConfig;if(e>n.lastRow+1)return;if(ts?(t&&(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-(this.$size.scrollerHeight-this.lineHeight)*this.$scrollPastEnd<-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=this.scroller.getBoundingClientRect(),r=(e+this.scrollLeft-n.left-this.$padding)/this.characterWidth,i=Math.floor((t+this.scrollTop-n.top)/this.lineHeight),s=Math.round(r);return{row:i,column:s,side:r-s>0?1:-1}},this.screenToTextCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=Math.round((e+this.scrollLeft-n.left-this.$padding)/this.characterWidth),i=(t+this.scrollTop-n.top)/this.lineHeight;return this.session.screenToDocumentPosition(i,Math.max(r,0))},this.textToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=this.session.documentToScreenPosition(e,t),i=this.$padding+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||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,i.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor()},this.setCompositionText=function(e){this.$moveTextAreaToCursor()},this.hideComposition=function(){if(!this.$composition)return;i.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null},this.setTheme=function(e,t){function o(r){if(n.$themeId!=e)return t&&t();if(!r.cssClass)return;i.importCssString(r.cssText,r.cssClass,n.container.ownerDocument),n.theme&&i.removeCssClass(n.container,n.theme.cssClass);var s="padding"in r?r.padding:"padding"in(n.theme||{})?4:n.$padding;n.$padding&&s!=n.$padding&&n.setPadding(s),n.$theme=r.cssClass,n.theme=r,i.addCssClass(n.container,r.cssClass),i.setCssClass(n.container,"ace_dark",r.isDark),n.$size&&(n.$size.width=0,n.$updateSizeAsync()),n._dispatchEvent("themeLoaded",{theme:r}),t&&t()}var n=this;this.$themeId=e,n._dispatchEvent("themeChange",{theme:e});if(!e||typeof e=="string"){var r=e||this.$options.theme.initialValue;s.loadModule(["theme",r],o)}else o(e)},this.getTheme=function(){return this.$themeId},this.setStyle=function(e,t){i.setCssClass(this.container,e,t!==!1)},this.unsetStyle=function(e){i.removeCssClass(this.container,e)},this.setCursorStyle=function(e){this.content.style.cursor!=e&&(this.content.style.cursor=e)},this.setMouseCursor=function(e){this.content.style.cursor=e},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(m.prototype),s.defineOptions(m.prototype,"renderer",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(e){this.$textLayer.setShowInvisibles(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(e){typeof e=="number"&&(this.$printMarginColumn=e),this.$showPrintMargin=!!e,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(e){this.$gutter.style.display=e?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(e){i.setCssClass(this.$gutter,"ace_fade-fold-widgets",e)},initialValue:!1},showFoldWidgets:{set:function(e){this.$gutterLayer.setShowFoldWidgets(e)},initialValue:!0},showLineNumbers:{set:function(e){this.$gutterLayer.setShowLineNumbers(e),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(e){this.$textLayer.setDisplayIndentGuides(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(e){if(!this.$gutterLineHighlight){this.$gutterLineHighlight=i.createElement("div"),this.$gutterLineHighlight.className="ace_gutter-active-line",this.$gutter.appendChild(this.$gutterLineHighlight);return}this.$gutterLineHighlight.style.display=e?"":"none",this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight()},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(e){(!this.$hScrollBarAlwaysVisible||!this.$horizScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(e){(!this.$vScrollBarAlwaysVisible||!this.$vScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(e){typeof e=="number"&&(e+="px"),this.container.style.fontSize=e,this.updateFontSize()},initialValue:12},fontFamily:{set:function(e){this.container.style.fontFamily=e,this.updateFontSize()}},maxLines:{set:function(e){this.updateFull()}},minLines:{set:function(e){this.updateFull()}},scrollPastEnd:{set:function(e){e=+e||0;if(this.$scrollPastEnd==e)return;this.$scrollPastEnd=e,this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(e){this.$gutterLayer.$fixedWidth=!!e,this.$loop.schedule(this.CHANGE_GUTTER)}},theme:{set:function(e){this.setTheme(e)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0}}),t.VirtualRenderer=m}),ace.define("ace/config",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/lib/net","ace/lib/event_emitter"],function(e,t,n){"no use strict";function f(r){a.packaged=r||e.packaged||n.packaged||u.define&&define.packaged;if(!u.document)return"";var i={},s="",o=document.getElementsByTagName("script");for(var f=0;f1&&(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(!0),t.init=f;var c={setOptions:function(e){Object.keys(e).forEach(function(t){this.setOption(t,e[t])},this)},getOptions:function(e){var t={};return e?Array.isArray(e)||(t=e,e=Object.keys(t)):e=Object.keys(this.$options),e.forEach(function(e){t[e]=this.getOption(e)},this),t},setOption:function(e,t){if(this["$"+e]===t)return;var n=this.$options[e];if(!n)return typeof console!="undefined"&&console.warn&&console.warn('misspelled option "'+e+'"'),undefined;if(n.forwardTo)return this[n.forwardTo]&&this[n.forwardTo].setOption(e,t);n.handlesSet||(this["$"+e]=t),n&&n.set&&n.set.call(this,t)},getOption:function(e){var t=this.$options[e];return t?t.forwardTo?this[t.forwardTo]&&this[t.forwardTo].getOption(e):t&&t.get?t.get.call(this):this["$"+e]:(typeof console!="undefined"&&console.warn&&console.warn('misspelled option "'+e+'"'),undefined)}},h={};t.defineOptions=function(e,t,n){return e.$options||(h[t]=e.$options={}),Object.keys(n).forEach(function(t){var r=n[t];typeof r=="string"&&(r={forwardTo:r}),r.name||(r.name=t),e.$options[r.name]=r,"initialValue"in r&&(e["$"+r.name]=r.initialValue)}),i.implement(e,c),this},t.resetOptions=function(e){Object.keys(e.$options).forEach(function(t){var n=e.$options[t];"value"in n&&e.setOption(t,n.value)})},t.setDefaultValue=function(e,n,r){var i=h[e]||(h[e]={});i[n]&&(i.forwardTo?t.setDefaultValue(i.forwardTo,n,r):i[n].value=r)},t.setDefaultValues=function(e,n){Object.keys(n).forEach(function(r){t.setDefaultValue(e,r,n[r])})}}),ace.define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],function(e,t,n){var r=e("../lib/dom"),i=e("../lib/oop"),s=e("../lib/lang"),o=e("../lib/event_emitter").EventEmitter,u=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_gutter-layer",e.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this),this.$cells=[]};(function(){i.implement(this,o),this.setSession=function(e){this.session&&this.session.removeEventListener("change",this.$updateAnnotations),this.session=e,e.on("change",this.$updateAnnotations)},this.addGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.addGutterDecoration"),this.session.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.removeGutterDecoration"),this.session.removeGutterDecoration(e,t)},this.setAnnotations=function(e){this.$annotations=[];for(var t=0;to&&(v=s.end.row+1,s=t.getNextFoldLine(v,s),o=s?s.start.row:Infinity);if(v>i){while(this.$cells.length>d+1)p=this.$cells.pop(),this.element.removeChild(p.element);break}p=this.$cells[++d],p||(p={element:null,textNode:null,foldWidget:null},p.element=r.createElement("div"),p.textNode=document.createTextNode(""),p.element.appendChild(p.textNode),this.element.appendChild(p.element),this.$cells[d]=p);var m="ace_gutter-cell ";a[v]&&(m+=a[v]),f[v]&&(m+=f[v]),this.$annotations[v]&&(m+=this.$annotations[v].className),p.element.className!=m&&(p.element.className=m);var g=t.getRowLength(v)*e.lineHeight+"px";g!=p.element.style.height&&(p.element.style.height=g);if(u){var y=u[v];y==null&&(y=u[v]=t.getFoldWidget(v))}if(y){p.foldWidget||(p.foldWidget=r.createElement("span"),p.element.appendChild(p.foldWidget));var m="ace_fold-widget ace_"+y;y=="start"&&v==o&&vn.right-t.right)return"foldWidgets"}}).call(u.prototype),t.Gutter=u}),ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,n){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.$blockScrolling+=1,t.moveCursorToPosition(e),t.$blockScrolling-=1,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),v=setInterval(C,20),y=0,i.addListener(document,"mousemove",O)}function L(){clearInterval(v),t.session.removeMarker(h),h=null,t.$blockScrolling+=1,t.selection.fromOrientedRange(m),t.$blockScrolling-=1,t.isFocused()&&!w&&t.renderer.$cursorLayer.setBlinking(!t.getReadOnly()),m=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._top=n.offsetTop),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.onDragEnter=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return h||k(),y++,e.dataTransfer.dropEffect=b=_(e),i.preventDefault(e)},this.onDragOver=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return h||(k(),y++),A!==null&&(A=null),p=e.clientX,d=e.clientY,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(!h)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.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var e=this.editor.container;e.draggable=!0,this.editor.renderer.$cursorLayer.setBlinking(!1),this.editor.setStyle("ace_dragging"),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}),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,t,n){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(){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.update=function(e){var e=e||this.config;if(!e)return;this.config=e;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 s=r.range.clipRows(e.firstRow,e.lastRow);if(s.isEmpty())continue;s=s.toScreenRange(this.session);if(r.renderer){var o=this.$getTop(s.start.row,e),u=this.$padding+s.start.column*e.characterWidth;r.renderer(t,s,u,o,e)}else r.type=="fullLine"?this.drawFullLineMarker(t,s,r.clazz,e):r.type=="screenLine"?this.drawScreenLineMarker(t,s,r.clazz,e):s.isMultiLine()?r.type=="text"?this.drawTextMarker(t,s,r.clazz,e):this.drawMultiLineMarker(t,s,r.clazz,e):this.drawSingleLineMarker(t,s,r.clazz+" ace_start",e)}this.element=i.setInnerHtml(this.element,t.join(""))},this.$getTop=function(e,t){return(e-t.firstRowScreen)*t.lineHeight},this.drawTextMarker=function(e,t,n,i,s){var o=t.start.row,u=new r(o,t.start.column,o,this.session.getScreenLastRowColumn(o));this.drawSingleLineMarker(e,u,n+" ace_start",i,1,s),o=t.end.row,u=new r(o,0,o,t.end.column),this.drawSingleLineMarker(e,u,n,i,0,s);for(o=t.start.row+1;o"),u=this.$getTop(t.end.row,r);var f=t.end.column*r.characterWidth;e.push("
"),o=(t.end.row-t.start.row-1)*r.lineHeight;if(o<0)return;u=this.$getTop(t.start.row+1,r),e.push("
")},this.drawSingleLineMarker=function(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;e.push("
")},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),e.push("
")},this.drawScreenLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;e.push("
")}}).call(s.prototype),t.Marker=s}),ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,n){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)}),ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","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/useragent"),u=e("../lib/event_emitter").EventEmitter,a=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this)};(function(){r.implement(this,u),this.EOF_CHAR="\xb6",this.EOL_CHAR_LF="\xac",this.EOL_CHAR_CRLF="\xa4",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="\u2192",this.SPACE_CHAR="\xb7",this.$padding=0,this.$updateEolChar=function(){var e=this.session.doc.getNewLineCharacter()=="\n"?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=e)return this.EOL_CHAR=e,!0},this.setPadding=function(e){this.$padding=e,this.element.style.padding="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,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;n"+this.TAB_CHAR+s.stringRepeat("\xa0",n-1)+"
"):t.push(s.stringRepeat("\xa0",n));if(this.displayIndentGuides){this.$indentGuideRe=/\s\S| \t|\t |\s$/;var r="ace_indent-guide";if(this.showInvisibles){r+=" ace_invisible";var i=s.stringRepeat(this.SPACE_CHAR,this.tabSize),o=this.TAB_CHAR+s.stringRepeat("\xa0",this.tabSize-1)}else var i=s.stringRepeat("\xa0",this.tabSize),o=i;this.$tabStrings[" "]=""+i+"",this.$tabStrings[" "]=""+o+""}},this.updateLines=function(e,t,n){(this.config.lastRow!=e.lastRow||this.config.firstRow!=e.firstRow)&&this.scrollLines(e),this.config=e;var r=Math.max(t,e.firstRow),s=Math.min(n,e.lastRow),o=this.element.childNodes,u=0;for(var a=e.firstRow;al&&(a=f.end.row+1,f=this.session.getNextFoldLine(a,f),l=f?f.start.row:Infinity);if(a>s)break;var c=o[u++];if(c){var h=[];this.$renderLine(h,a,!this.$useLineGroups(),a==l?f:!1),c.style.height=e.lineHeight*this.session.getRowLength(a)+"px",i.setInnerHtml(c,h.join(""))}a++}},this.scrollLines=function(e){var t=this.config;this.config=e;if(!t||t.lastRow0;r--)n.removeChild(n.firstChild);if(t.lastRow>e.lastRow)for(var r=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);r>0;r--)n.removeChild(n.lastChild);if(e.firstRowt.lastRow){var i=this.$renderLinesFragment(e,t.lastRow+1,e.lastRow);n.appendChild(i)}},this.$renderLinesFragment=function(e,t,n){var r=this.element.ownerDocument.createDocumentFragment(),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=i.createElement("div"),f=[];this.$renderLine(f,s,!1,s==u?o:!1),a.innerHTML=f.join("");if(this.$useLineGroups())a.className="ace_line_group",r.appendChild(a),a.style.height=e.lineHeight*this.session.getRowLength(s)+"px";else while(a.firstChild)r.appendChild(a.firstChild);s++}return r},this.update=function(e){this.config=e;var t=[],n=e.firstRow,r=e.lastRow,s=n,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>r)break;this.$useLineGroups()&&t.push("
"),this.$renderLine(t,s,!1,s==u?o:!1),this.$useLineGroups()&&t.push("
"),s++}this.element=i.setInnerHtml(this.element,t.join(""))},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,n,r){var i=this,o=/\t|&|<|( +)|([\x00-\x1f\x80-\xa0\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\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]/g,u=function(e,n,r,o,u){if(n)return i.showInvisibles?""+s.stringRepeat(i.SPACE_CHAR,e.length)+"":s.stringRepeat("\xa0",e.length);if(e=="&")return"&";if(e=="<")return"<";if(e==" "){var a=i.session.getScreenTabSize(t+o);return t+=a-1,i.$tabStrings[a]}if(e=="\u3000"){var f=i.showInvisibles?"ace_cjk ace_invisible":"ace_cjk",l=i.showInvisibles?i.SPACE_CHAR:"";return t+=1,""+l+""}return r?""+i.SPACE_CHAR+"":(t+=1,""+e+"")},a=r.replace(o,u);if(!this.$textToken[n.type]){var f="ace_"+n.type.replace(/\./g," ace_"),l="";n.type=="fold"&&(l=" style='width:"+n.value.length*this.config.characterWidth+"px;' "),e.push("",a,"")}else e.push(a);return t+r.length},this.renderIndentGuide=function(e,t,n){var r=t.search(this.$indentGuideRe);return r<=0||r>=n?t:t[0]==" "?(r-=r%this.tabSize,e.push(s.stringRepeat(this.$tabStrings[" "],r/this.tabSize)),t.substr(r)):t[0]==" "?(e.push(s.stringRepeat(this.$tabStrings[" "],r)),t.substr(r)):t},this.$renderWrappedLine=function(e,t,n,r){var i=0,s=0,o=n[0],u=0;for(var a=0;a=o)u=this.$renderToken(e,u,f,l.substring(0,o-i)),l=l.substring(o-i),i=o,r||e.push("","
"),s++,u=0,o=n[s]||Number.MAX_VALUE;l.length!=0&&(i+=l.length,u=this.$renderToken(e,u,f,l))}}},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;s");if(i.length){var s=this.session.getRowSplitData(t);s&&s.length?this.$renderWrappedLine(e,i,s,n):this.$renderSimpleLine(e,i)}this.showInvisibles&&(r&&(t=r.end.row),e.push("",t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"")),n||e.push("
")},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(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(a.prototype),t.Text=a}),ace.define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"],function(e,t,n){function s(e){this.isOpen=!1,this.$element=null,this.$parentNode=e}var r=e("./lib/oop"),i=e("./lib/dom");(function(){this.$init=function(){return this.$element=i.createElement("div"),this.$element.className="ace_tooltip",this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},this.getElement=function(){return this.$element||this.$init()},this.setText=function(e){i.setInnerText(this.getElement(),e)},this.setHtml=function(e){this.getElement().innerHTML=e},this.setPosition=function(e,t){this.getElement().style.left=e+"px",this.getElement().style.top=t+"px"},this.setClassName=function(e){i.addCssClass(this.getElement(),e)},this.show=function(e,t,n){e!=null&&this.setText(e),t!=null&&n!=null&&this.setPosition(t,n),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},this.hide=function(){this.isOpen&&(this.getElement().style.display="none",this.isOpen=!1)},this.getHeight=function(){return this.getElement().offsetHeight},this.getWidth=function(){return this.getElement().offsetWidth}}).call(s.prototype),t.Tooltip=s}),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t,n){var r=e("../lib/dom"),i,s=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),i===undefined&&(i="opacity"in 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.$updateVisibility.bind(this)};(function(){this.$updateVisibility=function(e){var t=this.cursors;for(var n=t.length;n--;)t[n].style.visibility=e?"":"hidden"},this.$updateOpacity=function(e){var t=this.cursors;for(var n=t.length;n--;)t[n].style.opacity=e?"":"0"},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&&!i&&(this.smoothBlinking=e,r.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.$updateCursors=(e?this.$updateOpacity:this.$updateVisibility).bind(this),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.smoothBlinking&&r.removeCssClass(this.element,"ace_smooth-blinking"),e(!0);if(!this.isBlinking||!this.blinkInterval||!this.isVisible)return;this.smoothBlinking&&setTimeout(function(){r.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));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+n.column*this.config.characterWidth,i=(n.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:r,top:i}},this.update=function(e){this.config=e;var t=this.session.$selectionMarkers,n=0,r=0;if(t===undefined||t.length===0)t=[{cursor:null}];for(var n=0,i=t.length;ne.height+e.offset||s.top<0)&&n>1)continue;var o=(this.cursors[r++]||this.addCursor()).style;o.left=s.left+"px",o.top=s.top+"px",o.width=e.characterWidth+"px",o.height=e.lineHeight+"px"}while(this.cursors.length>r)this.removeCursor();var u=this.session.getOverwrite();this.$setOverwrite(u),this.$pixelPos=s,this.restartTimer()},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(s.prototype),t.Cursor=s}),ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"],function(e,t,n){function u(e){function l(){var r=u.getDocumentPosition().row,s=n.$annotations[r];if(!s)return c();var o=t.session.getLength();if(r==o){var a=t.renderer.pixelToScreenCoordinates(0,u.y).row,l=u.$pos;if(a>t.session.documentToScreenRow(l.row,l.column))return c()}if(f==s)return;f=s.text.join("
"),i.setHtml(f),i.show(),t.on("mousewheel",c);if(e.$tooltipFollowsMouse)h(u);else{var p=n.$cells[r].element,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.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}),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./lib/event"),o=e("./lib/event_emitter").EventEmitter,u=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}}).call(u.prototype);var a=function(e,t){u.call(this,e),this.scrollTop=0,t.$scrollbarWidth=this.width=i.scrollbarWidth(e.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px"};r.inherits(a,u),function(){this.classSuffix="-v",this.onScroll=function(){this.skipEvent||(this.scrollTop=this.element.scrollTop,this._emit("scroll",{data:this.scrollTop})),this.skipEvent=!1},this.getWidth=function(){return this.isVisible?this.width:0},this.setHeight=function(e){this.element.style.height=e+"px"},this.setInnerHeight=function(e){this.inner.style.height=e+"px"},this.setScrollHeight=function(e){this.inner.style.height=e+"px"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=this.element.scrollTop=e)}}.call(a.prototype);var f=function(e,t){u.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(f,u),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(f.prototype),t.ScrollBar=a,t.ScrollBarV=a,t.ScrollBarH=f,t.VScrollBar=a,t.HScrollBar=f}),ace.define("ace/mouse/default_handlers",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,n){function u(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));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 a(e,t,n,r){return Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2))}function f(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/dom"),i=e("../lib/event"),s=e("../lib/useragent"),o=0;(function(){this.onMouseDown=function(e){var t=e.inSelection(),n=e.getDocumentPosition();this.mousedownEvent=e;var r=this.editor,i=e.getButton();if(i!==0){var s=r.getSelectionRange(),o=s.isEmpty();o&&r.selection.moveToPosition(n),r.textInput.onContextMenu(e.domEvent);return}if(t&&!r.isFocused()){r.focus();if(this.$focusTimout&&!this.$clickSelection&&!r.inMultiSelectMode){this.mousedownEvent.time=Date.now(),this.setState("focusWait"),this.captureMouse(e);return}}return this.captureMouse(e),!t||this.$clickSelection||e.getShiftKey()||r.inMultiSelectMode?this.startSelect(n):t&&(this.mousedownEvent.time=Date.now(),this.startSelect(n)),e.preventDefault()},this.startSelect=function(e){e=e||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var t=this.editor,n=this.mousedownEvent.getShiftKey();n?t.selection.selectToPosition(e):this.$clickSelection||t.selection.moveToPosition(e),t.renderer.scroller.setCapture&&t.renderer.scroller.setCapture(),t.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=f(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=f(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.editor.unsetStyle("ace_selecting"),this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()},this.focusWait=function(){var e=a(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=Date.now();(e>o||t-this.mousedownEvent.time>this.$focusTimout)&&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[this.state]&&this[this.state](e)},this.onTripleClick=function(e){var t=e.getDocumentPosition(),n=this.editor;this.setState("selectByLines"),this.$clickSelection=n.selection.getLineRange(t.row),this[this.state]&&this[this.state](e)},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=e.domEvent.timeStamp,n=t-(this.$lastScrollTime||0),r=this.editor,i=r.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed);if(i||n<200)return this.$lastScrollTime=t,r.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()}}).call(u.prototype),t.DefaultHandlers=u}),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t,n){var r=e("./lib/event"),i=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.window=t||window};(function(){this.schedule=function(e){this.changes=this.changes|e;if(!this.pending&&this.changes){this.pending=!0;var t=this;r.nextFrame(function(){t.pending=!1;var e;while(e=t.changes)t.changes=0,t.onRender(e)},this.window)}}}).call(i.prototype),t.RenderLoop=i}),ace.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){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){this.editor=e,new s(this),new o(this),new a(this);var t=e.renderer.getMouseEventTarget();r.addListener(t,"click",this.onMouseEvent.bind(this,"click")),r.addListener(t,"mousemove",this.onMouseMove.bind(this,"mousemove")),r.addMultiMouseDownListener(t,[300,300,250],this,"onMouseEvent"),e.renderer.scrollBarV&&(r.addMultiMouseDownListener(e.renderer.scrollBarV.inner,[300,300,250],this,"onMouseEvent"),r.addMultiMouseDownListener(e.renderer.scrollBarH.inner,[300,300,250],this,"onMouseEvent")),r.addMouseWheelListener(e.container,this.onMouseWheel.bind(this,"mousewheel"));var n=e.renderer.$gutter;r.addListener(n,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),r.addListener(n,"click",this.onMouseEvent.bind(this,"gutterclick")),r.addListener(n,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),r.addListener(n,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),r.addListener(t,"mousedown",function(t){e.focus()}),r.addListener(n,"mousedown",function(t){return e.focus(),r.preventDefault(t)})};(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.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.renderer;n.$keepTextAreaAtCursor&&(n.$keepTextAreaAtCursor=null);var s=this,o=function(e){s.x=e.clientX,s.y=e.clientY,t&&t(e),s.mouseEvent=new u(e,s.editor),s.$mouseMoved=!0},a=function(e){clearInterval(l),f(),s[s.state+"End"]&&s[s.state+"End"](e),s.$clickSelection=null,n.$keepTextAreaAtCursor==null&&(n.$keepTextAreaAtCursor=!0,n.$moveTextAreaToCursor()),s.isMousePressed=!1,s.$onCaptureMouseMove=s.releaseMouse=null,s.onMouseEvent("mouseup",e)},f=function(){s[s.state]&&s[s.state](),s.$mouseMoved=!1};if(i.isOldIE&&e.domEvent.type=="dblclick")return setTimeout(function(){a(e)});s.$onCaptureMouseMove=o,s.releaseMouse=r.capture(this.editor.container,o,a);var l=setInterval(f,20)},this.releaseMouse=null}).call(l.prototype),f.defineOptions(l.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:150},dragEnabled:{initialValue:!0},focusTimout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),t.MouseHandler=l}),ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","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_emitter").EventEmitter,u=0,a=t.FontMetrics=function(e,t){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),u||this.$testFractionalRect(),this.$measureNode.textContent=s.stringRepeat("X",u),this.$characterSize={width:0,height:0},this.checkForSizeChanges()};(function(){r.implement(this,o),this.$characterSize={width:0,height:0},this.$testFractionalRect=function(){var e=i.createElement("div");this.$setMeasureNodeStyles(e.style),e.style.width="0.2px",document.documentElement.appendChild(e);var t=e.getBoundingClientRect().width;t>0&&t<1?u=1:u=100,e.parentNode.removeChild(e)},this.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="-100px",e.visibility="hidden",e.position="fixed",e.whiteSpace="pre",e.font="inherit",e.overflow=t?"hidden":"visible"},this.checkForSizeChanges=function(){var 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.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer)return this.$pollSizeChangesTimer;var e=this;return this.$pollSizeChangesTimer=setInterval(function(){e.checkForSizeChanges()},500)},this.setPolling=function(e){e?this.$pollSizeChanges():this.$pollSizeChangesTimer&&this.$pollSizeChangesTimer},this.$measureSizes=function(){var e=this.$measureNode.getBoundingClientRect(),t={height:e.height,width:e.width/u};return t.width===0||t.height===0?null:t},this.$measureCharWidth=function(e){this.$main.textContent=s.stringRepeat(e,u);var t=this.$main.getBoundingClientRect();return t.width/u},this.getCharacterWidth=function(e){var t=this.charSizes[e];return t===undefined&&(this.charSizes[e]=this.$measureCharWidth(e)/this.$characterSize.width),t},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)}}).call(a.prototype)}),ace.define("ace/keyboard/textinput",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/lib/dom","ace/lib/lang"],function(e,t,n){var r=e("../lib/event"),i=e("../lib/useragent"),s=e("../lib/dom"),o=e("../lib/lang"),u=i.isChrome<18,a=function(e,t){function b(e){if(h)return;if(k)t=0,r=e?0:n.value.length-1;else var t=e?2:1,r=2;try{n.setSelectionRange(t,r)}catch(i){}}function w(){if(h)return;n.value=a,i.isWebKit&&y.schedule()}function F(){setTimeout(function(){p&&(n.style.cssText=p,p=""),t.renderer.$keepTextAreaAtCursor==null&&(t.renderer.$keepTextAreaAtCursor=!0,t.renderer.$moveTextAreaToCursor())},0)}var n=s.createElement("textarea");n.className="ace_text-input",i.isTouchPad&&n.setAttribute("x-palm-disable-auto-cap",!0),n.wrap="off",n.autocorrect="off",n.autocapitalize="off",n.spellcheck=!1,n.style.opacity="0",e.insertBefore(n,e.firstChild);var a="\x01\x01",f=!1,l=!1,c=!1,h=!1,p="",d=!0;try{var v=document.activeElement===n}catch(m){}r.addListener(n,"blur",function(){t.onBlur(),v=!1}),r.addListener(n,"focus",function(){v=!0,t.onFocus(),b()}),this.focus=function(){n.focus()},this.blur=function(){n.blur()},this.isFocused=function(){return v};var g=o.delayedCall(function(){v&&b(d)}),y=o.delayedCall(function(){h||(n.value=a,v&&b())});i.isWebKit||t.addEventListener("changeSelection",function(){t.selection.isEmpty()!=d&&(d=!d,g.schedule())}),w(),v&&t.onFocus();var E=function(e){return e.selectionStart===0&&e.selectionEnd===e.value.length};!n.setSelectionRange&&n.createTextRange&&(n.setSelectionRange=function(e,t){var n=this.createTextRange();n.collapse(!0),n.moveStart("character",e),n.moveEnd("character",t),n.select()},E=function(e){try{var t=e.ownerDocument.selection.createRange()}catch(n){}return!t||t.parentElement()!=e?!1:t.text==e.value});if(i.isOldIE){var S=!1,x=function(e){if(S)return;var t=n.value;if(h||!t||t==a)return;if(e&&t==a[0])return T.schedule();A(t),S=!0,w(),S=!1},T=o.delayedCall(x);r.addListener(n,"propertychange",x);var N={13:1,27:1};r.addListener(n,"keyup",function(e){h&&(!n.value||N[e.keyCode])&&setTimeout(B,0);if((n.value.charCodeAt(0)||0)<129)return T.call();h?H():P()}),r.addListener(n,"keydown",function(e){T.schedule(50)})}var C=function(e){f?f=!1:l?l=!1:E(n)?(t.selectAll(),b()):k&&b(t.selection.isEmpty())},k=null;this.setInputHandler=function(e){k=e},this.getInputHandler=function(){return k};var L=!1,A=function(e){k&&(e=k(e),k=null),c?(b(),e&&t.onPaste(e),c=!1):e==a.charAt(0)?L?t.execCommand("del",{source:"ace"}):t.execCommand("backspace",{source:"ace"}):(e.substring(0,2)==a?e=e.substr(2):e.charAt(0)==a.charAt(0)?e=e.substr(1):e.charAt(e.length-1)==a.charAt(0)&&(e=e.slice(0,-1)),e.charAt(e.length-1)==a.charAt(0)&&(e=e.slice(0,-1)),e&&t.onTextInput(e)),L&&(L=!1)},O=function(e){if(h)return;var t=n.value;A(t),w()},M=function(e){var i=t.getCopyText();if(!i){r.preventDefault(e);return}var s=e.clipboardData||window.clipboardData;if(s&&!u){var o=s.setData("Text",i);o&&(t.onCut(),r.preventDefault(e))}o||(f=!0,n.value=i,n.select(),setTimeout(function(){f=!1,w(),b(),t.onCut()}))},_=function(e){var i=t.getCopyText();if(!i){r.preventDefault(e);return}var s=e.clipboardData||window.clipboardData;if(s&&!u){var o=s.setData("Text",i);o&&(t.onCopy(),r.preventDefault(e))}o||(l=!0,n.value=i,n.select(),setTimeout(function(){l=!1,w(),b(),t.onCopy()}))},D=function(e){var s=e.clipboardData||window.clipboardData;if(s){var o=s.getData("Text");o&&t.onPaste(o),i.isIE&&setTimeout(b),r.preventDefault(e)}else n.value="",c=!0};r.addCommandKeyListener(n,t.onCommandKey.bind(t)),r.addListener(n,"select",C),r.addListener(n,"input",O),r.addListener(n,"cut",M),r.addListener(n,"copy",_),r.addListener(n,"paste",D),(!("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:_(e);break;case 86:D(e);break;case 88:M(e)}});var P=function(e){if(h||!t.onCompositionStart)return;h={},t.onCompositionStart(),setTimeout(H,0),t.on("mousedown",B),t.selection.isEmpty()||(t.insert(""),t.session.markUndoGroup(),t.selection.clearSelection()),t.session.markUndoGroup()},H=function(){if(!h||!t.onCompositionUpdate)return;var e=n.value.replace(/\x01/g,"");if(h.lastValue===e)return;t.onCompositionUpdate(e),h.lastValue&&t.undo(),h.lastValue=e;if(h.lastValue){var r=t.selection.getRange();t.insert(h.lastValue),t.session.markUndoGroup(),h.range=t.selection.getRange(),t.selection.setRange(r),t.selection.clearSelection()}},B=function(e){if(!t.onCompositionEnd)return;var r=h;h=!1;var i=setTimeout(function(){i=null;var e=n.value.replace(/\x01/g,"");if(h)return;e==r.lastValue?w():!r.lastValue&&e&&(w(),A(e))});k=function(n){return i&&clearTimeout(i),n=n.replace(/\x01/g,""),n==r.lastValue?"":(r.lastValue&&i&&t.undo(),n)},t.onCompositionEnd(),t.removeListener("mousedown",B),e.type=="compositionend"&&r.range&&t.selection.setRange(r.range)},j=o.delayedCall(H,50);r.addListener(n,"compositionstart",P),i.isGecko?r.addListener(n,"text",function(){j.schedule()}):(r.addListener(n,"keyup",function(){j.schedule()}),r.addListener(n,"keydown",function(){j.schedule()})),r.addListener(n,"compositionend",B),this.getElement=function(){return n},this.setReadOnly=function(e){n.readOnly=e},this.onContextMenu=function(e){L=!0,p||(p=n.style.cssText),n.style.cssText="z-index:100000;"+(i.isIE?"opacity:0.1;":""),b(t.selection.isEmpty()),t._emit("nativecontextmenu",{target:t,domEvent:e});var o=t.container.getBoundingClientRect(),u=s.computedStyle(t.container),a=o.top+(parseInt(u.borderTopWidth)||0),f=o.left+(parseInt(o.borderLeftWidth)||0),l=o.bottom-a-n.clientHeight,c=function(e){n.style.left=e.clientX-f-2+"px",n.style.top=Math.min(e.clientY-a-2,l)+"px"};c(e);if(e.type!="mousedown")return;t.renderer.$keepTextAreaAtCursor&&(t.renderer.$keepTextAreaAtCursor=null),i.isWin&&r.capture(t.container,c,F)},this.onContextMenuClose=F;if(!i.isGecko||i.isMac){var I=function(e){t.textInput.onContextMenu(e),F()};r.addListener(t.renderer.scroller,"contextmenu",I),r.addListener(n,"contextmenu",I)}};t.TextInput=a}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,n){t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){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;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.ranges[0]&&this.fromOrientedRange(this.ranges[0])},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.selectionLead),s=this.session.documentToScreenPosition(this.selectionAnchor),o=this.rectangularRangeBlock(r,s);o.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,n){var r=[],s=e.column0)d--;if(d>0){var m=0;while(r[m].isEmpty())m++}for(var g=d;g>=m;g--)r[g].isEmpty()&&r.splice(g,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=this.session,i=this.selection,o=i.rangeList,u,a=i._eventRegistry;i._eventRegistry={};var f=new s(r);this.inVirtualSelectionMode=!0;for(var l=o.ranges.length;l--;){if(n)while(l>0&&o.ranges[l].start.row==o.ranges[l-1].end.row)l--;f.fromOrientedRange(o.ranges[l]),f.id=o.ranges[l].marker,this.selection=r.selection=f;var c=e.exec(this,t||{});u!==undefined&&(u=c),f.toOrientedRange(o.ranges[l])}f.detach(),this.selection=r.selection=i,this.inVirtualSelectionMode=!1,i._eventRegistry=a,i.mergeOverlappingRanges();var h=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),h&&h.from==h.to&&this.renderer.animateScrolling(h.from),u},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;rr.length||n.length<2||!n[1])return this.commands.exec("insertstring",this,e);for(var i=r.length;i--;){var s=r[i];s.isEmpty()||this.session.remove(s),this.session.insert(s.start,n[i])}},this.findAll=function(e,t,n){t=t||{},t.needle=e||t.needle,this.$search.set(t);var r=this.$search.findAll(this.session);if(!r.length)return 0;this.$blockScrolling+=1;var i=this.multiSelect;n||i.toSingleRange(r[0]);for(var s=r.length;s--;)i.addRange(r[s],!0);return this.$blockScrolling-=1,r.length},this.selectMoreLines=function(e,t){var n=this.selection.toOrientedRange(),r=n.cursor==n.end,s=this.session.documentToScreenPosition(n.cursor);this.selection.$desiredColumn&&(s.column=this.selection.$desiredColumn);var o=this.session.screenToDocumentPosition(s.row+e,s.column);if(!n.isEmpty())var u=this.session.documentToScreenPosition(r?n.end:n.start),a=this.session.screenToDocumentPosition(u.row+e,u.column);else var a=o;if(r){var f=i.fromPoints(o,a);f.cursor=f.start}else{var f=i.fromPoints(a,o);f.cursor=f.end}f.desiredColumn=s.column;if(!this.selection.inMultiSelectMode)this.selection.addRange(n);else if(t)var l=n.cursor;this.selection.addRange(f),l&&this.selection.substractPoint(l)},this.transposeSelections=function(e){var t=this.session,n=t.multiSelect,r=n.ranges;for(var i=r.length;i--;){var s=r[i];if(s.isEmpty()){var o=t.getWordRange(s.start.row,s.start.column);s.start.row=o.start.row,s.start.column=o.start.column,s.end.row=o.end.row,s.end.column=o.end.column}}n.mergeOverlappingRanges();var u=[];for(var i=r.length;i--;){var s=r[i];u.unshift(t.getTextRange(s))}e<0?u.unshift(u.pop()):u.push(u.shift());for(var i=r.length;i--;){var s=r[i],o=s.clone();t.replace(s,u[i]),s.start.row=o.start.row,s.start.column=o.start.column}},this.selectMore=function(e,t){var n=this.session,r=n.multiSelect,i=r.toOrientedRange();i.isEmpty()&&(i=n.getWordRange(i.start.row,i.start.column),i.cursor=e==-1?i.start:i.end,this.multiSelect.addRange(i));var s=n.getTextRange(i),o=h(n,s,e);o&&(o.cursor=e==-1?o.start:o.end,this.$blockScrolling+=1,this.session.unfold(o),this.multiSelect.addRange(o),this.$blockScrolling-=1,this.renderer.scrollCursorIntoView(null,.5)),t&&this.multiSelect.substractPoint(i.cursor)},this.alignCursors=function(){var e=this.session,t=e.multiSelect,n=t.ranges;if(!n.length){var r=this.selection.getRange(),s=r.start.row,o=r.end.row,u=s==o;if(u){var f=this.session.getLength(),l;do l=this.session.getLine(o);while(/[=:]/.test(l)&&++o0);s<0&&(s=0),o>=f&&(o=f-1)}var c=this.session.doc.removeLines(s,o);c=this.$reAlignText(c,u),this.session.doc.insert({row:s,column:0},c.join("\n")+"\n"),u||(r.start.column=0,r.end.column=c[c.length-1].length),this.selection.setRange(r)}else{var h=-1,p=n.filter(function(e){if(e.cursor.row==h)return!0;h=e.cursor.row});t.$onRemoveRange(p);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.multiSelect||(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t.multiSelect;var n=e.oldSession;n&&(n.multiSelect.removeEventListener("addRange",this.$onAddRange),n.multiSelect.removeEventListener("removeRange",this.$onRemoveRange),n.multiSelect.removeEventListener("multiSelect",this.$onMultiSelect),n.multiSelect.removeEventListener("singleSelect",this.$onSingleSelect)),t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),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}})}),ace.define("ace/editor",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/keyboard/textinput","ace/mouse/mouse_handler","ace/mouse/fold_handler","ace/keyboard/keybinding","ace/edit_session","ace/search","ace/range","ace/lib/event_emitter","ace/commands/command_manager","ace/commands/default_commands","ace/config"],function(e,t,n){e("./lib/fixoldbrowsers");var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./lib/lang"),o=e("./lib/useragent"),u=e("./keyboard/textinput").TextInput,a=e("./mouse/mouse_handler").MouseHandler,f=e("./mouse/fold_handler").FoldHandler,l=e("./keyboard/keybinding").KeyBinding,c=e("./edit_session").EditSession,h=e("./search").Search,p=e("./range").Range,d=e("./lib/event_emitter").EventEmitter,v=e("./commands/command_manager").CommandManager,m=e("./commands/default_commands").commands,g=e("./config"),y=function(e,t){var n=e.getContainerElement();this.container=n,this.renderer=e,this.commands=new v(o.isMac?"mac":"win",m),this.textInput=new u(e.getTextAreaContainer(),this),this.renderer.textarea=this.textInput.getElement(),this.keyBinding=new l(this),this.$mouseHandler=new a(this),new f(this),this.$blockScrolling=0,this.$search=(new h).set({wrap:!0}),this.$historyTracker=this.$historyTracker.bind(this),this.commands.on("exec",this.$historyTracker),this.$initOperationListeners(),this._$emitInputEvent=s.delayedCall(function(){this._signal("input",{}),this.session.bgTokenizer&&this.session.bgTokenizer.scheduleStart()}.bind(this)),this.on("change",function(e,t){t._$emitInputEvent.schedule(31)}),this.setSession(t||new c("")),g.resetOptions(this),g._signal("editor",this)};(function(){r.implement(this,d),this.$initOperationListeners=function(){function e(e){return e[e.length-1]}this.selections=[],this.commands.on("exec",function(t){this.startOperation(t);var n=t.command;if(n.aceCommandGroup=="fileJump"){var r=this.prevOp;if(!r||r.command.aceCommandGroup!="fileJump")this.lastFileJumpPos=e(this.selections)}else this.lastFileJumpPos=null}.bind(this),!0),this.commands.on("afterExec",function(e){var t=e.command;t.aceCommandGroup=="fileJump"&&this.lastFileJumpPos&&!this.curOp.selectionChanged&&this.selection.fromJSON(this.lastFileJumpPos),this.endOperation(e)}.bind(this),!0),this.$opResetTimer=s.delayedCall(this.endOperation.bind(this)),this.on("change",function(){this.curOp||this.startOperation(),this.curOp.docChanged=!0}.bind(this),!0),this.on("changeSelection",function(){this.curOp||this.startOperation(),this.curOp.selectionChanged=!0}.bind(this),!0)},this.curOp=null,this.prevOp={},this.startOperation=function(e){if(this.curOp){if(!e||this.curOp.command)return;this.prevOp=this.curOp}e||(this.previousCommand=null,e={}),this.$opResetTimer.schedule(),this.curOp={command:e.command||{},args:e.args,scrollTop:this.renderer.scrollTop};var t=this.curOp.command;t&&t.scrollIntoView&&this.$blockScrolling++,this.selections.push(this.selection.toJSON())},this.endOperation=function(){if(this.curOp){var e=this.curOp.command;if(e&&e.scrollIntoView){this.$blockScrolling--;switch(e.scrollIntoView){case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var t=this.selection.getRange(),n=this.renderer.layerConfig;(t.start.row>=n.lastRow||t.end.row<=n.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead);break;default:}e.scrollIntoView=="animate"&&this.renderer.animateScrolling(this.curOp.scrollTop)}this.prevOp=this.curOp,this.curOp=null}},this.$historyTracker=function(e){if(!this.$mergeUndoDeltas)return;var t=this.prevOp,n=["backspace","del","insertstring"],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){if(!e)this.keyBinding.setKeyboardHandler(null);else if(typeof e=="string"){this.$keybindingId=e;var t=this;g.loadModule(["keybinding",e],function(n){t.$keybindingId==e&&t.keyBinding.setKeyboardHandler(n&&n.handler)})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(e)},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session==e)return;var t=this.session;if(t){this.session.removeEventListener("change",this.$onDocumentChange),this.session.removeEventListener("changeMode",this.$onChangeMode),this.session.removeEventListener("tokenizerUpdate",this.$onTokenizerUpdate),this.session.removeEventListener("changeTabSize",this.$onChangeTabSize),this.session.removeEventListener("changeWrapLimit",this.$onChangeWrapLimit),this.session.removeEventListener("changeWrapMode",this.$onChangeWrapMode),this.session.removeEventListener("onChangeFold",this.$onChangeFold),this.session.removeEventListener("changeFrontMarker",this.$onChangeFrontMarker),this.session.removeEventListener("changeBackMarker",this.$onChangeBackMarker),this.session.removeEventListener("changeBreakpoint",this.$onChangeBreakpoint),this.session.removeEventListener("changeAnnotation",this.$onChangeAnnotation),this.session.removeEventListener("changeOverwrite",this.$onCursorChange),this.session.removeEventListener("changeScrollTop",this.$onScrollTopChange),this.session.removeEventListener("changeScrollLeft",this.$onScrollLeftChange);var n=this.session.getSelection();n.removeEventListener("changeCursor",this.$onCursorChange),n.removeEventListener("changeSelection",this.$onSelectionChange)}this.session=e,e&&(this.$onDocumentChange=this.onDocumentChange.bind(this),e.addEventListener("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.addEventListener("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.addEventListener("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.addEventListener("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.addEventListener("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.addEventListener("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.addEventListener("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.addEventListener("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.addEventListener("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.addEventListener("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.addEventListener("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.addEventListener("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.addEventListener("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.addEventListener("changeScrollLeft",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.addEventListener("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.addEventListener("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()),this._signal("changeSession",{session:e,oldSession:t}),t&&t._signal("changeEditor",{oldEditor:this}),e&&e._signal("changeEditor",{editor:this})},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.findMatchingBracket(e.getCursorPosition());if(t)var n=new p(t.row,t.column,t.row,t.column+1);else if(e.session.$mode.getMatching)var n=e.session.$mode.getMatching(e.session);n&&(e.session.$bracketHighlight=e.session.addMarker(n,"ace_bracket","text"))},50)},this.focus=function(){var e=this;setTimeout(function(){e.textInput.focus()}),this.textInput.focus()},this.isFocused=function(){return this.textInput.isFocused()},this.blur=function(){this.textInput.blur()},this.onFocus=function(){if(this.$isFocused)return;this.$isFocused=!0,this.renderer.showCursor(),this.renderer.visualizeFocus(),this._emit("focus")},this.onBlur=function(){if(!this.$isFocused)return;this.$isFocused=!1,this.renderer.hideCursor(),this.renderer.visualizeBlur(),this._emit("blur")},this.$cursorChange=function(){this.renderer.updateCursor()},this.onDocumentChange=function(e){var t=e.data,n=t.range,r;n.start.row==n.end.row&&t.action!="insertLines"&&t.action!="removeLines"?r=n.end.row:r=Infinity,this.renderer.updateLines(n.start.row,r),this._signal("change",e),this.$cursorChange()},this.onTokenizerUpdate=function(e){var t=e.data;this.renderer.updateLines(t.first,t.last)},this.onScrollTopChange=function(){this.renderer.scrollToY(this.session.getScrollTop())},this.onScrollLeftChange=function(){this.renderer.scrollToX(this.session.getScrollLeft())},this.onCursorChange=function(){this.$cursorChange(),this.$blockScrolling||this.renderer.scrollCursorIntoView(),this.$highlightBrackets(),this.$updateHighlightActiveLine(),this._signal("changeSelection")},this.$updateHighlightActiveLine=function(){var e=this.getSession(),t;if(this.$highlightActiveLine){if(this.$selectionStyle!="line"||!this.selection.isMultiLine())t=this.getCursorPosition();this.renderer.$maxLines&&this.session.getLength()===1&&!(this.renderer.$minLines>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-1,r=t.end.column+1,i=e.getLine(t.start.row),s=i.length,o=i.substring(Math.max(n,0),Math.min(r,s));if(n>=0&&/^[\w\d]/.test(o)||r<=s&&/[\w\d]$/.test(o))return;o=i.substring(t.start.column,t.end.column);if(!/^[\w\d]+$/.test(o))return;var u=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:o});return u},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();return this._signal("copy",e),e},this.onCopy=function(){this.commands.exec("copy",this)},this.onCut=function(){this.commands.exec("cut",this)},this.onPaste=function(e){if(this.$readOnly)return;var t={text:e};this._signal("paste",t),this.insert(t.text,!0)},this.execCommand=function(e,t){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.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()){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){this.keyBinding.onTextInput(e)},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.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 r=new p(0,0,0,0);for(var i=e.first;i<=e.last;i++){var s=t.getLine(i);r.start.row=i,r.end.row=i,r.end.column=s.length,t.replace(r,n[i-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=o)s[u].moveBy(i,0),u--}t.fromOrientedRange(t.ranges[0]),t.rangeList.attach(this.session)}},this.$getSelectedRows=function(){var e=this.getSelectionRange().collapseRows();return{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},this.onCompositionStart=function(e){this.renderer.showComposition(this.getCursorPosition())},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);this.$blockScrolling++,t===!0?this.selection.$moveSelection(function(){this.moveCursorBy(i,0)}):t===!1&&(this.selection.moveCursorBy(i,0),this.selection.clearSelection()),this.$blockScrolling--;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.$blockScrolling+=1,this.selection.selectAll(),this.$blockScrolling-=1},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){var t=this.getCursorPosition(),n=this.session.getBracketRange(t);if(!n){n=this.find({needle:/[{}()\[\]]/g,preventScroll:!0,start:{row:t.row,column:t.column-1}});if(!n)return;var r=n.start;r.row==t.row&&Math.abs(r.column-t.column)<2&&(n=this.session.getBracketRange(r))}r=n&&n.cursor||r,r&&(e?n&&n.isEqual(this.getSelectionRange())?this.clearSelection():this.selection.selectTo(r.row,r.column):this.selection.moveTo(r.row,r.column))},this.gotoLine=function(e,t,n){this.selection.clearSelection(),this.session.unfold({row:e-1,column:t||0}),this.$blockScrolling+=1,this.exitMultiSelectMode&&this.exitMultiSelectMode(),this.moveCursorTo(e-1,t||0),this.$blockScrolling-=1,this.isRowFullyVisible(e-1)||this.scrollToLine(e-1,!0,n)},this.navigateTo=function(e,t){this.selection.moveTo(e,t)},this.navigateUp=function(e){if(this.selection.isMultiLine()&&!this.selection.isBackwards()){var t=this.selection.anchor.getPosition();return this.moveCursorToPosition(t)}this.selection.clearSelection(),this.selection.moveCursorBy(-e||-1,0)},this.navigateDown=function(e){if(this.selection.isMultiLine()&&this.selection.isBackwards()){var t=this.selection.anchor.getPosition();return this.moveCursorToPosition(t)}this.selection.clearSelection(),this.selection.moveCursorBy(e||1,0)},this.navigateLeft=function(e){if(!this.selection.isEmpty()){var t=this.getSelectionRange().start;this.moveCursorToPosition(t)}else{e=e||1;while(e--)this.selection.moveCursorLeft()}this.clearSelection()},this.navigateRight=function(e){if(!this.selection.isEmpty()){var t=this.getSelectionRange().end;this.moveCursorToPosition(t)}else{e=e||1;while(e--)this.selection.moveCursorRight()}this.clearSelection()},this.navigateLineStart=function(){this.selection.moveCursorLineStart(),this.clearSelection()},this.navigateLineEnd=function(){this.selection.moveCursorLineEnd(),this.clearSelection()},this.navigateFileEnd=function(){this.selection.moveCursorFileEnd(),this.clearSelection()},this.navigateFileStart=function(){this.selection.moveCursorFileStart(),this.clearSelection()},this.navigateWordRight=function(){this.selection.moveCursorWordRight(),this.clearSelection()},this.navigateWordLeft=function(){this.selection.moveCursorWordLeft(),this.clearSelection()},this.replace=function(e,t){t&&this.$search.set(t);var n=this.$search.find(this.session),r=0;return n?(this.$tryReplace(n,e)&&(r=1),n!==null&&(this.selection.setSelectionRange(n),this.renderer.scrollSelectionIntoView(n.start,n.end)),r):r},this.replaceAll=function(e,t){t&&this.$search.set(t);var n=this.$search.findAll(this.session),r=0;if(!n.length)return r;this.$blockScrolling+=1;var i=this.getSelectionRange();this.selection.moveTo(0,0);for(var s=n.length-1;s>=0;--s)this.$tryReplace(n[s],e)&&r++;return this.selection.setSelectionRange(i),this.$blockScrolling-=1,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.$blockScrolling+=1,this.session.unfold(e),this.selection.setSelectionRange(e),this.$blockScrolling-=1;var n=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),t!==!1&&this.renderer.animateScrolling(n)},this.undo=function(){this.$blockScrolling++,this.session.getUndoManager().undo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.$blockScrolling++,this.session.getUndoManager().redo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._signal("destroy",this)},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()){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.removeEventListener("changeSelection",s),this.renderer.removeEventListener("afterRender",u),this.renderer.removeEventListener("beforeRender",o)}},this.$resetCursorStyle=function(){var e=this.$cursorStyle||"ace",t=this.renderer.$cursorLayer;if(!t)return;t.setSmoothBlinking(e=="smooth"),t.isBlinking=!this.$readOnly&&e!="wide"}}).call(y.prototype),g.defineOptions(y.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},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)}},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",showLineNumbers:"renderer",showGutter:"renderer",displayIndentGuides:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",tabSize:"session",wrap:"session",foldStyle:"session",mode:"session"}),t.Editor=y}),ace.define("ace/mouse/multi_select_handler",["require","exports","module","ace/lib/event"],function(e,t,n){function i(e,t){return e.row==t.row&&e.column==t.column}function s(e){var t=e.domEvent,n=t.altKey,s=t.shiftKey,o=e.getAccelKey(),u=e.getButton();if(e.editor.inMultiSelectMode&&u==2){e.editor.textInput.onContextMenu(e.domEvent);return}if(!o&&!n){u===0&&e.editor.inMultiSelectMode&&e.editor.exitMultiSelectMode();return}var a=e.editor,f=a.selection,l=a.inMultiSelectMode,c=e.getDocumentPosition(),h=f.getCursor(),p=e.inSelection()||f.isEmpty()&&i(c,h),d=e.x,v=e.y,m=function(e){d=e.clientX,v=e.clientY},g=function(){var e=a.renderer.pixelToScreenCoordinates(d,v),t=y.screenToDocumentPosition(e.row,e.column);if(i(w,e)&&i(t,f.selectionLead))return;w=e,a.selection.moveToPosition(t),a.renderer.scrollCursorIntoView(),a.removeSelectionMarkers(x),x=f.rectangularRangeBlock(w,b),x.forEach(a.addSelectionMarker,a),a.updateSelectionMarkers()},y=a.session,b=a.renderer.pixelToScreenCoordinates(d,v),w=b;if(o&&!n&&!s&&u===0){if(!l&&p)return;if(!l){var E=f.toOrientedRange();a.addSelectionMarker(E)}var S=f.rangeList.rangeAtPoint(c);a.$blockScrolling++,a.once("mouseup",function(){var e=f.toOrientedRange();S&&e.isEmpty()&&i(S.cursor,e.cursor)?f.substractPoint(e.cursor):(E&&(a.removeSelectionMarker(E),f.addRange(E)),f.addRange(e)),a.$blockScrolling--})}else if(n&&u===0){e.stop(),l&&!o?f.toSingleRange():!l&&o&&f.addRange();var x=[];s?(b=y.documentToScreenPosition(f.lead),g()):f.moveToPosition(c);var T=function(e){clearInterval(C),a.removeSelectionMarkers(x);for(var t=0;t=0)&&parseFloat(navigator.userAgent.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:|MSIE )([0-9]+[\.0-9]+)/)[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=window.controllers&&window.navigator.product==="Gecko",t.isOldGecko=t.isGecko&&parseInt((navigator.userAgent.match(/rv\:(\d+)/)||[])[1],10)<4,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.isAIR=i.indexOf("AdobeAIR")>=0,t.isIPad=i.indexOf("iPad")>=0,t.isTouchPad=i.indexOf("TouchPad")>=0}),ace.define("ace/commands/multi_select_commands",["require","exports","module","ace/keyboard/hash_handler"],function(e,t,n){t.defaultCommands=[{name:"addCursorAbove",exec:function(e){e.selectMoreLines(-1)},bindKey:{win:"Ctrl-Alt-Up",mac:"Ctrl-Alt-Up"},readonly:!0},{name:"addCursorBelow",exec:function(e){e.selectMoreLines(1)},bindKey:{win:"Ctrl-Alt-Down",mac:"Ctrl-Alt-Down"},readonly:!0},{name:"addCursorAboveSkipCurrent",exec:function(e){e.selectMoreLines(-1,!0)},bindKey:{win:"Ctrl-Alt-Shift-Up",mac:"Ctrl-Alt-Shift-Up"},readonly:!0},{name:"addCursorBelowSkipCurrent",exec:function(e){e.selectMoreLines(1,!0)},bindKey:{win:"Ctrl-Alt-Shift-Down",mac:"Ctrl-Alt-Shift-Down"},readonly:!0},{name:"selectMoreBefore",exec:function(e){e.selectMore(-1)},bindKey:{win:"Ctrl-Alt-Left",mac:"Ctrl-Alt-Left"},readonly:!0},{name:"selectMoreAfter",exec:function(e){e.selectMore(1)},bindKey:{win:"Ctrl-Alt-Right",mac:"Ctrl-Alt-Right"},readonly:!0},{name:"selectNextBefore",exec:function(e){e.selectMore(-1,!0)},bindKey:{win:"Ctrl-Alt-Shift-Left",mac:"Ctrl-Alt-Shift-Left"},readonly:!0},{name:"selectNextAfter",exec:function(e){e.selectMore(1,!0)},bindKey:{win:"Ctrl-Alt-Shift-Right",mac:"Ctrl-Alt-Shift-Right"},readonly:!0},{name:"splitIntoLines",exec:function(e){e.multiSelect.splitIntoLines()},bindKey:{win:"Ctrl-Alt-L",mac:"Ctrl-Alt-L"},readonly:!0},{name:"alignCursors",exec:function(e){e.alignCursors()},bindKey:{win:"Ctrl-Alt-A",mac:"Ctrl-Alt-A"}}],t.multiSelectCommands=[{name:"singleSelection",bindKey:"esc",exec:function(e){e.exitMultiSelectMode()},readonly:!0,isAvailable:function(e){return e&&e.inMultiSelectMode}}];var r=e("../keyboard/hash_handler").HashHandler;t.keyboardHandler=new r(t.multiSelectCommands)}),ace.define("ace/lib/oop",["require","exports","module"],function(e,t,n){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)}}),ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/config"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/event_emitter").EventEmitter,s=e("../config"),o=function(t,n,r,i){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),e.nameToUrl&&!e.toUrl&&(e.toUrl=e.nameToUrl);if(s.get("packaged")||!e.toUrl)i=i||s.moduleUrl(n,"worker");else{var o=this.$normalizePath;i=i||o(e.toUrl("ace/worker/worker.js",null,"_"));var u={};t.forEach(function(t){u[t]=o(e.toUrl(t,null,"_").replace(/(\.js)?(\?.*)?$/,""))})}try{this.$worker=new Worker(i)}catch(a){if(!(a instanceof window.DOMException))throw a;var f=this.$workerBlob(i),l=window.URL||window.webkitURL,c=l.createObjectURL(f);this.$worker=new Worker(c),l.revokeObjectURL(c)}this.$worker.postMessage({init:!0,tlns:u,module:n,classname:r}),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){r.implement(this,i),this.onMessage=function(e){var t=e.data;switch(t.type){case"log":window.console&&console.log&&console.log.apply(console,t.data);break;case"event":this._signal(t.name,{data:t.data});break;case"call":var n=this.callbacks[t.id];n&&(n(t.data),delete this.callbacks[t.id])}},this.$normalizePath=function(e){return location.host?(e=e.replace(/^[a-z]+:\/\/[^\/]+/,""),e=location.protocol+"//"+location.host+(e.charAt(0)=="/"?"":location.pathname.replace(/\/[^\/]*$/,""))+"/"+e.replace(/^[\/]+/,""),e):e},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker=null,this.$doc.removeEventListener("change",this.changeListener),this.$doc=null},this.send=function(e,t){this.$worker.postMessage({command:e,args:t})},this.call=function(e,t,n){if(n){var r=this.callbackId++;this.callbacks[r]=n,t.push(r)}this.send(e,t)},this.emit=function(e,t){try{this.$worker.postMessage({event:e,data:{data:t.data}})}catch(n){}},this.attachToDocument=function(e){this.$doc&&this.terminate(),this.$doc=e,this.call("setValue",[e.getValue()]),e.on("change",this.changeListener)},this.changeListener=function(e){this.deltaQueue?this.deltaQueue.push(e.data):(this.deltaQueue=[e.data],setTimeout(this.$sendDeltaQueue,0))},this.$sendDeltaQueue=function(){var e=this.deltaQueue;if(!e)return;this.deltaQueue=null,e.length>20&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e})},this.$workerBlob=function(e){var t="importScripts('"+e+"');";try{return new Blob([t],{type:"application/javascript"})}catch(n){var r=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder,i=new r;return i.append(t),i.getBlob("application/javascript")}}}).call(o.prototype);var u=function(e,t,n){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var r=null,o=!1,u=Object.create(i),a=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(e){a.messageBuffer.push(e),r&&(o?setTimeout(f):f())},this.setEmitSync=function(e){o=e};var f=function(){var e=a.messageBuffer.shift();e.command?r[e.command].apply(r,e.args):e.event&&u._signal(e.event,e.data)};u.postMessage=function(e){a.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})},s.loadModule(["worker",t],function(e){r=new e[n](u);while(a.messageBuffer.length)f()})};u.prototype=o.prototype,t.UIWorkerClient=u,t.WorkerClient=o}),ace.define("ace/lib/keys",["require","exports","module","ace/lib/oop"],function(e,t,n){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:".",188:",",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"}},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}();r.mixin(t,i),t.keyCodeToString=function(e){return(i[e]||String.fromCharCode(e)).toLowerCase()}}),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t,n){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,i=this.$pos;this.pos=t.createAnchor(i.row,i.column),this.markerId=n.addMarker(new r(i.row,i.column,i.row,i.column+this.length),this.mainClass,null,!1),this.pos.on("change",function(t){n.removeMarker(e.markerId),e.markerId=n.addMarker(new r(t.value.row,t.value.column,t.value.row,t.value.column+e.length),e.mainClass,null,!1)}),this.others=[],this.$others.forEach(function(n){var r=t.createAnchor(n.row,n.column);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),n.on("change",function(i){e.removeMarker(n.markerId),n.markerId=e.addMarker(new r(i.value.row,i.value.column,i.value.row,i.value.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&&n.start.column<=this.pos.column+this.length+1){var s=n.start.column-this.pos.column;this.length+=i;if(!this.session.$fromUndo){if(t.action==="insertText")for(var o=this.others.length-1;o>=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};u.row===n.start.row&&n.start.column=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};u.row===n.start.row&&n.start.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.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.pos.detach();for(var e=0;e1?(o++,o>4&&(o=1)):o=1;if(i.isIE){var n=Math.abs(e.clientX-u)>5||Math.abs(e.clientY-a)>5;n&&(o=1),o==1&&(u=e.clientX,a=e.clientY)}r[s]("mousedown",e);if(o>4)o=0;else if(o>1)return r[s](l[o],e)}),i.isOldIE&&t.addListener(e,"dblclick",function(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 s=!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[s(e)]};var u=null,a=0;t.addCommandKeyListener=function(e,n){var r=t.addListener;if(i.isOldGecko||i.isOpera&&!("KeyboardEvent"in window)){var s=null;r(e,"keydown",function(e){s=e.keyCode}),r(e,"keypress",function(e){return o(n,e,s)})}else{var a=null;r(e,"keydown",function(e){u[e.keyCode]=!0;var t=o(n,e,e.keyCode);return a=e.defaultPrevented,t}),r(e,"keypress",function(e){a&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),a=null)}),r(e,"keyup",function(e){u[e.keyCode]=null}),u||(u=Object.create(null),r(window,"focus",function(e){u=Object.create(null)}))}};if(window.postMessage&&!i.isOldIE){var f=1;t.nextTick=function(e,n){n=n||window;var r="zero-timeout-message-"+f;t.addListener(n,"message",function i(s){s.data==r&&(t.stopPropagation(s),t.removeListener(n,"message",i),e())}),n.postMessage(r,"*")}}t.nextFrame=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)}}),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(e,t,n){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)}),ace.define("ace/lib/dom",["require","exports","module"],function(e,t,n){if(typeof document=="undefined")return;var r="http://www.w3.org/1999/xhtml";t.getDocumentHead=function(e){return e||(e=document),e.head||e.getElementsByTagName("head")[0]||e.documentElement},t.createElement=function(e,t){return document.createElementNS?document.createElementNS(t||r,e):document.createElement(e)},t.hasCssClass=function(e,t){var n=e.className.split(/\s+/g);return n.indexOf(t)!==-1},t.addCssClass=function(e,n){t.hasCssClass(e,n)||(e.className+=" "+n)},t.removeCssClass=function(e,t){var n=e.className.split(/\s+/g);for(;;){var r=n.indexOf(t);if(r==-1)break;n.splice(r,1)}e.className=n.join(" ")},t.toggleCssClass=function(e,t){var n=e.className.split(/\s+/g),r=!0;for(;;){var i=n.indexOf(t);if(i==-1)break;r=!1,n.splice(i,1)}return r&&n.push(t),e.className=n.join(" "),r},t.setCssClass=function(e,n,r){r?t.addCssClass(e,n):t.removeCssClass(e,n)},t.hasCssString=function(e,t){var n=0,r;t=t||document;if(t.createStyleSheet&&(r=t.styleSheets)){while(n0||-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;n1&&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})}),ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(e,t,n){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-1?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("ace/line_widgets").LineWidgets,i=e("ace/lib/dom"),s=e("ace/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.lineWidgets&&n.lineWidgets[o];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")},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; }","")}),ace.define("ace/lib/fixoldbrowsers",["require","exports","module","ace/lib/regexp","ace/lib/es5-shim"],function(e,t,n){e("./regexp"),e("./es5-shim")}),ace.define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(e,t,n){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.detach=this.detach.bind(this),this.session.on("change",this.updateOnChange)}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&&(e+=t.rowCount)}),e},this.attach=function(e){e.widgetManager&&e.widgetManager!=this&&e.widgetManager.detach();if(this.editor==e)return;this.detach(),this.editor=e,this.editor.on("changeSession",this.detach),e.widgetManager=this,e.setOption("enableLineWidgets",!0),e.renderer.on("beforeRender",this.measureWidgets),e.renderer.on("afterRender",this.renderWidgets)},this.detach=function(e){if(e&&e.session==this.session)return;var t=this.editor;if(!t)return;t.off("changeSession",this.detach),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.updateOnChange=function(e){var t=this.session.lineWidgets;if(!t)return;var n=e.data,r=n.range,i=r.start.row,s=r.end.row-i;if(s!==0)if(n.action=="removeText"||n.action=="removeLines"){var o=t.splice(i+1,s);o.forEach(function(e){e&&this.removeLineWidget(e)},this),this.$updateRows()}else{var u=new Array(s);u.unshift(i,0),t.splice.apply(t,u),this.$updateRows()}},this.$updateRows=function(){var e=this.session.lineWidgets;if(!e)return;var t=!0;e.forEach(function(e,n){e&&(t=!1,e.row=n)}),t&&(this.session.lineWidgets=null)},this.addLineWidget=function(e){this.session.lineWidgets||(this.session.lineWidgets=new Array(this.session.getLength())),this.session.lineWidgets[e.row]=e;var t=this.editor.renderer;return e.html&&!e.el&&(e.el=i.createElement("div"),e.el.innerHTML=e.html),e.el&&(i.addCssClass(e.el,"ace_lineWidgetContainer"),e.el.style.position="absolute",e.el.style.zIndex=5,t.container.appendChild(e.el),e._inDocument=!0),e.coverGutter||(e.el.style.zIndex=3),e.pixelHeight||(e.pixelHeight=e.el.offsetHeight),e.rowCount==null&&(e.rowCount=e.pixelHeight/t.layerConfig.lineHeight),this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows(),this.renderWidgets(null,t),e},this.removeLineWidget=function(e){e._inDocument=!1,e.el&&e.el.parentNode&&e.el.parentNode.removeChild(e.el);if(e.editor&&e.editor.destroy)try{e.editor.destroy()}catch(t){}this.session.lineWidgets&&(this.session.lineWidgets[e.row]=undefined),this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows()},this.onWidgetChanged=function(e){this.session._changedWidgets.push(e),this.editor&&this.editor.renderer.updateFull()},this.measureWidgets=function(e,t){var n=this.session._changedWidgets,r=t.layerConfig;if(!n||!n.length)return;var i=Infinity;for(var s=0;s0&&!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;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.fixedWidth?u.el.style.right=t.scrollBar.getWidth()+"px":u.el.style.right=""}}}).call(o.prototype),t.LineWidgets=o}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=e("./range").Range,o=e("./anchor").Anchor,u=function(e){this.$lines=[],e.length===0?this.$lines=[""]:Array.isArray(e)?this._insertLines(0,e):this.insert({row:0,column:0},e)};(function(){r.implement(this,i),this.setValue=function(e){var t=this.getLength();this.remove(new s(0,0,t,this.getLine(t-1).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new o(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){if(e.start.row==e.end.row)return this.getLine(e.start.row).substring(e.start.column,e.end.column);var t=this.getLines(e.start.row,e.end.row);t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;return e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column)),t.join(this.getNewLineCharacter())},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<0&&(e.row=0),e},this.insert=function(e,t){if(!t||t.length===0)return e;e=this.$clipPosition(e),this.getLength()<=1&&this.$detectNewLine(t);var n=this.$split(t),r=n.splice(0,1)[0],i=n.length==0?null:n.splice(n.length-1,1)[0];return e=this.insertInLine(e,r),i!==null&&(e=this.insertNewLine(e),e=this._insertLines(e.row,n),e=this.insertInLine(e,i||"")),e},this.insertLines=function(e,t){return e>=this.getLength()?this.insert({row:e,column:0},"\n"+t.join("\n")):this._insertLines(Math.max(e,0),t)},this._insertLines=function(e,t){if(t.length==0)return{row:e,column:0};while(t.length>61440){var n=this._insertLines(e,t.slice(0,61440));t=t.slice(61440),e=n.row}var r=[e,0];r.push.apply(r,t),this.$lines.splice.apply(this.$lines,r);var i=new s(e,0,e+t.length,0),o={action:"insertLines",range:i,lines:t};return this._signal("change",{data:o}),i.end},this.insertNewLine=function(e){e=this.$clipPosition(e);var t=this.$lines[e.row]||"";this.$lines[e.row]=t.substring(0,e.column),this.$lines.splice(e.row+1,0,t.substring(e.column,t.length));var n={row:e.row+1,column:0},r={action:"insertText",range:s.fromPoints(e,n),text:this.getNewLineCharacter()};return this._signal("change",{data:r}),n},this.insertInLine=function(e,t){if(t.length==0)return e;var n=this.$lines[e.row]||"";this.$lines[e.row]=n.substring(0,e.column)+t+n.substring(e.column);var r={row:e.row,column:e.column+t.length},i={action:"insertText",range:s.fromPoints(e,r),text:t};return this._signal("change",{data:i}),r},this.remove=function(e){e instanceof s||(e=s.fromPoints(e.start,e.end)),e.start=this.$clipPosition(e.start),e.end=this.$clipPosition(e.end);if(e.isEmpty())return e.start;var t=e.start.row,n=e.end.row;if(e.isMultiLine()){var r=e.start.column==0?t:t+1,i=n-1;e.end.column>0&&this.removeInLine(n,0,e.end.column),i>=r&&this._removeLines(r,i),r!=t&&(this.removeInLine(t,e.start.column,this.getLine(t).length),this.removeNewLine(e.start.row))}else this.removeInLine(t,e.start.column,e.end.column);return e.start},this.removeInLine=function(e,t,n){if(t==n)return;var r=new s(e,t,e,n),i=this.getLine(e),o=i.substring(t,n),u=i.substring(0,t)+i.substring(n,i.length);this.$lines.splice(e,1,u);var a={action:"removeText",range:r,text:o};return this._signal("change",{data:a}),r.start},this.removeLines=function(e,t){return e<0||t>=this.getLength()?this.remove(new s(e,0,t+1,0)):this._removeLines(e,t)},this._removeLines=function(e,t){var n=new s(e,0,t+1,0),r=this.$lines.splice(e,t-e+1),i={action:"removeLines",range:n,nl:this.getNewLineCharacter(),lines:r};return this._signal("change",{data:i}),r},this.removeNewLine=function(e){var t=this.getLine(e),n=this.getLine(e+1),r=new s(e,t.length,e+1,0),i=t+n;this.$lines.splice(e,2,i);var o={action:"removeText",range:r,text:this.getNewLineCharacter()};this._signal("change",{data:o})},this.replace=function(e,t){e instanceof s||(e=s.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);if(t)var n=this.insert(e.start,t);else n=e.start;return n},this.applyDeltas=function(e){for(var t=0;t=0;t--){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="insertText"?this.remove(r):n.action=="removeLines"?this._insertLines(r.start.row,n.lines):n.action=="removeText"&&this.insert(r.start,n.text)}},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;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}}).call(r.prototype),t.TokenIterator=r}),ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(e,t,n){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;ithis.row)return;if(n.start.row==this.row&&n.start.column>this.column)return;var r=this.row,i=this.column,s=n.start,o=n.end;if(t.action==="insertText")if(s.row===r&&s.column<=i){if(s.column!==i||!this.$insertRight)s.row===o.row?i+=o.column-s.column:(i-=s.column,r+=o.row-s.row)}else s.row!==o.row&&s.row=i?i=s.column:i=Math.max(0,i-(o.column-s.column)):s.row!==o.row&&s.row=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)}),ace.define("ace/background_tokenizer",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=function(e,t){this.running=!1,this.lines=[],this.states=[],this.currentLine=0,this.tokenizer=e;var n=this;this.$worker=function(){if(!n.running)return;var e=new Date,t=n.currentLine,r=-1,i=n.doc;while(n.lines[t])t++;var s=t,o=i.getLength(),u=0;n.running=!1;while(t20){n.running=setTimeout(n.$worker,20),n.currentLine=t;return}}n.currentLine=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.range,n=t.start.row,r=t.end.row-n;if(r===0)this.lines[n]=null;else if(e.action=="removeText"||e.action=="removeLines")this.lines.splice(n,r+1,null),this.states.splice(n,r+1,null);else{var i=Array(r+1);i.unshift(n,1),this.lines.splice.apply(this.lines,i),this.states.splice.apply(this.states,i)}this.currentLine=Math.min(n,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}),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){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}),ace.define("ace/edit_session/folding",["require","exports","module","ace/range","ace/edit_session/fold_line","ace/edit_session/fold","ace/token_iterator"],function(e,t,n){function u(){this.getFoldAt=function(e,t,n){var r=this.getFoldLine(e);if(!r)return null;var i=r.folds;for(var s=0;s=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=0),t==null&&(t=e.end.row,n=this.getLine(t).length);var s=this.doc,o="";return e.walk(function(e,t,n,u){if(t=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.removeListener("change",this.$updateFoldWidgets),this._emit("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.on("change",this.$updateFoldWidgets)},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){t.children||t.all?this.removeFold(s):this.expandFold(s);return}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)){this.removeFold(s);return}}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,o.end.row,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.data,n=t.range,r=n.start.row,i=n.end.row-r;if(i===0)this.foldWidgets[r]=null;else if(t.action=="removeText"||t.action=="removeLines")this.foldWidgets.splice(r,i+1,null);else{var s=Array(i+1);s.unshift(r,1),this.foldWidgets.splice.apply(this.foldWidgets,s)}}}var r=e("../range").Range,i=e("./fold_line").FoldLine,s=e("./fold").Fold,o=e("../token_iterator").TokenIterator;t.Folding=u}),ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(e,t,n){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;f1?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),f.__proto__=null}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){r=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 m=e.substring(l,v-d.length);c.type==h?c.value+=m:(c.type&&f.push(c),c={type:h,value:m})}for(var g=0;gr){while(l1&&n[0]!==i&&n.unshift(i),{tokens:f,state:n.length?n:i}}}).call(i.prototype),t.Tokenizer=i}),ace.define("ace/edit_session/fold",["require","exports","module","ace/range","ace/range_list","ace/lib/oop"],function(e,t,n){function u(e,t){e.row-=t.row,e.row==0&&(e.column-=t.column)}function a(e,t){u(e.start,t),u(e.end,t)}function f(e,t){e.row==0&&(e.column+=t.column),e.row+=t.row}function l(e,t){f(e.start,t),f(e.end,t)}var r=e("../range").Range,i=e("../range_list").RangeList,s=e("../lib/oop"),o=t.Fold=function(e,t){this.foldLine=null,this.placeholder=t,this.range=e,this.start=e.start,this.end=e.end,this.sameRow=e.start.row==e.end.row,this.subFolds=this.ranges=[]};s.inherits(o,i),function(){this.toString=function(){return'"'+this.placeholder+'" '+this.range.toString()},this.setFoldLine=function(e){this.foldLine=e,this.subFolds.forEach(function(t){t.setFoldLine(e)})},this.clone=function(){var e=this.range.clone(),t=new o(e,this.placeholder);return this.subFolds.forEach(function(e){t.subFolds.push(e.clone())}),t.collapseChildren=this.collapseChildren,t},this.addSubFold=function(e){if(this.range.isEqual(e))return;if(!this.range.containsRange(e))throw new Error("A fold can't intersect already existing fold"+e.range+this.range);a(e,this.start);var t=e.start.row,n=e.start.column;for(var r=0,i=-1;r2?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)}),a==Infinity&&(a=E,s=!1,o=!1),l&&a%f!=0&&(a=Math.floor(a/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 a(t,r.row,r.column),o=s.getCurrentToken(),u=t.selection,l=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 f(m,g,m,g+i.start.length);break}o=s.stepBackward()}var s=new a(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 f(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);l.start.row==c&&(l.start.column+=h),l.end.row==c&&(l.end.column+=h),t.selection.fromOrientedRange(l)},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)e[t]&&(this.$embeds.push(t),this.$modes[t]=new e[t]);var n=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"];for(var t=0;t0)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.call(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.rowi)break;c.start.row==i&&c.start.column>=n.column&&(c.start.column!=n.column||!this.$insertRight)&&(c.start.column+=u,c.start.row+=o);if(c.end.row==i&&c.end.column>=n.column){if(c.end.column==n.column&&this.$insertRight)continue;c.end.column==n.column&&u>0&&fc.start.column&&c.end.column==a[f+1].start.column&&(c.end.column-=u),c.end.column+=u,c.end.row+=o}}if(o!=0&&f ["+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.row=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")+")+"));var a=t.column-o.getCurrentTokenColumn();for(;;){var f=u.value,l=f.length;while(at.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(){var e=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(e,this.doc.getLine(e).length)},this.setRange=this.setSelectionRange=function(e,t){t?(this.setSelectionAnchor(e.end.row,e.end.column),this.selectTo(e.start.row,e.start.column)):(this.setSelectionAnchor(e.start.row,e.start.column),this.selectTo(e.end.row,e.end.column)),this.getRange().isEmpty()&&(this.$isEmpty=!0),this.$desiredColumn=null},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.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.session.isTabStop(e)&&this.doc.getLine(e.row).slice(e.column-n,e.column).split(" ").length-1==n?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),i;this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var s=this.session.getFoldAt(e,t,1);if(s){this.moveCursorTo(s.end.row,s.end.column);return}if(i=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}if(o=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,n=0,r,i=/\s/,s=this.session.tokenRe;s.lastIndex=0;if(t=this.session.tokenRe.exec(e))n=this.session.tokenRe.lastIndex;else{while((r=e[n])&&i.test(r))n++;if(n<1){s.lastIndex=0;while((r=e[n])&&!s.test(r)){s.lastIndex=0,n++;if(i.test(r)){if(n>2){n--;break}while((r=e[n])&&i.test(r))n++;if(n>2)break}}}}return s.lastIndex=0,n},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);t===0&&(this.$desiredColumn?n.column=this.$desiredColumn:this.$desiredColumn=n.column);var r=this.session.screenToDocumentPosition(n.row+e,n.column);e!==0&&t===0&&r.row===this.lead.row&&r.column===this.lead.column&&this.session.lineWidgets&&this.session.lineWidgets[r.row]&&r.row++,this.moveCursorTo(r.row,r.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,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.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){this.toSingleRange(e[0]);for(var t=e.length;t--;){var n=o.fromPoints(e[t].start,e[t].end);e.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}),ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){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.$matchIterator(e,this.$options);if(!t)return!1;var n=null;return t.forEach(function(e,t,r){if(!e.start){var i=e.offset+(r||0);n=new s(t,i,t,i+e.length)}else n=e;return!0}),n},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=0;u--)if(o(s[u],t,i))return!0};else var f=function(e,t,i){var s=r.getMatchOffsets(e,n);for(var u=0;u=o;r--)if(n(e.getLine(r),r))return;if(t.wrap==0)return;for(r=u,o=s.row;r>=o;r--)if(n(e.getLine(r),r))return}:function(n){var r=s.row,i=e.getLine(r).substr(s.column);if(n(i,r,s.column))return;for(r+=1;r<=u;r++)if(n(e.getLine(r),r))return;if(t.wrap==0)return;for(r=o,u=s.row;r<=u;r++)if(n(e.getLine(r),r))return};return{forEach:a}}}).call(o.prototype),t.Search=o}),ace.define("ace/edit_session",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/config","ace/lib/event_emitter","ace/selection","ace/mode/text","ace/range","ace/document","ace/background_tokenizer","ace/search_highlight","ace/edit_session/folding","ace/edit_session/bracket_match"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/lang"),s=e("./config"),o=e("./lib/event_emitter").EventEmitter,u=e("./selection").Selection,a=e("./mode/text").Mode,f=e("./range").Range,l=e("./document").Document,c=e("./background_tokenizer").BackgroundTokenizer,h=e("./search_highlight").SearchHighlight,p=function(e,t){this.$breakpoints=[],this.$decorations=[],this.$frontMarkers={},this.$backMarkers={},this.$markerId=1,this.$undoSelect=!0,this.$foldData=[],this.$foldData.toString=function(){return this.join("\n")},this.on("changeFold",this.onChangeFold.bind(this)),this.$onChange=this.onChange.bind(this);if(typeof e!="object"||!e.getLine)e=new l(e);this.setDocument(e),this.selection=new u(this),s.resetOptions(this),this.setMode(t),s._signal("session",this)};(function(){function g(e){return e<4352?!1:e>=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,o),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.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel();if(e){var t=this;this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.$deltasFold.length&&(t.$deltas.push({group:"fold",deltas:t.$deltasFold}),t.$deltasFold=[]),t.$deltasDoc.length&&(t.$deltas.push({group:"doc",deltas:t.$deltasDoc}),t.$deltasDoc=[]),t.$deltas.length>0&&e.execute({action:"aceupdate",args:[t.$deltas,t],merge:t.mergeUndoDeltas}),t.mergeUndoDeltas=!1,t.$deltas=[]},this.$informUndoManager=i.delayedCall(this.$syncInformUndoManager)}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset: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.$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.undoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;var n=null;for(var r=e.length-1;r!=-1;r--){var i=e[r];i.group=="doc"?(this.doc.revertDeltas(i.deltas),n=this.$getUndoSelection(i.deltas,!0,n)):i.deltas.forEach(function(e){this.addFolds(e.folds)},this)}return this.$fromUndo=!1,n&&this.$undoSelect&&!t&&this.selection.setSelectionRange(n),n},this.redoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;var n=null;for(var r=0;re.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,l=s.start,o=l.row-a.row,u=l.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.insert({row:r,column:0},n)},this.outdentRows=function(e){var t=e.collapseRows(),n=new f(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 f(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.removeLines(e,t);return this.doc.insertLines(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._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,r=e.data.action,i=e.data.range.start.row,s=e.data.range.end.row,o=e.data.range.start,u=e.data.range.end,a=null;r.indexOf("Lines")!=-1?(r=="insertLines"?s=i+e.data.lines.length:s=i,n=e.data.lines?e.data.lines.length:s-i):n=s-i,this.$updating=!0;if(n!=0)if(r.indexOf("remove")!=-1){this[t?"$wrapData":"$rowLengthCache"].splice(i,n);var f=this.$foldData;a=this.getFoldsInRange(e.data.range),this.removeFolds(a);var l=this.getFoldLine(u.row),c=0;if(l){l.addRemoveChars(u.row,u.column,o.column-u.column),l.shiftRow(-n);var h=this.getFoldLine(i);h&&h!==l&&(h.merge(l),l=h),c=f.indexOf(l)+1}for(c;c=u.row&&l.shiftRow(-n)}s=i}else{var p=Array(n);p.unshift(i,0);var d=t?this.$wrapData:this.$rowLengthCache;d.splice.apply(d,p);var f=this.$foldData,l=this.getFoldLine(i),c=0;if(l){var v=l.range.compareInside(o.row,o.column);v==0?(l=l.split(o.row,o.column),l.shiftRow(n),l.addRemoveChars(s,0,u.column-o.column)):v==-1&&(l.addRemoveChars(i,0,u.column-o.column),l.shiftRow(n)),c=f.indexOf(l)+1}for(c;c=i&&l.shiftRow(n)}}else{n=Math.abs(e.data.range.start.column-e.data.range.end.column),r.indexOf("remove")!=-1&&(a=this.getFoldsInRange(e.data.range),this.removeFolds(a),n=-n);var l=this.getFoldLine(i);l&&l.addRemoveChars(i,o.column,n)}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(i,s):this.$updateRowLengthCache(i,s),a},this.$updateRowLengthCache=function(e,t,n){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(e,t){var n=this.doc.getAllLines(),r=this.getTabSize(),i=this.$wrapData,s=this.$wrapLimit,o,a,f=e;t=Math.min(t,n.length-1);while(f<=t)a=this.getFoldLine(f,a),a?(o=[],a.walk(function(e,t,r,i){var s;if(e!=null){s=this.$getDisplayTokens(e,o.length),s[0]=u;for(var a=1;at){var f=i+t;if(e[f-1]>=d&&e[f]>=d){a(f);continue}if(e[f]==u||e[f]==l){for(f;f!=i-1;f--)if(e[f]==u)break;if(f>i){a(f);continue}f=i+t;for(f;f>2)),i-1);while(f>c&&e[f]c&&e[f]c&&e[f]==p)f--}else while(f>c&&e[f]c){a(++f);continue}f=i+t,a(f)}return n},this.$getDisplayTokens=function(e,r){var i=[],s;r=r||0;for(var o=0;o39&&u<48||u>57&&u<64?i.push(p):u>=4352&&g(u)?i.push(t,n):i.push(t)}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&&g(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.getScreenLastRowColumn=function(e){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE);return this.documentToScreenColumn(t.row,t.column)},this.getDocumentLastRowColumn=function(e,t){var n=this.documentToScreenRow(e,t);return this.getScreenLastRowColumn(n)},this.getDocumentLastRowColumnPosition=function(e,t){var n=this.documentToScreenRow(e,t);return this.screenToDocumentPosition(n,Number.MAX_VALUE/10)},this.getRowSplitData=function(e){return this.$useWrapMode?this.$wrapData[e]:undefined},this.getScreenTabSize=function(e){return this.$tabSize-e%this.$tabSize},this.screenToDocumentRow=function(e,t){return this.screenToDocumentPosition(e,t).row},this.screenToDocumentColumn=function(e,t){return this.screenToDocumentPosition(e,t).column},this.screenToDocumentPosition=function(e,t){if(e<0)return{row:0,column:0};var n,r=0,i=0,s,o=0,u=0,a=this.$screenRowCache,f=this.$getRowCacheIndex(a,e),l=a.length;if(l&&f>=0)var o=a[f],r=this.$docRowCache[f],c=e>a[l-1];else var c=!l;var h=this.getLength()-1,p=this.getNextFoldLine(r),d=p?p.start.row:Infinity;while(o<=e){u=this.getRowLength(r);if(o+u>e||r>=h)break;o+=u,r++,r>d&&(r=p.end.row+1,p=this.getNextFoldLine(r,p),d=p?p.start.row:Infinity),c&&(this.$docRowCache.push(r),this.$screenRowCache.push(o))}if(p&&p.start.row<=r)n=this.getFoldDisplayLine(p),r=p.start.row;else{if(o+u<=e||r>h)return{row:h,column:this.getLine(h).length};n=this.getLine(r),p=null}if(this.$useWrapMode){var v=this.$wrapData[r];if(v){var m=Math.floor(e-o);s=v[m],m>0&&v.length&&(i=v[m-1]||v[v.length-1],n=n.substring(i))}}return i+=this.$getStringScreenWidth(n,t)[1],this.$useWrapMode&&i>=s&&(i=s-1),p?p.idxToPosition(i):{row:r,column:i}},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);if(this.$useWrapMode){var v=this.$wrapData[i];if(v){var m=0;while(d.length>=v[m])r++,m++;d=d.substring(v[m-1]||0,d.length)}}return{row:r,column: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){}}).call(p.prototype),e("./edit_session/folding").Folding.call(p.prototype),e("./edit_session/bracket_match").BracketMatch.call(p.prototype),s.defineOptions(p.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;if(!e)this.setUseWrapMode(!1);else{var t=typeof e=="number"?e:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}this.$wrap=e},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.$modified=!0,this.$resetRowCache(0),this.$updateWrapData(0,this.getLength()-1)))},initialValue:"auto"},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){if(isNaN(e)||this.$tabSize===e)return;this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._signal("changeTabSize")},initialValue:4,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}}}),t.EditSession=p}),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t,n){var r=e("../lib/oop"),i=e("../keyboard/hash_handler").HashHandler,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){typeof e=="string"&&(e=this.commands[e]);if(!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;var r={editor:t,command:e,args:n},i=this._emit("exec",r);return this._signal("afterExec",r),i===!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}),ace.define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(e,t,n){var r=e("../lib/keys"),i=e("../lib/exchange"),s=function(e){this.$editor=e,this.$data={},this.$handlers=[],this.setDefaultHandler(e.commands)};(function(){this.setDefaultHandler=function(e){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=e,this.addKeyboardHandler(e,0),this.$data={editor:this.$editor}},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.$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},this.onCommandKey=function(e,t,n){var i=r.keyCodeToString(n);this.$callKeyboardHandlers(t,i,n,e)},this.onTextInput=function(e){var t=this.$callKeyboardHandlers(-1,e);t||this.$editor.commands.exec("insertstring",this.$editor,e)}}).call(s.prototype),t.KeyBinding=s}),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){function s(e,t){this.platform=t||(i.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={};if(this.__defineGetter__&&this.__defineSetter__&&typeof console!="undefined"&&console.error){var n=!1,r=function(){n||(n=!0,console.error("commmandKeyBinding has too many m's. use commandKeyBinding"))};this.__defineGetter__("commmandKeyBinding",function(){return r(),this.commandKeyBinding}),this.__defineSetter__("commmandKeyBinding",function(e){return r(),this.commandKeyBinding=e})}else this.commmandKeyBinding=this.commandKeyBinding;this.addCommands(e)}var r=e("../lib/keys"),i=e("../lib/useragent");(function(){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){var t=typeof e=="string"?e:e.name;e=this.commands[t],delete this.commands[t];var n=this.commandKeyBinding;for(var r in n)for(var i in n[r])n[r][i]==e&&delete n[r][i]},this.bindKey=function(e,t){if(!e)return;if(typeof t=="function"){this.addCommand({exec:t,bindKey:e,name:t.name||e});return}var n=this.commandKeyBinding;e.split("|").forEach(function(e){var r=this.parseKeys(e,t),i=r.hashId;(n[i]||(n[i]={}))[r.key]=t},this)},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){var t=e.bindKey;if(!t)return;var n=typeof t=="string"?t:t[this.platform];this.bindKey(n,e)},this.parseKeys=function(e){e.indexOf(" ")!=-1&&(e=e.split(/\s+/).pop());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=this.commandKeyBinding;return r[t]&&r[t][n]},this.handleKeyboard=function(e,t,n,r){return{command:this.findKeyCommand(t,n)}}}).call(s.prototype),t.HashHandler=s}),ace.define("ace/mouse/fold_handler",["require","exports","module"],function(e,t,n){function r(e){e.on("click",function(t){var n=t.getDocumentPosition(),r=e.session,i=r.getFoldAt(n.row,n.column,1);i&&(t.getAccelKey()?r.removeFold(i):r.expandFold(i),t.stop())}),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()}})}t.FoldHandler=r}),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config"],function(e,t,n){function s(e,t){return{win:e,mac:t}}var r=e("../lib/lang"),i=e("../config");t.commands=[{name:"showSettingsMenu",bindKey:s("Ctrl-,","Command-,"),exec:function(e){i.loadModule("ace/ext/settings_menu",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:s("Alt-E","Ctrl-E"),exec:function(e){i.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:s("Alt-Shift-E","Ctrl-Shift-E"),exec:function(e){i.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",bindKey:s("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",bindKey:s(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:s("Ctrl-L","Command-L"),exec:function(e){var t=parseInt(prompt("Enter line number:"),10);isNaN(t)||e.gotoLine(t)},readOnly:!0},{name:"fold",bindKey:s("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:s("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:s("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:s("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},scrollIntoView:"center",readOnly:!0},{name:"foldall",bindKey:s("Ctrl-Alt-0","Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",bindKey:s("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",bindKey:s("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",bindKey:s("Ctrl-K","Command-G"),exec:function(e){e.findNext()},readOnly:!0},{name:"findprevious",bindKey:s("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},readOnly:!0},{name:"selectOrFindNext",bindKey:s("ALt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",bindKey:s("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",bindKey:s("Ctrl-F","Command-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e)})},readOnly:!0},{name:"overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",bindKey:s("Ctrl-Shift-Home","Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:s("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:s("Shift-Up","Shift-Up"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",readOnly:!0},{name:"golineup",bindKey:s("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",readOnly:!0},{name:"selecttoend",bindKey:s("Ctrl-Shift-End","Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:s("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:s("Shift-Down","Shift-Down"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",bindKey:s("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",bindKey:s("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",bindKey:s("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",bindKey:s("Alt-Shift-Left","Command-Shift-Left"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",bindKey:s("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",bindKey:s("Shift-Left","Shift-Left"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",bindKey:s("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",bindKey:s("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",bindKey:s("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",bindKey:s("Alt-Shift-Right","Command-Shift-Right"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",bindKey:s("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",bindKey:s("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",bindKey:s("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",bindKey:s(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:s("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",bindKey:s(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:s("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:s("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",bindKey:s("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",bindKey:s("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",bindKey:s("Ctrl-P","Ctrl-Shift-P"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",readOnly:!0},{name:"selecttomatching",bindKey:s("Ctrl-Shift-P",null),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",readOnly:!0},{name:"cut",exec:function(e){var t=e.getSelectionRange();e._emit("cut",t),e.selection.isEmpty()||(e.session.remove(t),e.clearSelection())},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"removeline",bindKey:s("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:s("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",bindKey:s("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:s("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:s("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",bindKey:s("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:s("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},multiSelectAction:"forEach"},{name:"replace",bindKey:s("Ctrl-H","Command-Option-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"undo",bindKey:s("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",bindKey:s("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",bindKey:s("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",bindKey:s("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",bindKey:s("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",bindKey:s("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",bindKey:s("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",bindKey:s("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",bindKey:s("Shift-Delete",null),exec:function(e){if(!e.selection.isEmpty())return!1;e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",bindKey:s("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",bindKey:s("Alt-Delete","Ctrl-K"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",bindKey:s("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",bindKey:s("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",bindKey:s("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:s("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:s("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:s("Ctrl-]","Ctrl-]"),exec:function(e){e.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",exec:function(e,t){e.insert(r.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",bindKey:s(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",bindKey:s("Ctrl-T","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",bindKey:s("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",bindKey:s("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"}]}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){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;o0},this.hasRedo=function(){return this.$redoStack.length>0},this.markClean=function(){this.dirtyCounter=0},this.isClean=function(){return this.dirtyCounter===0}}).call(r.prototype),t.UndoManager=r}),ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(e,t,n){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()}}}),ace.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/renderloop","ace/layer/font_metrics","ace/lib/event_emitter"],function(e,t,n){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_editor {position: relative;overflow: hidden;font-family: \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace;font-size: 12px;line-height: normal;direction: ltr;}.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;}.ace_content {position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: text;min-width: 100%;}.ace_dragging, .ace_dragging * {cursor: move !important;}.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;}.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 {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 {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;text-indent: -1em;-ms-user-select: text;-moz-user-select: text;-webkit-user-select: text;user-select: text;}.ace_text-input.ace_composition {background: #f8f8f8;color: #111;z-index: 1000;opacity: 1;text-indent: 0;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;white-space: pre;height: 100%;width: 100%;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;/* setting pointer-events: auto; on node under the mouse, which changesduring scroll, will break mouse wheel scrolling in Safari */pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;}.ace_text-layer {font: inherit !important;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;border-left: 2px solid}.ace_slim-cursors .ace_cursor {border-left-width: 1px;}.ace_overwrite-cursors .ace_cursor {border-left-width: 0px;border-bottom: 1px solid;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_smooth-blinking .ace_cursor {-moz-transition: opacity 0.18s;-webkit-transition: opacity 0.18s;-o-transition: opacity 0.18s;-ms-transition: opacity 0.18s;transition: opacity 0.18s;}.ace_editor.ace_multiselect .ace_cursor {border-left-width: 1px;}.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;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;}.ace_line .ace_fold {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;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;-moz-border-radius: 2px;-webkit-border-radius: 2px;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: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));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;display: block;max-width: 100%;padding: 3px 4px;position: fixed;z-index: 999999;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;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 {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;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);-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);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);-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}/*** Dark version for fold widgets*/.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 {-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {-moz-transition: opacity 0.4s ease 0.05s;-webkit-transition: opacity 0.4s ease 0.05s;-o-transition: opacity 0.4s ease 0.05s;-ms-transition: opacity 0.4s ease 0.05s;transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {-moz-transition: opacity 0.05s ease 0.05s;-webkit-transition: opacity 0.05s ease 0.05s;-o-transition: opacity 0.05s ease 0.05s;-ms-transition: opacity 0.05s ease 0.05s;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;}';i.importCssString(v,"ace_editor");var m=function(e,t){var n=this;this.container=e||i.createElement("div"),this.$keepTextAreaAtCursor=!0,i.addCssClass(this.container,"ace_editor"),this.setTheme(t),this.$gutter=i.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),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,500),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.$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;if(!e)return;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),this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode)},this.updateLines=function(e,t){t===undefined&&(t=Infinity),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRowthis.layerConfig.lastRow||this.$changedLines.lastRow2)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.$updateCachedSize=function(e,t,n,r){r-=this.$extraHeight||0;var i=0,s=this.$size,o={width:s.width,height:s.height,scrollerHeight:s.scrollerHeight,scrollerWidth:s.scrollerWidth};r&&(e||s.height!=r)&&(s.height=r,i|=this.CHANGE_SIZE,s.scrollerHeight=s.height,this.$horizScroll&&(s.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",i|=this.CHANGE_SCROLL);if(n&&(e||s.width!=n)){i|=this.CHANGE_SIZE,s.width=n,t==null&&(t=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=t,this.scrollBarH.element.style.left=this.scroller.style.left=t+"px",s.scrollerWidth=Math.max(0,n-t-this.scrollBarV.getWidth()),this.scrollBarH.element.style.right=this.scroller.style.right=this.scrollBarV.getWidth()+"px",this.scroller.style.bottom=this.scrollBarH.getHeight()+"px";if(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)i|=this.CHANGE_FULL}return s.$dirty=!n||!r,i&&this._signal("resize",o),i},this.onGutterResize=function(){var e=this.$showGutter?this.$gutter.offsetWidth:0;e!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,e,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.$loop.schedule(this.CHANGE_MARKER))},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.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.$updateGutterLineHighlight=function(){var e=this.$cursorLayer.$pixelPos,t=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var n=this.session.selection.getCursor();n.column=0,e=this.$cursorLayer.getPixelPosition(n,!0),t*=this.session.getRowLength(n.row)}this.$gutterLineHighlight.style.top=e.top-this.layerConfig.offset+"px",this.$gutterLineHighlight.style.height=t+"px"},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=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.content},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(!this.$keepTextAreaAtCursor)return;var e=this.layerConfig,t=this.$cursorLayer.$pixelPos.top,n=this.$cursorLayer.$pixelPos.left;t-=e.offset;var r=this.lineHeight;if(t<0||t>e.height-r)return;var i=this.characterWidth;if(this.$composition){var s=this.textarea.value.replace(/^\x01+/,"");i*=this.session.$getStringScreenWidth(s)[0]+2,r+=2,t-=1}n-=this.scrollLeft,n>this.$size.scrollerWidth-i&&(n=this.$size.scrollerWidth-i),n-=this.scrollBar.width,this.textarea.style.height=r+"px",this.textarea.style.width=i+"px",this.textarea.style.right=Math.max(0,this.$size.scrollerWidth-n-i)+"px",this.textarea.style.bottom=Math.max(0,this.$size.height-t-r)+"px"},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=Math.floor((this.layerConfig.height+this.layerConfig.offset)/this.layerConfig.lineHeight);return this.layerConfig.firstRow-1+e},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.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(e){this.setOption("hScrollBarAlwaysVisible",e)},this.getVScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(e){this.setOption("vScrollBarAlwaysVisible",e)},this.$updateScrollBarV=function(){this.scrollBarV.setScrollHeight(this.layerConfig.maxHeight+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");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(),n=this.layerConfig,this.$updateScrollBarV(),e&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),this.$gutterLayer.element.style.marginTop=-n.offset+"px",this.content.style.marginTop=-n.offset+"px",this.content.style.width=n.width+2*this.$padding+"px",this.content.style.height=n.minHeight+"px";e&this.CHANGE_H_SCROLL&&(this.content.style.marginLeft=-this.scrollLeft+"px",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.$highlightGutterLine&&this.$updateGutterLineHighlight(),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&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),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.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),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.max((this.$minLines||1)*this.lineHeight,Math.min(t,e))+this.scrollMargin.v+(this.$extraHeight||0),r=e>t;if(n!=this.desiredHeight||this.$size.height!=this.desiredHeight||r!=this.$vScroll){r!=this.$vScroll&&(this.$vScroll=r,this.scrollBarV.setVisible(r));var i=this.container.clientWidth;this.container.style.height=n+"px",this.$updateCachedSize(!0,this.$gutterWidth,i,n),this.desiredHeight=n}},this.$computeLayerConfig=function(){this.$maxLines&&this.lineHeight>1&&this.$autosize();var e=this.session,t=this.$size,n=t.height<=2*this.lineHeight,r=this.session.getScreenLength(),i=r*this.lineHeight,s=this.scrollTop%this.lineHeight,o=t.scrollerHeight+this.lineHeight,u=this.$getLongestLine(),a=!n&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-u-2*this.$padding<0),f=this.$horizScroll!==a;f&&(this.$horizScroll=a,this.scrollBarH.setVisible(a)),!this.$maxLines&&this.$scrollPastEnd&&this.scrollTop>i-t.scrollerHeight&&(i+=Math.min((t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd,this.scrollTop-i+t.scrollerHeight));var l=!n&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-i<0),c=this.$vScroll!==l;c&&(this.$vScroll=l,this.scrollBarV.setVisible(l)),this.session.setScrollTop(Math.max(-this.scrollMargin.top,Math.min(this.scrollTop,i-t.scrollerHeight+this.scrollMargin.bottom))),this.session.setScrollLeft(Math.max(-this.scrollMargin.left,Math.min(this.scrollLeft,u+2*this.$padding-t.scrollerWidth+this.scrollMargin.right)));var h=Math.ceil(o/this.lineHeight)-1,p=Math.max(0,Math.round((this.scrollTop-s)/this.lineHeight)),d=p+h,v,m,g=this.lineHeight;p=e.screenToDocumentRow(p,0);var y=e.getFoldLine(p);y&&(p=y.start.row),v=e.documentToScreenRow(p,0),m=e.getRowLength(p)*g,d=Math.min(e.screenToDocumentRow(d,0),e.getLength()-1),o=t.scrollerHeight+e.getRowLength(d)*g+m,s=this.scrollTop-v*g;var b=0;this.layerConfig.width!=u&&(b=this.CHANGE_H_SCROLL);if(f||c)b=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal("scrollbarVisibilityChanged"),c&&(u=this.$getLongestLine());return this.layerConfig={width:u,padding:this.$padding,firstRow:p,firstRowScreen:v,lastRow:d,lineHeight:g,characterWidth:this.characterWidth,minHeight:o,maxHeight:i,offset:s,gutterOffset:Math.max(0,Math.ceil((s+t.height-t.scrollerHeight)/g)),height:this.$size.scrollerHeight},b},this.$updateLines=function(){var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var n=this.layerConfig;if(e>n.lastRow+1)return;if(ts?(t&&(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-(this.$size.scrollerHeight-this.lineHeight)*this.$scrollPastEnd<-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=this.scroller.getBoundingClientRect(),r=(e+this.scrollLeft-n.left-this.$padding)/this.characterWidth,i=Math.floor((t+this.scrollTop-n.top)/this.lineHeight),s=Math.round(r);return{row:i,column:s,side:r-s>0?1:-1}},this.screenToTextCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=Math.round((e+this.scrollLeft-n.left-this.$padding)/this.characterWidth),i=(t+this.scrollTop-n.top)/this.lineHeight;return this.session.screenToDocumentPosition(i,Math.max(r,0))},this.textToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=this.session.documentToScreenPosition(e,t),i=this.$padding+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||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,i.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor()},this.setCompositionText=function(e){this.$moveTextAreaToCursor()},this.hideComposition=function(){if(!this.$composition)return;i.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null},this.setTheme=function(e,t){function o(r){if(n.$themeId!=e)return t&&t();if(!r.cssClass)return;i.importCssString(r.cssText,r.cssClass,n.container.ownerDocument),n.theme&&i.removeCssClass(n.container,n.theme.cssClass);var s="padding"in r?r.padding:"padding"in(n.theme||{})?4:n.$padding;n.$padding&&s!=n.$padding&&n.setPadding(s),n.$theme=r.cssClass,n.theme=r,i.addCssClass(n.container,r.cssClass),i.setCssClass(n.container,"ace_dark",r.isDark),n.$size&&(n.$size.width=0,n.$updateSizeAsync()),n._dispatchEvent("themeLoaded",{theme:r}),t&&t()}var n=this;this.$themeId=e,n._dispatchEvent("themeChange",{theme:e});if(!e||typeof e=="string"){var r=e||this.$options.theme.initialValue;s.loadModule(["theme",r],o)}else o(e)},this.getTheme=function(){return this.$themeId},this.setStyle=function(e,t){i.setCssClass(this.container,e,t!==!1)},this.unsetStyle=function(e){i.removeCssClass(this.container,e)},this.setCursorStyle=function(e){this.content.style.cursor!=e&&(this.content.style.cursor=e)},this.setMouseCursor=function(e){this.content.style.cursor=e},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(m.prototype),s.defineOptions(m.prototype,"renderer",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(e){this.$textLayer.setShowInvisibles(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(e){typeof e=="number"&&(this.$printMarginColumn=e),this.$showPrintMargin=!!e,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(e){this.$gutter.style.display=e?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(e){i.setCssClass(this.$gutter,"ace_fade-fold-widgets",e)},initialValue:!1},showFoldWidgets:{set:function(e){this.$gutterLayer.setShowFoldWidgets(e)},initialValue:!0},showLineNumbers:{set:function(e){this.$gutterLayer.setShowLineNumbers(e),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(e){this.$textLayer.setDisplayIndentGuides(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(e){if(!this.$gutterLineHighlight){this.$gutterLineHighlight=i.createElement("div"),this.$gutterLineHighlight.className="ace_gutter-active-line",this.$gutter.appendChild(this.$gutterLineHighlight);return}this.$gutterLineHighlight.style.display=e?"":"none",this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight()},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(e){(!this.$hScrollBarAlwaysVisible||!this.$horizScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(e){(!this.$vScrollBarAlwaysVisible||!this.$vScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(e){typeof e=="number"&&(e+="px"),this.container.style.fontSize=e,this.updateFontSize()},initialValue:12},fontFamily:{set:function(e){this.container.style.fontFamily=e,this.updateFontSize()}},maxLines:{set:function(e){this.updateFull()}},minLines:{set:function(e){this.updateFull()}},scrollPastEnd:{set:function(e){e=+e||0;if(this.$scrollPastEnd==e)return;this.$scrollPastEnd=e,this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(e){this.$gutterLayer.$fixedWidth=!!e,this.$loop.schedule(this.CHANGE_GUTTER)}},theme:{set:function(e){this.setTheme(e)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0}}),t.VirtualRenderer=m}),ace.define("ace/config",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/lib/net","ace/lib/event_emitter"],function(e,t,n){"no use strict";function f(r){a.packaged=r||e.packaged||n.packaged||u.define&&define.packaged;if(!u.document)return"";var i={},s="",o=document.getElementsByTagName("script");for(var f=0;f1&&(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(!0),t.init=f;var c={setOptions:function(e){Object.keys(e).forEach(function(t){this.setOption(t,e[t])},this)},getOptions:function(e){var t={};return e?Array.isArray(e)||(t=e,e=Object.keys(t)):e=Object.keys(this.$options),e.forEach(function(e){t[e]=this.getOption(e)},this),t},setOption:function(e,t){if(this["$"+e]===t)return;var n=this.$options[e];if(!n)return typeof console!="undefined"&&console.warn&&console.warn('misspelled option "'+e+'"'),undefined;if(n.forwardTo)return this[n.forwardTo]&&this[n.forwardTo].setOption(e,t);n.handlesSet||(this["$"+e]=t),n&&n.set&&n.set.call(this,t)},getOption:function(e){var t=this.$options[e];return t?t.forwardTo?this[t.forwardTo]&&this[t.forwardTo].getOption(e):t&&t.get?t.get.call(this):this["$"+e]:(typeof console!="undefined"&&console.warn&&console.warn('misspelled option "'+e+'"'),undefined)}},h={};t.defineOptions=function(e,t,n){return e.$options||(h[t]=e.$options={}),Object.keys(n).forEach(function(t){var r=n[t];typeof r=="string"&&(r={forwardTo:r}),r.name||(r.name=t),e.$options[r.name]=r,"initialValue"in r&&(e["$"+r.name]=r.initialValue)}),i.implement(e,c),this},t.resetOptions=function(e){Object.keys(e.$options).forEach(function(t){var n=e.$options[t];"value"in n&&e.setOption(t,n.value)})},t.setDefaultValue=function(e,n,r){var i=h[e]||(h[e]={});i[n]&&(i.forwardTo?t.setDefaultValue(i.forwardTo,n,r):i[n].value=r)},t.setDefaultValues=function(e,n){Object.keys(n).forEach(function(r){t.setDefaultValue(e,r,n[r])})}}),ace.define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],function(e,t,n){var r=e("../lib/dom"),i=e("../lib/oop"),s=e("../lib/lang"),o=e("../lib/event_emitter").EventEmitter,u=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_gutter-layer",e.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this),this.$cells=[]};(function(){i.implement(this,o),this.setSession=function(e){this.session&&this.session.removeEventListener("change",this.$updateAnnotations),this.session=e,e.on("change",this.$updateAnnotations)},this.addGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.addGutterDecoration"),this.session.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.removeGutterDecoration"),this.session.removeGutterDecoration(e,t)},this.setAnnotations=function(e){this.$annotations=[];for(var t=0;to&&(v=s.end.row+1,s=t.getNextFoldLine(v,s),o=s?s.start.row:Infinity);if(v>i){while(this.$cells.length>d+1)p=this.$cells.pop(),this.element.removeChild(p.element);break}p=this.$cells[++d],p||(p={element:null,textNode:null,foldWidget:null},p.element=r.createElement("div"),p.textNode=document.createTextNode(""),p.element.appendChild(p.textNode),this.element.appendChild(p.element),this.$cells[d]=p);var m="ace_gutter-cell ";a[v]&&(m+=a[v]),f[v]&&(m+=f[v]),this.$annotations[v]&&(m+=this.$annotations[v].className),p.element.className!=m&&(p.element.className=m);var g=t.getRowLength(v)*e.lineHeight+"px";g!=p.element.style.height&&(p.element.style.height=g);if(u){var y=u[v];y==null&&(y=u[v]=t.getFoldWidget(v))}if(y){p.foldWidget||(p.foldWidget=r.createElement("span"),p.element.appendChild(p.foldWidget));var m="ace_fold-widget ace_"+y;y=="start"&&v==o&&vn.right-t.right)return"foldWidgets"}}).call(u.prototype),t.Gutter=u}),ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,n){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.$blockScrolling+=1,t.moveCursorToPosition(e),t.$blockScrolling-=1,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),v=setInterval(C,20),y=0,i.addListener(document,"mousemove",O)}function L(){clearInterval(v),t.session.removeMarker(h),h=null,t.$blockScrolling+=1,t.selection.fromOrientedRange(m),t.$blockScrolling-=1,t.isFocused()&&!w&&t.renderer.$cursorLayer.setBlinking(!t.getReadOnly()),m=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._top=n.offsetTop),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.onDragEnter=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return h||k(),y++,e.dataTransfer.dropEffect=b=_(e),i.preventDefault(e)},this.onDragOver=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return h||(k(),y++),A!==null&&(A=null),p=e.clientX,d=e.clientY,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(!h)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/exchange"),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.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var e=this.editor.container;e.draggable=!0,this.editor.renderer.$cursorLayer.setBlinking(!1),this.editor.setStyle("ace_dragging"),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}),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,t,n){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(){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.update=function(e){var e=e||this.config;if(!e)return;this.config=e;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 s=r.range.clipRows(e.firstRow,e.lastRow);if(s.isEmpty())continue;s=s.toScreenRange(this.session);if(r.renderer){var o=this.$getTop(s.start.row,e),u=this.$padding+s.start.column*e.characterWidth;r.renderer(t,s,u,o,e)}else r.type=="fullLine"?this.drawFullLineMarker(t,s,r.clazz,e):r.type=="screenLine"?this.drawScreenLineMarker(t,s,r.clazz,e):s.isMultiLine()?r.type=="text"?this.drawTextMarker(t,s,r.clazz,e):this.drawMultiLineMarker(t,s,r.clazz,e):this.drawSingleLineMarker(t,s,r.clazz+" ace_start",e)}this.element=i.setInnerHtml(this.element,t.join(""))},this.$getTop=function(e,t){return(e-t.firstRowScreen)*t.lineHeight},this.drawTextMarker=function(e,t,n,i,s){var o=t.start.row,u=new r(o,t.start.column,o,this.session.getScreenLastRowColumn(o));this.drawSingleLineMarker(e,u,n+" ace_start",i,1,s),o=t.end.row,u=new r(o,0,o,t.end.column),this.drawSingleLineMarker(e,u,n,i,0,s);for(o=t.start.row+1;o"),u=this.$getTop(t.end.row,r);var f=t.end.column*r.characterWidth;e.push("
"),o=(t.end.row-t.start.row-1)*r.lineHeight;if(o<0)return;u=this.$getTop(t.start.row+1,r),e.push("
")},this.drawSingleLineMarker=function(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;e.push("
")},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),e.push("
")},this.drawScreenLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;e.push("
")}}).call(s.prototype),t.Marker=s}),ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,n){var r=e("../lib/exchange"),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)}),ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","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/useragent"),u=e("../lib/event_emitter").EventEmitter,a=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this)};(function(){r.implement(this,u),this.EOF_CHAR="\xb6",this.EOL_CHAR_LF="\xac",this.EOL_CHAR_CRLF="\xa4",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="\u2192",this.SPACE_CHAR="\xb7",this.$padding=0,this.$updateEolChar=function(){var e=this.session.doc.getNewLineCharacter()=="\n"?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=e)return this.EOL_CHAR=e,!0},this.setPadding=function(e){this.$padding=e,this.element.style.padding="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,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;n"+this.TAB_CHAR+s.stringRepeat("\xa0",n-1)+""):t.push(s.stringRepeat("\xa0",n));if(this.displayIndentGuides){this.$indentGuideRe=/\s\S| \t|\t |\s$/;var r="ace_indent-guide";if(this.showInvisibles){r+=" ace_invisible";var i=s.stringRepeat(this.SPACE_CHAR,this.tabSize),o=this.TAB_CHAR+s.stringRepeat("\xa0",this.tabSize-1)}else var i=s.stringRepeat("\xa0",this.tabSize),o=i;this.$tabStrings[" "]=""+i+"",this.$tabStrings[" "]=""+o+""}},this.updateLines=function(e,t,n){(this.config.lastRow!=e.lastRow||this.config.firstRow!=e.firstRow)&&this.scrollLines(e),this.config=e;var r=Math.max(t,e.firstRow),s=Math.min(n,e.lastRow),o=this.element.childNodes,u=0;for(var a=e.firstRow;al&&(a=f.end.row+1,f=this.session.getNextFoldLine(a,f),l=f?f.start.row:Infinity);if(a>s)break;var c=o[u++];if(c){var h=[];this.$renderLine(h,a,!this.$useLineGroups(),a==l?f:!1),c.style.height=e.lineHeight*this.session.getRowLength(a)+"px",i.setInnerHtml(c,h.join(""))}a++}},this.scrollLines=function(e){var t=this.config;this.config=e;if(!t||t.lastRow0;r--)n.removeChild(n.firstChild);if(t.lastRow>e.lastRow)for(var r=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);r>0;r--)n.removeChild(n.lastChild);if(e.firstRowt.lastRow){var i=this.$renderLinesFragment(e,t.lastRow+1,e.lastRow);n.appendChild(i)}},this.$renderLinesFragment=function(e,t,n){var r=this.element.ownerDocument.createDocumentFragment(),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=i.createElement("div"),f=[];this.$renderLine(f,s,!1,s==u?o:!1),a.innerHTML=f.join("");if(this.$useLineGroups())a.className="ace_line_group",r.appendChild(a),a.style.height=e.lineHeight*this.session.getRowLength(s)+"px";else while(a.firstChild)r.appendChild(a.firstChild);s++}return r},this.update=function(e){this.config=e;var t=[],n=e.firstRow,r=e.lastRow,s=n,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>r)break;this.$useLineGroups()&&t.push("
"),this.$renderLine(t,s,!1,s==u?o:!1),this.$useLineGroups()&&t.push("
"),s++}this.element=i.setInnerHtml(this.element,t.join(""))},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,n,r){var i=this,o=/\t|&|<|( +)|([\x00-\x1f\x80-\xa0\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\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]/g,u=function(e,n,r,o,u){if(n)return i.showInvisibles?""+s.stringRepeat(i.SPACE_CHAR,e.length)+"":s.stringRepeat("\xa0",e.length);if(e=="&")return"&";if(e=="<")return"<";if(e==" "){var a=i.session.getScreenTabSize(t+o);return t+=a-1,i.$tabStrings[a]}if(e=="\u3000"){var f=i.showInvisibles?"ace_cjk ace_invisible":"ace_cjk",l=i.showInvisibles?i.SPACE_CHAR:"";return t+=1,""+l+""}return r?""+i.SPACE_CHAR+"":(t+=1,""+e+"")},a=r.replace(o,u);if(!this.$textToken[n.type]){var f="ace_"+n.type.replace(/\./g," ace_"),l="";n.type=="fold"&&(l=" style='width:"+n.value.length*this.config.characterWidth+"px;' "),e.push("",a,"")}else e.push(a);return t+r.length},this.renderIndentGuide=function(e,t,n){var r=t.search(this.$indentGuideRe);return r<=0||r>=n?t:t[0]==" "?(r-=r%this.tabSize,e.push(s.stringRepeat(this.$tabStrings[" "],r/this.tabSize)),t.substr(r)):t[0]==" "?(e.push(s.stringRepeat(this.$tabStrings[" "],r)),t.substr(r)):t},this.$renderWrappedLine=function(e,t,n,r){var i=0,s=0,o=n[0],u=0;for(var a=0;a=o)u=this.$renderToken(e,u,f,l.substring(0,o-i)),l=l.substring(o-i),i=o,r||e.push("","
"),s++,u=0,o=n[s]||Number.MAX_VALUE;l.length!=0&&(i+=l.length,u=this.$renderToken(e,u,f,l))}}},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;s");if(i.length){var s=this.session.getRowSplitData(t);s&&s.length?this.$renderWrappedLine(e,i,s,n):this.$renderSimpleLine(e,i)}this.showInvisibles&&(r&&(t=r.end.row),e.push("",t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"")),n||e.push("
")},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(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(a.prototype),t.Text=a}),ace.define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"],function(e,t,n){function s(e){this.isOpen=!1,this.$element=null,this.$parentNode=e}var r=e("./lib/oop"),i=e("./lib/dom");(function(){this.$init=function(){return this.$element=i.createElement("div"),this.$element.className="ace_tooltip",this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},this.getElement=function(){return this.$element||this.$init()},this.setText=function(e){i.setInnerText(this.getElement(),e)},this.setHtml=function(e){this.getElement().innerHTML=e},this.setPosition=function(e,t){this.getElement().style.left=e+"px",this.getElement().style.top=t+"px"},this.setClassName=function(e){i.addCssClass(this.getElement(),e)},this.show=function(e,t,n){e!=null&&this.setText(e),t!=null&&n!=null&&this.setPosition(t,n),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},this.hide=function(){this.isOpen&&(this.getElement().style.display="none",this.isOpen=!1)},this.getHeight=function(){return this.getElement().offsetHeight},this.getWidth=function(){return this.getElement().offsetWidth}}).call(s.prototype),t.Tooltip=s}),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t,n){var r=e("../lib/dom"),i,s=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),i===undefined&&(i="opacity"in 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.$updateVisibility.bind(this)};(function(){this.$updateVisibility=function(e){var t=this.cursors;for(var n=t.length;n--;)t[n].style.visibility=e?"":"hidden"},this.$updateOpacity=function(e){var t=this.cursors;for(var n=t.length;n--;)t[n].style.opacity=e?"":"0"},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&&!i&&(this.smoothBlinking=e,r.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.$updateCursors=(e?this.$updateOpacity:this.$updateVisibility).bind(this),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.smoothBlinking&&r.removeCssClass(this.element,"ace_smooth-blinking"),e(!0);if(!this.isBlinking||!this.blinkInterval||!this.isVisible)return;this.smoothBlinking&&setTimeout(function(){r.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));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+n.column*this.config.characterWidth,i=(n.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:r,top:i}},this.update=function(e){this.config=e;var t=this.session.$selectionMarkers,n=0,r=0;if(t===undefined||t.length===0)t=[{cursor:null}];for(var n=0,i=t.length;ne.height+e.offset||s.top<0)&&n>1)continue;var o=(this.cursors[r++]||this.addCursor()).style;o.left=s.left+"px",o.top=s.top+"px",o.width=e.characterWidth+"px",o.height=e.lineHeight+"px"}while(this.cursors.length>r)this.removeCursor();var u=this.session.getOverwrite();this.$setOverwrite(u),this.$pixelPos=s,this.restartTimer()},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(s.prototype),t.Cursor=s}),ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"],function(e,t,n){function u(e){function l(){var r=u.getDocumentPosition().row,s=n.$annotations[r];if(!s)return c();var o=t.session.getLength();if(r==o){var a=t.renderer.pixelToScreenCoordinates(0,u.y).row,l=u.$pos;if(a>t.session.documentToScreenRow(l.row,l.column))return c()}if(f==s)return;f=s.text.join("
"),i.setHtml(f),i.show(),t.on("mousewheel",c);if(e.$tooltipFollowsMouse)h(u);else{var p=n.$cells[r].element,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.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/exchange"),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}),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./lib/exchange"),o=e("./lib/event_emitter").EventEmitter,u=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}}).call(u.prototype);var a=function(e,t){u.call(this,e),this.scrollTop=0,t.$scrollbarWidth=this.width=i.scrollbarWidth(e.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px"};r.inherits(a,u),function(){this.classSuffix="-v",this.onScroll=function(){this.skipEvent||(this.scrollTop=this.element.scrollTop,this._emit("scroll",{data:this.scrollTop})),this.skipEvent=!1},this.getWidth=function(){return this.isVisible?this.width:0},this.setHeight=function(e){this.element.style.height=e+"px"},this.setInnerHeight=function(e){this.inner.style.height=e+"px"},this.setScrollHeight=function(e){this.inner.style.height=e+"px"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=this.element.scrollTop=e)}}.call(a.prototype);var f=function(e,t){u.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(f,u),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(f.prototype),t.ScrollBar=a,t.ScrollBarV=a,t.ScrollBarH=f,t.VScrollBar=a,t.HScrollBar=f}),ace.define("ace/mouse/default_handlers",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,n){function u(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));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 a(e,t,n,r){return Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2))}function f(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/dom"),i=e("../lib/exchange"),s=e("../lib/useragent"),o=0;(function(){this.onMouseDown=function(e){var t=e.inSelection(),n=e.getDocumentPosition();this.mousedownEvent=e;var r=this.editor,i=e.getButton();if(i!==0){var s=r.getSelectionRange(),o=s.isEmpty();o&&r.selection.moveToPosition(n),r.textInput.onContextMenu(e.domEvent);return}if(t&&!r.isFocused()){r.focus();if(this.$focusTimout&&!this.$clickSelection&&!r.inMultiSelectMode){this.mousedownEvent.time=Date.now(),this.setState("focusWait"),this.captureMouse(e);return}}return this.captureMouse(e),!t||this.$clickSelection||e.getShiftKey()||r.inMultiSelectMode?this.startSelect(n):t&&(this.mousedownEvent.time=Date.now(),this.startSelect(n)),e.preventDefault()},this.startSelect=function(e){e=e||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var t=this.editor,n=this.mousedownEvent.getShiftKey();n?t.selection.selectToPosition(e):this.$clickSelection||t.selection.moveToPosition(e),t.renderer.scroller.setCapture&&t.renderer.scroller.setCapture(),t.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=f(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=f(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.editor.unsetStyle("ace_selecting"),this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()},this.focusWait=function(){var e=a(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=Date.now();(e>o||t-this.mousedownEvent.time>this.$focusTimout)&&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[this.state]&&this[this.state](e)},this.onTripleClick=function(e){var t=e.getDocumentPosition(),n=this.editor;this.setState("selectByLines"),this.$clickSelection=n.selection.getLineRange(t.row),this[this.state]&&this[this.state](e)},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=e.domEvent.timeStamp,n=t-(this.$lastScrollTime||0),r=this.editor,i=r.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed);if(i||n<200)return this.$lastScrollTime=t,r.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()}}).call(u.prototype),t.DefaultHandlers=u}),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t,n){var r=e("./lib/exchange"),i=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.window=t||window};(function(){this.schedule=function(e){this.changes=this.changes|e;if(!this.pending&&this.changes){this.pending=!0;var t=this;r.nextFrame(function(){t.pending=!1;var e;while(e=t.changes)t.changes=0,t.onRender(e)},this.window)}}}).call(i.prototype),t.RenderLoop=i}),ace.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){var r=e("../lib/exchange"),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){this.editor=e,new s(this),new o(this),new a(this);var t=e.renderer.getMouseEventTarget();r.addListener(t,"click",this.onMouseEvent.bind(this,"click")),r.addListener(t,"mousemove",this.onMouseMove.bind(this,"mousemove")),r.addMultiMouseDownListener(t,[300,300,250],this,"onMouseEvent"),e.renderer.scrollBarV&&(r.addMultiMouseDownListener(e.renderer.scrollBarV.inner,[300,300,250],this,"onMouseEvent"),r.addMultiMouseDownListener(e.renderer.scrollBarH.inner,[300,300,250],this,"onMouseEvent")),r.addMouseWheelListener(e.container,this.onMouseWheel.bind(this,"mousewheel"));var n=e.renderer.$gutter;r.addListener(n,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),r.addListener(n,"click",this.onMouseEvent.bind(this,"gutterclick")),r.addListener(n,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),r.addListener(n,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),r.addListener(t,"mousedown",function(t){e.focus()}),r.addListener(n,"mousedown",function(t){return e.focus(),r.preventDefault(t)})};(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.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.renderer;n.$keepTextAreaAtCursor&&(n.$keepTextAreaAtCursor=null);var s=this,o=function(e){s.x=e.clientX,s.y=e.clientY,t&&t(e),s.mouseEvent=new u(e,s.editor),s.$mouseMoved=!0},a=function(e){clearInterval(l),f(),s[s.state+"End"]&&s[s.state+"End"](e),s.$clickSelection=null,n.$keepTextAreaAtCursor==null&&(n.$keepTextAreaAtCursor=!0,n.$moveTextAreaToCursor()),s.isMousePressed=!1,s.$onCaptureMouseMove=s.releaseMouse=null,s.onMouseEvent("mouseup",e)},f=function(){s[s.state]&&s[s.state](),s.$mouseMoved=!1};if(i.isOldIE&&e.domEvent.type=="dblclick")return setTimeout(function(){a(e)});s.$onCaptureMouseMove=o,s.releaseMouse=r.capture(this.editor.container,o,a);var l=setInterval(f,20)},this.releaseMouse=null}).call(l.prototype),f.defineOptions(l.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:150},dragEnabled:{initialValue:!0},focusTimout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),t.MouseHandler=l}),ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","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_emitter").EventEmitter,u=0,a=t.FontMetrics=function(e,t){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),u||this.$testFractionalRect(),this.$measureNode.textContent=s.stringRepeat("X",u),this.$characterSize={width:0,height:0},this.checkForSizeChanges()};(function(){r.implement(this,o),this.$characterSize={width:0,height:0},this.$testFractionalRect=function(){var e=i.createElement("div");this.$setMeasureNodeStyles(e.style),e.style.width="0.2px",document.documentElement.appendChild(e);var t=e.getBoundingClientRect().width;t>0&&t<1?u=1:u=100,e.parentNode.removeChild(e)},this.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="-100px",e.visibility="hidden",e.position="fixed",e.whiteSpace="pre",e.font="inherit",e.overflow=t?"hidden":"visible"},this.checkForSizeChanges=function(){var 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.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer)return this.$pollSizeChangesTimer;var e=this;return this.$pollSizeChangesTimer=setInterval(function(){e.checkForSizeChanges()},500)},this.setPolling=function(e){e?this.$pollSizeChanges():this.$pollSizeChangesTimer&&this.$pollSizeChangesTimer},this.$measureSizes=function(){var e=this.$measureNode.getBoundingClientRect(),t={height:e.height,width:e.width/u};return t.width===0||t.height===0?null:t},this.$measureCharWidth=function(e){this.$main.textContent=s.stringRepeat(e,u);var t=this.$main.getBoundingClientRect();return t.width/u},this.getCharacterWidth=function(e){var t=this.charSizes[e];return t===undefined&&(this.charSizes[e]=this.$measureCharWidth(e)/this.$characterSize.width),t},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)}}).call(a.prototype)}),ace.define("ace/keyboard/textinput",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/lib/dom","ace/lib/lang"],function(e,t,n){var r=e("../lib/exchange"),i=e("../lib/useragent"),s=e("../lib/dom"),o=e("../lib/lang"),u=i.isChrome<18,a=function(e,t){function b(e){if(h)return;if(k)t=0,r=e?0:n.value.length-1;else var t=e?2:1,r=2;try{n.setSelectionRange(t,r)}catch(i){}}function w(){if(h)return;n.value=a,i.isWebKit&&y.schedule()}function F(){setTimeout(function(){p&&(n.style.cssText=p,p=""),t.renderer.$keepTextAreaAtCursor==null&&(t.renderer.$keepTextAreaAtCursor=!0,t.renderer.$moveTextAreaToCursor())},0)}var n=s.createElement("textarea");n.className="ace_text-input",i.isTouchPad&&n.setAttribute("x-palm-disable-auto-cap",!0),n.wrap="off",n.autocorrect="off",n.autocapitalize="off",n.spellcheck=!1,n.style.opacity="0",e.insertBefore(n,e.firstChild);var a="\x01\x01",f=!1,l=!1,c=!1,h=!1,p="",d=!0;try{var v=document.activeElement===n}catch(m){}r.addListener(n,"blur",function(){t.onBlur(),v=!1}),r.addListener(n,"focus",function(){v=!0,t.onFocus(),b()}),this.focus=function(){n.focus()},this.blur=function(){n.blur()},this.isFocused=function(){return v};var g=o.delayedCall(function(){v&&b(d)}),y=o.delayedCall(function(){h||(n.value=a,v&&b())});i.isWebKit||t.addEventListener("changeSelection",function(){t.selection.isEmpty()!=d&&(d=!d,g.schedule())}),w(),v&&t.onFocus();var E=function(e){return e.selectionStart===0&&e.selectionEnd===e.value.length};!n.setSelectionRange&&n.createTextRange&&(n.setSelectionRange=function(e,t){var n=this.createTextRange();n.collapse(!0),n.moveStart("character",e),n.moveEnd("character",t),n.select()},E=function(e){try{var t=e.ownerDocument.selection.createRange()}catch(n){}return!t||t.parentElement()!=e?!1:t.text==e.value});if(i.isOldIE){var S=!1,x=function(e){if(S)return;var t=n.value;if(h||!t||t==a)return;if(e&&t==a[0])return T.schedule();A(t),S=!0,w(),S=!1},T=o.delayedCall(x);r.addListener(n,"propertychange",x);var N={13:1,27:1};r.addListener(n,"keyup",function(e){h&&(!n.value||N[e.keyCode])&&setTimeout(B,0);if((n.value.charCodeAt(0)||0)<129)return T.call();h?H():P()}),r.addListener(n,"keydown",function(e){T.schedule(50)})}var C=function(e){f?f=!1:l?l=!1:E(n)?(t.selectAll(),b()):k&&b(t.selection.isEmpty())},k=null;this.setInputHandler=function(e){k=e},this.getInputHandler=function(){return k};var L=!1,A=function(e){k&&(e=k(e),k=null),c?(b(),e&&t.onPaste(e),c=!1):e==a.charAt(0)?L?t.execCommand("del",{source:"ace"}):t.execCommand("backspace",{source:"ace"}):(e.substring(0,2)==a?e=e.substr(2):e.charAt(0)==a.charAt(0)?e=e.substr(1):e.charAt(e.length-1)==a.charAt(0)&&(e=e.slice(0,-1)),e.charAt(e.length-1)==a.charAt(0)&&(e=e.slice(0,-1)),e&&t.onTextInput(e)),L&&(L=!1)},O=function(e){if(h)return;var t=n.value;A(t),w()},M=function(e){var i=t.getCopyText();if(!i){r.preventDefault(e);return}var s=e.clipboardData||window.clipboardData;if(s&&!u){var o=s.setData("Text",i);o&&(t.onCut(),r.preventDefault(e))}o||(f=!0,n.value=i,n.select(),setTimeout(function(){f=!1,w(),b(),t.onCut()}))},_=function(e){var i=t.getCopyText();if(!i){r.preventDefault(e);return}var s=e.clipboardData||window.clipboardData;if(s&&!u){var o=s.setData("Text",i);o&&(t.onCopy(),r.preventDefault(e))}o||(l=!0,n.value=i,n.select(),setTimeout(function(){l=!1,w(),b(),t.onCopy()}))},D=function(e){var s=e.clipboardData||window.clipboardData;if(s){var o=s.getData("Text");o&&t.onPaste(o),i.isIE&&setTimeout(b),r.preventDefault(e)}else n.value="",c=!0};r.addCommandKeyListener(n,t.onCommandKey.bind(t)),r.addListener(n,"select",C),r.addListener(n,"input",O),r.addListener(n,"cut",M),r.addListener(n,"copy",_),r.addListener(n,"paste",D),(!("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:_(e);break;case 86:D(e);break;case 88:M(e)}});var P=function(e){if(h||!t.onCompositionStart)return;h={},t.onCompositionStart(),setTimeout(H,0),t.on("mousedown",B),t.selection.isEmpty()||(t.insert(""),t.session.markUndoGroup(),t.selection.clearSelection()),t.session.markUndoGroup()},H=function(){if(!h||!t.onCompositionUpdate)return;var e=n.value.replace(/\x01/g,"");if(h.lastValue===e)return;t.onCompositionUpdate(e),h.lastValue&&t.undo(),h.lastValue=e;if(h.lastValue){var r=t.selection.getRange();t.insert(h.lastValue),t.session.markUndoGroup(),h.range=t.selection.getRange(),t.selection.setRange(r),t.selection.clearSelection()}},B=function(e){if(!t.onCompositionEnd)return;var r=h;h=!1;var i=setTimeout(function(){i=null;var e=n.value.replace(/\x01/g,"");if(h)return;e==r.lastValue?w():!r.lastValue&&e&&(w(),A(e))});k=function(n){return i&&clearTimeout(i),n=n.replace(/\x01/g,""),n==r.lastValue?"":(r.lastValue&&i&&t.undo(),n)},t.onCompositionEnd(),t.removeListener("mousedown",B),e.type=="compositionend"&&r.range&&t.selection.setRange(r.range)},j=o.delayedCall(H,50);r.addListener(n,"compositionstart",P),i.isGecko?r.addListener(n,"text",function(){j.schedule()}):(r.addListener(n,"keyup",function(){j.schedule()}),r.addListener(n,"keydown",function(){j.schedule()})),r.addListener(n,"compositionend",B),this.getElement=function(){return n},this.setReadOnly=function(e){n.readOnly=e},this.onContextMenu=function(e){L=!0,p||(p=n.style.cssText),n.style.cssText="z-index:100000;"+(i.isIE?"opacity:0.1;":""),b(t.selection.isEmpty()),t._emit("nativecontextmenu",{target:t,domEvent:e});var o=t.container.getBoundingClientRect(),u=s.computedStyle(t.container),a=o.top+(parseInt(u.borderTopWidth)||0),f=o.left+(parseInt(o.borderLeftWidth)||0),l=o.bottom-a-n.clientHeight,c=function(e){n.style.left=e.clientX-f-2+"px",n.style.top=Math.min(e.clientY-a-2,l)+"px"};c(e);if(e.type!="mousedown")return;t.renderer.$keepTextAreaAtCursor&&(t.renderer.$keepTextAreaAtCursor=null),i.isWin&&r.capture(t.container,c,F)},this.onContextMenuClose=F;if(!i.isGecko||i.isMac){var I=function(e){t.textInput.onContextMenu(e),F()};r.addListener(t.renderer.scroller,"contextmenu",I),r.addListener(n,"contextmenu",I)}};t.TextInput=a}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,n){t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){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;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.ranges[0]&&this.fromOrientedRange(this.ranges[0])},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.selectionLead),s=this.session.documentToScreenPosition(this.selectionAnchor),o=this.rectangularRangeBlock(r,s);o.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,n){var r=[],s=e.column0)d--;if(d>0){var m=0;while(r[m].isEmpty())m++}for(var g=d;g>=m;g--)r[g].isEmpty()&&r.splice(g,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=this.session,i=this.selection,o=i.rangeList,u,a=i._eventRegistry;i._eventRegistry={};var f=new s(r);this.inVirtualSelectionMode=!0;for(var l=o.ranges.length;l--;){if(n)while(l>0&&o.ranges[l].start.row==o.ranges[l-1].end.row)l--;f.fromOrientedRange(o.ranges[l]),f.id=o.ranges[l].marker,this.selection=r.selection=f;var c=e.exec(this,t||{});u!==undefined&&(u=c),f.toOrientedRange(o.ranges[l])}f.detach(),this.selection=r.selection=i,this.inVirtualSelectionMode=!1,i._eventRegistry=a,i.mergeOverlappingRanges();var h=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),h&&h.from==h.to&&this.renderer.animateScrolling(h.from),u},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;rr.length||n.length<2||!n[1])return this.commands.exec("insertstring",this,e);for(var i=r.length;i--;){var s=r[i];s.isEmpty()||this.session.remove(s),this.session.insert(s.start,n[i])}},this.findAll=function(e,t,n){t=t||{},t.needle=e||t.needle,this.$search.set(t);var r=this.$search.findAll(this.session);if(!r.length)return 0;this.$blockScrolling+=1;var i=this.multiSelect;n||i.toSingleRange(r[0]);for(var s=r.length;s--;)i.addRange(r[s],!0);return this.$blockScrolling-=1,r.length},this.selectMoreLines=function(e,t){var n=this.selection.toOrientedRange(),r=n.cursor==n.end,s=this.session.documentToScreenPosition(n.cursor);this.selection.$desiredColumn&&(s.column=this.selection.$desiredColumn);var o=this.session.screenToDocumentPosition(s.row+e,s.column);if(!n.isEmpty())var u=this.session.documentToScreenPosition(r?n.end:n.start),a=this.session.screenToDocumentPosition(u.row+e,u.column);else var a=o;if(r){var f=i.fromPoints(o,a);f.cursor=f.start}else{var f=i.fromPoints(a,o);f.cursor=f.end}f.desiredColumn=s.column;if(!this.selection.inMultiSelectMode)this.selection.addRange(n);else if(t)var l=n.cursor;this.selection.addRange(f),l&&this.selection.substractPoint(l)},this.transposeSelections=function(e){var t=this.session,n=t.multiSelect,r=n.ranges;for(var i=r.length;i--;){var s=r[i];if(s.isEmpty()){var o=t.getWordRange(s.start.row,s.start.column);s.start.row=o.start.row,s.start.column=o.start.column,s.end.row=o.end.row,s.end.column=o.end.column}}n.mergeOverlappingRanges();var u=[];for(var i=r.length;i--;){var s=r[i];u.unshift(t.getTextRange(s))}e<0?u.unshift(u.pop()):u.push(u.shift());for(var i=r.length;i--;){var s=r[i],o=s.clone();t.replace(s,u[i]),s.start.row=o.start.row,s.start.column=o.start.column}},this.selectMore=function(e,t){var n=this.session,r=n.multiSelect,i=r.toOrientedRange();i.isEmpty()&&(i=n.getWordRange(i.start.row,i.start.column),i.cursor=e==-1?i.start:i.end,this.multiSelect.addRange(i));var s=n.getTextRange(i),o=h(n,s,e);o&&(o.cursor=e==-1?o.start:o.end,this.$blockScrolling+=1,this.session.unfold(o),this.multiSelect.addRange(o),this.$blockScrolling-=1,this.renderer.scrollCursorIntoView(null,.5)),t&&this.multiSelect.substractPoint(i.cursor)},this.alignCursors=function(){var e=this.session,t=e.multiSelect,n=t.ranges;if(!n.length){var r=this.selection.getRange(),s=r.start.row,o=r.end.row,u=s==o;if(u){var f=this.session.getLength(),l;do l=this.session.getLine(o);while(/[=:]/.test(l)&&++o0);s<0&&(s=0),o>=f&&(o=f-1)}var c=this.session.doc.removeLines(s,o);c=this.$reAlignText(c,u),this.session.doc.insert({row:s,column:0},c.join("\n")+"\n"),u||(r.start.column=0,r.end.column=c[c.length-1].length),this.selection.setRange(r)}else{var h=-1,p=n.filter(function(e){if(e.cursor.row==h)return!0;h=e.cursor.row});t.$onRemoveRange(p);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.multiSelect||(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t.multiSelect;var n=e.oldSession;n&&(n.multiSelect.removeEventListener("addRange",this.$onAddRange),n.multiSelect.removeEventListener("removeRange",this.$onRemoveRange),n.multiSelect.removeEventListener("multiSelect",this.$onMultiSelect),n.multiSelect.removeEventListener("singleSelect",this.$onSingleSelect)),t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),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}})}),ace.define("ace/editor",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/keyboard/textinput","ace/mouse/mouse_handler","ace/mouse/fold_handler","ace/keyboard/keybinding","ace/edit_session","ace/search","ace/range","ace/lib/event_emitter","ace/commands/command_manager","ace/commands/default_commands","ace/config"],function(e,t,n){e("./lib/fixoldbrowsers");var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./lib/lang"),o=e("./lib/useragent"),u=e("./keyboard/textinput").TextInput,a=e("./mouse/mouse_handler").MouseHandler,f=e("./mouse/fold_handler").FoldHandler,l=e("./keyboard/keybinding").KeyBinding,c=e("./edit_session").EditSession,h=e("./search").Search,p=e("./range").Range,d=e("./lib/event_emitter").EventEmitter,v=e("./commands/command_manager").CommandManager,m=e("./commands/default_commands").commands,g=e("./config"),y=function(e,t){var n=e.getContainerElement();this.container=n,this.renderer=e,this.commands=new v(o.isMac?"mac":"win",m),this.textInput=new u(e.getTextAreaContainer(),this),this.renderer.textarea=this.textInput.getElement(),this.keyBinding=new l(this),this.$mouseHandler=new a(this),new f(this),this.$blockScrolling=0,this.$search=(new h).set({wrap:!0}),this.$historyTracker=this.$historyTracker.bind(this),this.commands.on("exec",this.$historyTracker),this.$initOperationListeners(),this._$emitInputEvent=s.delayedCall(function(){this._signal("input",{}),this.session.bgTokenizer&&this.session.bgTokenizer.scheduleStart()}.bind(this)),this.on("change",function(e,t){t._$emitInputEvent.schedule(31)}),this.setSession(t||new c("")),g.resetOptions(this),g._signal("editor",this)};(function(){r.implement(this,d),this.$initOperationListeners=function(){function e(e){return e[e.length-1]}this.selections=[],this.commands.on("exec",function(t){this.startOperation(t);var n=t.command;if(n.aceCommandGroup=="fileJump"){var r=this.prevOp;if(!r||r.command.aceCommandGroup!="fileJump")this.lastFileJumpPos=e(this.selections)}else this.lastFileJumpPos=null}.bind(this),!0),this.commands.on("afterExec",function(e){var t=e.command;t.aceCommandGroup=="fileJump"&&this.lastFileJumpPos&&!this.curOp.selectionChanged&&this.selection.fromJSON(this.lastFileJumpPos),this.endOperation(e)}.bind(this),!0),this.$opResetTimer=s.delayedCall(this.endOperation.bind(this)),this.on("change",function(){this.curOp||this.startOperation(),this.curOp.docChanged=!0}.bind(this),!0),this.on("changeSelection",function(){this.curOp||this.startOperation(),this.curOp.selectionChanged=!0}.bind(this),!0)},this.curOp=null,this.prevOp={},this.startOperation=function(e){if(this.curOp){if(!e||this.curOp.command)return;this.prevOp=this.curOp}e||(this.previousCommand=null,e={}),this.$opResetTimer.schedule(),this.curOp={command:e.command||{},args:e.args,scrollTop:this.renderer.scrollTop};var t=this.curOp.command;t&&t.scrollIntoView&&this.$blockScrolling++,this.selections.push(this.selection.toJSON())},this.endOperation=function(){if(this.curOp){var e=this.curOp.command;if(e&&e.scrollIntoView){this.$blockScrolling--;switch(e.scrollIntoView){case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var t=this.selection.getRange(),n=this.renderer.layerConfig;(t.start.row>=n.lastRow||t.end.row<=n.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead);break;default:}e.scrollIntoView=="animate"&&this.renderer.animateScrolling(this.curOp.scrollTop)}this.prevOp=this.curOp,this.curOp=null}},this.$historyTracker=function(e){if(!this.$mergeUndoDeltas)return;var t=this.prevOp,n=["backspace","del","insertstring"],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){if(!e)this.keyBinding.setKeyboardHandler(null);else if(typeof e=="string"){this.$keybindingId=e;var t=this;g.loadModule(["keybinding",e],function(n){t.$keybindingId==e&&t.keyBinding.setKeyboardHandler(n&&n.handler)})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(e)},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session==e)return;var t=this.session;if(t){this.session.removeEventListener("change",this.$onDocumentChange),this.session.removeEventListener("changeMode",this.$onChangeMode),this.session.removeEventListener("tokenizerUpdate",this.$onTokenizerUpdate),this.session.removeEventListener("changeTabSize",this.$onChangeTabSize),this.session.removeEventListener("changeWrapLimit",this.$onChangeWrapLimit),this.session.removeEventListener("changeWrapMode",this.$onChangeWrapMode),this.session.removeEventListener("onChangeFold",this.$onChangeFold),this.session.removeEventListener("changeFrontMarker",this.$onChangeFrontMarker),this.session.removeEventListener("changeBackMarker",this.$onChangeBackMarker),this.session.removeEventListener("changeBreakpoint",this.$onChangeBreakpoint),this.session.removeEventListener("changeAnnotation",this.$onChangeAnnotation),this.session.removeEventListener("changeOverwrite",this.$onCursorChange),this.session.removeEventListener("changeScrollTop",this.$onScrollTopChange),this.session.removeEventListener("changeScrollLeft",this.$onScrollLeftChange);var n=this.session.getSelection();n.removeEventListener("changeCursor",this.$onCursorChange),n.removeEventListener("changeSelection",this.$onSelectionChange)}this.session=e,e&&(this.$onDocumentChange=this.onDocumentChange.bind(this),e.addEventListener("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.addEventListener("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.addEventListener("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.addEventListener("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.addEventListener("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.addEventListener("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.addEventListener("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.addEventListener("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.addEventListener("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.addEventListener("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.addEventListener("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.addEventListener("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.addEventListener("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.addEventListener("changeScrollLeft",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.addEventListener("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.addEventListener("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()),this._signal("changeSession",{session:e,oldSession:t}),t&&t._signal("changeEditor",{oldEditor:this}),e&&e._signal("changeEditor",{editor:this})},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.findMatchingBracket(e.getCursorPosition());if(t)var n=new p(t.row,t.column,t.row,t.column+1);else if(e.session.$mode.getMatching)var n=e.session.$mode.getMatching(e.session);n&&(e.session.$bracketHighlight=e.session.addMarker(n,"ace_bracket","text"))},50)},this.focus=function(){var e=this;setTimeout(function(){e.textInput.focus()}),this.textInput.focus()},this.isFocused=function(){return this.textInput.isFocused()},this.blur=function(){this.textInput.blur()},this.onFocus=function(){if(this.$isFocused)return;this.$isFocused=!0,this.renderer.showCursor(),this.renderer.visualizeFocus(),this._emit("focus")},this.onBlur=function(){if(!this.$isFocused)return;this.$isFocused=!1,this.renderer.hideCursor(),this.renderer.visualizeBlur(),this._emit("blur")},this.$cursorChange=function(){this.renderer.updateCursor()},this.onDocumentChange=function(e){var t=e.data,n=t.range,r;n.start.row==n.end.row&&t.action!="insertLines"&&t.action!="removeLines"?r=n.end.row:r=Infinity,this.renderer.updateLines(n.start.row,r),this._signal("change",e),this.$cursorChange()},this.onTokenizerUpdate=function(e){var t=e.data;this.renderer.updateLines(t.first,t.last)},this.onScrollTopChange=function(){this.renderer.scrollToY(this.session.getScrollTop())},this.onScrollLeftChange=function(){this.renderer.scrollToX(this.session.getScrollLeft())},this.onCursorChange=function(){this.$cursorChange(),this.$blockScrolling||this.renderer.scrollCursorIntoView(),this.$highlightBrackets(),this.$updateHighlightActiveLine(),this._signal("changeSelection")},this.$updateHighlightActiveLine=function(){var e=this.getSession(),t;if(this.$highlightActiveLine){if(this.$selectionStyle!="line"||!this.selection.isMultiLine())t=this.getCursorPosition();this.renderer.$maxLines&&this.session.getLength()===1&&!(this.renderer.$minLines>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-1,r=t.end.column+1,i=e.getLine(t.start.row),s=i.length,o=i.substring(Math.max(n,0),Math.min(r,s));if(n>=0&&/^[\w\d]/.test(o)||r<=s&&/[\w\d]$/.test(o))return;o=i.substring(t.start.column,t.end.column);if(!/^[\w\d]+$/.test(o))return;var u=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:o});return u},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();return this._signal("copy",e),e},this.onCopy=function(){this.commands.exec("copy",this)},this.onCut=function(){this.commands.exec("cut",this)},this.onPaste=function(e){if(this.$readOnly)return;var t={text:e};this._signal("paste",t),this.insert(t.text,!0)},this.execCommand=function(e,t){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.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()){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){this.keyBinding.onTextInput(e)},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.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 r=new p(0,0,0,0);for(var i=e.first;i<=e.last;i++){var s=t.getLine(i);r.start.row=i,r.end.row=i,r.end.column=s.length,t.replace(r,n[i-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=o)s[u].moveBy(i,0),u--}t.fromOrientedRange(t.ranges[0]),t.rangeList.attach(this.session)}},this.$getSelectedRows=function(){var e=this.getSelectionRange().collapseRows();return{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},this.onCompositionStart=function(e){this.renderer.showComposition(this.getCursorPosition())},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);this.$blockScrolling++,t===!0?this.selection.$moveSelection(function(){this.moveCursorBy(i,0)}):t===!1&&(this.selection.moveCursorBy(i,0),this.selection.clearSelection()),this.$blockScrolling--;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.$blockScrolling+=1,this.selection.selectAll(),this.$blockScrolling-=1},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){var t=this.getCursorPosition(),n=this.session.getBracketRange(t);if(!n){n=this.find({needle:/[{}()\[\]]/g,preventScroll:!0,start:{row:t.row,column:t.column-1}});if(!n)return;var r=n.start;r.row==t.row&&Math.abs(r.column-t.column)<2&&(n=this.session.getBracketRange(r))}r=n&&n.cursor||r,r&&(e?n&&n.isEqual(this.getSelectionRange())?this.clearSelection():this.selection.selectTo(r.row,r.column):this.selection.moveTo(r.row,r.column))},this.gotoLine=function(e,t,n){this.selection.clearSelection(),this.session.unfold({row:e-1,column:t||0}),this.$blockScrolling+=1,this.exitMultiSelectMode&&this.exitMultiSelectMode(),this.moveCursorTo(e-1,t||0),this.$blockScrolling-=1,this.isRowFullyVisible(e-1)||this.scrollToLine(e-1,!0,n)},this.navigateTo=function(e,t){this.selection.moveTo(e,t)},this.navigateUp=function(e){if(this.selection.isMultiLine()&&!this.selection.isBackwards()){var t=this.selection.anchor.getPosition();return this.moveCursorToPosition(t)}this.selection.clearSelection(),this.selection.moveCursorBy(-e||-1,0)},this.navigateDown=function(e){if(this.selection.isMultiLine()&&this.selection.isBackwards()){var t=this.selection.anchor.getPosition();return this.moveCursorToPosition(t)}this.selection.clearSelection(),this.selection.moveCursorBy(e||1,0)},this.navigateLeft=function(e){if(!this.selection.isEmpty()){var t=this.getSelectionRange().start;this.moveCursorToPosition(t)}else{e=e||1;while(e--)this.selection.moveCursorLeft()}this.clearSelection()},this.navigateRight=function(e){if(!this.selection.isEmpty()){var t=this.getSelectionRange().end;this.moveCursorToPosition(t)}else{e=e||1;while(e--)this.selection.moveCursorRight()}this.clearSelection()},this.navigateLineStart=function(){this.selection.moveCursorLineStart(),this.clearSelection()},this.navigateLineEnd=function(){this.selection.moveCursorLineEnd(),this.clearSelection()},this.navigateFileEnd=function(){this.selection.moveCursorFileEnd(),this.clearSelection()},this.navigateFileStart=function(){this.selection.moveCursorFileStart(),this.clearSelection()},this.navigateWordRight=function(){this.selection.moveCursorWordRight(),this.clearSelection()},this.navigateWordLeft=function(){this.selection.moveCursorWordLeft(),this.clearSelection()},this.replace=function(e,t){t&&this.$search.set(t);var n=this.$search.find(this.session),r=0;return n?(this.$tryReplace(n,e)&&(r=1),n!==null&&(this.selection.setSelectionRange(n),this.renderer.scrollSelectionIntoView(n.start,n.end)),r):r},this.replaceAll=function(e,t){t&&this.$search.set(t);var n=this.$search.findAll(this.session),r=0;if(!n.length)return r;this.$blockScrolling+=1;var i=this.getSelectionRange();this.selection.moveTo(0,0);for(var s=n.length-1;s>=0;--s)this.$tryReplace(n[s],e)&&r++;return this.selection.setSelectionRange(i),this.$blockScrolling-=1,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.$blockScrolling+=1,this.session.unfold(e),this.selection.setSelectionRange(e),this.$blockScrolling-=1;var n=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),t!==!1&&this.renderer.animateScrolling(n)},this.undo=function(){this.$blockScrolling++,this.session.getUndoManager().undo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.$blockScrolling++,this.session.getUndoManager().redo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._signal("destroy",this)},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()){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.removeEventListener("changeSelection",s),this.renderer.removeEventListener("afterRender",u),this.renderer.removeEventListener("beforeRender",o)}},this.$resetCursorStyle=function(){var e=this.$cursorStyle||"ace",t=this.renderer.$cursorLayer;if(!t)return;t.setSmoothBlinking(e=="smooth"),t.isBlinking=!this.$readOnly&&e!="wide"}}).call(y.prototype),g.defineOptions(y.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},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)}},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",showLineNumbers:"renderer",showGutter:"renderer",displayIndentGuides:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",tabSize:"session",wrap:"session",foldStyle:"session",mode:"session"}),t.Editor=y}),ace.define("ace/mouse/multi_select_handler",["require","exports","module","ace/lib/event"],function(e,t,n){function i(e,t){return e.row==t.row&&e.column==t.column}function s(e){var t=e.domEvent,n=t.altKey,s=t.shiftKey,o=e.getAccelKey(),u=e.getButton();if(e.editor.inMultiSelectMode&&u==2){e.editor.textInput.onContextMenu(e.domEvent);return}if(!o&&!n){u===0&&e.editor.inMultiSelectMode&&e.editor.exitMultiSelectMode();return}var a=e.editor,f=a.selection,l=a.inMultiSelectMode,c=e.getDocumentPosition(),h=f.getCursor(),p=e.inSelection()||f.isEmpty()&&i(c,h),d=e.x,v=e.y,m=function(e){d=e.clientX,v=e.clientY},g=function(){var e=a.renderer.pixelToScreenCoordinates(d,v),t=y.screenToDocumentPosition(e.row,e.column);if(i(w,e)&&i(t,f.selectionLead))return;w=e,a.selection.moveToPosition(t),a.renderer.scrollCursorIntoView(),a.removeSelectionMarkers(x),x=f.rectangularRangeBlock(w,b),x.forEach(a.addSelectionMarker,a),a.updateSelectionMarkers()},y=a.session,b=a.renderer.pixelToScreenCoordinates(d,v),w=b;if(o&&!n&&!s&&u===0){if(!l&&p)return;if(!l){var E=f.toOrientedRange();a.addSelectionMarker(E)}var S=f.rangeList.rangeAtPoint(c);a.$blockScrolling++,a.once("mouseup",function(){var e=f.toOrientedRange();S&&e.isEmpty()&&i(S.cursor,e.cursor)?f.substractPoint(e.cursor):(E&&(a.removeSelectionMarker(E),f.addRange(E)),f.addRange(e)),a.$blockScrolling--})}else if(n&&u===0){e.stop(),l&&!o?f.toSingleRange():!l&&o&&f.addRange();var x=[];s?(b=y.documentToScreenPosition(f.lead),g()):f.moveToPosition(c);var T=function(e){clearInterval(C),a.removeSelectionMarkers(x);for(var t=0;t=0)&&parseFloat(navigator.userAgent.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:|MSIE )([0-9]+[\.0-9]+)/)[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=window.controllers&&window.navigator.product==="Gecko",t.isOldGecko=t.isGecko&&parseInt((navigator.userAgent.match(/rv\:(\d+)/)||[])[1],10)<4,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.isAIR=i.indexOf("AdobeAIR")>=0,t.isIPad=i.indexOf("iPad")>=0,t.isTouchPad=i.indexOf("TouchPad")>=0}),ace.define("ace/commands/multi_select_commands",["require","exports","module","ace/keyboard/hash_handler"],function(e,t,n){t.defaultCommands=[{name:"addCursorAbove",exec:function(e){e.selectMoreLines(-1)},bindKey:{win:"Ctrl-Alt-Up",mac:"Ctrl-Alt-Up"},readonly:!0},{name:"addCursorBelow",exec:function(e){e.selectMoreLines(1)},bindKey:{win:"Ctrl-Alt-Down",mac:"Ctrl-Alt-Down"},readonly:!0},{name:"addCursorAboveSkipCurrent",exec:function(e){e.selectMoreLines(-1,!0)},bindKey:{win:"Ctrl-Alt-Shift-Up",mac:"Ctrl-Alt-Shift-Up"},readonly:!0},{name:"addCursorBelowSkipCurrent",exec:function(e){e.selectMoreLines(1,!0)},bindKey:{win:"Ctrl-Alt-Shift-Down",mac:"Ctrl-Alt-Shift-Down"},readonly:!0},{name:"selectMoreBefore",exec:function(e){e.selectMore(-1)},bindKey:{win:"Ctrl-Alt-Left",mac:"Ctrl-Alt-Left"},readonly:!0},{name:"selectMoreAfter",exec:function(e){e.selectMore(1)},bindKey:{win:"Ctrl-Alt-Right",mac:"Ctrl-Alt-Right"},readonly:!0},{name:"selectNextBefore",exec:function(e){e.selectMore(-1,!0)},bindKey:{win:"Ctrl-Alt-Shift-Left",mac:"Ctrl-Alt-Shift-Left"},readonly:!0},{name:"selectNextAfter",exec:function(e){e.selectMore(1,!0)},bindKey:{win:"Ctrl-Alt-Shift-Right",mac:"Ctrl-Alt-Shift-Right"},readonly:!0},{name:"splitIntoLines",exec:function(e){e.multiSelect.splitIntoLines()},bindKey:{win:"Ctrl-Alt-L",mac:"Ctrl-Alt-L"},readonly:!0},{name:"alignCursors",exec:function(e){e.alignCursors()},bindKey:{win:"Ctrl-Alt-A",mac:"Ctrl-Alt-A"}}],t.multiSelectCommands=[{name:"singleSelection",bindKey:"esc",exec:function(e){e.exitMultiSelectMode()},readonly:!0,isAvailable:function(e){return e&&e.inMultiSelectMode}}];var r=e("../keyboard/hash_handler").HashHandler;t.keyboardHandler=new r(t.multiSelectCommands)}),ace.define("ace/lib/oop",["require","exports","module"],function(e,t,n){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)}}),ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/config"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/event_emitter").EventEmitter,s=e("../config"),o=function(t,n,r,i){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),e.nameToUrl&&!e.toUrl&&(e.toUrl=e.nameToUrl);if(s.get("packaged")||!e.toUrl)i=i||s.moduleUrl(n,"worker");else{var o=this.$normalizePath;i=i||o(e.toUrl("ace/worker/worker.js",null,"_"));var u={};t.forEach(function(t){u[t]=o(e.toUrl(t,null,"_").replace(/(\.js)?(\?.*)?$/,""))})}try{this.$worker=new Worker(i)}catch(a){if(!(a instanceof window.DOMException))throw a;var f=this.$workerBlob(i),l=window.URL||window.webkitURL,c=l.createObjectURL(f);this.$worker=new Worker(c),l.revokeObjectURL(c)}this.$worker.postMessage({init:!0,tlns:u,module:n,classname:r}),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){r.implement(this,i),this.onMessage=function(e){var t=e.data;switch(t.type){case"log":window.console&&console.log&&console.log.apply(console,t.data);break;case"event":this._signal(t.name,{data:t.data});break;case"call":var n=this.callbacks[t.id];n&&(n(t.data),delete this.callbacks[t.id])}},this.$normalizePath=function(e){return location.host?(e=e.replace(/^[a-z]+:\/\/[^\/]+/,""),e=location.protocol+"//"+location.host+(e.charAt(0)=="/"?"":location.pathname.replace(/\/[^\/]*$/,""))+"/"+e.replace(/^[\/]+/,""),e):e},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker=null,this.$doc.removeEventListener("change",this.changeListener),this.$doc=null},this.send=function(e,t){this.$worker.postMessage({command:e,args:t})},this.call=function(e,t,n){if(n){var r=this.callbackId++;this.callbacks[r]=n,t.push(r)}this.send(e,t)},this.emit=function(e,t){try{this.$worker.postMessage({event:e,data:{data:t.data}})}catch(n){}},this.attachToDocument=function(e){this.$doc&&this.terminate(),this.$doc=e,this.call("setValue",[e.getValue()]),e.on("change",this.changeListener)},this.changeListener=function(e){this.deltaQueue?this.deltaQueue.push(e.data):(this.deltaQueue=[e.data],setTimeout(this.$sendDeltaQueue,0))},this.$sendDeltaQueue=function(){var e=this.deltaQueue;if(!e)return;this.deltaQueue=null,e.length>20&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e})},this.$workerBlob=function(e){var t="importScripts('"+e+"');";try{return new Blob([t],{type:"application/javascript"})}catch(n){var r=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder,i=new r;return i.append(t),i.getBlob("application/javascript")}}}).call(o.prototype);var u=function(e,t,n){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var r=null,o=!1,u=Object.create(i),a=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(e){a.messageBuffer.push(e),r&&(o?setTimeout(f):f())},this.setEmitSync=function(e){o=e};var f=function(){var e=a.messageBuffer.shift();e.command?r[e.command].apply(r,e.args):e.event&&u._signal(e.event,e.data)};u.postMessage=function(e){a.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})},s.loadModule(["worker",t],function(e){r=new e[n](u);while(a.messageBuffer.length)f()})};u.prototype=o.prototype,t.UIWorkerClient=u,t.WorkerClient=o}),ace.define("ace/lib/keys",["require","exports","module","ace/lib/oop"],function(e,t,n){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:".",188:",",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"}},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}();r.mixin(t,i),t.keyCodeToString=function(e){return(i[e]||String.fromCharCode(e)).toLowerCase()}}),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t,n){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,i=this.$pos;this.pos=t.createAnchor(i.row,i.column),this.markerId=n.addMarker(new r(i.row,i.column,i.row,i.column+this.length),this.mainClass,null,!1),this.pos.on("change",function(t){n.removeMarker(e.markerId),e.markerId=n.addMarker(new r(t.value.row,t.value.column,t.value.row,t.value.column+e.length),e.mainClass,null,!1)}),this.others=[],this.$others.forEach(function(n){var r=t.createAnchor(n.row,n.column);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),n.on("change",function(i){e.removeMarker(n.markerId),n.markerId=e.addMarker(new r(i.value.row,i.value.column,i.value.row,i.value.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&&n.start.column<=this.pos.column+this.length+1){var s=n.start.column-this.pos.column;this.length+=i;if(!this.session.$fromUndo){if(t.action==="insertText")for(var o=this.others.length-1;o>=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};u.row===n.start.row&&n.start.column=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};u.row===n.start.row&&n.start.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.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.pos.detach();for(var e=0;e1?(o++,o>4&&(o=1)):o=1;if(i.isIE){var n=Math.abs(e.clientX-u)>5||Math.abs(e.clientY-a)>5;n&&(o=1),o==1&&(u=e.clientX,a=e.clientY)}r[s]("mousedown",e);if(o>4)o=0;else if(o>1)return r[s](l[o],e)}),i.isOldIE&&t.addListener(e,"dblclick",function(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 s=!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[s(e)]};var u=null,a=0;t.addCommandKeyListener=function(e,n){var r=t.addListener;if(i.isOldGecko||i.isOpera&&!("KeyboardEvent"in window)){var s=null;r(e,"keydown",function(e){s=e.keyCode}),r(e,"keypress",function(e){return o(n,e,s)})}else{var a=null;r(e,"keydown",function(e){u[e.keyCode]=!0;var t=o(n,e,e.keyCode);return a=e.defaultPrevented,t}),r(e,"keypress",function(e){a&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),a=null)}),r(e,"keyup",function(e){u[e.keyCode]=null}),u||(u=Object.create(null),r(window,"focus",function(e){u=Object.create(null)}))}};if(window.postMessage&&!i.isOldIE){var f=1;t.nextTick=function(e,n){n=n||window;var r="zero-timeout-message-"+f;t.addListener(n,"message",function i(s){s.data==r&&(t.stopPropagation(s),t.removeListener(n,"message",i),e())}),n.postMessage(r,"*")}}t.nextFrame=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)}}),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(e,t,n){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)}),ace.define("ace/lib/dom",["require","exports","module"],function(e,t,n){if(typeof document=="undefined")return;var r="http://www.w3.org/1999/xhtml";t.getDocumentHead=function(e){return e||(e=document),e.head||e.getElementsByTagName("head")[0]||e.documentElement},t.createElement=function(e,t){return document.createElementNS?document.createElementNS(t||r,e):document.createElement(e)},t.hasCssClass=function(e,t){var n=e.className.split(/\s+/g);return n.indexOf(t)!==-1},t.addCssClass=function(e,n){t.hasCssClass(e,n)||(e.className+=" "+n)},t.removeCssClass=function(e,t){var n=e.className.split(/\s+/g);for(;;){var r=n.indexOf(t);if(r==-1)break;n.splice(r,1)}e.className=n.join(" ")},t.toggleCssClass=function(e,t){var n=e.className.split(/\s+/g),r=!0;for(;;){var i=n.indexOf(t);if(i==-1)break;r=!1,n.splice(i,1)}return r&&n.push(t),e.className=n.join(" "),r},t.setCssClass=function(e,n,r){r?t.addCssClass(e,n):t.removeCssClass(e,n)},t.hasCssString=function(e,t){var n=0,r;t=t||document;if(t.createStyleSheet&&(r=t.styleSheets)){while(n0||-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;n1&&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})}),ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(e,t,n){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-1?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("ace/line_widgets").LineWidgets,i=e("ace/lib/dom"),s=e("ace/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.lineWidgets&&n.lineWidgets[o];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")},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; }","")}),ace.define("ace/lib/fixoldbrowsers",["require","exports","module","ace/lib/regexp","ace/lib/es5-shim"],function(e,t,n){e("./regexp"),e("./es5-shim")}),ace.define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(e,t,n){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.detach=this.detach.bind(this),this.session.on("change",this.updateOnChange)}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&&(e+=t.rowCount)}),e},this.attach=function(e){e.widgetManager&&e.widgetManager!=this&&e.widgetManager.detach();if(this.editor==e)return;this.detach(),this.editor=e,this.editor.on("changeSession",this.detach),e.widgetManager=this,e.setOption("enableLineWidgets",!0),e.renderer.on("beforeRender",this.measureWidgets),e.renderer.on("afterRender",this.renderWidgets)},this.detach=function(e){if(e&&e.session==this.session)return;var t=this.editor;if(!t)return;t.off("changeSession",this.detach),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.updateOnChange=function(e){var t=this.session.lineWidgets;if(!t)return;var n=e.data,r=n.range,i=r.start.row,s=r.end.row-i;if(s!==0)if(n.action=="removeText"||n.action=="removeLines"){var o=t.splice(i+1,s);o.forEach(function(e){e&&this.removeLineWidget(e)},this),this.$updateRows()}else{var u=new Array(s);u.unshift(i,0),t.splice.apply(t,u),this.$updateRows()}},this.$updateRows=function(){var e=this.session.lineWidgets;if(!e)return;var t=!0;e.forEach(function(e,n){e&&(t=!1,e.row=n)}),t&&(this.session.lineWidgets=null)},this.addLineWidget=function(e){this.session.lineWidgets||(this.session.lineWidgets=new Array(this.session.getLength())),this.session.lineWidgets[e.row]=e;var t=this.editor.renderer;return e.html&&!e.el&&(e.el=i.createElement("div"),e.el.innerHTML=e.html),e.el&&(i.addCssClass(e.el,"ace_lineWidgetContainer"),e.el.style.position="absolute",e.el.style.zIndex=5,t.container.appendChild(e.el),e._inDocument=!0),e.coverGutter||(e.el.style.zIndex=3),e.pixelHeight||(e.pixelHeight=e.el.offsetHeight),e.rowCount==null&&(e.rowCount=e.pixelHeight/t.layerConfig.lineHeight),this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows(),this.renderWidgets(null,t),e},this.removeLineWidget=function(e){e._inDocument=!1,e.el&&e.el.parentNode&&e.el.parentNode.removeChild(e.el);if(e.editor&&e.editor.destroy)try{e.editor.destroy()}catch(t){}this.session.lineWidgets&&(this.session.lineWidgets[e.row]=undefined),this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows()},this.onWidgetChanged=function(e){this.session._changedWidgets.push(e),this.editor&&this.editor.renderer.updateFull()},this.measureWidgets=function(e,t){var n=this.session._changedWidgets,r=t.layerConfig;if(!n||!n.length)return;var i=Infinity;for(var s=0;s0&&!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;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.fixedWidth?u.el.style.right=t.scrollBar.getWidth()+"px":u.el.style.right=""}}}).call(o.prototype),t.LineWidgets=o}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=e("./range").Range,o=e("./anchor").Anchor,u=function(e){this.$lines=[],e.length===0?this.$lines=[""]:Array.isArray(e)?this._insertLines(0,e):this.insert({row:0,column:0},e)};(function(){r.implement(this,i),this.setValue=function(e){var t=this.getLength();this.remove(new s(0,0,t,this.getLine(t-1).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new o(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){if(e.start.row==e.end.row)return this.getLine(e.start.row).substring(e.start.column,e.end.column);var t=this.getLines(e.start.row,e.end.row);t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;return e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column)),t.join(this.getNewLineCharacter())},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<0&&(e.row=0),e},this.insert=function(e,t){if(!t||t.length===0)return e;e=this.$clipPosition(e),this.getLength()<=1&&this.$detectNewLine(t);var n=this.$split(t),r=n.splice(0,1)[0],i=n.length==0?null:n.splice(n.length-1,1)[0];return e=this.insertInLine(e,r),i!==null&&(e=this.insertNewLine(e),e=this._insertLines(e.row,n),e=this.insertInLine(e,i||"")),e},this.insertLines=function(e,t){return e>=this.getLength()?this.insert({row:e,column:0},"\n"+t.join("\n")):this._insertLines(Math.max(e,0),t)},this._insertLines=function(e,t){if(t.length==0)return{row:e,column:0};while(t.length>61440){var n=this._insertLines(e,t.slice(0,61440));t=t.slice(61440),e=n.row}var r=[e,0];r.push.apply(r,t),this.$lines.splice.apply(this.$lines,r);var i=new s(e,0,e+t.length,0),o={action:"insertLines",range:i,lines:t};return this._signal("change",{data:o}),i.end},this.insertNewLine=function(e){e=this.$clipPosition(e);var t=this.$lines[e.row]||"";this.$lines[e.row]=t.substring(0,e.column),this.$lines.splice(e.row+1,0,t.substring(e.column,t.length));var n={row:e.row+1,column:0},r={action:"insertText",range:s.fromPoints(e,n),text:this.getNewLineCharacter()};return this._signal("change",{data:r}),n},this.insertInLine=function(e,t){if(t.length==0)return e;var n=this.$lines[e.row]||"";this.$lines[e.row]=n.substring(0,e.column)+t+n.substring(e.column);var r={row:e.row,column:e.column+t.length},i={action:"insertText",range:s.fromPoints(e,r),text:t};return this._signal("change",{data:i}),r},this.remove=function(e){e instanceof s||(e=s.fromPoints(e.start,e.end)),e.start=this.$clipPosition(e.start),e.end=this.$clipPosition(e.end);if(e.isEmpty())return e.start;var t=e.start.row,n=e.end.row;if(e.isMultiLine()){var r=e.start.column==0?t:t+1,i=n-1;e.end.column>0&&this.removeInLine(n,0,e.end.column),i>=r&&this._removeLines(r,i),r!=t&&(this.removeInLine(t,e.start.column,this.getLine(t).length),this.removeNewLine(e.start.row))}else this.removeInLine(t,e.start.column,e.end.column);return e.start},this.removeInLine=function(e,t,n){if(t==n)return;var r=new s(e,t,e,n),i=this.getLine(e),o=i.substring(t,n),u=i.substring(0,t)+i.substring(n,i.length);this.$lines.splice(e,1,u);var a={action:"removeText",range:r,text:o};return this._signal("change",{data:a}),r.start},this.removeLines=function(e,t){return e<0||t>=this.getLength()?this.remove(new s(e,0,t+1,0)):this._removeLines(e,t)},this._removeLines=function(e,t){var n=new s(e,0,t+1,0),r=this.$lines.splice(e,t-e+1),i={action:"removeLines",range:n,nl:this.getNewLineCharacter(),lines:r};return this._signal("change",{data:i}),r},this.removeNewLine=function(e){var t=this.getLine(e),n=this.getLine(e+1),r=new s(e,t.length,e+1,0),i=t+n;this.$lines.splice(e,2,i);var o={action:"removeText",range:r,text:this.getNewLineCharacter()};this._signal("change",{data:o})},this.replace=function(e,t){e instanceof s||(e=s.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);if(t)var n=this.insert(e.start,t);else n=e.start;return n},this.applyDeltas=function(e){for(var t=0;t=0;t--){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="insertText"?this.remove(r):n.action=="removeLines"?this._insertLines(r.start.row,n.lines):n.action=="removeText"&&this.insert(r.start,n.text)}},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i"a"})),[e]}},{regex:/}/,onMatch:function(e,t,n){return[n.length?n.shift():e]}},{regex:/\$(?:\d+|\w+)/,onMatch:e},{regex:/\$\{[\dA-Z_a-z]+/,onMatch:function(t,n,r){var i=e(t.substr(1),n,r);return r.unshift(i[0]),i},next:"snippetVar"},{regex:/\n/,token:"newline",merge:!1}],snippetVar:[{regex:"\\|"+t("\\|")+"*\\|",onMatch:function(e,t,n){n[0].choices=e.slice(1,-1).split(",")},next:"start"},{regex:"/("+t("/")+"+)/(?:("+t("/")+"*)/)(\\w*):?",onMatch:function(e,t,n){var r=n[0];return r.fmtString=e,e=this.splitRegex.exec(e),r.guard=e[1],r.fmt=e[2],r.flag=e[3],""},next:"start"},{regex:"`"+t("`")+"*`",onMatch:function(e,t,n){return n[0].code=e.splice(1,-1),""},next:"start"},{regex:"\\?",onMatch:function(e,t,n){n[0]&&(n[0].expectIf=!0)},next:"start"},{regex:"([^:}\\\\]|\\\\.)*:?",token:"",next:"start"}],formatString:[{regex:"/("+t("/")+"+)/",token:"regex"},{regex:"",onMatch:function(e,t,n){n.inFormatString=!0},next:"start"}]}),a.prototype.getTokenizer=function(){return a.$tokenizer},a.$tokenizer},this.tokenizeTmSnippet=function(e,t){return this.getTokenizer().getLineTokens(e,t).tokens.map(function(e){return e.value||e})},this.$getDefaultValue=function(e,t){if(/^[A-Z]\d+$/.test(t)){var n=t.substr(1);return(this.variables[t[0]+"__"]||{})[n]}if(/^\d+$/.test(t))return(this.variables.__||{})[t];t=t.replace(/^TM_/,"");if(!e)return;var r=e.session;switch(t){case"CURRENT_WORD":var i=r.getWordRange();case"SELECTION":case"SELECTED_TEXT":return r.getTextRange(i);case"CURRENT_LINE":return r.getLine(e.getCursorPosition().row);case"PREV_LINE":return r.getLine(e.getCursorPosition().row-1);case"LINE_INDEX":return e.getCursorPosition().column;case"LINE_NUMBER":return e.getCursorPosition().row+1;case"SOFT_TABS":return r.getUseSoftTabs()?"YES":"NO";case"TAB_SIZE":return r.getTabSize();case"FILENAME":case"FILEPATH":return"";case"FULLNAME":return"Ace"}},this.variables={},this.getVariableValue=function(e,t){return this.variables.hasOwnProperty(t)?this.variables[t](e,t)||"":this.$getDefaultValue(e,t)||""},this.tmStrFormat=function(e,t,n){var r=t.flag||"",i=t.guard;i=new RegExp(i,r.replace(/[^gi]/,""));var s=this.tokenizeTmSnippet(t.fmt,"formatString"),o=this,u=e.replace(i,function(){o.variables.__=arguments;var e=o.resolveVariables(s,n),t="E";for(var r=0;r=0&&s.splice(o,1)}}var n=this.snippetMap,r=this.snippetNameMap;e.content?i(e):Array.isArray(e)&&e.forEach(i)},this.parseSnippetFile=function(e){e=e.replace(/\r/g,"");var t=[],n={},r=/^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm,i;while(i=r.exec(e)){if(i[1])try{n=JSON.parse(i[1]),t.push(n)}catch(s){}if(i[4])n.content=i[4].replace(/^\t/gm,""),t.push(n),n={};else{var o=i[2],u=i[3];if(o=="regex"){var a=/\/((?:[^\/\\]|\\.)*)|$/g;n.guard=a.exec(u)[1],n.trigger=a.exec(u)[1],n.endTrigger=a.exec(u)[1],n.endGuard=a.exec(u)[1]}else o=="snippet"?(n.tabTrigger=u.match(/^\S*/)[0],n.name||(n.name=u)):n[o]=u}}return t},this.getSnippetByName=function(e,t){var n=this.snippetNameMap,r;return this.getActiveScopes(t).some(function(t){var i=n[t];return i&&(r=i[e]),!!r},this),r}}).call(a.prototype);var f=function(e){if(e.tabstopManager)return e.tabstopManager;e.tabstopManager=this,this.$onChange=this.onChange.bind(this),this.$onChangeSelection=r.delayedCall(this.onChangeSelection.bind(this)).schedule,this.$onChangeSession=this.onChangeSession.bind(this),this.$onAfterExec=this.onAfterExec.bind(this),this.attach(e)};(function(){this.attach=function(e){this.index=-1,this.ranges=[],this.tabstops=[],this.selectedTabstop=null,this.editor=e,this.editor.on("change",this.$onChange),this.editor.on("changeSelection",this.$onChangeSelection),this.editor.on("changeSession",this.$onChangeSession),this.editor.commands.on("afterExec",this.$onAfterExec),this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)},this.detach=function(){this.tabstops.forEach(this.removeTabstopMarkers,this),this.ranges=null,this.tabstops=null,this.selectedTabstop=null,this.editor.removeListener("change",this.$onChange),this.editor.removeListener("changeSelection",this.$onChangeSelection),this.editor.removeListener("changeSession",this.$onChangeSession),this.editor.commands.removeListener("afterExec",this.$onAfterExec),this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler),this.editor.tabstopManager=null,this.editor=null},this.onChange=function(e){var t=e.data.range,n=e.data.action[0]=="r",r=t.start,i=t.end,s=r.row,o=i.row,a=o-s,f=i.column-r.column;n&&(a=-a,f=-f);if(!this.$inChange&&n){var l=this.selectedTabstop,c=!l.some(function(e){return u(e.start,r)<=0&&u(e.end,i)>=0});if(c)return this.detach()}var h=this.ranges;for(var p=0;p0){this.removeRange(d),p--;continue}d.start.row==s&&d.start.column>r.column&&(d.start.column+=f),d.end.row==s&&d.end.column>=r.column&&(d.end.column+=f),d.start.row>=s&&(d.start.row+=a),d.end.row>=s&&(d.end.row+=a),u(d.start,d.end)>0&&this.removeRange(d)}h.length||this.detach()},this.updateLinkedFields=function(){var e=this.selectedTabstop;if(!e.hasLinkedRanges)return;this.$inChange=!0;var n=this.editor.session,r=n.getTextRange(e.firstNonLinked);for(var i=e.length;i--;){var s=e[i];if(!s.linked)continue;var o=t.snippetManager.tmStrFormat(r,s.original);n.replace(s,o)}this.$inChange=!1},this.onAfterExec=function(e){e.command&&!e.command.readOnly&&this.updateLinkedFields()},this.onChangeSelection=function(){if(!this.editor)return;var e=this.editor.selection.lead,t=this.editor.selection.anchor,n=this.editor.selection.isEmpty();for(var r=this.ranges.length;r--;){if(this.ranges[r].linked)continue;var i=this.ranges[r].contains(e.row,e.column),s=n||this.ranges[r].contains(t.row,t.column);if(i&&s)return}this.detach()},this.onChangeSession=function(){this.detach()},this.tabNext=function(e){var t=this.tabstops.length-1,n=this.index+(e||1);n=Math.min(Math.max(n,0),t),this.selectTabstop(n),n==t&&this.detach()},this.selectTabstop=function(e){var t=this.tabstops[this.index];t&&this.addTabstopMarkers(t),this.index=e,t=this.tabstops[this.index];if(!t||!t.length)return;this.selectedTabstop=t;if(!this.editor.inVirtualSelectionMode){var n=this.editor.multiSelect;n.toSingleRange(t.firstNonLinked.clone());for(var r=t.length;r--;){if(t.hasLinkedRanges&&t[r].linked)continue;n.addRange(t[r].clone(),!0)}}else this.editor.selection.setRange(t.firstNonLinked);this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)},this.addTabstops=function(e,t,n){if(!e[0]){var r=i.fromPoints(n,n);c(r.start,t),c(r.end,t),e[0]=[r],e[0].index=0}var s=this.index,o=[s,0],u=this.ranges,a=this.editor;e.forEach(function(e){for(var n=e.length;n--;){var r=e[n],s=i.fromPoints(r.start,r.end||r.start);l(s.start,t),l(s.end,t),s.original=r,s.tabstop=e,u.push(s),e[n]=s,r.fmtString?(s.linked=!0,e.hasLinkedRanges=!0):e.firstNonLinked||(e.firstNonLinked=s)}e.firstNonLinked||(e.hasLinkedRanges=!1),o.push(e),this.addTabstopMarkers(e)},this),o.push(o.splice(2,1)[0]),this.tabstops.splice.apply(this.tabstops,o)},this.addTabstopMarkers=function(e){var t=this.editor.session;e.forEach(function(e){e.markerId||(e.markerId=t.addMarker(e,"ace_snippet-marker","text"))})},this.removeTabstopMarkers=function(e){var t=this.editor.session;e.forEach(function(e){t.removeMarker(e.markerId),e.markerId=null})},this.removeRange=function(e){var t=e.tabstop.indexOf(e);e.tabstop.splice(t,1),t=this.ranges.indexOf(e),this.ranges.splice(t,1),this.editor.session.removeMarker(e.markerId)},this.keyboardHandler=new s,this.keyboardHandler.bindKeys({Tab:function(e){if(t.snippetManager&&t.snippetManager.expandWithTab(e))return;e.tabstopManager.tabNext(1)},"Shift-Tab":function(e){e.tabstopManager.tabNext(-1)},Esc:function(e){e.tabstopManager.detach()},Return:function(e){return!1}})}).call(f.prototype);var l=function(e,t){e.row==0&&(e.column+=t.column),e.row+=t.row},c=function(e,t){e.row==t.row&&(e.column-=t.column),e.row-=t.row};e("./lib/dom").importCssString(".ace_snippet-marker { -moz-box-sizing: border-box; box-sizing: border-box; background: rgba(194, 193, 208, 0.09); border: 1px dotted rgba(211, 208, 235, 0.62); position: absolute;}"),t.snippetManager=new a}),ace.define("ace/autocomplete",["require","exports","module","ace/keyboard/hash_handler","ace/autocomplete/popup","ace/autocomplete/util","ace/lib/event","ace/lib/lang","ace/snippets"],function(e,t,n){var r=e("./keyboard/hash_handler").HashHandler,i=e("./autocomplete/popup").AcePopup,s=e("./autocomplete/util"),o=e("./lib/event"),u=e("./lib/lang"),a=e("./snippets").snippetManager,f=function(){this.autoInsert=!0,this.keyboardHandler=new r,this.keyboardHandler.bindKeys(this.commands),this.blurListener=this.blurListener.bind(this),this.changeListener=this.changeListener.bind(this),this.mousedownListener=this.mousedownListener.bind(this),this.mousewheelListener=this.mousewheelListener.bind(this),this.changeTimer=u.delayedCall(function(){this.updateCompletions(!0)}.bind(this))};(function(){this.$init=function(){this.popup=new i(document.body||document.documentElement),this.popup.on("click",function(e){this.insertMatch(),e.stop()}.bind(this))},this.openPopup=function(e,t,n){this.popup||this.$init(),this.popup.setData(this.completions.filtered);var r=e.renderer;if(!n){this.popup.setRow(0),this.popup.setFontSize(e.getFontSize());var i=r.layerConfig.lineHeight,s=r.$cursorLayer.getPixelPosition(this.base,!0);s.left-=this.popup.getTextLeftOffset();var o=e.container.getBoundingClientRect();s.top+=o.top-r.layerConfig.offset,s.left+=o.left-e.renderer.scrollLeft,s.left+=r.$gutterLayer.gutterWidth,this.popup.show(s,i)}},this.detach=function(){this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler),this.editor.off("changeSelection",this.changeListener),this.editor.off("blur",this.blurListener),this.editor.off("mousedown",this.mousedownListener),this.editor.off("mousewheel",this.mousewheelListener),this.changeTimer.cancel(),this.popup&&this.popup.hide(),this.activated=!1,this.completions=this.base=null},this.changeListener=function(e){var t=this.editor.selection.lead;(t.row!=this.base.row||t.column=n?-1:t+1;break;case"start":t=0;break;case"end":t=n}this.popup.setRow(t)},this.insertMatch=function(e){e||(e=this.popup.getData(this.popup.getRow()));if(!e)return!1;if(e.completer&&e.completer.insertMatch)e.completer.insertMatch(this.editor);else{if(this.completions.filterText){var t=this.editor.selection.getAllRanges();for(var n=0,r;r=t[n];n++)r.start.column-=this.completions.filterText.length,this.editor.session.remove(r)}e.snippet?a.insertSnippet(this.editor,e.snippet):this.editor.execCommand("insertstring",e.value||e)}this.detach()},this.commands={Up:function(e){e.completer.goTo("up")},Down:function(e){e.completer.goTo("down")},"Ctrl-Up|Ctrl-Home":function(e){e.completer.goTo("start")},"Ctrl-Down|Ctrl-End":function(e){e.completer.goTo("end")},Esc:function(e){e.completer.detach()},Space:function(e){e.completer.detach(),e.insert(" ")},Return:function(e){e.completer.insertMatch()},"Shift-Return":function(e){e.completer.insertMatch(!0)},Tab:function(e){e.completer.insertMatch()},PageUp:function(e){e.completer.popup.gotoPageUp()},PageDown:function(e){e.completer.popup.gotoPageDown()}},this.gatherCompletions=function(e,t){var n=e.getSession(),r=e.getCursorPosition(),i=n.getLine(r.row),o=s.retrievePrecedingIdentifier(i,r.column);this.base=e.getCursorPosition(),this.base.column-=o.length;var u=[];return s.parForEach(e.completers,function(t,i){t.getCompletions(e,n,r,o,function(e,t){e||(u=u.concat(t)),i()})},function(){t(null,{prefix:o,matches:u})}),!0},this.showPopup=function(e){this.editor&&this.detach(),this.activated=!0,this.editor=e,e.completer!=this&&(e.completer&&e.completer.detach(),e.completer=this),e.keyBinding.addKeyboardHandler(this.keyboardHandler),e.on("changeSelection",this.changeListener),e.on("blur",this.blurListener),e.on("mousedown",this.mousedownListener),e.on("mousewheel",this.mousewheelListener),this.updateCompletions()},this.updateCompletions=function(e){if(e&&this.base&&this.completions){var t=this.editor.getCursorPosition(),n=this.editor.session.getTextRange({start:this.base,end:t});if(n==this.completions.filterText)return;this.completions.setFilter(n);if(!this.completions.filtered.length)return this.detach();this.openPopup(this.editor,n,e);return}this.gatherCompletions(this.editor,function(t,n){var r=n&&n.matches;if(!r||!r.length)return this.detach();this.completions=new l(r),this.completions.setFilter(n.prefix);var i=this.completions.filtered;if(!i.length)return this.detach();if(this.autoInsert&&i.length==1)return this.insertMatch(i[0]);this.openPopup(this.editor,n.prefix,e)}.bind(this))},this.cancelContextMenu=function(){var e=function(t){this.editor.off("nativecontextmenu",e),t&&t.domEvent&&o.stopEvent(t.domEvent)}.bind(this);setTimeout(e,10),this.editor.on("nativecontextmenu",e)}}).call(f.prototype),f.startCommand={name:"startAutocomplete",exec:function(e){e.completer||(e.completer=new f),e.completer.showPopup(e),e.completer.cancelContextMenu()},bindKey:"Ctrl-Space|Ctrl-Shift-Space|Alt-Space"};var l=function(e,t,n){this.all=e,this.filtered=e,this.filterText=t||""};(function(){this.setFilter=function(e){if(e.length>this.filterText&&e.lastIndexOf(this.filterText,0)===0)var t=this.filtered;else var t=this.all;this.filterText=e,t=this.filterCompletions(t,this.filterText),t=t.sort(function(e,t){return t.exactMatch-e.exactMatch||t.score-e.score});var n=null;t=t.filter(function(e){var t=e.value||e.caption||e.snippet;return t===n?!1:(n=t,!0)}),this.filtered=t},this.filterCompletions=function(e,t){var n=[],r=t.toUpperCase(),i=t.toLowerCase();e:for(var s=0,o;o=e[s];s++){var u=o.value||o.caption||o.snippet;if(!u)continue;var a=-1,f=0,l=0,c,h;for(var p=0;p=0?v<0||d0&&(a===-1&&(l+=10),l+=h),f|=1<o-t&&!r?(s.style.top="",s.style.bottom=o-l+"px",n.isTopdown=!1):(l+=t,s.style.top=l+"px",s.style.bottom="",n.isTopdown=!0),s.style.display="",this.renderer.$textLayer.checkForSizeChanges();var c=e.left;c+s.offsetWidth>u&&(c=u-s.offsetWidth),s.style.left=c+"px",this._signal("show"),i=null,n.isOpen=!0},n.getTextLeftOffset=function(){return this.$borderSize+this.renderer.$padding+this.$imageSize},n.$imageSize=0,n.$borderSize=1,n};f.importCssString(".ace_autocomplete.ace-tm .ace_marker-layer .ace_active-line { background-color: #CAD6FA; z-index: 1;}.ace_autocomplete.ace-tm .ace_line-hover { border: 1px solid #abbffe; margin-top: -1px; background: rgba(233,233,253,0.4);}.ace_autocomplete .ace_line-hover { position: absolute; z-index: 2;}.ace_rightAlignedText { color: gray; display: inline-block; position: absolute; right: 4px; text-align: right; z-index: -1;}.ace_autocomplete .ace_completion-highlight{ color: #000; text-shadow: 0 0 0.01em;}.ace_autocomplete { width: 280px; z-index: 200000; background: #fbfbfb; color: #444; border: 1px lightgray solid; position: fixed; box-shadow: 2px 3px 5px rgba(0,0,0,.2); line-height: 1.4;}"),t.AcePopup=c}),ace.define("ace/autocomplete/util",["require","exports","module"],function(e,t,n){t.parForEach=function(e,t,n){var r=0,i=e.length;i===0&&n();for(var s=0;s=0;s--){if(!n.test(e[s]))break;i.push(e[s])}return i.reverse().join("")},t.retrieveFollowingIdentifier=function(e,t,n){n=n||r;var i=[];for(var s=t;s"a"})),[e]}},{regex:/}/,onMatch:function(e,t,n){return[n.length?n.shift():e]}},{regex:/\$(?:\d+|\w+)/,onMatch:e},{regex:/\$\{[\dA-Z_a-z]+/,onMatch:function(t,n,r){var i=e(t.substr(1),n,r);return r.unshift(i[0]),i},next:"snippetVar"},{regex:/\n/,token:"newline",merge:!1}],snippetVar:[{regex:"\\|"+t("\\|")+"*\\|",onMatch:function(e,t,n){n[0].choices=e.slice(1,-1).split(",")},next:"start"},{regex:"/("+t("/")+"+)/(?:("+t("/")+"*)/)(\\w*):?",onMatch:function(e,t,n){var r=n[0];return r.fmtString=e,e=this.splitRegex.exec(e),r.guard=e[1],r.fmt=e[2],r.flag=e[3],""},next:"start"},{regex:"`"+t("`")+"*`",onMatch:function(e,t,n){return n[0].code=e.splice(1,-1),""},next:"start"},{regex:"\\?",onMatch:function(e,t,n){n[0]&&(n[0].expectIf=!0)},next:"start"},{regex:"([^:}\\\\]|\\\\.)*:?",token:"",next:"start"}],formatString:[{regex:"/("+t("/")+"+)/",token:"regex"},{regex:"",onMatch:function(e,t,n){n.inFormatString=!0},next:"start"}]}),a.prototype.getTokenizer=function(){return a.$tokenizer},a.$tokenizer},this.tokenizeTmSnippet=function(e,t){return this.getTokenizer().getLineTokens(e,t).tokens.map(function(e){return e.value||e})},this.$getDefaultValue=function(e,t){if(/^[A-Z]\d+$/.test(t)){var n=t.substr(1);return(this.variables[t[0]+"__"]||{})[n]}if(/^\d+$/.test(t))return(this.variables.__||{})[t];t=t.replace(/^TM_/,"");if(!e)return;var r=e.session;switch(t){case"CURRENT_WORD":var i=r.getWordRange();case"SELECTION":case"SELECTED_TEXT":return r.getTextRange(i);case"CURRENT_LINE":return r.getLine(e.getCursorPosition().row);case"PREV_LINE":return r.getLine(e.getCursorPosition().row-1);case"LINE_INDEX":return e.getCursorPosition().column;case"LINE_NUMBER":return e.getCursorPosition().row+1;case"SOFT_TABS":return r.getUseSoftTabs()?"YES":"NO";case"TAB_SIZE":return r.getTabSize();case"FILENAME":case"FILEPATH":return"";case"FULLNAME":return"Ace"}},this.variables={},this.getVariableValue=function(e,t){return this.variables.hasOwnProperty(t)?this.variables[t](e,t)||"":this.$getDefaultValue(e,t)||""},this.tmStrFormat=function(e,t,n){var r=t.flag||"",i=t.guard;i=new RegExp(i,r.replace(/[^gi]/,""));var s=this.tokenizeTmSnippet(t.fmt,"formatString"),o=this,u=e.replace(i,function(){o.variables.__=arguments;var e=o.resolveVariables(s,n),t="E";for(var r=0;r=0&&s.splice(o,1)}}var n=this.snippetMap,r=this.snippetNameMap;e.content?i(e):Array.isArray(e)&&e.forEach(i)},this.parseSnippetFile=function(e){e=e.replace(/\r/g,"");var t=[],n={},r=/^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm,i;while(i=r.exec(e)){if(i[1])try{n=JSON.parse(i[1]),t.push(n)}catch(s){}if(i[4])n.content=i[4].replace(/^\t/gm,""),t.push(n),n={};else{var o=i[2],u=i[3];if(o=="regex"){var a=/\/((?:[^\/\\]|\\.)*)|$/g;n.guard=a.exec(u)[1],n.trigger=a.exec(u)[1],n.endTrigger=a.exec(u)[1],n.endGuard=a.exec(u)[1]}else o=="snippet"?(n.tabTrigger=u.match(/^\S*/)[0],n.name||(n.name=u)):n[o]=u}}return t},this.getSnippetByName=function(e,t){var n=this.snippetNameMap,r;return this.getActiveScopes(t).some(function(t){var i=n[t];return i&&(r=i[e]),!!r},this),r}}).call(a.prototype);var f=function(e){if(e.tabstopManager)return e.tabstopManager;e.tabstopManager=this,this.$onChange=this.onChange.bind(this),this.$onChangeSelection=r.delayedCall(this.onChangeSelection.bind(this)).schedule,this.$onChangeSession=this.onChangeSession.bind(this),this.$onAfterExec=this.onAfterExec.bind(this),this.attach(e)};(function(){this.attach=function(e){this.index=-1,this.ranges=[],this.tabstops=[],this.selectedTabstop=null,this.editor=e,this.editor.on("change",this.$onChange),this.editor.on("changeSelection",this.$onChangeSelection),this.editor.on("changeSession",this.$onChangeSession),this.editor.commands.on("afterExec",this.$onAfterExec),this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)},this.detach=function(){this.tabstops.forEach(this.removeTabstopMarkers,this),this.ranges=null,this.tabstops=null,this.selectedTabstop=null,this.editor.removeListener("change",this.$onChange),this.editor.removeListener("changeSelection",this.$onChangeSelection),this.editor.removeListener("changeSession",this.$onChangeSession),this.editor.commands.removeListener("afterExec",this.$onAfterExec),this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler),this.editor.tabstopManager=null,this.editor=null},this.onChange=function(e){var t=e.data.range,n=e.data.action[0]=="r",r=t.start,i=t.end,s=r.row,o=i.row,a=o-s,f=i.column-r.column;n&&(a=-a,f=-f);if(!this.$inChange&&n){var l=this.selectedTabstop,c=!l.some(function(e){return u(e.start,r)<=0&&u(e.end,i)>=0});if(c)return this.detach()}var h=this.ranges;for(var p=0;p0){this.removeRange(d),p--;continue}d.start.row==s&&d.start.column>r.column&&(d.start.column+=f),d.end.row==s&&d.end.column>=r.column&&(d.end.column+=f),d.start.row>=s&&(d.start.row+=a),d.end.row>=s&&(d.end.row+=a),u(d.start,d.end)>0&&this.removeRange(d)}h.length||this.detach()},this.updateLinkedFields=function(){var e=this.selectedTabstop;if(!e.hasLinkedRanges)return;this.$inChange=!0;var n=this.editor.session,r=n.getTextRange(e.firstNonLinked);for(var i=e.length;i--;){var s=e[i];if(!s.linked)continue;var o=t.snippetManager.tmStrFormat(r,s.original);n.replace(s,o)}this.$inChange=!1},this.onAfterExec=function(e){e.command&&!e.command.readOnly&&this.updateLinkedFields()},this.onChangeSelection=function(){if(!this.editor)return;var e=this.editor.selection.lead,t=this.editor.selection.anchor,n=this.editor.selection.isEmpty();for(var r=this.ranges.length;r--;){if(this.ranges[r].linked)continue;var i=this.ranges[r].contains(e.row,e.column),s=n||this.ranges[r].contains(t.row,t.column);if(i&&s)return}this.detach()},this.onChangeSession=function(){this.detach()},this.tabNext=function(e){var t=this.tabstops.length-1,n=this.index+(e||1);n=Math.min(Math.max(n,0),t),this.selectTabstop(n),n==t&&this.detach()},this.selectTabstop=function(e){var t=this.tabstops[this.index];t&&this.addTabstopMarkers(t),this.index=e,t=this.tabstops[this.index];if(!t||!t.length)return;this.selectedTabstop=t;if(!this.editor.inVirtualSelectionMode){var n=this.editor.multiSelect;n.toSingleRange(t.firstNonLinked.clone());for(var r=t.length;r--;){if(t.hasLinkedRanges&&t[r].linked)continue;n.addRange(t[r].clone(),!0)}}else this.editor.selection.setRange(t.firstNonLinked);this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)},this.addTabstops=function(e,t,n){if(!e[0]){var r=i.fromPoints(n,n);c(r.start,t),c(r.end,t),e[0]=[r],e[0].index=0}var s=this.index,o=[s,0],u=this.ranges,a=this.editor;e.forEach(function(e){for(var n=e.length;n--;){var r=e[n],s=i.fromPoints(r.start,r.end||r.start);l(s.start,t),l(s.end,t),s.original=r,s.tabstop=e,u.push(s),e[n]=s,r.fmtString?(s.linked=!0,e.hasLinkedRanges=!0):e.firstNonLinked||(e.firstNonLinked=s)}e.firstNonLinked||(e.hasLinkedRanges=!1),o.push(e),this.addTabstopMarkers(e)},this),o.push(o.splice(2,1)[0]),this.tabstops.splice.apply(this.tabstops,o)},this.addTabstopMarkers=function(e){var t=this.editor.session;e.forEach(function(e){e.markerId||(e.markerId=t.addMarker(e,"ace_snippet-marker","text"))})},this.removeTabstopMarkers=function(e){var t=this.editor.session;e.forEach(function(e){t.removeMarker(e.markerId),e.markerId=null})},this.removeRange=function(e){var t=e.tabstop.indexOf(e);e.tabstop.splice(t,1),t=this.ranges.indexOf(e),this.ranges.splice(t,1),this.editor.session.removeMarker(e.markerId)},this.keyboardHandler=new s,this.keyboardHandler.bindKeys({Tab:function(e){if(t.snippetManager&&t.snippetManager.expandWithTab(e))return;e.tabstopManager.tabNext(1)},"Shift-Tab":function(e){e.tabstopManager.tabNext(-1)},Esc:function(e){e.tabstopManager.detach()},Return:function(e){return!1}})}).call(f.prototype);var l=function(e,t){e.row==0&&(e.column+=t.column),e.row+=t.row},c=function(e,t){e.row==t.row&&(e.column-=t.column),e.row-=t.row};e("./lib/dom").importCssString(".ace_snippet-marker { -moz-box-sizing: border-box; box-sizing: border-box; background: rgba(194, 193, 208, 0.09); border: 1px dotted rgba(211, 208, 235, 0.62); position: absolute;}"),t.snippetManager=new a}),ace.define("ace/autocomplete",["require","exports","module","ace/keyboard/hash_handler","ace/autocomplete/popup","ace/autocomplete/util","ace/lib/event","ace/lib/lang","ace/snippets"],function(e,t,n){var r=e("./keyboard/hash_handler").HashHandler,i=e("./autocomplete/popup").AcePopup,s=e("./autocomplete/util"),o=e("./lib/exchange"),u=e("./lib/lang"),a=e("./snippets").snippetManager,f=function(){this.autoInsert=!0,this.keyboardHandler=new r,this.keyboardHandler.bindKeys(this.commands),this.blurListener=this.blurListener.bind(this),this.changeListener=this.changeListener.bind(this),this.mousedownListener=this.mousedownListener.bind(this),this.mousewheelListener=this.mousewheelListener.bind(this),this.changeTimer=u.delayedCall(function(){this.updateCompletions(!0)}.bind(this))};(function(){this.$init=function(){this.popup=new i(document.body||document.documentElement),this.popup.on("click",function(e){this.insertMatch(),e.stop()}.bind(this))},this.openPopup=function(e,t,n){this.popup||this.$init(),this.popup.setData(this.completions.filtered);var r=e.renderer;if(!n){this.popup.setRow(0),this.popup.setFontSize(e.getFontSize());var i=r.layerConfig.lineHeight,s=r.$cursorLayer.getPixelPosition(this.base,!0);s.left-=this.popup.getTextLeftOffset();var o=e.container.getBoundingClientRect();s.top+=o.top-r.layerConfig.offset,s.left+=o.left-e.renderer.scrollLeft,s.left+=r.$gutterLayer.gutterWidth,this.popup.show(s,i)}},this.detach=function(){this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler),this.editor.off("changeSelection",this.changeListener),this.editor.off("blur",this.blurListener),this.editor.off("mousedown",this.mousedownListener),this.editor.off("mousewheel",this.mousewheelListener),this.changeTimer.cancel(),this.popup&&this.popup.hide(),this.activated=!1,this.completions=this.base=null},this.changeListener=function(e){var t=this.editor.selection.lead;(t.row!=this.base.row||t.column=n?-1:t+1;break;case"start":t=0;break;case"end":t=n}this.popup.setRow(t)},this.insertMatch=function(e){e||(e=this.popup.getData(this.popup.getRow()));if(!e)return!1;if(e.completer&&e.completer.insertMatch)e.completer.insertMatch(this.editor);else{if(this.completions.filterText){var t=this.editor.selection.getAllRanges();for(var n=0,r;r=t[n];n++)r.start.column-=this.completions.filterText.length,this.editor.session.remove(r)}e.snippet?a.insertSnippet(this.editor,e.snippet):this.editor.execCommand("insertstring",e.value||e)}this.detach()},this.commands={Up:function(e){e.completer.goTo("up")},Down:function(e){e.completer.goTo("down")},"Ctrl-Up|Ctrl-Home":function(e){e.completer.goTo("start")},"Ctrl-Down|Ctrl-End":function(e){e.completer.goTo("end")},Esc:function(e){e.completer.detach()},Space:function(e){e.completer.detach(),e.insert(" ")},Return:function(e){e.completer.insertMatch()},"Shift-Return":function(e){e.completer.insertMatch(!0)},Tab:function(e){e.completer.insertMatch()},PageUp:function(e){e.completer.popup.gotoPageUp()},PageDown:function(e){e.completer.popup.gotoPageDown()}},this.gatherCompletions=function(e,t){var n=e.getSession(),r=e.getCursorPosition(),i=n.getLine(r.row),o=s.retrievePrecedingIdentifier(i,r.column);this.base=e.getCursorPosition(),this.base.column-=o.length;var u=[];return s.parForEach(e.completers,function(t,i){t.getCompletions(e,n,r,o,function(e,t){e||(u=u.concat(t)),i()})},function(){t(null,{prefix:o,matches:u})}),!0},this.showPopup=function(e){this.editor&&this.detach(),this.activated=!0,this.editor=e,e.completer!=this&&(e.completer&&e.completer.detach(),e.completer=this),e.keyBinding.addKeyboardHandler(this.keyboardHandler),e.on("changeSelection",this.changeListener),e.on("blur",this.blurListener),e.on("mousedown",this.mousedownListener),e.on("mousewheel",this.mousewheelListener),this.updateCompletions()},this.updateCompletions=function(e){if(e&&this.base&&this.completions){var t=this.editor.getCursorPosition(),n=this.editor.session.getTextRange({start:this.base,end:t});if(n==this.completions.filterText)return;this.completions.setFilter(n);if(!this.completions.filtered.length)return this.detach();this.openPopup(this.editor,n,e);return}this.gatherCompletions(this.editor,function(t,n){var r=n&&n.matches;if(!r||!r.length)return this.detach();this.completions=new l(r),this.completions.setFilter(n.prefix);var i=this.completions.filtered;if(!i.length)return this.detach();if(this.autoInsert&&i.length==1)return this.insertMatch(i[0]);this.openPopup(this.editor,n.prefix,e)}.bind(this))},this.cancelContextMenu=function(){var e=function(t){this.editor.off("nativecontextmenu",e),t&&t.domEvent&&o.stopEvent(t.domEvent)}.bind(this);setTimeout(e,10),this.editor.on("nativecontextmenu",e)}}).call(f.prototype),f.startCommand={name:"startAutocomplete",exec:function(e){e.completer||(e.completer=new f),e.completer.showPopup(e),e.completer.cancelContextMenu()},bindKey:"Ctrl-Space|Ctrl-Shift-Space|Alt-Space"};var l=function(e,t,n){this.all=e,this.filtered=e,this.filterText=t||""};(function(){this.setFilter=function(e){if(e.length>this.filterText&&e.lastIndexOf(this.filterText,0)===0)var t=this.filtered;else var t=this.all;this.filterText=e,t=this.filterCompletions(t,this.filterText),t=t.sort(function(e,t){return t.exactMatch-e.exactMatch||t.score-e.score});var n=null;t=t.filter(function(e){var t=e.value||e.caption||e.snippet;return t===n?!1:(n=t,!0)}),this.filtered=t},this.filterCompletions=function(e,t){var n=[],r=t.toUpperCase(),i=t.toLowerCase();e:for(var s=0,o;o=e[s];s++){var u=o.value||o.caption||o.snippet;if(!u)continue;var a=-1,f=0,l=0,c,h;for(var p=0;p=0?v<0||d0&&(a===-1&&(l+=10),l+=h),f|=1<o-t&&!r?(s.style.top="",s.style.bottom=o-l+"px",n.isTopdown=!1):(l+=t,s.style.top=l+"px",s.style.bottom="",n.isTopdown=!0),s.style.display="",this.renderer.$textLayer.checkForSizeChanges();var c=e.left;c+s.offsetWidth>u&&(c=u-s.offsetWidth),s.style.left=c+"px",this._signal("show"),i=null,n.isOpen=!0},n.getTextLeftOffset=function(){return this.$borderSize+this.renderer.$padding+this.$imageSize},n.$imageSize=0,n.$borderSize=1,n};f.importCssString(".ace_autocomplete.ace-tm .ace_marker-layer .ace_active-line { background-color: #CAD6FA; z-index: 1;}.ace_autocomplete.ace-tm .ace_line-hover { border: 1px solid #abbffe; margin-top: -1px; background: rgba(233,233,253,0.4);}.ace_autocomplete .ace_line-hover { position: absolute; z-index: 2;}.ace_rightAlignedText { color: gray; display: inline-block; position: absolute; right: 4px; text-align: right; z-index: -1;}.ace_autocomplete .ace_completion-highlight{ color: #000; text-shadow: 0 0 0.01em;}.ace_autocomplete { width: 280px; z-index: 200000; background: #fbfbfb; color: #444; border: 1px lightgray solid; position: fixed; box-shadow: 2px 3px 5px rgba(0,0,0,.2); line-height: 1.4;}"),t.AcePopup=c}),ace.define("ace/autocomplete/util",["require","exports","module"],function(e,t,n){t.parForEach=function(e,t,n){var r=0,i=e.length;i===0&&n();for(var s=0;s=0;s--){if(!n.test(e[s]))break;i.push(e[s])}return i.reverse().join("")},t.retrieveFollowingIdentifier=function(e,t,n){n=n||r;var i=[];for(var s=t;s\s+/g,">"),l=function(e,t,n){var i=r.createElement("div");i.innerHTML=f,this.element=i.firstChild,this.$init(),this.setEditor(e)};(function(){this.setEditor=function(e){e.searchBox=this,e.container.appendChild(this.element),this.editor=e},this.$initElements=function(e){this.searchBox=e.querySelector(".ace_search_form"),this.replaceBox=e.querySelector(".ace_replace_form"),this.searchOptions=e.querySelector(".ace_search_options"),this.regExpOption=e.querySelector("[action=toggleRegexpMode]"),this.caseSensitiveOption=e.querySelector("[action=toggleCaseSensitive]"),this.wholeWordOption=e.querySelector("[action=toggleWholeWords]"),this.searchInput=this.searchBox.querySelector(".ace_search_field"),this.replaceInput=this.replaceBox.querySelector(".ace_search_field")},this.$init=function(){var e=this.element;this.$initElements(e);var t=this;s.addListener(e,"mousedown",function(e){setTimeout(function(){t.activeInput.focus()},0),s.stopPropagation(e)}),s.addListener(e,"click",function(e){var n=e.target||e.srcElement,r=n.getAttribute("action");r&&t[r]?t[r]():t.$searchBarKb.commands[r]&&t.$searchBarKb.commands[r].exec(t),s.stopPropagation(e)}),s.addCommandKeyListener(e,function(e,n,r){var i=a.keyCodeToString(r),o=t.$searchBarKb.findKeyCommand(n,i);o&&o.exec&&(o.exec(t),s.stopEvent(e))}),this.$onChange=i.delayedCall(function(){t.find(!1,!1)}),s.addListener(this.searchInput,"input",function(){t.$onChange.schedule(20)}),s.addListener(this.searchInput,"focus",function(){t.activeInput=t.searchInput,t.searchInput.value&&t.highlight()}),s.addListener(this.replaceInput,"focus",function(){t.activeInput=t.replaceInput,t.searchInput.value&&t.highlight()})},this.$closeSearchBarKb=new u([{bindKey:"Esc",name:"closeSearchBar",exec:function(e){e.searchBox.hide()}}]),this.$searchBarKb=new u,this.$searchBarKb.bindKeys({"Ctrl-f|Command-f|Ctrl-H|Command-Option-F":function(e){var t=e.isReplace=!e.isReplace;e.replaceBox.style.display=t?"":"none",e[t?"replaceInput":"searchInput"].focus()},"Ctrl-G|Command-G":function(e){e.findNext()},"Ctrl-Shift-G|Command-Shift-G":function(e){e.findPrev()},esc:function(e){setTimeout(function(){e.hide()})},Return:function(e){e.activeInput==e.replaceInput&&e.replace(),e.findNext()},"Shift-Return":function(e){e.activeInput==e.replaceInput&&e.replace(),e.findPrev()},Tab:function(e){(e.activeInput==e.replaceInput?e.searchInput:e.replaceInput).focus()}}),this.$searchBarKb.addCommands([{name:"toggleRegexpMode",bindKey:{win:"Alt-R|Alt-/",mac:"Ctrl-Alt-R|Ctrl-Alt-/"},exec:function(e){e.regExpOption.checked=!e.regExpOption.checked,e.$syncOptions()}},{name:"toggleCaseSensitive",bindKey:{win:"Alt-C|Alt-I",mac:"Ctrl-Alt-R|Ctrl-Alt-I"},exec:function(e){e.caseSensitiveOption.checked=!e.caseSensitiveOption.checked,e.$syncOptions()}},{name:"toggleWholeWords",bindKey:{win:"Alt-B|Alt-W",mac:"Ctrl-Alt-B|Ctrl-Alt-W"},exec:function(e){e.wholeWordOption.checked=!e.wholeWordOption.checked,e.$syncOptions()}}]),this.$syncOptions=function(){r.setCssClass(this.regExpOption,"checked",this.regExpOption.checked),r.setCssClass(this.wholeWordOption,"checked",this.wholeWordOption.checked),r.setCssClass(this.caseSensitiveOption,"checked",this.caseSensitiveOption.checked),this.find(!1,!1)},this.highlight=function(e){this.editor.session.highlight(e||this.editor.$search.$options.re),this.editor.renderer.updateBackMarkers()},this.find=function(e,t){var n=this.editor.find(this.searchInput.value,{skipCurrent:e,backwards:t,wrap:!0,regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked}),i=!n&&this.searchInput.value;r.setCssClass(this.searchBox,"ace_nomatch",i),this.editor._emit("findSearchBox",{match:!i}),this.highlight()},this.findNext=function(){this.find(!0,!1)},this.findPrev=function(){this.find(!0,!0)},this.replace=function(){this.editor.getReadOnly()||this.editor.replace(this.replaceInput.value)},this.replaceAndFindNext=function(){this.editor.getReadOnly()||(this.editor.replace(this.replaceInput.value),this.findNext())},this.replaceAll=function(){this.editor.getReadOnly()||this.editor.replaceAll(this.replaceInput.value)},this.hide=function(){this.element.style.display="none",this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb),this.editor.focus()},this.show=function(e,t){this.element.style.display="",this.replaceBox.style.display=t?"":"none",this.isReplace=t,e&&(this.searchInput.value=e),this.searchInput.focus(),this.searchInput.select(),this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb)}}).call(l.prototype),t.SearchBox=l,t.Search=function(e,t){var n=e.searchBox||new l(e);n.show(e.session.getTextRange(),t)}}),function(){ace.require(["ace/ext/old_ie"],function(){})}() \ No newline at end of file +ace.define("ace/ext/old_ie",["require","exports","module","ace/lib/useragent","ace/tokenizer","ace/ext/searchbox"],function(require,exports,module){function patch(obj,name,regexp,replacement){eval("obj['"+name+"']="+obj[name].toString().replace(regexp,replacement))}var MAX_TOKEN_COUNT=1e3,useragent=require("../lib/useragent"),TokenizerModule=require("../tokenizer");useragent.isIE&&useragent.isIE<10&&window.top.document.compatMode==="BackCompat"&&(useragent.isOldIE=!0);if(typeof document!="undefined"&&!document.documentElement.querySelector){useragent.isOldIE=!0;var qs=function(e,t){if(t.charAt(0)==".")var n=t.slice(1);else var r=t.match(/(\w+)=(\w+)/),i=r&&r[1],s=r&&r[2];for(var o=0;o\s+/g,">"),l=function(e,t,n){var i=r.createElement("div");i.innerHTML=f,this.element=i.firstChild,this.$init(),this.setEditor(e)};(function(){this.setEditor=function(e){e.searchBox=this,e.container.appendChild(this.element),this.editor=e},this.$initElements=function(e){this.searchBox=e.querySelector(".ace_search_form"),this.replaceBox=e.querySelector(".ace_replace_form"),this.searchOptions=e.querySelector(".ace_search_options"),this.regExpOption=e.querySelector("[action=toggleRegexpMode]"),this.caseSensitiveOption=e.querySelector("[action=toggleCaseSensitive]"),this.wholeWordOption=e.querySelector("[action=toggleWholeWords]"),this.searchInput=this.searchBox.querySelector(".ace_search_field"),this.replaceInput=this.replaceBox.querySelector(".ace_search_field")},this.$init=function(){var e=this.element;this.$initElements(e);var t=this;s.addListener(e,"mousedown",function(e){setTimeout(function(){t.activeInput.focus()},0),s.stopPropagation(e)}),s.addListener(e,"click",function(e){var n=e.target||e.srcElement,r=n.getAttribute("action");r&&t[r]?t[r]():t.$searchBarKb.commands[r]&&t.$searchBarKb.commands[r].exec(t),s.stopPropagation(e)}),s.addCommandKeyListener(e,function(e,n,r){var i=a.keyCodeToString(r),o=t.$searchBarKb.findKeyCommand(n,i);o&&o.exec&&(o.exec(t),s.stopEvent(e))}),this.$onChange=i.delayedCall(function(){t.find(!1,!1)}),s.addListener(this.searchInput,"input",function(){t.$onChange.schedule(20)}),s.addListener(this.searchInput,"focus",function(){t.activeInput=t.searchInput,t.searchInput.value&&t.highlight()}),s.addListener(this.replaceInput,"focus",function(){t.activeInput=t.replaceInput,t.searchInput.value&&t.highlight()})},this.$closeSearchBarKb=new u([{bindKey:"Esc",name:"closeSearchBar",exec:function(e){e.searchBox.hide()}}]),this.$searchBarKb=new u,this.$searchBarKb.bindKeys({"Ctrl-f|Command-f|Ctrl-H|Command-Option-F":function(e){var t=e.isReplace=!e.isReplace;e.replaceBox.style.display=t?"":"none",e[t?"replaceInput":"searchInput"].focus()},"Ctrl-G|Command-G":function(e){e.findNext()},"Ctrl-Shift-G|Command-Shift-G":function(e){e.findPrev()},esc:function(e){setTimeout(function(){e.hide()})},Return:function(e){e.activeInput==e.replaceInput&&e.replace(),e.findNext()},"Shift-Return":function(e){e.activeInput==e.replaceInput&&e.replace(),e.findPrev()},Tab:function(e){(e.activeInput==e.replaceInput?e.searchInput:e.replaceInput).focus()}}),this.$searchBarKb.addCommands([{name:"toggleRegexpMode",bindKey:{win:"Alt-R|Alt-/",mac:"Ctrl-Alt-R|Ctrl-Alt-/"},exec:function(e){e.regExpOption.checked=!e.regExpOption.checked,e.$syncOptions()}},{name:"toggleCaseSensitive",bindKey:{win:"Alt-C|Alt-I",mac:"Ctrl-Alt-R|Ctrl-Alt-I"},exec:function(e){e.caseSensitiveOption.checked=!e.caseSensitiveOption.checked,e.$syncOptions()}},{name:"toggleWholeWords",bindKey:{win:"Alt-B|Alt-W",mac:"Ctrl-Alt-B|Ctrl-Alt-W"},exec:function(e){e.wholeWordOption.checked=!e.wholeWordOption.checked,e.$syncOptions()}}]),this.$syncOptions=function(){r.setCssClass(this.regExpOption,"checked",this.regExpOption.checked),r.setCssClass(this.wholeWordOption,"checked",this.wholeWordOption.checked),r.setCssClass(this.caseSensitiveOption,"checked",this.caseSensitiveOption.checked),this.find(!1,!1)},this.highlight=function(e){this.editor.session.highlight(e||this.editor.$search.$options.re),this.editor.renderer.updateBackMarkers()},this.find=function(e,t){var n=this.editor.find(this.searchInput.value,{skipCurrent:e,backwards:t,wrap:!0,regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked}),i=!n&&this.searchInput.value;r.setCssClass(this.searchBox,"ace_nomatch",i),this.editor._emit("findSearchBox",{match:!i}),this.highlight()},this.findNext=function(){this.find(!0,!1)},this.findPrev=function(){this.find(!0,!0)},this.replace=function(){this.editor.getReadOnly()||this.editor.replace(this.replaceInput.value)},this.replaceAndFindNext=function(){this.editor.getReadOnly()||(this.editor.replace(this.replaceInput.value),this.findNext())},this.replaceAll=function(){this.editor.getReadOnly()||this.editor.replaceAll(this.replaceInput.value)},this.hide=function(){this.element.style.display="none",this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb),this.editor.focus()},this.show=function(e,t){this.element.style.display="",this.replaceBox.style.display=t?"":"none",this.isReplace=t,e&&(this.searchInput.value=e),this.searchInput.focus(),this.searchInput.select(),this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb)}}).call(l.prototype),t.SearchBox=l,t.Search=function(e,t){var n=e.searchBox||new l(e);n.show(e.session.getTextRange(),t)}}),function(){ace.require(["ace/ext/old_ie"],function(){})}() \ No newline at end of file diff --git a/contact-center/app/src/main/resources/static/js/ace/ext-searchbox.js b/contact-center/app/src/main/resources/static/js/ace/ext-searchbox.js index 999eaacf..2f3db22b 100644 --- a/contact-center/app/src/main/resources/static/js/ace/ext-searchbox.js +++ b/contact-center/app/src/main/resources/static/js/ace/ext-searchbox.js @@ -1 +1 @@ -ace.define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/keyboard/hash_handler","ace/lib/keys"],function(e,t,n){var r=e("../lib/dom"),i=e("../lib/lang"),s=e("../lib/event"),o="/* ------------------------------------------------------------------------------------------* Editor Search Form* --------------------------------------------------------------------------------------- */.ace_search {background-color: #ddd;border: 1px solid #cbcbcb;border-top: 0 none;max-width: 297px;overflow: hidden;margin: 0;padding: 4px;padding-right: 6px;padding-bottom: 0;position: absolute;top: 0px;z-index: 99;white-space: normal;}.ace_search.left {border-left: 0 none;border-radius: 0px 0px 5px 0px;left: 0;}.ace_search.right {border-radius: 0px 0px 0px 5px;border-right: 0 none;right: 0;}.ace_search_form, .ace_replace_form {border-radius: 3px;border: 1px solid #cbcbcb;float: left;margin-bottom: 4px;overflow: hidden;}.ace_search_form.ace_nomatch {outline: 1px solid red;}.ace_search_field {background-color: white;border-right: 1px solid #cbcbcb;border: 0 none;-webkit-box-sizing: border-box;-moz-box-sizing: border-box;box-sizing: border-box;display: block;float: left;height: 22px;outline: 0;padding: 0 7px;width: 214px;margin: 0;}.ace_searchbtn,.ace_replacebtn {background: #fff;border: 0 none;border-left: 1px solid #dcdcdc;cursor: pointer;display: block;float: left;height: 22px;margin: 0;padding: 0;position: relative;}.ace_searchbtn:last-child,.ace_replacebtn:last-child {border-top-right-radius: 3px;border-bottom-right-radius: 3px;}.ace_searchbtn:disabled {background: none;cursor: default;}.ace_searchbtn {background-position: 50% 50%;background-repeat: no-repeat;width: 27px;}.ace_searchbtn.prev {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpiSU1NZUAC/6E0I0yACYskCpsJiySKIiY0SUZk40FyTEgCjGgKwTRAgAEAQJUIPCE+qfkAAAAASUVORK5CYII=); }.ace_searchbtn.next {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpiTE1NZQCC/0DMyIAKwGJMUAYDEo3M/s+EpvM/mkKwCQxYjIeLMaELoLMBAgwAU7UJObTKsvAAAAAASUVORK5CYII=); }.ace_searchbtn_close {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;border-radius: 50%;border: 0 none;color: #656565;cursor: pointer;display: block;float: right;font-family: Arial;font-size: 16px;height: 14px;line-height: 16px;margin: 5px 1px 9px 5px;padding: 0;text-align: center;width: 14px;}.ace_searchbtn_close:hover {background-color: #656565;background-position: 50% 100%;color: white;}.ace_replacebtn.prev {width: 54px}.ace_replacebtn.next {width: 27px}.ace_button {margin-left: 2px;cursor: pointer;-webkit-user-select: none;-moz-user-select: none;-o-user-select: none;-ms-user-select: none;user-select: none;overflow: hidden;opacity: 0.7;border: 1px solid rgba(100,100,100,0.23);padding: 1px;-moz-box-sizing: border-box;box-sizing: border-box;color: black;}.ace_button:hover {background-color: #eee;opacity:1;}.ace_button:active {background-color: #ddd;}.ace_button.checked {border-color: #3399ff;opacity:1;}.ace_search_options{margin-bottom: 3px;text-align: right;-webkit-user-select: none;-moz-user-select: none;-o-user-select: none;-ms-user-select: none;user-select: none;}",u=e("../keyboard/hash_handler").HashHandler,a=e("../lib/keys");r.importCssString(o,"ace_searchbox");var f=''.replace(/>\s+/g,">"),l=function(e,t,n){var i=r.createElement("div");i.innerHTML=f,this.element=i.firstChild,this.$init(),this.setEditor(e)};(function(){this.setEditor=function(e){e.searchBox=this,e.container.appendChild(this.element),this.editor=e},this.$initElements=function(e){this.searchBox=e.querySelector(".ace_search_form"),this.replaceBox=e.querySelector(".ace_replace_form"),this.searchOptions=e.querySelector(".ace_search_options"),this.regExpOption=e.querySelector("[action=toggleRegexpMode]"),this.caseSensitiveOption=e.querySelector("[action=toggleCaseSensitive]"),this.wholeWordOption=e.querySelector("[action=toggleWholeWords]"),this.searchInput=this.searchBox.querySelector(".ace_search_field"),this.replaceInput=this.replaceBox.querySelector(".ace_search_field")},this.$init=function(){var e=this.element;this.$initElements(e);var t=this;s.addListener(e,"mousedown",function(e){setTimeout(function(){t.activeInput.focus()},0),s.stopPropagation(e)}),s.addListener(e,"click",function(e){var n=e.target||e.srcElement,r=n.getAttribute("action");r&&t[r]?t[r]():t.$searchBarKb.commands[r]&&t.$searchBarKb.commands[r].exec(t),s.stopPropagation(e)}),s.addCommandKeyListener(e,function(e,n,r){var i=a.keyCodeToString(r),o=t.$searchBarKb.findKeyCommand(n,i);o&&o.exec&&(o.exec(t),s.stopEvent(e))}),this.$onChange=i.delayedCall(function(){t.find(!1,!1)}),s.addListener(this.searchInput,"input",function(){t.$onChange.schedule(20)}),s.addListener(this.searchInput,"focus",function(){t.activeInput=t.searchInput,t.searchInput.value&&t.highlight()}),s.addListener(this.replaceInput,"focus",function(){t.activeInput=t.replaceInput,t.searchInput.value&&t.highlight()})},this.$closeSearchBarKb=new u([{bindKey:"Esc",name:"closeSearchBar",exec:function(e){e.searchBox.hide()}}]),this.$searchBarKb=new u,this.$searchBarKb.bindKeys({"Ctrl-f|Command-f|Ctrl-H|Command-Option-F":function(e){var t=e.isReplace=!e.isReplace;e.replaceBox.style.display=t?"":"none",e[t?"replaceInput":"searchInput"].focus()},"Ctrl-G|Command-G":function(e){e.findNext()},"Ctrl-Shift-G|Command-Shift-G":function(e){e.findPrev()},esc:function(e){setTimeout(function(){e.hide()})},Return:function(e){e.activeInput==e.replaceInput&&e.replace(),e.findNext()},"Shift-Return":function(e){e.activeInput==e.replaceInput&&e.replace(),e.findPrev()},Tab:function(e){(e.activeInput==e.replaceInput?e.searchInput:e.replaceInput).focus()}}),this.$searchBarKb.addCommands([{name:"toggleRegexpMode",bindKey:{win:"Alt-R|Alt-/",mac:"Ctrl-Alt-R|Ctrl-Alt-/"},exec:function(e){e.regExpOption.checked=!e.regExpOption.checked,e.$syncOptions()}},{name:"toggleCaseSensitive",bindKey:{win:"Alt-C|Alt-I",mac:"Ctrl-Alt-R|Ctrl-Alt-I"},exec:function(e){e.caseSensitiveOption.checked=!e.caseSensitiveOption.checked,e.$syncOptions()}},{name:"toggleWholeWords",bindKey:{win:"Alt-B|Alt-W",mac:"Ctrl-Alt-B|Ctrl-Alt-W"},exec:function(e){e.wholeWordOption.checked=!e.wholeWordOption.checked,e.$syncOptions()}}]),this.$syncOptions=function(){r.setCssClass(this.regExpOption,"checked",this.regExpOption.checked),r.setCssClass(this.wholeWordOption,"checked",this.wholeWordOption.checked),r.setCssClass(this.caseSensitiveOption,"checked",this.caseSensitiveOption.checked),this.find(!1,!1)},this.highlight=function(e){this.editor.session.highlight(e||this.editor.$search.$options.re),this.editor.renderer.updateBackMarkers()},this.find=function(e,t){var n=this.editor.find(this.searchInput.value,{skipCurrent:e,backwards:t,wrap:!0,regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked}),i=!n&&this.searchInput.value;r.setCssClass(this.searchBox,"ace_nomatch",i),this.editor._emit("findSearchBox",{match:!i}),this.highlight()},this.findNext=function(){this.find(!0,!1)},this.findPrev=function(){this.find(!0,!0)},this.replace=function(){this.editor.getReadOnly()||this.editor.replace(this.replaceInput.value)},this.replaceAndFindNext=function(){this.editor.getReadOnly()||(this.editor.replace(this.replaceInput.value),this.findNext())},this.replaceAll=function(){this.editor.getReadOnly()||this.editor.replaceAll(this.replaceInput.value)},this.hide=function(){this.element.style.display="none",this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb),this.editor.focus()},this.show=function(e,t){this.element.style.display="",this.replaceBox.style.display=t?"":"none",this.isReplace=t,e&&(this.searchInput.value=e),this.searchInput.focus(),this.searchInput.select(),this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb)}}).call(l.prototype),t.SearchBox=l,t.Search=function(e,t){var n=e.searchBox||new l(e);n.show(e.session.getTextRange(),t)}}),function(){ace.require(["ace/ext/searchbox"],function(){})}() \ No newline at end of file +ace.define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/keyboard/hash_handler","ace/lib/keys"],function(e,t,n){var r=e("../lib/dom"),i=e("../lib/lang"),s=e("../lib/exchange"),o="/* ------------------------------------------------------------------------------------------* Editor Search Form* --------------------------------------------------------------------------------------- */.ace_search {background-color: #ddd;border: 1px solid #cbcbcb;border-top: 0 none;max-width: 297px;overflow: hidden;margin: 0;padding: 4px;padding-right: 6px;padding-bottom: 0;position: absolute;top: 0px;z-index: 99;white-space: normal;}.ace_search.left {border-left: 0 none;border-radius: 0px 0px 5px 0px;left: 0;}.ace_search.right {border-radius: 0px 0px 0px 5px;border-right: 0 none;right: 0;}.ace_search_form, .ace_replace_form {border-radius: 3px;border: 1px solid #cbcbcb;float: left;margin-bottom: 4px;overflow: hidden;}.ace_search_form.ace_nomatch {outline: 1px solid red;}.ace_search_field {background-color: white;border-right: 1px solid #cbcbcb;border: 0 none;-webkit-box-sizing: border-box;-moz-box-sizing: border-box;box-sizing: border-box;display: block;float: left;height: 22px;outline: 0;padding: 0 7px;width: 214px;margin: 0;}.ace_searchbtn,.ace_replacebtn {background: #fff;border: 0 none;border-left: 1px solid #dcdcdc;cursor: pointer;display: block;float: left;height: 22px;margin: 0;padding: 0;position: relative;}.ace_searchbtn:last-child,.ace_replacebtn:last-child {border-top-right-radius: 3px;border-bottom-right-radius: 3px;}.ace_searchbtn:disabled {background: none;cursor: default;}.ace_searchbtn {background-position: 50% 50%;background-repeat: no-repeat;width: 27px;}.ace_searchbtn.prev {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpiSU1NZUAC/6E0I0yACYskCpsJiySKIiY0SUZk40FyTEgCjGgKwTRAgAEAQJUIPCE+qfkAAAAASUVORK5CYII=); }.ace_searchbtn.next {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpiTE1NZQCC/0DMyIAKwGJMUAYDEo3M/s+EpvM/mkKwCQxYjIeLMaELoLMBAgwAU7UJObTKsvAAAAAASUVORK5CYII=); }.ace_searchbtn_close {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;border-radius: 50%;border: 0 none;color: #656565;cursor: pointer;display: block;float: right;font-family: Arial;font-size: 16px;height: 14px;line-height: 16px;margin: 5px 1px 9px 5px;padding: 0;text-align: center;width: 14px;}.ace_searchbtn_close:hover {background-color: #656565;background-position: 50% 100%;color: white;}.ace_replacebtn.prev {width: 54px}.ace_replacebtn.next {width: 27px}.ace_button {margin-left: 2px;cursor: pointer;-webkit-user-select: none;-moz-user-select: none;-o-user-select: none;-ms-user-select: none;user-select: none;overflow: hidden;opacity: 0.7;border: 1px solid rgba(100,100,100,0.23);padding: 1px;-moz-box-sizing: border-box;box-sizing: border-box;color: black;}.ace_button:hover {background-color: #eee;opacity:1;}.ace_button:active {background-color: #ddd;}.ace_button.checked {border-color: #3399ff;opacity:1;}.ace_search_options{margin-bottom: 3px;text-align: right;-webkit-user-select: none;-moz-user-select: none;-o-user-select: none;-ms-user-select: none;user-select: none;}",u=e("../keyboard/hash_handler").HashHandler,a=e("../lib/keys");r.importCssString(o,"ace_searchbox");var f=''.replace(/>\s+/g,">"),l=function(e,t,n){var i=r.createElement("div");i.innerHTML=f,this.element=i.firstChild,this.$init(),this.setEditor(e)};(function(){this.setEditor=function(e){e.searchBox=this,e.container.appendChild(this.element),this.editor=e},this.$initElements=function(e){this.searchBox=e.querySelector(".ace_search_form"),this.replaceBox=e.querySelector(".ace_replace_form"),this.searchOptions=e.querySelector(".ace_search_options"),this.regExpOption=e.querySelector("[action=toggleRegexpMode]"),this.caseSensitiveOption=e.querySelector("[action=toggleCaseSensitive]"),this.wholeWordOption=e.querySelector("[action=toggleWholeWords]"),this.searchInput=this.searchBox.querySelector(".ace_search_field"),this.replaceInput=this.replaceBox.querySelector(".ace_search_field")},this.$init=function(){var e=this.element;this.$initElements(e);var t=this;s.addListener(e,"mousedown",function(e){setTimeout(function(){t.activeInput.focus()},0),s.stopPropagation(e)}),s.addListener(e,"click",function(e){var n=e.target||e.srcElement,r=n.getAttribute("action");r&&t[r]?t[r]():t.$searchBarKb.commands[r]&&t.$searchBarKb.commands[r].exec(t),s.stopPropagation(e)}),s.addCommandKeyListener(e,function(e,n,r){var i=a.keyCodeToString(r),o=t.$searchBarKb.findKeyCommand(n,i);o&&o.exec&&(o.exec(t),s.stopEvent(e))}),this.$onChange=i.delayedCall(function(){t.find(!1,!1)}),s.addListener(this.searchInput,"input",function(){t.$onChange.schedule(20)}),s.addListener(this.searchInput,"focus",function(){t.activeInput=t.searchInput,t.searchInput.value&&t.highlight()}),s.addListener(this.replaceInput,"focus",function(){t.activeInput=t.replaceInput,t.searchInput.value&&t.highlight()})},this.$closeSearchBarKb=new u([{bindKey:"Esc",name:"closeSearchBar",exec:function(e){e.searchBox.hide()}}]),this.$searchBarKb=new u,this.$searchBarKb.bindKeys({"Ctrl-f|Command-f|Ctrl-H|Command-Option-F":function(e){var t=e.isReplace=!e.isReplace;e.replaceBox.style.display=t?"":"none",e[t?"replaceInput":"searchInput"].focus()},"Ctrl-G|Command-G":function(e){e.findNext()},"Ctrl-Shift-G|Command-Shift-G":function(e){e.findPrev()},esc:function(e){setTimeout(function(){e.hide()})},Return:function(e){e.activeInput==e.replaceInput&&e.replace(),e.findNext()},"Shift-Return":function(e){e.activeInput==e.replaceInput&&e.replace(),e.findPrev()},Tab:function(e){(e.activeInput==e.replaceInput?e.searchInput:e.replaceInput).focus()}}),this.$searchBarKb.addCommands([{name:"toggleRegexpMode",bindKey:{win:"Alt-R|Alt-/",mac:"Ctrl-Alt-R|Ctrl-Alt-/"},exec:function(e){e.regExpOption.checked=!e.regExpOption.checked,e.$syncOptions()}},{name:"toggleCaseSensitive",bindKey:{win:"Alt-C|Alt-I",mac:"Ctrl-Alt-R|Ctrl-Alt-I"},exec:function(e){e.caseSensitiveOption.checked=!e.caseSensitiveOption.checked,e.$syncOptions()}},{name:"toggleWholeWords",bindKey:{win:"Alt-B|Alt-W",mac:"Ctrl-Alt-B|Ctrl-Alt-W"},exec:function(e){e.wholeWordOption.checked=!e.wholeWordOption.checked,e.$syncOptions()}}]),this.$syncOptions=function(){r.setCssClass(this.regExpOption,"checked",this.regExpOption.checked),r.setCssClass(this.wholeWordOption,"checked",this.wholeWordOption.checked),r.setCssClass(this.caseSensitiveOption,"checked",this.caseSensitiveOption.checked),this.find(!1,!1)},this.highlight=function(e){this.editor.session.highlight(e||this.editor.$search.$options.re),this.editor.renderer.updateBackMarkers()},this.find=function(e,t){var n=this.editor.find(this.searchInput.value,{skipCurrent:e,backwards:t,wrap:!0,regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked}),i=!n&&this.searchInput.value;r.setCssClass(this.searchBox,"ace_nomatch",i),this.editor._emit("findSearchBox",{match:!i}),this.highlight()},this.findNext=function(){this.find(!0,!1)},this.findPrev=function(){this.find(!0,!0)},this.replace=function(){this.editor.getReadOnly()||this.editor.replace(this.replaceInput.value)},this.replaceAndFindNext=function(){this.editor.getReadOnly()||(this.editor.replace(this.replaceInput.value),this.findNext())},this.replaceAll=function(){this.editor.getReadOnly()||this.editor.replaceAll(this.replaceInput.value)},this.hide=function(){this.element.style.display="none",this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb),this.editor.focus()},this.show=function(e,t){this.element.style.display="",this.replaceBox.style.display=t?"":"none",this.isReplace=t,e&&(this.searchInput.value=e),this.searchInput.focus(),this.searchInput.select(),this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb)}}).call(l.prototype),t.SearchBox=l,t.Search=function(e,t){var n=e.searchBox||new l(e);n.show(e.session.getTextRange(),t)}}),function(){ace.require(["ace/ext/searchbox"],function(){})}() \ No newline at end of file diff --git a/contact-center/app/src/main/resources/static/js/ace/ext-spellcheck.js b/contact-center/app/src/main/resources/static/js/ace/ext-spellcheck.js index 5192021f..b05c5f67 100644 --- a/contact-center/app/src/main/resources/static/js/ace/ext-spellcheck.js +++ b/contact-center/app/src/main/resources/static/js/ace/ext-spellcheck.js @@ -1 +1 @@ -ace.define("ace/ext/spellcheck",["require","exports","module","ace/lib/event","ace/editor","ace/config"],function(e,t,n){var r=e("../lib/event");t.contextMenuHandler=function(e){var t=e.target,n=t.textInput.getElement();if(!t.selection.isEmpty())return;var i=t.getCursorPosition(),s=t.session.getWordRange(i.row,i.column),o=t.session.getTextRange(s);t.session.tokenRe.lastIndex=0;if(!t.session.tokenRe.test(o))return;var u="\x01\x01",a=o+" "+u;n.value=a,n.setSelectionRange(o.length,o.length+1),n.setSelectionRange(0,0),n.setSelectionRange(0,o.length);var f=!1;r.addListener(n,"keydown",function l(){r.removeListener(n,"keydown",l),f=!0}),t.textInput.setInputHandler(function(e){console.log(e,a,n.selectionStart,n.selectionEnd);if(e==a)return"";if(e.lastIndexOf(a,0)===0)return e.slice(a.length);if(e.substr(n.selectionEnd)==a)return e.slice(0,-a.length);if(e.slice(-2)==u){var r=e.slice(0,-2);if(r.slice(-1)==" ")return f?r.substring(0,n.selectionEnd):(r=r.slice(0,-1),t.session.replace(s,r),"")}return e})};var i=e("../editor").Editor;e("../config").defineOptions(i.prototype,"editor",{spellcheck:{set:function(e){var n=this.textInput.getElement();n.spellcheck=!!e,e?this.on("nativecontextmenu",t.contextMenuHandler):this.removeListener("nativecontextmenu",t.contextMenuHandler)},value:!0}})}),function(){ace.require(["ace/ext/spellcheck"],function(){})}() \ No newline at end of file +ace.define("ace/ext/spellcheck",["require","exports","module","ace/lib/event","ace/editor","ace/config"],function(e,t,n){var r=e("../lib/exchange");t.contextMenuHandler=function(e){var t=e.target,n=t.textInput.getElement();if(!t.selection.isEmpty())return;var i=t.getCursorPosition(),s=t.session.getWordRange(i.row,i.column),o=t.session.getTextRange(s);t.session.tokenRe.lastIndex=0;if(!t.session.tokenRe.test(o))return;var u="\x01\x01",a=o+" "+u;n.value=a,n.setSelectionRange(o.length,o.length+1),n.setSelectionRange(0,0),n.setSelectionRange(0,o.length);var f=!1;r.addListener(n,"keydown",function l(){r.removeListener(n,"keydown",l),f=!0}),t.textInput.setInputHandler(function(e){console.log(e,a,n.selectionStart,n.selectionEnd);if(e==a)return"";if(e.lastIndexOf(a,0)===0)return e.slice(a.length);if(e.substr(n.selectionEnd)==a)return e.slice(0,-a.length);if(e.slice(-2)==u){var r=e.slice(0,-2);if(r.slice(-1)==" ")return f?r.substring(0,n.selectionEnd):(r=r.slice(0,-1),t.session.replace(s,r),"")}return e})};var i=e("../editor").Editor;e("../config").defineOptions(i.prototype,"editor",{spellcheck:{set:function(e){var n=this.textInput.getElement();n.spellcheck=!!e,e?this.on("nativecontextmenu",t.contextMenuHandler):this.removeListener("nativecontextmenu",t.contextMenuHandler)},value:!0}})}),function(){ace.require(["ace/ext/spellcheck"],function(){})}() \ No newline at end of file diff --git a/contact-center/app/src/main/resources/static/js/ace/ext-textarea.js b/contact-center/app/src/main/resources/static/js/ace/ext-textarea.js index d9b5bedf..e06342dc 100644 --- a/contact-center/app/src/main/resources/static/js/ace/ext-textarea.js +++ b/contact-center/app/src/main/resources/static/js/ace/ext-textarea.js @@ -1 +1 @@ -ace.define("ace/ext/textarea",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/lib/net","ace/ace","ace/theme/textmate","ace/mode/text"],function(e,t,n){function a(e,t){for(var n in t)e.style[n]=t[n]}function f(e,t){if(e.type!="textarea")throw new Error("Textarea required!");var n=e.parentNode,i=document.createElement("div"),s=function(){var t="position:relative;";["margin-top","margin-left","margin-right","margin-bottom"].forEach(function(n){t+=n+":"+u(e,i,n)+";"});var n=u(e,i,"width")||e.clientWidth+"px",r=u(e,i,"height")||e.clientHeight+"px";t+="height:"+r+";width:"+n+";",t+="display:inline-block;",i.setAttribute("style",t)};r.addListener(window,"resize",s),s(),n.insertBefore(i,e.nextSibling);while(n!==document){if(n.tagName.toUpperCase()==="FORM"){var o=n.onsubmit;n.onsubmit=function(n){e.value=t(),o&&o.call(this,n)};break}n=n.parentNode}return i}function l(t,n,r){s.loadScript(t,function(){e([n],r)})}function c(n,r,i,s,o,u){function c(e){return e==="true"||e==1}var a=n.getSession(),f=n.renderer;return u=u||l,n.setDisplaySettings=function(e){e==null&&(e=i.style.display=="none"),e?(i.style.display="block",i.hideButton.focus(),n.on("focus",function t(){n.removeListener("focus",t),i.style.display="none"})):n.focus()},n.$setOption=n.setOption,n.setOption=function(t,i){if(o[t]==i)return;switch(t){case"mode":i!="text"?u("mode-"+i+".js","ace/mode/"+i,function(){var t=e("../mode/"+i).Mode;a.setMode(new t)}):a.setMode(new(e("../mode/text").Mode));break;case"theme":i!="textmate"?u("theme-"+i+".js","ace/theme/"+i,function(){n.setTheme("ace/theme/"+i)}):n.setTheme("ace/theme/textmate");break;case"fontSize":r.style.fontSize=i;break;case"keybindings":switch(i){case"vim":n.setKeyboardHandler("ace/keyboard/vim");break;case"emacs":n.setKeyboardHandler("ace/keyboard/emacs");break;default:n.setKeyboardHandler(null)}break;case"softWrap":switch(i){case"off":a.setUseWrapMode(!1),f.setPrintMarginColumn(80);break;case"40":a.setUseWrapMode(!0),a.setWrapLimitRange(40,40),f.setPrintMarginColumn(40);break;case"80":a.setUseWrapMode(!0),a.setWrapLimitRange(80,80),f.setPrintMarginColumn(80);break;case"free":a.setUseWrapMode(!0),a.setWrapLimitRange(null,null),f.setPrintMarginColumn(80)}break;default:n.$setOption(t,c(i))}o[t]=i},n.getOption=function(e){return o[e]},n.getOptions=function(){return o},n.setOptions(t.options),n}function h(e,t,n,i){function f(e,t,n,r){if(!n){e.push("");return}e.push("")}var s=null,o={mode:"Mode:",gutter:"Display Gutter:",theme:"Theme:",fontSize:"Font Size:",softWrap:"Soft Wrap:",keybindings:"Keyboard",showPrintMargin:"Show Print Margin:",useSoftTabs:"Use Soft Tabs:",showInvisibles:"Show Invisibles"},u={mode:{text:"Plain",javascript:"JavaScript",xml:"XML",html:"HTML",css:"CSS",scss:"SCSS",python:"Python",php:"PHP",java:"Java",ruby:"Ruby",c_cpp:"C/C++",coffee:"CoffeeScript",json:"json",perl:"Perl",clojure:"Clojure",ocaml:"OCaml",csharp:"C#",haxe:"haXe",svg:"SVG",textile:"Textile",groovy:"Groovy",liquid:"Liquid",Scala:"Scala"},theme:{clouds:"Clouds",clouds_midnight:"Clouds Midnight",cobalt:"Cobalt",crimson_editor:"Crimson Editor",dawn:"Dawn",eclipse:"Eclipse",idle_fingers:"Idle Fingers",kr_theme:"Kr Theme",merbivore:"Merbivore",merbivore_soft:"Merbivore Soft",mono_industrial:"Mono Industrial",monokai:"Monokai",pastel_on_dark:"Pastel On Dark",solarized_dark:"Solarized Dark",solarized_light:"Solarized Light",textmate:"Textmate",twilight:"Twilight",vibrant_ink:"Vibrant Ink"},gutter:s,fontSize:{"10px":"10px","11px":"11px","12px":"12px","14px":"14px","16px":"16px"},softWrap:{off:"Off",40:"40",80:"80",free:"Free"},keybindings:{ace:"ace",vim:"vim",emacs:"emacs"},showPrintMargin:s,useSoftTabs:s,showInvisibles:s},a=[];a.push("");for(var l in i)a.push(""),a.push("");a.push("
SettingValue
",o[l],""),f(a,l,u[l],i[l]),a.push("
"),e.innerHTML=a.join("");var c=function(e){var t=e.currentTarget;n.setOption(t.title,t.value)},h=function(e){var t=e.currentTarget;n.setOption(t.title,t.checked)},p=e.getElementsByTagName("select");for(var d=0;d");return}e.push("")}var s=null,o={mode:"Mode:",gutter:"Display Gutter:",theme:"Theme:",fontSize:"Font Size:",softWrap:"Soft Wrap:",keybindings:"Keyboard",showPrintMargin:"Show Print Margin:",useSoftTabs:"Use Soft Tabs:",showInvisibles:"Show Invisibles"},u={mode:{text:"Plain",javascript:"JavaScript",xml:"XML",html:"HTML",css:"CSS",scss:"SCSS",python:"Python",php:"PHP",java:"Java",ruby:"Ruby",c_cpp:"C/C++",coffee:"CoffeeScript",json:"json",perl:"Perl",clojure:"Clojure",ocaml:"OCaml",csharp:"C#",haxe:"haXe",svg:"SVG",textile:"Textile",groovy:"Groovy",liquid:"Liquid",Scala:"Scala"},theme:{clouds:"Clouds",clouds_midnight:"Clouds Midnight",cobalt:"Cobalt",crimson_editor:"Crimson Editor",dawn:"Dawn",eclipse:"Eclipse",idle_fingers:"Idle Fingers",kr_theme:"Kr Theme",merbivore:"Merbivore",merbivore_soft:"Merbivore Soft",mono_industrial:"Mono Industrial",monokai:"Monokai",pastel_on_dark:"Pastel On Dark",solarized_dark:"Solarized Dark",solarized_light:"Solarized Light",textmate:"Textmate",twilight:"Twilight",vibrant_ink:"Vibrant Ink"},gutter:s,fontSize:{"10px":"10px","11px":"11px","12px":"12px","14px":"14px","16px":"16px"},softWrap:{off:"Off",40:"40",80:"80",free:"Free"},keybindings:{ace:"ace",vim:"vim",emacs:"emacs"},showPrintMargin:s,useSoftTabs:s,showInvisibles:s},a=[];a.push("");for(var l in i)a.push(""),a.push("");a.push("
SettingValue
",o[l],""),f(a,l,u[l],i[l]),a.push("
"),e.innerHTML=a.join("");var c=function(e){var t=e.currentTarget;n.setOption(t.title,t.value)},h=function(e){var t=e.currentTarget;n.setOption(t.title,t.checked)},p=e.getElementsByTagName("select");for(var d=0;d|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}]}};r.inherits(s,i),t.AdaHighlightRules=s}) \ No newline at end of file +ace.define("ace/mode/ada",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/ada_highlight_rules","ace/range"],function(e,t,n){var r=e("../lib/oop"),i=e("./text").Mode,s=e("../tokenizer").Tokenizer,o=e("./ada_highlight_rules").AdaHighlightRules,u=e("../range").Range,a=function(){this.HighlightRules=o};r.inherits(a,i),function(){this.lineCommentStart="--",this.$id="ace/mode/ada"}.call(a.prototype),t.Mode=a}),ace.define("ace/mode/ada_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="abort|else|new|return|abs|elsif|not|reverse|abstract|end|null|accept|entry|select|access|exception|of|separate|aliased|exit|or|some|all|others|subtype|and|for|out|synchronized|array|function|overriding|at|tagged|generic|package|schedule|begin|goto|pragma|terminate|body|private|then|if|procedure|type|case|in|protected|constant|interface|until||is|raise|use|declare|range|delay|limited|record|when|delta|loop|rem|while|digits|renames|with|do|mod|requeue|xor",t="true|false|null",n="count|min|max|avg|sum|rank|now|coalesce|main",r=this.createKeywordMapper({"support.function":n,keyword:e,"constant.language":t},"identifier",!0);this.$rules={start:[{token:"comment",regex:"--.*$"},{token:"string",regex:'".*?"'},{token:"string",regex:"'.*?'"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}]}};r.inherits(s,i),t.AdaHighlightRules=s}) \ No newline at end of file diff --git a/contact-center/app/src/main/resources/static/js/ace/mode-csharp.js b/contact-center/app/src/main/resources/static/js/ace/mode-csharp.js index a662c219..6d273c8c 100644 --- a/contact-center/app/src/main/resources/static/js/ace/mode-csharp.js +++ b/contact-center/app/src/main/resources/static/js/ace/mode-csharp.js @@ -1 +1 @@ -ace.define("ace/mode/csharp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/csharp_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/csharp"],function(e,t,n){var r=e("../lib/oop"),i=e("./text").Mode,s=e("../tokenizer").Tokenizer,o=e("./csharp_highlight_rules").CSharpHighlightRules,u=e("./matching_brace_outdent").MatchingBraceOutdent,a=e("./behaviour/cstyle").CstyleBehaviour,f=e("./folding/csharp").FoldMode,l=function(){this.HighlightRules=o,this.$outdent=new u,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[]\s*$/);o&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){return null},this.$id="ace/mode/csharp"}.call(l.prototype),t.Mode=l}),ace.define("ace/mode/csharp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e=this.createKeywordMapper({"variable.language":"this",keyword:"abstract|event|new|struct|as|explicit|null|switch|base|extern|object|this|bool|false|operator|throw|break|finally|out|true|byte|fixed|override|try|case|float|params|typeof|catch|for|private|uint|char|foreach|protected|ulong|checked|goto|public|unchecked|class|if|readonly|unsafe|const|implicit|ref|ushort|continue|in|return|using|decimal|int|sbyte|virtual|default|interface|sealed|volatile|delegate|internal|short|void|do|is|sizeof|while|double|lock|stackalloc|else|long|static|enum|namespace|string|var|dynamic","constant.language":"null|true|false"},"identifier");this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},{token:"string",regex:/'(?:.|\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n]))'/},{token:"string",start:'"',end:'"|$',next:[{token:"constant.language.escape",regex:/\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n])/},{token:"invalid",regex:/\\./}]},{token:"string",start:'@"',end:'"',next:[{token:"constant.language.escape",regex:'""'}]},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:e,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"keyword",regex:"^\\s*#(if|else|elif|endif|define|undef|warning|error|line|region|endregion|pragma)"},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}]},this.embedRules(i,"doc-",[i.getEndRule("start")]),this.normalizeRules()};r.inherits(o,s),t.CSharpHighlightRules=o}),ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},{token:"comment.doc.tag",regex:"\\bTODO\\b"},{defaultToken:"comment.doc"}]}};r.inherits(s,i),s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){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=function(e){var t=-1;e.multiSelect&&(t=e.selection.id,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:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(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=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(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&&h.isAutoInsertedClosing(u,a,i))return h.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=="("){c(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=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(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&&h.isAutoInsertedClosing(u,a,i))return h.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=="["){c(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){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column);if(l=="\\")return null;var p=r.getTokens(o.start.row),d=0,v,m=-1;for(var g=0;go.start.column)break;d+=p[g].value.length}if(!v||m<0&&v.type!=="comment"&&(v.type!=="string"||o.start.column!==v.value.length+d-1&&v.value.lastIndexOf(s)===v.value.length-1)){if(!h.isSaneInsertion(n,r))return;return{text:s+s,selection:[1,1]}}if(v&&v.type==="string"){var y=f.substring(a.column,a.column+1);if(y==s)return{text:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.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)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.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++},h.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++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.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},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/csharp",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/cstyle"],function(e,t,n){var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.usingRe=/^\s*using \S/,this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);if(!r){var i=e.getLine(n);if(/^\s*#region\b/.test(i))return"start";var s=this.usingRe;if(s.test(i)){var o=e.getLine(n-1),u=e.getLine(n+1);if(!s.test(o)&&s.test(u))return"start"}}return r},this.getFoldWidgetRange=function(e,t,n){var r=this.getFoldWidgetRangeBase(e,t,n);if(r)return r;var i=e.getLine(n);if(this.usingRe.test(i))return this.getUsingStatementBlock(e,i,n);if(/^\s*#region\b/.test(i))return this.getRegionBlock(e,i,n)},this.getUsingStatementBlock=function(e,t,n){var r=t.match(this.usingRe)[0].length-1,s=e.getLength(),o=n,u=n;while(++no){var a=e.getLine(u).length;return new i(o,r,u,a)}},this.getRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*#(end)?region\b/,a=1;while(++no){var c=t.search(/\S/);return new i(o,r,l,c)}}}.call(o.prototype)}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n),s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)}}.call(o.prototype)}) \ No newline at end of file +ace.define("ace/mode/csharp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/csharp_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/csharp"],function(e,t,n){var r=e("../lib/oop"),i=e("./text").Mode,s=e("../tokenizer").Tokenizer,o=e("./csharp_highlight_rules").CSharpHighlightRules,u=e("./matching_brace_outdent").MatchingBraceOutdent,a=e("./behaviour/cstyle").CstyleBehaviour,f=e("./folding/csharp").FoldMode,l=function(){this.HighlightRules=o,this.$outdent=new u,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[]\s*$/);o&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){return null},this.$id="ace/mode/csharp"}.call(l.prototype),t.Mode=l}),ace.define("ace/mode/csharp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e=this.createKeywordMapper({"variable.language":"this",keyword:"abstract|exchange|new|struct|as|explicit|null|switch|base|extern|object|this|bool|false|operator|throw|break|finally|out|true|byte|fixed|override|try|case|float|params|typeof|catch|for|private|uint|char|foreach|protected|ulong|checked|goto|public|unchecked|class|if|readonly|unsafe|const|implicit|ref|ushort|continue|in|return|using|decimal|int|sbyte|virtual|default|interface|sealed|volatile|delegate|internal|short|void|do|is|sizeof|while|double|lock|stackalloc|else|long|static|enum|namespace|string|var|dynamic","constant.language":"null|true|false"},"identifier");this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},{token:"string",regex:/'(?:.|\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n]))'/},{token:"string",start:'"',end:'"|$',next:[{token:"constant.language.escape",regex:/\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n])/},{token:"invalid",regex:/\\./}]},{token:"string",start:'@"',end:'"',next:[{token:"constant.language.escape",regex:'""'}]},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:e,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"keyword",regex:"^\\s*#(if|else|elif|endif|define|undef|warning|error|line|region|endregion|pragma)"},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}]},this.embedRules(i,"doc-",[i.getEndRule("start")]),this.normalizeRules()};r.inherits(o,s),t.CSharpHighlightRules=o}),ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},{token:"comment.doc.tag",regex:"\\bTODO\\b"},{defaultToken:"comment.doc"}]}};r.inherits(s,i),s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){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=function(e){var t=-1;e.multiSelect&&(t=e.selection.id,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:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(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=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(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&&h.isAutoInsertedClosing(u,a,i))return h.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=="("){c(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=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(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&&h.isAutoInsertedClosing(u,a,i))return h.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=="["){c(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){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column);if(l=="\\")return null;var p=r.getTokens(o.start.row),d=0,v,m=-1;for(var g=0;go.start.column)break;d+=p[g].value.length}if(!v||m<0&&v.type!=="comment"&&(v.type!=="string"||o.start.column!==v.value.length+d-1&&v.value.lastIndexOf(s)===v.value.length-1)){if(!h.isSaneInsertion(n,r))return;return{text:s+s,selection:[1,1]}}if(v&&v.type==="string"){var y=f.substring(a.column,a.column+1);if(y==s)return{text:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.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)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.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++},h.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++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.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},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/csharp",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/cstyle"],function(e,t,n){var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.usingRe=/^\s*using \S/,this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);if(!r){var i=e.getLine(n);if(/^\s*#region\b/.test(i))return"start";var s=this.usingRe;if(s.test(i)){var o=e.getLine(n-1),u=e.getLine(n+1);if(!s.test(o)&&s.test(u))return"start"}}return r},this.getFoldWidgetRange=function(e,t,n){var r=this.getFoldWidgetRangeBase(e,t,n);if(r)return r;var i=e.getLine(n);if(this.usingRe.test(i))return this.getUsingStatementBlock(e,i,n);if(/^\s*#region\b/.test(i))return this.getRegionBlock(e,i,n)},this.getUsingStatementBlock=function(e,t,n){var r=t.match(this.usingRe)[0].length-1,s=e.getLength(),o=n,u=n;while(++no){var a=e.getLine(u).length;return new i(o,r,u,a)}},this.getRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*#(end)?region\b/,a=1;while(++no){var c=t.search(/\S/);return new i(o,r,l,c)}}}.call(o.prototype)}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n),s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)}}.call(o.prototype)}) \ No newline at end of file diff --git a/contact-center/app/src/main/resources/static/js/ace/mode-lsl.js b/contact-center/app/src/main/resources/static/js/ace/mode-lsl.js index f3bef6d8..592525cc 100644 --- a/contact-center/app/src/main/resources/static/js/ace/mode-lsl.js +++ b/contact-center/app/src/main/resources/static/js/ace/mode-lsl.js @@ -1 +1 @@ -ace.define("ace/mode/lsl",["require","exports","module","ace/tokenizer","ace/mode/lsl_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/text","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/lib/oop"],function(e,t,n){var r=e("../tokenizer").Tokenizer,i=e("./lsl_highlight_rules").LSLHighlightRules,s=e("./matching_brace_outdent").MatchingBraceOutdent,o=e("../range").Range,u=e("./text").Mode,a=e("./behaviour/cstyle").CstyleBehaviour,f=e("./folding/cstyle").FoldMode,l=e("../lib/oop"),c=function(){this.HighlightRules=i,this.$outdent=new s,this.$behaviour=new a,this.foldingRules=new f};l.inherits(c,u),function(){this.lineCommentStart=["//"],this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type==="comment.block.lsl")return r;if(e==="start"){var u=t.match(/^.*[\{\(\[]\s*$/);u&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/lsl"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/lsl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){function s(){var e=this.createKeywordMapper({"constant.language.float.lsl":"DEG_TO_RAD|PI|PI_BY_TWO|RAD_TO_DEG|SQRT2|TWO_PI","constant.language.integer.lsl":"ACTIVE|AGENT|AGENT_ALWAYS_RUN|AGENT_ATTACHMENTS|AGENT_AUTOPILOT|AGENT_AWAY|AGENT_BUSY|AGENT_BY_LEGACY_NAME|AGENT_BY_USERNAME|AGENT_CROUCHING|AGENT_FLYING|AGENT_IN_AIR|AGENT_LIST_PARCEL|AGENT_LIST_PARCEL_OWNER|AGENT_LIST_REGION|AGENT_MOUSELOOK|AGENT_ON_OBJECT|AGENT_SCRIPTED|AGENT_SITTING|AGENT_TYPING|AGENT_WALKING|ALL_SIDES|ANIM_ON|ATTACH_AVATAR_CENTER|ATTACH_BACK|ATTACH_BELLY|ATTACH_CHEST|ATTACH_CHIN|ATTACH_HEAD|ATTACH_HUD_BOTTOM|ATTACH_HUD_BOTTOM_LEFT|ATTACH_HUD_BOTTOM_RIGHT|ATTACH_HUD_CENTER_1|ATTACH_HUD_CENTER_2|ATTACH_HUD_TOP_CENTER|ATTACH_HUD_TOP_LEFT|ATTACH_HUD_TOP_RIGHT|ATTACH_LEAR|ATTACH_LEFT_PEC|ATTACH_LEYE|ATTACH_LFOOT|ATTACH_LHAND|ATTACH_LHIP|ATTACH_LLARM|ATTACH_LLLEG|ATTACH_LSHOULDER|ATTACH_LUARM|ATTACH_LULEG|ATTACH_MOUTH|ATTACH_NECK|ATTACH_NOSE|ATTACH_PELVIS|ATTACH_REAR|ATTACH_REYE|ATTACH_RFOOT|ATTACH_RHAND|ATTACH_RHIP|ATTACH_RIGHT_PEC|ATTACH_RLARM|ATTACH_RLLEG|ATTACH_RSHOULDER|ATTACH_RUARM|ATTACH_RULEG|AVOID_CHARACTERS|AVOID_DYNAMIC_OBSTACLES|AVOID_NONE|CAMERA_ACTIVE|CAMERA_BEHINDNESS_ANGLE|CAMERA_BEHINDNESS_LAG|CAMERA_DISTANCE|CAMERA_FOCUS|CAMERA_FOCUS_LAG|CAMERA_FOCUS_LOCKED|CAMERA_FOCUS_OFFSET|CAMERA_FOCUS_THRESHOLD|CAMERA_PITCH|CAMERA_POSITION|CAMERA_POSITION_LAG|CAMERA_POSITION_LOCKED|CAMERA_POSITION_THRESHOLD|CHANGED_ALLOWED_DROP|CHANGED_COLOR|CHANGED_INVENTORY|CHANGED_LINK|CHANGED_MEDIA|CHANGED_OWNER|CHANGED_REGION|CHANGED_REGION_START|CHANGED_SCALE|CHANGED_SHAPE|CHANGED_TELEPORT|CHANGED_TEXTURE|CHARACTER_ACCOUNT_FOR_SKIPPED_FRAMES|CHARACTER_AVOIDANCE_MODE|CHARACTER_CMD_JUMP|CHARACTER_CMD_SMOOTH_STOP|CHARACTER_CMD_STOP|CHARACTER_DESIRED_SPEED|CHARACTER_DESIRED_TURN_SPEED|CHARACTER_LENGTH|CHARACTER_MAX_ACCEL|CHARACTER_MAX_DECEL|CHARACTER_MAX_SPEED|CHARACTER_MAX_TURN_RADIUS|CHARACTER_ORIENTATION|CHARACTER_RADIUS|CHARACTER_STAY_WITHIN_PARCEL|CHARACTER_TYPE|CHARACTER_TYPE_A|CHARACTER_TYPE_B|CHARACTER_TYPE_C|CHARACTER_TYPE_D|CHARACTER_TYPE_NONE|CLICK_ACTION_BUY|CLICK_ACTION_NONE|CLICK_ACTION_OPEN|CLICK_ACTION_OPEN_MEDIA|CLICK_ACTION_PAY|CLICK_ACTION_PLAY|CLICK_ACTION_SIT|CLICK_ACTION_TOUCH|CONTENT_TYPE_ATOM|CONTENT_TYPE_FORM|CONTENT_TYPE_HTML|CONTENT_TYPE_JSON|CONTENT_TYPE_LLSD|CONTENT_TYPE_RSS|CONTENT_TYPE_TEXT|CONTENT_TYPE_XHTML|CONTENT_TYPE_XML|CONTROL_BACK|CONTROL_DOWN|CONTROL_FWD|CONTROL_LBUTTON|CONTROL_LEFT|CONTROL_ML_LBUTTON|CONTROL_RIGHT|CONTROL_ROT_LEFT|CONTROL_ROT_RIGHT|CONTROL_UP|DATA_BORN|DATA_NAME|DATA_ONLINE|DATA_PAYINFO|DATA_SIM_POS|DATA_SIM_RATING|DATA_SIM_STATUS|DEBUG_CHANNEL|DENSITY|ERR_GENERIC|ERR_MALFORMED_PARAMS|ERR_PARCEL_PERMISSIONS|ERR_RUNTIME_PERMISSIONS|ERR_THROTTLED|ESTATE_ACCESS_ALLOWED_AGENT_ADD|ESTATE_ACCESS_ALLOWED_AGENT_REMOVE|ESTATE_ACCESS_ALLOWED_GROUP_ADD|ESTATE_ACCESS_ALLOWED_GROUP_REMOVE|ESTATE_ACCESS_BANNED_AGENT_ADD|ESTATE_ACCESS_BANNED_AGENT_REMOVE|FORCE_DIRECT_PATH|FRICTION|GCNP_RADIUS|GCNP_STATIC|GRAVITY_MULTIPLIER|HORIZONTAL|HTTP_BODY_MAXLENGTH|HTTP_BODY_TRUNCATED|HTTP_CUSTOM_HEADER|HTTP_METHOD|HTTP_MIMETYPE|HTTP_PRAGMA_NO_CACHE|HTTP_VERBOSE_THROTTLE|HTTP_VERIFY_CERT|INVENTORY_ALL|INVENTORY_ANIMATION|INVENTORY_BODYPART|INVENTORY_CLOTHING|INVENTORY_GESTURE|INVENTORY_LANDMARK|INVENTORY_NONE|INVENTORY_NOTECARD|INVENTORY_OBJECT|INVENTORY_SCRIPT|INVENTORY_SOUND|INVENTORY_TEXTURE|JSON_APPEND|KFM_CMD_PAUSE|KFM_CMD_PLAY|KFM_CMD_SET_MODE|KFM_CMD_STOP|KFM_COMMAND|KFM_DATA|KFM_FORWARD|KFM_LOOP|KFM_MODE|KFM_PING_PONG|KFM_REVERSE|KFM_ROTATION|KFM_TRANSLATION|LAND_LEVEL|LAND_LOWER|LAND_NOISE|LAND_RAISE|LAND_REVERT|LAND_SMOOTH|LINK_ALL_CHILDREN|LINK_ALL_OTHERS|LINK_ROOT|LINK_SET|LINK_THIS|LIST_STAT_GEOMETRIC_MEAN|LIST_STAT_MAX|LIST_STAT_MEAN|LIST_STAT_MEDIAN|LIST_STAT_MIN|LIST_STAT_NUM_COUNT|LIST_STAT_RANGE|LIST_STAT_STD_DEV|LIST_STAT_SUM|LIST_STAT_SUM_SQUARES|LOOP|MASK_BASE|MASK_EVERYONE|MASK_GROUP|MASK_NEXT|MASK_OWNER|OBJECT_ATTACHED_POINT|OBJECT_CHARACTER_TIME|OBJECT_CREATOR|OBJECT_DESC|OBJECT_GROUP|OBJECT_NAME|OBJECT_OWNER|OBJECT_PATHFINDING_TYPE|OBJECT_PHANTOM|OBJECT_PHYSICS|OBJECT_PHYSICS_COST|OBJECT_POS|OBJECT_PRIM_EQUIVALENCE|OBJECT_RETURN_PARCEL|OBJECT_RETURN_PARCEL_OWNER|OBJECT_RETURN_REGION|OBJECT_ROOT|OBJECT_ROT|OBJECT_RUNNING_SCRIPT_COUNT|OBJECT_SCRIPT_MEMORY|OBJECT_SCRIPT_TIME|OBJECT_SERVER_COST|OBJECT_STREAMING_COST|OBJECT_TEMP_ON_REZ|OBJECT_TOTAL_SCRIPT_COUNT|OBJECT_UNKNOWN_DETAIL|OBJECT_VELOCITY|OPT_AVATAR|OPT_CHARACTER|OPT_EXCLUSION_VOLUME|OPT_LEGACY_LINKSET|OPT_MATERIAL_VOLUME|OPT_OTHER|OPT_STATIC_OBSTACLE|OPT_WALKABLE|PARCEL_COUNT_GROUP|PARCEL_COUNT_OTHER|PARCEL_COUNT_OWNER|PARCEL_COUNT_SELECTED|PARCEL_COUNT_TEMP|PARCEL_COUNT_TOTAL|PARCEL_DETAILS_AREA|PARCEL_DETAILS_DESC|PARCEL_DETAILS_GROUP|PARCEL_DETAILS_ID|PARCEL_DETAILS_NAME|PARCEL_DETAILS_OWNER|PARCEL_DETAILS_SEE_AVATARS|PARCEL_FLAG_ALLOW_ALL_OBJECT_ENTRY|PARCEL_FLAG_ALLOW_CREATE_GROUP_OBJECTS|PARCEL_FLAG_ALLOW_CREATE_OBJECTS|PARCEL_FLAG_ALLOW_DAMAGE|PARCEL_FLAG_ALLOW_FLY|PARCEL_FLAG_ALLOW_GROUP_OBJECT_ENTRY|PARCEL_FLAG_ALLOW_GROUP_SCRIPTS|PARCEL_FLAG_ALLOW_LANDMARK|PARCEL_FLAG_ALLOW_SCRIPTS|PARCEL_FLAG_ALLOW_TERRAFORM|PARCEL_FLAG_LOCAL_SOUND_ONLY|PARCEL_FLAG_RESTRICT_PUSHOBJECT|PARCEL_FLAG_USE_ACCESS_GROUP|PARCEL_FLAG_USE_ACCESS_LIST|PARCEL_FLAG_USE_BAN_LIST|PARCEL_FLAG_USE_LAND_PASS_LIST|PARCEL_MEDIA_COMMAND_AGENT|PARCEL_MEDIA_COMMAND_AUTO_ALIGN|PARCEL_MEDIA_COMMAND_DESC|PARCEL_MEDIA_COMMAND_LOOP|PARCEL_MEDIA_COMMAND_LOOP_SET|PARCEL_MEDIA_COMMAND_PAUSE|PARCEL_MEDIA_COMMAND_PLAY|PARCEL_MEDIA_COMMAND_SIZE|PARCEL_MEDIA_COMMAND_STOP|PARCEL_MEDIA_COMMAND_TEXTURE|PARCEL_MEDIA_COMMAND_TIME|PARCEL_MEDIA_COMMAND_TYPE|PARCEL_MEDIA_COMMAND_UNLOAD|PARCEL_MEDIA_COMMAND_URL|PASSIVE|PATROL_PAUSE_AT_WAYPOINTS|PAY_DEFAULT|PAY_HIDE|PAYMENT_INFO_ON_FILE|PAYMENT_INFO_USED|PERM_ALL|PERM_COPY|PERM_MODIFY|PERM_MOVE|PERM_TRANSFER|PERMISSION_ATTACH|PERMISSION_CHANGE_LINKS|PERMISSION_CONTROL_CAMERA|PERMISSION_DEBIT|PERMISSION_OVERRIDE_ANIMATIONS|PERMISSION_RETURN_OBJECTS|PERMISSION_SILENT_ESTATE_MANAGEMENT|PERMISSION_TAKE_CONTROLS|PERMISSION_TELEPORT|PERMISSION_TRACK_CAMERA|PERMISSION_TRIGGER_ANIMATION|PING_PONG|PRIM_BUMP_BARK|PRIM_BUMP_BLOBS|PRIM_BUMP_BRICKS|PRIM_BUMP_BRIGHT|PRIM_BUMP_CHECKER|PRIM_BUMP_CONCRETE|PRIM_BUMP_DARK|PRIM_BUMP_DISKS|PRIM_BUMP_GRAVEL|PRIM_BUMP_LARGETILE|PRIM_BUMP_NONE|PRIM_BUMP_SHINY|PRIM_BUMP_SIDING|PRIM_BUMP_STONE|PRIM_BUMP_STUCCO|PRIM_BUMP_SUCTION|PRIM_BUMP_TILE|PRIM_BUMP_WEAVE|PRIM_BUMP_WOOD|PRIM_COLOR|PRIM_DESC|PRIM_FLEXIBLE|PRIM_FULLBRIGHT|PRIM_GLOW|PRIM_HOLE_CIRCLE|PRIM_HOLE_DEFAULT|PRIM_HOLE_SQUARE|PRIM_HOLE_TRIANGLE|PRIM_LINK_TARGET|PRIM_MATERIAL|PRIM_MATERIAL_FLESH|PRIM_MATERIAL_GLASS|PRIM_MATERIAL_METAL|PRIM_MATERIAL_PLASTIC|PRIM_MATERIAL_RUBBER|PRIM_MATERIAL_STONE|PRIM_MATERIAL_WOOD|PRIM_MEDIA_ALT_IMAGE_ENABLE|PRIM_MEDIA_AUTO_LOOP|PRIM_MEDIA_AUTO_PLAY|PRIM_MEDIA_AUTO_SCALE|PRIM_MEDIA_AUTO_ZOOM|PRIM_MEDIA_CONTROLS|PRIM_MEDIA_CONTROLS_MINI|PRIM_MEDIA_CONTROLS_STANDARD|PRIM_MEDIA_CURRENT_URL|PRIM_MEDIA_FIRST_CLICK_INTERACT|PRIM_MEDIA_HEIGHT_PIXELS|PRIM_MEDIA_HOME_URL|PRIM_MEDIA_MAX_HEIGHT_PIXELS|PRIM_MEDIA_MAX_URL_LENGTH|PRIM_MEDIA_MAX_WHITELIST_COUNT|PRIM_MEDIA_MAX_WHITELIST_SIZE|PRIM_MEDIA_MAX_WIDTH_PIXELS|PRIM_MEDIA_PARAM_MAX|PRIM_MEDIA_PERM_ANYONE|PRIM_MEDIA_PERM_GROUP|PRIM_MEDIA_PERM_NONE|PRIM_MEDIA_PERM_OWNER|PRIM_MEDIA_PERMS_CONTROL|PRIM_MEDIA_PERMS_INTERACT|PRIM_MEDIA_WHITELIST|PRIM_MEDIA_WHITELIST_ENABLE|PRIM_MEDIA_WIDTH_PIXELS|PRIM_NAME|PRIM_OMEGA|PRIM_PHANTOM|PRIM_PHYSICS|PRIM_PHYSICS_SHAPE_CONVEX|PRIM_PHYSICS_SHAPE_NONE|PRIM_PHYSICS_SHAPE_PRIM|PRIM_PHYSICS_SHAPE_TYPE|PRIM_POINT_LIGHT|PRIM_POS_LOCAL|PRIM_POSITION|PRIM_ROT_LOCAL|PRIM_ROTATION|PRIM_SCULPT_FLAG_INVERT|PRIM_SCULPT_FLAG_MIRROR|PRIM_SCULPT_TYPE_CYLINDER|PRIM_SCULPT_TYPE_MASK|PRIM_SCULPT_TYPE_PLANE|PRIM_SCULPT_TYPE_SPHERE|PRIM_SCULPT_TYPE_TORUS|PRIM_SHINY_HIGH|PRIM_SHINY_LOW|PRIM_SHINY_MEDIUM|PRIM_SHINY_NONE|PRIM_SIZE|PRIM_SLICE|PRIM_TEMP_ON_REZ|PRIM_TEXGEN|PRIM_TEXGEN_DEFAULT|PRIM_TEXGEN_PLANAR|PRIM_TEXT|PRIM_TEXTURE|PRIM_TYPE|PRIM_TYPE_BOX|PRIM_TYPE_CYLINDER|PRIM_TYPE_PRISM|PRIM_TYPE_RING|PRIM_TYPE_SCULPT|PRIM_TYPE_SPHERE|PRIM_TYPE_TORUS|PRIM_TYPE_TUBE|PROFILE_NONE|PROFILE_SCRIPT_MEMORY|PSYS_PART_BOUNCE_MASK|PSYS_PART_EMISSIVE_MASK|PSYS_PART_END_ALPHA|PSYS_PART_END_COLOR|PSYS_PART_END_SCALE|PSYS_PART_FLAGS|PSYS_PART_FOLLOW_SRC_MASK|PSYS_PART_FOLLOW_VELOCITY_MASK|PSYS_PART_INTERP_COLOR_MASK|PSYS_PART_INTERP_SCALE_MASK|PSYS_PART_MAX_AGE|PSYS_PART_START_ALPHA|PSYS_PART_START_COLOR|PSYS_PART_START_SCALE|PSYS_PART_TARGET_LINEAR_MASK|PSYS_PART_TARGET_POS_MASK|PSYS_PART_WIND_MASK|PSYS_SRC_ACCEL|PSYS_SRC_ANGLE_BEGIN|PSYS_SRC_ANGLE_END|PSYS_SRC_BURST_PART_COUNT|PSYS_SRC_BURST_RADIUS|PSYS_SRC_BURST_RATE|PSYS_SRC_BURST_SPEED_MAX|PSYS_SRC_BURST_SPEED_MIN|PSYS_SRC_MAX_AGE|PSYS_SRC_OMEGA|PSYS_SRC_PATTERN|PSYS_SRC_PATTERN_ANGLE|PSYS_SRC_PATTERN_ANGLE_CONE|PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY|PSYS_SRC_PATTERN_DROP|PSYS_SRC_PATTERN_EXPLODE|PSYS_SRC_TARGET_KEY|PSYS_SRC_TEXTURE|PU_EVADE_HIDDEN|PU_EVADE_SPOTTED|PU_FAILURE_DYNAMIC_PATHFINDING_DISABLED|PU_FAILURE_INVALID_GOAL|PU_FAILURE_INVALID_START|PU_FAILURE_NO_NAVMESH|PU_FAILURE_NO_VALID_DESTINATION|PU_FAILURE_OTHER|PU_FAILURE_PARCEL_UNREACHABLE|PU_FAILURE_TARGET_GONE|PU_FAILURE_UNREACHABLE|PU_GOAL_REACHED|PU_SLOWDOWN_DISTANCE_REACHED|PUBLIC_CHANNEL|PURSUIT_FUZZ_FACTOR|PURSUIT_GOAL_TOLERANCE|PURSUIT_INTERCEPT|PURSUIT_OFFSET|RC_DATA_FLAGS|RC_DETECT_PHANTOM|RC_GET_LINK_NUM|RC_GET_NORMAL|RC_GET_ROOT_KEY|RC_MAX_HITS|RC_REJECT_AGENTS|RC_REJECT_LAND|RC_REJECT_NONPHYSICAL|RC_REJECT_PHYSICAL|RC_REJECT_TYPES|RCERR_CAST_TIME_EXCEEDED|RCERR_SIM_PERF_LOW|RCERR_UNKNOWN|REGION_FLAG_ALLOW_DAMAGE|REGION_FLAG_ALLOW_DIRECT_TELEPORT|REGION_FLAG_BLOCK_FLY|REGION_FLAG_BLOCK_TERRAFORM|REGION_FLAG_DISABLE_COLLISIONS|REGION_FLAG_DISABLE_PHYSICS|REGION_FLAG_FIXED_SUN|REGION_FLAG_RESTRICT_PUSHOBJECT|REGION_FLAG_SANDBOX|REMOTE_DATA_CHANNEL|REMOTE_DATA_REPLY|REMOTE_DATA_REQUEST|REQUIRE_LINE_OF_SIGHT|RESTITUTION|REVERSE|ROTATE|SCALE|SCRIPTED|SIM_STAT_PCT_CHARS_STEPPED|SMOOTH|STATUS_BLOCK_GRAB|STATUS_BLOCK_GRAB_OBJECT|STATUS_BOUNDS_ERROR|STATUS_CAST_SHADOWS|STATUS_DIE_AT_EDGE|STATUS_INTERNAL_ERROR|STATUS_MALFORMED_PARAMS|STATUS_NOT_FOUND|STATUS_NOT_SUPPORTED|STATUS_OK|STATUS_PHANTOM|STATUS_PHYSICS|STATUS_RETURN_AT_EDGE|STATUS_ROTATE_X|STATUS_ROTATE_Y|STATUS_ROTATE_Z|STATUS_SANDBOX|STATUS_TYPE_MISMATCH|STATUS_WHITELIST_FAILED|STRING_TRIM|STRING_TRIM_HEAD|STRING_TRIM_TAIL|TOUCH_INVALID_FACE|TRAVERSAL_TYPE|TRAVERSAL_TYPE_FAST|TRAVERSAL_TYPE_NONE|TRAVERSAL_TYPE_SLOW|TYPE_FLOAT|TYPE_INTEGER|TYPE_INVALID|TYPE_KEY|TYPE_ROTATION|TYPE_STRING|TYPE_VECTOR|VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY|VEHICLE_ANGULAR_DEFLECTION_TIMESCALE|VEHICLE_ANGULAR_FRICTION_TIMESCALE|VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE|VEHICLE_ANGULAR_MOTOR_DIRECTION|VEHICLE_ANGULAR_MOTOR_TIMESCALE|VEHICLE_BANKING_EFFICIENCY|VEHICLE_BANKING_MIX|VEHICLE_BANKING_TIMESCALE|VEHICLE_BUOYANCY|VEHICLE_FLAG_CAMERA_DECOUPLED|VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT|VEHICLE_FLAG_HOVER_TERRAIN_ONLY|VEHICLE_FLAG_HOVER_UP_ONLY|VEHICLE_FLAG_HOVER_WATER_ONLY|VEHICLE_FLAG_LIMIT_MOTOR_UP|VEHICLE_FLAG_LIMIT_ROLL_ONLY|VEHICLE_FLAG_MOUSELOOK_BANK|VEHICLE_FLAG_MOUSELOOK_STEER|VEHICLE_FLAG_NO_DEFLECTION_UP|VEHICLE_HOVER_EFFICIENCY|VEHICLE_HOVER_HEIGHT|VEHICLE_HOVER_TIMESCALE|VEHICLE_LINEAR_DEFLECTION_EFFICIENCY|VEHICLE_LINEAR_DEFLECTION_TIMESCALE|VEHICLE_LINEAR_FRICTION_TIMESCALE|VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE|VEHICLE_LINEAR_MOTOR_DIRECTION|VEHICLE_LINEAR_MOTOR_OFFSET|VEHICLE_LINEAR_MOTOR_TIMESCALE|VEHICLE_REFERENCE_FRAME|VEHICLE_TYPE_AIRPLANE|VEHICLE_TYPE_BALLOON|VEHICLE_TYPE_BOAT|VEHICLE_TYPE_CAR|VEHICLE_TYPE_NONE|VEHICLE_TYPE_SLED|VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY|VEHICLE_VERTICAL_ATTRACTION_TIMESCALE|VERTICAL|WANDER_PAUSE_AT_WAYPOINTS","constant.language.integer.boolean.lsl":"FALSE|TRUE","constant.language.quaternion.lsl":"ZERO_ROTATION","constant.language.string.lsl":"EOF|JSON_ARRAY|JSON_FALSE|JSON_INVALID|JSON_NULL|JSON_NUMBER|JSON_OBJECT|JSON_STRING|JSON_TRUE|NULL_KEY|TEXTURE_BLANK|TEXTURE_DEFAULT|TEXTURE_MEDIA|TEXTURE_PLYWOOD|TEXTURE_TRANSPARENT|URL_REQUEST_DENIED|URL_REQUEST_GRANTED","constant.language.vector.lsl":"TOUCH_INVALID_TEXCOORD|TOUCH_INVALID_VECTOR|ZERO_VECTOR","invalid.broken.lsl":"LAND_LARGE_BRUSH|LAND_MEDIUM_BRUSH|LAND_SMALL_BRUSH","invalid.deprecated.lsl":"ATTACH_LPEC|ATTACH_RPEC|CHARACTER_MAX_ANGULAR_ACCEL|CHARACTER_MAX_ANGULAR_SPEED|CHARACTER_TURN_SPEED_MULTIPLIER|DATA_RATING|PRIM_CAST_SHADOWS|PRIM_MATERIAL_LIGHT|PRIM_PHYSICS_MATERIAL|PRIM_TYPE_LEGACY|PSYS_SRC_INNERANGLE|PSYS_SRC_OUTERANGLE|VEHICLE_FLAG_NO_FLY_UP|llCloud|llGodLikeRezObject|llMakeExplosion|llMakeFire|llMakeFountain|llMakeSmoke|llRemoteDataSetRegion|llSetInventoryPermMask|llSetObjectPermMask|llSound|llSoundPreload|llXorBase64Strings|llXorBase64StringsCorrect","invalid.godmode.lsl":"llGodLikeRezObject|llSetInventoryPermMask|llSetObjectPermMask","invalid.illegal.lsl":"print","invalid.unimplemented.lsl":"CHARACTER_MAX_ANGULAR_ACCEL|CHARACTER_MAX_ANGULAR_SPEED|CHARACTER_TURN_SPEED_MULTIPLIER|PERMISSION_CHANGE_JOINTS|PERMISSION_CHANGE_PERMISSIONS|PERMISSION_RELEASE_OWNERSHIP|PERMISSION_REMAP_CONTROLS|PRIM_PHYSICS_MATERIAL|PRIM_TYPE_LEGACY|PSYS_SRC_OBJ_REL_MASK|event|llCollisionSprite|llPointAt|llRefreshPrimURL|llReleaseCamera|llRemoteLoadScript|llSetPrimURL|llStopPointAt|llTakeCamera","keyword.control.lsl":"do|else|for|if|jump|return|while","storage.type.lsl":"float|integer|key|list|quaternion|rotation|string|vector","support.function.lsl":"llAbs|llAcos|llAddToLandBanList|llAddToLandPassList|llAdjustSoundVolume|llAllowInventoryDrop|llAngleBetween|llApplyImpulse|llApplyRotationalImpulse|llAsin|llAtan2|llAttachToAvatar|llAttachToAvatarTemp|llAvatarOnLinkSitTarget|llAvatarOnSitTarget|llAxes2Rot|llAxisAngle2Rot|llBase64ToInteger|llBase64ToString|llBreakAllLinks|llBreakLink|llCastRay|llCeil|llClearCameraParams|llClearLinkMedia|llClearPrimMedia|llCloseRemoteDataChannel|llCollisionFilter|llCollisionSound|llCos|llCreateCharacter|llCreateLink|llCSV2List|llDeleteCharacter|llDeleteSubList|llDeleteSubString|llDetachFromAvatar|llDetectedGrab|llDetectedGroup|llDetectedKey|llDetectedLinkNumber|llDetectedName|llDetectedOwner|llDetectedPos|llDetectedRot|llDetectedTouchBinormal|llDetectedTouchFace|llDetectedTouchNormal|llDetectedTouchPos|llDetectedTouchST|llDetectedTouchUV|llDetectedType|llDetectedVel|llDialog|llDie|llDumpList2String|llEdgeOfWorld|llEjectFromLand|llEmail|llEscapeURL|llEuler2Rot|llExecCharacterCmd|llEvade|llFabs|llFleeFrom|llFloor|llForceMouselook|llFrand|llGenerateKey|llGetAccel|llGetAgentInfo|llGetAgentLanguage|llGetAgentList|llGetAgentSize|llGetAlpha|llGetAndResetTime|llGetAnimation|llGetAnimationList|llGetAnimationOverride|llGetAttached|llGetBoundingBox|llGetCameraPos|llGetCameraRot|llGetCenterOfMass|llGetClosestNavPoint|llGetColor|llGetCreator|llGetDate|llGetDisplayName|llGetEnergy|llGetEnv|llGetForce|llGetFreeMemory|llGetFreeURLs|llGetGeometricCenter|llGetGMTclock|llGetHTTPHeader|llGetInventoryCreator|llGetInventoryKey|llGetInventoryName|llGetInventoryNumber|llGetInventoryPermMask|llGetInventoryType|llGetKey|llGetLandOwnerAt|llGetLinkKey|llGetLinkMedia|llGetLinkName|llGetLinkNumber|llGetLinkNumberOfSides|llGetLinkPrimitiveParams|llGetListEntryType|llGetListLength|llGetLocalPos|llGetLocalRot|llGetMass|llGetMassMKS|llGetMemoryLimit|llGetNextEmail|llGetNotecardLine|llGetNumberOfNotecardLines|llGetNumberOfPrims|llGetNumberOfSides|llGetObjectDesc|llGetObjectDetails|llGetObjectMass|llGetObjectName|llGetObjectPermMask|llGetObjectPrimCount|llGetOmega|llGetOwner|llGetOwnerKey|llGetParcelDetails|llGetParcelFlags|llGetParcelMaxPrims|llGetParcelMusicURL|llGetParcelPrimCount|llGetParcelPrimOwners|llGetPermissions|llGetPermissionsKey|llGetPhysicsMaterial|llGetPos|llGetPrimitiveParams|llGetPrimMediaParams|llGetRegionAgentCount|llGetRegionCorner|llGetRegionFlags|llGetRegionFPS|llGetRegionName|llGetRegionTimeDilation|llGetRootPosition|llGetRootRotation|llGetRot|llGetScale|llGetScriptName|llGetScriptState|llGetSimStats|llGetSimulatorHostname|llGetSPMaxMemory|llGetStartParameter|llGetStaticPath|llGetStatus|llGetSubString|llGetSunDirection|llGetTexture|llGetTextureOffset|llGetTextureRot|llGetTextureScale|llGetTime|llGetTimeOfDay|llGetTimestamp|llGetTorque|llGetUnixTime|llGetUsedMemory|llGetUsername|llGetVel|llGetWallclock|llGiveInventory|llGiveInventoryList|llGiveMoney|llGround|llGroundContour|llGroundNormal|llGroundRepel|llGroundSlope|llHTTPRequest|llHTTPResponse|llInsertString|llInstantMessage|llIntegerToBase64|llJson2List|llJsonGetValue|llJsonSetValue|llJsonValueType|llKey2Name|llLinkParticleSystem|llLinkSitTarget|llList2CSV|llList2Float|llList2Integer|llList2Json|llList2Key|llList2List|llList2ListStrided|llList2Rot|llList2String|llList2Vector|llListen|llListenControl|llListenRemove|llListFindList|llListInsertList|llListRandomize|llListReplaceList|llListSort|llListStatistics|llLoadURL|llLog|llLog10|llLookAt|llLoopSound|llLoopSoundMaster|llLoopSoundSlave|llManageEstateAccess|llMapDestination|llMD5String|llMessageLinked|llMinEventDelay|llModifyLand|llModPow|llMoveToTarget|llNavigateTo|llOffsetTexture|llOpenRemoteDataChannel|llOverMyLand|llOwnerSay|llParcelMediaCommandList|llParcelMediaQuery|llParseString2List|llParseStringKeepNulls|llParticleSystem|llPassCollisions|llPassTouches|llPatrolPoints|llPlaySound|llPlaySoundSlave|llPow|llPreloadSound|llPursue|llPushObject|llRegionSay|llRegionSayTo|llReleaseControls|llReleaseURL|llRemoteDataReply|llRemoteLoadScriptPin|llRemoveFromLandBanList|llRemoveFromLandPassList|llRemoveInventory|llRemoveVehicleFlags|llRequestAgentData|llRequestDisplayName|llRequestInventoryData|llRequestPermissions|llRequestSecureURL|llRequestSimulatorData|llRequestURL|llRequestUsername|llResetAnimationOverride|llResetLandBanList|llResetLandPassList|llResetOtherScript|llResetScript|llResetTime|llReturnObjectsByID|llReturnObjectsByOwner|llRezAtRoot|llRezObject|llRot2Angle|llRot2Axis|llRot2Euler|llRot2Fwd|llRot2Left|llRot2Up|llRotateTexture|llRotBetween|llRotLookAt|llRotTarget|llRotTargetRemove|llRound|llSameGroup|llSay|llScaleTexture|llScriptDanger|llScriptProfiler|llSendRemoteData|llSensor|llSensorRemove|llSensorRepeat|llSetAlpha|llSetAngularVelocity|llSetAnimationOverride|llSetBuoyancy|llSetCameraAtOffset|llSetCameraEyeOffset|llSetCameraParams|llSetClickAction|llSetColor|llSetContentType|llSetDamage|llSetForce|llSetForceAndTorque|llSetHoverHeight|llSetKeyframedMotion|llSetLinkAlpha|llSetLinkCamera|llSetLinkColor|llSetLinkMedia|llSetLinkPrimitiveParams|llSetLinkPrimitiveParamsFast|llSetLinkTexture|llSetLinkTextureAnim|llSetLocalRot|llSetMemoryLimit|llSetObjectDesc|llSetObjectName|llSetParcelMusicURL|llSetPayPrice|llSetPhysicsMaterial|llSetPos|llSetPrimitiveParams|llSetPrimMediaParams|llSetRegionPos|llSetRemoteScriptAccessPin|llSetRot|llSetScale|llSetScriptState|llSetSitText|llSetSoundQueueing|llSetSoundRadius|llSetStatus|llSetText|llSetTexture|llSetTextureAnim|llSetTimerEvent|llSetTorque|llSetTouchText|llSetVehicleFlags|llSetVehicleFloatParam|llSetVehicleRotationParam|llSetVehicleType|llSetVehicleVectorParam|llSetVelocity|llSHA1String|llShout|llSin|llSitTarget|llSleep|llSqrt|llStartAnimation|llStopAnimation|llStopHover|llStopLookAt|llStopMoveToTarget|llStopSound|llStringLength|llStringToBase64|llStringTrim|llSubStringIndex|llTakeControls|llTan|llTarget|llTargetOmega|llTargetRemove|llTeleportAgent|llTeleportAgentGlobalCoords|llTeleportAgentHome|llTextBox|llToLower|llToUpper|llTransferLindenDollars|llTriggerSound|llTriggerSoundLimited|llUnescapeURL|llUnSit|llUpdateCharacter|llVecDist|llVecMag|llVecNorm|llVolumeDetect|llWanderWithin|llWater|llWhisper|llWind|llXorBase64","support.function.event.lsl":"at_rot_target|at_target|attach|changed|collision|collision_end|collision_start|control|dataserver|email|http_request|http_response|land_collision|land_collision_end|land_collision_start|link_message|listen|money|moving_end|moving_start|no_sensor|not_at_rot_target|not_at_target|object_rez|on_rez|path_update|remote_data|run_time_permissions|sensor|state_entry|state_exit|timer|touch|touch_end|touch_start|transaction_result"},"identifier");this.$rules={start:[{token:"comment.line.double-slash.lsl",regex:"\\/\\/.*$"},{token:"comment.block.lsl",regex:"\\/\\*",next:"comment"},{token:"string.quoted.double.lsl",start:'"',end:'"',next:[{token:"constant.language.escape.lsl",regex:/\\[tn"\\]/}]},{token:"constant.numeric.lsl",regex:"(0[xX][0-9a-fA-F]+|[+-]?[0-9]+(?:(?:\\.[0-9]*)?(?:[eE][+-]?[0-9]+)?)?)\\b"},{token:"entity.name.state.lsl",regex:"\\b((state)\\s+\\w+|default)\\b"},{token:e,regex:"\\b[a-zA-Z_][a-zA-Z0-9_]*\\b"},{token:"support.function.user-defined.lsl",regex:/\b([a-zA-Z_]\w*)(?=\(.*?\))/},{token:"keyword.operator.lsl",regex:"\\+\\+|\\-\\-|<<|>>|&&?|\\|\\|?|\\^|~|[!%<>=*+\\-\\/]=?"},{token:"punctuation.operator.lsl",regex:"\\,|\\;"},{token:"paren.lparen.lsl",regex:"[\\[\\(\\{]"},{token:"paren.rparen.lsl",regex:"[\\]\\)\\}]"},{token:"text.lsl",regex:"\\s+"}],comment:[{token:"comment.block.lsl",regex:".*?\\*\\/",next:"start"},{token:"comment.block.lsl",regex:".+"}]},this.normalizeRules()}var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules;r.inherits(s,i),t.LSLHighlightRules=s}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){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=function(e){var t=-1;e.multiSelect&&(t=e.selection.id,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:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(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=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(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&&h.isAutoInsertedClosing(u,a,i))return h.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=="("){c(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=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(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&&h.isAutoInsertedClosing(u,a,i))return h.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=="["){c(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){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column);if(l=="\\")return null;var p=r.getTokens(o.start.row),d=0,v,m=-1;for(var g=0;go.start.column)break;d+=p[g].value.length}if(!v||m<0&&v.type!=="comment"&&(v.type!=="string"||o.start.column!==v.value.length+d-1&&v.value.lastIndexOf(s)===v.value.length-1)){if(!h.isSaneInsertion(n,r))return;return{text:s+s,selection:[1,1]}}if(v&&v.type==="string"){var y=f.substring(a.column,a.column+1);if(y==s)return{text:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.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)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.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++},h.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++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.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},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n),s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)}}.call(o.prototype)}) \ No newline at end of file +ace.define("ace/mode/lsl",["require","exports","module","ace/tokenizer","ace/mode/lsl_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/text","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/lib/oop"],function(e,t,n){var r=e("../tokenizer").Tokenizer,i=e("./lsl_highlight_rules").LSLHighlightRules,s=e("./matching_brace_outdent").MatchingBraceOutdent,o=e("../range").Range,u=e("./text").Mode,a=e("./behaviour/cstyle").CstyleBehaviour,f=e("./folding/cstyle").FoldMode,l=e("../lib/oop"),c=function(){this.HighlightRules=i,this.$outdent=new s,this.$behaviour=new a,this.foldingRules=new f};l.inherits(c,u),function(){this.lineCommentStart=["//"],this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type==="comment.block.lsl")return r;if(e==="start"){var u=t.match(/^.*[\{\(\[]\s*$/);u&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/lsl"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/lsl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){function s(){var e=this.createKeywordMapper({"constant.language.float.lsl":"DEG_TO_RAD|PI|PI_BY_TWO|RAD_TO_DEG|SQRT2|TWO_PI","constant.language.integer.lsl":"ACTIVE|AGENT|AGENT_ALWAYS_RUN|AGENT_ATTACHMENTS|AGENT_AUTOPILOT|AGENT_AWAY|AGENT_BUSY|AGENT_BY_LEGACY_NAME|AGENT_BY_USERNAME|AGENT_CROUCHING|AGENT_FLYING|AGENT_IN_AIR|AGENT_LIST_PARCEL|AGENT_LIST_PARCEL_OWNER|AGENT_LIST_REGION|AGENT_MOUSELOOK|AGENT_ON_OBJECT|AGENT_SCRIPTED|AGENT_SITTING|AGENT_TYPING|AGENT_WALKING|ALL_SIDES|ANIM_ON|ATTACH_AVATAR_CENTER|ATTACH_BACK|ATTACH_BELLY|ATTACH_CHEST|ATTACH_CHIN|ATTACH_HEAD|ATTACH_HUD_BOTTOM|ATTACH_HUD_BOTTOM_LEFT|ATTACH_HUD_BOTTOM_RIGHT|ATTACH_HUD_CENTER_1|ATTACH_HUD_CENTER_2|ATTACH_HUD_TOP_CENTER|ATTACH_HUD_TOP_LEFT|ATTACH_HUD_TOP_RIGHT|ATTACH_LEAR|ATTACH_LEFT_PEC|ATTACH_LEYE|ATTACH_LFOOT|ATTACH_LHAND|ATTACH_LHIP|ATTACH_LLARM|ATTACH_LLLEG|ATTACH_LSHOULDER|ATTACH_LUARM|ATTACH_LULEG|ATTACH_MOUTH|ATTACH_NECK|ATTACH_NOSE|ATTACH_PELVIS|ATTACH_REAR|ATTACH_REYE|ATTACH_RFOOT|ATTACH_RHAND|ATTACH_RHIP|ATTACH_RIGHT_PEC|ATTACH_RLARM|ATTACH_RLLEG|ATTACH_RSHOULDER|ATTACH_RUARM|ATTACH_RULEG|AVOID_CHARACTERS|AVOID_DYNAMIC_OBSTACLES|AVOID_NONE|CAMERA_ACTIVE|CAMERA_BEHINDNESS_ANGLE|CAMERA_BEHINDNESS_LAG|CAMERA_DISTANCE|CAMERA_FOCUS|CAMERA_FOCUS_LAG|CAMERA_FOCUS_LOCKED|CAMERA_FOCUS_OFFSET|CAMERA_FOCUS_THRESHOLD|CAMERA_PITCH|CAMERA_POSITION|CAMERA_POSITION_LAG|CAMERA_POSITION_LOCKED|CAMERA_POSITION_THRESHOLD|CHANGED_ALLOWED_DROP|CHANGED_COLOR|CHANGED_INVENTORY|CHANGED_LINK|CHANGED_MEDIA|CHANGED_OWNER|CHANGED_REGION|CHANGED_REGION_START|CHANGED_SCALE|CHANGED_SHAPE|CHANGED_TELEPORT|CHANGED_TEXTURE|CHARACTER_ACCOUNT_FOR_SKIPPED_FRAMES|CHARACTER_AVOIDANCE_MODE|CHARACTER_CMD_JUMP|CHARACTER_CMD_SMOOTH_STOP|CHARACTER_CMD_STOP|CHARACTER_DESIRED_SPEED|CHARACTER_DESIRED_TURN_SPEED|CHARACTER_LENGTH|CHARACTER_MAX_ACCEL|CHARACTER_MAX_DECEL|CHARACTER_MAX_SPEED|CHARACTER_MAX_TURN_RADIUS|CHARACTER_ORIENTATION|CHARACTER_RADIUS|CHARACTER_STAY_WITHIN_PARCEL|CHARACTER_TYPE|CHARACTER_TYPE_A|CHARACTER_TYPE_B|CHARACTER_TYPE_C|CHARACTER_TYPE_D|CHARACTER_TYPE_NONE|CLICK_ACTION_BUY|CLICK_ACTION_NONE|CLICK_ACTION_OPEN|CLICK_ACTION_OPEN_MEDIA|CLICK_ACTION_PAY|CLICK_ACTION_PLAY|CLICK_ACTION_SIT|CLICK_ACTION_TOUCH|CONTENT_TYPE_ATOM|CONTENT_TYPE_FORM|CONTENT_TYPE_HTML|CONTENT_TYPE_JSON|CONTENT_TYPE_LLSD|CONTENT_TYPE_RSS|CONTENT_TYPE_TEXT|CONTENT_TYPE_XHTML|CONTENT_TYPE_XML|CONTROL_BACK|CONTROL_DOWN|CONTROL_FWD|CONTROL_LBUTTON|CONTROL_LEFT|CONTROL_ML_LBUTTON|CONTROL_RIGHT|CONTROL_ROT_LEFT|CONTROL_ROT_RIGHT|CONTROL_UP|DATA_BORN|DATA_NAME|DATA_ONLINE|DATA_PAYINFO|DATA_SIM_POS|DATA_SIM_RATING|DATA_SIM_STATUS|DEBUG_CHANNEL|DENSITY|ERR_GENERIC|ERR_MALFORMED_PARAMS|ERR_PARCEL_PERMISSIONS|ERR_RUNTIME_PERMISSIONS|ERR_THROTTLED|ESTATE_ACCESS_ALLOWED_AGENT_ADD|ESTATE_ACCESS_ALLOWED_AGENT_REMOVE|ESTATE_ACCESS_ALLOWED_GROUP_ADD|ESTATE_ACCESS_ALLOWED_GROUP_REMOVE|ESTATE_ACCESS_BANNED_AGENT_ADD|ESTATE_ACCESS_BANNED_AGENT_REMOVE|FORCE_DIRECT_PATH|FRICTION|GCNP_RADIUS|GCNP_STATIC|GRAVITY_MULTIPLIER|HORIZONTAL|HTTP_BODY_MAXLENGTH|HTTP_BODY_TRUNCATED|HTTP_CUSTOM_HEADER|HTTP_METHOD|HTTP_MIMETYPE|HTTP_PRAGMA_NO_CACHE|HTTP_VERBOSE_THROTTLE|HTTP_VERIFY_CERT|INVENTORY_ALL|INVENTORY_ANIMATION|INVENTORY_BODYPART|INVENTORY_CLOTHING|INVENTORY_GESTURE|INVENTORY_LANDMARK|INVENTORY_NONE|INVENTORY_NOTECARD|INVENTORY_OBJECT|INVENTORY_SCRIPT|INVENTORY_SOUND|INVENTORY_TEXTURE|JSON_APPEND|KFM_CMD_PAUSE|KFM_CMD_PLAY|KFM_CMD_SET_MODE|KFM_CMD_STOP|KFM_COMMAND|KFM_DATA|KFM_FORWARD|KFM_LOOP|KFM_MODE|KFM_PING_PONG|KFM_REVERSE|KFM_ROTATION|KFM_TRANSLATION|LAND_LEVEL|LAND_LOWER|LAND_NOISE|LAND_RAISE|LAND_REVERT|LAND_SMOOTH|LINK_ALL_CHILDREN|LINK_ALL_OTHERS|LINK_ROOT|LINK_SET|LINK_THIS|LIST_STAT_GEOMETRIC_MEAN|LIST_STAT_MAX|LIST_STAT_MEAN|LIST_STAT_MEDIAN|LIST_STAT_MIN|LIST_STAT_NUM_COUNT|LIST_STAT_RANGE|LIST_STAT_STD_DEV|LIST_STAT_SUM|LIST_STAT_SUM_SQUARES|LOOP|MASK_BASE|MASK_EVERYONE|MASK_GROUP|MASK_NEXT|MASK_OWNER|OBJECT_ATTACHED_POINT|OBJECT_CHARACTER_TIME|OBJECT_CREATOR|OBJECT_DESC|OBJECT_GROUP|OBJECT_NAME|OBJECT_OWNER|OBJECT_PATHFINDING_TYPE|OBJECT_PHANTOM|OBJECT_PHYSICS|OBJECT_PHYSICS_COST|OBJECT_POS|OBJECT_PRIM_EQUIVALENCE|OBJECT_RETURN_PARCEL|OBJECT_RETURN_PARCEL_OWNER|OBJECT_RETURN_REGION|OBJECT_ROOT|OBJECT_ROT|OBJECT_RUNNING_SCRIPT_COUNT|OBJECT_SCRIPT_MEMORY|OBJECT_SCRIPT_TIME|OBJECT_SERVER_COST|OBJECT_STREAMING_COST|OBJECT_TEMP_ON_REZ|OBJECT_TOTAL_SCRIPT_COUNT|OBJECT_UNKNOWN_DETAIL|OBJECT_VELOCITY|OPT_AVATAR|OPT_CHARACTER|OPT_EXCLUSION_VOLUME|OPT_LEGACY_LINKSET|OPT_MATERIAL_VOLUME|OPT_OTHER|OPT_STATIC_OBSTACLE|OPT_WALKABLE|PARCEL_COUNT_GROUP|PARCEL_COUNT_OTHER|PARCEL_COUNT_OWNER|PARCEL_COUNT_SELECTED|PARCEL_COUNT_TEMP|PARCEL_COUNT_TOTAL|PARCEL_DETAILS_AREA|PARCEL_DETAILS_DESC|PARCEL_DETAILS_GROUP|PARCEL_DETAILS_ID|PARCEL_DETAILS_NAME|PARCEL_DETAILS_OWNER|PARCEL_DETAILS_SEE_AVATARS|PARCEL_FLAG_ALLOW_ALL_OBJECT_ENTRY|PARCEL_FLAG_ALLOW_CREATE_GROUP_OBJECTS|PARCEL_FLAG_ALLOW_CREATE_OBJECTS|PARCEL_FLAG_ALLOW_DAMAGE|PARCEL_FLAG_ALLOW_FLY|PARCEL_FLAG_ALLOW_GROUP_OBJECT_ENTRY|PARCEL_FLAG_ALLOW_GROUP_SCRIPTS|PARCEL_FLAG_ALLOW_LANDMARK|PARCEL_FLAG_ALLOW_SCRIPTS|PARCEL_FLAG_ALLOW_TERRAFORM|PARCEL_FLAG_LOCAL_SOUND_ONLY|PARCEL_FLAG_RESTRICT_PUSHOBJECT|PARCEL_FLAG_USE_ACCESS_GROUP|PARCEL_FLAG_USE_ACCESS_LIST|PARCEL_FLAG_USE_BAN_LIST|PARCEL_FLAG_USE_LAND_PASS_LIST|PARCEL_MEDIA_COMMAND_AGENT|PARCEL_MEDIA_COMMAND_AUTO_ALIGN|PARCEL_MEDIA_COMMAND_DESC|PARCEL_MEDIA_COMMAND_LOOP|PARCEL_MEDIA_COMMAND_LOOP_SET|PARCEL_MEDIA_COMMAND_PAUSE|PARCEL_MEDIA_COMMAND_PLAY|PARCEL_MEDIA_COMMAND_SIZE|PARCEL_MEDIA_COMMAND_STOP|PARCEL_MEDIA_COMMAND_TEXTURE|PARCEL_MEDIA_COMMAND_TIME|PARCEL_MEDIA_COMMAND_TYPE|PARCEL_MEDIA_COMMAND_UNLOAD|PARCEL_MEDIA_COMMAND_URL|PASSIVE|PATROL_PAUSE_AT_WAYPOINTS|PAY_DEFAULT|PAY_HIDE|PAYMENT_INFO_ON_FILE|PAYMENT_INFO_USED|PERM_ALL|PERM_COPY|PERM_MODIFY|PERM_MOVE|PERM_TRANSFER|PERMISSION_ATTACH|PERMISSION_CHANGE_LINKS|PERMISSION_CONTROL_CAMERA|PERMISSION_DEBIT|PERMISSION_OVERRIDE_ANIMATIONS|PERMISSION_RETURN_OBJECTS|PERMISSION_SILENT_ESTATE_MANAGEMENT|PERMISSION_TAKE_CONTROLS|PERMISSION_TELEPORT|PERMISSION_TRACK_CAMERA|PERMISSION_TRIGGER_ANIMATION|PING_PONG|PRIM_BUMP_BARK|PRIM_BUMP_BLOBS|PRIM_BUMP_BRICKS|PRIM_BUMP_BRIGHT|PRIM_BUMP_CHECKER|PRIM_BUMP_CONCRETE|PRIM_BUMP_DARK|PRIM_BUMP_DISKS|PRIM_BUMP_GRAVEL|PRIM_BUMP_LARGETILE|PRIM_BUMP_NONE|PRIM_BUMP_SHINY|PRIM_BUMP_SIDING|PRIM_BUMP_STONE|PRIM_BUMP_STUCCO|PRIM_BUMP_SUCTION|PRIM_BUMP_TILE|PRIM_BUMP_WEAVE|PRIM_BUMP_WOOD|PRIM_COLOR|PRIM_DESC|PRIM_FLEXIBLE|PRIM_FULLBRIGHT|PRIM_GLOW|PRIM_HOLE_CIRCLE|PRIM_HOLE_DEFAULT|PRIM_HOLE_SQUARE|PRIM_HOLE_TRIANGLE|PRIM_LINK_TARGET|PRIM_MATERIAL|PRIM_MATERIAL_FLESH|PRIM_MATERIAL_GLASS|PRIM_MATERIAL_METAL|PRIM_MATERIAL_PLASTIC|PRIM_MATERIAL_RUBBER|PRIM_MATERIAL_STONE|PRIM_MATERIAL_WOOD|PRIM_MEDIA_ALT_IMAGE_ENABLE|PRIM_MEDIA_AUTO_LOOP|PRIM_MEDIA_AUTO_PLAY|PRIM_MEDIA_AUTO_SCALE|PRIM_MEDIA_AUTO_ZOOM|PRIM_MEDIA_CONTROLS|PRIM_MEDIA_CONTROLS_MINI|PRIM_MEDIA_CONTROLS_STANDARD|PRIM_MEDIA_CURRENT_URL|PRIM_MEDIA_FIRST_CLICK_INTERACT|PRIM_MEDIA_HEIGHT_PIXELS|PRIM_MEDIA_HOME_URL|PRIM_MEDIA_MAX_HEIGHT_PIXELS|PRIM_MEDIA_MAX_URL_LENGTH|PRIM_MEDIA_MAX_WHITELIST_COUNT|PRIM_MEDIA_MAX_WHITELIST_SIZE|PRIM_MEDIA_MAX_WIDTH_PIXELS|PRIM_MEDIA_PARAM_MAX|PRIM_MEDIA_PERM_ANYONE|PRIM_MEDIA_PERM_GROUP|PRIM_MEDIA_PERM_NONE|PRIM_MEDIA_PERM_OWNER|PRIM_MEDIA_PERMS_CONTROL|PRIM_MEDIA_PERMS_INTERACT|PRIM_MEDIA_WHITELIST|PRIM_MEDIA_WHITELIST_ENABLE|PRIM_MEDIA_WIDTH_PIXELS|PRIM_NAME|PRIM_OMEGA|PRIM_PHANTOM|PRIM_PHYSICS|PRIM_PHYSICS_SHAPE_CONVEX|PRIM_PHYSICS_SHAPE_NONE|PRIM_PHYSICS_SHAPE_PRIM|PRIM_PHYSICS_SHAPE_TYPE|PRIM_POINT_LIGHT|PRIM_POS_LOCAL|PRIM_POSITION|PRIM_ROT_LOCAL|PRIM_ROTATION|PRIM_SCULPT_FLAG_INVERT|PRIM_SCULPT_FLAG_MIRROR|PRIM_SCULPT_TYPE_CYLINDER|PRIM_SCULPT_TYPE_MASK|PRIM_SCULPT_TYPE_PLANE|PRIM_SCULPT_TYPE_SPHERE|PRIM_SCULPT_TYPE_TORUS|PRIM_SHINY_HIGH|PRIM_SHINY_LOW|PRIM_SHINY_MEDIUM|PRIM_SHINY_NONE|PRIM_SIZE|PRIM_SLICE|PRIM_TEMP_ON_REZ|PRIM_TEXGEN|PRIM_TEXGEN_DEFAULT|PRIM_TEXGEN_PLANAR|PRIM_TEXT|PRIM_TEXTURE|PRIM_TYPE|PRIM_TYPE_BOX|PRIM_TYPE_CYLINDER|PRIM_TYPE_PRISM|PRIM_TYPE_RING|PRIM_TYPE_SCULPT|PRIM_TYPE_SPHERE|PRIM_TYPE_TORUS|PRIM_TYPE_TUBE|PROFILE_NONE|PROFILE_SCRIPT_MEMORY|PSYS_PART_BOUNCE_MASK|PSYS_PART_EMISSIVE_MASK|PSYS_PART_END_ALPHA|PSYS_PART_END_COLOR|PSYS_PART_END_SCALE|PSYS_PART_FLAGS|PSYS_PART_FOLLOW_SRC_MASK|PSYS_PART_FOLLOW_VELOCITY_MASK|PSYS_PART_INTERP_COLOR_MASK|PSYS_PART_INTERP_SCALE_MASK|PSYS_PART_MAX_AGE|PSYS_PART_START_ALPHA|PSYS_PART_START_COLOR|PSYS_PART_START_SCALE|PSYS_PART_TARGET_LINEAR_MASK|PSYS_PART_TARGET_POS_MASK|PSYS_PART_WIND_MASK|PSYS_SRC_ACCEL|PSYS_SRC_ANGLE_BEGIN|PSYS_SRC_ANGLE_END|PSYS_SRC_BURST_PART_COUNT|PSYS_SRC_BURST_RADIUS|PSYS_SRC_BURST_RATE|PSYS_SRC_BURST_SPEED_MAX|PSYS_SRC_BURST_SPEED_MIN|PSYS_SRC_MAX_AGE|PSYS_SRC_OMEGA|PSYS_SRC_PATTERN|PSYS_SRC_PATTERN_ANGLE|PSYS_SRC_PATTERN_ANGLE_CONE|PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY|PSYS_SRC_PATTERN_DROP|PSYS_SRC_PATTERN_EXPLODE|PSYS_SRC_TARGET_KEY|PSYS_SRC_TEXTURE|PU_EVADE_HIDDEN|PU_EVADE_SPOTTED|PU_FAILURE_DYNAMIC_PATHFINDING_DISABLED|PU_FAILURE_INVALID_GOAL|PU_FAILURE_INVALID_START|PU_FAILURE_NO_NAVMESH|PU_FAILURE_NO_VALID_DESTINATION|PU_FAILURE_OTHER|PU_FAILURE_PARCEL_UNREACHABLE|PU_FAILURE_TARGET_GONE|PU_FAILURE_UNREACHABLE|PU_GOAL_REACHED|PU_SLOWDOWN_DISTANCE_REACHED|PUBLIC_CHANNEL|PURSUIT_FUZZ_FACTOR|PURSUIT_GOAL_TOLERANCE|PURSUIT_INTERCEPT|PURSUIT_OFFSET|RC_DATA_FLAGS|RC_DETECT_PHANTOM|RC_GET_LINK_NUM|RC_GET_NORMAL|RC_GET_ROOT_KEY|RC_MAX_HITS|RC_REJECT_AGENTS|RC_REJECT_LAND|RC_REJECT_NONPHYSICAL|RC_REJECT_PHYSICAL|RC_REJECT_TYPES|RCERR_CAST_TIME_EXCEEDED|RCERR_SIM_PERF_LOW|RCERR_UNKNOWN|REGION_FLAG_ALLOW_DAMAGE|REGION_FLAG_ALLOW_DIRECT_TELEPORT|REGION_FLAG_BLOCK_FLY|REGION_FLAG_BLOCK_TERRAFORM|REGION_FLAG_DISABLE_COLLISIONS|REGION_FLAG_DISABLE_PHYSICS|REGION_FLAG_FIXED_SUN|REGION_FLAG_RESTRICT_PUSHOBJECT|REGION_FLAG_SANDBOX|REMOTE_DATA_CHANNEL|REMOTE_DATA_REPLY|REMOTE_DATA_REQUEST|REQUIRE_LINE_OF_SIGHT|RESTITUTION|REVERSE|ROTATE|SCALE|SCRIPTED|SIM_STAT_PCT_CHARS_STEPPED|SMOOTH|STATUS_BLOCK_GRAB|STATUS_BLOCK_GRAB_OBJECT|STATUS_BOUNDS_ERROR|STATUS_CAST_SHADOWS|STATUS_DIE_AT_EDGE|STATUS_INTERNAL_ERROR|STATUS_MALFORMED_PARAMS|STATUS_NOT_FOUND|STATUS_NOT_SUPPORTED|STATUS_OK|STATUS_PHANTOM|STATUS_PHYSICS|STATUS_RETURN_AT_EDGE|STATUS_ROTATE_X|STATUS_ROTATE_Y|STATUS_ROTATE_Z|STATUS_SANDBOX|STATUS_TYPE_MISMATCH|STATUS_WHITELIST_FAILED|STRING_TRIM|STRING_TRIM_HEAD|STRING_TRIM_TAIL|TOUCH_INVALID_FACE|TRAVERSAL_TYPE|TRAVERSAL_TYPE_FAST|TRAVERSAL_TYPE_NONE|TRAVERSAL_TYPE_SLOW|TYPE_FLOAT|TYPE_INTEGER|TYPE_INVALID|TYPE_KEY|TYPE_ROTATION|TYPE_STRING|TYPE_VECTOR|VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY|VEHICLE_ANGULAR_DEFLECTION_TIMESCALE|VEHICLE_ANGULAR_FRICTION_TIMESCALE|VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE|VEHICLE_ANGULAR_MOTOR_DIRECTION|VEHICLE_ANGULAR_MOTOR_TIMESCALE|VEHICLE_BANKING_EFFICIENCY|VEHICLE_BANKING_MIX|VEHICLE_BANKING_TIMESCALE|VEHICLE_BUOYANCY|VEHICLE_FLAG_CAMERA_DECOUPLED|VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT|VEHICLE_FLAG_HOVER_TERRAIN_ONLY|VEHICLE_FLAG_HOVER_UP_ONLY|VEHICLE_FLAG_HOVER_WATER_ONLY|VEHICLE_FLAG_LIMIT_MOTOR_UP|VEHICLE_FLAG_LIMIT_ROLL_ONLY|VEHICLE_FLAG_MOUSELOOK_BANK|VEHICLE_FLAG_MOUSELOOK_STEER|VEHICLE_FLAG_NO_DEFLECTION_UP|VEHICLE_HOVER_EFFICIENCY|VEHICLE_HOVER_HEIGHT|VEHICLE_HOVER_TIMESCALE|VEHICLE_LINEAR_DEFLECTION_EFFICIENCY|VEHICLE_LINEAR_DEFLECTION_TIMESCALE|VEHICLE_LINEAR_FRICTION_TIMESCALE|VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE|VEHICLE_LINEAR_MOTOR_DIRECTION|VEHICLE_LINEAR_MOTOR_OFFSET|VEHICLE_LINEAR_MOTOR_TIMESCALE|VEHICLE_REFERENCE_FRAME|VEHICLE_TYPE_AIRPLANE|VEHICLE_TYPE_BALLOON|VEHICLE_TYPE_BOAT|VEHICLE_TYPE_CAR|VEHICLE_TYPE_NONE|VEHICLE_TYPE_SLED|VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY|VEHICLE_VERTICAL_ATTRACTION_TIMESCALE|VERTICAL|WANDER_PAUSE_AT_WAYPOINTS","constant.language.integer.boolean.lsl":"FALSE|TRUE","constant.language.quaternion.lsl":"ZERO_ROTATION","constant.language.string.lsl":"EOF|JSON_ARRAY|JSON_FALSE|JSON_INVALID|JSON_NULL|JSON_NUMBER|JSON_OBJECT|JSON_STRING|JSON_TRUE|NULL_KEY|TEXTURE_BLANK|TEXTURE_DEFAULT|TEXTURE_MEDIA|TEXTURE_PLYWOOD|TEXTURE_TRANSPARENT|URL_REQUEST_DENIED|URL_REQUEST_GRANTED","constant.language.vector.lsl":"TOUCH_INVALID_TEXCOORD|TOUCH_INVALID_VECTOR|ZERO_VECTOR","invalid.broken.lsl":"LAND_LARGE_BRUSH|LAND_MEDIUM_BRUSH|LAND_SMALL_BRUSH","invalid.deprecated.lsl":"ATTACH_LPEC|ATTACH_RPEC|CHARACTER_MAX_ANGULAR_ACCEL|CHARACTER_MAX_ANGULAR_SPEED|CHARACTER_TURN_SPEED_MULTIPLIER|DATA_RATING|PRIM_CAST_SHADOWS|PRIM_MATERIAL_LIGHT|PRIM_PHYSICS_MATERIAL|PRIM_TYPE_LEGACY|PSYS_SRC_INNERANGLE|PSYS_SRC_OUTERANGLE|VEHICLE_FLAG_NO_FLY_UP|llCloud|llGodLikeRezObject|llMakeExplosion|llMakeFire|llMakeFountain|llMakeSmoke|llRemoteDataSetRegion|llSetInventoryPermMask|llSetObjectPermMask|llSound|llSoundPreload|llXorBase64Strings|llXorBase64StringsCorrect","invalid.godmode.lsl":"llGodLikeRezObject|llSetInventoryPermMask|llSetObjectPermMask","invalid.illegal.lsl":"print","invalid.unimplemented.lsl":"CHARACTER_MAX_ANGULAR_ACCEL|CHARACTER_MAX_ANGULAR_SPEED|CHARACTER_TURN_SPEED_MULTIPLIER|PERMISSION_CHANGE_JOINTS|PERMISSION_CHANGE_PERMISSIONS|PERMISSION_RELEASE_OWNERSHIP|PERMISSION_REMAP_CONTROLS|PRIM_PHYSICS_MATERIAL|PRIM_TYPE_LEGACY|PSYS_SRC_OBJ_REL_MASK|exchange|llCollisionSprite|llPointAt|llRefreshPrimURL|llReleaseCamera|llRemoteLoadScript|llSetPrimURL|llStopPointAt|llTakeCamera","keyword.control.lsl":"do|else|for|if|jump|return|while","storage.type.lsl":"float|integer|key|list|quaternion|rotation|string|vector","support.function.lsl":"llAbs|llAcos|llAddToLandBanList|llAddToLandPassList|llAdjustSoundVolume|llAllowInventoryDrop|llAngleBetween|llApplyImpulse|llApplyRotationalImpulse|llAsin|llAtan2|llAttachToAvatar|llAttachToAvatarTemp|llAvatarOnLinkSitTarget|llAvatarOnSitTarget|llAxes2Rot|llAxisAngle2Rot|llBase64ToInteger|llBase64ToString|llBreakAllLinks|llBreakLink|llCastRay|llCeil|llClearCameraParams|llClearLinkMedia|llClearPrimMedia|llCloseRemoteDataChannel|llCollisionFilter|llCollisionSound|llCos|llCreateCharacter|llCreateLink|llCSV2List|llDeleteCharacter|llDeleteSubList|llDeleteSubString|llDetachFromAvatar|llDetectedGrab|llDetectedGroup|llDetectedKey|llDetectedLinkNumber|llDetectedName|llDetectedOwner|llDetectedPos|llDetectedRot|llDetectedTouchBinormal|llDetectedTouchFace|llDetectedTouchNormal|llDetectedTouchPos|llDetectedTouchST|llDetectedTouchUV|llDetectedType|llDetectedVel|llDialog|llDie|llDumpList2String|llEdgeOfWorld|llEjectFromLand|llEmail|llEscapeURL|llEuler2Rot|llExecCharacterCmd|llEvade|llFabs|llFleeFrom|llFloor|llForceMouselook|llFrand|llGenerateKey|llGetAccel|llGetAgentInfo|llGetAgentLanguage|llGetAgentList|llGetAgentSize|llGetAlpha|llGetAndResetTime|llGetAnimation|llGetAnimationList|llGetAnimationOverride|llGetAttached|llGetBoundingBox|llGetCameraPos|llGetCameraRot|llGetCenterOfMass|llGetClosestNavPoint|llGetColor|llGetCreator|llGetDate|llGetDisplayName|llGetEnergy|llGetEnv|llGetForce|llGetFreeMemory|llGetFreeURLs|llGetGeometricCenter|llGetGMTclock|llGetHTTPHeader|llGetInventoryCreator|llGetInventoryKey|llGetInventoryName|llGetInventoryNumber|llGetInventoryPermMask|llGetInventoryType|llGetKey|llGetLandOwnerAt|llGetLinkKey|llGetLinkMedia|llGetLinkName|llGetLinkNumber|llGetLinkNumberOfSides|llGetLinkPrimitiveParams|llGetListEntryType|llGetListLength|llGetLocalPos|llGetLocalRot|llGetMass|llGetMassMKS|llGetMemoryLimit|llGetNextEmail|llGetNotecardLine|llGetNumberOfNotecardLines|llGetNumberOfPrims|llGetNumberOfSides|llGetObjectDesc|llGetObjectDetails|llGetObjectMass|llGetObjectName|llGetObjectPermMask|llGetObjectPrimCount|llGetOmega|llGetOwner|llGetOwnerKey|llGetParcelDetails|llGetParcelFlags|llGetParcelMaxPrims|llGetParcelMusicURL|llGetParcelPrimCount|llGetParcelPrimOwners|llGetPermissions|llGetPermissionsKey|llGetPhysicsMaterial|llGetPos|llGetPrimitiveParams|llGetPrimMediaParams|llGetRegionAgentCount|llGetRegionCorner|llGetRegionFlags|llGetRegionFPS|llGetRegionName|llGetRegionTimeDilation|llGetRootPosition|llGetRootRotation|llGetRot|llGetScale|llGetScriptName|llGetScriptState|llGetSimStats|llGetSimulatorHostname|llGetSPMaxMemory|llGetStartParameter|llGetStaticPath|llGetStatus|llGetSubString|llGetSunDirection|llGetTexture|llGetTextureOffset|llGetTextureRot|llGetTextureScale|llGetTime|llGetTimeOfDay|llGetTimestamp|llGetTorque|llGetUnixTime|llGetUsedMemory|llGetUsername|llGetVel|llGetWallclock|llGiveInventory|llGiveInventoryList|llGiveMoney|llGround|llGroundContour|llGroundNormal|llGroundRepel|llGroundSlope|llHTTPRequest|llHTTPResponse|llInsertString|llInstantMessage|llIntegerToBase64|llJson2List|llJsonGetValue|llJsonSetValue|llJsonValueType|llKey2Name|llLinkParticleSystem|llLinkSitTarget|llList2CSV|llList2Float|llList2Integer|llList2Json|llList2Key|llList2List|llList2ListStrided|llList2Rot|llList2String|llList2Vector|llListen|llListenControl|llListenRemove|llListFindList|llListInsertList|llListRandomize|llListReplaceList|llListSort|llListStatistics|llLoadURL|llLog|llLog10|llLookAt|llLoopSound|llLoopSoundMaster|llLoopSoundSlave|llManageEstateAccess|llMapDestination|llMD5String|llMessageLinked|llMinEventDelay|llModifyLand|llModPow|llMoveToTarget|llNavigateTo|llOffsetTexture|llOpenRemoteDataChannel|llOverMyLand|llOwnerSay|llParcelMediaCommandList|llParcelMediaQuery|llParseString2List|llParseStringKeepNulls|llParticleSystem|llPassCollisions|llPassTouches|llPatrolPoints|llPlaySound|llPlaySoundSlave|llPow|llPreloadSound|llPursue|llPushObject|llRegionSay|llRegionSayTo|llReleaseControls|llReleaseURL|llRemoteDataReply|llRemoteLoadScriptPin|llRemoveFromLandBanList|llRemoveFromLandPassList|llRemoveInventory|llRemoveVehicleFlags|llRequestAgentData|llRequestDisplayName|llRequestInventoryData|llRequestPermissions|llRequestSecureURL|llRequestSimulatorData|llRequestURL|llRequestUsername|llResetAnimationOverride|llResetLandBanList|llResetLandPassList|llResetOtherScript|llResetScript|llResetTime|llReturnObjectsByID|llReturnObjectsByOwner|llRezAtRoot|llRezObject|llRot2Angle|llRot2Axis|llRot2Euler|llRot2Fwd|llRot2Left|llRot2Up|llRotateTexture|llRotBetween|llRotLookAt|llRotTarget|llRotTargetRemove|llRound|llSameGroup|llSay|llScaleTexture|llScriptDanger|llScriptProfiler|llSendRemoteData|llSensor|llSensorRemove|llSensorRepeat|llSetAlpha|llSetAngularVelocity|llSetAnimationOverride|llSetBuoyancy|llSetCameraAtOffset|llSetCameraEyeOffset|llSetCameraParams|llSetClickAction|llSetColor|llSetContentType|llSetDamage|llSetForce|llSetForceAndTorque|llSetHoverHeight|llSetKeyframedMotion|llSetLinkAlpha|llSetLinkCamera|llSetLinkColor|llSetLinkMedia|llSetLinkPrimitiveParams|llSetLinkPrimitiveParamsFast|llSetLinkTexture|llSetLinkTextureAnim|llSetLocalRot|llSetMemoryLimit|llSetObjectDesc|llSetObjectName|llSetParcelMusicURL|llSetPayPrice|llSetPhysicsMaterial|llSetPos|llSetPrimitiveParams|llSetPrimMediaParams|llSetRegionPos|llSetRemoteScriptAccessPin|llSetRot|llSetScale|llSetScriptState|llSetSitText|llSetSoundQueueing|llSetSoundRadius|llSetStatus|llSetText|llSetTexture|llSetTextureAnim|llSetTimerEvent|llSetTorque|llSetTouchText|llSetVehicleFlags|llSetVehicleFloatParam|llSetVehicleRotationParam|llSetVehicleType|llSetVehicleVectorParam|llSetVelocity|llSHA1String|llShout|llSin|llSitTarget|llSleep|llSqrt|llStartAnimation|llStopAnimation|llStopHover|llStopLookAt|llStopMoveToTarget|llStopSound|llStringLength|llStringToBase64|llStringTrim|llSubStringIndex|llTakeControls|llTan|llTarget|llTargetOmega|llTargetRemove|llTeleportAgent|llTeleportAgentGlobalCoords|llTeleportAgentHome|llTextBox|llToLower|llToUpper|llTransferLindenDollars|llTriggerSound|llTriggerSoundLimited|llUnescapeURL|llUnSit|llUpdateCharacter|llVecDist|llVecMag|llVecNorm|llVolumeDetect|llWanderWithin|llWater|llWhisper|llWind|llXorBase64","support.function.event.lsl":"at_rot_target|at_target|attach|changed|collision|collision_end|collision_start|control|dataserver|email|http_request|http_response|land_collision|land_collision_end|land_collision_start|link_message|listen|money|moving_end|moving_start|no_sensor|not_at_rot_target|not_at_target|object_rez|on_rez|path_update|remote_data|run_time_permissions|sensor|state_entry|state_exit|timer|touch|touch_end|touch_start|transaction_result"},"identifier");this.$rules={start:[{token:"comment.line.double-slash.lsl",regex:"\\/\\/.*$"},{token:"comment.block.lsl",regex:"\\/\\*",next:"comment"},{token:"string.quoted.double.lsl",start:'"',end:'"',next:[{token:"constant.language.escape.lsl",regex:/\\[tn"\\]/}]},{token:"constant.numeric.lsl",regex:"(0[xX][0-9a-fA-F]+|[+-]?[0-9]+(?:(?:\\.[0-9]*)?(?:[eE][+-]?[0-9]+)?)?)\\b"},{token:"entity.name.state.lsl",regex:"\\b((state)\\s+\\w+|default)\\b"},{token:e,regex:"\\b[a-zA-Z_][a-zA-Z0-9_]*\\b"},{token:"support.function.user-defined.lsl",regex:/\b([a-zA-Z_]\w*)(?=\(.*?\))/},{token:"keyword.operator.lsl",regex:"\\+\\+|\\-\\-|<<|>>|&&?|\\|\\|?|\\^|~|[!%<>=*+\\-\\/]=?"},{token:"punctuation.operator.lsl",regex:"\\,|\\;"},{token:"paren.lparen.lsl",regex:"[\\[\\(\\{]"},{token:"paren.rparen.lsl",regex:"[\\]\\)\\}]"},{token:"text.lsl",regex:"\\s+"}],comment:[{token:"comment.block.lsl",regex:".*?\\*\\/",next:"start"},{token:"comment.block.lsl",regex:".+"}]},this.normalizeRules()}var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules;r.inherits(s,i),t.LSLHighlightRules=s}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){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=function(e){var t=-1;e.multiSelect&&(t=e.selection.id,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:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(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=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(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&&h.isAutoInsertedClosing(u,a,i))return h.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=="("){c(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=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(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&&h.isAutoInsertedClosing(u,a,i))return h.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=="["){c(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){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column);if(l=="\\")return null;var p=r.getTokens(o.start.row),d=0,v,m=-1;for(var g=0;go.start.column)break;d+=p[g].value.length}if(!v||m<0&&v.type!=="comment"&&(v.type!=="string"||o.start.column!==v.value.length+d-1&&v.value.lastIndexOf(s)===v.value.length-1)){if(!h.isSaneInsertion(n,r))return;return{text:s+s,selection:[1,1]}}if(v&&v.type==="string"){var y=f.substring(a.column,a.column+1);if(y==s)return{text:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.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)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.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++},h.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++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.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},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n),s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)}}.call(o.prototype)}) \ No newline at end of file diff --git a/contact-center/app/src/main/resources/static/js/ace/mode-matlab.js b/contact-center/app/src/main/resources/static/js/ace/mode-matlab.js index 64b7b455..c4b5fa27 100644 --- a/contact-center/app/src/main/resources/static/js/ace/mode-matlab.js +++ b/contact-center/app/src/main/resources/static/js/ace/mode-matlab.js @@ -1 +1 @@ -ace.define("ace/mode/matlab",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/matlab_highlight_rules","ace/range"],function(e,t,n){var r=e("../lib/oop"),i=e("./text").Mode,s=e("../tokenizer").Tokenizer,o=e("./matlab_highlight_rules").MatlabHighlightRules,u=e("../range").Range,a=function(){this.HighlightRules=o};r.inherits(a,i),function(){this.lineCommentStart="%",this.blockComment={start:"%{",end:"%}"},this.$id="ace/mode/matlab"}.call(a.prototype),t.Mode=a}),ace.define("ace/mode/matlab_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="break|case|catch|classdef|continue|else|elseif|end|for|function|global|if|otherwise|parfor|persistent|return|spmd|switch|try|while",t="true|false|inf|Inf|nan|NaN|eps|pi|ans|nargin|nargout|varargin|varargout",n="abs|accumarray|acos(?:d|h)?|acot(?:d|h)?|acsc(?:d|h)?|actxcontrol(?:list|select)?|actxGetRunningServer|actxserver|addlistener|addpath|addpref|addtodate|airy|align|alim|all|allchild|alpha|alphamap|amd|ancestor|and|angle|annotation|any|area|arrayfun|asec(?:d|h)?|asin(?:d|h)?|assert|assignin|atan(?:2|d|h)?|audiodevinfo|audioplayer|audiorecorder|aufinfo|auread|autumn|auwrite|avifile|aviinfo|aviread|axes|axis|balance|bar(?:3|3h|h)?|base2dec|beep|BeginInvoke|bench|bessel(?:h|i|j|k|y)|beta|betainc|betaincinv|betaln|bicg|bicgstab|bicgstabl|bin2dec|bitand|bitcmp|bitget|bitmax|bitnot|bitor|bitset|bitshift|bitxor|blanks|blkdiag|bone|box|brighten|brush|bsxfun|builddocsearchdb|builtin|bvp4c|bvp5c|bvpget|bvpinit|bvpset|bvpxtend|calendar|calllib|callSoapService|camdolly|cameratoolbar|camlight|camlookat|camorbit|campan|campos|camproj|camroll|camtarget|camup|camva|camzoom|cart2pol|cart2sph|cast|cat|caxis|cd|cdf2rdf|cdfepoch|cdfinfo|cdflib(?:.(?:close|closeVar|computeEpoch|computeEpoch16|create|createAttr|createVar|delete|deleteAttr|deleteAttrEntry|deleteAttrgEntry|deleteVar|deleteVarRecords|epoch16Breakdown|epochBreakdown|getAttrEntry|getAttrgEntry|getAttrMaxEntry|getAttrMaxgEntry|getAttrName|getAttrNum|getAttrScope|getCacheSize|getChecksum|getCompression|getCompressionCacheSize|getConstantNames|getConstantValue|getCopyright|getFileBackward|getFormat|getLibraryCopyright|getLibraryVersion|getMajority|getName|getNumAttrEntries|getNumAttrgEntries|getNumAttributes|getNumgAttributes|getReadOnlyMode|getStageCacheSize|getValidate|getVarAllocRecords|getVarBlockingFactor|getVarCacheSize|getVarCompression|getVarData|getVarMaxAllocRecNum|getVarMaxWrittenRecNum|getVarName|getVarNum|getVarNumRecsWritten|getVarPadValue|getVarRecordData|getVarReservePercent|getVarsMaxWrittenRecNum|getVarSparseRecords|getVersion|hyperGetVarData|hyperPutVarData|inquire|inquireAttr|inquireAttrEntry|inquireAttrgEntry|inquireVar|open|putAttrEntry|putAttrgEntry|putVarData|putVarRecordData|renameAttr|renameVar|setCacheSize|setChecksum|setCompression|setCompressionCacheSize|setFileBackward|setFormat|setMajority|setReadOnlyMode|setStageCacheSize|setValidate|setVarAllocBlockRecords|setVarBlockingFactor|setVarCacheSize|setVarCompression|setVarInitialRecs|setVarPadValue|SetVarReservePercent|setVarsCacheSize|setVarSparseRecords))?|cdfread|cdfwrite|ceil|cell2mat|cell2struct|celldisp|cellfun|cellplot|cellstr|cgs|checkcode|checkin|checkout|chol|cholinc|cholupdate|circshift|cla|clabel|class|clc|clear|clearvars|clf|clipboard|clock|close|closereq|cmopts|cmpermute|cmunique|colamd|colon|colorbar|colordef|colormap|colormapeditor|colperm|Combine|comet|comet3|commandhistory|commandwindow|compan|compass|complex|computer|cond|condeig|condest|coneplot|conj|containers.Map|contour(?:3|c|f|slice)?|contrast|conv|conv2|convhull|convhulln|convn|cool|copper|copyfile|copyobj|corrcoef|cos(?:d|h)?|cot(?:d|h)?|cov|cplxpair|cputime|createClassFromWsdl|createSoapMessage|cross|csc(?:d|h)?|csvread|csvwrite|ctranspose|cumprod|cumsum|cumtrapz|curl|customverctrl|cylinder|daqread|daspect|datacursormode|datatipinfo|date|datenum|datestr|datetick|datevec|dbclear|dbcont|dbdown|dblquad|dbmex|dbquit|dbstack|dbstatus|dbstep|dbstop|dbtype|dbup|dde23|ddeget|ddesd|ddeset|deal|deblank|dec2base|dec2bin|dec2hex|decic|deconv|del2|delaunay|delaunay3|delaunayn|DelaunayTri|delete|demo|depdir|depfun|det|detrend|deval|diag|dialog|diary|diff|diffuse|dir|disp|display|dither|divergence|dlmread|dlmwrite|dmperm|doc|docsearch|dos|dot|dragrect|drawnow|dsearch|dsearchn|dynamicprops|echo|echodemo|edit|eig|eigs|ellipj|ellipke|ellipsoid|empty|enableNETfromNetworkDrive|enableservice|EndInvoke|enumeration|eomday|eq|erf|erfc|erfcinv|erfcx|erfinv|error|errorbar|errordlg|etime|etree|etreeplot|eval|evalc|evalin|event.(?:EventData|listener|PropertyEvent|proplistener)|exifread|exist|exit|exp|expint|expm|expm1|export2wsdlg|eye|ezcontour|ezcontourf|ezmesh|ezmeshc|ezplot|ezplot3|ezpolar|ezsurf|ezsurfc|factor|factorial|fclose|feather|feature|feof|ferror|feval|fft|fft2|fftn|fftshift|fftw|fgetl|fgets|fieldnames|figure|figurepalette|fileattrib|filebrowser|filemarker|fileparts|fileread|filesep|fill|fill3|filter|filter2|find|findall|findfigs|findobj|findstr|finish|fitsdisp|fitsinfo|fitsread|fitswrite|fix|flag|flipdim|fliplr|flipud|floor|flow|fminbnd|fminsearch|fopen|format|fplot|fprintf|frame2im|fread|freqspace|frewind|fscanf|fseek|ftell|FTP|full|fullfile|func2str|functions|funm|fwrite|fzero|gallery|gamma|gammainc|gammaincinv|gammaln|gca|gcbf|gcbo|gcd|gcf|gco|ge|genpath|genvarname|get|getappdata|getenv|getfield|getframe|getpixelposition|getpref|ginput|gmres|gplot|grabcode|gradient|gray|graymon|grid|griddata(?:3|n)?|griddedInterpolant|gsvd|gt|gtext|guidata|guide|guihandles|gunzip|gzip|h5create|h5disp|h5info|h5read|h5readatt|h5write|h5writeatt|hadamard|handle|hankel|hdf|hdf5|hdf5info|hdf5read|hdf5write|hdfinfo|hdfread|hdftool|help|helpbrowser|helpdesk|helpdlg|helpwin|hess|hex2dec|hex2num|hgexport|hggroup|hgload|hgsave|hgsetget|hgtransform|hidden|hilb|hist|histc|hold|home|horzcat|hostid|hot|hsv|hsv2rgb|hypot|ichol|idivide|ifft|ifft2|ifftn|ifftshift|ilu|im2frame|im2java|imag|image|imagesc|imapprox|imfinfo|imformats|import|importdata|imread|imwrite|ind2rgb|ind2sub|inferiorto|info|inline|inmem|inpolygon|input|inputdlg|inputname|inputParser|inspect|instrcallback|instrfind|instrfindall|int2str|integral(?:2|3)?|interp(?:1|1q|2|3|ft|n)|interpstreamspeed|intersect|intmax|intmin|inv|invhilb|ipermute|isa|isappdata|iscell|iscellstr|ischar|iscolumn|isdir|isempty|isequal|isequaln|isequalwithequalnans|isfield|isfinite|isfloat|isglobal|ishandle|ishghandle|ishold|isinf|isinteger|isjava|iskeyword|isletter|islogical|ismac|ismatrix|ismember|ismethod|isnan|isnumeric|isobject|isocaps|isocolors|isonormals|isosurface|ispc|ispref|isprime|isprop|isreal|isrow|isscalar|issorted|isspace|issparse|isstr|isstrprop|isstruct|isstudent|isunix|isvarname|isvector|javaaddpath|javaArray|javachk|javaclasspath|javacomponent|javaMethod|javaMethodEDT|javaObject|javaObjectEDT|javarmpath|jet|keyboard|kron|lasterr|lasterror|lastwarn|lcm|ldivide|ldl|le|legend|legendre|length|libfunctions|libfunctionsview|libisloaded|libpointer|libstruct|license|light|lightangle|lighting|lin2mu|line|lines|linkaxes|linkdata|linkprop|linsolve|linspace|listdlg|listfonts|load|loadlibrary|loadobj|log|log10|log1p|log2|loglog|logm|logspace|lookfor|lower|ls|lscov|lsqnonneg|lsqr|lt|lu|luinc|magic|makehgtform|mat2cell|mat2str|material|matfile|matlab.io.MatFile|matlab.mixin.(?:Copyable|Heterogeneous(?:.getDefaultScalarElement)?)|matlabrc|matlabroot|max|maxNumCompThreads|mean|median|membrane|memmapfile|memory|menu|mesh|meshc|meshgrid|meshz|meta.(?:class(?:.fromName)?|DynamicProperty|EnumeratedValue|event|MetaData|method|package(?:.(?:fromName|getAllPackages))?|property)|metaclass|methods|methodsview|mex(?:.getCompilerConfigurations)?|MException|mexext|mfilename|min|minres|minus|mislocked|mkdir|mkpp|mldivide|mlint|mlintrpt|mlock|mmfileinfo|mmreader|mod|mode|more|move|movefile|movegui|movie|movie2avi|mpower|mrdivide|msgbox|mtimes|mu2lin|multibandread|multibandwrite|munlock|namelengthmax|nargchk|narginchk|nargoutchk|native2unicode|nccreate|ncdisp|nchoosek|ncinfo|ncread|ncreadatt|ncwrite|ncwriteatt|ncwriteschema|ndgrid|ndims|ne|NET(?:.(?:addAssembly|Assembly|convertArray|createArray|createGeneric|disableAutoRelease|enableAutoRelease|GenericClass|invokeGenericMethod|NetException|setStaticProperty))?|netcdf.(?:abort|close|copyAtt|create|defDim|defGrp|defVar|defVarChunking|defVarDeflate|defVarFill|defVarFletcher32|delAtt|endDef|getAtt|getChunkCache|getConstant|getConstantNames|getVar|inq|inqAtt|inqAttID|inqAttName|inqDim|inqDimID|inqDimIDs|inqFormat|inqGrpName|inqGrpNameFull|inqGrpParent|inqGrps|inqLibVers|inqNcid|inqUnlimDims|inqVar|inqVarChunking|inqVarDeflate|inqVarFill|inqVarFletcher32|inqVarID|inqVarIDs|open|putAtt|putVar|reDef|renameAtt|renameDim|renameVar|setChunkCache|setDefaultFormat|setFill|sync)|newplot|nextpow2|nnz|noanimate|nonzeros|norm|normest|not|notebook|now|nthroot|null|num2cell|num2hex|num2str|numel|nzmax|ode(?:113|15i|15s|23|23s|23t|23tb|45)|odeget|odeset|odextend|onCleanup|ones|open|openfig|opengl|openvar|optimget|optimset|or|ordeig|orderfields|ordqz|ordschur|orient|orth|pack|padecoef|pagesetupdlg|pan|pareto|parseSoapResponse|pascal|patch|path|path2rc|pathsep|pathtool|pause|pbaspect|pcg|pchip|pcode|pcolor|pdepe|pdeval|peaks|perl|perms|permute|pie|pink|pinv|planerot|playshow|plot|plot3|plotbrowser|plotedit|plotmatrix|plottools|plotyy|plus|pol2cart|polar|poly|polyarea|polyder|polyeig|polyfit|polyint|polyval|polyvalm|pow2|power|ppval|prefdir|preferences|primes|print|printdlg|printopt|printpreview|prod|profile|profsave|propedit|propertyeditor|psi|publish|PutCharArray|PutFullMatrix|PutWorkspaceData|pwd|qhull|qmr|qr|qrdelete|qrinsert|qrupdate|quad|quad2d|quadgk|quadl|quadv|questdlg|quit|quiver|quiver3|qz|rand|randi|randn|randperm|RandStream(?:.(?:create|getDefaultStream|getGlobalStream|list|setDefaultStream|setGlobalStream))?|rank|rat|rats|rbbox|rcond|rdivide|readasync|real|reallog|realmax|realmin|realpow|realsqrt|record|rectangle|rectint|recycle|reducepatch|reducevolume|refresh|refreshdata|regexp|regexpi|regexprep|regexptranslate|rehash|rem|Remove|RemoveAll|repmat|reset|reshape|residue|restoredefaultpath|rethrow|rgb2hsv|rgb2ind|rgbplot|ribbon|rmappdata|rmdir|rmfield|rmpath|rmpref|rng|roots|rose|rosser|rot90|rotate|rotate3d|round|rref|rsf2csf|run|save|saveas|saveobj|savepath|scatter|scatter3|schur|sec|secd|sech|selectmoveresize|semilogx|semilogy|sendmail|serial|set|setappdata|setdiff|setenv|setfield|setpixelposition|setpref|setstr|setxor|shading|shg|shiftdim|showplottool|shrinkfaces|sign|sin(?:d|h)?|size|slice|smooth3|snapnow|sort|sortrows|sound|soundsc|spalloc|spaugment|spconvert|spdiags|specular|speye|spfun|sph2cart|sphere|spinmap|spline|spones|spparms|sprand|sprandn|sprandsym|sprank|spring|sprintf|spy|sqrt|sqrtm|squeeze|ss2tf|sscanf|stairs|startup|std|stem|stem3|stopasync|str2double|str2func|str2mat|str2num|strcat|strcmp|strcmpi|stream2|stream3|streamline|streamparticles|streamribbon|streamslice|streamtube|strfind|strjust|strmatch|strncmp|strncmpi|strread|strrep|strtok|strtrim|struct2cell|structfun|strvcat|sub2ind|subplot|subsasgn|subsindex|subspace|subsref|substruct|subvolume|sum|summer|superclasses|superiorto|support|surf|surf2patch|surface|surfc|surfl|surfnorm|svd|svds|swapbytes|symamd|symbfact|symmlq|symrcm|symvar|system|tan(?:d|h)?|tar|tempdir|tempname|tetramesh|texlabel|text|textread|textscan|textwrap|tfqmr|throw|tic|Tiff(?:.(?:getTagNames|getVersion))?|timer|timerfind|timerfindall|times|timeseries|title|toc|todatenum|toeplitz|toolboxdir|trace|transpose|trapz|treelayout|treeplot|tril|trimesh|triplequad|triplot|TriRep|TriScatteredInterp|trisurf|triu|tscollection|tsearch|tsearchn|tstool|type|typecast|uibuttongroup|uicontextmenu|uicontrol|uigetdir|uigetfile|uigetpref|uiimport|uimenu|uiopen|uipanel|uipushtool|uiputfile|uiresume|uisave|uisetcolor|uisetfont|uisetpref|uistack|uitable|uitoggletool|uitoolbar|uiwait|uminus|undocheckout|unicode2native|union|unique|unix|unloadlibrary|unmesh|unmkpp|untar|unwrap|unzip|uplus|upper|urlread|urlwrite|usejava|userpath|validateattributes|validatestring|vander|var|vectorize|ver|verctrl|verLessThan|version|vertcat|VideoReader(?:.isPlatformSupported)?|VideoWriter(?:.getProfiles)?|view|viewmtx|visdiff|volumebounds|voronoi|voronoin|wait|waitbar|waitfor|waitforbuttonpress|warndlg|warning|waterfall|wavfinfo|wavplay|wavread|wavrecord|wavwrite|web|weekday|what|whatsnew|which|whitebg|who|whos|wilkinson|winopen|winqueryreg|winter|wk1finfo|wk1read|wk1write|workspace|xlabel|xlim|xlsfinfo|xlsread|xlswrite|xmlread|xmlwrite|xor|xslt|ylabel|ylim|zeros|zip|zlabel|zlim|zoom|addedvarplot|andrewsplot|anova(?:1|2|n)|ansaribradley|aoctool|barttest|bbdesign|beta(?:cdf|fit|inv|like|pdf|rnd|stat)|bino(?:cdf|fit|inv|pdf|rnd|stat)|biplot|bootci|bootstrp|boxplot|candexch|candgen|canoncorr|capability|capaplot|caseread|casewrite|categorical|ccdesign|cdfplot|chi2(?:cdf|gof|inv|pdf|rnd|stat)|cholcov|Classification(?:BaggedEnsemble|Discriminant(?:.(?:fit|make|template))?|Ensemble|KNN(?:.(?:fit|template))?|PartitionedEnsemble|PartitionedModel|Tree(?:.(?:fit|template))?)|classify|classregtree|cluster|clusterdata|cmdscale|combnk|Compact(?:Classification(?:Discriminant|Ensemble|Tree)|Regression(?:Ensemble|Tree)|TreeBagger)|confusionmat|controlchart|controlrules|cophenet|copula(?:cdf|fit|param|pdf|rnd|stat)|cordexch|corr|corrcov|coxphfit|createns|crosstab|crossval|cvpartition|datasample|dataset|daugment|dcovary|dendrogram|dfittool|disttool|dummyvar|dwtest|ecdf|ecdfhist|ev(?:cdf|fit|inv|like|pdf|rnd|stat)|ExhaustiveSearcher|exp(?:cdf|fit|inv|like|pdf|rnd|stat)|factoran|fcdf|ff2n|finv|fitdist|fitensemble|fpdf|fracfact|fracfactgen|friedman|frnd|fstat|fsurfht|fullfact|gagerr|gam(?:cdf|fit|inv|like|pdf|rnd|stat)|GeneralizedLinearModel(?:.fit)?|geo(?:cdf|inv|mean|pdf|rnd|stat)|gev(?:cdf|fit|inv|like|pdf|rnd|stat)|gline|glmfit|glmval|glyphplot|gmdistribution(?:.fit)?|gname|gp(?:cdf|fit|inv|like|pdf|rnd|stat)|gplotmatrix|grp2idx|grpstats|gscatter|haltonset|harmmean|hist3|histfit|hmm(?:decode|estimate|generate|train|viterbi)|hougen|hyge(?:cdf|inv|pdf|rnd|stat)|icdf|inconsistent|interactionplot|invpred|iqr|iwishrnd|jackknife|jbtest|johnsrnd|KDTreeSearcher|kmeans|knnsearch|kruskalwallis|ksdensity|kstest|kstest2|kurtosis|lasso|lassoglm|lassoPlot|leverage|lhsdesign|lhsnorm|lillietest|LinearModel(?:.fit)?|linhyptest|linkage|logn(?:cdf|fit|inv|like|pdf|rnd|stat)|lsline|mad|mahal|maineffectsplot|manova1|manovacluster|mdscale|mhsample|mle|mlecov|mnpdf|mnrfit|mnrnd|mnrval|moment|multcompare|multivarichart|mvn(?:cdf|pdf|rnd)|mvregress|mvregresslike|mvt(?:cdf|pdf|rnd)|NaiveBayes(?:.fit)?|nan(?:cov|max|mean|median|min|std|sum|var)|nbin(?:cdf|fit|inv|pdf|rnd|stat)|ncf(?:cdf|inv|pdf|rnd|stat)|nct(?:cdf|inv|pdf|rnd|stat)|ncx2(?:cdf|inv|pdf|rnd|stat)|NeighborSearcher|nlinfit|nlintool|nlmefit|nlmefitsa|nlparci|nlpredci|nnmf|nominal|NonLinearModel(?:.fit)?|norm(?:cdf|fit|inv|like|pdf|rnd|stat)|normplot|normspec|ordinal|outlierMeasure|parallelcoords|paretotails|partialcorr|pcacov|pcares|pdf|pdist|pdist2|pearsrnd|perfcurve|perms|piecewisedistribution|plsregress|poiss(?:cdf|fit|inv|pdf|rnd|tat)|polyconf|polytool|prctile|princomp|ProbDist(?:Kernel|Parametric|UnivKernel|UnivParam)?|probplot|procrustes|qqplot|qrandset|qrandstream|quantile|randg|random|randsample|randtool|range|rangesearch|ranksum|rayl(?:cdf|fit|inv|pdf|rnd|stat)|rcoplot|refcurve|refline|regress|Regression(?:BaggedEnsemble|Ensemble|PartitionedEnsemble|PartitionedModel|Tree(?:.(?:fit|template))?)|regstats|relieff|ridge|robustdemo|robustfit|rotatefactors|rowexch|rsmdemo|rstool|runstest|sampsizepwr|scatterhist|sequentialfs|signrank|signtest|silhouette|skewness|slicesample|sobolset|squareform|statget|statset|stepwise|stepwisefit|surfht|tabulate|tblread|tblwrite|tcdf|tdfread|tiedrank|tinv|tpdf|TreeBagger|treedisp|treefit|treeprune|treetest|treeval|trimmean|trnd|tstat|ttest|ttest2|unid(?:cdf|inv|pdf|rnd|stat)|unif(?:cdf|inv|it|pdf|rnd|stat)|vartest(?:2|n)?|wbl(?:cdf|fit|inv|like|pdf|rnd|stat)|wblplot|wishrnd|x2fx|xptread|zscore|ztestadapthisteq|analyze75info|analyze75read|applycform|applylut|axes2pix|bestblk|blockproc|bwarea|bwareaopen|bwboundaries|bwconncomp|bwconvhull|bwdist|bwdistgeodesic|bweuler|bwhitmiss|bwlabel|bwlabeln|bwmorph|bwpack|bwperim|bwselect|bwtraceboundary|bwulterode|bwunpack|checkerboard|col2im|colfilt|conndef|convmtx2|corner|cornermetric|corr2|cp2tform|cpcorr|cpselect|cpstruct2pairs|dct2|dctmtx|deconvblind|deconvlucy|deconvreg|deconvwnr|decorrstretch|demosaic|dicom(?:anon|dict|info|lookup|read|uid|write)|edge|edgetaper|entropy|entropyfilt|fan2para|fanbeam|findbounds|fliptform|freqz2|fsamp2|fspecial|ftrans2|fwind1|fwind2|getheight|getimage|getimagemodel|getline|getneighbors|getnhood|getpts|getrangefromclass|getrect|getsequence|gray2ind|graycomatrix|graycoprops|graydist|grayslice|graythresh|hdrread|hdrwrite|histeq|hough|houghlines|houghpeaks|iccfind|iccread|iccroot|iccwrite|idct2|ifanbeam|im2bw|im2col|im2double|im2int16|im2java2d|im2single|im2uint16|im2uint8|imabsdiff|imadd|imadjust|ImageAdapter|imageinfo|imagemodel|imapplymatrix|imattributes|imbothat|imclearborder|imclose|imcolormaptool|imcomplement|imcontour|imcontrast|imcrop|imdilate|imdisplayrange|imdistline|imdivide|imellipse|imerode|imextendedmax|imextendedmin|imfill|imfilter|imfindcircles|imfreehand|imfuse|imgca|imgcf|imgetfile|imhandles|imhist|imhmax|imhmin|imimposemin|imlincomb|imline|immagbox|immovie|immultiply|imnoise|imopen|imoverview|imoverviewpanel|impixel|impixelinfo|impixelinfoval|impixelregion|impixelregionpanel|implay|impoint|impoly|impositionrect|improfile|imputfile|impyramid|imreconstruct|imrect|imregconfig|imregionalmax|imregionalmin|imregister|imresize|imroi|imrotate|imsave|imscrollpanel|imshow|imshowpair|imsubtract|imtool|imtophat|imtransform|imview|ind2gray|ind2rgb|interfileinfo|interfileread|intlut|ippl|iptaddcallback|iptcheckconn|iptcheckhandle|iptcheckinput|iptcheckmap|iptchecknargin|iptcheckstrs|iptdemos|iptgetapi|iptGetPointerBehavior|iptgetpref|ipticondir|iptnum2ordinal|iptPointerManager|iptprefs|iptremovecallback|iptSetPointerBehavior|iptsetpref|iptwindowalign|iradon|isbw|isflat|isgray|isicc|isind|isnitf|isrgb|isrset|lab2double|lab2uint16|lab2uint8|label2rgb|labelmatrix|makecform|makeConstrainToRectFcn|makehdr|makelut|makeresampler|maketform|mat2gray|mean2|medfilt2|montage|nitfinfo|nitfread|nlfilter|normxcorr2|ntsc2rgb|openrset|ordfilt2|otf2psf|padarray|para2fan|phantom|poly2mask|psf2otf|qtdecomp|qtgetblk|qtsetblk|radon|rangefilt|reflect|regionprops|registration.metric.(?:MattesMutualInformation|MeanSquares)|registration.optimizer.(?:OnePlusOneEvolutionary|RegularStepGradientDescent)|rgb2gray|rgb2ntsc|rgb2ycbcr|roicolor|roifill|roifilt2|roipoly|rsetwrite|std2|stdfilt|strel|stretchlim|subimage|tformarray|tformfwd|tforminv|tonemap|translate|truesize|uintlut|viscircles|warp|watershed|whitepoint|wiener2|xyz2double|xyz2uint16|ycbcr2rgb|bintprog|color|fgoalattain|fminbnd|fmincon|fminimax|fminsearch|fminunc|fseminf|fsolve|fzero|fzmult|gangstr|ktrlink|linprog|lsqcurvefit|lsqlin|lsqnonlin|lsqnonneg|optimget|optimset|optimtool|quadprog",r="cell|struct|char|double|single|logical|u?int(?:8|16|32|64)|sparse",i=this.createKeywordMapper({"storage.type":r,"support.function":n,keyword:e,"constant.language":t},"identifier",!0);this.$rules={start:[{token:"comment",regex:"^%[^\r\n]*"},{token:"string",regex:'".*?"'},{token:"string",regex:"'.*?'"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:i,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}]}};r.inherits(s,i),t.MatlabHighlightRules=s}) \ No newline at end of file +ace.define("ace/mode/matlab",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/matlab_highlight_rules","ace/range"],function(e,t,n){var r=e("../lib/oop"),i=e("./text").Mode,s=e("../tokenizer").Tokenizer,o=e("./matlab_highlight_rules").MatlabHighlightRules,u=e("../range").Range,a=function(){this.HighlightRules=o};r.inherits(a,i),function(){this.lineCommentStart="%",this.blockComment={start:"%{",end:"%}"},this.$id="ace/mode/matlab"}.call(a.prototype),t.Mode=a}),ace.define("ace/mode/matlab_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="break|case|catch|classdef|continue|else|elseif|end|for|function|global|if|otherwise|parfor|persistent|return|spmd|switch|try|while",t="true|false|inf|Inf|nan|NaN|eps|pi|ans|nargin|nargout|varargin|varargout",n="abs|accumarray|acos(?:d|h)?|acot(?:d|h)?|acsc(?:d|h)?|actxcontrol(?:list|select)?|actxGetRunningServer|actxserver|addlistener|addpath|addpref|addtodate|airy|align|alim|all|allchild|alpha|alphamap|amd|ancestor|and|angle|annotation|any|area|arrayfun|asec(?:d|h)?|asin(?:d|h)?|assert|assignin|atan(?:2|d|h)?|audiodevinfo|audioplayer|audiorecorder|aufinfo|auread|autumn|auwrite|avifile|aviinfo|aviread|axes|axis|balance|bar(?:3|3h|h)?|base2dec|beep|BeginInvoke|bench|bessel(?:h|i|j|k|y)|beta|betainc|betaincinv|betaln|bicg|bicgstab|bicgstabl|bin2dec|bitand|bitcmp|bitget|bitmax|bitnot|bitor|bitset|bitshift|bitxor|blanks|blkdiag|bone|box|brighten|brush|bsxfun|builddocsearchdb|builtin|bvp4c|bvp5c|bvpget|bvpinit|bvpset|bvpxtend|calendar|calllib|callSoapService|camdolly|cameratoolbar|camlight|camlookat|camorbit|campan|campos|camproj|camroll|camtarget|camup|camva|camzoom|cart2pol|cart2sph|cast|cat|caxis|cd|cdf2rdf|cdfepoch|cdfinfo|cdflib(?:.(?:close|closeVar|computeEpoch|computeEpoch16|create|createAttr|createVar|delete|deleteAttr|deleteAttrEntry|deleteAttrgEntry|deleteVar|deleteVarRecords|epoch16Breakdown|epochBreakdown|getAttrEntry|getAttrgEntry|getAttrMaxEntry|getAttrMaxgEntry|getAttrName|getAttrNum|getAttrScope|getCacheSize|getChecksum|getCompression|getCompressionCacheSize|getConstantNames|getConstantValue|getCopyright|getFileBackward|getFormat|getLibraryCopyright|getLibraryVersion|getMajority|getName|getNumAttrEntries|getNumAttrgEntries|getNumAttributes|getNumgAttributes|getReadOnlyMode|getStageCacheSize|getValidate|getVarAllocRecords|getVarBlockingFactor|getVarCacheSize|getVarCompression|getVarData|getVarMaxAllocRecNum|getVarMaxWrittenRecNum|getVarName|getVarNum|getVarNumRecsWritten|getVarPadValue|getVarRecordData|getVarReservePercent|getVarsMaxWrittenRecNum|getVarSparseRecords|getVersion|hyperGetVarData|hyperPutVarData|inquire|inquireAttr|inquireAttrEntry|inquireAttrgEntry|inquireVar|open|putAttrEntry|putAttrgEntry|putVarData|putVarRecordData|renameAttr|renameVar|setCacheSize|setChecksum|setCompression|setCompressionCacheSize|setFileBackward|setFormat|setMajority|setReadOnlyMode|setStageCacheSize|setValidate|setVarAllocBlockRecords|setVarBlockingFactor|setVarCacheSize|setVarCompression|setVarInitialRecs|setVarPadValue|SetVarReservePercent|setVarsCacheSize|setVarSparseRecords))?|cdfread|cdfwrite|ceil|cell2mat|cell2struct|celldisp|cellfun|cellplot|cellstr|cgs|checkcode|checkin|checkout|chol|cholinc|cholupdate|circshift|cla|clabel|class|clc|clear|clearvars|clf|clipboard|clock|close|closereq|cmopts|cmpermute|cmunique|colamd|colon|colorbar|colordef|colormap|colormapeditor|colperm|Combine|comet|comet3|commandhistory|commandwindow|compan|compass|complex|computer|cond|condeig|condest|coneplot|conj|containers.Map|contour(?:3|c|f|slice)?|contrast|conv|conv2|convhull|convhulln|convn|cool|copper|copyfile|copyobj|corrcoef|cos(?:d|h)?|cot(?:d|h)?|cov|cplxpair|cputime|createClassFromWsdl|createSoapMessage|cross|csc(?:d|h)?|csvread|csvwrite|ctranspose|cumprod|cumsum|cumtrapz|curl|customverctrl|cylinder|daqread|daspect|datacursormode|datatipinfo|date|datenum|datestr|datetick|datevec|dbclear|dbcont|dbdown|dblquad|dbmex|dbquit|dbstack|dbstatus|dbstep|dbstop|dbtype|dbup|dde23|ddeget|ddesd|ddeset|deal|deblank|dec2base|dec2bin|dec2hex|decic|deconv|del2|delaunay|delaunay3|delaunayn|DelaunayTri|delete|demo|depdir|depfun|det|detrend|deval|diag|dialog|diary|diff|diffuse|dir|disp|display|dither|divergence|dlmread|dlmwrite|dmperm|doc|docsearch|dos|dot|dragrect|drawnow|dsearch|dsearchn|dynamicprops|echo|echodemo|edit|eig|eigs|ellipj|ellipke|ellipsoid|empty|enableNETfromNetworkDrive|enableservice|EndInvoke|enumeration|eomday|eq|erf|erfc|erfcinv|erfcx|erfinv|error|errorbar|errordlg|etime|etree|etreeplot|eval|evalc|evalin|exchange.(?:EventData|listener|PropertyEvent|proplistener)|exifread|exist|exit|exp|expint|expm|expm1|export2wsdlg|eye|ezcontour|ezcontourf|ezmesh|ezmeshc|ezplot|ezplot3|ezpolar|ezsurf|ezsurfc|factor|factorial|fclose|feather|feature|feof|ferror|feval|fft|fft2|fftn|fftshift|fftw|fgetl|fgets|fieldnames|figure|figurepalette|fileattrib|filebrowser|filemarker|fileparts|fileread|filesep|fill|fill3|filter|filter2|find|findall|findfigs|findobj|findstr|finish|fitsdisp|fitsinfo|fitsread|fitswrite|fix|flag|flipdim|fliplr|flipud|floor|flow|fminbnd|fminsearch|fopen|format|fplot|fprintf|frame2im|fread|freqspace|frewind|fscanf|fseek|ftell|FTP|full|fullfile|func2str|functions|funm|fwrite|fzero|gallery|gamma|gammainc|gammaincinv|gammaln|gca|gcbf|gcbo|gcd|gcf|gco|ge|genpath|genvarname|get|getappdata|getenv|getfield|getframe|getpixelposition|getpref|ginput|gmres|gplot|grabcode|gradient|gray|graymon|grid|griddata(?:3|n)?|griddedInterpolant|gsvd|gt|gtext|guidata|guide|guihandles|gunzip|gzip|h5create|h5disp|h5info|h5read|h5readatt|h5write|h5writeatt|hadamard|handle|hankel|hdf|hdf5|hdf5info|hdf5read|hdf5write|hdfinfo|hdfread|hdftool|help|helpbrowser|helpdesk|helpdlg|helpwin|hess|hex2dec|hex2num|hgexport|hggroup|hgload|hgsave|hgsetget|hgtransform|hidden|hilb|hist|histc|hold|home|horzcat|hostid|hot|hsv|hsv2rgb|hypot|ichol|idivide|ifft|ifft2|ifftn|ifftshift|ilu|im2frame|im2java|imag|image|imagesc|imapprox|imfinfo|imformats|import|importdata|imread|imwrite|ind2rgb|ind2sub|inferiorto|info|inline|inmem|inpolygon|input|inputdlg|inputname|inputParser|inspect|instrcallback|instrfind|instrfindall|int2str|integral(?:2|3)?|interp(?:1|1q|2|3|ft|n)|interpstreamspeed|intersect|intmax|intmin|inv|invhilb|ipermute|isa|isappdata|iscell|iscellstr|ischar|iscolumn|isdir|isempty|isequal|isequaln|isequalwithequalnans|isfield|isfinite|isfloat|isglobal|ishandle|ishghandle|ishold|isinf|isinteger|isjava|iskeyword|isletter|islogical|ismac|ismatrix|ismember|ismethod|isnan|isnumeric|isobject|isocaps|isocolors|isonormals|isosurface|ispc|ispref|isprime|isprop|isreal|isrow|isscalar|issorted|isspace|issparse|isstr|isstrprop|isstruct|isstudent|isunix|isvarname|isvector|javaaddpath|javaArray|javachk|javaclasspath|javacomponent|javaMethod|javaMethodEDT|javaObject|javaObjectEDT|javarmpath|jet|keyboard|kron|lasterr|lasterror|lastwarn|lcm|ldivide|ldl|le|legend|legendre|length|libfunctions|libfunctionsview|libisloaded|libpointer|libstruct|license|light|lightangle|lighting|lin2mu|line|lines|linkaxes|linkdata|linkprop|linsolve|linspace|listdlg|listfonts|load|loadlibrary|loadobj|log|log10|log1p|log2|loglog|logm|logspace|lookfor|lower|ls|lscov|lsqnonneg|lsqr|lt|lu|luinc|magic|makehgtform|mat2cell|mat2str|material|matfile|matlab.io.MatFile|matlab.mixin.(?:Copyable|Heterogeneous(?:.getDefaultScalarElement)?)|matlabrc|matlabroot|max|maxNumCompThreads|mean|median|membrane|memmapfile|memory|menu|mesh|meshc|meshgrid|meshz|meta.(?:class(?:.fromName)?|DynamicProperty|EnumeratedValue|exchange|MetaData|method|package(?:.(?:fromName|getAllPackages))?|property)|metaclass|methods|methodsview|mex(?:.getCompilerConfigurations)?|MException|mexext|mfilename|min|minres|minus|mislocked|mkdir|mkpp|mldivide|mlint|mlintrpt|mlock|mmfileinfo|mmreader|mod|mode|more|move|movefile|movegui|movie|movie2avi|mpower|mrdivide|msgbox|mtimes|mu2lin|multibandread|multibandwrite|munlock|namelengthmax|nargchk|narginchk|nargoutchk|native2unicode|nccreate|ncdisp|nchoosek|ncinfo|ncread|ncreadatt|ncwrite|ncwriteatt|ncwriteschema|ndgrid|ndims|ne|NET(?:.(?:addAssembly|Assembly|convertArray|createArray|createGeneric|disableAutoRelease|enableAutoRelease|GenericClass|invokeGenericMethod|NetException|setStaticProperty))?|netcdf.(?:abort|close|copyAtt|create|defDim|defGrp|defVar|defVarChunking|defVarDeflate|defVarFill|defVarFletcher32|delAtt|endDef|getAtt|getChunkCache|getConstant|getConstantNames|getVar|inq|inqAtt|inqAttID|inqAttName|inqDim|inqDimID|inqDimIDs|inqFormat|inqGrpName|inqGrpNameFull|inqGrpParent|inqGrps|inqLibVers|inqNcid|inqUnlimDims|inqVar|inqVarChunking|inqVarDeflate|inqVarFill|inqVarFletcher32|inqVarID|inqVarIDs|open|putAtt|putVar|reDef|renameAtt|renameDim|renameVar|setChunkCache|setDefaultFormat|setFill|sync)|newplot|nextpow2|nnz|noanimate|nonzeros|norm|normest|not|notebook|now|nthroot|null|num2cell|num2hex|num2str|numel|nzmax|ode(?:113|15i|15s|23|23s|23t|23tb|45)|odeget|odeset|odextend|onCleanup|ones|open|openfig|opengl|openvar|optimget|optimset|or|ordeig|orderfields|ordqz|ordschur|orient|orth|pack|padecoef|pagesetupdlg|pan|pareto|parseSoapResponse|pascal|patch|path|path2rc|pathsep|pathtool|pause|pbaspect|pcg|pchip|pcode|pcolor|pdepe|pdeval|peaks|perl|perms|permute|pie|pink|pinv|planerot|playshow|plot|plot3|plotbrowser|plotedit|plotmatrix|plottools|plotyy|plus|pol2cart|polar|poly|polyarea|polyder|polyeig|polyfit|polyint|polyval|polyvalm|pow2|power|ppval|prefdir|preferences|primes|print|printdlg|printopt|printpreview|prod|profile|profsave|propedit|propertyeditor|psi|publish|PutCharArray|PutFullMatrix|PutWorkspaceData|pwd|qhull|qmr|qr|qrdelete|qrinsert|qrupdate|quad|quad2d|quadgk|quadl|quadv|questdlg|quit|quiver|quiver3|qz|rand|randi|randn|randperm|RandStream(?:.(?:create|getDefaultStream|getGlobalStream|list|setDefaultStream|setGlobalStream))?|rank|rat|rats|rbbox|rcond|rdivide|readasync|real|reallog|realmax|realmin|realpow|realsqrt|record|rectangle|rectint|recycle|reducepatch|reducevolume|refresh|refreshdata|regexp|regexpi|regexprep|regexptranslate|rehash|rem|Remove|RemoveAll|repmat|reset|reshape|residue|restoredefaultpath|rethrow|rgb2hsv|rgb2ind|rgbplot|ribbon|rmappdata|rmdir|rmfield|rmpath|rmpref|rng|roots|rose|rosser|rot90|rotate|rotate3d|round|rref|rsf2csf|run|save|saveas|saveobj|savepath|scatter|scatter3|schur|sec|secd|sech|selectmoveresize|semilogx|semilogy|sendmail|serial|set|setappdata|setdiff|setenv|setfield|setpixelposition|setpref|setstr|setxor|shading|shg|shiftdim|showplottool|shrinkfaces|sign|sin(?:d|h)?|size|slice|smooth3|snapnow|sort|sortrows|sound|soundsc|spalloc|spaugment|spconvert|spdiags|specular|speye|spfun|sph2cart|sphere|spinmap|spline|spones|spparms|sprand|sprandn|sprandsym|sprank|spring|sprintf|spy|sqrt|sqrtm|squeeze|ss2tf|sscanf|stairs|startup|std|stem|stem3|stopasync|str2double|str2func|str2mat|str2num|strcat|strcmp|strcmpi|stream2|stream3|streamline|streamparticles|streamribbon|streamslice|streamtube|strfind|strjust|strmatch|strncmp|strncmpi|strread|strrep|strtok|strtrim|struct2cell|structfun|strvcat|sub2ind|subplot|subsasgn|subsindex|subspace|subsref|substruct|subvolume|sum|summer|superclasses|superiorto|support|surf|surf2patch|surface|surfc|surfl|surfnorm|svd|svds|swapbytes|symamd|symbfact|symmlq|symrcm|symvar|system|tan(?:d|h)?|tar|tempdir|tempname|tetramesh|texlabel|text|textread|textscan|textwrap|tfqmr|throw|tic|Tiff(?:.(?:getTagNames|getVersion))?|timer|timerfind|timerfindall|times|timeseries|title|toc|todatenum|toeplitz|toolboxdir|trace|transpose|trapz|treelayout|treeplot|tril|trimesh|triplequad|triplot|TriRep|TriScatteredInterp|trisurf|triu|tscollection|tsearch|tsearchn|tstool|type|typecast|uibuttongroup|uicontextmenu|uicontrol|uigetdir|uigetfile|uigetpref|uiimport|uimenu|uiopen|uipanel|uipushtool|uiputfile|uiresume|uisave|uisetcolor|uisetfont|uisetpref|uistack|uitable|uitoggletool|uitoolbar|uiwait|uminus|undocheckout|unicode2native|union|unique|unix|unloadlibrary|unmesh|unmkpp|untar|unwrap|unzip|uplus|upper|urlread|urlwrite|usejava|userpath|validateattributes|validatestring|vander|var|vectorize|ver|verctrl|verLessThan|version|vertcat|VideoReader(?:.isPlatformSupported)?|VideoWriter(?:.getProfiles)?|view|viewmtx|visdiff|volumebounds|voronoi|voronoin|wait|waitbar|waitfor|waitforbuttonpress|warndlg|warning|waterfall|wavfinfo|wavplay|wavread|wavrecord|wavwrite|web|weekday|what|whatsnew|which|whitebg|who|whos|wilkinson|winopen|winqueryreg|winter|wk1finfo|wk1read|wk1write|workspace|xlabel|xlim|xlsfinfo|xlsread|xlswrite|xmlread|xmlwrite|xor|xslt|ylabel|ylim|zeros|zip|zlabel|zlim|zoom|addedvarplot|andrewsplot|anova(?:1|2|n)|ansaribradley|aoctool|barttest|bbdesign|beta(?:cdf|fit|inv|like|pdf|rnd|stat)|bino(?:cdf|fit|inv|pdf|rnd|stat)|biplot|bootci|bootstrp|boxplot|candexch|candgen|canoncorr|capability|capaplot|caseread|casewrite|categorical|ccdesign|cdfplot|chi2(?:cdf|gof|inv|pdf|rnd|stat)|cholcov|Classification(?:BaggedEnsemble|Discriminant(?:.(?:fit|make|template))?|Ensemble|KNN(?:.(?:fit|template))?|PartitionedEnsemble|PartitionedModel|Tree(?:.(?:fit|template))?)|classify|classregtree|cluster|clusterdata|cmdscale|combnk|Compact(?:Classification(?:Discriminant|Ensemble|Tree)|Regression(?:Ensemble|Tree)|TreeBagger)|confusionmat|controlchart|controlrules|cophenet|copula(?:cdf|fit|param|pdf|rnd|stat)|cordexch|corr|corrcov|coxphfit|createns|crosstab|crossval|cvpartition|datasample|dataset|daugment|dcovary|dendrogram|dfittool|disttool|dummyvar|dwtest|ecdf|ecdfhist|ev(?:cdf|fit|inv|like|pdf|rnd|stat)|ExhaustiveSearcher|exp(?:cdf|fit|inv|like|pdf|rnd|stat)|factoran|fcdf|ff2n|finv|fitdist|fitensemble|fpdf|fracfact|fracfactgen|friedman|frnd|fstat|fsurfht|fullfact|gagerr|gam(?:cdf|fit|inv|like|pdf|rnd|stat)|GeneralizedLinearModel(?:.fit)?|geo(?:cdf|inv|mean|pdf|rnd|stat)|gev(?:cdf|fit|inv|like|pdf|rnd|stat)|gline|glmfit|glmval|glyphplot|gmdistribution(?:.fit)?|gname|gp(?:cdf|fit|inv|like|pdf|rnd|stat)|gplotmatrix|grp2idx|grpstats|gscatter|haltonset|harmmean|hist3|histfit|hmm(?:decode|estimate|generate|train|viterbi)|hougen|hyge(?:cdf|inv|pdf|rnd|stat)|icdf|inconsistent|interactionplot|invpred|iqr|iwishrnd|jackknife|jbtest|johnsrnd|KDTreeSearcher|kmeans|knnsearch|kruskalwallis|ksdensity|kstest|kstest2|kurtosis|lasso|lassoglm|lassoPlot|leverage|lhsdesign|lhsnorm|lillietest|LinearModel(?:.fit)?|linhyptest|linkage|logn(?:cdf|fit|inv|like|pdf|rnd|stat)|lsline|mad|mahal|maineffectsplot|manova1|manovacluster|mdscale|mhsample|mle|mlecov|mnpdf|mnrfit|mnrnd|mnrval|moment|multcompare|multivarichart|mvn(?:cdf|pdf|rnd)|mvregress|mvregresslike|mvt(?:cdf|pdf|rnd)|NaiveBayes(?:.fit)?|nan(?:cov|max|mean|median|min|std|sum|var)|nbin(?:cdf|fit|inv|pdf|rnd|stat)|ncf(?:cdf|inv|pdf|rnd|stat)|nct(?:cdf|inv|pdf|rnd|stat)|ncx2(?:cdf|inv|pdf|rnd|stat)|NeighborSearcher|nlinfit|nlintool|nlmefit|nlmefitsa|nlparci|nlpredci|nnmf|nominal|NonLinearModel(?:.fit)?|norm(?:cdf|fit|inv|like|pdf|rnd|stat)|normplot|normspec|ordinal|outlierMeasure|parallelcoords|paretotails|partialcorr|pcacov|pcares|pdf|pdist|pdist2|pearsrnd|perfcurve|perms|piecewisedistribution|plsregress|poiss(?:cdf|fit|inv|pdf|rnd|tat)|polyconf|polytool|prctile|princomp|ProbDist(?:Kernel|Parametric|UnivKernel|UnivParam)?|probplot|procrustes|qqplot|qrandset|qrandstream|quantile|randg|random|randsample|randtool|range|rangesearch|ranksum|rayl(?:cdf|fit|inv|pdf|rnd|stat)|rcoplot|refcurve|refline|regress|Regression(?:BaggedEnsemble|Ensemble|PartitionedEnsemble|PartitionedModel|Tree(?:.(?:fit|template))?)|regstats|relieff|ridge|robustdemo|robustfit|rotatefactors|rowexch|rsmdemo|rstool|runstest|sampsizepwr|scatterhist|sequentialfs|signrank|signtest|silhouette|skewness|slicesample|sobolset|squareform|statget|statset|stepwise|stepwisefit|surfht|tabulate|tblread|tblwrite|tcdf|tdfread|tiedrank|tinv|tpdf|TreeBagger|treedisp|treefit|treeprune|treetest|treeval|trimmean|trnd|tstat|ttest|ttest2|unid(?:cdf|inv|pdf|rnd|stat)|unif(?:cdf|inv|it|pdf|rnd|stat)|vartest(?:2|n)?|wbl(?:cdf|fit|inv|like|pdf|rnd|stat)|wblplot|wishrnd|x2fx|xptread|zscore|ztestadapthisteq|analyze75info|analyze75read|applycform|applylut|axes2pix|bestblk|blockproc|bwarea|bwareaopen|bwboundaries|bwconncomp|bwconvhull|bwdist|bwdistgeodesic|bweuler|bwhitmiss|bwlabel|bwlabeln|bwmorph|bwpack|bwperim|bwselect|bwtraceboundary|bwulterode|bwunpack|checkerboard|col2im|colfilt|conndef|convmtx2|corner|cornermetric|corr2|cp2tform|cpcorr|cpselect|cpstruct2pairs|dct2|dctmtx|deconvblind|deconvlucy|deconvreg|deconvwnr|decorrstretch|demosaic|dicom(?:anon|dict|info|lookup|read|uid|write)|edge|edgetaper|entropy|entropyfilt|fan2para|fanbeam|findbounds|fliptform|freqz2|fsamp2|fspecial|ftrans2|fwind1|fwind2|getheight|getimage|getimagemodel|getline|getneighbors|getnhood|getpts|getrangefromclass|getrect|getsequence|gray2ind|graycomatrix|graycoprops|graydist|grayslice|graythresh|hdrread|hdrwrite|histeq|hough|houghlines|houghpeaks|iccfind|iccread|iccroot|iccwrite|idct2|ifanbeam|im2bw|im2col|im2double|im2int16|im2java2d|im2single|im2uint16|im2uint8|imabsdiff|imadd|imadjust|ImageAdapter|imageinfo|imagemodel|imapplymatrix|imattributes|imbothat|imclearborder|imclose|imcolormaptool|imcomplement|imcontour|imcontrast|imcrop|imdilate|imdisplayrange|imdistline|imdivide|imellipse|imerode|imextendedmax|imextendedmin|imfill|imfilter|imfindcircles|imfreehand|imfuse|imgca|imgcf|imgetfile|imhandles|imhist|imhmax|imhmin|imimposemin|imlincomb|imline|immagbox|immovie|immultiply|imnoise|imopen|imoverview|imoverviewpanel|impixel|impixelinfo|impixelinfoval|impixelregion|impixelregionpanel|implay|impoint|impoly|impositionrect|improfile|imputfile|impyramid|imreconstruct|imrect|imregconfig|imregionalmax|imregionalmin|imregister|imresize|imroi|imrotate|imsave|imscrollpanel|imshow|imshowpair|imsubtract|imtool|imtophat|imtransform|imview|ind2gray|ind2rgb|interfileinfo|interfileread|intlut|ippl|iptaddcallback|iptcheckconn|iptcheckhandle|iptcheckinput|iptcheckmap|iptchecknargin|iptcheckstrs|iptdemos|iptgetapi|iptGetPointerBehavior|iptgetpref|ipticondir|iptnum2ordinal|iptPointerManager|iptprefs|iptremovecallback|iptSetPointerBehavior|iptsetpref|iptwindowalign|iradon|isbw|isflat|isgray|isicc|isind|isnitf|isrgb|isrset|lab2double|lab2uint16|lab2uint8|label2rgb|labelmatrix|makecform|makeConstrainToRectFcn|makehdr|makelut|makeresampler|maketform|mat2gray|mean2|medfilt2|montage|nitfinfo|nitfread|nlfilter|normxcorr2|ntsc2rgb|openrset|ordfilt2|otf2psf|padarray|para2fan|phantom|poly2mask|psf2otf|qtdecomp|qtgetblk|qtsetblk|radon|rangefilt|reflect|regionprops|registration.metric.(?:MattesMutualInformation|MeanSquares)|registration.optimizer.(?:OnePlusOneEvolutionary|RegularStepGradientDescent)|rgb2gray|rgb2ntsc|rgb2ycbcr|roicolor|roifill|roifilt2|roipoly|rsetwrite|std2|stdfilt|strel|stretchlim|subimage|tformarray|tformfwd|tforminv|tonemap|translate|truesize|uintlut|viscircles|warp|watershed|whitepoint|wiener2|xyz2double|xyz2uint16|ycbcr2rgb|bintprog|color|fgoalattain|fminbnd|fmincon|fminimax|fminsearch|fminunc|fseminf|fsolve|fzero|fzmult|gangstr|ktrlink|linprog|lsqcurvefit|lsqlin|lsqnonlin|lsqnonneg|optimget|optimset|optimtool|quadprog",r="cell|struct|char|double|single|logical|u?int(?:8|16|32|64)|sparse",i=this.createKeywordMapper({"storage.type":r,"support.function":n,keyword:e,"constant.language":t},"identifier",!0);this.$rules={start:[{token:"comment",regex:"^%[^\r\n]*"},{token:"string",regex:'".*?"'},{token:"string",regex:"'.*?'"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:i,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}]}};r.inherits(s,i),t.MatlabHighlightRules=s}) \ No newline at end of file diff --git a/contact-center/app/src/main/resources/static/js/ace/mode-mysql.js b/contact-center/app/src/main/resources/static/js/ace/mode-mysql.js index e6e878a6..d143b7dc 100644 --- a/contact-center/app/src/main/resources/static/js/ace/mode-mysql.js +++ b/contact-center/app/src/main/resources/static/js/ace/mode-mysql.js @@ -1 +1 @@ -ace.define("ace/mode/mysql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/mysql_highlight_rules","ace/range"],function(e,t,n){var r=e("../lib/oop"),i=e("../mode/text").Mode,s=e("../tokenizer").Tokenizer,o=e("./mysql_highlight_rules").MysqlHighlightRules,u=e("../range").Range,a=function(){this.HighlightRules=o};r.inherits(a,i),function(){this.lineCommentStart=["--","#"],this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/mysql"}.call(a.prototype),t.Mode=a}),ace.define("ace/mode/mysql_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./doc_comment_highlight_rules").DocCommentHighlightRules,o=e("./text_highlight_rules").TextHighlightRules,u=function(){function i(e){var t=e.start,n=e.escape;return{token:"string.start",regex:t,next:[{token:"constant.language.escape",regex:n},{token:"string.end",next:"start",regex:t},{defaultToken:"string"}]}}var e="alter|and|as|asc|between|count|create|delete|desc|distinct|drop|from|having|in|insert|into|is|join|like|not|on|or|order|select|set|table|union|update|values|where|accessible|action|add|after|algorithm|all|analyze|asensitive|at|authors|auto_increment|autocommit|avg|avg_row_length|before|binary|binlog|both|btree|cache|call|cascade|cascaded|case|catalog_name|chain|change|changed|character|check|checkpoint|checksum|class_origin|client_statistics|close|coalesce|code|collate|collation|collations|column|columns|comment|commit|committed|completion|concurrent|condition|connection|consistent|constraint|contains|continue|contributors|convert|cross|current_date|current_time|current_timestamp|current_user|cursor|data|database|databases|day_hour|day_microsecond|day_minute|day_second|deallocate|dec|declare|default|delay_key_write|delayed|delimiter|des_key_file|describe|deterministic|dev_pop|dev_samp|deviance|directory|disable|discard|distinctrow|div|dual|dumpfile|each|elseif|enable|enclosed|end|ends|engine|engines|enum|errors|escape|escaped|even|event|events|every|execute|exists|exit|explain|extended|fast|fetch|field|fields|first|flush|for|force|foreign|found_rows|full|fulltext|function|general|global|grant|grants|group|groupby_concat|handler|hash|help|high_priority|hosts|hour_microsecond|hour_minute|hour_second|if|ignore|ignore_server_ids|import|index|index_statistics|infile|inner|innodb|inout|insensitive|insert_method|install|interval|invoker|isolation|iterate|key|keys|kill|language|last|leading|leave|left|level|limit|linear|lines|list|load|local|localtime|localtimestamp|lock|logs|low_priority|master|master_heartbeat_period|master_ssl_verify_server_cert|masters|match|max|max_rows|maxvalue|message_text|middleint|migrate|min|min_rows|minute_microsecond|minute_second|mod|mode|modifies|modify|mutex|mysql_errno|natural|next|no|no_write_to_binlog|offline|offset|one|online|open|optimize|option|optionally|out|outer|outfile|pack_keys|parser|partition|partitions|password|phase|plugin|plugins|prepare|preserve|prev|primary|privileges|procedure|processlist|profile|profiles|purge|query|quick|range|read|read_write|reads|real|rebuild|recover|references|regexp|relaylog|release|remove|rename|reorganize|repair|repeatable|replace|require|resignal|restrict|resume|return|returns|revoke|right|rlike|rollback|rollup|row|row_format|rtree|savepoint|schedule|schema|schema_name|schemas|second_microsecond|security|sensitive|separator|serializable|server|session|share|show|signal|slave|slow|smallint|snapshot|soname|spatial|specific|sql|sql_big_result|sql_buffer_result|sql_cache|sql_calc_found_rows|sql_no_cache|sql_small_result|sqlexception|sqlstate|sqlwarning|ssl|start|starting|starts|status|std|stddev|stddev_pop|stddev_samp|storage|straight_join|subclass_origin|sum|suspend|table_name|table_statistics|tables|tablespace|temporary|terminated|to|trailing|transaction|trigger|triggers|truncate|uncommitted|undo|uninstall|unique|unlock|upgrade|usage|use|use_frm|user|user_resources|user_statistics|using|utc_date|utc_time|utc_timestamp|value|variables|varying|view|views|warnings|when|while|with|work|write|xa|xor|year_month|zerofill|begin|do|then|else|loop|repeat",t="by|bool|boolean|bit|blob|decimal|double|enum|float|long|longblob|longtext|medium|mediumblob|mediumint|mediumtext|time|timestamp|tinyblob|tinyint|tinytext|text|bigint|int|int1|int2|int3|int4|int8|integer|float|float4|float8|double|char|varbinary|varchar|varcharacter|precision|date|datetime|year|unsigned|signed|numeric",n="charset|clear|connect|edit|ego|exit|go|help|nopager|notee|nowarning|pager|print|prompt|quit|rehash|source|status|system|tee",r=this.createKeywordMapper({"support.function":t,keyword:e,constant:"false|true|null|unknown|date|time|timestamp|ODBCdotTable|zerolessFloat","variable.language":n},"identifier",!0);this.$rules={start:[{token:"comment",regex:"(?:-- |#).*$"},i({start:'"',escape:/\\[0'"bnrtZ\\%_]?/}),i({start:"'",escape:/\\[0'"bnrtZ\\%_]?/}),s.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+|[xX]'[0-9a-fA-F]+'|0[bB][01]+|[bB]'[01]+'/},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"constant.class",regex:"@@?[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"constant.buildin",regex:"`[^`]*`"},{token:"keyword.operator",regex:"\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]},this.embedRules(s,"doc-",[s.getEndRule("start")]),this.normalizeRules()};r.inherits(u,o),t.MysqlHighlightRules=u}),ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},{token:"comment.doc.tag",regex:"\\bTODO\\b"},{defaultToken:"comment.doc"}]}};r.inherits(s,i),s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}) \ No newline at end of file +ace.define("ace/mode/mysql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/mysql_highlight_rules","ace/range"],function(e,t,n){var r=e("../lib/oop"),i=e("../mode/text").Mode,s=e("../tokenizer").Tokenizer,o=e("./mysql_highlight_rules").MysqlHighlightRules,u=e("../range").Range,a=function(){this.HighlightRules=o};r.inherits(a,i),function(){this.lineCommentStart=["--","#"],this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/mysql"}.call(a.prototype),t.Mode=a}),ace.define("ace/mode/mysql_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./doc_comment_highlight_rules").DocCommentHighlightRules,o=e("./text_highlight_rules").TextHighlightRules,u=function(){function i(e){var t=e.start,n=e.escape;return{token:"string.start",regex:t,next:[{token:"constant.language.escape",regex:n},{token:"string.end",next:"start",regex:t},{defaultToken:"string"}]}}var e="alter|and|as|asc|between|count|create|delete|desc|distinct|drop|from|having|in|insert|into|is|join|like|not|on|or|order|select|set|table|union|update|values|where|accessible|action|add|after|algorithm|all|analyze|asensitive|at|authors|auto_increment|autocommit|avg|avg_row_length|before|binary|binlog|both|btree|cache|call|cascade|cascaded|case|catalog_name|chain|change|changed|character|check|checkpoint|checksum|class_origin|client_statistics|close|coalesce|code|collate|collation|collations|column|columns|comment|commit|committed|completion|concurrent|condition|connection|consistent|constraint|contains|continue|contributors|convert|cross|current_date|current_time|current_timestamp|current_user|cursor|data|database|databases|day_hour|day_microsecond|day_minute|day_second|deallocate|dec|declare|default|delay_key_write|delayed|delimiter|des_key_file|describe|deterministic|dev_pop|dev_samp|deviance|directory|disable|discard|distinctrow|div|dual|dumpfile|each|elseif|enable|enclosed|end|ends|engine|engines|enum|errors|escape|escaped|even|exchange|events|every|execute|exists|exit|explain|extended|fast|fetch|field|fields|first|flush|for|force|foreign|found_rows|full|fulltext|function|general|global|grant|grants|group|groupby_concat|handler|hash|help|high_priority|hosts|hour_microsecond|hour_minute|hour_second|if|ignore|ignore_server_ids|import|index|index_statistics|infile|inner|innodb|inout|insensitive|insert_method|install|interval|invoker|isolation|iterate|key|keys|kill|language|last|leading|leave|left|level|limit|linear|lines|list|load|local|localtime|localtimestamp|lock|logs|low_priority|master|master_heartbeat_period|master_ssl_verify_server_cert|masters|match|max|max_rows|maxvalue|message_text|middleint|migrate|min|min_rows|minute_microsecond|minute_second|mod|mode|modifies|modify|mutex|mysql_errno|natural|next|no|no_write_to_binlog|offline|offset|one|online|open|optimize|option|optionally|out|outer|outfile|pack_keys|parser|partition|partitions|password|phase|plugin|plugins|prepare|preserve|prev|primary|privileges|procedure|processlist|profile|profiles|purge|query|quick|range|read|read_write|reads|real|rebuild|recover|references|regexp|relaylog|release|remove|rename|reorganize|repair|repeatable|replace|require|resignal|restrict|resume|return|returns|revoke|right|rlike|rollback|rollup|row|row_format|rtree|savepoint|schedule|schema|schema_name|schemas|second_microsecond|security|sensitive|separator|serializable|server|session|share|show|signal|slave|slow|smallint|snapshot|soname|spatial|specific|sql|sql_big_result|sql_buffer_result|sql_cache|sql_calc_found_rows|sql_no_cache|sql_small_result|sqlexception|sqlstate|sqlwarning|ssl|start|starting|starts|status|std|stddev|stddev_pop|stddev_samp|storage|straight_join|subclass_origin|sum|suspend|table_name|table_statistics|tables|tablespace|temporary|terminated|to|trailing|transaction|trigger|triggers|truncate|uncommitted|undo|uninstall|unique|unlock|upgrade|usage|use|use_frm|user|user_resources|user_statistics|using|utc_date|utc_time|utc_timestamp|value|variables|varying|view|views|warnings|when|while|with|work|write|xa|xor|year_month|zerofill|begin|do|then|else|loop|repeat",t="by|bool|boolean|bit|blob|decimal|double|enum|float|long|longblob|longtext|medium|mediumblob|mediumint|mediumtext|time|timestamp|tinyblob|tinyint|tinytext|text|bigint|int|int1|int2|int3|int4|int8|integer|float|float4|float8|double|char|varbinary|varchar|varcharacter|precision|date|datetime|year|unsigned|signed|numeric",n="charset|clear|connect|edit|ego|exit|go|help|nopager|notee|nowarning|pager|print|prompt|quit|rehash|source|status|system|tee",r=this.createKeywordMapper({"support.function":t,keyword:e,constant:"false|true|null|unknown|date|time|timestamp|ODBCdotTable|zerolessFloat","variable.language":n},"identifier",!0);this.$rules={start:[{token:"comment",regex:"(?:-- |#).*$"},i({start:'"',escape:/\\[0'"bnrtZ\\%_]?/}),i({start:"'",escape:/\\[0'"bnrtZ\\%_]?/}),s.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+|[xX]'[0-9a-fA-F]+'|0[bB][01]+|[bB]'[01]+'/},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"constant.class",regex:"@@?[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"constant.buildin",regex:"`[^`]*`"},{token:"keyword.operator",regex:"\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]},this.embedRules(s,"doc-",[s.getEndRule("start")]),this.normalizeRules()};r.inherits(u,o),t.MysqlHighlightRules=u}),ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},{token:"comment.doc.tag",regex:"\\bTODO\\b"},{defaultToken:"comment.doc"}]}};r.inherits(s,i),s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}) \ No newline at end of file diff --git a/contact-center/app/src/main/resources/static/js/ace/mode-pgsql.js b/contact-center/app/src/main/resources/static/js/ace/mode-pgsql.js index 7ffb6e77..dccb19ae 100644 --- a/contact-center/app/src/main/resources/static/js/ace/mode-pgsql.js +++ b/contact-center/app/src/main/resources/static/js/ace/mode-pgsql.js @@ -1 +1 @@ -ace.define("ace/mode/pgsql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/pgsql_highlight_rules","ace/range"],function(e,t,n){var r=e("../lib/oop"),i=e("../mode/text").Mode,s=e("../tokenizer").Tokenizer,o=e("./pgsql_highlight_rules").PgsqlHighlightRules,u=e("../range").Range,a=function(){this.HighlightRules=o};r.inherits(a,i),function(){this.lineCommentStart="--",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){return e=="start"||e=="keyword.statementEnd"?"":this.$getIndent(t)},this.$id="ace/mode/pgsql"}.call(a.prototype),t.Mode=a}),ace.define("ace/mode/pgsql_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules","ace/mode/perl_highlight_rules","ace/mode/python_highlight_rules","ace/mode/json_highlight_rules","ace/mode/javascript_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./doc_comment_highlight_rules").DocCommentHighlightRules,o=e("./text_highlight_rules").TextHighlightRules,u=e("./perl_highlight_rules").PerlHighlightRules,a=e("./python_highlight_rules").PythonHighlightRules,f=e("./json_highlight_rules").JsonHighlightRules,l=e("./javascript_highlight_rules").JavaScriptHighlightRules,c=function(){var e="abort|absolute|abstime|access|aclitem|action|add|admin|after|aggregate|all|also|alter|always|analyse|analyze|and|any|anyarray|anyelement|anyenum|anynonarray|anyrange|array|as|asc|assertion|assignment|asymmetric|at|attribute|authorization|backward|before|begin|between|bigint|binary|bit|bool|boolean|both|box|bpchar|by|bytea|cache|called|cascade|cascaded|case|cast|catalog|chain|char|character|characteristics|check|checkpoint|cid|cidr|circle|class|close|cluster|coalesce|collate|collation|column|comment|comments|commit|committed|concurrently|configuration|connection|constraint|constraints|content|continue|conversion|copy|cost|create|cross|cstring|csv|current|current_catalog|current_date|current_role|current_schema|current_time|current_timestamp|current_user|cursor|cycle|data|database|date|daterange|day|deallocate|dec|decimal|declare|default|defaults|deferrable|deferred|definer|delete|delimiter|delimiters|desc|dictionary|disable|discard|distinct|do|document|domain|double|drop|each|else|enable|encoding|encrypted|end|enum|escape|event|event_trigger|except|exclude|excluding|exclusive|execute|exists|explain|extension|external|extract|false|family|fdw_handler|fetch|first|float|float4|float8|following|for|force|foreign|forward|freeze|from|full|function|functions|global|grant|granted|greatest|group|gtsvector|handler|having|header|hold|hour|identity|if|ilike|immediate|immutable|implicit|in|including|increment|index|indexes|inet|inherit|inherits|initially|inline|inner|inout|input|insensitive|insert|instead|int|int2|int2vector|int4|int4range|int8|int8range|integer|internal|intersect|interval|into|invoker|is|isnull|isolation|join|json|key|label|language|language_handler|large|last|lateral|lc_collate|lc_ctype|leading|leakproof|least|left|level|like|limit|line|listen|load|local|localtime|localtimestamp|location|lock|lseg|macaddr|mapping|match|materialized|maxvalue|minute|minvalue|mode|money|month|move|name|names|national|natural|nchar|next|no|none|not|nothing|notify|notnull|nowait|null|nullif|nulls|numeric|numrange|object|of|off|offset|oid|oids|oidvector|on|only|opaque|operator|option|options|or|order|out|outer|over|overlaps|overlay|owned|owner|parser|partial|partition|passing|password|path|pg_attribute|pg_auth_members|pg_authid|pg_class|pg_database|pg_node_tree|pg_proc|pg_type|placing|plans|point|polygon|position|preceding|precision|prepare|prepared|preserve|primary|prior|privileges|procedural|procedure|program|quote|range|read|real|reassign|recheck|record|recursive|ref|refcursor|references|refresh|regclass|regconfig|regdictionary|regoper|regoperator|regproc|regprocedure|regtype|reindex|relative|release|reltime|rename|repeatable|replace|replica|reset|restart|restrict|returning|returns|revoke|right|role|rollback|row|rows|rule|savepoint|schema|scroll|search|second|security|select|sequence|sequences|serializable|server|session|session_user|set|setof|share|show|similar|simple|smallint|smgr|snapshot|some|stable|standalone|start|statement|statistics|stdin|stdout|storage|strict|strip|substring|symmetric|sysid|system|table|tables|tablespace|temp|template|temporary|text|then|tid|time|timestamp|timestamptz|timetz|tinterval|to|trailing|transaction|treat|trigger|trim|true|truncate|trusted|tsquery|tsrange|tstzrange|tsvector|txid_snapshot|type|types|unbounded|uncommitted|unencrypted|union|unique|unknown|unlisten|unlogged|until|update|user|using|uuid|vacuum|valid|validate|validator|value|values|varbit|varchar|variadic|varying|verbose|version|view|void|volatile|when|where|whitespace|window|with|without|work|wrapper|write|xid|xml|xmlattributes|xmlconcat|xmlelement|xmlexists|xmlforest|xmlparse|xmlpi|xmlroot|xmlserialize|year|yes|zone",t="RI_FKey_cascade_del|RI_FKey_cascade_upd|RI_FKey_check_ins|RI_FKey_check_upd|RI_FKey_noaction_del|RI_FKey_noaction_upd|RI_FKey_restrict_del|RI_FKey_restrict_upd|RI_FKey_setdefault_del|RI_FKey_setdefault_upd|RI_FKey_setnull_del|RI_FKey_setnull_upd|abbrev|abs|abstime|abstimeeq|abstimege|abstimegt|abstimein|abstimele|abstimelt|abstimene|abstimeout|abstimerecv|abstimesend|aclcontains|acldefault|aclexplode|aclinsert|aclitemeq|aclitemin|aclitemout|aclremove|acos|age|any_in|any_out|anyarray_in|anyarray_out|anyarray_recv|anyarray_send|anyelement_in|anyelement_out|anyenum_in|anyenum_out|anynonarray_in|anynonarray_out|anyrange_in|anyrange_out|anytextcat|area|areajoinsel|areasel|array_agg|array_agg_finalfn|array_agg_transfn|array_append|array_cat|array_dims|array_eq|array_fill|array_ge|array_gt|array_in|array_larger|array_le|array_length|array_lower|array_lt|array_ndims|array_ne|array_out|array_prepend|array_recv|array_remove|array_replace|array_send|array_smaller|array_to_json|array_to_string|array_typanalyze|array_upper|arraycontained|arraycontains|arraycontjoinsel|arraycontsel|arrayoverlap|ascii|ascii_to_mic|ascii_to_utf8|asin|atan|atan2|avg|big5_to_euc_tw|big5_to_mic|big5_to_utf8|bit_and|bit_in|bit_length|bit_or|bit_out|bit_recv|bit_send|bitand|bitcat|bitcmp|biteq|bitge|bitgt|bitle|bitlt|bitne|bitnot|bitor|bitshiftleft|bitshiftright|bittypmodin|bittypmodout|bitxor|bool|bool_and|bool_or|booland_statefunc|booleq|boolge|boolgt|boolin|boolle|boollt|boolne|boolor_statefunc|boolout|boolrecv|boolsend|box|box_above|box_above_eq|box_add|box_below|box_below_eq|box_center|box_contain|box_contain_pt|box_contained|box_distance|box_div|box_eq|box_ge|box_gt|box_in|box_intersect|box_le|box_left|box_lt|box_mul|box_out|box_overabove|box_overbelow|box_overlap|box_overleft|box_overright|box_recv|box_right|box_same|box_send|box_sub|bpchar_larger|bpchar_pattern_ge|bpchar_pattern_gt|bpchar_pattern_le|bpchar_pattern_lt|bpchar_smaller|bpcharcmp|bpchareq|bpcharge|bpchargt|bpchariclike|bpcharicnlike|bpcharicregexeq|bpcharicregexne|bpcharin|bpcharle|bpcharlike|bpcharlt|bpcharne|bpcharnlike|bpcharout|bpcharrecv|bpcharregexeq|bpcharregexne|bpcharsend|bpchartypmodin|bpchartypmodout|broadcast|btabstimecmp|btarraycmp|btbeginscan|btboolcmp|btbpchar_pattern_cmp|btbuild|btbuildempty|btbulkdelete|btcanreturn|btcharcmp|btcostestimate|btendscan|btfloat48cmp|btfloat4cmp|btfloat4sortsupport|btfloat84cmp|btfloat8cmp|btfloat8sortsupport|btgetbitmap|btgettuple|btinsert|btint24cmp|btint28cmp|btint2cmp|btint2sortsupport|btint42cmp|btint48cmp|btint4cmp|btint4sortsupport|btint82cmp|btint84cmp|btint8cmp|btint8sortsupport|btmarkpos|btnamecmp|btnamesortsupport|btoidcmp|btoidsortsupport|btoidvectorcmp|btoptions|btrecordcmp|btreltimecmp|btrescan|btrestrpos|btrim|bttext_pattern_cmp|bttextcmp|bttidcmp|bttintervalcmp|btvacuumcleanup|bytea_string_agg_finalfn|bytea_string_agg_transfn|byteacat|byteacmp|byteaeq|byteage|byteagt|byteain|byteale|bytealike|bytealt|byteane|byteanlike|byteaout|bytearecv|byteasend|cash_cmp|cash_div_cash|cash_div_flt4|cash_div_flt8|cash_div_int2|cash_div_int4|cash_eq|cash_ge|cash_gt|cash_in|cash_le|cash_lt|cash_mi|cash_mul_flt4|cash_mul_flt8|cash_mul_int2|cash_mul_int4|cash_ne|cash_out|cash_pl|cash_recv|cash_send|cash_words|cashlarger|cashsmaller|cbrt|ceil|ceiling|center|char|char_length|character_length|chareq|charge|chargt|charin|charle|charlt|charne|charout|charrecv|charsend|chr|cideq|cidin|cidout|cidr|cidr_in|cidr_out|cidr_recv|cidr_send|cidrecv|cidsend|circle|circle_above|circle_add_pt|circle_below|circle_center|circle_contain|circle_contain_pt|circle_contained|circle_distance|circle_div_pt|circle_eq|circle_ge|circle_gt|circle_in|circle_le|circle_left|circle_lt|circle_mul_pt|circle_ne|circle_out|circle_overabove|circle_overbelow|circle_overlap|circle_overleft|circle_overright|circle_recv|circle_right|circle_same|circle_send|circle_sub_pt|clock_timestamp|close_lb|close_ls|close_lseg|close_pb|close_pl|close_ps|close_sb|close_sl|col_description|concat|concat_ws|contjoinsel|contsel|convert|convert_from|convert_to|corr|cos|cot|count|covar_pop|covar_samp|cstring_in|cstring_out|cstring_recv|cstring_send|cume_dist|current_database|current_query|current_schema|current_schemas|current_setting|current_user|currtid|currtid2|currval|cursor_to_xml|cursor_to_xmlschema|database_to_xml|database_to_xml_and_xmlschema|database_to_xmlschema|date|date_cmp|date_cmp_timestamp|date_cmp_timestamptz|date_eq|date_eq_timestamp|date_eq_timestamptz|date_ge|date_ge_timestamp|date_ge_timestamptz|date_gt|date_gt_timestamp|date_gt_timestamptz|date_in|date_larger|date_le|date_le_timestamp|date_le_timestamptz|date_lt|date_lt_timestamp|date_lt_timestamptz|date_mi|date_mi_interval|date_mii|date_ne|date_ne_timestamp|date_ne_timestamptz|date_out|date_part|date_pl_interval|date_pli|date_recv|date_send|date_smaller|date_sortsupport|date_trunc|daterange|daterange_canonical|daterange_subdiff|datetime_pl|datetimetz_pl|dcbrt|decode|degrees|dense_rank|dexp|diagonal|diameter|dispell_init|dispell_lexize|dist_cpoly|dist_lb|dist_pb|dist_pc|dist_pl|dist_ppath|dist_ps|dist_sb|dist_sl|div|dlog1|dlog10|domain_in|domain_recv|dpow|dround|dsimple_init|dsimple_lexize|dsnowball_init|dsnowball_lexize|dsqrt|dsynonym_init|dsynonym_lexize|dtrunc|elem_contained_by_range|encode|enum_cmp|enum_eq|enum_first|enum_ge|enum_gt|enum_in|enum_larger|enum_last|enum_le|enum_lt|enum_ne|enum_out|enum_range|enum_recv|enum_send|enum_smaller|eqjoinsel|eqsel|euc_cn_to_mic|euc_cn_to_utf8|euc_jis_2004_to_shift_jis_2004|euc_jis_2004_to_utf8|euc_jp_to_mic|euc_jp_to_sjis|euc_jp_to_utf8|euc_kr_to_mic|euc_kr_to_utf8|euc_tw_to_big5|euc_tw_to_mic|euc_tw_to_utf8|event_trigger_in|event_trigger_out|every|exp|factorial|family|fdw_handler_in|fdw_handler_out|first_value|float4|float48div|float48eq|float48ge|float48gt|float48le|float48lt|float48mi|float48mul|float48ne|float48pl|float4_accum|float4abs|float4div|float4eq|float4ge|float4gt|float4in|float4larger|float4le|float4lt|float4mi|float4mul|float4ne|float4out|float4pl|float4recv|float4send|float4smaller|float4um|float4up|float8|float84div|float84eq|float84ge|float84gt|float84le|float84lt|float84mi|float84mul|float84ne|float84pl|float8_accum|float8_avg|float8_corr|float8_covar_pop|float8_covar_samp|float8_regr_accum|float8_regr_avgx|float8_regr_avgy|float8_regr_intercept|float8_regr_r2|float8_regr_slope|float8_regr_sxx|float8_regr_sxy|float8_regr_syy|float8_stddev_pop|float8_stddev_samp|float8_var_pop|float8_var_samp|float8abs|float8div|float8eq|float8ge|float8gt|float8in|float8larger|float8le|float8lt|float8mi|float8mul|float8ne|float8out|float8pl|float8recv|float8send|float8smaller|float8um|float8up|floor|flt4_mul_cash|flt8_mul_cash|fmgr_c_validator|fmgr_internal_validator|fmgr_sql_validator|format|format_type|gb18030_to_utf8|gbk_to_utf8|generate_series|generate_subscripts|get_bit|get_byte|get_current_ts_config|getdatabaseencoding|getpgusername|gin_cmp_prefix|gin_cmp_tslexeme|gin_extract_tsquery|gin_extract_tsvector|gin_tsquery_consistent|ginarrayconsistent|ginarrayextract|ginbeginscan|ginbuild|ginbuildempty|ginbulkdelete|gincostestimate|ginendscan|gingetbitmap|gininsert|ginmarkpos|ginoptions|ginqueryarrayextract|ginrescan|ginrestrpos|ginvacuumcleanup|gist_box_compress|gist_box_consistent|gist_box_decompress|gist_box_penalty|gist_box_picksplit|gist_box_same|gist_box_union|gist_circle_compress|gist_circle_consistent|gist_point_compress|gist_point_consistent|gist_point_distance|gist_poly_compress|gist_poly_consistent|gistbeginscan|gistbuild|gistbuildempty|gistbulkdelete|gistcostestimate|gistendscan|gistgetbitmap|gistgettuple|gistinsert|gistmarkpos|gistoptions|gistrescan|gistrestrpos|gistvacuumcleanup|gtsquery_compress|gtsquery_consistent|gtsquery_decompress|gtsquery_penalty|gtsquery_picksplit|gtsquery_same|gtsquery_union|gtsvector_compress|gtsvector_consistent|gtsvector_decompress|gtsvector_penalty|gtsvector_picksplit|gtsvector_same|gtsvector_union|gtsvectorin|gtsvectorout|has_any_column_privilege|has_column_privilege|has_database_privilege|has_foreign_data_wrapper_privilege|has_function_privilege|has_language_privilege|has_schema_privilege|has_sequence_privilege|has_server_privilege|has_table_privilege|has_tablespace_privilege|has_type_privilege|hash_aclitem|hash_array|hash_numeric|hash_range|hashbeginscan|hashbpchar|hashbuild|hashbuildempty|hashbulkdelete|hashchar|hashcostestimate|hashendscan|hashenum|hashfloat4|hashfloat8|hashgetbitmap|hashgettuple|hashinet|hashinsert|hashint2|hashint2vector|hashint4|hashint8|hashmacaddr|hashmarkpos|hashname|hashoid|hashoidvector|hashoptions|hashrescan|hashrestrpos|hashtext|hashvacuumcleanup|hashvarlena|height|host|hostmask|iclikejoinsel|iclikesel|icnlikejoinsel|icnlikesel|icregexeqjoinsel|icregexeqsel|icregexnejoinsel|icregexnesel|inet_client_addr|inet_client_port|inet_in|inet_out|inet_recv|inet_send|inet_server_addr|inet_server_port|inetand|inetmi|inetmi_int8|inetnot|inetor|inetpl|initcap|int2|int24div|int24eq|int24ge|int24gt|int24le|int24lt|int24mi|int24mul|int24ne|int24pl|int28div|int28eq|int28ge|int28gt|int28le|int28lt|int28mi|int28mul|int28ne|int28pl|int2_accum|int2_avg_accum|int2_mul_cash|int2_sum|int2abs|int2and|int2div|int2eq|int2ge|int2gt|int2in|int2larger|int2le|int2lt|int2mi|int2mod|int2mul|int2ne|int2not|int2or|int2out|int2pl|int2recv|int2send|int2shl|int2shr|int2smaller|int2um|int2up|int2vectoreq|int2vectorin|int2vectorout|int2vectorrecv|int2vectorsend|int2xor|int4|int42div|int42eq|int42ge|int42gt|int42le|int42lt|int42mi|int42mul|int42ne|int42pl|int48div|int48eq|int48ge|int48gt|int48le|int48lt|int48mi|int48mul|int48ne|int48pl|int4_accum|int4_avg_accum|int4_mul_cash|int4_sum|int4abs|int4and|int4div|int4eq|int4ge|int4gt|int4in|int4inc|int4larger|int4le|int4lt|int4mi|int4mod|int4mul|int4ne|int4not|int4or|int4out|int4pl|int4range|int4range_canonical|int4range_subdiff|int4recv|int4send|int4shl|int4shr|int4smaller|int4um|int4up|int4xor|int8|int82div|int82eq|int82ge|int82gt|int82le|int82lt|int82mi|int82mul|int82ne|int82pl|int84div|int84eq|int84ge|int84gt|int84le|int84lt|int84mi|int84mul|int84ne|int84pl|int8_accum|int8_avg|int8_avg_accum|int8_sum|int8abs|int8and|int8div|int8eq|int8ge|int8gt|int8in|int8inc|int8inc_any|int8inc_float8_float8|int8larger|int8le|int8lt|int8mi|int8mod|int8mul|int8ne|int8not|int8or|int8out|int8pl|int8pl_inet|int8range|int8range_canonical|int8range_subdiff|int8recv|int8send|int8shl|int8shr|int8smaller|int8um|int8up|int8xor|integer_pl_date|inter_lb|inter_sb|inter_sl|internal_in|internal_out|interval_accum|interval_avg|interval_cmp|interval_div|interval_eq|interval_ge|interval_gt|interval_hash|interval_in|interval_larger|interval_le|interval_lt|interval_mi|interval_mul|interval_ne|interval_out|interval_pl|interval_pl_date|interval_pl_time|interval_pl_timestamp|interval_pl_timestamptz|interval_pl_timetz|interval_recv|interval_send|interval_smaller|interval_transform|interval_um|intervaltypmodin|intervaltypmodout|intinterval|isclosed|isempty|isfinite|ishorizontal|iso8859_1_to_utf8|iso8859_to_utf8|iso_to_koi8r|iso_to_mic|iso_to_win1251|iso_to_win866|isopen|isparallel|isperp|isvertical|johab_to_utf8|json_agg|json_agg_finalfn|json_agg_transfn|json_array_element|json_array_element_text|json_array_elements|json_array_length|json_each|json_each_text|json_extract_path|json_extract_path_op|json_extract_path_text|json_extract_path_text_op|json_in|json_object_field|json_object_field_text|json_object_keys|json_out|json_populate_record|json_populate_recordset|json_recv|json_send|justify_days|justify_hours|justify_interval|koi8r_to_iso|koi8r_to_mic|koi8r_to_utf8|koi8r_to_win1251|koi8r_to_win866|koi8u_to_utf8|lag|language_handler_in|language_handler_out|last_value|lastval|latin1_to_mic|latin2_to_mic|latin2_to_win1250|latin3_to_mic|latin4_to_mic|lead|left|length|like|like_escape|likejoinsel|likesel|line|line_distance|line_eq|line_horizontal|line_in|line_interpt|line_intersect|line_out|line_parallel|line_perp|line_recv|line_send|line_vertical|ln|lo_close|lo_creat|lo_create|lo_export|lo_import|lo_lseek|lo_lseek64|lo_open|lo_tell|lo_tell64|lo_truncate|lo_truncate64|lo_unlink|log|loread|lower|lower_inc|lower_inf|lowrite|lpad|lseg|lseg_center|lseg_distance|lseg_eq|lseg_ge|lseg_gt|lseg_horizontal|lseg_in|lseg_interpt|lseg_intersect|lseg_le|lseg_length|lseg_lt|lseg_ne|lseg_out|lseg_parallel|lseg_perp|lseg_recv|lseg_send|lseg_vertical|ltrim|macaddr_and|macaddr_cmp|macaddr_eq|macaddr_ge|macaddr_gt|macaddr_in|macaddr_le|macaddr_lt|macaddr_ne|macaddr_not|macaddr_or|macaddr_out|macaddr_recv|macaddr_send|makeaclitem|masklen|max|md5|mic_to_ascii|mic_to_big5|mic_to_euc_cn|mic_to_euc_jp|mic_to_euc_kr|mic_to_euc_tw|mic_to_iso|mic_to_koi8r|mic_to_latin1|mic_to_latin2|mic_to_latin3|mic_to_latin4|mic_to_sjis|mic_to_win1250|mic_to_win1251|mic_to_win866|min|mktinterval|mod|money|mul_d_interval|name|nameeq|namege|namegt|nameiclike|nameicnlike|nameicregexeq|nameicregexne|namein|namele|namelike|namelt|namene|namenlike|nameout|namerecv|nameregexeq|nameregexne|namesend|neqjoinsel|neqsel|netmask|network|network_cmp|network_eq|network_ge|network_gt|network_le|network_lt|network_ne|network_sub|network_subeq|network_sup|network_supeq|nextval|nlikejoinsel|nlikesel|notlike|now|npoints|nth_value|ntile|numeric_abs|numeric_accum|numeric_add|numeric_avg|numeric_avg_accum|numeric_cmp|numeric_div|numeric_div_trunc|numeric_eq|numeric_exp|numeric_fac|numeric_ge|numeric_gt|numeric_in|numeric_inc|numeric_larger|numeric_le|numeric_ln|numeric_log|numeric_lt|numeric_mod|numeric_mul|numeric_ne|numeric_out|numeric_power|numeric_recv|numeric_send|numeric_smaller|numeric_sqrt|numeric_stddev_pop|numeric_stddev_samp|numeric_sub|numeric_transform|numeric_uminus|numeric_uplus|numeric_var_pop|numeric_var_samp|numerictypmodin|numerictypmodout|numnode|numrange|numrange_subdiff|obj_description|octet_length|oid|oideq|oidge|oidgt|oidin|oidlarger|oidle|oidlt|oidne|oidout|oidrecv|oidsend|oidsmaller|oidvectoreq|oidvectorge|oidvectorgt|oidvectorin|oidvectorle|oidvectorlt|oidvectorne|oidvectorout|oidvectorrecv|oidvectorsend|oidvectortypes|on_pb|on_pl|on_ppath|on_ps|on_sb|on_sl|opaque_in|opaque_out|overlaps|overlay|path|path_add|path_add_pt|path_center|path_contain_pt|path_distance|path_div_pt|path_in|path_inter|path_length|path_mul_pt|path_n_eq|path_n_ge|path_n_gt|path_n_le|path_n_lt|path_npoints|path_out|path_recv|path_send|path_sub_pt|pclose|percent_rank|pg_advisory_lock|pg_advisory_lock_shared|pg_advisory_unlock|pg_advisory_unlock_all|pg_advisory_unlock_shared|pg_advisory_xact_lock|pg_advisory_xact_lock_shared|pg_available_extension_versions|pg_available_extensions|pg_backend_pid|pg_backup_start_time|pg_cancel_backend|pg_char_to_encoding|pg_client_encoding|pg_collation_for|pg_collation_is_visible|pg_column_is_updatable|pg_column_size|pg_conf_load_time|pg_conversion_is_visible|pg_create_restore_point|pg_current_xlog_insert_location|pg_current_xlog_location|pg_cursor|pg_database_size|pg_describe_object|pg_encoding_max_length|pg_encoding_to_char|pg_event_trigger_dropped_objects|pg_export_snapshot|pg_extension_config_dump|pg_extension_update_paths|pg_function_is_visible|pg_get_constraintdef|pg_get_expr|pg_get_function_arguments|pg_get_function_identity_arguments|pg_get_function_result|pg_get_functiondef|pg_get_indexdef|pg_get_keywords|pg_get_multixact_members|pg_get_ruledef|pg_get_serial_sequence|pg_get_triggerdef|pg_get_userbyid|pg_get_viewdef|pg_has_role|pg_identify_object|pg_indexes_size|pg_is_in_backup|pg_is_in_recovery|pg_is_other_temp_schema|pg_is_xlog_replay_paused|pg_last_xact_replay_timestamp|pg_last_xlog_receive_location|pg_last_xlog_replay_location|pg_listening_channels|pg_lock_status|pg_ls_dir|pg_my_temp_schema|pg_node_tree_in|pg_node_tree_out|pg_node_tree_recv|pg_node_tree_send|pg_notify|pg_opclass_is_visible|pg_operator_is_visible|pg_opfamily_is_visible|pg_options_to_table|pg_postmaster_start_time|pg_prepared_statement|pg_prepared_xact|pg_read_binary_file|pg_read_file|pg_relation_filenode|pg_relation_filepath|pg_relation_is_updatable|pg_relation_size|pg_reload_conf|pg_rotate_logfile|pg_sequence_parameters|pg_show_all_settings|pg_size_pretty|pg_sleep|pg_start_backup|pg_stat_clear_snapshot|pg_stat_file|pg_stat_get_activity|pg_stat_get_analyze_count|pg_stat_get_autoanalyze_count|pg_stat_get_autovacuum_count|pg_stat_get_backend_activity|pg_stat_get_backend_activity_start|pg_stat_get_backend_client_addr|pg_stat_get_backend_client_port|pg_stat_get_backend_dbid|pg_stat_get_backend_idset|pg_stat_get_backend_pid|pg_stat_get_backend_start|pg_stat_get_backend_userid|pg_stat_get_backend_waiting|pg_stat_get_backend_xact_start|pg_stat_get_bgwriter_buf_written_checkpoints|pg_stat_get_bgwriter_buf_written_clean|pg_stat_get_bgwriter_maxwritten_clean|pg_stat_get_bgwriter_requested_checkpoints|pg_stat_get_bgwriter_stat_reset_time|pg_stat_get_bgwriter_timed_checkpoints|pg_stat_get_blocks_fetched|pg_stat_get_blocks_hit|pg_stat_get_buf_alloc|pg_stat_get_buf_fsync_backend|pg_stat_get_buf_written_backend|pg_stat_get_checkpoint_sync_time|pg_stat_get_checkpoint_write_time|pg_stat_get_db_blk_read_time|pg_stat_get_db_blk_write_time|pg_stat_get_db_blocks_fetched|pg_stat_get_db_blocks_hit|pg_stat_get_db_conflict_all|pg_stat_get_db_conflict_bufferpin|pg_stat_get_db_conflict_lock|pg_stat_get_db_conflict_snapshot|pg_stat_get_db_conflict_startup_deadlock|pg_stat_get_db_conflict_tablespace|pg_stat_get_db_deadlocks|pg_stat_get_db_numbackends|pg_stat_get_db_stat_reset_time|pg_stat_get_db_temp_bytes|pg_stat_get_db_temp_files|pg_stat_get_db_tuples_deleted|pg_stat_get_db_tuples_fetched|pg_stat_get_db_tuples_inserted|pg_stat_get_db_tuples_returned|pg_stat_get_db_tuples_updated|pg_stat_get_db_xact_commit|pg_stat_get_db_xact_rollback|pg_stat_get_dead_tuples|pg_stat_get_function_calls|pg_stat_get_function_self_time|pg_stat_get_function_total_time|pg_stat_get_last_analyze_time|pg_stat_get_last_autoanalyze_time|pg_stat_get_last_autovacuum_time|pg_stat_get_last_vacuum_time|pg_stat_get_live_tuples|pg_stat_get_numscans|pg_stat_get_tuples_deleted|pg_stat_get_tuples_fetched|pg_stat_get_tuples_hot_updated|pg_stat_get_tuples_inserted|pg_stat_get_tuples_returned|pg_stat_get_tuples_updated|pg_stat_get_vacuum_count|pg_stat_get_wal_senders|pg_stat_get_xact_blocks_fetched|pg_stat_get_xact_blocks_hit|pg_stat_get_xact_function_calls|pg_stat_get_xact_function_self_time|pg_stat_get_xact_function_total_time|pg_stat_get_xact_numscans|pg_stat_get_xact_tuples_deleted|pg_stat_get_xact_tuples_fetched|pg_stat_get_xact_tuples_hot_updated|pg_stat_get_xact_tuples_inserted|pg_stat_get_xact_tuples_returned|pg_stat_get_xact_tuples_updated|pg_stat_reset|pg_stat_reset_shared|pg_stat_reset_single_function_counters|pg_stat_reset_single_table_counters|pg_stop_backup|pg_switch_xlog|pg_table_is_visible|pg_table_size|pg_tablespace_databases|pg_tablespace_location|pg_tablespace_size|pg_terminate_backend|pg_timezone_abbrevs|pg_timezone_names|pg_total_relation_size|pg_trigger_depth|pg_try_advisory_lock|pg_try_advisory_lock_shared|pg_try_advisory_xact_lock|pg_try_advisory_xact_lock_shared|pg_ts_config_is_visible|pg_ts_dict_is_visible|pg_ts_parser_is_visible|pg_ts_template_is_visible|pg_type_is_visible|pg_typeof|pg_xlog_location_diff|pg_xlog_replay_pause|pg_xlog_replay_resume|pg_xlogfile_name|pg_xlogfile_name_offset|pi|plainto_tsquery|plpgsql_call_handler|plpgsql_inline_handler|plpgsql_validator|point|point_above|point_add|point_below|point_distance|point_div|point_eq|point_horiz|point_in|point_left|point_mul|point_ne|point_out|point_recv|point_right|point_send|point_sub|point_vert|poly_above|poly_below|poly_center|poly_contain|poly_contain_pt|poly_contained|poly_distance|poly_in|poly_left|poly_npoints|poly_out|poly_overabove|poly_overbelow|poly_overlap|poly_overleft|poly_overright|poly_recv|poly_right|poly_same|poly_send|polygon|popen|position|positionjoinsel|positionsel|postgresql_fdw_validator|pow|power|prsd_end|prsd_headline|prsd_lextype|prsd_nexttoken|prsd_start|pt_contained_circle|pt_contained_poly|query_to_xml|query_to_xml_and_xmlschema|query_to_xmlschema|querytree|quote_ident|quote_literal|quote_nullable|radians|radius|random|range_adjacent|range_after|range_before|range_cmp|range_contained_by|range_contains|range_contains_elem|range_eq|range_ge|range_gist_compress|range_gist_consistent|range_gist_decompress|range_gist_penalty|range_gist_picksplit|range_gist_same|range_gist_union|range_gt|range_in|range_intersect|range_le|range_lt|range_minus|range_ne|range_out|range_overlaps|range_overleft|range_overright|range_recv|range_send|range_typanalyze|range_union|rangesel|rank|record_eq|record_ge|record_gt|record_in|record_le|record_lt|record_ne|record_out|record_recv|record_send|regclass|regclassin|regclassout|regclassrecv|regclasssend|regconfigin|regconfigout|regconfigrecv|regconfigsend|regdictionaryin|regdictionaryout|regdictionaryrecv|regdictionarysend|regexeqjoinsel|regexeqsel|regexnejoinsel|regexnesel|regexp_matches|regexp_replace|regexp_split_to_array|regexp_split_to_table|regoperatorin|regoperatorout|regoperatorrecv|regoperatorsend|regoperin|regoperout|regoperrecv|regopersend|regprocedurein|regprocedureout|regprocedurerecv|regproceduresend|regprocin|regprocout|regprocrecv|regprocsend|regr_avgx|regr_avgy|regr_count|regr_intercept|regr_r2|regr_slope|regr_sxx|regr_sxy|regr_syy|regtypein|regtypeout|regtyperecv|regtypesend|reltime|reltimeeq|reltimege|reltimegt|reltimein|reltimele|reltimelt|reltimene|reltimeout|reltimerecv|reltimesend|repeat|replace|reverse|right|round|row_number|row_to_json|rpad|rtrim|scalargtjoinsel|scalargtsel|scalarltjoinsel|scalarltsel|schema_to_xml|schema_to_xml_and_xmlschema|schema_to_xmlschema|session_user|set_bit|set_byte|set_config|set_masklen|setseed|setval|setweight|shell_in|shell_out|shift_jis_2004_to_euc_jis_2004|shift_jis_2004_to_utf8|shobj_description|sign|similar_escape|sin|sjis_to_euc_jp|sjis_to_mic|sjis_to_utf8|slope|smgreq|smgrin|smgrne|smgrout|spg_kd_choose|spg_kd_config|spg_kd_inner_consistent|spg_kd_picksplit|spg_quad_choose|spg_quad_config|spg_quad_inner_consistent|spg_quad_leaf_consistent|spg_quad_picksplit|spg_range_quad_choose|spg_range_quad_config|spg_range_quad_inner_consistent|spg_range_quad_leaf_consistent|spg_range_quad_picksplit|spg_text_choose|spg_text_config|spg_text_inner_consistent|spg_text_leaf_consistent|spg_text_picksplit|spgbeginscan|spgbuild|spgbuildempty|spgbulkdelete|spgcanreturn|spgcostestimate|spgendscan|spggetbitmap|spggettuple|spginsert|spgmarkpos|spgoptions|spgrescan|spgrestrpos|spgvacuumcleanup|split_part|sqrt|statement_timestamp|stddev|stddev_pop|stddev_samp|string_agg|string_agg_finalfn|string_agg_transfn|string_to_array|strip|strpos|substr|substring|sum|suppress_redundant_updates_trigger|table_to_xml|table_to_xml_and_xmlschema|table_to_xmlschema|tan|text|text_ge|text_gt|text_larger|text_le|text_lt|text_pattern_ge|text_pattern_gt|text_pattern_le|text_pattern_lt|text_smaller|textanycat|textcat|texteq|texticlike|texticnlike|texticregexeq|texticregexne|textin|textlen|textlike|textne|textnlike|textout|textrecv|textregexeq|textregexne|textsend|thesaurus_init|thesaurus_lexize|tideq|tidge|tidgt|tidin|tidlarger|tidle|tidlt|tidne|tidout|tidrecv|tidsend|tidsmaller|time_cmp|time_eq|time_ge|time_gt|time_hash|time_in|time_larger|time_le|time_lt|time_mi_interval|time_mi_time|time_ne|time_out|time_pl_interval|time_recv|time_send|time_smaller|time_transform|timedate_pl|timemi|timenow|timeofday|timepl|timestamp_cmp|timestamp_cmp_date|timestamp_cmp_timestamptz|timestamp_eq|timestamp_eq_date|timestamp_eq_timestamptz|timestamp_ge|timestamp_ge_date|timestamp_ge_timestamptz|timestamp_gt|timestamp_gt_date|timestamp_gt_timestamptz|timestamp_hash|timestamp_in|timestamp_larger|timestamp_le|timestamp_le_date|timestamp_le_timestamptz|timestamp_lt|timestamp_lt_date|timestamp_lt_timestamptz|timestamp_mi|timestamp_mi_interval|timestamp_ne|timestamp_ne_date|timestamp_ne_timestamptz|timestamp_out|timestamp_pl_interval|timestamp_recv|timestamp_send|timestamp_smaller|timestamp_sortsupport|timestamp_transform|timestamptypmodin|timestamptypmodout|timestamptz_cmp|timestamptz_cmp_date|timestamptz_cmp_timestamp|timestamptz_eq|timestamptz_eq_date|timestamptz_eq_timestamp|timestamptz_ge|timestamptz_ge_date|timestamptz_ge_timestamp|timestamptz_gt|timestamptz_gt_date|timestamptz_gt_timestamp|timestamptz_in|timestamptz_larger|timestamptz_le|timestamptz_le_date|timestamptz_le_timestamp|timestamptz_lt|timestamptz_lt_date|timestamptz_lt_timestamp|timestamptz_mi|timestamptz_mi_interval|timestamptz_ne|timestamptz_ne_date|timestamptz_ne_timestamp|timestamptz_out|timestamptz_pl_interval|timestamptz_recv|timestamptz_send|timestamptz_smaller|timestamptztypmodin|timestamptztypmodout|timetypmodin|timetypmodout|timetz_cmp|timetz_eq|timetz_ge|timetz_gt|timetz_hash|timetz_in|timetz_larger|timetz_le|timetz_lt|timetz_mi_interval|timetz_ne|timetz_out|timetz_pl_interval|timetz_recv|timetz_send|timetz_smaller|timetzdate_pl|timetztypmodin|timetztypmodout|timezone|tinterval|tintervalct|tintervalend|tintervaleq|tintervalge|tintervalgt|tintervalin|tintervalle|tintervalleneq|tintervallenge|tintervallengt|tintervallenle|tintervallenlt|tintervallenne|tintervallt|tintervalne|tintervalout|tintervalov|tintervalrecv|tintervalrel|tintervalsame|tintervalsend|tintervalstart|to_ascii|to_char|to_date|to_hex|to_json|to_number|to_timestamp|to_tsquery|to_tsvector|transaction_timestamp|translate|trigger_in|trigger_out|trunc|ts_debug|ts_headline|ts_lexize|ts_match_qv|ts_match_tq|ts_match_tt|ts_match_vq|ts_parse|ts_rank|ts_rank_cd|ts_rewrite|ts_stat|ts_token_type|ts_typanalyze|tsmatchjoinsel|tsmatchsel|tsq_mcontained|tsq_mcontains|tsquery_and|tsquery_cmp|tsquery_eq|tsquery_ge|tsquery_gt|tsquery_le|tsquery_lt|tsquery_ne|tsquery_not|tsquery_or|tsqueryin|tsqueryout|tsqueryrecv|tsquerysend|tsrange|tsrange_subdiff|tstzrange|tstzrange_subdiff|tsvector_cmp|tsvector_concat|tsvector_eq|tsvector_ge|tsvector_gt|tsvector_le|tsvector_lt|tsvector_ne|tsvector_update_trigger|tsvector_update_trigger_column|tsvectorin|tsvectorout|tsvectorrecv|tsvectorsend|txid_current|txid_current_snapshot|txid_snapshot_in|txid_snapshot_out|txid_snapshot_recv|txid_snapshot_send|txid_snapshot_xip|txid_snapshot_xmax|txid_snapshot_xmin|txid_visible_in_snapshot|uhc_to_utf8|unique_key_recheck|unknownin|unknownout|unknownrecv|unknownsend|unnest|upper|upper_inc|upper_inf|utf8_to_ascii|utf8_to_big5|utf8_to_euc_cn|utf8_to_euc_jis_2004|utf8_to_euc_jp|utf8_to_euc_kr|utf8_to_euc_tw|utf8_to_gb18030|utf8_to_gbk|utf8_to_iso8859|utf8_to_iso8859_1|utf8_to_johab|utf8_to_koi8r|utf8_to_koi8u|utf8_to_shift_jis_2004|utf8_to_sjis|utf8_to_uhc|utf8_to_win|uuid_cmp|uuid_eq|uuid_ge|uuid_gt|uuid_hash|uuid_in|uuid_le|uuid_lt|uuid_ne|uuid_out|uuid_recv|uuid_send|var_pop|var_samp|varbit_in|varbit_out|varbit_recv|varbit_send|varbit_transform|varbitcmp|varbiteq|varbitge|varbitgt|varbitle|varbitlt|varbitne|varbittypmodin|varbittypmodout|varchar_transform|varcharin|varcharout|varcharrecv|varcharsend|varchartypmodin|varchartypmodout|variance|version|void_in|void_out|void_recv|void_send|width|width_bucket|win1250_to_latin2|win1250_to_mic|win1251_to_iso|win1251_to_koi8r|win1251_to_mic|win1251_to_win866|win866_to_iso|win866_to_koi8r|win866_to_mic|win866_to_win1251|win_to_utf8|xideq|xideqint4|xidin|xidout|xidrecv|xidsend|xml|xml_in|xml_is_well_formed|xml_is_well_formed_content|xml_is_well_formed_document|xml_out|xml_recv|xml_send|xmlagg|xmlcomment|xmlconcat2|xmlexists|xmlvalidate|xpath|xpath_exists",n=this.createKeywordMapper({"support.function":t,keyword:e},"identifier",!0),r=[{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"variable.language",regex:'".*?"'},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:n,regex:"[a-zA-Z_][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|!!|!~|!~\\*|!~~|!~~\\*|#|##|#<|#<=|#<>|#=|#>|#>=|%|\\&|\\&\\&|\\&<|\\&<\\||\\&>|\\*|\\+|\\-|/|<|<#>|<\\->|<<|<<=|<<\\||<=|<>|<\\?>|<@|<\\^|=|>|>=|>>|>>=|>\\^|\\?#|\\?\\-|\\?\\-\\||\\?\\||\\?\\|\\||@|@\\-@|@>|@@|@@@|\\^|\\||\\|\\&>|\\|/|\\|>>|\\|\\||\\|\\|/|~|~\\*|~<=~|~<~|~=|~>=~|~>~|~~|~~\\*"},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}];this.$rules={start:[{token:"comment",regex:"--.*$"},s.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"keyword.statementBegin",regex:"^[a-zA-Z]+",next:"statement"},{token:"support.buildin",regex:"^\\\\[\\S]+.*$"}],statement:[{token:"comment",regex:"--.*$"},{token:"comment",regex:"\\/\\*",next:"commentStatement"},{token:"statementEnd",regex:";",next:"start"},{token:"string",regex:"\\$perl\\$",next:"perl-start"},{token:"string",regex:"\\$python\\$",next:"python-start"},{token:"string",regex:"\\$json\\$",next:"json-start"},{token:"string",regex:"\\$(js|javascript)\\$",next:"javascript-start"},{token:"string",regex:"\\$[\\w_0-9]*\\$$",next:"dollarSql"},{token:"string",regex:"\\$[\\w_0-9]*\\$",next:"dollarStatementString"}].concat(r),dollarSql:[{token:"comment",regex:"--.*$"},{token:"comment",regex:"\\/\\*",next:"commentDollarSql"},{token:"string",regex:"^\\$[\\w_0-9]*\\$",next:"statement"},{token:"string",regex:"\\$[\\w_0-9]*\\$",next:"dollarSqlString"}].concat(r),comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],commentStatement:[{token:"comment",regex:".*?\\*\\/",next:"statement"},{token:"comment",regex:".+"}],commentDollarSql:[{token:"comment",regex:".*?\\*\\/",next:"dollarSql"},{token:"comment",regex:".+"}],dollarStatementString:[{token:"string",regex:".*?\\$[\\w_0-9]*\\$",next:"statement"},{token:"string",regex:".+"}],dollarSqlString:[{token:"string",regex:".*?\\$[\\w_0-9]*\\$",next:"dollarSql"},{token:"string",regex:".+"}]},this.embedRules(s,"doc-",[s.getEndRule("start")]),this.embedRules(u,"perl-",[{token:"string",regex:"\\$perl\\$",next:"statement"}]),this.embedRules(a,"python-",[{token:"string",regex:"\\$python\\$",next:"statement"}]),this.embedRules(f,"json-",[{token:"string",regex:"\\$json\\$",next:"statement"}]),this.embedRules(l,"javascript-",[{token:"string",regex:"\\$(js|javascript)\\$",next:"statement"}])};r.inherits(c,o),t.PgsqlHighlightRules=c}),ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},{token:"comment.doc.tag",regex:"\\bTODO\\b"},{defaultToken:"comment.doc"}]}};r.inherits(s,i),s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/perl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="base|constant|continue|else|elsif|for|foreach|format|goto|if|last|local|my|next|no|package|parent|redo|require|scalar|sub|unless|until|while|use|vars",t="ARGV|ENV|INC|SIG",n="getprotobynumber|getprotobyname|getservbyname|gethostbyaddr|gethostbyname|getservbyport|getnetbyaddr|getnetbyname|getsockname|getpeername|setpriority|getprotoent|setprotoent|getpriority|endprotoent|getservent|setservent|endservent|sethostent|socketpair|getsockopt|gethostent|endhostent|setsockopt|setnetent|quotemeta|localtime|prototype|getnetent|endnetent|rewinddir|wantarray|getpwuid|closedir|getlogin|readlink|endgrent|getgrgid|getgrnam|shmwrite|shutdown|readline|endpwent|setgrent|readpipe|formline|truncate|dbmclose|syswrite|setpwent|getpwnam|getgrent|getpwent|ucfirst|sysread|setpgrp|shmread|sysseek|sysopen|telldir|defined|opendir|connect|lcfirst|getppid|binmode|syscall|sprintf|getpgrp|readdir|seekdir|waitpid|reverse|unshift|symlink|dbmopen|semget|msgrcv|rename|listen|chroot|msgsnd|shmctl|accept|unpack|exists|fileno|shmget|system|unlink|printf|gmtime|msgctl|semctl|values|rindex|substr|splice|length|msgget|select|socket|return|caller|delete|alarm|ioctl|index|undef|lstat|times|srand|chown|fcntl|close|write|umask|rmdir|study|sleep|chomp|untie|print|utime|mkdir|atan2|split|crypt|flock|chmod|BEGIN|bless|chdir|semop|shift|reset|link|stat|chop|grep|fork|dump|join|open|tell|pipe|exit|glob|warn|each|bind|sort|pack|eval|push|keys|getc|kill|seek|sqrt|send|wait|rand|tied|read|time|exec|recv|eof|chr|int|ord|exp|pos|pop|sin|log|abs|oct|hex|tie|cos|vec|END|ref|map|die|uc|lc|do",r=this.createKeywordMapper({keyword:e,"constant.language":t,"support.function":n},"identifier");this.$rules={start:[{token:"comment.doc",regex:"^=(?:begin|item)\\b",next:"block_comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:'["].*\\\\$',next:"qqstring"},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"string",regex:"['].*\\\\$",next:"qstring"},{token:"constant.numeric",regex:"0x[0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"%#|\\$#|\\.\\.\\.|\\|\\|=|>>=|<<=|<=>|&&=|=>|!~|\\^=|&=|\\|=|\\.=|x=|%=|\\/=|\\*=|\\-=|\\+=|=~|\\*\\*|\\-\\-|\\.\\.|\\|\\||&&|\\+\\+|\\->|!=|==|>=|<=|>>|<<|,|=|\\?\\:|\\^|\\||x|%|\\/|\\*|<|&|\\\\|~|!|>|\\.|\\-|\\+|\\-C|\\-b|\\-S|\\-u|\\-t|\\-p|\\-l|\\-d|\\-f|\\-g|\\-s|\\-z|\\-k|\\-e|\\-O|\\-T|\\-B|\\-M|\\-A|\\-X|\\-W|\\-c|\\-R|\\-o|\\-x|\\-w|\\-r|\\b(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|xor)"},{token:"comment",regex:"#.*$"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{token:"string",regex:".+"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{token:"string",regex:".+"}],block_comment:[{token:"comment.doc",regex:"^=cut\\b",next:"start"},{defaultToken:"comment.doc"}]}};r.inherits(s,i),t.PerlHighlightRules=s}),ace.define("ace/mode/python_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="and|as|assert|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|raise|return|try|while|with|yield",t="True|False|None|NotImplemented|Ellipsis|__debug__",n="abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|binfile|iter|property|tuple|bool|filter|len|range|type|bytearray|float|list|raw_input|unichr|callable|format|locals|reduce|unicode|chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|__import__|complex|hash|min|set|apply|delattr|help|next|setattr|buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern",r=this.createKeywordMapper({"invalid.deprecated":"debugger","support.function":n,"constant.language":t,keyword:e},"identifier"),i="(?:r|u|ur|R|U|UR|Ur|uR)?",s="(?:(?:[1-9]\\d*)|(?:0))",o="(?:0[oO]?[0-7]+)",u="(?:0[xX][\\dA-Fa-f]+)",a="(?:0[bB][01]+)",f="(?:"+s+"|"+o+"|"+u+"|"+a+")",l="(?:[eE][+-]?\\d+)",c="(?:\\.\\d+)",h="(?:\\d+)",p="(?:(?:"+h+"?"+c+")|(?:"+h+"\\.))",d="(?:(?:"+p+"|"+h+")"+l+")",v="(?:"+d+"|"+p+")",m="\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})";this.$rules={start:[{token:"comment",regex:"#.*$"},{token:"string",regex:i+'"{3}',next:"qqstring3"},{token:"string",regex:i+'"(?=.)',next:"qqstring"},{token:"string",regex:i+"'{3}",next:"qstring3"},{token:"string",regex:i+"'(?=.)",next:"qstring"},{token:"constant.numeric",regex:"(?:"+v+"|\\d+)[jJ]\\b"},{token:"constant.numeric",regex:v},{token:"constant.numeric",regex:f+"[lL]\\b"},{token:"constant.numeric",regex:f+"\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]\\)\\}]"},{token:"text",regex:"\\s+"}],qqstring3:[{token:"constant.language.escape",regex:m},{token:"string",regex:'"{3}',next:"start"},{defaultToken:"string"}],qstring3:[{token:"constant.language.escape",regex:m},{token:"string",regex:"'{3}",next:"start"},{defaultToken:"string"}],qqstring:[{token:"constant.language.escape",regex:m},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:m},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"start"},{defaultToken:"string"}]}};r.inherits(s,i),t.PythonHighlightRules=s}),ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"variable",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)'},{token:"string",regex:'"',next:"string"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:"invalid.illegal",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"invalid.illegal",regex:"\\/\\/.*$"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],string:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/},{token:"string",regex:'[^"\\\\]+'},{token:"string",regex:'"',next:"start"},{token:"string",regex:"",next:"start"}]}};r.inherits(s,i),t.JsonHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),t="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",n="[a-zA-Z\\$_\xa1-\uffff][a-zA-Z\\d\\$_\xa1-\uffff]*\\b",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[{token:"comment",regex:"\\/\\/",next:"line_comment"},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+n+")(\\.)(prototype)(\\.)("+n+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+n+")(\\.)("+n+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+n+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+n+")(\\.)("+n+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+n+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+n+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+t+")\\b",next:"start"},{token:["punctuation.operator","support.function"],regex:/(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:["punctuation.operator","support.function.dom"],regex:/(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:["punctuation.operator","support.constant"],regex:/(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/},{token:e,regex:n},{token:"keyword.operator",regex:/--|\+\+|[!$%&*+\-~]|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=/,next:"start"},{token:"punctuation.operator",regex:/\?|\:|\,|\;|\./,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"keyword.operator",regex:/\/=?/,next:"start"},{token:"comment",regex:/^#!.*$/}],start:[i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment_regex_allowed"},{token:"comment",regex:"\\/\\/",next:"line_comment_regex_allowed"},{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:n},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],comment_regex_allowed:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],comment:[{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment"}],line_comment_regex_allowed:[{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment"}],line_comment:[{token:"comment",regex:"$|^",next:"no_regex"},{defaultToken:"comment"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},this.embedRules(i,"doc-",[i.getEndRule("no_regex")])};r.inherits(o,s),t.JavaScriptHighlightRules=o}) \ No newline at end of file +ace.define("ace/mode/pgsql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/pgsql_highlight_rules","ace/range"],function(e,t,n){var r=e("../lib/oop"),i=e("../mode/text").Mode,s=e("../tokenizer").Tokenizer,o=e("./pgsql_highlight_rules").PgsqlHighlightRules,u=e("../range").Range,a=function(){this.HighlightRules=o};r.inherits(a,i),function(){this.lineCommentStart="--",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){return e=="start"||e=="keyword.statementEnd"?"":this.$getIndent(t)},this.$id="ace/mode/pgsql"}.call(a.prototype),t.Mode=a}),ace.define("ace/mode/pgsql_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules","ace/mode/perl_highlight_rules","ace/mode/python_highlight_rules","ace/mode/json_highlight_rules","ace/mode/javascript_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./doc_comment_highlight_rules").DocCommentHighlightRules,o=e("./text_highlight_rules").TextHighlightRules,u=e("./perl_highlight_rules").PerlHighlightRules,a=e("./python_highlight_rules").PythonHighlightRules,f=e("./json_highlight_rules").JsonHighlightRules,l=e("./javascript_highlight_rules").JavaScriptHighlightRules,c=function(){var e="abort|absolute|abstime|access|aclitem|action|add|admin|after|aggregate|all|also|alter|always|analyse|analyze|and|any|anyarray|anyelement|anyenum|anynonarray|anyrange|array|as|asc|assertion|assignment|asymmetric|at|attribute|authorization|backward|before|begin|between|bigint|binary|bit|bool|boolean|both|box|bpchar|by|bytea|cache|called|cascade|cascaded|case|cast|catalog|chain|char|character|characteristics|check|checkpoint|cid|cidr|circle|class|close|cluster|coalesce|collate|collation|column|comment|comments|commit|committed|concurrently|configuration|connection|constraint|constraints|content|continue|conversion|copy|cost|create|cross|cstring|csv|current|current_catalog|current_date|current_role|current_schema|current_time|current_timestamp|current_user|cursor|cycle|data|database|date|daterange|day|deallocate|dec|decimal|declare|default|defaults|deferrable|deferred|definer|delete|delimiter|delimiters|desc|dictionary|disable|discard|distinct|do|document|domain|double|drop|each|else|enable|encoding|encrypted|end|enum|escape|exchange|event_trigger|except|exclude|excluding|exclusive|execute|exists|explain|extension|external|extract|false|family|fdw_handler|fetch|first|float|float4|float8|following|for|force|foreign|forward|freeze|from|full|function|functions|global|grant|granted|greatest|group|gtsvector|handler|having|header|hold|hour|identity|if|ilike|immediate|immutable|implicit|in|including|increment|index|indexes|inet|inherit|inherits|initially|inline|inner|inout|input|insensitive|insert|instead|int|int2|int2vector|int4|int4range|int8|int8range|integer|internal|intersect|interval|into|invoker|is|isnull|isolation|join|json|key|label|language|language_handler|large|last|lateral|lc_collate|lc_ctype|leading|leakproof|least|left|level|like|limit|line|listen|load|local|localtime|localtimestamp|location|lock|lseg|macaddr|mapping|match|materialized|maxvalue|minute|minvalue|mode|money|month|move|name|names|national|natural|nchar|next|no|none|not|nothing|notify|notnull|nowait|null|nullif|nulls|numeric|numrange|object|of|off|offset|oid|oids|oidvector|on|only|opaque|operator|option|options|or|order|out|outer|over|overlaps|overlay|owned|owner|parser|partial|partition|passing|password|path|pg_attribute|pg_auth_members|pg_authid|pg_class|pg_database|pg_node_tree|pg_proc|pg_type|placing|plans|point|polygon|position|preceding|precision|prepare|prepared|preserve|primary|prior|privileges|procedural|procedure|program|quote|range|read|real|reassign|recheck|record|recursive|ref|refcursor|references|refresh|regclass|regconfig|regdictionary|regoper|regoperator|regproc|regprocedure|regtype|reindex|relative|release|reltime|rename|repeatable|replace|replica|reset|restart|restrict|returning|returns|revoke|right|role|rollback|row|rows|rule|savepoint|schema|scroll|search|second|security|select|sequence|sequences|serializable|server|session|session_user|set|setof|share|show|similar|simple|smallint|smgr|snapshot|some|stable|standalone|start|statement|statistics|stdin|stdout|storage|strict|strip|substring|symmetric|sysid|system|table|tables|tablespace|temp|template|temporary|text|then|tid|time|timestamp|timestamptz|timetz|tinterval|to|trailing|transaction|treat|trigger|trim|true|truncate|trusted|tsquery|tsrange|tstzrange|tsvector|txid_snapshot|type|types|unbounded|uncommitted|unencrypted|union|unique|unknown|unlisten|unlogged|until|update|user|using|uuid|vacuum|valid|validate|validator|value|values|varbit|varchar|variadic|varying|verbose|version|view|void|volatile|when|where|whitespace|window|with|without|work|wrapper|write|xid|xml|xmlattributes|xmlconcat|xmlelement|xmlexists|xmlforest|xmlparse|xmlpi|xmlroot|xmlserialize|year|yes|zone",t="RI_FKey_cascade_del|RI_FKey_cascade_upd|RI_FKey_check_ins|RI_FKey_check_upd|RI_FKey_noaction_del|RI_FKey_noaction_upd|RI_FKey_restrict_del|RI_FKey_restrict_upd|RI_FKey_setdefault_del|RI_FKey_setdefault_upd|RI_FKey_setnull_del|RI_FKey_setnull_upd|abbrev|abs|abstime|abstimeeq|abstimege|abstimegt|abstimein|abstimele|abstimelt|abstimene|abstimeout|abstimerecv|abstimesend|aclcontains|acldefault|aclexplode|aclinsert|aclitemeq|aclitemin|aclitemout|aclremove|acos|age|any_in|any_out|anyarray_in|anyarray_out|anyarray_recv|anyarray_send|anyelement_in|anyelement_out|anyenum_in|anyenum_out|anynonarray_in|anynonarray_out|anyrange_in|anyrange_out|anytextcat|area|areajoinsel|areasel|array_agg|array_agg_finalfn|array_agg_transfn|array_append|array_cat|array_dims|array_eq|array_fill|array_ge|array_gt|array_in|array_larger|array_le|array_length|array_lower|array_lt|array_ndims|array_ne|array_out|array_prepend|array_recv|array_remove|array_replace|array_send|array_smaller|array_to_json|array_to_string|array_typanalyze|array_upper|arraycontained|arraycontains|arraycontjoinsel|arraycontsel|arrayoverlap|ascii|ascii_to_mic|ascii_to_utf8|asin|atan|atan2|avg|big5_to_euc_tw|big5_to_mic|big5_to_utf8|bit_and|bit_in|bit_length|bit_or|bit_out|bit_recv|bit_send|bitand|bitcat|bitcmp|biteq|bitge|bitgt|bitle|bitlt|bitne|bitnot|bitor|bitshiftleft|bitshiftright|bittypmodin|bittypmodout|bitxor|bool|bool_and|bool_or|booland_statefunc|booleq|boolge|boolgt|boolin|boolle|boollt|boolne|boolor_statefunc|boolout|boolrecv|boolsend|box|box_above|box_above_eq|box_add|box_below|box_below_eq|box_center|box_contain|box_contain_pt|box_contained|box_distance|box_div|box_eq|box_ge|box_gt|box_in|box_intersect|box_le|box_left|box_lt|box_mul|box_out|box_overabove|box_overbelow|box_overlap|box_overleft|box_overright|box_recv|box_right|box_same|box_send|box_sub|bpchar_larger|bpchar_pattern_ge|bpchar_pattern_gt|bpchar_pattern_le|bpchar_pattern_lt|bpchar_smaller|bpcharcmp|bpchareq|bpcharge|bpchargt|bpchariclike|bpcharicnlike|bpcharicregexeq|bpcharicregexne|bpcharin|bpcharle|bpcharlike|bpcharlt|bpcharne|bpcharnlike|bpcharout|bpcharrecv|bpcharregexeq|bpcharregexne|bpcharsend|bpchartypmodin|bpchartypmodout|broadcast|btabstimecmp|btarraycmp|btbeginscan|btboolcmp|btbpchar_pattern_cmp|btbuild|btbuildempty|btbulkdelete|btcanreturn|btcharcmp|btcostestimate|btendscan|btfloat48cmp|btfloat4cmp|btfloat4sortsupport|btfloat84cmp|btfloat8cmp|btfloat8sortsupport|btgetbitmap|btgettuple|btinsert|btint24cmp|btint28cmp|btint2cmp|btint2sortsupport|btint42cmp|btint48cmp|btint4cmp|btint4sortsupport|btint82cmp|btint84cmp|btint8cmp|btint8sortsupport|btmarkpos|btnamecmp|btnamesortsupport|btoidcmp|btoidsortsupport|btoidvectorcmp|btoptions|btrecordcmp|btreltimecmp|btrescan|btrestrpos|btrim|bttext_pattern_cmp|bttextcmp|bttidcmp|bttintervalcmp|btvacuumcleanup|bytea_string_agg_finalfn|bytea_string_agg_transfn|byteacat|byteacmp|byteaeq|byteage|byteagt|byteain|byteale|bytealike|bytealt|byteane|byteanlike|byteaout|bytearecv|byteasend|cash_cmp|cash_div_cash|cash_div_flt4|cash_div_flt8|cash_div_int2|cash_div_int4|cash_eq|cash_ge|cash_gt|cash_in|cash_le|cash_lt|cash_mi|cash_mul_flt4|cash_mul_flt8|cash_mul_int2|cash_mul_int4|cash_ne|cash_out|cash_pl|cash_recv|cash_send|cash_words|cashlarger|cashsmaller|cbrt|ceil|ceiling|center|char|char_length|character_length|chareq|charge|chargt|charin|charle|charlt|charne|charout|charrecv|charsend|chr|cideq|cidin|cidout|cidr|cidr_in|cidr_out|cidr_recv|cidr_send|cidrecv|cidsend|circle|circle_above|circle_add_pt|circle_below|circle_center|circle_contain|circle_contain_pt|circle_contained|circle_distance|circle_div_pt|circle_eq|circle_ge|circle_gt|circle_in|circle_le|circle_left|circle_lt|circle_mul_pt|circle_ne|circle_out|circle_overabove|circle_overbelow|circle_overlap|circle_overleft|circle_overright|circle_recv|circle_right|circle_same|circle_send|circle_sub_pt|clock_timestamp|close_lb|close_ls|close_lseg|close_pb|close_pl|close_ps|close_sb|close_sl|col_description|concat|concat_ws|contjoinsel|contsel|convert|convert_from|convert_to|corr|cos|cot|count|covar_pop|covar_samp|cstring_in|cstring_out|cstring_recv|cstring_send|cume_dist|current_database|current_query|current_schema|current_schemas|current_setting|current_user|currtid|currtid2|currval|cursor_to_xml|cursor_to_xmlschema|database_to_xml|database_to_xml_and_xmlschema|database_to_xmlschema|date|date_cmp|date_cmp_timestamp|date_cmp_timestamptz|date_eq|date_eq_timestamp|date_eq_timestamptz|date_ge|date_ge_timestamp|date_ge_timestamptz|date_gt|date_gt_timestamp|date_gt_timestamptz|date_in|date_larger|date_le|date_le_timestamp|date_le_timestamptz|date_lt|date_lt_timestamp|date_lt_timestamptz|date_mi|date_mi_interval|date_mii|date_ne|date_ne_timestamp|date_ne_timestamptz|date_out|date_part|date_pl_interval|date_pli|date_recv|date_send|date_smaller|date_sortsupport|date_trunc|daterange|daterange_canonical|daterange_subdiff|datetime_pl|datetimetz_pl|dcbrt|decode|degrees|dense_rank|dexp|diagonal|diameter|dispell_init|dispell_lexize|dist_cpoly|dist_lb|dist_pb|dist_pc|dist_pl|dist_ppath|dist_ps|dist_sb|dist_sl|div|dlog1|dlog10|domain_in|domain_recv|dpow|dround|dsimple_init|dsimple_lexize|dsnowball_init|dsnowball_lexize|dsqrt|dsynonym_init|dsynonym_lexize|dtrunc|elem_contained_by_range|encode|enum_cmp|enum_eq|enum_first|enum_ge|enum_gt|enum_in|enum_larger|enum_last|enum_le|enum_lt|enum_ne|enum_out|enum_range|enum_recv|enum_send|enum_smaller|eqjoinsel|eqsel|euc_cn_to_mic|euc_cn_to_utf8|euc_jis_2004_to_shift_jis_2004|euc_jis_2004_to_utf8|euc_jp_to_mic|euc_jp_to_sjis|euc_jp_to_utf8|euc_kr_to_mic|euc_kr_to_utf8|euc_tw_to_big5|euc_tw_to_mic|euc_tw_to_utf8|event_trigger_in|event_trigger_out|every|exp|factorial|family|fdw_handler_in|fdw_handler_out|first_value|float4|float48div|float48eq|float48ge|float48gt|float48le|float48lt|float48mi|float48mul|float48ne|float48pl|float4_accum|float4abs|float4div|float4eq|float4ge|float4gt|float4in|float4larger|float4le|float4lt|float4mi|float4mul|float4ne|float4out|float4pl|float4recv|float4send|float4smaller|float4um|float4up|float8|float84div|float84eq|float84ge|float84gt|float84le|float84lt|float84mi|float84mul|float84ne|float84pl|float8_accum|float8_avg|float8_corr|float8_covar_pop|float8_covar_samp|float8_regr_accum|float8_regr_avgx|float8_regr_avgy|float8_regr_intercept|float8_regr_r2|float8_regr_slope|float8_regr_sxx|float8_regr_sxy|float8_regr_syy|float8_stddev_pop|float8_stddev_samp|float8_var_pop|float8_var_samp|float8abs|float8div|float8eq|float8ge|float8gt|float8in|float8larger|float8le|float8lt|float8mi|float8mul|float8ne|float8out|float8pl|float8recv|float8send|float8smaller|float8um|float8up|floor|flt4_mul_cash|flt8_mul_cash|fmgr_c_validator|fmgr_internal_validator|fmgr_sql_validator|format|format_type|gb18030_to_utf8|gbk_to_utf8|generate_series|generate_subscripts|get_bit|get_byte|get_current_ts_config|getdatabaseencoding|getpgusername|gin_cmp_prefix|gin_cmp_tslexeme|gin_extract_tsquery|gin_extract_tsvector|gin_tsquery_consistent|ginarrayconsistent|ginarrayextract|ginbeginscan|ginbuild|ginbuildempty|ginbulkdelete|gincostestimate|ginendscan|gingetbitmap|gininsert|ginmarkpos|ginoptions|ginqueryarrayextract|ginrescan|ginrestrpos|ginvacuumcleanup|gist_box_compress|gist_box_consistent|gist_box_decompress|gist_box_penalty|gist_box_picksplit|gist_box_same|gist_box_union|gist_circle_compress|gist_circle_consistent|gist_point_compress|gist_point_consistent|gist_point_distance|gist_poly_compress|gist_poly_consistent|gistbeginscan|gistbuild|gistbuildempty|gistbulkdelete|gistcostestimate|gistendscan|gistgetbitmap|gistgettuple|gistinsert|gistmarkpos|gistoptions|gistrescan|gistrestrpos|gistvacuumcleanup|gtsquery_compress|gtsquery_consistent|gtsquery_decompress|gtsquery_penalty|gtsquery_picksplit|gtsquery_same|gtsquery_union|gtsvector_compress|gtsvector_consistent|gtsvector_decompress|gtsvector_penalty|gtsvector_picksplit|gtsvector_same|gtsvector_union|gtsvectorin|gtsvectorout|has_any_column_privilege|has_column_privilege|has_database_privilege|has_foreign_data_wrapper_privilege|has_function_privilege|has_language_privilege|has_schema_privilege|has_sequence_privilege|has_server_privilege|has_table_privilege|has_tablespace_privilege|has_type_privilege|hash_aclitem|hash_array|hash_numeric|hash_range|hashbeginscan|hashbpchar|hashbuild|hashbuildempty|hashbulkdelete|hashchar|hashcostestimate|hashendscan|hashenum|hashfloat4|hashfloat8|hashgetbitmap|hashgettuple|hashinet|hashinsert|hashint2|hashint2vector|hashint4|hashint8|hashmacaddr|hashmarkpos|hashname|hashoid|hashoidvector|hashoptions|hashrescan|hashrestrpos|hashtext|hashvacuumcleanup|hashvarlena|height|host|hostmask|iclikejoinsel|iclikesel|icnlikejoinsel|icnlikesel|icregexeqjoinsel|icregexeqsel|icregexnejoinsel|icregexnesel|inet_client_addr|inet_client_port|inet_in|inet_out|inet_recv|inet_send|inet_server_addr|inet_server_port|inetand|inetmi|inetmi_int8|inetnot|inetor|inetpl|initcap|int2|int24div|int24eq|int24ge|int24gt|int24le|int24lt|int24mi|int24mul|int24ne|int24pl|int28div|int28eq|int28ge|int28gt|int28le|int28lt|int28mi|int28mul|int28ne|int28pl|int2_accum|int2_avg_accum|int2_mul_cash|int2_sum|int2abs|int2and|int2div|int2eq|int2ge|int2gt|int2in|int2larger|int2le|int2lt|int2mi|int2mod|int2mul|int2ne|int2not|int2or|int2out|int2pl|int2recv|int2send|int2shl|int2shr|int2smaller|int2um|int2up|int2vectoreq|int2vectorin|int2vectorout|int2vectorrecv|int2vectorsend|int2xor|int4|int42div|int42eq|int42ge|int42gt|int42le|int42lt|int42mi|int42mul|int42ne|int42pl|int48div|int48eq|int48ge|int48gt|int48le|int48lt|int48mi|int48mul|int48ne|int48pl|int4_accum|int4_avg_accum|int4_mul_cash|int4_sum|int4abs|int4and|int4div|int4eq|int4ge|int4gt|int4in|int4inc|int4larger|int4le|int4lt|int4mi|int4mod|int4mul|int4ne|int4not|int4or|int4out|int4pl|int4range|int4range_canonical|int4range_subdiff|int4recv|int4send|int4shl|int4shr|int4smaller|int4um|int4up|int4xor|int8|int82div|int82eq|int82ge|int82gt|int82le|int82lt|int82mi|int82mul|int82ne|int82pl|int84div|int84eq|int84ge|int84gt|int84le|int84lt|int84mi|int84mul|int84ne|int84pl|int8_accum|int8_avg|int8_avg_accum|int8_sum|int8abs|int8and|int8div|int8eq|int8ge|int8gt|int8in|int8inc|int8inc_any|int8inc_float8_float8|int8larger|int8le|int8lt|int8mi|int8mod|int8mul|int8ne|int8not|int8or|int8out|int8pl|int8pl_inet|int8range|int8range_canonical|int8range_subdiff|int8recv|int8send|int8shl|int8shr|int8smaller|int8um|int8up|int8xor|integer_pl_date|inter_lb|inter_sb|inter_sl|internal_in|internal_out|interval_accum|interval_avg|interval_cmp|interval_div|interval_eq|interval_ge|interval_gt|interval_hash|interval_in|interval_larger|interval_le|interval_lt|interval_mi|interval_mul|interval_ne|interval_out|interval_pl|interval_pl_date|interval_pl_time|interval_pl_timestamp|interval_pl_timestamptz|interval_pl_timetz|interval_recv|interval_send|interval_smaller|interval_transform|interval_um|intervaltypmodin|intervaltypmodout|intinterval|isclosed|isempty|isfinite|ishorizontal|iso8859_1_to_utf8|iso8859_to_utf8|iso_to_koi8r|iso_to_mic|iso_to_win1251|iso_to_win866|isopen|isparallel|isperp|isvertical|johab_to_utf8|json_agg|json_agg_finalfn|json_agg_transfn|json_array_element|json_array_element_text|json_array_elements|json_array_length|json_each|json_each_text|json_extract_path|json_extract_path_op|json_extract_path_text|json_extract_path_text_op|json_in|json_object_field|json_object_field_text|json_object_keys|json_out|json_populate_record|json_populate_recordset|json_recv|json_send|justify_days|justify_hours|justify_interval|koi8r_to_iso|koi8r_to_mic|koi8r_to_utf8|koi8r_to_win1251|koi8r_to_win866|koi8u_to_utf8|lag|language_handler_in|language_handler_out|last_value|lastval|latin1_to_mic|latin2_to_mic|latin2_to_win1250|latin3_to_mic|latin4_to_mic|lead|left|length|like|like_escape|likejoinsel|likesel|line|line_distance|line_eq|line_horizontal|line_in|line_interpt|line_intersect|line_out|line_parallel|line_perp|line_recv|line_send|line_vertical|ln|lo_close|lo_creat|lo_create|lo_export|lo_import|lo_lseek|lo_lseek64|lo_open|lo_tell|lo_tell64|lo_truncate|lo_truncate64|lo_unlink|log|loread|lower|lower_inc|lower_inf|lowrite|lpad|lseg|lseg_center|lseg_distance|lseg_eq|lseg_ge|lseg_gt|lseg_horizontal|lseg_in|lseg_interpt|lseg_intersect|lseg_le|lseg_length|lseg_lt|lseg_ne|lseg_out|lseg_parallel|lseg_perp|lseg_recv|lseg_send|lseg_vertical|ltrim|macaddr_and|macaddr_cmp|macaddr_eq|macaddr_ge|macaddr_gt|macaddr_in|macaddr_le|macaddr_lt|macaddr_ne|macaddr_not|macaddr_or|macaddr_out|macaddr_recv|macaddr_send|makeaclitem|masklen|max|md5|mic_to_ascii|mic_to_big5|mic_to_euc_cn|mic_to_euc_jp|mic_to_euc_kr|mic_to_euc_tw|mic_to_iso|mic_to_koi8r|mic_to_latin1|mic_to_latin2|mic_to_latin3|mic_to_latin4|mic_to_sjis|mic_to_win1250|mic_to_win1251|mic_to_win866|min|mktinterval|mod|money|mul_d_interval|name|nameeq|namege|namegt|nameiclike|nameicnlike|nameicregexeq|nameicregexne|namein|namele|namelike|namelt|namene|namenlike|nameout|namerecv|nameregexeq|nameregexne|namesend|neqjoinsel|neqsel|netmask|network|network_cmp|network_eq|network_ge|network_gt|network_le|network_lt|network_ne|network_sub|network_subeq|network_sup|network_supeq|nextval|nlikejoinsel|nlikesel|notlike|now|npoints|nth_value|ntile|numeric_abs|numeric_accum|numeric_add|numeric_avg|numeric_avg_accum|numeric_cmp|numeric_div|numeric_div_trunc|numeric_eq|numeric_exp|numeric_fac|numeric_ge|numeric_gt|numeric_in|numeric_inc|numeric_larger|numeric_le|numeric_ln|numeric_log|numeric_lt|numeric_mod|numeric_mul|numeric_ne|numeric_out|numeric_power|numeric_recv|numeric_send|numeric_smaller|numeric_sqrt|numeric_stddev_pop|numeric_stddev_samp|numeric_sub|numeric_transform|numeric_uminus|numeric_uplus|numeric_var_pop|numeric_var_samp|numerictypmodin|numerictypmodout|numnode|numrange|numrange_subdiff|obj_description|octet_length|oid|oideq|oidge|oidgt|oidin|oidlarger|oidle|oidlt|oidne|oidout|oidrecv|oidsend|oidsmaller|oidvectoreq|oidvectorge|oidvectorgt|oidvectorin|oidvectorle|oidvectorlt|oidvectorne|oidvectorout|oidvectorrecv|oidvectorsend|oidvectortypes|on_pb|on_pl|on_ppath|on_ps|on_sb|on_sl|opaque_in|opaque_out|overlaps|overlay|path|path_add|path_add_pt|path_center|path_contain_pt|path_distance|path_div_pt|path_in|path_inter|path_length|path_mul_pt|path_n_eq|path_n_ge|path_n_gt|path_n_le|path_n_lt|path_npoints|path_out|path_recv|path_send|path_sub_pt|pclose|percent_rank|pg_advisory_lock|pg_advisory_lock_shared|pg_advisory_unlock|pg_advisory_unlock_all|pg_advisory_unlock_shared|pg_advisory_xact_lock|pg_advisory_xact_lock_shared|pg_available_extension_versions|pg_available_extensions|pg_backend_pid|pg_backup_start_time|pg_cancel_backend|pg_char_to_encoding|pg_client_encoding|pg_collation_for|pg_collation_is_visible|pg_column_is_updatable|pg_column_size|pg_conf_load_time|pg_conversion_is_visible|pg_create_restore_point|pg_current_xlog_insert_location|pg_current_xlog_location|pg_cursor|pg_database_size|pg_describe_object|pg_encoding_max_length|pg_encoding_to_char|pg_event_trigger_dropped_objects|pg_export_snapshot|pg_extension_config_dump|pg_extension_update_paths|pg_function_is_visible|pg_get_constraintdef|pg_get_expr|pg_get_function_arguments|pg_get_function_identity_arguments|pg_get_function_result|pg_get_functiondef|pg_get_indexdef|pg_get_keywords|pg_get_multixact_members|pg_get_ruledef|pg_get_serial_sequence|pg_get_triggerdef|pg_get_userbyid|pg_get_viewdef|pg_has_role|pg_identify_object|pg_indexes_size|pg_is_in_backup|pg_is_in_recovery|pg_is_other_temp_schema|pg_is_xlog_replay_paused|pg_last_xact_replay_timestamp|pg_last_xlog_receive_location|pg_last_xlog_replay_location|pg_listening_channels|pg_lock_status|pg_ls_dir|pg_my_temp_schema|pg_node_tree_in|pg_node_tree_out|pg_node_tree_recv|pg_node_tree_send|pg_notify|pg_opclass_is_visible|pg_operator_is_visible|pg_opfamily_is_visible|pg_options_to_table|pg_postmaster_start_time|pg_prepared_statement|pg_prepared_xact|pg_read_binary_file|pg_read_file|pg_relation_filenode|pg_relation_filepath|pg_relation_is_updatable|pg_relation_size|pg_reload_conf|pg_rotate_logfile|pg_sequence_parameters|pg_show_all_settings|pg_size_pretty|pg_sleep|pg_start_backup|pg_stat_clear_snapshot|pg_stat_file|pg_stat_get_activity|pg_stat_get_analyze_count|pg_stat_get_autoanalyze_count|pg_stat_get_autovacuum_count|pg_stat_get_backend_activity|pg_stat_get_backend_activity_start|pg_stat_get_backend_client_addr|pg_stat_get_backend_client_port|pg_stat_get_backend_dbid|pg_stat_get_backend_idset|pg_stat_get_backend_pid|pg_stat_get_backend_start|pg_stat_get_backend_userid|pg_stat_get_backend_waiting|pg_stat_get_backend_xact_start|pg_stat_get_bgwriter_buf_written_checkpoints|pg_stat_get_bgwriter_buf_written_clean|pg_stat_get_bgwriter_maxwritten_clean|pg_stat_get_bgwriter_requested_checkpoints|pg_stat_get_bgwriter_stat_reset_time|pg_stat_get_bgwriter_timed_checkpoints|pg_stat_get_blocks_fetched|pg_stat_get_blocks_hit|pg_stat_get_buf_alloc|pg_stat_get_buf_fsync_backend|pg_stat_get_buf_written_backend|pg_stat_get_checkpoint_sync_time|pg_stat_get_checkpoint_write_time|pg_stat_get_db_blk_read_time|pg_stat_get_db_blk_write_time|pg_stat_get_db_blocks_fetched|pg_stat_get_db_blocks_hit|pg_stat_get_db_conflict_all|pg_stat_get_db_conflict_bufferpin|pg_stat_get_db_conflict_lock|pg_stat_get_db_conflict_snapshot|pg_stat_get_db_conflict_startup_deadlock|pg_stat_get_db_conflict_tablespace|pg_stat_get_db_deadlocks|pg_stat_get_db_numbackends|pg_stat_get_db_stat_reset_time|pg_stat_get_db_temp_bytes|pg_stat_get_db_temp_files|pg_stat_get_db_tuples_deleted|pg_stat_get_db_tuples_fetched|pg_stat_get_db_tuples_inserted|pg_stat_get_db_tuples_returned|pg_stat_get_db_tuples_updated|pg_stat_get_db_xact_commit|pg_stat_get_db_xact_rollback|pg_stat_get_dead_tuples|pg_stat_get_function_calls|pg_stat_get_function_self_time|pg_stat_get_function_total_time|pg_stat_get_last_analyze_time|pg_stat_get_last_autoanalyze_time|pg_stat_get_last_autovacuum_time|pg_stat_get_last_vacuum_time|pg_stat_get_live_tuples|pg_stat_get_numscans|pg_stat_get_tuples_deleted|pg_stat_get_tuples_fetched|pg_stat_get_tuples_hot_updated|pg_stat_get_tuples_inserted|pg_stat_get_tuples_returned|pg_stat_get_tuples_updated|pg_stat_get_vacuum_count|pg_stat_get_wal_senders|pg_stat_get_xact_blocks_fetched|pg_stat_get_xact_blocks_hit|pg_stat_get_xact_function_calls|pg_stat_get_xact_function_self_time|pg_stat_get_xact_function_total_time|pg_stat_get_xact_numscans|pg_stat_get_xact_tuples_deleted|pg_stat_get_xact_tuples_fetched|pg_stat_get_xact_tuples_hot_updated|pg_stat_get_xact_tuples_inserted|pg_stat_get_xact_tuples_returned|pg_stat_get_xact_tuples_updated|pg_stat_reset|pg_stat_reset_shared|pg_stat_reset_single_function_counters|pg_stat_reset_single_table_counters|pg_stop_backup|pg_switch_xlog|pg_table_is_visible|pg_table_size|pg_tablespace_databases|pg_tablespace_location|pg_tablespace_size|pg_terminate_backend|pg_timezone_abbrevs|pg_timezone_names|pg_total_relation_size|pg_trigger_depth|pg_try_advisory_lock|pg_try_advisory_lock_shared|pg_try_advisory_xact_lock|pg_try_advisory_xact_lock_shared|pg_ts_config_is_visible|pg_ts_dict_is_visible|pg_ts_parser_is_visible|pg_ts_template_is_visible|pg_type_is_visible|pg_typeof|pg_xlog_location_diff|pg_xlog_replay_pause|pg_xlog_replay_resume|pg_xlogfile_name|pg_xlogfile_name_offset|pi|plainto_tsquery|plpgsql_call_handler|plpgsql_inline_handler|plpgsql_validator|point|point_above|point_add|point_below|point_distance|point_div|point_eq|point_horiz|point_in|point_left|point_mul|point_ne|point_out|point_recv|point_right|point_send|point_sub|point_vert|poly_above|poly_below|poly_center|poly_contain|poly_contain_pt|poly_contained|poly_distance|poly_in|poly_left|poly_npoints|poly_out|poly_overabove|poly_overbelow|poly_overlap|poly_overleft|poly_overright|poly_recv|poly_right|poly_same|poly_send|polygon|popen|position|positionjoinsel|positionsel|postgresql_fdw_validator|pow|power|prsd_end|prsd_headline|prsd_lextype|prsd_nexttoken|prsd_start|pt_contained_circle|pt_contained_poly|query_to_xml|query_to_xml_and_xmlschema|query_to_xmlschema|querytree|quote_ident|quote_literal|quote_nullable|radians|radius|random|range_adjacent|range_after|range_before|range_cmp|range_contained_by|range_contains|range_contains_elem|range_eq|range_ge|range_gist_compress|range_gist_consistent|range_gist_decompress|range_gist_penalty|range_gist_picksplit|range_gist_same|range_gist_union|range_gt|range_in|range_intersect|range_le|range_lt|range_minus|range_ne|range_out|range_overlaps|range_overleft|range_overright|range_recv|range_send|range_typanalyze|range_union|rangesel|rank|record_eq|record_ge|record_gt|record_in|record_le|record_lt|record_ne|record_out|record_recv|record_send|regclass|regclassin|regclassout|regclassrecv|regclasssend|regconfigin|regconfigout|regconfigrecv|regconfigsend|regdictionaryin|regdictionaryout|regdictionaryrecv|regdictionarysend|regexeqjoinsel|regexeqsel|regexnejoinsel|regexnesel|regexp_matches|regexp_replace|regexp_split_to_array|regexp_split_to_table|regoperatorin|regoperatorout|regoperatorrecv|regoperatorsend|regoperin|regoperout|regoperrecv|regopersend|regprocedurein|regprocedureout|regprocedurerecv|regproceduresend|regprocin|regprocout|regprocrecv|regprocsend|regr_avgx|regr_avgy|regr_count|regr_intercept|regr_r2|regr_slope|regr_sxx|regr_sxy|regr_syy|regtypein|regtypeout|regtyperecv|regtypesend|reltime|reltimeeq|reltimege|reltimegt|reltimein|reltimele|reltimelt|reltimene|reltimeout|reltimerecv|reltimesend|repeat|replace|reverse|right|round|row_number|row_to_json|rpad|rtrim|scalargtjoinsel|scalargtsel|scalarltjoinsel|scalarltsel|schema_to_xml|schema_to_xml_and_xmlschema|schema_to_xmlschema|session_user|set_bit|set_byte|set_config|set_masklen|setseed|setval|setweight|shell_in|shell_out|shift_jis_2004_to_euc_jis_2004|shift_jis_2004_to_utf8|shobj_description|sign|similar_escape|sin|sjis_to_euc_jp|sjis_to_mic|sjis_to_utf8|slope|smgreq|smgrin|smgrne|smgrout|spg_kd_choose|spg_kd_config|spg_kd_inner_consistent|spg_kd_picksplit|spg_quad_choose|spg_quad_config|spg_quad_inner_consistent|spg_quad_leaf_consistent|spg_quad_picksplit|spg_range_quad_choose|spg_range_quad_config|spg_range_quad_inner_consistent|spg_range_quad_leaf_consistent|spg_range_quad_picksplit|spg_text_choose|spg_text_config|spg_text_inner_consistent|spg_text_leaf_consistent|spg_text_picksplit|spgbeginscan|spgbuild|spgbuildempty|spgbulkdelete|spgcanreturn|spgcostestimate|spgendscan|spggetbitmap|spggettuple|spginsert|spgmarkpos|spgoptions|spgrescan|spgrestrpos|spgvacuumcleanup|split_part|sqrt|statement_timestamp|stddev|stddev_pop|stddev_samp|string_agg|string_agg_finalfn|string_agg_transfn|string_to_array|strip|strpos|substr|substring|sum|suppress_redundant_updates_trigger|table_to_xml|table_to_xml_and_xmlschema|table_to_xmlschema|tan|text|text_ge|text_gt|text_larger|text_le|text_lt|text_pattern_ge|text_pattern_gt|text_pattern_le|text_pattern_lt|text_smaller|textanycat|textcat|texteq|texticlike|texticnlike|texticregexeq|texticregexne|textin|textlen|textlike|textne|textnlike|textout|textrecv|textregexeq|textregexne|textsend|thesaurus_init|thesaurus_lexize|tideq|tidge|tidgt|tidin|tidlarger|tidle|tidlt|tidne|tidout|tidrecv|tidsend|tidsmaller|time_cmp|time_eq|time_ge|time_gt|time_hash|time_in|time_larger|time_le|time_lt|time_mi_interval|time_mi_time|time_ne|time_out|time_pl_interval|time_recv|time_send|time_smaller|time_transform|timedate_pl|timemi|timenow|timeofday|timepl|timestamp_cmp|timestamp_cmp_date|timestamp_cmp_timestamptz|timestamp_eq|timestamp_eq_date|timestamp_eq_timestamptz|timestamp_ge|timestamp_ge_date|timestamp_ge_timestamptz|timestamp_gt|timestamp_gt_date|timestamp_gt_timestamptz|timestamp_hash|timestamp_in|timestamp_larger|timestamp_le|timestamp_le_date|timestamp_le_timestamptz|timestamp_lt|timestamp_lt_date|timestamp_lt_timestamptz|timestamp_mi|timestamp_mi_interval|timestamp_ne|timestamp_ne_date|timestamp_ne_timestamptz|timestamp_out|timestamp_pl_interval|timestamp_recv|timestamp_send|timestamp_smaller|timestamp_sortsupport|timestamp_transform|timestamptypmodin|timestamptypmodout|timestamptz_cmp|timestamptz_cmp_date|timestamptz_cmp_timestamp|timestamptz_eq|timestamptz_eq_date|timestamptz_eq_timestamp|timestamptz_ge|timestamptz_ge_date|timestamptz_ge_timestamp|timestamptz_gt|timestamptz_gt_date|timestamptz_gt_timestamp|timestamptz_in|timestamptz_larger|timestamptz_le|timestamptz_le_date|timestamptz_le_timestamp|timestamptz_lt|timestamptz_lt_date|timestamptz_lt_timestamp|timestamptz_mi|timestamptz_mi_interval|timestamptz_ne|timestamptz_ne_date|timestamptz_ne_timestamp|timestamptz_out|timestamptz_pl_interval|timestamptz_recv|timestamptz_send|timestamptz_smaller|timestamptztypmodin|timestamptztypmodout|timetypmodin|timetypmodout|timetz_cmp|timetz_eq|timetz_ge|timetz_gt|timetz_hash|timetz_in|timetz_larger|timetz_le|timetz_lt|timetz_mi_interval|timetz_ne|timetz_out|timetz_pl_interval|timetz_recv|timetz_send|timetz_smaller|timetzdate_pl|timetztypmodin|timetztypmodout|timezone|tinterval|tintervalct|tintervalend|tintervaleq|tintervalge|tintervalgt|tintervalin|tintervalle|tintervalleneq|tintervallenge|tintervallengt|tintervallenle|tintervallenlt|tintervallenne|tintervallt|tintervalne|tintervalout|tintervalov|tintervalrecv|tintervalrel|tintervalsame|tintervalsend|tintervalstart|to_ascii|to_char|to_date|to_hex|to_json|to_number|to_timestamp|to_tsquery|to_tsvector|transaction_timestamp|translate|trigger_in|trigger_out|trunc|ts_debug|ts_headline|ts_lexize|ts_match_qv|ts_match_tq|ts_match_tt|ts_match_vq|ts_parse|ts_rank|ts_rank_cd|ts_rewrite|ts_stat|ts_token_type|ts_typanalyze|tsmatchjoinsel|tsmatchsel|tsq_mcontained|tsq_mcontains|tsquery_and|tsquery_cmp|tsquery_eq|tsquery_ge|tsquery_gt|tsquery_le|tsquery_lt|tsquery_ne|tsquery_not|tsquery_or|tsqueryin|tsqueryout|tsqueryrecv|tsquerysend|tsrange|tsrange_subdiff|tstzrange|tstzrange_subdiff|tsvector_cmp|tsvector_concat|tsvector_eq|tsvector_ge|tsvector_gt|tsvector_le|tsvector_lt|tsvector_ne|tsvector_update_trigger|tsvector_update_trigger_column|tsvectorin|tsvectorout|tsvectorrecv|tsvectorsend|txid_current|txid_current_snapshot|txid_snapshot_in|txid_snapshot_out|txid_snapshot_recv|txid_snapshot_send|txid_snapshot_xip|txid_snapshot_xmax|txid_snapshot_xmin|txid_visible_in_snapshot|uhc_to_utf8|unique_key_recheck|unknownin|unknownout|unknownrecv|unknownsend|unnest|upper|upper_inc|upper_inf|utf8_to_ascii|utf8_to_big5|utf8_to_euc_cn|utf8_to_euc_jis_2004|utf8_to_euc_jp|utf8_to_euc_kr|utf8_to_euc_tw|utf8_to_gb18030|utf8_to_gbk|utf8_to_iso8859|utf8_to_iso8859_1|utf8_to_johab|utf8_to_koi8r|utf8_to_koi8u|utf8_to_shift_jis_2004|utf8_to_sjis|utf8_to_uhc|utf8_to_win|uuid_cmp|uuid_eq|uuid_ge|uuid_gt|uuid_hash|uuid_in|uuid_le|uuid_lt|uuid_ne|uuid_out|uuid_recv|uuid_send|var_pop|var_samp|varbit_in|varbit_out|varbit_recv|varbit_send|varbit_transform|varbitcmp|varbiteq|varbitge|varbitgt|varbitle|varbitlt|varbitne|varbittypmodin|varbittypmodout|varchar_transform|varcharin|varcharout|varcharrecv|varcharsend|varchartypmodin|varchartypmodout|variance|version|void_in|void_out|void_recv|void_send|width|width_bucket|win1250_to_latin2|win1250_to_mic|win1251_to_iso|win1251_to_koi8r|win1251_to_mic|win1251_to_win866|win866_to_iso|win866_to_koi8r|win866_to_mic|win866_to_win1251|win_to_utf8|xideq|xideqint4|xidin|xidout|xidrecv|xidsend|xml|xml_in|xml_is_well_formed|xml_is_well_formed_content|xml_is_well_formed_document|xml_out|xml_recv|xml_send|xmlagg|xmlcomment|xmlconcat2|xmlexists|xmlvalidate|xpath|xpath_exists",n=this.createKeywordMapper({"support.function":t,keyword:e},"identifier",!0),r=[{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"variable.language",regex:'".*?"'},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:n,regex:"[a-zA-Z_][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|!!|!~|!~\\*|!~~|!~~\\*|#|##|#<|#<=|#<>|#=|#>|#>=|%|\\&|\\&\\&|\\&<|\\&<\\||\\&>|\\*|\\+|\\-|/|<|<#>|<\\->|<<|<<=|<<\\||<=|<>|<\\?>|<@|<\\^|=|>|>=|>>|>>=|>\\^|\\?#|\\?\\-|\\?\\-\\||\\?\\||\\?\\|\\||@|@\\-@|@>|@@|@@@|\\^|\\||\\|\\&>|\\|/|\\|>>|\\|\\||\\|\\|/|~|~\\*|~<=~|~<~|~=|~>=~|~>~|~~|~~\\*"},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}];this.$rules={start:[{token:"comment",regex:"--.*$"},s.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"keyword.statementBegin",regex:"^[a-zA-Z]+",next:"statement"},{token:"support.buildin",regex:"^\\\\[\\S]+.*$"}],statement:[{token:"comment",regex:"--.*$"},{token:"comment",regex:"\\/\\*",next:"commentStatement"},{token:"statementEnd",regex:";",next:"start"},{token:"string",regex:"\\$perl\\$",next:"perl-start"},{token:"string",regex:"\\$python\\$",next:"python-start"},{token:"string",regex:"\\$json\\$",next:"json-start"},{token:"string",regex:"\\$(js|javascript)\\$",next:"javascript-start"},{token:"string",regex:"\\$[\\w_0-9]*\\$$",next:"dollarSql"},{token:"string",regex:"\\$[\\w_0-9]*\\$",next:"dollarStatementString"}].concat(r),dollarSql:[{token:"comment",regex:"--.*$"},{token:"comment",regex:"\\/\\*",next:"commentDollarSql"},{token:"string",regex:"^\\$[\\w_0-9]*\\$",next:"statement"},{token:"string",regex:"\\$[\\w_0-9]*\\$",next:"dollarSqlString"}].concat(r),comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],commentStatement:[{token:"comment",regex:".*?\\*\\/",next:"statement"},{token:"comment",regex:".+"}],commentDollarSql:[{token:"comment",regex:".*?\\*\\/",next:"dollarSql"},{token:"comment",regex:".+"}],dollarStatementString:[{token:"string",regex:".*?\\$[\\w_0-9]*\\$",next:"statement"},{token:"string",regex:".+"}],dollarSqlString:[{token:"string",regex:".*?\\$[\\w_0-9]*\\$",next:"dollarSql"},{token:"string",regex:".+"}]},this.embedRules(s,"doc-",[s.getEndRule("start")]),this.embedRules(u,"perl-",[{token:"string",regex:"\\$perl\\$",next:"statement"}]),this.embedRules(a,"python-",[{token:"string",regex:"\\$python\\$",next:"statement"}]),this.embedRules(f,"json-",[{token:"string",regex:"\\$json\\$",next:"statement"}]),this.embedRules(l,"javascript-",[{token:"string",regex:"\\$(js|javascript)\\$",next:"statement"}])};r.inherits(c,o),t.PgsqlHighlightRules=c}),ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},{token:"comment.doc.tag",regex:"\\bTODO\\b"},{defaultToken:"comment.doc"}]}};r.inherits(s,i),s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/perl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="base|constant|continue|else|elsif|for|foreach|format|goto|if|last|local|my|next|no|package|parent|redo|require|scalar|sub|unless|until|while|use|vars",t="ARGV|ENV|INC|SIG",n="getprotobynumber|getprotobyname|getservbyname|gethostbyaddr|gethostbyname|getservbyport|getnetbyaddr|getnetbyname|getsockname|getpeername|setpriority|getprotoent|setprotoent|getpriority|endprotoent|getservent|setservent|endservent|sethostent|socketpair|getsockopt|gethostent|endhostent|setsockopt|setnetent|quotemeta|localtime|prototype|getnetent|endnetent|rewinddir|wantarray|getpwuid|closedir|getlogin|readlink|endgrent|getgrgid|getgrnam|shmwrite|shutdown|readline|endpwent|setgrent|readpipe|formline|truncate|dbmclose|syswrite|setpwent|getpwnam|getgrent|getpwent|ucfirst|sysread|setpgrp|shmread|sysseek|sysopen|telldir|defined|opendir|connect|lcfirst|getppid|binmode|syscall|sprintf|getpgrp|readdir|seekdir|waitpid|reverse|unshift|symlink|dbmopen|semget|msgrcv|rename|listen|chroot|msgsnd|shmctl|accept|unpack|exists|fileno|shmget|system|unlink|printf|gmtime|msgctl|semctl|values|rindex|substr|splice|length|msgget|select|socket|return|caller|delete|alarm|ioctl|index|undef|lstat|times|srand|chown|fcntl|close|write|umask|rmdir|study|sleep|chomp|untie|print|utime|mkdir|atan2|split|crypt|flock|chmod|BEGIN|bless|chdir|semop|shift|reset|link|stat|chop|grep|fork|dump|join|open|tell|pipe|exit|glob|warn|each|bind|sort|pack|eval|push|keys|getc|kill|seek|sqrt|send|wait|rand|tied|read|time|exec|recv|eof|chr|int|ord|exp|pos|pop|sin|log|abs|oct|hex|tie|cos|vec|END|ref|map|die|uc|lc|do",r=this.createKeywordMapper({keyword:e,"constant.language":t,"support.function":n},"identifier");this.$rules={start:[{token:"comment.doc",regex:"^=(?:begin|item)\\b",next:"block_comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:'["].*\\\\$',next:"qqstring"},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"string",regex:"['].*\\\\$",next:"qstring"},{token:"constant.numeric",regex:"0x[0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"%#|\\$#|\\.\\.\\.|\\|\\|=|>>=|<<=|<=>|&&=|=>|!~|\\^=|&=|\\|=|\\.=|x=|%=|\\/=|\\*=|\\-=|\\+=|=~|\\*\\*|\\-\\-|\\.\\.|\\|\\||&&|\\+\\+|\\->|!=|==|>=|<=|>>|<<|,|=|\\?\\:|\\^|\\||x|%|\\/|\\*|<|&|\\\\|~|!|>|\\.|\\-|\\+|\\-C|\\-b|\\-S|\\-u|\\-t|\\-p|\\-l|\\-d|\\-f|\\-g|\\-s|\\-z|\\-k|\\-e|\\-O|\\-T|\\-B|\\-M|\\-A|\\-X|\\-W|\\-c|\\-R|\\-o|\\-x|\\-w|\\-r|\\b(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|xor)"},{token:"comment",regex:"#.*$"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{token:"string",regex:".+"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{token:"string",regex:".+"}],block_comment:[{token:"comment.doc",regex:"^=cut\\b",next:"start"},{defaultToken:"comment.doc"}]}};r.inherits(s,i),t.PerlHighlightRules=s}),ace.define("ace/mode/python_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="and|as|assert|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|raise|return|try|while|with|yield",t="True|False|None|NotImplemented|Ellipsis|__debug__",n="abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|binfile|iter|property|tuple|bool|filter|len|range|type|bytearray|float|list|raw_input|unichr|callable|format|locals|reduce|unicode|chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|__import__|complex|hash|min|set|apply|delattr|help|next|setattr|buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern",r=this.createKeywordMapper({"invalid.deprecated":"debugger","support.function":n,"constant.language":t,keyword:e},"identifier"),i="(?:r|u|ur|R|U|UR|Ur|uR)?",s="(?:(?:[1-9]\\d*)|(?:0))",o="(?:0[oO]?[0-7]+)",u="(?:0[xX][\\dA-Fa-f]+)",a="(?:0[bB][01]+)",f="(?:"+s+"|"+o+"|"+u+"|"+a+")",l="(?:[eE][+-]?\\d+)",c="(?:\\.\\d+)",h="(?:\\d+)",p="(?:(?:"+h+"?"+c+")|(?:"+h+"\\.))",d="(?:(?:"+p+"|"+h+")"+l+")",v="(?:"+d+"|"+p+")",m="\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})";this.$rules={start:[{token:"comment",regex:"#.*$"},{token:"string",regex:i+'"{3}',next:"qqstring3"},{token:"string",regex:i+'"(?=.)',next:"qqstring"},{token:"string",regex:i+"'{3}",next:"qstring3"},{token:"string",regex:i+"'(?=.)",next:"qstring"},{token:"constant.numeric",regex:"(?:"+v+"|\\d+)[jJ]\\b"},{token:"constant.numeric",regex:v},{token:"constant.numeric",regex:f+"[lL]\\b"},{token:"constant.numeric",regex:f+"\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]\\)\\}]"},{token:"text",regex:"\\s+"}],qqstring3:[{token:"constant.language.escape",regex:m},{token:"string",regex:'"{3}',next:"start"},{defaultToken:"string"}],qstring3:[{token:"constant.language.escape",regex:m},{token:"string",regex:"'{3}",next:"start"},{defaultToken:"string"}],qqstring:[{token:"constant.language.escape",regex:m},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:m},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"start"},{defaultToken:"string"}]}};r.inherits(s,i),t.PythonHighlightRules=s}),ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"variable",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)'},{token:"string",regex:'"',next:"string"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:"invalid.illegal",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"invalid.illegal",regex:"\\/\\/.*$"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],string:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/},{token:"string",regex:'[^"\\\\]+'},{token:"string",regex:'"',next:"start"},{token:"string",regex:"",next:"start"}]}};r.inherits(s,i),t.JsonHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),t="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",n="[a-zA-Z\\$_\xa1-\uffff][a-zA-Z\\d\\$_\xa1-\uffff]*\\b",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[{token:"comment",regex:"\\/\\/",next:"line_comment"},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+n+")(\\.)(prototype)(\\.)("+n+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+n+")(\\.)("+n+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+n+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+n+")(\\.)("+n+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+n+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+n+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+t+")\\b",next:"start"},{token:["punctuation.operator","support.function"],regex:/(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:["punctuation.operator","support.function.dom"],regex:/(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:["punctuation.operator","support.constant"],regex:/(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/},{token:e,regex:n},{token:"keyword.operator",regex:/--|\+\+|[!$%&*+\-~]|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=/,next:"start"},{token:"punctuation.operator",regex:/\?|\:|\,|\;|\./,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"keyword.operator",regex:/\/=?/,next:"start"},{token:"comment",regex:/^#!.*$/}],start:[i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment_regex_allowed"},{token:"comment",regex:"\\/\\/",next:"line_comment_regex_allowed"},{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:n},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],comment_regex_allowed:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],comment:[{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment"}],line_comment_regex_allowed:[{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment"}],line_comment:[{token:"comment",regex:"$|^",next:"no_regex"},{defaultToken:"comment"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},this.embedRules(i,"doc-",[i.getEndRule("no_regex")])};r.inherits(o,s),t.JavaScriptHighlightRules=o}) \ No newline at end of file diff --git a/contact-center/app/src/main/resources/static/js/ace/mode-verilog.js b/contact-center/app/src/main/resources/static/js/ace/mode-verilog.js index bc6b0242..1ede0336 100644 --- a/contact-center/app/src/main/resources/static/js/ace/mode-verilog.js +++ b/contact-center/app/src/main/resources/static/js/ace/mode-verilog.js @@ -1 +1 @@ -ace.define("ace/mode/verilog",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/verilog_highlight_rules","ace/range"],function(e,t,n){var r=e("../lib/oop"),i=e("./text").Mode,s=e("../tokenizer").Tokenizer,o=e("./verilog_highlight_rules").VerilogHighlightRules,u=e("../range").Range,a=function(){this.HighlightRules=o};r.inherits(a,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/verilog"}.call(a.prototype),t.Mode=a}),ace.define("ace/mode/verilog_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="always|and|assign|automatic|begin|buf|bufif0|bufif1|case|casex|casez|cell|cmos|config|deassign|default|defparam|design|disable|edge|else|end|endcase|endconfig|endfunction|endgenerate|endmodule|endprimitive|endspecify|endtable|endtask|event|for|force|forever|fork|function|generate|genvar|highz0|highz1|if|ifnone|incdir|include|initial|inout|input|instance|integer|join|large|liblist|library|localparam|macromodule|medium|module|nand|negedge|nmos|nor|noshowcancelled|not|notif0|notif1|or|output|parameter|pmos|posedge|primitive|pull0|pull1|pulldown|pullup|pulsestyle_onevent|pulsestyle_ondetect|rcmos|real|realtime|reg|release|repeat|rnmos|rpmos|rtran|rtranif0|rtranif1|scalared|showcancelled|signed|small|specify|specparam|strong0|strong1|supply0|supply1|table|task|time|tran|tranif0|tranif1|tri|tri0|tri1|triand|trior|trireg|unsigned|use|vectored|wait|wand|weak0|weak1|while|wire|wor|xnor|xorbegin|bufif0|bufif1|case|casex|casez|config|else|end|endcase|endconfig|endfunction|endgenerate|endmodule|endprimitive|endspecify|endtable|endtask|for|forever|function|generate|if|ifnone|macromodule|module|primitive|repeat|specify|table|task|while",t="true|false|null",n="count|min|max|avg|sum|rank|now|coalesce|main",r=this.createKeywordMapper({"support.function":n,keyword:e,"constant.language":t},"identifier",!0);this.$rules={start:[{token:"comment",regex:"//.*$"},{token:"string",regex:'".*?"'},{token:"string",regex:"'.*?'"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}]}};r.inherits(s,i),t.VerilogHighlightRules=s}) \ No newline at end of file +ace.define("ace/mode/verilog",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/verilog_highlight_rules","ace/range"],function(e,t,n){var r=e("../lib/oop"),i=e("./text").Mode,s=e("../tokenizer").Tokenizer,o=e("./verilog_highlight_rules").VerilogHighlightRules,u=e("../range").Range,a=function(){this.HighlightRules=o};r.inherits(a,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/verilog"}.call(a.prototype),t.Mode=a}),ace.define("ace/mode/verilog_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="always|and|assign|automatic|begin|buf|bufif0|bufif1|case|casex|casez|cell|cmos|config|deassign|default|defparam|design|disable|edge|else|end|endcase|endconfig|endfunction|endgenerate|endmodule|endprimitive|endspecify|endtable|endtask|exchange|for|force|forever|fork|function|generate|genvar|highz0|highz1|if|ifnone|incdir|include|initial|inout|input|instance|integer|join|large|liblist|library|localparam|macromodule|medium|module|nand|negedge|nmos|nor|noshowcancelled|not|notif0|notif1|or|output|parameter|pmos|posedge|primitive|pull0|pull1|pulldown|pullup|pulsestyle_onevent|pulsestyle_ondetect|rcmos|real|realtime|reg|release|repeat|rnmos|rpmos|rtran|rtranif0|rtranif1|scalared|showcancelled|signed|small|specify|specparam|strong0|strong1|supply0|supply1|table|schedule|time|tran|tranif0|tranif1|tri|tri0|tri1|triand|trior|trireg|unsigned|use|vectored|wait|wand|weak0|weak1|while|wire|wor|xnor|xorbegin|bufif0|bufif1|case|casex|casez|config|else|end|endcase|endconfig|endfunction|endgenerate|endmodule|endprimitive|endspecify|endtable|endtask|for|forever|function|generate|if|ifnone|macromodule|module|primitive|repeat|specify|table|schedule|while",t="true|false|null",n="count|min|max|avg|sum|rank|now|coalesce|main",r=this.createKeywordMapper({"support.function":n,keyword:e,"constant.language":t},"identifier",!0);this.$rules={start:[{token:"comment",regex:"//.*$"},{token:"string",regex:'".*?"'},{token:"string",regex:"'.*?'"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}]}};r.inherits(s,i),t.VerilogHighlightRules=s}) \ No newline at end of file diff --git a/contact-center/app/src/main/resources/static/js/ace/snippets/javascript.js b/contact-center/app/src/main/resources/static/js/ace/snippets/javascript.js index 06fa1b37..a89bd823 100644 --- a/contact-center/app/src/main/resources/static/js/ace/snippets/javascript.js +++ b/contact-center/app/src/main/resources/static/js/ace/snippets/javascript.js @@ -1 +1 @@ -ace.define("ace/snippets/javascript",["require","exports","module"],function(e,t,n){t.snippetText="snippet add\n ${1:obj}.add('${2:selector expression}')${3}\nsnippet addClass\n ${1:obj}.addClass('${2:class name}')${3}\nsnippet after\n ${1:obj}.after('${2:Some text and bold!}')${3}\nsnippet ajax\n $.ajax({\n url: '${1:mydomain.com/url}',\n type: '${2:POST}',\n dataType: '${3:xml/html/script/json}',\n data: $.param( $('${4:Element or Expression}') ),\n complete: function (jqXHR, textStatus) {\n ${5:// callback}\n },\n success: function (data, textStatus, jqXHR) {\n ${6:// success callback}\n },\n error: function (jqXHR, textStatus, errorThrown) {\n ${7:// error callback}\n }\n });\nsnippet ajaxcomplete\n ${1:obj}.ajaxComplete(function (${1:e}, xhr, settings) {\n ${2:// callback}\n });\nsnippet ajaxerror\n ${1:obj}.ajaxError(function (${1:e}, xhr, settings, thrownError) {\n ${2:// error callback}\n });\n ${3}\nsnippet ajaxget\n $.get('${1:mydomain.com/url}',\n ${2:{ param1: value1 },}\n function (data, textStatus, jqXHR) {\n ${3:// success callback}\n }\n );\nsnippet ajaxpost\n $.post('${1:mydomain.com/url}',\n ${2:{ param1: value1 },}\n function (data, textStatus, jqXHR) {\n ${3:// success callback}\n }\n );\nsnippet ajaxprefilter\n $.ajaxPrefilter(function (${1:options}, ${2:originalOptions}, jqXHR) {\n ${3: // Modify options, control originalOptions, store jqXHR, etc}\n });\nsnippet ajaxsend\n ${1:obj}.ajaxSend(function (${1:request, settings}) {\n ${2:// error callback}\n });\n ${3}\nsnippet ajaxsetup\n $.ajaxSetup({\n url: \"${1:mydomain.com/url}\",\n type: \"${2:POST}\",\n dataType: \"${3:xml/html/script/json}\",\n data: $.param( $(\"${4:Element or Expression}\") ),\n complete: function (jqXHR, textStatus) {\n ${5:// callback}\n },\n success: function (data, textStatus, jqXHR) {\n ${6:// success callback}\n },\n error: function (jqXHR, textStatus, errorThrown) {\n ${7:// error callback}\n }\n });\nsnippet ajaxstart\n $.ajaxStart(function () {\n ${1:// handler for when an AJAX call is started and no other AJAX calls are in progress};\n });\n ${2}\nsnippet ajaxstop\n $.ajaxStop(function () {\n ${1:// handler for when all AJAX calls have been completed};\n });\n ${2}\nsnippet ajaxsuccess\n $.ajaxSuccess(function (${1:e}, xhr, settings) {\n ${2:// handler for when any AJAX call is successfully completed};\n });\n ${2}\nsnippet andself\n ${1:obj}.andSelf()${2}\nsnippet animate\n ${1:obj}.animate({${2:param1: value1, param2: value2}}, ${3:speed})${4}\nsnippet append\n ${1:obj}.append('${2:Some text and bold!}')${3}\nsnippet appendTo\n ${1:obj}.appendTo('${2:selector expression}')${3}\nsnippet attr\n ${1:obj}.attr('${2:attribute}', '${3:value}')${4}\nsnippet attrm\n ${1:obj}.attr({'${2:attr1}': '${3:value1}', '${4:attr2}': '${5:value2}'})${6}\nsnippet before\n ${1:obj}.before('${2:Some text and bold!}')${3}\nsnippet bind\n ${1:obj}.bind('${2:event name}', function (${3:e}) {\n ${4:// event handler}\n });\nsnippet blur\n ${1:obj}.blur(function (${2:e}) {\n ${3:// event handler}\n });\nsnippet C\n $.Callbacks()${1}\nsnippet Cadd\n ${1:callbacks}.add(${2:callbacks})${3}\nsnippet Cdis\n ${1:callbacks}.disable()${2}\nsnippet Cempty\n ${1:callbacks}.empty()${2}\nsnippet Cfire\n ${1:callbacks}.fire(${2:args})${3}\nsnippet Cfired\n ${1:callbacks}.fired()${2}\nsnippet Cfirew\n ${1:callbacks}.fireWith(${2:this}, ${3:args})${4}\nsnippet Chas\n ${1:callbacks}.has(${2:callback})${3}\nsnippet Clock\n ${1:callbacks}.lock()${2}\nsnippet Clocked\n ${1:callbacks}.locked()${2}\nsnippet Crem\n ${1:callbacks}.remove(${2:callbacks})${3}\nsnippet change\n ${1:obj}.change(function (${2:e}) {\n ${3:// event handler}\n });\nsnippet children\n ${1:obj}.children('${2:selector expression}')${3}\nsnippet clearq\n ${1:obj}.clearQueue(${2:'queue name'})${3}\nsnippet click\n ${1:obj}.click(function (${2:e}) {\n ${3:// event handler}\n });\nsnippet clone\n ${1:obj}.clone()${2}\nsnippet contains\n $.contains(${1:container}, ${2:contents});\nsnippet css\n ${1:obj}.css('${2:attribute}', '${3:value}')${4}\nsnippet csshooks\n $.cssHooks['${1:CSS prop}'] = {\n get: function (elem, computed, extra) {\n ${2: // handle getting the CSS property}\n },\n set: function (elem, value) {\n ${3: // handle setting the CSS value}\n }\n };\nsnippet cssm\n ${1:obj}.css({${2:attribute1}: '${3:value1}', ${4:attribute2}: '${5:value2}'})${6}\nsnippet D\n $.Deferred()${1}\nsnippet Dalways\n ${1:deferred}.always(${2:callbacks})${3}\nsnippet Ddone\n ${1:deferred}.done(${2:callbacks})${3}\nsnippet Dfail\n ${1:deferred}.fail(${2:callbacks})${3}\nsnippet Disrej\n ${1:deferred}.isRejected()${2}\nsnippet Disres\n ${1:deferred}.isResolved()${2}\nsnippet Dnotify\n ${1:deferred}.notify(${2:args})${3}\nsnippet Dnotifyw\n ${1:deferred}.notifyWith(${2:this}, ${3:args})${4}\nsnippet Dpipe\n ${1:deferred}.then(${2:doneFilter}, ${3:failFilter}, ${4:progressFilter})${5}\nsnippet Dprog\n ${1:deferred}.progress(${2:callbacks})${3}\nsnippet Dprom\n ${1:deferred}.promise(${2:target})${3}\nsnippet Drej\n ${1:deferred}.reject(${2:args})${3}\nsnippet Drejw\n ${1:deferred}.rejectWith(${2:this}, ${3:args})${4}\nsnippet Dres\n ${1:deferred}.resolve(${2:args})${3}\nsnippet Dresw\n ${1:deferred}.resolveWith(${2:this}, ${3:args})${4}\nsnippet Dstate\n ${1:deferred}.state()${2}\nsnippet Dthen\n ${1:deferred}.then(${2:doneCallbacks}, ${3:failCallbacks}, ${4:progressCallbacks})${5}\nsnippet Dwhen\n $.when(${1:deferreds})${2}\nsnippet data\n ${1:obj}.data(${2:obj})${3}\nsnippet dataa\n $.data('${1:selector expression}', '${2:key}'${3:, 'value'})${4}\nsnippet dblclick\n ${1:obj}.dblclick(function (${2:e}) {\n ${3:// event handler}\n });\nsnippet delay\n ${1:obj}.delay('${2:slow/400/fast}'${3:, 'queue name'})${4}\nsnippet dele\n ${1:obj}.delegate('${2:selector expression}', '${3:event name}', function (${4:e}) {\n ${5:// event handler}\n });\nsnippet deq\n ${1:obj}.dequeue(${2:'queue name'})${3}\nsnippet deqq\n $.dequeue('${1:selector expression}'${2:, 'queue name'})${3}\nsnippet detach\n ${1:obj}.detach('${2:selector expression}')${3}\nsnippet die\n ${1:obj}.die(${2:event}, ${3:handler})${4}\nsnippet each\n ${1:obj}.each(function (index) {\n ${2:this.innerHTML = this + \" is the element, \" + index + \" is the position\";}\n });\nsnippet el\n $('<${1}/>'${2:, {}})${3}\nsnippet eltrim\n $.trim('${1:string}')${2}\nsnippet empty\n ${1:obj}.empty()${2}\nsnippet end\n ${1:obj}.end()${2}\nsnippet eq\n ${1:obj}.eq(${2:element index})${3}\nsnippet error\n ${1:obj}.error(function (${2:e}) {\n ${3:// event handler}\n });\nsnippet eventsmap\n {\n :f${1}\n }\nsnippet extend\n $.extend(${1:true, }${2:target}, ${3:obj})${4}\nsnippet fadein\n ${1:obj}.fadeIn('${2:slow/400/fast}')${3}\nsnippet fadeinc\n ${1:obj}.fadeIn('slow/400/fast', function () {\n ${2:// callback};\n });\nsnippet fadeout\n ${1:obj}.fadeOut('${2:slow/400/fast}')${3}\nsnippet fadeoutc\n ${1:obj}.fadeOut('slow/400/fast', function () {\n ${2:// callback};\n });\nsnippet fadeto\n ${1:obj}.fadeTo('${2:slow/400/fast}', ${3:0.5})${4}\nsnippet fadetoc\n ${1:obj}.fadeTo('slow/400/fast', ${2:0.5}, function () {\n ${3:// callback};\n });\nsnippet filter\n ${1:obj}.filter('${2:selector expression}')${3}\nsnippet filtert\n ${1:obj}.filter(function (${2:index}) {\n ${3:// test code}\n })${4}\nsnippet find\n ${1:obj}.find('${2:selector expression}')${3}\nsnippet focus\n ${1:obj}.focus(function (${2:e}) {\n ${3:// event handler}\n });\nsnippet focusin\n ${1:obj}.focusIn(function (${2:e}) {\n ${3:// event handler}\n });\nsnippet focusout\n ${1:obj}.focusOut(function (${2:e}) {\n ${3:// event handler}\n });\nsnippet get\n ${1:obj}.get(${2:element index})${3}\nsnippet getjson\n $.getJSON('${1:mydomain.com/url}',\n ${2:{ param1: value1 },}\n function (data, textStatus, jqXHR) {\n ${3:// success callback}\n }\n );\nsnippet getscript\n $.getScript('${1:mydomain.com/url}', function (script, textStatus, jqXHR) {\n ${2:// callback}\n });\nsnippet grep\n $.grep(${1:array}, function (item, index) {\n ${2:// test code}\n }${3:, true});\nsnippet hasc\n ${1:obj}.hasClass('${2:className}')${3}\nsnippet hasd\n $.hasData('${1:selector expression}');\nsnippet height\n ${1:obj}.height(${2:integer})${3}\nsnippet hide\n ${1:obj}.hide('${2:slow/400/fast}')${3}\nsnippet hidec\n ${1:obj}.hide('${2:slow/400/fast}', function () {\n ${3:// callback}\n });\nsnippet hover\n ${1:obj}.hover(function (${2:e}) {\n ${3:// event handler}\n }, function ($2) {\n ${4:// event handler}\n });${5}\nsnippet html\n ${1:obj}.html('${2:Some text and bold!}')${3}\nsnippet inarr\n $.inArray(${1:value}, ${2:array});\nsnippet insa\n ${1:obj}.insertAfter('${2:selector expression}')${3}\nsnippet insb\n ${1:obj}.insertBefore('${2:selector expression}')${3}\nsnippet is\n ${1:obj}.is('${2:selector expression}')${3}\nsnippet isarr\n $.isArray(${1:obj})${2}\nsnippet isempty\n $.isEmptyObject(${1:obj})${2}\nsnippet isfunc\n $.isFunction(${1:obj})${2}\nsnippet isnum\n $.isNumeric(${1:value})${2}\nsnippet isobj\n $.isPlainObject(${1:obj})${2}\nsnippet iswin\n $.isWindow(${1:obj})${2}\nsnippet isxml\n $.isXMLDoc(${1:node})${2}\nsnippet jj\n $('${1:selector}')${2}\nsnippet kdown\n ${1:obj}.keydown(function (${2:e}) {\n ${3:// event handler}\n });\nsnippet kpress\n ${1:obj}.keypress(function (${2:e}) {\n ${3:// event handler}\n });\nsnippet kup\n ${1:obj}.keyup(function (${2:e}) {\n ${3:// event handler}\n });\nsnippet last\n ${1:obj}.last('${1:selector expression}')${3}\nsnippet live\n ${1:obj}.live('${2:events}', function (${3:e}) {\n ${4:// event handler}\n });\nsnippet load\n ${1:obj}.load(function (${2:e}) {\n ${3:// event handler}\n });\nsnippet loadf\n ${1:obj}.load('${2:mydomain.com/url}',\n ${2:{ param1: value1 },}\n function (responseText, textStatus, xhr) {\n ${3:// success callback}\n }\n });\nsnippet makearray\n $.makeArray(${1:obj});\nsnippet map\n ${1:obj}.map(function (${2:index}, ${3:element}) {\n ${4:// callback}\n });\nsnippet mapp\n $.map(${1:arrayOrObject}, function (${2:value}, ${3:indexOrKey}) {\n ${4:// callback}\n });\nsnippet merge\n $.merge(${1:target}, ${2:original});\nsnippet mdown\n ${1:obj}.mousedown(function (${2:e}) {\n ${3:// event handler}\n });\nsnippet menter\n ${1:obj}.mouseenter(function (${2:e}) {\n ${3:// event handler}\n });\nsnippet mleave\n ${1:obj}.mouseleave(function (${2:e}) {\n ${3:// event handler}\n });\nsnippet mmove\n ${1:obj}.mousemove(function (${2:e}) {\n ${3:// event handler}\n });\nsnippet mout\n ${1:obj}.mouseout(function (${2:e}) {\n ${3:// event handler}\n });\nsnippet mover\n ${1:obj}.mouseover(function (${2:e}) {\n ${3:// event handler}\n });\nsnippet mup\n ${1:obj}.mouseup(function (${2:e}) {\n ${3:// event handler}\n });\nsnippet next\n ${1:obj}.next('${2:selector expression}')${3}\nsnippet nexta\n ${1:obj}.nextAll('${2:selector expression}')${3}\nsnippet nextu\n ${1:obj}.nextUntil('${2:selector expression}'${3:, 'filter expression'})${4}\nsnippet not\n ${1:obj}.not('${2:selector expression}')${3}\nsnippet off\n ${1:obj}.off('${2:events}', '${3:selector expression}'${4:, handler})${5}\nsnippet offset\n ${1:obj}.offset()${2}\nsnippet offsetp\n ${1:obj}.offsetParent()${2}\nsnippet on\n ${1:obj}.on('${2:events}', '${3:selector expression}', function (${4:e}) {\n ${5:// event handler}\n });\nsnippet one\n ${1:obj}.one('${2:event name}', function (${3:e}) {\n ${4:// event handler}\n });\nsnippet outerh\n ${1:obj}.outerHeight()${2}\nsnippet outerw\n ${1:obj}.outerWidth()${2}\nsnippet param\n $.param(${1:obj})${2}\nsnippet parent\n ${1:obj}.parent('${2:selector expression}')${3}\nsnippet parents\n ${1:obj}.parents('${2:selector expression}')${3}\nsnippet parentsu\n ${1:obj}.parentsUntil('${2:selector expression}'${3:, 'filter expression'})${4}\nsnippet parsejson\n $.parseJSON(${1:data})${2}\nsnippet parsexml\n $.parseXML(${1:data})${2}\nsnippet pos\n ${1:obj}.position()${2}\nsnippet prepend\n ${1:obj}.prepend('${2:Some text and bold!}')${3}\nsnippet prependto\n ${1:obj}.prependTo('${2:selector expression}')${3}\nsnippet prev\n ${1:obj}.prev('${2:selector expression}')${3}\nsnippet preva\n ${1:obj}.prevAll('${2:selector expression}')${3}\nsnippet prevu\n ${1:obj}.prevUntil('${2:selector expression}'${3:, 'filter expression'})${4}\nsnippet promise\n ${1:obj}.promise(${2:'fx'}, ${3:target})${4}\nsnippet prop\n ${1:obj}.prop('${2:property name}')${3}\nsnippet proxy\n $.proxy(${1:function}, ${2:this})${3}\nsnippet pushstack\n ${1:obj}.pushStack(${2:elements})${3}\nsnippet queue\n ${1:obj}.queue(${2:name}${3:, newQueue})${4}\nsnippet queuee\n $.queue(${1:element}${2:, name}${3:, newQueue})${4}\nsnippet ready\n $(function () {\n ${1}\n });\nsnippet rem\n ${1:obj}.remove()${2}\nsnippet rema\n ${1:obj}.removeAttr('${2:attribute name}')${3}\nsnippet remc\n ${1:obj}.removeClass('${2:class name}')${3}\nsnippet remd\n ${1:obj}.removeData('${2:key name}')${3}\nsnippet remdd\n $.removeData(${1:element}${2:, 'key name}')${3}\nsnippet remp\n ${1:obj}.removeProp('${2:property name}')${3}\nsnippet repa\n ${1:obj}.replaceAll(${2:target})${3}\nsnippet repw\n ${1:obj}.replaceWith(${2:content})${3}\nsnippet reset\n ${1:obj}.reset(function (${2:e}) {\n ${3:// event handler}\n });\nsnippet resize\n ${1:obj}.resize(function (${2:e}) {\n ${3:// event handler}\n });\nsnippet scroll\n ${1:obj}.scroll(function (${2:e}) {\n ${3:// event handler}\n });\nsnippet scrolll\n ${1:obj}.scrollLeft(${2:value})${3}\nsnippet scrollt\n ${1:obj}.scrollTop(${2:value})${3}\nsnippet sdown\n ${1:obj}.slideDown('${2:slow/400/fast}')${3}\nsnippet sdownc\n ${1:obj}.slideDown('${2:slow/400/fast}', function () {\n ${3:// callback};\n });\nsnippet select\n ${1:obj}.select(function (${2:e}) {\n ${3:// event handler}\n });\nsnippet serialize\n ${1:obj}.serialize()${2}\nsnippet serializea\n ${1:obj}.serializeArray()${2}\nsnippet show\n ${1:obj}.show('${2:slow/400/fast}')${3}\nsnippet showc\n ${1:obj}.show('${2:slow/400/fast}', function () {\n ${3:// callback}\n });\nsnippet sib\n ${1:obj}.siblings('${2:selector expression}')${3}\nsnippet size\n ${1:obj}.size()${2}\nsnippet slice\n ${1:obj}.slice(${2:start}${3:, end})${4}\nsnippet stoggle\n ${1:obj}.slideToggle('${2:slow/400/fast}')${3}\nsnippet stop\n ${1:obj}.stop('${2:queue}', ${3:false}, ${4:false})${5}\nsnippet submit\n ${1:obj}.submit(function (${2:e}) {\n ${3:// event handler}\n });\nsnippet sup\n ${1:obj}.slideUp('${2:slow/400/fast}')${3}\nsnippet supc\n ${1:obj}.slideUp('${2:slow/400/fast}', function () {\n ${3:// callback};\n });\nsnippet text\n ${1:obj}.text(${2:'some text'})${3}\nsnippet this\n $(this)${1}\nsnippet toarr\n ${1:obj}.toArray()\nsnippet tog\n ${1:obj}.toggle(function (${2:e}) {\n ${3:// event handler}\n }, function ($2) {\n ${4:// event handler}\n });\n ${4}\nsnippet togclass\n ${1:obj}.toggleClass('${2:class name}')${3}\nsnippet togsh\n ${1:obj}.toggle('${2:slow/400/fast}')${3}\nsnippet trig\n ${1:obj}.trigger('${2:event name}')${3}\nsnippet trigh\n ${1:obj}.triggerHandler('${2:event name}')${3}\nsnippet $trim\n $.trim(${1:str})${2}\nsnippet $type\n $.type(${1:obj})${2}\nsnippet unbind\n ${1:obj}.unbind('${2:event name}')${3}\nsnippet undele\n ${1:obj}.undelegate(${2:selector expression}, ${3:event}, ${4:handler})${5}\nsnippet uniq\n $.unique(${1:array})${2}\nsnippet unload\n ${1:obj}.unload(function (${2:e}) {\n ${3:// event handler}\n });\nsnippet unwrap\n ${1:obj}.unwrap()${2}\nsnippet val\n ${1:obj}.val('${2:text}')${3}\nsnippet width\n ${1:obj}.width(${2:integer})${3}\nsnippet wrap\n ${1:obj}.wrap('${2:<div class=\"extra-wrapper\"></div>}')${3}\n\n# Prototype\nsnippet proto\n ${1:class_name}.prototype.${2:method_name} = function(${3:first_argument}) {\n ${4:// body...}\n };\n# Function\nsnippet fun\n function ${1?:function_name}(${2:argument}) {\n ${3:// body...}\n }\n# Anonymous Function\nregex /((=)\\s*|(:)\\s*|(\\()|\\b)/f/(\\))?/\nsnippet f\n function${M1?: ${1:functionName}}($2) {\n ${0:$TM_SELECTED_TEXT}\n }${M2?;}${M3?,}${M4?)}\n# Immediate function\ntrigger \\(?f\\(\nendTrigger \\)?\nsnippet f(\n (function(${1}) {\n ${0:${TM_SELECTED_TEXT:/* code */}}\n }(${1}));\n# if\nsnippet if\n if (${1:true}) {\n ${0}\n }\n# if ... else\nsnippet ife\n if (${1:true}) {\n ${2}\n } else {\n ${0}\n }\n# tertiary conditional\nsnippet ter\n ${1:/* condition */} ? ${2:a} : ${3:b}\n# switch\nsnippet switch\n switch (${1:expression}) {\n case '${3:case}':\n ${4:// code}\n break;\n ${5}\n default:\n ${2:// code}\n }\n# case\nsnippet case\n case '${1:case}':\n ${2:// code}\n break;\n ${3}\n\n# while (...) {...}\nsnippet wh\n while (${1:/* condition */}) {\n ${0:/* code */}\n }\n# try\nsnippet try\n try {\n ${0:/* code */}\n } catch (e) {}\n# do...while\nsnippet do\n do {\n ${2:/* code */}\n } while (${1:/* condition */});\n# Object Method\nsnippet :f\nregex /([,{[])|^\\s*/:f/\n ${1:method_name}: function(${2:attribute}) {\n ${0}\n }${3:,}\n# setTimeout function\nsnippet setTimeout\nregex /\\b/st|timeout|setTimeo?u?t?/\n setTimeout(function() {${3:$TM_SELECTED_TEXT}}, ${1:10});\n# Get Elements\nsnippet gett\n getElementsBy${1:TagName}('${2}')${3}\n# Get Element\nsnippet get\n getElementBy${1:Id}('${2}')${3}\n# console.log (Firebug)\nsnippet cl\n console.log(${1});\n# return\nsnippet ret\n return ${1:result}\n# for (property in object ) { ... }\nsnippet fori\n for (var ${1:prop} in ${2:Things}) {\n ${0:$2[$1]}\n }\n# hasOwnProperty\nsnippet has\n hasOwnProperty(${1})\n# docstring\nsnippet /**\n /**\n * ${1:description}\n *\n */\nsnippet @par\nregex /^\\s*\\*\\s*/@(para?m?)?/\n @param {${1:type}} ${2:name} ${3:description}\nsnippet @ret\n @return {${1:type}} ${2:description}\n# JSON.parse\nsnippet jsonp\n JSON.parse(${1:jstr});\n# JSON.stringify\nsnippet jsons\n JSON.stringify(${1:object});\n# self-defining function\nsnippet sdf\n var ${1:function_name} = function(${2:argument}) {\n ${3:// initial code ...}\n\n $1 = function($2) {\n ${4:// main code}\n };\n }\n# singleton\nsnippet sing\n function ${1:Singleton} (${2:argument}) {\n // the cached instance\n var instance;\n\n // rewrite the constructor\n $1 = function $1($2) {\n return instance;\n };\n \n // carry over the prototype properties\n $1.prototype = this;\n\n // the instance\n instance = new $1();\n\n // reset the constructor pointer\n instance.constructor = $1;\n\n ${3:// code ...}\n\n return instance;\n }\n# class\nsnippet class\nregex /^\\s*/clas{0,2}/\n var ${1:class} = function(${20}) {\n $40$0\n };\n \n (function() {\n ${60:this.prop = \"\"}\n }).call(${1:class}.prototype);\n \n exports.${1:class} = ${1:class};\n# \nsnippet for-\n for (var ${1:i} = ${2:Things}.length; ${1:i}--; ) {\n ${0:${2:Things}[${1:i}];}\n }\n# for (...) {...}\nsnippet for\n for (var ${1:i} = 0; $1 < ${2:Things}.length; $1++) {\n ${3:$2[$1]}$0\n }\n# for (...) {...} (Improved Native For-Loop)\nsnippet forr\n for (var ${1:i} = ${2:Things}.length - 1; $1 >= 0; $1--) {\n ${3:$2[$1]}$0\n }\n\n\n#modules\nsnippet def\n ace.define(function(require, exports, module) {\n \"use strict\";\n var ${1/.*\\///} = require(\"${1}\");\n \n $TM_SELECTED_TEXT\n });\nsnippet req\nguard ^\\s*\n var ${1/.*\\///} = require(\"${1}\");\n $0\nsnippet requ\nguard ^\\s*\n var ${1/.*\\/(.)/\\u$1/} = require(\"${1}\").${1/.*\\/(.)/\\u$1/};\n $0\n",t.scope="javascript"}) \ No newline at end of file +ace.define("ace/snippets/javascript",["require","exports","module"],function(e,t,n){t.snippetText="snippet add\n ${1:obj}.add('${2:selector expression}')${3}\nsnippet addClass\n ${1:obj}.addClass('${2:class name}')${3}\nsnippet after\n ${1:obj}.after('${2:Some text and bold!}')${3}\nsnippet ajax\n $.ajax({\n url: '${1:mydomain.com/url}',\n type: '${2:POST}',\n dataType: '${3:xml/html/script/json}',\n data: $.param( $('${4:Element or Expression}') ),\n complete: function (jqXHR, textStatus) {\n ${5:// callback}\n },\n success: function (data, textStatus, jqXHR) {\n ${6:// success callback}\n },\n error: function (jqXHR, textStatus, errorThrown) {\n ${7:// error callback}\n }\n });\nsnippet ajaxcomplete\n ${1:obj}.ajaxComplete(function (${1:e}, xhr, settings) {\n ${2:// callback}\n });\nsnippet ajaxerror\n ${1:obj}.ajaxError(function (${1:e}, xhr, settings, thrownError) {\n ${2:// error callback}\n });\n ${3}\nsnippet ajaxget\n $.get('${1:mydomain.com/url}',\n ${2:{ param1: value1 },}\n function (data, textStatus, jqXHR) {\n ${3:// success callback}\n }\n );\nsnippet ajaxpost\n $.post('${1:mydomain.com/url}',\n ${2:{ param1: value1 },}\n function (data, textStatus, jqXHR) {\n ${3:// success callback}\n }\n );\nsnippet ajaxprefilter\n $.ajaxPrefilter(function (${1:options}, ${2:originalOptions}, jqXHR) {\n ${3: // Modify options, control originalOptions, store jqXHR, etc}\n });\nsnippet ajaxsend\n ${1:obj}.ajaxSend(function (${1:request, settings}) {\n ${2:// error callback}\n });\n ${3}\nsnippet ajaxsetup\n $.ajaxSetup({\n url: \"${1:mydomain.com/url}\",\n type: \"${2:POST}\",\n dataType: \"${3:xml/html/script/json}\",\n data: $.param( $(\"${4:Element or Expression}\") ),\n complete: function (jqXHR, textStatus) {\n ${5:// callback}\n },\n success: function (data, textStatus, jqXHR) {\n ${6:// success callback}\n },\n error: function (jqXHR, textStatus, errorThrown) {\n ${7:// error callback}\n }\n });\nsnippet ajaxstart\n $.ajaxStart(function () {\n ${1:// handler for when an AJAX call is started and no other AJAX calls are in progress};\n });\n ${2}\nsnippet ajaxstop\n $.ajaxStop(function () {\n ${1:// handler for when all AJAX calls have been completed};\n });\n ${2}\nsnippet ajaxsuccess\n $.ajaxSuccess(function (${1:e}, xhr, settings) {\n ${2:// handler for when any AJAX call is successfully completed};\n });\n ${2}\nsnippet andself\n ${1:obj}.andSelf()${2}\nsnippet animate\n ${1:obj}.animate({${2:param1: value1, param2: value2}}, ${3:speed})${4}\nsnippet append\n ${1:obj}.append('${2:Some text and bold!}')${3}\nsnippet appendTo\n ${1:obj}.appendTo('${2:selector expression}')${3}\nsnippet attr\n ${1:obj}.attr('${2:attribute}', '${3:value}')${4}\nsnippet attrm\n ${1:obj}.attr({'${2:attr1}': '${3:value1}', '${4:attr2}': '${5:value2}'})${6}\nsnippet before\n ${1:obj}.before('${2:Some text and bold!}')${3}\nsnippet bind\n ${1:obj}.bind('${2:exchange name}', function (${3:e}) {\n ${4:// exchange handler}\n });\nsnippet blur\n ${1:obj}.blur(function (${2:e}) {\n ${3:// exchange handler}\n });\nsnippet C\n $.Callbacks()${1}\nsnippet Cadd\n ${1:callbacks}.add(${2:callbacks})${3}\nsnippet Cdis\n ${1:callbacks}.disable()${2}\nsnippet Cempty\n ${1:callbacks}.empty()${2}\nsnippet Cfire\n ${1:callbacks}.fire(${2:args})${3}\nsnippet Cfired\n ${1:callbacks}.fired()${2}\nsnippet Cfirew\n ${1:callbacks}.fireWith(${2:this}, ${3:args})${4}\nsnippet Chas\n ${1:callbacks}.has(${2:callback})${3}\nsnippet Clock\n ${1:callbacks}.lock()${2}\nsnippet Clocked\n ${1:callbacks}.locked()${2}\nsnippet Crem\n ${1:callbacks}.remove(${2:callbacks})${3}\nsnippet change\n ${1:obj}.change(function (${2:e}) {\n ${3:// exchange handler}\n });\nsnippet children\n ${1:obj}.children('${2:selector expression}')${3}\nsnippet clearq\n ${1:obj}.clearQueue(${2:'queue name'})${3}\nsnippet click\n ${1:obj}.click(function (${2:e}) {\n ${3:// exchange handler}\n });\nsnippet clone\n ${1:obj}.clone()${2}\nsnippet contains\n $.contains(${1:container}, ${2:contents});\nsnippet css\n ${1:obj}.css('${2:attribute}', '${3:value}')${4}\nsnippet csshooks\n $.cssHooks['${1:CSS prop}'] = {\n get: function (elem, computed, extra) {\n ${2: // handle getting the CSS property}\n },\n set: function (elem, value) {\n ${3: // handle setting the CSS value}\n }\n };\nsnippet cssm\n ${1:obj}.css({${2:attribute1}: '${3:value1}', ${4:attribute2}: '${5:value2}'})${6}\nsnippet D\n $.Deferred()${1}\nsnippet Dalways\n ${1:deferred}.always(${2:callbacks})${3}\nsnippet Ddone\n ${1:deferred}.done(${2:callbacks})${3}\nsnippet Dfail\n ${1:deferred}.fail(${2:callbacks})${3}\nsnippet Disrej\n ${1:deferred}.isRejected()${2}\nsnippet Disres\n ${1:deferred}.isResolved()${2}\nsnippet Dnotify\n ${1:deferred}.notify(${2:args})${3}\nsnippet Dnotifyw\n ${1:deferred}.notifyWith(${2:this}, ${3:args})${4}\nsnippet Dpipe\n ${1:deferred}.then(${2:doneFilter}, ${3:failFilter}, ${4:progressFilter})${5}\nsnippet Dprog\n ${1:deferred}.progress(${2:callbacks})${3}\nsnippet Dprom\n ${1:deferred}.promise(${2:target})${3}\nsnippet Drej\n ${1:deferred}.reject(${2:args})${3}\nsnippet Drejw\n ${1:deferred}.rejectWith(${2:this}, ${3:args})${4}\nsnippet Dres\n ${1:deferred}.resolve(${2:args})${3}\nsnippet Dresw\n ${1:deferred}.resolveWith(${2:this}, ${3:args})${4}\nsnippet Dstate\n ${1:deferred}.state()${2}\nsnippet Dthen\n ${1:deferred}.then(${2:doneCallbacks}, ${3:failCallbacks}, ${4:progressCallbacks})${5}\nsnippet Dwhen\n $.when(${1:deferreds})${2}\nsnippet data\n ${1:obj}.data(${2:obj})${3}\nsnippet dataa\n $.data('${1:selector expression}', '${2:key}'${3:, 'value'})${4}\nsnippet dblclick\n ${1:obj}.dblclick(function (${2:e}) {\n ${3:// exchange handler}\n });\nsnippet delay\n ${1:obj}.delay('${2:slow/400/fast}'${3:, 'queue name'})${4}\nsnippet dele\n ${1:obj}.delegate('${2:selector expression}', '${3:exchange name}', function (${4:e}) {\n ${5:// exchange handler}\n });\nsnippet deq\n ${1:obj}.dequeue(${2:'queue name'})${3}\nsnippet deqq\n $.dequeue('${1:selector expression}'${2:, 'queue name'})${3}\nsnippet detach\n ${1:obj}.detach('${2:selector expression}')${3}\nsnippet die\n ${1:obj}.die(${2:exchange}, ${3:handler})${4}\nsnippet each\n ${1:obj}.each(function (index) {\n ${2:this.innerHTML = this + \" is the element, \" + index + \" is the position\";}\n });\nsnippet el\n $('<${1}/>'${2:, {}})${3}\nsnippet eltrim\n $.trim('${1:string}')${2}\nsnippet empty\n ${1:obj}.empty()${2}\nsnippet end\n ${1:obj}.end()${2}\nsnippet eq\n ${1:obj}.eq(${2:element index})${3}\nsnippet error\n ${1:obj}.error(function (${2:e}) {\n ${3:// exchange handler}\n });\nsnippet eventsmap\n {\n :f${1}\n }\nsnippet extend\n $.extend(${1:true, }${2:target}, ${3:obj})${4}\nsnippet fadein\n ${1:obj}.fadeIn('${2:slow/400/fast}')${3}\nsnippet fadeinc\n ${1:obj}.fadeIn('slow/400/fast', function () {\n ${2:// callback};\n });\nsnippet fadeout\n ${1:obj}.fadeOut('${2:slow/400/fast}')${3}\nsnippet fadeoutc\n ${1:obj}.fadeOut('slow/400/fast', function () {\n ${2:// callback};\n });\nsnippet fadeto\n ${1:obj}.fadeTo('${2:slow/400/fast}', ${3:0.5})${4}\nsnippet fadetoc\n ${1:obj}.fadeTo('slow/400/fast', ${2:0.5}, function () {\n ${3:// callback};\n });\nsnippet filter\n ${1:obj}.filter('${2:selector expression}')${3}\nsnippet filtert\n ${1:obj}.filter(function (${2:index}) {\n ${3:// test code}\n })${4}\nsnippet find\n ${1:obj}.find('${2:selector expression}')${3}\nsnippet focus\n ${1:obj}.focus(function (${2:e}) {\n ${3:// exchange handler}\n });\nsnippet focusin\n ${1:obj}.focusIn(function (${2:e}) {\n ${3:// exchange handler}\n });\nsnippet focusout\n ${1:obj}.focusOut(function (${2:e}) {\n ${3:// exchange handler}\n });\nsnippet get\n ${1:obj}.get(${2:element index})${3}\nsnippet getjson\n $.getJSON('${1:mydomain.com/url}',\n ${2:{ param1: value1 },}\n function (data, textStatus, jqXHR) {\n ${3:// success callback}\n }\n );\nsnippet getscript\n $.getScript('${1:mydomain.com/url}', function (script, textStatus, jqXHR) {\n ${2:// callback}\n });\nsnippet grep\n $.grep(${1:array}, function (item, index) {\n ${2:// test code}\n }${3:, true});\nsnippet hasc\n ${1:obj}.hasClass('${2:className}')${3}\nsnippet hasd\n $.hasData('${1:selector expression}');\nsnippet height\n ${1:obj}.height(${2:integer})${3}\nsnippet hide\n ${1:obj}.hide('${2:slow/400/fast}')${3}\nsnippet hidec\n ${1:obj}.hide('${2:slow/400/fast}', function () {\n ${3:// callback}\n });\nsnippet hover\n ${1:obj}.hover(function (${2:e}) {\n ${3:// exchange handler}\n }, function ($2) {\n ${4:// exchange handler}\n });${5}\nsnippet html\n ${1:obj}.html('${2:Some text and bold!}')${3}\nsnippet inarr\n $.inArray(${1:value}, ${2:array});\nsnippet insa\n ${1:obj}.insertAfter('${2:selector expression}')${3}\nsnippet insb\n ${1:obj}.insertBefore('${2:selector expression}')${3}\nsnippet is\n ${1:obj}.is('${2:selector expression}')${3}\nsnippet isarr\n $.isArray(${1:obj})${2}\nsnippet isempty\n $.isEmptyObject(${1:obj})${2}\nsnippet isfunc\n $.isFunction(${1:obj})${2}\nsnippet isnum\n $.isNumeric(${1:value})${2}\nsnippet isobj\n $.isPlainObject(${1:obj})${2}\nsnippet iswin\n $.isWindow(${1:obj})${2}\nsnippet isxml\n $.isXMLDoc(${1:node})${2}\nsnippet jj\n $('${1:selector}')${2}\nsnippet kdown\n ${1:obj}.keydown(function (${2:e}) {\n ${3:// exchange handler}\n });\nsnippet kpress\n ${1:obj}.keypress(function (${2:e}) {\n ${3:// exchange handler}\n });\nsnippet kup\n ${1:obj}.keyup(function (${2:e}) {\n ${3:// exchange handler}\n });\nsnippet last\n ${1:obj}.last('${1:selector expression}')${3}\nsnippet live\n ${1:obj}.live('${2:events}', function (${3:e}) {\n ${4:// exchange handler}\n });\nsnippet load\n ${1:obj}.load(function (${2:e}) {\n ${3:// exchange handler}\n });\nsnippet loadf\n ${1:obj}.load('${2:mydomain.com/url}',\n ${2:{ param1: value1 },}\n function (responseText, textStatus, xhr) {\n ${3:// success callback}\n }\n });\nsnippet makearray\n $.makeArray(${1:obj});\nsnippet map\n ${1:obj}.map(function (${2:index}, ${3:element}) {\n ${4:// callback}\n });\nsnippet mapp\n $.map(${1:arrayOrObject}, function (${2:value}, ${3:indexOrKey}) {\n ${4:// callback}\n });\nsnippet merge\n $.merge(${1:target}, ${2:original});\nsnippet mdown\n ${1:obj}.mousedown(function (${2:e}) {\n ${3:// exchange handler}\n });\nsnippet menter\n ${1:obj}.mouseenter(function (${2:e}) {\n ${3:// exchange handler}\n });\nsnippet mleave\n ${1:obj}.mouseleave(function (${2:e}) {\n ${3:// exchange handler}\n });\nsnippet mmove\n ${1:obj}.mousemove(function (${2:e}) {\n ${3:// exchange handler}\n });\nsnippet mout\n ${1:obj}.mouseout(function (${2:e}) {\n ${3:// exchange handler}\n });\nsnippet mover\n ${1:obj}.mouseover(function (${2:e}) {\n ${3:// exchange handler}\n });\nsnippet mup\n ${1:obj}.mouseup(function (${2:e}) {\n ${3:// exchange handler}\n });\nsnippet next\n ${1:obj}.next('${2:selector expression}')${3}\nsnippet nexta\n ${1:obj}.nextAll('${2:selector expression}')${3}\nsnippet nextu\n ${1:obj}.nextUntil('${2:selector expression}'${3:, 'filter expression'})${4}\nsnippet not\n ${1:obj}.not('${2:selector expression}')${3}\nsnippet off\n ${1:obj}.off('${2:events}', '${3:selector expression}'${4:, handler})${5}\nsnippet offset\n ${1:obj}.offset()${2}\nsnippet offsetp\n ${1:obj}.offsetParent()${2}\nsnippet on\n ${1:obj}.on('${2:events}', '${3:selector expression}', function (${4:e}) {\n ${5:// exchange handler}\n });\nsnippet one\n ${1:obj}.one('${2:exchange name}', function (${3:e}) {\n ${4:// exchange handler}\n });\nsnippet outerh\n ${1:obj}.outerHeight()${2}\nsnippet outerw\n ${1:obj}.outerWidth()${2}\nsnippet param\n $.param(${1:obj})${2}\nsnippet parent\n ${1:obj}.parent('${2:selector expression}')${3}\nsnippet parents\n ${1:obj}.parents('${2:selector expression}')${3}\nsnippet parentsu\n ${1:obj}.parentsUntil('${2:selector expression}'${3:, 'filter expression'})${4}\nsnippet parsejson\n $.parseJSON(${1:data})${2}\nsnippet parsexml\n $.parseXML(${1:data})${2}\nsnippet pos\n ${1:obj}.position()${2}\nsnippet prepend\n ${1:obj}.prepend('${2:Some text and bold!}')${3}\nsnippet prependto\n ${1:obj}.prependTo('${2:selector expression}')${3}\nsnippet prev\n ${1:obj}.prev('${2:selector expression}')${3}\nsnippet preva\n ${1:obj}.prevAll('${2:selector expression}')${3}\nsnippet prevu\n ${1:obj}.prevUntil('${2:selector expression}'${3:, 'filter expression'})${4}\nsnippet promise\n ${1:obj}.promise(${2:'fx'}, ${3:target})${4}\nsnippet prop\n ${1:obj}.prop('${2:property name}')${3}\nsnippet proxy\n $.proxy(${1:function}, ${2:this})${3}\nsnippet pushstack\n ${1:obj}.pushStack(${2:elements})${3}\nsnippet queue\n ${1:obj}.queue(${2:name}${3:, newQueue})${4}\nsnippet queuee\n $.queue(${1:element}${2:, name}${3:, newQueue})${4}\nsnippet ready\n $(function () {\n ${1}\n });\nsnippet rem\n ${1:obj}.remove()${2}\nsnippet rema\n ${1:obj}.removeAttr('${2:attribute name}')${3}\nsnippet remc\n ${1:obj}.removeClass('${2:class name}')${3}\nsnippet remd\n ${1:obj}.removeData('${2:key name}')${3}\nsnippet remdd\n $.removeData(${1:element}${2:, 'key name}')${3}\nsnippet remp\n ${1:obj}.removeProp('${2:property name}')${3}\nsnippet repa\n ${1:obj}.replaceAll(${2:target})${3}\nsnippet repw\n ${1:obj}.replaceWith(${2:content})${3}\nsnippet reset\n ${1:obj}.reset(function (${2:e}) {\n ${3:// exchange handler}\n });\nsnippet resize\n ${1:obj}.resize(function (${2:e}) {\n ${3:// exchange handler}\n });\nsnippet scroll\n ${1:obj}.scroll(function (${2:e}) {\n ${3:// exchange handler}\n });\nsnippet scrolll\n ${1:obj}.scrollLeft(${2:value})${3}\nsnippet scrollt\n ${1:obj}.scrollTop(${2:value})${3}\nsnippet sdown\n ${1:obj}.slideDown('${2:slow/400/fast}')${3}\nsnippet sdownc\n ${1:obj}.slideDown('${2:slow/400/fast}', function () {\n ${3:// callback};\n });\nsnippet select\n ${1:obj}.select(function (${2:e}) {\n ${3:// exchange handler}\n });\nsnippet serialize\n ${1:obj}.serialize()${2}\nsnippet serializea\n ${1:obj}.serializeArray()${2}\nsnippet show\n ${1:obj}.show('${2:slow/400/fast}')${3}\nsnippet showc\n ${1:obj}.show('${2:slow/400/fast}', function () {\n ${3:// callback}\n });\nsnippet sib\n ${1:obj}.siblings('${2:selector expression}')${3}\nsnippet size\n ${1:obj}.size()${2}\nsnippet slice\n ${1:obj}.slice(${2:start}${3:, end})${4}\nsnippet stoggle\n ${1:obj}.slideToggle('${2:slow/400/fast}')${3}\nsnippet stop\n ${1:obj}.stop('${2:queue}', ${3:false}, ${4:false})${5}\nsnippet submit\n ${1:obj}.submit(function (${2:e}) {\n ${3:// exchange handler}\n });\nsnippet sup\n ${1:obj}.slideUp('${2:slow/400/fast}')${3}\nsnippet supc\n ${1:obj}.slideUp('${2:slow/400/fast}', function () {\n ${3:// callback};\n });\nsnippet text\n ${1:obj}.text(${2:'some text'})${3}\nsnippet this\n $(this)${1}\nsnippet toarr\n ${1:obj}.toArray()\nsnippet tog\n ${1:obj}.toggle(function (${2:e}) {\n ${3:// exchange handler}\n }, function ($2) {\n ${4:// exchange handler}\n });\n ${4}\nsnippet togclass\n ${1:obj}.toggleClass('${2:class name}')${3}\nsnippet togsh\n ${1:obj}.toggle('${2:slow/400/fast}')${3}\nsnippet trig\n ${1:obj}.trigger('${2:exchange name}')${3}\nsnippet trigh\n ${1:obj}.triggerHandler('${2:exchange name}')${3}\nsnippet $trim\n $.trim(${1:str})${2}\nsnippet $type\n $.type(${1:obj})${2}\nsnippet unbind\n ${1:obj}.unbind('${2:exchange name}')${3}\nsnippet undele\n ${1:obj}.undelegate(${2:selector expression}, ${3:exchange}, ${4:handler})${5}\nsnippet uniq\n $.unique(${1:array})${2}\nsnippet unload\n ${1:obj}.unload(function (${2:e}) {\n ${3:// exchange handler}\n });\nsnippet unwrap\n ${1:obj}.unwrap()${2}\nsnippet val\n ${1:obj}.val('${2:text}')${3}\nsnippet width\n ${1:obj}.width(${2:integer})${3}\nsnippet wrap\n ${1:obj}.wrap('${2:<div class=\"extra-wrapper\"></div>}')${3}\n\n# Prototype\nsnippet proto\n ${1:class_name}.prototype.${2:method_name} = function(${3:first_argument}) {\n ${4:// body...}\n };\n# Function\nsnippet fun\n function ${1?:function_name}(${2:argument}) {\n ${3:// body...}\n }\n# Anonymous Function\nregex /((=)\\s*|(:)\\s*|(\\()|\\b)/f/(\\))?/\nsnippet f\n function${M1?: ${1:functionName}}($2) {\n ${0:$TM_SELECTED_TEXT}\n }${M2?;}${M3?,}${M4?)}\n# Immediate function\ntrigger \\(?f\\(\nendTrigger \\)?\nsnippet f(\n (function(${1}) {\n ${0:${TM_SELECTED_TEXT:/* code */}}\n }(${1}));\n# if\nsnippet if\n if (${1:true}) {\n ${0}\n }\n# if ... else\nsnippet ife\n if (${1:true}) {\n ${2}\n } else {\n ${0}\n }\n# tertiary conditional\nsnippet ter\n ${1:/* condition */} ? ${2:a} : ${3:b}\n# switch\nsnippet switch\n switch (${1:expression}) {\n case '${3:case}':\n ${4:// code}\n break;\n ${5}\n default:\n ${2:// code}\n }\n# case\nsnippet case\n case '${1:case}':\n ${2:// code}\n break;\n ${3}\n\n# while (...) {...}\nsnippet wh\n while (${1:/* condition */}) {\n ${0:/* code */}\n }\n# try\nsnippet try\n try {\n ${0:/* code */}\n } catch (e) {}\n# do...while\nsnippet do\n do {\n ${2:/* code */}\n } while (${1:/* condition */});\n# Object Method\nsnippet :f\nregex /([,{[])|^\\s*/:f/\n ${1:method_name}: function(${2:attribute}) {\n ${0}\n }${3:,}\n# setTimeout function\nsnippet setTimeout\nregex /\\b/st|timeout|setTimeo?u?t?/\n setTimeout(function() {${3:$TM_SELECTED_TEXT}}, ${1:10});\n# Get Elements\nsnippet gett\n getElementsBy${1:TagName}('${2}')${3}\n# Get Element\nsnippet get\n getElementBy${1:Id}('${2}')${3}\n# console.log (Firebug)\nsnippet cl\n console.log(${1});\n# return\nsnippet ret\n return ${1:result}\n# for (property in object ) { ... }\nsnippet fori\n for (var ${1:prop} in ${2:Things}) {\n ${0:$2[$1]}\n }\n# hasOwnProperty\nsnippet has\n hasOwnProperty(${1})\n# docstring\nsnippet /**\n /**\n * ${1:description}\n *\n */\nsnippet @par\nregex /^\\s*\\*\\s*/@(para?m?)?/\n @param {${1:type}} ${2:name} ${3:description}\nsnippet @ret\n @return {${1:type}} ${2:description}\n# JSON.parse\nsnippet jsonp\n JSON.parse(${1:jstr});\n# JSON.stringify\nsnippet jsons\n JSON.stringify(${1:object});\n# self-defining function\nsnippet sdf\n var ${1:function_name} = function(${2:argument}) {\n ${3:// initial code ...}\n\n $1 = function($2) {\n ${4:// main code}\n };\n }\n# singleton\nsnippet sing\n function ${1:Singleton} (${2:argument}) {\n // the cached instance\n var instance;\n\n // rewrite the constructor\n $1 = function $1($2) {\n return instance;\n };\n \n // carry over the prototype properties\n $1.prototype = this;\n\n // the instance\n instance = new $1();\n\n // reset the constructor pointer\n instance.constructor = $1;\n\n ${3:// code ...}\n\n return instance;\n }\n# class\nsnippet class\nregex /^\\s*/clas{0,2}/\n var ${1:class} = function(${20}) {\n $40$0\n };\n \n (function() {\n ${60:this.prop = \"\"}\n }).call(${1:class}.prototype);\n \n exports.${1:class} = ${1:class};\n# \nsnippet for-\n for (var ${1:i} = ${2:Things}.length; ${1:i}--; ) {\n ${0:${2:Things}[${1:i}];}\n }\n# for (...) {...}\nsnippet for\n for (var ${1:i} = 0; $1 < ${2:Things}.length; $1++) {\n ${3:$2[$1]}$0\n }\n# for (...) {...} (Improved Native For-Loop)\nsnippet forr\n for (var ${1:i} = ${2:Things}.length - 1; $1 >= 0; $1--) {\n ${3:$2[$1]}$0\n }\n\n\n#modules\nsnippet def\n ace.define(function(require, exports, module) {\n \"use strict\";\n var ${1/.*\\///} = require(\"${1}\");\n \n $TM_SELECTED_TEXT\n });\nsnippet req\nguard ^\\s*\n var ${1/.*\\///} = require(\"${1}\");\n $0\nsnippet requ\nguard ^\\s*\n var ${1/.*\\/(.)/\\u$1/} = require(\"${1}\").${1/.*\\/(.)/\\u$1/};\n $0\n",t.scope="javascript"}) \ No newline at end of file diff --git a/contact-center/app/src/main/resources/static/js/ace/snippets/ruby.js b/contact-center/app/src/main/resources/static/js/ace/snippets/ruby.js index 961a554d..ea7f2a1e 100644 --- a/contact-center/app/src/main/resources/static/js/ace/snippets/ruby.js +++ b/contact-center/app/src/main/resources/static/js/ace/snippets/ruby.js @@ -1 +1 @@ -ace.define("ace/snippets/ruby",["require","exports","module"],function(e,t,n){t.snippetText='########################################\n# Ruby snippets - for Rails, see below #\n########################################\n\n# encoding for Ruby 1.9\nsnippet enc\n # encoding: utf-8\n\n# #!/usr/bin/env ruby\nsnippet #!\n #!/usr/bin/env ruby\n # encoding: utf-8\n\n# New Block\nsnippet =b\n =begin rdoc\n ${1}\n =end\nsnippet y\n :yields: ${1:arguments}\nsnippet rb\n #!/usr/bin/env ruby -wKU\nsnippet beg\n begin\n ${3}\n rescue ${1:Exception} => ${2:e}\n end\n\nsnippet req require\n require "${1}"${2}\nsnippet #\n # =>\nsnippet end\n __END__\nsnippet case\n case ${1:object}\n when ${2:condition}\n ${3}\n end\nsnippet when\n when ${1:condition}\n ${2}\nsnippet def\n def ${1:method_name}\n ${2}\n end\nsnippet deft\n def test_${1:case_name}\n ${2}\n end\nsnippet if\n if ${1:condition}\n ${2}\n end\nsnippet ife\n if ${1:condition}\n ${2}\n else\n ${3}\n end\nsnippet elsif\n elsif ${1:condition}\n ${2}\nsnippet unless\n unless ${1:condition}\n ${2}\n end\nsnippet while\n while ${1:condition}\n ${2}\n end\nsnippet for\n for ${1:e} in ${2:c}\n ${3}\n end\nsnippet until\n until ${1:condition}\n ${2}\n end\nsnippet cla class .. end\n class ${1:`substitute(Filename(), \'\\(_\\|^\\)\\(.\\)\', \'\\u\\2\', \'g\')`}\n ${2}\n end\nsnippet cla class .. initialize .. end\n class ${1:`substitute(Filename(), \'\\(_\\|^\\)\\(.\\)\', \'\\u\\2\', \'g\')`}\n def initialize(${2:args})\n ${3}\n end\n end\nsnippet cla class .. < ParentClass .. initialize .. end\n class ${1:`substitute(Filename(), \'\\(_\\|^\\)\\(.\\)\', \'\\u\\2\', \'g\')`} < ${2:ParentClass}\n def initialize(${3:args})\n ${4}\n end\n end\nsnippet cla ClassName = Struct .. do .. end\n ${1:`substitute(Filename(), \'\\(_\\|^\\)\\(.\\)\', \'\\u\\2\', \'g\')`} = Struct.new(:${2:attr_names}) do\n def ${3:method_name}\n ${4}\n end\n end\nsnippet cla class BlankSlate .. initialize .. end\n class ${1:BlankSlate}\n instance_methods.each { |meth| undef_method(meth) unless meth =~ /\\A__/ }\n end\nsnippet cla class << self .. end\n class << ${1:self}\n ${2}\n end\n# class .. < DelegateClass .. initialize .. end\nsnippet cla-\n class ${1:`substitute(Filename(), \'\\(_\\|^\\)\\(.\\)\', \'\\u\\2\', \'g\')`} < DelegateClass(${2:ParentClass})\n def initialize(${3:args})\n super(${4:del_obj})\n\n ${5}\n end\n end\nsnippet mod module .. end\n module ${1:`substitute(Filename(), \'\\(_\\|^\\)\\(.\\)\', \'\\u\\2\', \'g\')`}\n ${2}\n end\nsnippet mod module .. module_function .. end\n module ${1:`substitute(Filename(), \'\\(_\\|^\\)\\(.\\)\', \'\\u\\2\', \'g\')`}\n module_function\n\n ${2}\n end\nsnippet mod module .. ClassMethods .. end\n module ${1:`substitute(Filename(), \'\\(_\\|^\\)\\(.\\)\', \'\\u\\2\', \'g\')`}\n module ClassMethods\n ${2}\n end\n\n module InstanceMethods\n\n end\n\n def self.included(receiver)\n receiver.extend ClassMethods\n receiver.send :include, InstanceMethods\n end\n end\n# attr_reader\nsnippet r\n attr_reader :${1:attr_names}\n# attr_writer\nsnippet w\n attr_writer :${1:attr_names}\n# attr_accessor\nsnippet rw\n attr_accessor :${1:attr_names}\nsnippet atp\n attr_protected :${1:attr_names}\nsnippet ata\n attr_accessible :${1:attr_names}\n# include Enumerable\nsnippet Enum\n include Enumerable\n\n def each(&block)\n ${1}\n end\n# include Comparable\nsnippet Comp\n include Comparable\n\n def <=>(other)\n ${1}\n end\n# extend Forwardable\nsnippet Forw-\n extend Forwardable\n# def self\nsnippet defs\n def self.${1:class_method_name}\n ${2}\n end\n# def method_missing\nsnippet defmm\n def method_missing(meth, *args, &blk)\n ${1}\n end\nsnippet defd\n def_delegator :${1:@del_obj}, :${2:del_meth}, :${3:new_name}\nsnippet defds\n def_delegators :${1:@del_obj}, :${2:del_methods}\nsnippet am\n alias_method :${1:new_name}, :${2:old_name}\nsnippet app\n if __FILE__ == $PROGRAM_NAME\n ${1}\n end\n# usage_if()\nsnippet usai\n if ARGV.${1}\n abort "Usage: #{$PROGRAM_NAME} ${2:ARGS_GO_HERE}"${3}\n end\n# usage_unless()\nsnippet usau\n unless ARGV.${1}\n abort "Usage: #{$PROGRAM_NAME} ${2:ARGS_GO_HERE}"${3}\n end\nsnippet array\n Array.new(${1:10}) { |${2:i}| ${3} }\nsnippet hash\n Hash.new { |${1:hash}, ${2:key}| $1[$2] = ${3} }\nsnippet file File.foreach() { |line| .. }\n File.foreach(${1:"path/to/file"}) { |${2:line}| ${3} }\nsnippet file File.read()\n File.read(${1:"path/to/file"})${2}\nsnippet Dir Dir.global() { |file| .. }\n Dir.glob(${1:"dir/glob/*"}) { |${2:file}| ${3} }\nsnippet Dir Dir[".."]\n Dir[${1:"glob/**/*.rb"}]${2}\nsnippet dir\n Filename.dirname(__FILE__)\nsnippet deli\n delete_if { |${1:e}| ${2} }\nsnippet fil\n fill(${1:range}) { |${2:i}| ${3} }\n# flatten_once()\nsnippet flao\n inject(Array.new) { |${1:arr}, ${2:a}| $1.push(*$2)}${3}\nsnippet zip\n zip(${1:enums}) { |${2:row}| ${3} }\n# downto(0) { |n| .. }\nsnippet dow\n downto(${1:0}) { |${2:n}| ${3} }\nsnippet ste\n step(${1:2}) { |${2:n}| ${3} }\nsnippet tim\n times { |${1:n}| ${2} }\nsnippet upt\n upto(${1:1.0/0.0}) { |${2:n}| ${3} }\nsnippet loo\n loop { ${1} }\nsnippet ea\n each { |${1:e}| ${2} }\nsnippet ead\n each do |${1:e}|\n ${2}\n end\nsnippet eab\n each_byte { |${1:byte}| ${2} }\nsnippet eac- each_char { |chr| .. }\n each_char { |${1:chr}| ${2} }\nsnippet eac- each_cons(..) { |group| .. }\n each_cons(${1:2}) { |${2:group}| ${3} }\nsnippet eai\n each_index { |${1:i}| ${2} }\nsnippet eaid\n each_index do |${1:i}|\n ${2}\n end\nsnippet eak\n each_key { |${1:key}| ${2} }\nsnippet eakd\n each_key do |${1:key}|\n ${2}\n end\nsnippet eal\n each_line { |${1:line}| ${2} }\nsnippet eald\n each_line do |${1:line}|\n ${2}\n end\nsnippet eap\n each_pair { |${1:name}, ${2:val}| ${3} }\nsnippet eapd\n each_pair do |${1:name}, ${2:val}|\n ${3}\n end\nsnippet eas-\n each_slice(${1:2}) { |${2:group}| ${3} }\nsnippet easd-\n each_slice(${1:2}) do |${2:group}|\n ${3}\n end\nsnippet eav\n each_value { |${1:val}| ${2} }\nsnippet eavd\n each_value do |${1:val}|\n ${2}\n end\nsnippet eawi\n each_with_index { |${1:e}, ${2:i}| ${3} }\nsnippet eawid\n each_with_index do |${1:e},${2:i}|\n ${3}\n end\nsnippet reve\n reverse_each { |${1:e}| ${2} }\nsnippet reved\n reverse_each do |${1:e}|\n ${2}\n end\nsnippet inj\n inject(${1:init}) { |${2:mem}, ${3:var}| ${4} }\nsnippet injd\n inject(${1:init}) do |${2:mem}, ${3:var}|\n ${4}\n end\nsnippet map\n map { |${1:e}| ${2} }\nsnippet mapd\n map do |${1:e}|\n ${2}\n end\nsnippet mapwi-\n enum_with_index.map { |${1:e}, ${2:i}| ${3} }\nsnippet sor\n sort { |a, b| ${1} }\nsnippet sorb\n sort_by { |${1:e}| ${2} }\nsnippet ran\n sort_by { rand }\nsnippet all\n all? { |${1:e}| ${2} }\nsnippet any\n any? { |${1:e}| ${2} }\nsnippet cl\n classify { |${1:e}| ${2} }\nsnippet col\n collect { |${1:e}| ${2} }\nsnippet cold\n collect do |${1:e}|\n ${2}\n end\nsnippet det\n detect { |${1:e}| ${2} }\nsnippet detd\n detect do |${1:e}|\n ${2}\n end\nsnippet fet\n fetch(${1:name}) { |${2:key}| ${3} }\nsnippet fin\n find { |${1:e}| ${2} }\nsnippet find\n find do |${1:e}|\n ${2}\n end\nsnippet fina\n find_all { |${1:e}| ${2} }\nsnippet finad\n find_all do |${1:e}|\n ${2}\n end\nsnippet gre\n grep(${1:/pattern/}) { |${2:match}| ${3} }\nsnippet sub\n ${1:g}sub(${2:/pattern/}) { |${3:match}| ${4} }\nsnippet sca\n scan(${1:/pattern/}) { |${2:match}| ${3} }\nsnippet scad\n scan(${1:/pattern/}) do |${2:match}|\n ${3}\n end\nsnippet max\n max { |a, b| ${1} }\nsnippet min\n min { |a, b| ${1} }\nsnippet par\n partition { |${1:e}| ${2} }\nsnippet pard\n partition do |${1:e}|\n ${2}\n end\nsnippet rej\n reject { |${1:e}| ${2} }\nsnippet rejd\n reject do |${1:e}|\n ${2}\n end\nsnippet sel\n select { |${1:e}| ${2} }\nsnippet seld\n select do |${1:e}|\n ${2}\n end\nsnippet lam\n lambda { |${1:args}| ${2} }\nsnippet doo\n do\n ${1}\n end\nsnippet dov\n do |${1:variable}|\n ${2}\n end\nsnippet :\n :${1:key} => ${2:"value"}${3}\nsnippet ope\n open(${1:"path/or/url/or/pipe"}, "${2:w}") { |${3:io}| ${4} }\n# path_from_here()\nsnippet fpath\n File.join(File.dirname(__FILE__), *%2[${1:rel path here}])${2}\n# unix_filter {}\nsnippet unif\n ARGF.each_line${1} do |${2:line}|\n ${3}\n end\n# option_parse {}\nsnippet optp\n require "optparse"\n\n options = {${1:default => "args"}}\n\n ARGV.options do |opts|\n opts.banner = "Usage: #{File.basename($PROGRAM_NAME)}\nsnippet opt\n opts.on( "-${1:o}", "--${2:long-option-name}", ${3:String},\n "${4:Option description.}") do |${5:opt}|\n ${6}\n end\nsnippet tc\n require "test/unit"\n\n require "${1:library_file_name}"\n\n class Test${2:$1} < Test::Unit::TestCase\n def test_${3:case_name}\n ${4}\n end\n end\nsnippet ts\n require "test/unit"\n\n require "tc_${1:test_case_file}"\n require "tc_${2:test_case_file}"${3}\nsnippet as\n assert ${1:test}, "${2:Failure message.}"${3}\nsnippet ase\n assert_equal ${1:expected}, ${2:actual}${3}\nsnippet asne\n assert_not_equal ${1:unexpected}, ${2:actual}${3}\nsnippet asid\n assert_in_delta ${1:expected_float}, ${2:actual_float}, ${3:2 ** -20}${4}\nsnippet asio\n assert_instance_of ${1:ExpectedClass}, ${2:actual_instance}${3}\nsnippet asko\n assert_kind_of ${1:ExpectedKind}, ${2:actual_instance}${3}\nsnippet asn\n assert_nil ${1:instance}${2}\nsnippet asnn\n assert_not_nil ${1:instance}${2}\nsnippet asm\n assert_match /${1:expected_pattern}/, ${2:actual_string}${3}\nsnippet asnm\n assert_no_match /${1:unexpected_pattern}/, ${2:actual_string}${3}\nsnippet aso\n assert_operator ${1:left}, :${2:operator}, ${3:right}${4}\nsnippet asr\n assert_raise ${1:Exception} { ${2} }\nsnippet asrd\n assert_raise ${1:Exception} do\n ${2}\n end\nsnippet asnr\n assert_nothing_raised ${1:Exception} { ${2} }\nsnippet asnrd\n assert_nothing_raised ${1:Exception} do\n ${2}\n end\nsnippet asrt\n assert_respond_to ${1:object}, :${2:method}${3}\nsnippet ass assert_same(..)\n assert_same ${1:expected}, ${2:actual}${3}\nsnippet ass assert_send(..)\n assert_send [${1:object}, :${2:message}, ${3:args}]${4}\nsnippet asns\n assert_not_same ${1:unexpected}, ${2:actual}${3}\nsnippet ast\n assert_throws :${1:expected} { ${2} }\nsnippet astd\n assert_throws :${1:expected} do\n ${2}\n end\nsnippet asnt\n assert_nothing_thrown { ${1} }\nsnippet asntd\n assert_nothing_thrown do\n ${1}\n end\nsnippet fl\n flunk "${1:Failure message.}"${2}\n# Benchmark.bmbm do .. end\nsnippet bm-\n TESTS = ${1:10_000}\n Benchmark.bmbm do |results|\n ${2}\n end\nsnippet rep\n results.report("${1:name}:") { TESTS.times { ${2} }}\n# Marshal.dump(.., file)\nsnippet Md\n File.open(${1:"path/to/file.dump"}, "wb") { |${2:file}| Marshal.dump(${3:obj}, $2) }${4}\n# Mashal.load(obj)\nsnippet Ml\n File.open(${1:"path/to/file.dump"}, "rb") { |${2:file}| Marshal.load($2) }${3}\n# deep_copy(..)\nsnippet deec\n Marshal.load(Marshal.dump(${1:obj_to_copy}))${2}\nsnippet Pn-\n PStore.new(${1:"file_name.pstore"})${2}\nsnippet tra\n transaction(${1:true}) { ${2} }\n# xmlread(..)\nsnippet xml-\n REXML::Document.new(File.read(${1:"path/to/file"}))${2}\n# xpath(..) { .. }\nsnippet xpa\n elements.each(${1:"//Xpath"}) do |${2:node}|\n ${3}\n end\n# class_from_name()\nsnippet clafn\n split("::").inject(Object) { |par, const| par.const_get(const) }\n# singleton_class()\nsnippet sinc\n class << self; self end\nsnippet nam\n namespace :${1:`Filename()`} do\n ${2}\n end\nsnippet tas\n desc "${1:Task description}"\n task :${2:task_name => [:dependent, :tasks]} do\n ${3}\n end\n# block\nsnippet b\n { |${1:var}| ${2} }\nsnippet begin\n begin\n raise \'A test exception.\'\n rescue Exception => e\n puts e.message\n puts e.backtrace.inspect\n else\n # other exception\n ensure\n # always executed\n end\n\n#debugging\nsnippet debug\n require \'ruby-debug\'; debugger; true;\nsnippet pry\n require \'pry\'; binding.pry\n\n#############################################\n# Rails snippets - for pure Ruby, see above #\n#############################################\nsnippet art\n assert_redirected_to ${1::action => "${2:index}"}\nsnippet artnp\n assert_redirected_to ${1:parent}_${2:child}_path(${3:@$1}, ${4:@$2})\nsnippet artnpp\n assert_redirected_to ${1:parent}_${2:child}_path(${3:@$1})\nsnippet artp\n assert_redirected_to ${1:model}_path(${2:@$1})\nsnippet artpp\n assert_redirected_to ${1:model}s_path\nsnippet asd\n assert_difference "${1:Model}.${2:count}", $1 do\n ${3}\n end\nsnippet asnd\n assert_no_difference "${1:Model}.${2:count}" do\n ${3}\n end\nsnippet asre\n assert_response :${1:success}, @response.body${2}\nsnippet asrj\n assert_rjs :${1:replace}, "${2:dom id}"\nsnippet ass assert_select(..)\n assert_select \'${1:path}\', :${2:text} => \'${3:inner_html\' ${4:do}\nsnippet bf\n before_filter :${1:method}\nsnippet bt\n belongs_to :${1:association}\nsnippet crw\n cattr_accessor :${1:attr_names}\nsnippet defcreate\n def create\n @${1:model_class_name} = ${2:ModelClassName}.new(params[:$1])\n\n respond_to do |wants|\n if @$1.save\n flash[:notice] = \'$2 was successfully created.\'\n wants.html { redirect_to(@$1) }\n wants.xml { render :xml => @$1, :status => :created, :location => @$1 }\n else\n wants.html { render :action => "new" }\n wants.xml { render :xml => @$1.errors, :status => :unprocessable_entity }\n end\n end\n end${3}\nsnippet defdestroy\n def destroy\n @${1:model_class_name} = ${2:ModelClassName}.find(params[:id])\n @$1.destroy\n\n respond_to do |wants|\n wants.html { redirect_to($1s_url) }\n wants.xml { head :ok }\n end\n end${3}\nsnippet defedit\n def edit\n @${1:model_class_name} = ${2:ModelClassName}.find(params[:id])\n end\nsnippet defindex\n def index\n @${1:model_class_name} = ${2:ModelClassName}.all\n\n respond_to do |wants|\n wants.html # index.html.erb\n wants.xml { render :xml => @$1s }\n end\n end${3}\nsnippet defnew\n def new\n @${1:model_class_name} = ${2:ModelClassName}.new\n\n respond_to do |wants|\n wants.html # new.html.erb\n wants.xml { render :xml => @$1 }\n end\n end${3}\nsnippet defshow\n def show\n @${1:model_class_name} = ${2:ModelClassName}.find(params[:id])\n\n respond_to do |wants|\n wants.html # show.html.erb\n wants.xml { render :xml => @$1 }\n end\n end${3}\nsnippet defupdate\n def update\n @${1:model_class_name} = ${2:ModelClassName}.find(params[:id])\n\n respond_to do |wants|\n if @$1.update_attributes(params[:$1])\n flash[:notice] = \'$2 was successfully updated.\'\n wants.html { redirect_to(@$1) }\n wants.xml { head :ok }\n else\n wants.html { render :action => "edit" }\n wants.xml { render :xml => @$1.errors, :status => :unprocessable_entity }\n end\n end\n end${3}\nsnippet flash\n flash[:${1:notice}] = "${2}"\nsnippet habtm\n has_and_belongs_to_many :${1:object}, :join_table => "${2:table_name}", :foreign_key => "${3}_id"${4}\nsnippet hm\n has_many :${1:object}\nsnippet hmd\n has_many :${1:other}s, :class_name => "${2:$1}", :foreign_key => "${3:$1}_id", :dependent => :destroy${4}\nsnippet hmt\n has_many :${1:object}, :through => :${2:object}\nsnippet ho\n has_one :${1:object}\nsnippet i18\n I18n.t(\'${1:type.key}\')${2}\nsnippet ist\n <%= image_submit_tag("${1:agree.png}", :id => "${2:id}"${3} %>\nsnippet log\n Rails.logger.${1:debug} ${2}\nsnippet log2\n RAILS_DEFAULT_LOGGER.${1:debug} ${2}\nsnippet logd\n logger.debug { "${1:message}" }${2}\nsnippet loge\n logger.error { "${1:message}" }${2}\nsnippet logf\n logger.fatal { "${1:message}" }${2}\nsnippet logi\n logger.info { "${1:message}" }${2}\nsnippet logw\n logger.warn { "${1:message}" }${2}\nsnippet mapc\n ${1:map}.${2:connect} \'${3:controller/:action/:id}\'\nsnippet mapca\n ${1:map}.catch_all "*${2:anything}", :controller => "${3:default}", :action => "${4:error}"${5}\nsnippet mapr\n ${1:map}.resource :${2:resource}\nsnippet maprs\n ${1:map}.resources :${2:resource}\nsnippet mapwo\n ${1:map}.with_options :${2:controller} => \'${3:thing}\' do |$3|\n ${4}\n end\nsnippet mbs\n before_save :${1:method}\nsnippet mcht\n change_table :${1:table_name} do |t|\n ${2}\n end\nsnippet mp\n map(&:${1:id})\nsnippet mrw\n mattr_accessor :${1:attr_names}\nsnippet oa\n order("${1:field}")\nsnippet od\n order("${1:field} DESC")\nsnippet pa\n params[:${1:id}]${2}\nsnippet ra\n render :action => "${1:action}"\nsnippet ral\n render :action => "${1:action}", :layout => "${2:layoutname}"\nsnippet rest\n respond_to do |wants|\n wants.${1:html} { ${2} }\n end\nsnippet rf\n render :file => "${1:filepath}"\nsnippet rfu\n render :file => "${1:filepath}", :use_full_path => ${2:false}\nsnippet ri\n render :inline => "${1:<%= \'hello\' %>}"\nsnippet ril\n render :inline => "${1:<%= \'hello\' %>}", :locals => { ${2::name} => "${3:value}"${4} }\nsnippet rit\n render :inline => "${1:<%= \'hello\' %>}", :type => ${2::rxml}\nsnippet rjson\n render :json => ${1:text to render}\nsnippet rl\n render :layout => "${1:layoutname}"\nsnippet rn\n render :nothing => ${1:true}\nsnippet rns\n render :nothing => ${1:true}, :status => ${2:401}\nsnippet rp\n render :partial => "${1:item}"\nsnippet rpc\n render :partial => "${1:item}", :collection => ${2:@$1s}\nsnippet rpl\n render :partial => "${1:item}", :locals => { :${2:$1} => ${3:@$1}\nsnippet rpo\n render :partial => "${1:item}", :object => ${2:@$1}\nsnippet rps\n render :partial => "${1:item}", :status => ${2:500}\nsnippet rt\n render :text => "${1:text to render}"\nsnippet rtl\n render :text => "${1:text to render}", :layout => "${2:layoutname}"\nsnippet rtlt\n render :text => "${1:text to render}", :layout => ${2:true}\nsnippet rts\n render :text => "${1:text to render}", :status => ${2:401}\nsnippet ru\n render :update do |${1:page}|\n $1.${2}\n end\nsnippet rxml\n render :xml => ${1:text to render}\nsnippet sc\n scope :${1:name}, :where(:@${2:field} => ${3:value})\nsnippet sl\n scope :${1:name}, lambda do |${2:value}|\n where("${3:field = ?}", ${4:bind var})\n end\nsnippet sha1\n Digest::SHA1.hexdigest(${1:string})\nsnippet sweeper\n class ${1:ModelClassName}Sweeper < ActionController::Caching::Sweeper\n observe $1\n\n def after_save(${2:model_class_name})\n expire_cache($2)\n end\n\n def after_destroy($2)\n expire_cache($2)\n end\n\n def expire_cache($2)\n expire_page\n end\n end\nsnippet tcb\n t.boolean :${1:title}\n ${2}\nsnippet tcbi\n t.binary :${1:title}, :limit => ${2:2}.megabytes\n ${3}\nsnippet tcd\n t.decimal :${1:title}, :precision => ${2:10}, :scale => ${3:2}\n ${4}\nsnippet tcda\n t.date :${1:title}\n ${2}\nsnippet tcdt\n t.datetime :${1:title}\n ${2}\nsnippet tcf\n t.float :${1:title}\n ${2}\nsnippet tch\n t.change :${1:name}, :${2:string}, :${3:limit} => ${4:80}\n ${5}\nsnippet tci\n t.integer :${1:title}\n ${2}\nsnippet tcl\n t.integer :lock_version, :null => false, :default => 0\n ${1}\nsnippet tcr\n t.references :${1:taggable}, :polymorphic => { :default => \'${2:Photo}\' }\n ${3}\nsnippet tcs\n t.string :${1:title}\n ${2}\nsnippet tct\n t.text :${1:title}\n ${2}\nsnippet tcti\n t.time :${1:title}\n ${2}\nsnippet tcts\n t.timestamp :${1:title}\n ${2}\nsnippet tctss\n t.timestamps\n ${1}\nsnippet va\n validates_associated :${1:attribute}\nsnippet vao\n validates_acceptance_of :${1:terms}\nsnippet vc\n validates_confirmation_of :${1:attribute}\nsnippet ve\n validates_exclusion_of :${1:attribute}, :in => ${2:%w( mov avi )}\nsnippet vf\n validates_format_of :${1:attribute}, :with => /${2:regex}/\nsnippet vi\n validates_inclusion_of :${1:attribute}, :in => %w(${2: mov avi })\nsnippet vl\n validates_length_of :${1:attribute}, :within => ${2:3}..${3:20}\nsnippet vn\n validates_numericality_of :${1:attribute}\nsnippet vpo\n validates_presence_of :${1:attribute}\nsnippet vu\n validates_uniqueness_of :${1:attribute}\nsnippet wants\n wants.${1:js|xml|html} { ${2} }\nsnippet wc\n where(${1:"conditions"}${2:, bind_var})\nsnippet wh\n where(${1:field} => ${2:value})\nsnippet xdelete\n xhr :delete, :${1:destroy}, :id => ${2:1}${3}\nsnippet xget\n xhr :get, :${1:show}, :id => ${2:1}${3}\nsnippet xpost\n xhr :post, :${1:create}, :${2:object} => { ${3} }\nsnippet xput\n xhr :put, :${1:update}, :id => ${2:1}, :${3:object} => { ${4} }${5}\nsnippet test\n test "should ${1:do something}" do\n ${2}\n end\n#migrations\nsnippet mac\n add_column :${1:table_name}, :${2:column_name}, :${3:data_type}\nsnippet mrc\n remove_column :${1:table_name}, :${2:column_name}\nsnippet mrnc\n rename_column :${1:table_name}, :${2:old_column_name}, :${3:new_column_name}\nsnippet mcc\n change_column :${1:table}, :${2:column}, :${3:type}\nsnippet mccc\n t.column :${1:title}, :${2:string}\nsnippet mct\n create_table :${1:table_name} do |t|\n t.column :${2:name}, :${3:type}\n end\nsnippet migration\n class ${1:class_name} < ActiveRecord::Migration\n def self.up\n ${2}\n end\n\n def self.down\n end\n end\n\nsnippet trc\n t.remove :${1:column}\nsnippet tre\n t.rename :${1:old_column_name}, :${2:new_column_name}\n ${3}\nsnippet tref\n t.references :${1:model}\n\n#rspec\nsnippet it\n it "${1:spec_name}" do\n ${2}\n end\nsnippet itp\n it "${1:spec_name}"\n ${2}\nsnippet desc\n describe ${1:class_name} do\n ${2}\n end\nsnippet cont\n context "${1:message}" do\n ${2}\n end\nsnippet bef\n before :${1:each} do\n ${2}\n end\nsnippet aft\n after :${1:each} do\n ${2}\n end\n',t.scope="ruby"}) \ No newline at end of file +ace.define("ace/snippets/ruby",["require","exports","module"],function(e,t,n){t.snippetText='########################################\n# Ruby snippets - for Rails, see below #\n########################################\n\n# encoding for Ruby 1.9\nsnippet enc\n # encoding: utf-8\n\n# #!/usr/bin/env ruby\nsnippet #!\n #!/usr/bin/env ruby\n # encoding: utf-8\n\n# New Block\nsnippet =b\n =begin rdoc\n ${1}\n =end\nsnippet y\n :yields: ${1:arguments}\nsnippet rb\n #!/usr/bin/env ruby -wKU\nsnippet beg\n begin\n ${3}\n rescue ${1:Exception} => ${2:e}\n end\n\nsnippet req require\n require "${1}"${2}\nsnippet #\n # =>\nsnippet end\n __END__\nsnippet case\n case ${1:object}\n when ${2:condition}\n ${3}\n end\nsnippet when\n when ${1:condition}\n ${2}\nsnippet def\n def ${1:method_name}\n ${2}\n end\nsnippet deft\n def test_${1:case_name}\n ${2}\n end\nsnippet if\n if ${1:condition}\n ${2}\n end\nsnippet ife\n if ${1:condition}\n ${2}\n else\n ${3}\n end\nsnippet elsif\n elsif ${1:condition}\n ${2}\nsnippet unless\n unless ${1:condition}\n ${2}\n end\nsnippet while\n while ${1:condition}\n ${2}\n end\nsnippet for\n for ${1:e} in ${2:c}\n ${3}\n end\nsnippet until\n until ${1:condition}\n ${2}\n end\nsnippet cla class .. end\n class ${1:`substitute(Filename(), \'\\(_\\|^\\)\\(.\\)\', \'\\u\\2\', \'g\')`}\n ${2}\n end\nsnippet cla class .. initialize .. end\n class ${1:`substitute(Filename(), \'\\(_\\|^\\)\\(.\\)\', \'\\u\\2\', \'g\')`}\n def initialize(${2:args})\n ${3}\n end\n end\nsnippet cla class .. < ParentClass .. initialize .. end\n class ${1:`substitute(Filename(), \'\\(_\\|^\\)\\(.\\)\', \'\\u\\2\', \'g\')`} < ${2:ParentClass}\n def initialize(${3:args})\n ${4}\n end\n end\nsnippet cla ClassName = Struct .. do .. end\n ${1:`substitute(Filename(), \'\\(_\\|^\\)\\(.\\)\', \'\\u\\2\', \'g\')`} = Struct.new(:${2:attr_names}) do\n def ${3:method_name}\n ${4}\n end\n end\nsnippet cla class BlankSlate .. initialize .. end\n class ${1:BlankSlate}\n instance_methods.each { |meth| undef_method(meth) unless meth =~ /\\A__/ }\n end\nsnippet cla class << self .. end\n class << ${1:self}\n ${2}\n end\n# class .. < DelegateClass .. initialize .. end\nsnippet cla-\n class ${1:`substitute(Filename(), \'\\(_\\|^\\)\\(.\\)\', \'\\u\\2\', \'g\')`} < DelegateClass(${2:ParentClass})\n def initialize(${3:args})\n super(${4:del_obj})\n\n ${5}\n end\n end\nsnippet mod module .. end\n module ${1:`substitute(Filename(), \'\\(_\\|^\\)\\(.\\)\', \'\\u\\2\', \'g\')`}\n ${2}\n end\nsnippet mod module .. module_function .. end\n module ${1:`substitute(Filename(), \'\\(_\\|^\\)\\(.\\)\', \'\\u\\2\', \'g\')`}\n module_function\n\n ${2}\n end\nsnippet mod module .. ClassMethods .. end\n module ${1:`substitute(Filename(), \'\\(_\\|^\\)\\(.\\)\', \'\\u\\2\', \'g\')`}\n module ClassMethods\n ${2}\n end\n\n module InstanceMethods\n\n end\n\n def self.included(receiver)\n receiver.extend ClassMethods\n receiver.send :include, InstanceMethods\n end\n end\n# attr_reader\nsnippet r\n attr_reader :${1:attr_names}\n# attr_writer\nsnippet w\n attr_writer :${1:attr_names}\n# attr_accessor\nsnippet rw\n attr_accessor :${1:attr_names}\nsnippet atp\n attr_protected :${1:attr_names}\nsnippet ata\n attr_accessible :${1:attr_names}\n# include Enumerable\nsnippet Enum\n include Enumerable\n\n def each(&block)\n ${1}\n end\n# include Comparable\nsnippet Comp\n include Comparable\n\n def <=>(other)\n ${1}\n end\n# extend Forwardable\nsnippet Forw-\n extend Forwardable\n# def self\nsnippet defs\n def self.${1:class_method_name}\n ${2}\n end\n# def method_missing\nsnippet defmm\n def method_missing(meth, *args, &blk)\n ${1}\n end\nsnippet defd\n def_delegator :${1:@del_obj}, :${2:del_meth}, :${3:new_name}\nsnippet defds\n def_delegators :${1:@del_obj}, :${2:del_methods}\nsnippet am\n alias_method :${1:new_name}, :${2:old_name}\nsnippet app\n if __FILE__ == $PROGRAM_NAME\n ${1}\n end\n# usage_if()\nsnippet usai\n if ARGV.${1}\n abort "Usage: #{$PROGRAM_NAME} ${2:ARGS_GO_HERE}"${3}\n end\n# usage_unless()\nsnippet usau\n unless ARGV.${1}\n abort "Usage: #{$PROGRAM_NAME} ${2:ARGS_GO_HERE}"${3}\n end\nsnippet array\n Array.new(${1:10}) { |${2:i}| ${3} }\nsnippet hash\n Hash.new { |${1:hash}, ${2:key}| $1[$2] = ${3} }\nsnippet file File.foreach() { |line| .. }\n File.foreach(${1:"path/to/file"}) { |${2:line}| ${3} }\nsnippet file File.read()\n File.read(${1:"path/to/file"})${2}\nsnippet Dir Dir.global() { |file| .. }\n Dir.glob(${1:"dir/glob/*"}) { |${2:file}| ${3} }\nsnippet Dir Dir[".."]\n Dir[${1:"glob/**/*.rb"}]${2}\nsnippet dir\n Filename.dirname(__FILE__)\nsnippet deli\n delete_if { |${1:e}| ${2} }\nsnippet fil\n fill(${1:range}) { |${2:i}| ${3} }\n# flatten_once()\nsnippet flao\n inject(Array.new) { |${1:arr}, ${2:a}| $1.push(*$2)}${3}\nsnippet zip\n zip(${1:enums}) { |${2:row}| ${3} }\n# downto(0) { |n| .. }\nsnippet dow\n downto(${1:0}) { |${2:n}| ${3} }\nsnippet ste\n step(${1:2}) { |${2:n}| ${3} }\nsnippet tim\n times { |${1:n}| ${2} }\nsnippet upt\n upto(${1:1.0/0.0}) { |${2:n}| ${3} }\nsnippet loo\n loop { ${1} }\nsnippet ea\n each { |${1:e}| ${2} }\nsnippet ead\n each do |${1:e}|\n ${2}\n end\nsnippet eab\n each_byte { |${1:byte}| ${2} }\nsnippet eac- each_char { |chr| .. }\n each_char { |${1:chr}| ${2} }\nsnippet eac- each_cons(..) { |group| .. }\n each_cons(${1:2}) { |${2:group}| ${3} }\nsnippet eai\n each_index { |${1:i}| ${2} }\nsnippet eaid\n each_index do |${1:i}|\n ${2}\n end\nsnippet eak\n each_key { |${1:key}| ${2} }\nsnippet eakd\n each_key do |${1:key}|\n ${2}\n end\nsnippet eal\n each_line { |${1:line}| ${2} }\nsnippet eald\n each_line do |${1:line}|\n ${2}\n end\nsnippet eap\n each_pair { |${1:name}, ${2:val}| ${3} }\nsnippet eapd\n each_pair do |${1:name}, ${2:val}|\n ${3}\n end\nsnippet eas-\n each_slice(${1:2}) { |${2:group}| ${3} }\nsnippet easd-\n each_slice(${1:2}) do |${2:group}|\n ${3}\n end\nsnippet eav\n each_value { |${1:val}| ${2} }\nsnippet eavd\n each_value do |${1:val}|\n ${2}\n end\nsnippet eawi\n each_with_index { |${1:e}, ${2:i}| ${3} }\nsnippet eawid\n each_with_index do |${1:e},${2:i}|\n ${3}\n end\nsnippet reve\n reverse_each { |${1:e}| ${2} }\nsnippet reved\n reverse_each do |${1:e}|\n ${2}\n end\nsnippet inj\n inject(${1:init}) { |${2:mem}, ${3:var}| ${4} }\nsnippet injd\n inject(${1:init}) do |${2:mem}, ${3:var}|\n ${4}\n end\nsnippet map\n map { |${1:e}| ${2} }\nsnippet mapd\n map do |${1:e}|\n ${2}\n end\nsnippet mapwi-\n enum_with_index.map { |${1:e}, ${2:i}| ${3} }\nsnippet sor\n sort { |a, b| ${1} }\nsnippet sorb\n sort_by { |${1:e}| ${2} }\nsnippet ran\n sort_by { rand }\nsnippet all\n all? { |${1:e}| ${2} }\nsnippet any\n any? { |${1:e}| ${2} }\nsnippet cl\n classify { |${1:e}| ${2} }\nsnippet col\n collect { |${1:e}| ${2} }\nsnippet cold\n collect do |${1:e}|\n ${2}\n end\nsnippet det\n detect { |${1:e}| ${2} }\nsnippet detd\n detect do |${1:e}|\n ${2}\n end\nsnippet fet\n fetch(${1:name}) { |${2:key}| ${3} }\nsnippet fin\n find { |${1:e}| ${2} }\nsnippet find\n find do |${1:e}|\n ${2}\n end\nsnippet fina\n find_all { |${1:e}| ${2} }\nsnippet finad\n find_all do |${1:e}|\n ${2}\n end\nsnippet gre\n grep(${1:/pattern/}) { |${2:match}| ${3} }\nsnippet sub\n ${1:g}sub(${2:/pattern/}) { |${3:match}| ${4} }\nsnippet sca\n scan(${1:/pattern/}) { |${2:match}| ${3} }\nsnippet scad\n scan(${1:/pattern/}) do |${2:match}|\n ${3}\n end\nsnippet max\n max { |a, b| ${1} }\nsnippet min\n min { |a, b| ${1} }\nsnippet par\n partition { |${1:e}| ${2} }\nsnippet pard\n partition do |${1:e}|\n ${2}\n end\nsnippet rej\n reject { |${1:e}| ${2} }\nsnippet rejd\n reject do |${1:e}|\n ${2}\n end\nsnippet sel\n select { |${1:e}| ${2} }\nsnippet seld\n select do |${1:e}|\n ${2}\n end\nsnippet lam\n lambda { |${1:args}| ${2} }\nsnippet doo\n do\n ${1}\n end\nsnippet dov\n do |${1:variable}|\n ${2}\n end\nsnippet :\n :${1:key} => ${2:"value"}${3}\nsnippet ope\n open(${1:"path/or/url/or/pipe"}, "${2:w}") { |${3:io}| ${4} }\n# path_from_here()\nsnippet fpath\n File.join(File.dirname(__FILE__), *%2[${1:rel path here}])${2}\n# unix_filter {}\nsnippet unif\n ARGF.each_line${1} do |${2:line}|\n ${3}\n end\n# option_parse {}\nsnippet optp\n require "optparse"\n\n options = {${1:default => "args"}}\n\n ARGV.options do |opts|\n opts.banner = "Usage: #{File.basename($PROGRAM_NAME)}\nsnippet opt\n opts.on( "-${1:o}", "--${2:long-option-name}", ${3:String},\n "${4:Option description.}") do |${5:opt}|\n ${6}\n end\nsnippet tc\n require "test/unit"\n\n require "${1:library_file_name}"\n\n class Test${2:$1} < Test::Unit::TestCase\n def test_${3:case_name}\n ${4}\n end\n end\nsnippet ts\n require "test/unit"\n\n require "tc_${1:test_case_file}"\n require "tc_${2:test_case_file}"${3}\nsnippet as\n assert ${1:test}, "${2:Failure message.}"${3}\nsnippet ase\n assert_equal ${1:expected}, ${2:actual}${3}\nsnippet asne\n assert_not_equal ${1:unexpected}, ${2:actual}${3}\nsnippet asid\n assert_in_delta ${1:expected_float}, ${2:actual_float}, ${3:2 ** -20}${4}\nsnippet asio\n assert_instance_of ${1:ExpectedClass}, ${2:actual_instance}${3}\nsnippet asko\n assert_kind_of ${1:ExpectedKind}, ${2:actual_instance}${3}\nsnippet asn\n assert_nil ${1:instance}${2}\nsnippet asnn\n assert_not_nil ${1:instance}${2}\nsnippet asm\n assert_match /${1:expected_pattern}/, ${2:actual_string}${3}\nsnippet asnm\n assert_no_match /${1:unexpected_pattern}/, ${2:actual_string}${3}\nsnippet aso\n assert_operator ${1:left}, :${2:operator}, ${3:right}${4}\nsnippet asr\n assert_raise ${1:Exception} { ${2} }\nsnippet asrd\n assert_raise ${1:Exception} do\n ${2}\n end\nsnippet asnr\n assert_nothing_raised ${1:Exception} { ${2} }\nsnippet asnrd\n assert_nothing_raised ${1:Exception} do\n ${2}\n end\nsnippet asrt\n assert_respond_to ${1:object}, :${2:method}${3}\nsnippet ass assert_same(..)\n assert_same ${1:expected}, ${2:actual}${3}\nsnippet ass assert_send(..)\n assert_send [${1:object}, :${2:message}, ${3:args}]${4}\nsnippet asns\n assert_not_same ${1:unexpected}, ${2:actual}${3}\nsnippet ast\n assert_throws :${1:expected} { ${2} }\nsnippet astd\n assert_throws :${1:expected} do\n ${2}\n end\nsnippet asnt\n assert_nothing_thrown { ${1} }\nsnippet asntd\n assert_nothing_thrown do\n ${1}\n end\nsnippet fl\n flunk "${1:Failure message.}"${2}\n# Benchmark.bmbm do .. end\nsnippet bm-\n TESTS = ${1:10_000}\n Benchmark.bmbm do |results|\n ${2}\n end\nsnippet rep\n results.report("${1:name}:") { TESTS.times { ${2} }}\n# Marshal.dump(.., file)\nsnippet Md\n File.open(${1:"path/to/file.dump"}, "wb") { |${2:file}| Marshal.dump(${3:obj}, $2) }${4}\n# Mashal.load(obj)\nsnippet Ml\n File.open(${1:"path/to/file.dump"}, "rb") { |${2:file}| Marshal.load($2) }${3}\n# deep_copy(..)\nsnippet deec\n Marshal.load(Marshal.dump(${1:obj_to_copy}))${2}\nsnippet Pn-\n PStore.new(${1:"file_name.pstore"})${2}\nsnippet tra\n transaction(${1:true}) { ${2} }\n# xmlread(..)\nsnippet xml-\n REXML::Document.new(File.read(${1:"path/to/file"}))${2}\n# xpath(..) { .. }\nsnippet xpa\n elements.each(${1:"//Xpath"}) do |${2:node}|\n ${3}\n end\n# class_from_name()\nsnippet clafn\n split("::").inject(Object) { |par, const| par.const_get(const) }\n# singleton_class()\nsnippet sinc\n class << self; self end\nsnippet nam\n namespace :${1:`Filename()`} do\n ${2}\n end\nsnippet tas\n desc "${1:Task description}"\n schedule :${2:task_name => [:dependent, :tasks]} do\n ${3}\n end\n# block\nsnippet b\n { |${1:var}| ${2} }\nsnippet begin\n begin\n raise \'A test exception.\'\n rescue Exception => e\n puts e.message\n puts e.backtrace.inspect\n else\n # other exception\n ensure\n # always executed\n end\n\n#debugging\nsnippet debug\n require \'ruby-debug\'; debugger; true;\nsnippet pry\n require \'pry\'; binding.pry\n\n#############################################\n# Rails snippets - for pure Ruby, see above #\n#############################################\nsnippet art\n assert_redirected_to ${1::action => "${2:index}"}\nsnippet artnp\n assert_redirected_to ${1:parent}_${2:child}_path(${3:@$1}, ${4:@$2})\nsnippet artnpp\n assert_redirected_to ${1:parent}_${2:child}_path(${3:@$1})\nsnippet artp\n assert_redirected_to ${1:model}_path(${2:@$1})\nsnippet artpp\n assert_redirected_to ${1:model}s_path\nsnippet asd\n assert_difference "${1:Model}.${2:count}", $1 do\n ${3}\n end\nsnippet asnd\n assert_no_difference "${1:Model}.${2:count}" do\n ${3}\n end\nsnippet asre\n assert_response :${1:success}, @response.body${2}\nsnippet asrj\n assert_rjs :${1:replace}, "${2:dom id}"\nsnippet ass assert_select(..)\n assert_select \'${1:path}\', :${2:text} => \'${3:inner_html\' ${4:do}\nsnippet bf\n before_filter :${1:method}\nsnippet bt\n belongs_to :${1:association}\nsnippet crw\n cattr_accessor :${1:attr_names}\nsnippet defcreate\n def create\n @${1:model_class_name} = ${2:ModelClassName}.new(params[:$1])\n\n respond_to do |wants|\n if @$1.save\n flash[:notice] = \'$2 was successfully created.\'\n wants.html { redirect_to(@$1) }\n wants.xml { render :xml => @$1, :status => :created, :location => @$1 }\n else\n wants.html { render :action => "new" }\n wants.xml { render :xml => @$1.errors, :status => :unprocessable_entity }\n end\n end\n end${3}\nsnippet defdestroy\n def destroy\n @${1:model_class_name} = ${2:ModelClassName}.find(params[:id])\n @$1.destroy\n\n respond_to do |wants|\n wants.html { redirect_to($1s_url) }\n wants.xml { head :ok }\n end\n end${3}\nsnippet defedit\n def edit\n @${1:model_class_name} = ${2:ModelClassName}.find(params[:id])\n end\nsnippet defindex\n def index\n @${1:model_class_name} = ${2:ModelClassName}.all\n\n respond_to do |wants|\n wants.html # index.html.erb\n wants.xml { render :xml => @$1s }\n end\n end${3}\nsnippet defnew\n def new\n @${1:model_class_name} = ${2:ModelClassName}.new\n\n respond_to do |wants|\n wants.html # new.html.erb\n wants.xml { render :xml => @$1 }\n end\n end${3}\nsnippet defshow\n def show\n @${1:model_class_name} = ${2:ModelClassName}.find(params[:id])\n\n respond_to do |wants|\n wants.html # show.html.erb\n wants.xml { render :xml => @$1 }\n end\n end${3}\nsnippet defupdate\n def update\n @${1:model_class_name} = ${2:ModelClassName}.find(params[:id])\n\n respond_to do |wants|\n if @$1.update_attributes(params[:$1])\n flash[:notice] = \'$2 was successfully updated.\'\n wants.html { redirect_to(@$1) }\n wants.xml { head :ok }\n else\n wants.html { render :action => "edit" }\n wants.xml { render :xml => @$1.errors, :status => :unprocessable_entity }\n end\n end\n end${3}\nsnippet flash\n flash[:${1:notice}] = "${2}"\nsnippet habtm\n has_and_belongs_to_many :${1:object}, :join_table => "${2:table_name}", :foreign_key => "${3}_id"${4}\nsnippet hm\n has_many :${1:object}\nsnippet hmd\n has_many :${1:other}s, :class_name => "${2:$1}", :foreign_key => "${3:$1}_id", :dependent => :destroy${4}\nsnippet hmt\n has_many :${1:object}, :through => :${2:object}\nsnippet ho\n has_one :${1:object}\nsnippet i18\n I18n.t(\'${1:type.key}\')${2}\nsnippet ist\n <%= image_submit_tag("${1:agree.png}", :id => "${2:id}"${3} %>\nsnippet log\n Rails.logger.${1:debug} ${2}\nsnippet log2\n RAILS_DEFAULT_LOGGER.${1:debug} ${2}\nsnippet logd\n logger.debug { "${1:message}" }${2}\nsnippet loge\n logger.error { "${1:message}" }${2}\nsnippet logf\n logger.fatal { "${1:message}" }${2}\nsnippet logi\n logger.info { "${1:message}" }${2}\nsnippet logw\n logger.warn { "${1:message}" }${2}\nsnippet mapc\n ${1:map}.${2:connect} \'${3:controller/:action/:id}\'\nsnippet mapca\n ${1:map}.catch_all "*${2:anything}", :controller => "${3:default}", :action => "${4:error}"${5}\nsnippet mapr\n ${1:map}.resource :${2:resource}\nsnippet maprs\n ${1:map}.resources :${2:resource}\nsnippet mapwo\n ${1:map}.with_options :${2:controller} => \'${3:thing}\' do |$3|\n ${4}\n end\nsnippet mbs\n before_save :${1:method}\nsnippet mcht\n change_table :${1:table_name} do |t|\n ${2}\n end\nsnippet mp\n map(&:${1:id})\nsnippet mrw\n mattr_accessor :${1:attr_names}\nsnippet oa\n order("${1:field}")\nsnippet od\n order("${1:field} DESC")\nsnippet pa\n params[:${1:id}]${2}\nsnippet ra\n render :action => "${1:action}"\nsnippet ral\n render :action => "${1:action}", :layout => "${2:layoutname}"\nsnippet rest\n respond_to do |wants|\n wants.${1:html} { ${2} }\n end\nsnippet rf\n render :file => "${1:filepath}"\nsnippet rfu\n render :file => "${1:filepath}", :use_full_path => ${2:false}\nsnippet ri\n render :inline => "${1:<%= \'hello\' %>}"\nsnippet ril\n render :inline => "${1:<%= \'hello\' %>}", :locals => { ${2::name} => "${3:value}"${4} }\nsnippet rit\n render :inline => "${1:<%= \'hello\' %>}", :type => ${2::rxml}\nsnippet rjson\n render :json => ${1:text to render}\nsnippet rl\n render :layout => "${1:layoutname}"\nsnippet rn\n render :nothing => ${1:true}\nsnippet rns\n render :nothing => ${1:true}, :status => ${2:401}\nsnippet rp\n render :partial => "${1:item}"\nsnippet rpc\n render :partial => "${1:item}", :collection => ${2:@$1s}\nsnippet rpl\n render :partial => "${1:item}", :locals => { :${2:$1} => ${3:@$1}\nsnippet rpo\n render :partial => "${1:item}", :object => ${2:@$1}\nsnippet rps\n render :partial => "${1:item}", :status => ${2:500}\nsnippet rt\n render :text => "${1:text to render}"\nsnippet rtl\n render :text => "${1:text to render}", :layout => "${2:layoutname}"\nsnippet rtlt\n render :text => "${1:text to render}", :layout => ${2:true}\nsnippet rts\n render :text => "${1:text to render}", :status => ${2:401}\nsnippet ru\n render :update do |${1:page}|\n $1.${2}\n end\nsnippet rxml\n render :xml => ${1:text to render}\nsnippet sc\n scope :${1:name}, :where(:@${2:field} => ${3:value})\nsnippet sl\n scope :${1:name}, lambda do |${2:value}|\n where("${3:field = ?}", ${4:bind var})\n end\nsnippet sha1\n Digest::SHA1.hexdigest(${1:string})\nsnippet sweeper\n class ${1:ModelClassName}Sweeper < ActionController::Caching::Sweeper\n observe $1\n\n def after_save(${2:model_class_name})\n expire_cache($2)\n end\n\n def after_destroy($2)\n expire_cache($2)\n end\n\n def expire_cache($2)\n expire_page\n end\n end\nsnippet tcb\n t.boolean :${1:title}\n ${2}\nsnippet tcbi\n t.binary :${1:title}, :limit => ${2:2}.megabytes\n ${3}\nsnippet tcd\n t.decimal :${1:title}, :precision => ${2:10}, :scale => ${3:2}\n ${4}\nsnippet tcda\n t.date :${1:title}\n ${2}\nsnippet tcdt\n t.datetime :${1:title}\n ${2}\nsnippet tcf\n t.float :${1:title}\n ${2}\nsnippet tch\n t.change :${1:name}, :${2:string}, :${3:limit} => ${4:80}\n ${5}\nsnippet tci\n t.integer :${1:title}\n ${2}\nsnippet tcl\n t.integer :lock_version, :null => false, :default => 0\n ${1}\nsnippet tcr\n t.references :${1:taggable}, :polymorphic => { :default => \'${2:Photo}\' }\n ${3}\nsnippet tcs\n t.string :${1:title}\n ${2}\nsnippet tct\n t.text :${1:title}\n ${2}\nsnippet tcti\n t.time :${1:title}\n ${2}\nsnippet tcts\n t.timestamp :${1:title}\n ${2}\nsnippet tctss\n t.timestamps\n ${1}\nsnippet va\n validates_associated :${1:attribute}\nsnippet vao\n validates_acceptance_of :${1:terms}\nsnippet vc\n validates_confirmation_of :${1:attribute}\nsnippet ve\n validates_exclusion_of :${1:attribute}, :in => ${2:%w( mov avi )}\nsnippet vf\n validates_format_of :${1:attribute}, :with => /${2:regex}/\nsnippet vi\n validates_inclusion_of :${1:attribute}, :in => %w(${2: mov avi })\nsnippet vl\n validates_length_of :${1:attribute}, :within => ${2:3}..${3:20}\nsnippet vn\n validates_numericality_of :${1:attribute}\nsnippet vpo\n validates_presence_of :${1:attribute}\nsnippet vu\n validates_uniqueness_of :${1:attribute}\nsnippet wants\n wants.${1:js|xml|html} { ${2} }\nsnippet wc\n where(${1:"conditions"}${2:, bind_var})\nsnippet wh\n where(${1:field} => ${2:value})\nsnippet xdelete\n xhr :delete, :${1:destroy}, :id => ${2:1}${3}\nsnippet xget\n xhr :get, :${1:show}, :id => ${2:1}${3}\nsnippet xpost\n xhr :post, :${1:create}, :${2:object} => { ${3} }\nsnippet xput\n xhr :put, :${1:update}, :id => ${2:1}, :${3:object} => { ${4} }${5}\nsnippet test\n test "should ${1:do something}" do\n ${2}\n end\n#migrations\nsnippet mac\n add_column :${1:table_name}, :${2:column_name}, :${3:data_type}\nsnippet mrc\n remove_column :${1:table_name}, :${2:column_name}\nsnippet mrnc\n rename_column :${1:table_name}, :${2:old_column_name}, :${3:new_column_name}\nsnippet mcc\n change_column :${1:table}, :${2:column}, :${3:type}\nsnippet mccc\n t.column :${1:title}, :${2:string}\nsnippet mct\n create_table :${1:table_name} do |t|\n t.column :${2:name}, :${3:type}\n end\nsnippet migration\n class ${1:class_name} < ActiveRecord::Migration\n def self.up\n ${2}\n end\n\n def self.down\n end\n end\n\nsnippet trc\n t.remove :${1:column}\nsnippet tre\n t.rename :${1:old_column_name}, :${2:new_column_name}\n ${3}\nsnippet tref\n t.references :${1:model}\n\n#rspec\nsnippet it\n it "${1:spec_name}" do\n ${2}\n end\nsnippet itp\n it "${1:spec_name}"\n ${2}\nsnippet desc\n describe ${1:class_name} do\n ${2}\n end\nsnippet cont\n context "${1:message}" do\n ${2}\n end\nsnippet bef\n before :${1:each} do\n ${2}\n end\nsnippet aft\n after :${1:each} do\n ${2}\n end\n',t.scope="ruby"}) \ No newline at end of file diff --git a/contact-center/app/src/main/resources/static/js/ace/worker-html.js b/contact-center/app/src/main/resources/static/js/ace/worker-html.js index 9fdd3452..02b13f5b 100644 --- a/contact-center/app/src/main/resources/static/js/ace/worker-html.js +++ b/contact-center/app/src/main/resources/static/js/ace/worker-html.js @@ -1 +1 @@ -"no use strict";(function(e){if(typeof e.window!="undefined"&&e.document)return;e.console=function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:e})},e.console.error=e.console.warn=e.console.log=e.console.trace=e.console,e.window=e,e.ace=e,e.onerror=function(e,t,n,r,i){console.error("Worker "+(i?i.stack:e))},e.normalizeModule=function(t,n){if(n.indexOf("!")!==-1){var r=n.split("!");return e.normalizeModule(t,r[0])+"!"+e.normalizeModule(t,r[1])}if(n.charAt(0)=="."){var i=t.split("/").slice(0,-1).join("/");n=(i?i+"/":"")+n;while(n.indexOf(".")!==-1&&s!=n){var s=n;n=n.replace(/^\.\//,"").replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return n},e.require=function(t,n){n||(n=t,t=null);if(!n.charAt)throw new Error("worker.js require() accepts only (parentId, id) as arguments");n=e.normalizeModule(t,n);var r=e.require.modules[n];if(r)return r.initialized||(r.initialized=!0,r.exports=r.factory().exports),r.exports;var i=n.split("/");if(!e.require.tlns)return console.log("unable to load "+n);i[0]=e.require.tlns[i[0]]||i[0];var s=i.join("/")+".js";return e.require.id=n,importScripts(s),e.require(t,n)},e.require.modules={},e.require.tlns={},e.define=function(t,n,r){arguments.length==2?(r=n,typeof t!="string"&&(n=t,t=e.require.id)):arguments.length==1&&(r=t,n=[],t=e.require.id),n.length||(n=["require","exports","module"]);if(t.indexOf("text!")===0)return;var i=function(n){return e.require(t,n)};e.require.modules[t]={exports:{},factory:function(){var e=this,t=r.apply(this,n.map(function(t){switch(t){case"require":return i;case"exports":return e.exports;case"module":return e;default:return i(t)}}));return t&&(e.exports=t),e}}},e.define.amd={},e.initBaseUrls=function(e){require.tlns=e},e.initSender=function(){var t=e.require("ace/lib/event_emitter").EventEmitter,n=e.require("ace/lib/oop"),r=function(){};return function(){n.implement(this,t),this.callback=function(e,t){postMessage({type:"call",id:t,data:e})},this.emit=function(e,t){postMessage({type:"event",name:e,data:t})}}.call(r.prototype),new r};var t=e.main=null,n=e.sender=null;e.onmessage=function(r){var i=r.data;if(i.command){if(!t[i.command])throw new Error("Unknown command:"+i.command);t[i.command].apply(t,i.args)}else if(i.init){initBaseUrls(i.tlns),require("ace/lib/es5-shim"),n=e.sender=initSender();var s=require(i.module)[i.classname];t=e.main=new s(n)}else i.event&&n&&n._signal(i.event,i.data)}})(this),ace.define("ace/mode/html_worker",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/worker/mirror","ace/mode/html/saxparser"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/lang"),s=e("../worker/mirror").Mirror,o=e("./html/saxparser").SAXParser,u={"expected-doctype-but-got-start-tag":"info","expected-doctype-but-got-chars":"info","non-html-root":"info"},a=t.Worker=function(e){s.call(this,e),this.setTimeout(400),this.context=null};r.inherits(a,s),function(){this.setOptions=function(e){this.context=e.context},this.onUpdate=function(){var e=this.doc.getValue();if(!e)return;var t=new o,n=[],r=function(){};t.contentHandler={startDocument:r,endDocument:r,startElement:r,endElement:r,characters:r},t.errorHandler={error:function(e,t,r){n.push({row:t.line,column:t.column,text:e,type:u[r]||"error"})}},this.context?t.parseFragment(e,this.context):t.parse(e),this.sender.emit("error",n)}}.call(a.prototype)}),ace.define("ace/lib/oop",["require","exports","module"],function(e,t,n){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)}}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,n){t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){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;n0||-1)*Math.floor(Math.abs(e))),e}function o(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function u(e){var t,n,r;if(o(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(o(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(o(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(e){var t=this;if(typeof t!="function")throw new TypeError("Function.prototype.bind called on incompatible "+t);var n=c.call(arguments,1),i=function(){if(this instanceof i){var r=t.apply(this,n.concat(c.call(arguments)));return Object(r)===r?r:this}return t.apply(e,n.concat(c.call(arguments)))};return t.prototype&&(r.prototype=t.prototype,i.prototype=new r,r.prototype=null),i});var a=Function.prototype.call,f=Array.prototype,l=Object.prototype,c=f.slice,h=a.bind(l.toString),p=a.bind(l.hasOwnProperty),d,v,m,g,y;if(y=p(l,"__defineGetter__"))d=a.bind(l.__defineGetter__),v=a.bind(l.__defineSetter__),m=a.bind(l.__lookupGetter__),g=a.bind(l.__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+tu)for(h=f;h--;)this[a+h]=this[u+h];if(s&&e===l)this.length=l,this.push.apply(this,i);else{this.length=l+s;for(h=0;h>>0;if(h(e)!="[object Function]")throw new TypeError;while(++i>>0,i=Array(r),s=arguments[1];if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");for(var o=0;o>>0,i=[],s,o=arguments[1];if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");for(var u=0;u>>0,i=arguments[1];if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");for(var s=0;s>>0,i=arguments[1];if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");for(var s=0;s>>0;if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");if(!r&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var i=0,s;if(arguments.length>=2)s=arguments[1];else do{if(i in n){s=n[i++];break}if(++i>=r)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;i>>0;if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");if(!r&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var i,s=r-1;if(arguments.length>=2)i=arguments[1];else do{if(s in n){i=n[s--];break}if(--s<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do s in this&&(i=e.call(void 0,i,n[s],s,t));while(s--);return i});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(e){var t=E&&h(this)=="[object String]"?this.split(""):F(this),n=t.length>>>0;if(!n)return-1;var r=0;arguments.length>1&&(r=s(arguments[1])),r=r>=0?r:Math.max(0,n+r);for(;r>>0;if(!n)return-1;var r=n-1;arguments.length>1&&(r=Math.min(r,s(arguments[1]))),r=r>=0?r:n-Math.abs(r);for(;r>=0;r--)if(r in t&&e===t[r])return r;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(e){return e.__proto__||(e.constructor?e.constructor.prototype:l)});if(!Object.getOwnPropertyDescriptor){var S="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(e,t){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError(S+e);if(!p(e,t))return;var n,r,i;n={enumerable:!0,configurable:!0};if(y){var s=e.__proto__;e.__proto__=l;var r=m(e,t),i=g(e,t);e.__proto__=s;if(r||i)return r&&(n.get=r),i&&(n.set=i),n}return n.value=e[t],n}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(e){return Object.keys(e)});if(!Object.create){var x;Object.prototype.__proto__===null?x=function(){return{__proto__:null}}:x=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(e,t){var n;if(e===null)n=x();else{if(typeof e!="object")throw new TypeError("typeof prototype["+typeof e+"] != 'object'");var r=function(){};r.prototype=e,n=new r,n.__proto__=e}return t!==void 0&&Object.defineProperties(n,t),n}}if(Object.defineProperty){var T=i({}),N=typeof document=="undefined"||i(document.createElement("div"));if(!T||!N)var C=Object.defineProperty}if(!Object.defineProperty||C){var k="Property description must be an object: ",L="Object.defineProperty called on non-object: ",A="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(e,t,n){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError(L+e);if(typeof n!="object"&&typeof n!="function"||n===null)throw new TypeError(k+n);if(C)try{return C.call(Object,e,t,n)}catch(r){}if(p(n,"value"))if(y&&(m(e,t)||g(e,t))){var i=e.__proto__;e.__proto__=l,delete e[t],e[t]=n.value,e.__proto__=i}else e[t]=n.value;else{if(!y)throw new TypeError(A);p(n,"get")&&d(e,t,n.get),p(n,"set")&&v(e,t,n.set)}return e}}Object.defineProperties||(Object.defineProperties=function(e,t){for(var n in t)p(t,n)&&Object.defineProperty(e,n,t[n]);return e}),Object.seal||(Object.seal=function(e){return e}),Object.freeze||(Object.freeze=function(e){return e});try{Object.freeze(function(){})}catch(O){Object.freeze=function(e){return function(t){return typeof t=="function"?t:e(t)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(e){return e}),Object.isSealed||(Object.isSealed=function(e){return!1}),Object.isFrozen||(Object.isFrozen=function(e){return!1}),Object.isExtensible||(Object.isExtensible=function(e){if(Object(e)===e)throw new TypeError;var t="";while(p(e,t))t+="?";e[t]=!0;var n=p(e,t);return delete e[t],n});if(!Object.keys){var M=!0,_=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],D=_.length;for(var P in{toString:null})M=!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)p(e,t)&&I.push(t);if(M)for(var n=0,r=D;n=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):e.row<0&&(e.row=0),e},this.insert=function(e,t){if(!t||t.length===0)return e;e=this.$clipPosition(e),this.getLength()<=1&&this.$detectNewLine(t);var n=this.$split(t),r=n.splice(0,1)[0],i=n.length==0?null:n.splice(n.length-1,1)[0];return e=this.insertInLine(e,r),i!==null&&(e=this.insertNewLine(e),e=this._insertLines(e.row,n),e=this.insertInLine(e,i||"")),e},this.insertLines=function(e,t){return e>=this.getLength()?this.insert({row:e,column:0},"\n"+t.join("\n")):this._insertLines(Math.max(e,0),t)},this._insertLines=function(e,t){if(t.length==0)return{row:e,column:0};while(t.length>61440){var n=this._insertLines(e,t.slice(0,61440));t=t.slice(61440),e=n.row}var r=[e,0];r.push.apply(r,t),this.$lines.splice.apply(this.$lines,r);var i=new s(e,0,e+t.length,0),o={action:"insertLines",range:i,lines:t};return this._signal("change",{data:o}),i.end},this.insertNewLine=function(e){e=this.$clipPosition(e);var t=this.$lines[e.row]||"";this.$lines[e.row]=t.substring(0,e.column),this.$lines.splice(e.row+1,0,t.substring(e.column,t.length));var n={row:e.row+1,column:0},r={action:"insertText",range:s.fromPoints(e,n),text:this.getNewLineCharacter()};return this._signal("change",{data:r}),n},this.insertInLine=function(e,t){if(t.length==0)return e;var n=this.$lines[e.row]||"";this.$lines[e.row]=n.substring(0,e.column)+t+n.substring(e.column);var r={row:e.row,column:e.column+t.length},i={action:"insertText",range:s.fromPoints(e,r),text:t};return this._signal("change",{data:i}),r},this.remove=function(e){e instanceof s||(e=s.fromPoints(e.start,e.end)),e.start=this.$clipPosition(e.start),e.end=this.$clipPosition(e.end);if(e.isEmpty())return e.start;var t=e.start.row,n=e.end.row;if(e.isMultiLine()){var r=e.start.column==0?t:t+1,i=n-1;e.end.column>0&&this.removeInLine(n,0,e.end.column),i>=r&&this._removeLines(r,i),r!=t&&(this.removeInLine(t,e.start.column,this.getLine(t).length),this.removeNewLine(e.start.row))}else this.removeInLine(t,e.start.column,e.end.column);return e.start},this.removeInLine=function(e,t,n){if(t==n)return;var r=new s(e,t,e,n),i=this.getLine(e),o=i.substring(t,n),u=i.substring(0,t)+i.substring(n,i.length);this.$lines.splice(e,1,u);var a={action:"removeText",range:r,text:o};return this._signal("change",{data:a}),r.start},this.removeLines=function(e,t){return e<0||t>=this.getLength()?this.remove(new s(e,0,t+1,0)):this._removeLines(e,t)},this._removeLines=function(e,t){var n=new s(e,0,t+1,0),r=this.$lines.splice(e,t-e+1),i={action:"removeLines",range:n,nl:this.getNewLineCharacter(),lines:r};return this._signal("change",{data:i}),r},this.removeNewLine=function(e){var t=this.getLine(e),n=this.getLine(e+1),r=new s(e,t.length,e+1,0),i=t+n;this.$lines.splice(e,2,i);var o={action:"removeText",range:r,text:this.getNewLineCharacter()};this._signal("change",{data:o})},this.replace=function(e,t){e instanceof s||(e=s.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);if(t)var n=this.insert(e.start,t);else n=e.start;return n},this.applyDeltas=function(e){for(var t=0;t=0;t--){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="insertText"?this.remove(r):n.action=="removeLines"?this._insertLines(r.start.row,n.lines):n.action=="removeText"&&this.insert(r.start,n.text)}},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i ["+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.rowthis.row)return;if(n.start.row==this.row&&n.start.column>this.column)return;var r=this.row,i=this.column,s=n.start,o=n.end;if(t.action==="insertText")if(s.row===r&&s.column<=i){if(s.column!==i||!this.$insertRight)s.row===o.row?i+=o.column-s.column:(i-=s.column,r+=o.row-s.row)}else s.row!==o.row&&s.row=i?i=s.column:i=Math.max(0,i-(o.column-s.column)):s.row!==o.row&&s.row=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)}),ace.define("ace/mode/html/saxparser",["require","exports","module"],function(e,t,n){var r=e=function(t,n,r){function i(r,o){if(!n[r]){if(!t[r]){var u=typeof e=="function"&&e;if(!o&&u)return u(r,!0);if(s)return s(r,!0);throw new Error("Cannot find module '"+r+"'")}var a=n[r]={exports:{}};t[r][0].call(a.exports,function(e){var n=t[r][1][e];return i(n?n:e)},a,a.exports)}return n[r].exports}var s=typeof e=="function"&&e;for(var o=0;o=0;n--){var r=this.elements[n];if(r.localName===e)return!0;if(t(r))return!1}},l.prototype.push=function(e){this.elements.push(e)},l.prototype.pushHtmlElement=function(e){this.rootNode=e.node,this.push(e)},l.prototype.pushHeadElement=function(e){this.headElement=e.node,this.push(e)},l.prototype.pushBodyElement=function(e){this.bodyElement=e.node,this.push(e)},l.prototype.pop=function(){return this.elements.pop()},l.prototype.remove=function(e){this.elements.splice(this.elements.indexOf(e),1)},l.prototype.popUntilPopped=function(e){var t;do t=this.pop();while(t.localName!=e)},l.prototype.popUntilTableScopeMarker=function(){while(!s(this.top))this.pop()},l.prototype.popUntilTableBodyScopeMarker=function(){while(!o(this.top))this.pop()},l.prototype.popUntilTableRowScopeMarker=function(){while(!u(this.top))this.pop()},l.prototype.item=function(e){return this.elements[e]},l.prototype.contains=function(e){return this.elements.indexOf(e)!==-1},l.prototype.inScope=function(e){return this._inScope(e,r)},l.prototype.inListItemScope=function(e){return this._inScope(e,i)},l.prototype.inTableScope=function(e){return this._inScope(e,s)},l.prototype.inButtonScope=function(e){return this._inScope(e,a)},l.prototype.inSelectScope=function(e){return this._inScope(e,f)},l.prototype.hasNumberedHeaderElementInScope=function(){for(var e=this.elements.length-1;e>=0;e--){var t=this.elements[e];if(t.isNumberedHeader())return!0;if(r(t))return!1}},l.prototype.furthestBlockForFormattingElement=function(e){var t=null;for(var n=this.elements.length-1;n>=0;n--){var r=this.elements[n];if(r.node===e)return t;r.isSpecial()&&(t=r)}},l.prototype.findIndex=function(e){for(var t=this.elements.length-1;t>=0;t--)if(this.elements[t].localName==e)return t},l.prototype.remove_openElements_until=function(e){var t=!1,n;while(!t)n=this.elements.pop(),t=e(n);return n},Object.defineProperty(l.prototype,"top",{get:function(){return this.elements[this.elements.length-1]}}),Object.defineProperty(l.prototype,"length",{get:function(){return this.elements.length}}),n.ElementStack=l},{}],2:[function(e,t,n){function r(e){return e>="0"&&e<="9"||e>="a"&&e<="z"||e>="A"&&e<="Z"}function i(e){return e>="0"&&e<="9"||e>="a"&&e<="f"||e>="A"&&e<="F"}function s(e){return e>="0"&&e<="9"}var o=e("html5-entities"),u=e("./InputStream").InputStream,a=55232,f={};Object.keys(o).forEach(function(e){for(var t=0;t65535&&v<1114111){var g="";g+=String.fromCharCode(a+(v>>10)),g+=String.fromCharCode(56320+(v&1023)),l=g}else l=String.fromCharCode(v);return h!==";"&&(t._parseError("numeric-entity-without-semicolon"),e.unget(h)),l}return e.unget(c),t._parseError("expected-numeric-entity"),!1}if(h>="a"&&h<="z"||h>="A"&&h<="Z"){var y="";while(f[c]){o[c]&&(y=c);if(h==";")break;h=e.char();if(h===u.EOF)break;c+=h}return y?(l=o[y],h===";"||!n||!r(h)&&h!=="="?(c.length>y.length&&e.unget(c.substring(y.length)),h!==";"&&t._parseError("named-entity-without-semicolon"),l):(e.unget(c),!1)):(t._parseError("expected-named-entity"),e.unget(c),!1)}},l.replaceEntityNumbers=function(e){switch(e){case 0:return 65533;case 19:return 16;case 128:return 8364;case 129:return 129;case 130:return 8218;case 131:return 402;case 132:return 8222;case 133:return 8230;case 134:return 8224;case 135:return 8225;case 136:return 710;case 137:return 8240;case 138:return 352;case 139:return 8249;case 140:return 338;case 141:return 141;case 142:return 381;case 143:return 143;case 144:return 144;case 145:return 8216;case 146:return 8217;case 147:return 8220;case 148:return 8221;case 149:return 8226;case 150:return 8211;case 151:return 8212;case 152:return 732;case 153:return 8482;case 154:return 353;case 155:return 8250;case 156:return 339;case 157:return 157;case 158:return 382;case 159:return 376;default:if(e>=55296&&e<=57343||e>=1114111)return 65533;if(e>=1&&e<=8||e>=14&&e<=31||e>=127&&e<=159||e>=64976&&e<=65007||e==11||e==65534||e==131070||e==3145726||e==196607||e==262142||e==262143||e==327678||e==327679||e==393214||e==393215||e==458750||e==458751||e==524286||e==524287||e==589822||e==589823||e==655358||e==655359||e==720894||e==720895||e==786430||e==786431||e==851966||e==851967||e==917502||e==917503||e==983038||e==983039||e==1048574||e==1048575||e==1114110||e==1114111)return e}},n.EntityParser=l},{"./InputStream":3,"html5-entities":12}],3:[function(e,t,n){function r(){this.data="",this.start=0,this.committed=0,this.eof=!1,this.lastLocation={line:0,column:0}}r.EOF=-1,r.DRAIN=-2,r.prototype={slice:function(){if(this.start>=this.data.length){if(!this.eof)throw r.DRAIN;return r.EOF}return this.data.slice(this.start,this.data.length)},"char":function(){if(!this.eof&&this.start>=this.data.length-1)throw r.DRAIN;return this.start>=this.data.length?r.EOF:this.data[this.start++]},advance:function(e){this.start+=e;if(this.start>=this.data.length){if(!this.eof)throw r.DRAIN;return r.EOF}this.committed>this.data.length/2&&(this.lastLocation=this.location(),this.data=this.data.slice(this.committed),this.start=this.start-this.committed,this.committed=0)},matchWhile:function(e){if(this.eof&&this.start>=this.data.length)return"";var t=new RegExp("^"+e+"+"),n=t.exec(this.slice());if(n){if(!this.eof&&n[0].length==this.data.length-this.start)throw r.DRAIN;return this.advance(n[0].length),n[0]}return""},matchUntil:function(e){var t,n;n=this.slice();if(n===r.EOF)return"";if(t=(new RegExp(e+(this.eof?"|$":""))).exec(n)){var i=this.data.slice(this.start,this.start+t.index);return this.advance(t.index),i.toString()}throw r.DRAIN},append:function(e){this.data+=e},shift:function(e){if(!this.eof&&this.start+e>=this.data.length)throw r.DRAIN;if(this.eof&&this.start>=this.data.length)return r.EOF;var t=this.data.slice(this.start,this.start+e).toString();return this.advance(Math.min(e,this.data.length-this.start)),t},peek:function(e){if(!this.eof&&this.start+e>=this.data.length)throw r.DRAIN;return this.eof&&this.start>=this.data.length?r.EOF:this.data.slice(this.start,Math.min(this.start+e,this.data.length)).toString()},length:function(){return this.data.length-this.start-1},unget:function(e){if(e===r.EOF)return;this.start-=e.length},undo:function(){this.start=this.committed},commit:function(){this.committed=this.start},location:function(){var e=this.lastLocation.line,t=this.lastLocation.column,n=this.data.slice(0,this.committed),r=n.match(/\n/g),i=r?e+r.length:e,s=r?n.length-n.lastIndexOf("\n")-1:t+n.length;return{line:i,column:s}}},n.InputStream=r},{}],4:[function(e,t,n){function r(e,t,n,r){this.localName=t,this.namespaceURI=e,this.attributes=n,this.node=r}function i(e,t){for(var n=0;n-1},r.prototype.isFosterParenting=function(){return this.namespaceURI==="http://www.w3.org/1999/xhtml"?this.localName==="table"||this.localName==="tbody"||this.localName==="tfoot"||this.localName==="thead"||this.localName==="tr":!1},r.prototype.isNumberedHeader=function(){return this.namespaceURI==="http://www.w3.org/1999/xhtml"?this.localName==="h1"||this.localName==="h2"||this.localName==="h3"||this.localName==="h4"||this.localName==="h5"||this.localName==="h6":!1},r.prototype.isForeign=function(){return this.namespaceURI!="http://www.w3.org/1999/xhtml"},r.prototype.isHtmlIntegrationPoint=function(){if(this.namespaceURI==="http://www.w3.org/1998/Math/MathML"){if(this.localName!=="annotation-xml")return!1;var e=i(this,"encoding");return e?(e=e.toLowerCase(),e==="text/html"||e==="application/xhtml+xml"):!1}return this.namespaceURI==="http://www.w3.org/2000/svg"?this.localName==="foreignObject"||this.localName==="desc"||this.localName==="title":!1},r.prototype.isMathMLTextIntegrationPoint=function(){return this.namespaceURI==="http://www.w3.org/1998/Math/MathML"?this.localName==="mi"||this.localName==="mo"||this.localName==="mn"||this.localName==="ms"||this.localName==="mtext":!1},n.StackItem=r},{}],5:[function(e,t,n){function r(e){return e===" "||e==="\n"||e===" "||e==="\r"||e==="\f"}function i(e){return e>="A"&&e<="Z"||e>="a"&&e<="z"}function s(e){this._tokenHandler=e,this._state=s.DATA,this._inputStream=new o,this._currentToken=null,this._temporaryBuffer="",this._additionalAllowedCharacter=""}var o=e("./InputStream").InputStream,u=e("./EntityParser").EntityParser;s.prototype._parseError=function(e,t){this._tokenHandler.parseError(e,t)},s.prototype._emitToken=function(e){if(e.type==="StartTag")for(var t=1;t"&&n?(wt._currentToken={type:"EndTag",name:this._temporaryBuffer,data:[],selfClosing:!1},wt._emitCurrentToken(),wt.setState(t)):i(s)?(this._temporaryBuffer+=s,e.commit()):(wt._emitToken({type:"Characters",data:""&&n?(wt._currentToken={type:"EndTag",name:this._temporaryBuffer,data:[],selfClosing:!1},wt._emitCurrentToken(),wt.setState(t)):i(s)?(this._temporaryBuffer+=s,e.commit()):(wt._emitToken({type:"Characters",data:""&&t?(wt._currentToken={type:"EndTag",name:"script",data:[],selfClosing:!1},wt._emitCurrentToken()):i(n)?(this._temporaryBuffer+=n,e.commit()):(wt._emitToken({type:"Characters",data:""?(wt._emitToken({type:"Characters",data:">"}),wt.setState(h)):n==="\0"?(wt._parseError("invalid-codepoint"),wt._emitToken({type:"Characters",data:"�"}),wt.setState(T)):(wt._emitToken({type:"Characters",data:n}),wt.setState(T)),!0}function k(e){var t=e.char();return t==="/"?(this._temporaryBuffer="",wt.setState(L)):i(t)?(wt._emitToken({type:"Characters",data:"<"+t}),this._temporaryBuffer=t,wt.setState(O)):(wt._emitToken({type:"Characters",data:"<"}),e.unget(t),wt.setState(T)),!0}function L(e){var t=e.char();return i(t)?(this._temporaryBuffer=t,wt.setState(A)):(wt._emitToken({type:"Characters",data:""&&n?(wt._currentToken={type:"EndTag",name:"script",data:[],selfClosing:!1},wt.setState(t),wt._emitCurrentToken()):i(s)?(this._temporaryBuffer+=s,e.commit()):(wt._emitToken({type:"Characters",data:""?(wt._emitToken({type:"Characters",data:t}),this._temporaryBuffer.toLowerCase()==="script"?wt.setState(M):wt.setState(T)):i(t)?(wt._emitToken({type:"Characters",data:t}),this._temporaryBuffer+=t,e.commit()):(e.unget(t),wt.setState(T)),!0}function M(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-script"),e.unget(n),wt.setState(t)):n==="-"?(wt._emitToken({type:"Characters",data:"-"}),wt.setState(_)):n==="<"?(wt._emitToken({type:"Characters",data:"<"}),wt.setState(P)):n==="\0"?(wt._parseError("invalid-codepoint"),wt._emitToken({type:"Characters",data:"�"}),e.commit()):(wt._emitToken({type:"Characters",data:n}),e.commit()),!0}function _(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-script"),e.unget(n),wt.setState(t)):n==="-"?(wt._emitToken({type:"Characters",data:"-"}),wt.setState(D)):n==="<"?(wt._emitToken({type:"Characters",data:"<"}),wt.setState(P)):n==="\0"?(wt._parseError("invalid-codepoint"),wt._emitToken({type:"Characters",data:"�"}),wt.setState(M)):(wt._emitToken({type:"Characters",data:n}),wt.setState(M)),!0}function D(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-script"),e.unget(n),wt.setState(t)):n==="-"?(wt._emitToken({type:"Characters",data:"-"}),e.commit()):n==="<"?(wt._emitToken({type:"Characters",data:"<"}),wt.setState(P)):n===">"?(wt._emitToken({type:"Characters",data:">"}),wt.setState(h)):n==="\0"?(wt._parseError("invalid-codepoint"),wt._emitToken({type:"Characters",data:"�"}),wt.setState(M)):(wt._emitToken({type:"Characters",data:n}),wt.setState(M)),!0}function P(e){var t=e.char();return t==="/"?(wt._emitToken({type:"Characters",data:"/"}),this._temporaryBuffer="",wt.setState(H)):(e.unget(t),wt.setState(M)),!0}function H(e){var t=e.char();return r(t)||t==="/"||t===">"?(wt._emitToken({type:"Characters",data:t}),this._temporaryBuffer.toLowerCase()==="script"?wt.setState(T):wt.setState(M)):i(t)?(wt._emitToken({type:"Characters",data:t}),this._temporaryBuffer+=t,e.commit()):(e.unget(t),wt.setState(M)),!0}function B(e){var n=e.char();return n===o.EOF?(wt._parseError("bare-less-than-sign-at-eof"),wt._emitToken({type:"Characters",data:"<"}),e.unget(n),wt.setState(t)):i(n)?(wt._currentToken={type:"StartTag",name:n.toLowerCase(),data:[]},wt.setState(F)):n==="!"?wt.setState(Q):n==="/"?wt.setState(j):n===">"?(wt._parseError("expected-tag-name-but-got-right-bracket"),wt._emitToken({type:"Characters",data:"<>"}),wt.setState(t)):n==="?"?(wt._parseError("expected-tag-name-but-got-question-mark"),e.unget(n),wt.setState(K)):(wt._parseError("expected-tag-name"),wt._emitToken({type:"Characters",data:"<"}),e.unget(n),wt.setState(t)),!0}function j(e){var n=e.char();return n===o.EOF?(wt._parseError("expected-closing-tag-but-got-eof"),wt._emitToken({type:"Characters",data:""?(wt._parseError("expected-closing-tag-but-got-right-bracket"),wt.setState(t)):(wt._parseError("expected-closing-tag-but-got-char",{data:n}),e.unget(n),wt.setState(K)),!0}function F(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-tag-name"),e.unget(n),wt.setState(t)):r(n)?wt.setState(I):i(n)?wt._currentToken.name+=n.toLowerCase():n===">"?wt._emitCurrentToken():n==="/"?wt.setState(J):n==="\0"?(wt._parseError("invalid-codepoint"),wt._currentToken.name+="�"):wt._currentToken.name+=n,e.commit(),!0}function I(e){var n=e.char();if(n===o.EOF)wt._parseError("expected-attribute-name-but-got-eof"),e.unget(n),wt.setState(t);else{if(r(n))return!0;i(n)?(wt._currentToken.data.push({nodeName:n.toLowerCase(),nodeValue:""}),wt.setState(q)):n===">"?wt._emitCurrentToken():n==="/"?wt.setState(J):n==="'"||n==='"'||n==="="||n==="<"?(wt._parseError("invalid-character-in-attribute-name"),wt._currentToken.data.push({nodeName:n,nodeValue:""}),wt.setState(q)):n==="\0"?(wt._parseError("invalid-codepoint"),wt._currentToken.data.push({nodeName:"�",nodeValue:""})):(wt._currentToken.data.push({nodeName:n,nodeValue:""}),wt.setState(q))}return!0}function q(e){var n=e.char(),s=!0,u=!1;n===o.EOF?(wt._parseError("eof-in-attribute-name"),e.unget(n),wt.setState(t),u=!0):n==="="?wt.setState(U):i(n)?(wt._currentAttribute().nodeName+=n.toLowerCase(),s=!1):n===">"?u=!0:r(n)?wt.setState(R):n==="/"?wt.setState(J):n==="'"||n==='"'?(wt._parseError("invalid-character-in-attribute-name"),wt._currentAttribute().nodeName+=n,s=!1):n==="\0"?(wt._parseError("invalid-codepoint"),wt._currentAttribute().nodeName+="�"):(wt._currentAttribute().nodeName+=n,s=!1);if(s){var a=wt._currentToken.data,f=a[a.length-1];for(var l=a.length-2;l>=0;l--)if(f.nodeName===a[l].nodeName){wt._parseError("duplicate-attribute",{name:f.nodeName}),f.nodeName=null;break}u&&wt._emitCurrentToken()}else e.commit();return!0}function R(e){var n=e.char();if(n===o.EOF)wt._parseError("expected-end-of-tag-but-got-eof"),e.unget(n),wt.setState(t);else{if(r(n))return!0;n==="="?wt.setState(U):n===">"?wt._emitCurrentToken():i(n)?(wt._currentToken.data.push({nodeName:n,nodeValue:""}),wt.setState(q)):n==="/"?wt.setState(J):n==="'"||n==='"'||n==="<"?(wt._parseError("invalid-character-after-attribute-name"),wt._currentToken.data.push({nodeName:n,nodeValue:""}),wt.setState(q)):n==="\0"?(wt._parseError("invalid-codepoint"),wt._currentToken.data.push({nodeName:"�",nodeValue:""})):(wt._currentToken.data.push({nodeName:n,nodeValue:""}),wt.setState(q))}return!0}function U(e){var n=e.char();if(n===o.EOF)wt._parseError("expected-attribute-value-but-got-eof"),e.unget(n),wt.setState(t);else{if(r(n))return!0;n==='"'?wt.setState(z):n==="&"?(wt.setState(X),e.unget(n)):n==="'"?wt.setState(W):n===">"?(wt._parseError("expected-attribute-value-but-got-right-bracket"),wt._emitCurrentToken()):n==="="||n==="<"||n==="`"?(wt._parseError("unexpected-character-in-unquoted-attribute-value"),wt._currentAttribute().nodeValue+=n,wt.setState(X)):n==="\0"?(wt._parseError("invalid-codepoint"),wt._currentAttribute().nodeValue+="�"):(wt._currentAttribute().nodeValue+=n,wt.setState(X))}return!0}function z(e){var n=e.char();if(n===o.EOF)wt._parseError("eof-in-attribute-value-double-quote"),e.unget(n),wt.setState(t);else if(n==='"')wt.setState($);else if(n==="&")this._additionalAllowedCharacter='"',wt.setState(V);else if(n==="\0")wt._parseError("invalid-codepoint"),wt._currentAttribute().nodeValue+="�";else{var r=e.matchUntil('[\0"&]');n+=r,wt._currentAttribute().nodeValue+=n}return!0}function W(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-attribute-value-single-quote"),e.unget(n),wt.setState(t)):n==="'"?wt.setState($):n==="&"?(this._additionalAllowedCharacter="'",wt.setState(V)):n==="\0"?(wt._parseError("invalid-codepoint"),wt._currentAttribute().nodeValue+="�"):wt._currentAttribute().nodeValue+=n+e.matchUntil("\0|['&]"),!0}function X(e){var n=e.char();if(n===o.EOF)wt._parseError("eof-after-attribute-value"),e.unget(n),wt.setState(t);else if(r(n))wt.setState(I);else if(n==="&")this._additionalAllowedCharacter=">",wt.setState(V);else if(n===">")wt._emitCurrentToken();else if(n==='"'||n==="'"||n==="="||n==="`"||n==="<")wt._parseError("unexpected-character-in-unquoted-attribute-value"),wt._currentAttribute().nodeValue+=n,e.commit();else if(n==="\0")wt._parseError("invalid-codepoint"),wt._currentAttribute().nodeValue+="�";else{var i=e.matchUntil("\0|[ \n \f \r&<>\"'=`]");i===o.EOF&&(wt._parseError("eof-in-attribute-value-no-quotes"),wt._emitCurrentToken()),e.commit(),wt._currentAttribute().nodeValue+=n+i}return!0}function V(e){var t=u.consumeEntity(e,wt,this._additionalAllowedCharacter);return this._currentAttribute().nodeValue+=t||"&",this._additionalAllowedCharacter==='"'?wt.setState(z):this._additionalAllowedCharacter==="'"?wt.setState(W):this._additionalAllowedCharacter===">"&&wt.setState(X),!0}function $(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-after-attribute-value"),e.unget(n),wt.setState(t)):r(n)?wt.setState(I):n===">"?(wt.setState(t),wt._emitCurrentToken()):n==="/"?wt.setState(J):(wt._parseError("unexpected-character-after-attribute-value"),e.unget(n),wt.setState(I)),!0}function J(e){var n=e.char();return n===o.EOF?(wt._parseError("unexpected-eof-after-solidus-in-tag"),e.unget(n),wt.setState(t)):n===">"?(wt._currentToken.selfClosing=!0,wt.setState(t),wt._emitCurrentToken()):(wt._parseError("unexpected-character-after-solidus-in-tag"),e.unget(n),wt.setState(I)),!0}function K(e){var n=e.matchUntil(">");return n=n.replace(/\u0000/g,"�"),e.char(),wt._emitToken({type:"Comment",data:n}),wt.setState(t),!0}function Q(e){var t=e.shift(2);if(t==="--")wt._currentToken={type:"Comment",data:""},wt.setState(Y);else{var n=e.shift(5);if(n===o.EOF||t===o.EOF)return wt._parseError("expected-dashes-or-doctype"),wt.setState(K),e.unget(t),!0;t+=n,t.toUpperCase()==="DOCTYPE"?(wt._currentToken={type:"Doctype",name:"",publicId:null,systemId:null,forceQuirks:!1},wt.setState(it)):wt._tokenHandler.isCdataSectionAllowed()&&t==="[CDATA["?wt.setState(G):(wt._parseError("expected-dashes-or-doctype"),e.unget(t),wt.setState(K))}return!0}function G(e){var n=e.matchUntil("]]>");return e.shift(3),n&&wt._emitToken({type:"Characters",data:n}),wt.setState(t),!0}function Y(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-comment"),wt._emitToken(wt._currentToken),e.unget(n),wt.setState(t)):n==="-"?wt.setState(Z):n===">"?(wt._parseError("incorrect-comment"),wt._emitToken(wt._currentToken),wt.setState(t)):n==="\0"?(wt._parseError("invalid-codepoint"),wt._currentToken.data+="�"):(wt._currentToken.data+=n,wt.setState(et)),!0}function Z(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-comment"),wt._emitToken(wt._currentToken),e.unget(n),wt.setState(t)):n==="-"?wt.setState(nt):n===">"?(wt._parseError("incorrect-comment"),wt._emitToken(wt._currentToken),wt.setState(t)):n==="\0"?(wt._parseError("invalid-codepoint"),wt._currentToken.data+="�"):(wt._currentToken.data+="-"+n,wt.setState(et)),!0}function et(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-comment"),wt._emitToken(wt._currentToken),e.unget(n),wt.setState(t)):n==="-"?wt.setState(tt):n==="\0"?(wt._parseError("invalid-codepoint"),wt._currentToken.data+="�"):(wt._currentToken.data+=n,e.commit()),!0}function tt(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-comment-end-dash"),wt._emitToken(wt._currentToken),e.unget(n),wt.setState(t)):n==="-"?wt.setState(nt):n==="\0"?(wt._parseError("invalid-codepoint"),wt._currentToken.data+="-�",wt.setState(et)):(wt._currentToken.data+="-"+n+e.matchUntil("\0|-"),e.char()),!0}function nt(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-comment-double-dash"),wt._emitToken(wt._currentToken),e.unget(n),wt.setState(t)):n===">"?(wt._emitToken(wt._currentToken),wt.setState(t)):n==="!"?(wt._parseError("unexpected-bang-after-double-dash-in-comment"),wt.setState(rt)):n==="-"?(wt._parseError("unexpected-dash-after-double-dash-in-comment"),wt._currentToken.data+=n):n==="\0"?(wt._parseError("invalid-codepoint"),wt._currentToken.data+="--�",wt.setState(et)):(wt._parseError("unexpected-char-in-comment"),wt._currentToken.data+="--"+n,wt.setState(et)),!0}function rt(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-comment-end-bang-state"),wt._emitToken(wt._currentToken),e.unget(n),wt.setState(t)):n===">"?(wt._emitToken(wt._currentToken),wt.setState(t)):n==="-"?(wt._currentToken.data+="--!",wt.setState(tt)):(wt._currentToken.data+="--!"+n,wt.setState(et)),!0}function it(e){var n=e.char();return n===o.EOF?(wt._parseError("expected-doctype-name-but-got-eof"),wt._currentToken.forceQuirks=!0,e.unget(n),wt.setState(t),wt._emitCurrentToken()):r(n)?wt.setState(st):(wt._parseError("need-space-after-doctype"),e.unget(n),wt.setState(st)),!0}function st(e){var n=e.char();return n===o.EOF?(wt._parseError("expected-doctype-name-but-got-eof"),wt._currentToken.forceQuirks=!0,e.unget(n),wt.setState(t),wt._emitCurrentToken()):r(n)||(n===">"?(wt._parseError("expected-doctype-name-but-got-right-bracket"),wt._currentToken.forceQuirks=!0,wt.setState(t),wt._emitCurrentToken()):(i(n)&&(n=n.toLowerCase()),wt._currentToken.name=n,wt.setState(ot))),!0}function ot(e){var n=e.char();return n===o.EOF?(wt._currentToken.forceQuirks=!0,e.unget(n),wt._parseError("eof-in-doctype-name"),wt.setState(t),wt._emitCurrentToken()):r(n)?wt.setState(ut):n===">"?(wt.setState(t),wt._emitCurrentToken()):(i(n)&&(n=n.toLowerCase()),wt._currentToken.name+=n,e.commit()),!0}function ut(e){var n=e.char();if(n===o.EOF)wt._currentToken.forceQuirks=!0,e.unget(n),wt._parseError("eof-in-doctype"),wt.setState(t),wt._emitCurrentToken();else if(!r(n))if(n===">")wt.setState(t),wt._emitCurrentToken();else{if(["p","P"].indexOf(n)>-1){var i=[["u","U"],["b","B"],["l","L"],["i","I"],["c","C"]],s=i.every(function(t){return n=e.char(),t.indexOf(n)>-1});if(s)return wt.setState(at),!0}else if(["s","S"].indexOf(n)>-1){var i=[["y","Y"],["s","S"],["t","T"],["e","E"],["m","M"]],s=i.every(function(t){return n=e.char(),t.indexOf(n)>-1});if(s)return wt.setState(dt),!0}e.unget(n),wt._currentToken.forceQuirks=!0,n===o.EOF?(wt._parseError("eof-in-doctype"),e.unget(n),wt.setState(t),wt._emitCurrentToken()):(wt._parseError("expected-space-or-right-bracket-in-doctype",{data:n}),wt.setState(bt))}return!0}function at(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-doctype"),wt._currentToken.forceQuirks=!0,e.unget(n),wt.setState(t),wt._emitCurrentToken()):r(n)?wt.setState(ft):n==="'"||n==='"'?(wt._parseError("unexpected-char-in-doctype"),e.unget(n),wt.setState(ft)):(e.unget(n),wt.setState(ft)),!0}function ft(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-doctype"),wt._currentToken.forceQuirks=!0,e.unget(n),wt.setState(t),wt._emitCurrentToken()):r(n)||(n==='"'?(wt._currentToken.publicId="",wt.setState(lt)):n==="'"?(wt._currentToken.publicId="",wt.setState(ct)):n===">"?(wt._parseError("unexpected-end-of-doctype"),wt._currentToken.forceQuirks=!0,wt.setState(t),wt._emitCurrentToken()):(wt._parseError("unexpected-char-in-doctype"),wt._currentToken.forceQuirks=!0,wt.setState(bt))),!0}function lt(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-doctype"),wt._currentToken.forceQuirks=!0,e.unget(n),wt.setState(t),wt._emitCurrentToken()):n==='"'?wt.setState(ht):n===">"?(wt._parseError("unexpected-end-of-doctype"),wt._currentToken.forceQuirks=!0,wt.setState(t),wt._emitCurrentToken()):wt._currentToken.publicId+=n,!0}function ct(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-doctype"),wt._currentToken.forceQuirks=!0,e.unget(n),wt.setState(t),wt._emitCurrentToken()):n==="'"?wt.setState(ht):n===">"?(wt._parseError("unexpected-end-of-doctype"),wt._currentToken.forceQuirks=!0,wt.setState(t),wt._emitCurrentToken()):wt._currentToken.publicId+=n,!0}function ht(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-doctype"),wt._currentToken.forceQuirks=!0,wt._emitCurrentToken(),e.unget(n),wt.setState(t)):r(n)?wt.setState(pt):n===">"?(wt.setState(t),wt._emitCurrentToken()):n==='"'?(wt._parseError("unexpected-char-in-doctype"),wt._currentToken.systemId="",wt.setState(mt)):n==="'"?(wt._parseError("unexpected-char-in-doctype"),wt._currentToken.systemId="",wt.setState(gt)):(wt._parseError("unexpected-char-in-doctype"),wt._currentToken.forceQuirks=!0,wt.setState(bt)),!0}function pt(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-doctype"),wt._currentToken.forceQuirks=!0,wt._emitCurrentToken(),e.unget(n),wt.setState(t)):r(n)||(n===">"?(wt._emitCurrentToken(),wt.setState(t)):n==='"'?(wt._currentToken.systemId="",wt.setState(mt)):n==="'"?(wt._currentToken.systemId="",wt.setState(gt)):(wt._parseError("unexpected-char-in-doctype"),wt._currentToken.forceQuirks=!0,wt.setState(bt))),!0}function dt(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-doctype"),wt._currentToken.forceQuirks=!0,wt._emitCurrentToken(),e.unget(n),wt.setState(t)):r(n)?wt.setState(vt):n==="'"||n==='"'?(wt._parseError("unexpected-char-in-doctype"),e.unget(n),wt.setState(vt)):(e.unget(n),wt.setState(vt)),!0}function vt(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-doctype"),wt._currentToken.forceQuirks=!0,wt._emitCurrentToken(),e.unget(n),wt.setState(t)):r(n)||(n==='"'?(wt._currentToken.systemId="",wt.setState(mt)):n==="'"?(wt._currentToken.systemId="",wt.setState(gt)):n===">"?(wt._parseError("unexpected-end-of-doctype"),wt._currentToken.forceQuirks=!0,wt._emitCurrentToken(),wt.setState(t)):(wt._parseError("unexpected-char-in-doctype"),wt._currentToken.forceQuirks=!0,wt.setState(bt))),!0}function mt(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-doctype"),wt._currentToken.forceQuirks=!0,wt._emitCurrentToken(),e.unget(n),wt.setState(t)):n==='"'?wt.setState(yt):n===">"?(wt._parseError("unexpected-end-of-doctype"),wt._currentToken.forceQuirks=!0,wt._emitCurrentToken(),wt.setState(t)):wt._currentToken.systemId+=n,!0}function gt(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-doctype"),wt._currentToken.forceQuirks=!0,wt._emitCurrentToken(),e.unget(n),wt.setState(t)):n==="'"?wt.setState(yt):n===">"?(wt._parseError("unexpected-end-of-doctype"),wt._currentToken.forceQuirks=!0,wt._emitCurrentToken(),wt.setState(t)):wt._currentToken.systemId+=n,!0}function yt(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-doctype"),wt._currentToken.forceQuirks=!0,wt._emitCurrentToken(),e.unget(n),wt.setState(t)):r(n)||(n===">"?(wt._emitCurrentToken(),wt.setState(t)):(wt._parseError("unexpected-char-in-doctype"),wt.setState(bt))),!0}function bt(e){var n=e.char();return n===o.EOF?(e.unget(n),wt._emitCurrentToken(),wt.setState(t)):n===">"&&(wt._emitCurrentToken(),wt.setState(t)),!0}s.DATA=t,s.RCDATA=a,s.RAWTEXT=l,s.SCRIPT_DATA=h,s.PLAINTEXT=c,this._state=s.DATA,this._inputStream.append(e),this._tokenHandler.startTokenization(this),this._inputStream.eof=!0;var wt=this;while(this._state.call(this,this._inputStream));},n.Tokenizer=s},{"./EntityParser":2,"./InputStream":3}],6:[function(e,t,n){(function(){function t(e){return e===" "||e==="\n"||e===" "||e==="\r"||e==="\f"}function r(e){return t(e)||e==="�"}function i(e){for(var n=0;n2?e.parseError("expected-closing-tag-but-got-eof"):e.openElements.length==2&&e.openElements.item(1).localName!="body"?e.parseError("expected-closing-tag-but-got-eof"):e.context&&e.openElements.length>1},processComment:function(t){e.insertComment(t,e.currentStackItem().node)},processDoctype:function(t,n,r,i){e.parseError("unexpected-doctype")},processStartTag:function(e,t,n){if(this[this.start_tag_handlers[e]])this[this.start_tag_handlers[e]](e,t,n);else{if(!this[this.start_tag_handlers["-default"]])throw new Error("No handler found for "+e);this[this.start_tag_handlers["-default"]](e,t,n)}},processEndTag:function(e){if(this[this.end_tag_handlers[e]])this[this.end_tag_handlers[e]](e);else{if(!this[this.end_tag_handlers["-default"]])throw new Error("No handler found for "+e);this[this.end_tag_handlers["-default"]](e)}},startTagHtml:function(t,n){!e.firstStartTag&&t=="html"&&e.parseError("non-html-root"),e.addAttributesToElement(e.openElements.rootNode,n),e.firstStartTag=!1}},n.initial=Object.create(n.base),n.initial.processEOF=function(){e.parseError("expected-doctype-but-got-eof"),this.anythingElse(),e.insertionMode.processEOF()},n.initial.processComment=function(t){e.insertComment(t,e.document)},n.initial.processDoctype=function(t,n,r,i){function s(e){return n.toLowerCase().indexOf(e)===0}e.insertDoctype(t||"",n||"",r||""),i||t!="html"||n!=null&&(["+//silmaril//dtd html pro v0r11 19970101//","-//advasoft ltd//dtd html 3.0 aswedit + extensions//","-//as//dtd html 3.0 aswedit + extensions//","-//ietf//dtd html 2.0 level 1//","-//ietf//dtd html 2.0 level 2//","-//ietf//dtd html 2.0 strict level 1//","-//ietf//dtd html 2.0 strict level 2//","-//ietf//dtd html 2.0 strict//","-//ietf//dtd html 2.0//","-//ietf//dtd html 2.1e//","-//ietf//dtd html 3.0//","-//ietf//dtd html 3.0//","-//ietf//dtd html 3.2 final//","-//ietf//dtd html 3.2//","-//ietf//dtd html 3//","-//ietf//dtd html level 0//","-//ietf//dtd html level 0//","-//ietf//dtd html level 1//","-//ietf//dtd html level 1//","-//ietf//dtd html level 2//","-//ietf//dtd html level 2//","-//ietf//dtd html level 3//","-//ietf//dtd html level 3//","-//ietf//dtd html strict level 0//","-//ietf//dtd html strict level 0//","-//ietf//dtd html strict level 1//","-//ietf//dtd html strict level 1//","-//ietf//dtd html strict level 2//","-//ietf//dtd html strict level 2//","-//ietf//dtd html strict level 3//","-//ietf//dtd html strict level 3//","-//ietf//dtd html strict//","-//ietf//dtd html strict//","-//ietf//dtd html strict//","-//ietf//dtd html//","-//ietf//dtd html//","-//ietf//dtd html//","-//metrius//dtd metrius presentational//","-//microsoft//dtd internet explorer 2.0 html strict//","-//microsoft//dtd internet explorer 2.0 html//","-//microsoft//dtd internet explorer 2.0 tables//","-//microsoft//dtd internet explorer 3.0 html strict//","-//microsoft//dtd internet explorer 3.0 html//","-//microsoft//dtd internet explorer 3.0 tables//","-//netscape comm. corp.//dtd html//","-//netscape comm. corp.//dtd strict html//","-//o'reilly and associates//dtd html 2.0//","-//o'reilly and associates//dtd html extended 1.0//","-//spyglass//dtd html 2.0 extended//","-//sq//dtd html 2.0 hotmetal + extensions//","-//sun microsystems corp.//dtd hotjava html//","-//sun microsystems corp.//dtd hotjava strict html//","-//w3c//dtd html 3 1995-03-24//","-//w3c//dtd html 3.2 draft//","-//w3c//dtd html 3.2 final//","-//w3c//dtd html 3.2//","-//w3c//dtd html 3.2s draft//","-//w3c//dtd html 4.0 frameset//","-//w3c//dtd html 4.0 transitional//","-//w3c//dtd html experimental 19960712//","-//w3c//dtd html experimental 970421//","-//w3c//dtd w3 html//","-//w3o//dtd w3 html 3.0//","-//webtechs//dtd mozilla html 2.0//","-//webtechs//dtd mozilla html//","html"].some(s)||["-//w3o//dtd w3 html strict 3.0//en//","-/w3c/dtd html 4.0 transitional/en","html"].indexOf(n.toLowerCase())>-1||r==null&&["-//w3c//dtd html 4.01 transitional//","-//w3c//dtd html 4.01 frameset//"].some(s))||r!=null&&r.toLowerCase()=="http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd"?(e.compatMode="quirks",e.parseError("quirky-doctype")):n!=null&&(["-//w3c//dtd xhtml 1.0 transitional//","-//w3c//dtd xhtml 1.0 frameset//"].some(s)||r!=null&&["-//w3c//dtd html 4.01 transitional//","-//w3c//dtd html 4.01 frameset//"].indexOf(n.toLowerCase())>-1)?(e.compatMode="limited quirks",e.parseError("almost-standards-doctype")):n=="-//W3C//DTD HTML 4.0//EN"&&(r==null||r=="http://www.w3.org/TR/REC-html40/strict.dtd")||n=="-//W3C//DTD HTML 4.01//EN"&&(r==null||r=="http://www.w3.org/TR/html4/strict.dtd")||n=="-//W3C//DTD XHTML 1.0 Strict//EN"&&r=="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"||n=="-//W3C//DTD XHTML 1.1//EN"&&r=="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"||(r!=null&&r!="about:legacy-compat"||n!=null)&&e.parseError("unknown-doctype"),e.setInsertionMode("beforeHTML")},n.initial.processCharacters=function(t){t.skipLeadingWhitespace();if(!t.length)return;e.parseError("expected-doctype-but-got-chars"),this.anythingElse(),e.insertionMode.processCharacters(t)},n.initial.processStartTag=function(t,n,r){e.parseError("expected-doctype-but-got-start-tag",{name:t}),this.anythingElse(),e.insertionMode.processStartTag(t,n,r)},n.initial.processEndTag=function(t){e.parseError("expected-doctype-but-got-end-tag",{name:t}),this.anythingElse(),e.insertionMode.processEndTag(t)},n.initial.anythingElse=function(){e.compatMode="quirks",e.setInsertionMode("beforeHTML")},n.beforeHTML=Object.create(n.base),n.beforeHTML.start_tag_handlers={html:"startTagHtml","-default":"startTagOther"},n.beforeHTML.processEOF=function(){this.anythingElse(),e.insertionMode.processEOF()},n.beforeHTML.processComment=function(t){e.insertComment(t,e.document)},n.beforeHTML.processCharacters=function(t){t.skipLeadingWhitespace();if(!t.length)return;this.anythingElse(),e.insertionMode.processCharacters(t)},n.beforeHTML.startTagHtml=function(t,n,r){e.firstStartTag=!0,e.insertHtmlElement(n),e.setInsertionMode("beforeHead")},n.beforeHTML.startTagOther=function(t,n,r){this.anythingElse(),e.insertionMode.processStartTag(t,n,r)},n.beforeHTML.processEndTag=function(t){this.anythingElse(),e.insertionMode.processEndTag(t)},n.beforeHTML.anythingElse=function(){e.insertHtmlElement(),e.setInsertionMode("beforeHead")},n.afterAfterBody=Object.create(n.base),n.afterAfterBody.start_tag_handlers={html:"startTagHtml","-default":"startTagOther"},n.afterAfterBody.processComment=function(t){e.insertComment(t,e.document)},n.afterAfterBody.processDoctype=function(e){n.inBody.processDoctype(e)},n.afterAfterBody.startTagHtml=function(e,t){n.inBody.startTagHtml(e,t)},n.afterAfterBody.startTagOther=function(t,n,r){e.parseError("unexpected-start-tag",{name:t}),e.setInsertionMode("inBody"),e.insertionMode.processStartTag(t,n,r)},n.afterAfterBody.endTagOther=function(t){e.parseError("unexpected-end-tag",{name:t}),e.setInsertionMode("inBody"),e.insertionMode.processEndTag(t)},n.afterAfterBody.processCharacters=function(t){if(!i(t.characters))return e.parseError("unexpected-char-after-body"),e.setInsertionMode("inBody"),e.insertionMode.processCharacters(t);n.inBody.processCharacters(t)},n.afterBody=Object.create(n.base),n.afterBody.end_tag_handlers={html:"endTagHtml","-default":"endTagOther"},n.afterBody.processComment=function(t){e.insertComment(t,e.openElements.rootNode)},n.afterBody.processCharacters=function(t){if(!i(t.characters))return e.parseError("unexpected-char-after-body"),e.setInsertionMode("inBody"),e.insertionMode.processCharacters(t);n.inBody.processCharacters(t)},n.afterBody.processStartTag=function(t,n,r){e.parseError("unexpected-start-tag-after-body",{name:t}),e.setInsertionMode("inBody"),e.insertionMode.processStartTag(t,n,r)},n.afterBody.endTagHtml=function(t){e.context?e.parseError("end-html-in-innerhtml"):e.setInsertionMode("afterAfterBody")},n.afterBody.endTagOther=function(t){e.parseError("unexpected-end-tag-after-body",{name:t}),e.setInsertionMode("inBody"),e.insertionMode.processEndTag(t)},n.afterFrameset=Object.create(n.base),n.afterFrameset.start_tag_handlers={html:"startTagHtml",noframes:"startTagNoframes","-default":"startTagOther"},n.afterFrameset.end_tag_handlers={html:"endTagHtml","-default":"endTagOther"},n.afterFrameset.processCharacters=function(n){var r=n.takeRemaining(),i="";for(var s=0;s1)e.openElements.pop();e.insertElement(t,n),e.setInsertionMode("inFrameset")}},n.inBody.startTagCloseP=function(t,n){e.openElements.inButtonScope("p")&&this.endTagP("p"),e.insertElement(t,n)},n.inBody.startTagPreListing=function(t,n){e.openElements.inButtonScope("p")&&this.endTagP("p"),e.insertElement(t,n),e.framesetOk=!1,e.shouldSkipLeadingNewline=!0},n.inBody.startTagForm=function(t,n){e.form?e.parseError("unexpected-start-tag",{name:t}):(e.openElements.inButtonScope("p")&&this.endTagP("p"),e.insertElement(t,n),e.form=e.currentStackItem())},n.inBody.startTagRpRt=function(t,n){e.openElements.inScope("ruby")&&(e.generateImpliedEndTags(),e.currentStackItem().localName!="ruby"&&e.parseError("unexpected-start-tag",{name:t})),e.insertElement(t,n)},n.inBody.startTagListItem=function(t,n){var r={li:["li"],dd:["dd","dt"],dt:["dd","dt"]},i=r[t],s=e.openElements;for(var o=s.length-1;o>=0;o--){var u=s.item(o);if(i.indexOf(u.localName)!=-1){e.insertionMode.processEndTag(u.localName);break}if(u.isSpecial()&&u.localName!=="p"&&u.localName!=="address"&&u.localName!=="div")break}e.openElements.inButtonScope("p")&&this.endTagP("p"),e.insertElement(t,n),e.framesetOk=!1},n.inBody.startTagPlaintext=function(t,n){e.openElements.inButtonScope("p")&&this.endTagP("p"),e.insertElement(t,n),e.tokenizer.setState(d.PLAINTEXT)},n.inBody.startTagHeading=function(t,n){e.openElements.inButtonScope("p")&&this.endTagP("p"),e.currentStackItem().isNumberedHeader()&&(e.parseError("unexpected-start-tag",{name:t}),e.popElement()),e.insertElement(t,n)},n.inBody.startTagA=function(t,n){var r=e.elementInActiveFormattingElements("a");r&&(e.parseError("unexpected-start-tag-implies-end-tag",{startName:"a",endName:"a"}),e.adoptionAgencyEndTag("a"),e.openElements.contains(r)&&e.openElements.remove(r),e.removeElementFromActiveFormattingElements(r)),e.reconstructActiveFormattingElements(),e.insertFormattingElement(t,n)},n.inBody.startTagFormatting=function(t,n){e.reconstructActiveFormattingElements(),e.insertFormattingElement(t,n)},n.inBody.startTagNobr=function(t,n){e.reconstructActiveFormattingElements(),e.openElements.inScope("nobr")&&(e.parseError("unexpected-start-tag-implies-end-tag",{startName:"nobr",endName:"nobr"}),this.processEndTag("nobr"),e.reconstructActiveFormattingElements()),e.insertFormattingElement(t,n)},n.inBody.startTagButton=function(t,n){e.openElements.inScope("button")?(e.parseError("unexpected-start-tag-implies-end-tag",{startName:"button",endName:"button"}),this.processEndTag("button"),e.insertionMode.processStartTag(t,n)):(e.framesetOk=!1,e.reconstructActiveFormattingElements(),e.insertElement(t,n))},n.inBody.startTagAppletMarqueeObject=function(t,n){e.reconstructActiveFormattingElements(),e.insertElement(t,n),e.activeFormattingElements.push(g),e.framesetOk=!1},n.inBody.endTagAppletMarqueeObject=function(t){e.openElements.inScope(t)?(e.generateImpliedEndTags(),e.currentStackItem().localName!=t&&e.parseError("end-tag-too-early",{name:t}),e.openElements.popUntilPopped(t),e.clearActiveFormattingElements()):e.parseError("unexpected-end-tag",{name:t})},n.inBody.startTagXmp=function(t,n){e.openElements.inButtonScope("p")&&this.processEndTag("p"),e.reconstructActiveFormattingElements(),e.processGenericRawTextStartTag(t,n),e.framesetOk=!1},n.inBody.startTagTable=function(t,n){e.compatMode!=="quirks"&&e.openElements.inButtonScope("p")&&this.processEndTag("p"),e.insertElement(t,n),e.setInsertionMode("inTable"),e.framesetOk=!1},n.inBody.startTagVoidFormatting=function(t,n){e.reconstructActiveFormattingElements(),e.insertSelfClosingElement(t,n),e.framesetOk=!1},n.inBody.startTagParamSourceTrack=function(t,n){e.insertSelfClosingElement(t,n)},n.inBody.startTagHr=function(t,n){e.openElements.inButtonScope("p")&&this.endTagP("p"),e.insertSelfClosingElement(t,n),e.framesetOk=!1},n.inBody.startTagImage=function(t,n){e.parseError("unexpected-start-tag-treated-as",{originalName:"image",newName:"img"}),this.processStartTag("img",n)},n.inBody.startTagInput=function(t,n){var r=e.framesetOk;this.startTagVoidFormatting(t,n);for(var i in n)if(n[i].nodeName=="type"){n[i].nodeValue.toLowerCase()=="hidden"&&(e.framesetOk=r);break}},n.inBody.startTagIsindex=function(t,n){e.parseError("deprecated-tag",{name:"isindex"}),e.selfClosingFlagAcknowledged=!0;if(e.form)return;var r=[],i=[],s="This is a searchable index. Enter search keywords: ";for(var o in n)switch(n[o].nodeName){case"action":r.push({nodeName:"action",nodeValue:n[o].nodeValue});break;case"prompt":s=n[o].nodeValue;break;case"name":break;default:i.push({nodeName:n[o].nodeName,nodeValue:n[o].nodeValue})}i.push({nodeName:"name",nodeValue:"isindex"}),this.processStartTag("form",r),this.processStartTag("hr"),this.processStartTag("label"),this.processCharacters(new u(s)),this.processStartTag("input",i),this.processEndTag("label"),this.processStartTag("hr"),this.processEndTag("form")},n.inBody.startTagTextarea=function(t,n){e.insertElement(t,n),e.tokenizer.setState(d.RCDATA),e.originalInsertionMode=e.insertionModeName,e.shouldSkipLeadingNewline=!0,e.framesetOk=!1,e.setInsertionMode("text")},n.inBody.startTagIFrame=function(t,n){e.framesetOk=!1,this.startTagRawText(t,n)},n.inBody.startTagRawText=function(t,n){e.processGenericRawTextStartTag(t,n)},n.inBody.startTagSelect=function(t,n){e.reconstructActiveFormattingElements(),e.insertElement(t,n),e.framesetOk=!1;var r=e.insertionModeName;r=="inTable"||r=="inCaption"||r=="inColumnGroup"||r=="inTableBody"||r=="inRow"||r=="inCell"?e.setInsertionMode("inSelectInTable"):e.setInsertionMode("inSelect")},n.inBody.startTagMisplaced=function(t,n){e.parseError("unexpected-start-tag-ignored",{name:t})},n.inBody.endTagMisplaced=function(t){e.parseError("unexpected-end-tag",{name:t})},n.inBody.endTagBr=function(t){e.parseError("unexpected-end-tag-treated-as",{originalName:"br",newName:"br element"}),e.reconstructActiveFormattingElements(),e.insertElement(t,[]),e.popElement()},n.inBody.startTagOptionOptgroup=function(t,n){e.currentStackItem().localName=="option"&&e.popElement(),e.reconstructActiveFormattingElements(),e.insertElement(t,n)},n.inBody.startTagOther=function(t,n){e.reconstructActiveFormattingElements(),e.insertElement(t,n)},n.inBody.endTagOther=function(t){var n;for(var r=e.openElements.length-1;r>0;r--){n=e.openElements.item(r);if(n.localName==t){e.generateImpliedEndTags(t),e.currentStackItem().localName!=t&&e.parseError("unexpected-end-tag",{name:t}),e.openElements.remove_openElements_until(function(e){return e===n});break}if(n.isSpecial()){e.parseError("unexpected-end-tag",{name:t});break}}},n.inBody.startTagMath=function(t,n,r){e.reconstructActiveFormattingElements(),n=e.adjustMathMLAttributes(n),n=e.adjustForeignAttributes(n),e.insertForeignElement(t,n,"http://www.w3.org/1998/Math/MathML",r)},n.inBody.startTagSVG=function(t,n,r){e.reconstructActiveFormattingElements(),n=e.adjustSVGAttributes(n),n=e.adjustForeignAttributes(n),e.insertForeignElement(t,n,"http://www.w3.org/2000/svg",r)},n.inBody.endTagP=function(t){e.openElements.inButtonScope("p")?(e.generateImpliedEndTags("p"),e.currentStackItem().localName!="p"&&e.parseError("unexpected-end-tag",{name:"p"}),e.openElements.popUntilPopped(t)):(e.parseError("unexpected-end-tag",{name:"p"}),this.startTagCloseP("p",[]),this.endTagP("p"))},n.inBody.endTagBody=function(t){if(!e.openElements.inScope("body")){e.parseError("unexpected-end-tag",{name:t});return}e.currentStackItem().localName!="body"&&e.parseError("expected-one-end-tag-but-got-another",{expectedName:e.currentStackItem().localName,gotName:t}),e.setInsertionMode("afterBody")},n.inBody.endTagHtml=function(t){if(!e.openElements.inScope("body")){e.parseError("unexpected-end-tag",{name:t});return}e.currentStackItem().localName!="body"&&e.parseError("expected-one-end-tag-but-got-another",{expectedName:e.currentStackItem().localName,gotName:t}),e.setInsertionMode("afterBody"),e.insertionMode.processEndTag(t)},n.inBody.endTagBlock=function(t){e.openElements.inScope(t)?(e.generateImpliedEndTags(),e.currentStackItem().localName!=t&&e.parseError("end-tag-too-early",{name:t}),e.openElements.popUntilPopped(t)):e.parseError("unexpected-end-tag",{name:t})},n.inBody.endTagForm=function(t){var n=e.form;e.form=null,!n||!e.openElements.inScope(t)?e.parseError("unexpected-end-tag",{name:t}):(e.generateImpliedEndTags(),e.currentStackItem()!=n&&e.parseError("end-tag-too-early-ignored",{name:"form"}),e.openElements.remove(n))},n.inBody.endTagListItem=function(t){e.openElements.inListItemScope(t)?(e.generateImpliedEndTags(t),e.currentStackItem().localName!=t&&e.parseError("end-tag-too-early",{name:t}),e.openElements.popUntilPopped(t)):e.parseError("unexpected-end-tag",{name:t})},n.inBody.endTagHeading=function(t){if(!e.openElements.hasNumberedHeaderElementInScope()){e.parseError("unexpected-end-tag",{name:t});return}e.generateImpliedEndTags(),e.currentStackItem().localName!=t&&e.parseError("end-tag-too-early",{name:t}),e.openElements.remove_openElements_until(function(e){return e.isNumberedHeader()})},n.inBody.endTagFormatting=function(t,n){e.adoptionAgencyEndTag(t)||this.endTagOther(t,n)},n.inCaption=Object.create(n.base),n.inCaption.start_tag_handlers={html:"startTagHtml",caption:"startTagTableElement",col:"startTagTableElement",colgroup:"startTagTableElement",tbody:"startTagTableElement",td:"startTagTableElement",tfoot:"startTagTableElement",thead:"startTagTableElement",tr:"startTagTableElement","-default":"startTagOther"},n.inCaption.end_tag_handlers={caption:"endTagCaption",table:"endTagTable",body:"endTagIgnore",col:"endTagIgnore",colgroup:"endTagIgnore",html:"endTagIgnore",tbody:"endTagIgnore",td:"endTagIgnore",tfood:"endTagIgnore",thead:"endTagIgnore",tr:"endTagIgnore","-default":"endTagOther"},n.inCaption.processCharacters=function(e){n.inBody.processCharacters(e)},n.inCaption.startTagTableElement=function(t,n){e.parseError("unexpected-end-tag",{name:t});var r=!e.openElements.inTableScope("caption");e.insertionMode.processEndTag("caption"),r||e.insertionMode.processStartTag(t,n)},n.inCaption.startTagOther=function(e,t,r){n.inBody.processStartTag(e,t,r)},n.inCaption.endTagCaption=function(t){e.openElements.inTableScope("caption")?(e.generateImpliedEndTags(),e.currentStackItem().localName!="caption"&&e.parseError("expected-one-end-tag-but-got-another",{gotName:"caption",expectedName:e.currentStackItem().localName}),e.openElements.popUntilPopped("caption"),e.clearActiveFormattingElements(),e.setInsertionMode("inTable")):(l.ok(e.context),e.parseError("unexpected-end-tag",{name:t}))},n.inCaption.endTagTable=function(t){e.parseError("unexpected-end-table-in-caption");var n=!e.openElements.inTableScope("caption");e.insertionMode.processEndTag("caption"),n||e.insertionMode.processEndTag(t)},n.inCaption.endTagIgnore=function(t){e.parseError("unexpected-end-tag",{name:t})},n.inCaption.endTagOther=function(e){n.inBody.processEndTag(e)},n.inCell=Object.create(n.base),n.inCell.start_tag_handlers={html:"startTagHtml",caption:"startTagTableOther",col:"startTagTableOther",colgroup:"startTagTableOther",tbody:"startTagTableOther",td:"startTagTableOther",tfoot:"startTagTableOther",th:"startTagTableOther",thead:"startTagTableOther",tr:"startTagTableOther","-default":"startTagOther"},n.inCell.end_tag_handlers={td:"endTagTableCell",th:"endTagTableCell",body:"endTagIgnore",caption:"endTagIgnore",col:"endTagIgnore",colgroup:"endTagIgnore",html:"endTagIgnore",table:"endTagImply",tbody:"endTagImply",tfoot:"endTagImply",thead:"endTagImply",tr:"endTagImply","-default":"endTagOther"},n.inCell.processCharacters=function(e){n.inBody.processCharacters(e)},n.inCell.startTagTableOther=function(t,n,r){e.openElements.inTableScope("td")||e.openElements.inTableScope("th")?(this.closeCell(),e.insertionMode.processStartTag(t,n,r)):e.parseError("unexpected-start-tag",{name:t})},n.inCell.startTagOther=function(e,t,r){n.inBody.processStartTag(e,t,r)},n.inCell.endTagTableCell=function(t){e.openElements.inTableScope(t)?(e.generateImpliedEndTags(t),e.currentStackItem().localName!=t.toLowerCase()?(e.parseError("unexpected-cell-end-tag",{name:t}),e.openElements.popUntilPopped(t)):e.popElement(),e.clearActiveFormattingElements(),e.setInsertionMode("inRow")):e.parseError("unexpected-end-tag",{name:t})},n.inCell.endTagIgnore=function(t){e.parseError("unexpected-end-tag",{name:t})},n.inCell.endTagImply=function(t){e.openElements.inTableScope(t)?(this.closeCell(),e.insertionMode.processEndTag(t)):e.parseError("unexpected-end-tag",{name:t})},n.inCell.endTagOther=function(e){n.inBody.processEndTag(e)},n.inCell.closeCell=function(){e.openElements.inTableScope("td")?this.endTagTableCell("td"):e.openElements.inTableScope("th")&&this.endTagTableCell("th")},n.inColumnGroup=Object.create(n.base),n.inColumnGroup.start_tag_handlers={html:"startTagHtml",col:"startTagCol","-default":"startTagOther"},n.inColumnGroup.end_tag_handlers={colgroup:"endTagColgroup",col:"endTagCol","-default":"endTagOther"},n.inColumnGroup.ignoreEndTagColgroup=function(){return e.currentStackItem().localName=="html"},n.inColumnGroup.processCharacters=function(t){var n=t.takeLeadingWhitespace();n&&e.insertText(n);if(!t.length)return;var r=this.ignoreEndTagColgroup();this.endTagColgroup("colgroup"),r||e.insertionMode.processCharacters(t)},n.inColumnGroup.startTagCol=function(t,n){e.insertSelfClosingElement(t,n)},n.inColumnGroup.startTagOther=function(t,n,r){var i=this.ignoreEndTagColgroup();this.endTagColgroup("colgroup"),i||e.insertionMode.processStartTag(t,n,r)},n.inColumnGroup.endTagColgroup=function(t){this.ignoreEndTagColgroup()?(l.ok(e.context),e.parseError("unexpected-end-tag",{name:t})):(e.popElement(),e.setInsertionMode("inTable"))},n.inColumnGroup.endTagCol=function(t){e.parseError("no-end-tag",{name:"col"})},n.inColumnGroup.endTagOther=function(t){var n=this.ignoreEndTagColgroup();this.endTagColgroup("colgroup"),n||e.insertionMode.processEndTag(t)},n.inForeignContent=Object.create(n.base),n.inForeignContent.processStartTag=function(t,n,r){if(["b","big","blockquote","body","br","center","code","dd","div","dl","dt","em","embed","h1","h2","h3","h4","h5","h6","head","hr","i","img","li","listing","menu","meta","nobr","ol","p","pre","ruby","s","small","span","strong","strike","sub","sup","table","tt","u","ul","var"].indexOf(t)!=-1||t=="font"&&n.some(function(e){return["color","face","size"].indexOf(e.nodeName)>=0})){e.parseError("unexpected-html-element-in-foreign-content",{name:t});while(e.currentStackItem().isForeign()&&!e.currentStackItem().isHtmlIntegrationPoint()&&!e.currentStackItem().isMathMLTextIntegrationPoint())e.openElements.pop();e.insertionMode.processStartTag(t,n,r);return}e.currentStackItem().namespaceURI=="http://www.w3.org/1998/Math/MathML"&&(n=e.adjustMathMLAttributes(n)),e.currentStackItem().namespaceURI=="http://www.w3.org/2000/svg"&&(t=e.adjustSVGTagNameCase(t),n=e.adjustSVGAttributes(n)),n=e.adjustForeignAttributes(n),e.insertForeignElement(t,n,e.currentStackItem().namespaceURI,r)},n.inForeignContent.processEndTag=function(t){var n=e.currentStackItem(),r=e.openElements.length-1;n.localName.toLowerCase()!=t&&e.parseError("unexpected-end-tag",{name:t});for(;;){if(r===0)break;if(n.localName.toLowerCase()==t){while(e.openElements.pop()!=n);break}r-=1,n=e.openElements.item(r);if(n.isForeign())continue;e.insertionMode.processEndTag(t);break}},n.inForeignContent.processCharacters=function(t){var n=t.takeRemaining();n=n.replace(/\u0000/g,function(t,n){return e.parseError("invalid-codepoint"),"�"}),e.framesetOk&&!s(n)&&(e.framesetOk=!1),e.insertText(n)},n.inHeadNoscript=Object.create(n.base),n.inHeadNoscript.start_tag_handlers={html:"startTagHtml",basefont:"startTagBasefontBgsoundLinkMetaNoframesStyle",bgsound:"startTagBasefontBgsoundLinkMetaNoframesStyle",link:"startTagBasefontBgsoundLinkMetaNoframesStyle",meta:"startTagBasefontBgsoundLinkMetaNoframesStyle",noframes:"startTagBasefontBgsoundLinkMetaNoframesStyle",style:"startTagBasefontBgsoundLinkMetaNoframesStyle",head:"startTagHeadNoscript",noscript:"startTagHeadNoscript","-default":"startTagOther"},n.inHeadNoscript.end_tag_handlers={noscript:"endTagNoscript",br:"endTagBr","-default":"endTagOther"},n.inHeadNoscript.processCharacters=function(t){var n=t.takeLeadingWhitespace();n&&e.insertText(n);if(!t.length)return;e.parseError("unexpected-char-in-frameset"),this.anythingElse(),e.insertionMode.processCharacters(t)},n.inHeadNoscript.processComment=function(e){n.inHead.processComment(e)},n.inHeadNoscript.startTagHtml=function(e,t){n.inBody.processStartTag(e,t)},n.inHeadNoscript.startTagBasefontBgsoundLinkMetaNoframesStyle=function(e,t){n.inHead.processStartTag(e,t)},n.inHeadNoscript.startTagHeadNoscript=function(t,n){e.parseError("unexpected-start-tag-in-frameset",{name:t})},n.inHeadNoscript.startTagOther=function(t,n){e.parseError("unexpected-start-tag-in-frameset",{name:t}),this.anythingElse(),e.insertionMode.processStartTag(t,n)},n.inHeadNoscript.endTagBr=function(t,n){e.parseError("unexpected-end-tag-in-frameset",{name:t}),this.anythingElse(),e.insertionMode.processEndTag(t,n)},n.inHeadNoscript.endTagNoscript=function(t,n){e.popElement(),e.setInsertionMode("inHead")},n.inHeadNoscript.endTagOther=function(t,n){e.parseError("unexpected-end-tag-in-frameset",{name:t})},n.inHeadNoscript.anythingElse=function(){e.popElement(),e.setInsertionMode("inHead")},n.inFrameset=Object.create(n.base),n.inFrameset.start_tag_handlers={html:"startTagHtml",frameset:"startTagFrameset",frame:"startTagFrame",noframes:"startTagNoframes","-default":"startTagOther"},n.inFrameset.end_tag_handlers={frameset:"endTagFrameset",noframes:"endTagNoframes","-default":"endTagOther"},n.inFrameset.processCharacters=function(t){e.parseError("unexpected-char-in-frameset")},n.inFrameset.startTagFrameset=function(t,n){e.insertElement(t,n)},n.inFrameset.startTagFrame=function(t,n){e.insertSelfClosingElement(t,n)},n.inFrameset.startTagNoframes=function(e,t){n.inBody.processStartTag(e,t)},n.inFrameset.startTagOther=function(t,n){e.parseError("unexpected-start-tag-in-frameset",{name:t})},n.inFrameset.endTagFrameset=function(t,n){e.currentStackItem().localName=="html"?e.parseError("unexpected-frameset-in-frameset-innerhtml"):e.popElement(),!e.context&&e.currentStackItem().localName!="frameset"&&e.setInsertionMode("afterFrameset")},n.inFrameset.endTagNoframes=function(e){n.inBody.processEndTag(e)},n.inFrameset.endTagOther=function(t){e.parseError("unexpected-end-tag-in-frameset",{name:t})},n.inTable=Object.create(n.base),n.inTable.start_tag_handlers={html:"startTagHtml",caption:"startTagCaption",colgroup:"startTagColgroup",col:"startTagCol",table:"startTagTable",tbody:"startTagRowGroup",tfoot:"startTagRowGroup",thead:"startTagRowGroup",td:"startTagImplyTbody",th:"startTagImplyTbody",tr:"startTagImplyTbody",style:"startTagStyleScript",script:"startTagStyleScript",input:"startTagInput",form:"startTagForm","-default":"startTagOther"},n.inTable.end_tag_handlers={table:"endTagTable",body:"endTagIgnore",caption:"endTagIgnore",col:"endTagIgnore",colgroup:"endTagIgnore",html:"endTagIgnore",tbody:"endTagIgnore",td:"endTagIgnore",tfoot:"endTagIgnore",th:"endTagIgnore",thead:"endTagIgnore",tr:"endTagIgnore","-default":"endTagOther"},n.inTable.processCharacters=function(t){if(e.currentStackItem().isFosterParenting()){var r=e.insertionModeName;e.setInsertionMode("inTableText"),e.originalInsertionMode=r,e.insertionMode.processCharacters(t)}else e.redirectAttachToFosterParent=!0,n.inBody.processCharacters(t),e.redirectAttachToFosterParent=!1},n.inTable.startTagCaption=function(t,n){e.openElements.popUntilTableScopeMarker(),e.activeFormattingElements.push(g),e.insertElement(t,n),e.setInsertionMode("inCaption")},n.inTable.startTagColgroup=function(t,n){e.openElements.popUntilTableScopeMarker(),e.insertElement(t,n),e.setInsertionMode("inColumnGroup")},n.inTable.startTagCol=function(t,n){this.startTagColgroup("colgroup",[]),e.insertionMode.processStartTag(t,n)},n.inTable.startTagRowGroup=function(t,n){e.openElements.popUntilTableScopeMarker(),e.insertElement(t,n),e.setInsertionMode("inTableBody")},n.inTable.startTagImplyTbody=function(t,n){this.startTagRowGroup("tbody",[]),e.insertionMode.processStartTag(t,n)},n.inTable.startTagTable=function(t,n){e.parseError("unexpected-start-tag-implies-end-tag",{startName:"table",endName:"table"}),e.insertionMode.processEndTag("table"),e.context||e.insertionMode.processStartTag(t,n)},n.inTable.startTagStyleScript=function(e,t){n.inHead.processStartTag(e,t)},n.inTable.startTagInput=function(t,n){for(var r in n)if(n[r].nodeName.toLowerCase()=="type"){if(n[r].nodeValue.toLowerCase()=="hidden"){e.parseError("unexpected-hidden-input-in-table"),e.insertElement(t,n),e.openElements.pop();return}break}this.startTagOther(t,n)},n.inTable.startTagForm=function(t,n){e.parseError("unexpected-form-in-table"),e.form||(e.insertElement(t,n),e.form=e.currentStackItem(),e.openElements.pop())},n.inTable.startTagOther=function(t,r,i){e.parseError("unexpected-start-tag-implies-table-voodoo",{name:t}),e.redirectAttachToFosterParent=!0,n.inBody.processStartTag(t,r,i),e.redirectAttachToFosterParent=!1},n.inTable.endTagTable=function(t){e.openElements.inTableScope(t)?(e.generateImpliedEndTags(),e.currentStackItem().localName!=t&&e.parseError("end-tag-too-early-named",{gotName:"table",expectedName:e.currentStackItem().localName}),e.openElements.popUntilPopped("table"),e.resetInsertionMode()):(l.ok(e.context),e.parseError("unexpected-end-tag",{name:t}))},n.inTable.endTagIgnore=function(t){e.parseError("unexpected-end-tag",{name:t})},n.inTable.endTagOther=function(t){e.parseError("unexpected-end-tag-implies-table-voodoo",{name:t}),e.redirectAttachToFosterParent=!0,n.inBody.processEndTag(t),e.redirectAttachToFosterParent=!1},n.inTableText=Object.create(n.base),n.inTableText.flushCharacters=function(){var t=e.pendingTableCharacters.join("");i(t)?e.insertText(t):(e.redirectAttachToFosterParent=!0,e.reconstructActiveFormattingElements(),e.insertText(t),e.framesetOk=!1,e.redirectAttachToFosterParent=!1),e.pendingTableCharacters=[]},n.inTableText.processComment=function(t){this.flushCharacters(),e.setInsertionMode(e.originalInsertionMode),e.insertionMode.processComment(t)},n.inTableText.processEOF=function(t){this.flushCharacters(),e.setInsertionMode(e.originalInsertionMode),e.insertionMode.processEOF()},n.inTableText.processCharacters=function(t){var n=t.takeRemaining();n=n.replace(/\u0000/g,function(t,n){return e.parseError("invalid-codepoint"),""});if(!n)return;e.pendingTableCharacters.push(n)},n.inTableText.processStartTag=function(t,n,r){this.flushCharacters(),e.setInsertionMode(e.originalInsertionMode),e.insertionMode.processStartTag(t,n,r)},n.inTableText.processEndTag=function(t,n){this.flushCharacters(),e.setInsertionMode(e.originalInsertionMode),e.insertionMode.processEndTag(t,n)},n.inTableBody=Object.create(n.base),n.inTableBody.start_tag_handlers={html:"startTagHtml",tr:"startTagTr",td:"startTagTableCell",th:"startTagTableCell",caption:"startTagTableOther",col:"startTagTableOther",colgroup:"startTagTableOther",tbody:"startTagTableOther",tfoot:"startTagTableOther",thead:"startTagTableOther","-default":"startTagOther"},n.inTableBody.end_tag_handlers={table:"endTagTable",tbody:"endTagTableRowGroup",tfoot:"endTagTableRowGroup",thead:"endTagTableRowGroup",body:"endTagIgnore",caption:"endTagIgnore",col:"endTagIgnore",colgroup:"endTagIgnore",html:"endTagIgnore",td:"endTagIgnore",th:"endTagIgnore",tr:"endTagIgnore","-default":"endTagOther"},n.inTableBody.processCharacters=function(e){n.inTable.processCharacters(e)},n.inTableBody.startTagTr=function(t,n){e.openElements.popUntilTableBodyScopeMarker(),e.insertElement(t,n),e.setInsertionMode("inRow")},n.inTableBody.startTagTableCell=function(t,n){e.parseError("unexpected-cell-in-table-body",{name:t}),this.startTagTr("tr",[]),e.insertionMode.processStartTag(t,n)},n.inTableBody.startTagTableOther=function(t,n){e.openElements.inTableScope("tbody")||e.openElements.inTableScope("thead")||e.openElements.inTableScope("tfoot")?(e.openElements.popUntilTableBodyScopeMarker(),this.endTagTableRowGroup(e.currentStackItem().localName),e.insertionMode.processStartTag(t,n)):e.parseError("unexpected-start-tag",{name:t})},n.inTableBody.startTagOther=function(e,t){n.inTable.processStartTag(e,t)},n.inTableBody.endTagTableRowGroup=function(t){e.openElements.inTableScope(t)?(e.openElements.popUntilTableBodyScopeMarker(),e.popElement(),e.setInsertionMode("inTable")):e.parseError("unexpected-end-tag-in-table-body",{name:t})},n.inTableBody.endTagTable=function(t){e.openElements.inTableScope("tbody")||e.openElements.inTableScope("thead")||e.openElements.inTableScope("tfoot")?(e.openElements.popUntilTableBodyScopeMarker(),this.endTagTableRowGroup(e.currentStackItem().localName),e.insertionMode.processEndTag(t)):e.parseError("unexpected-end-tag",{name:t})},n.inTableBody.endTagIgnore=function(t){e.parseError("unexpected-end-tag-in-table-body",{name:t})},n.inTableBody.endTagOther=function(e){n.inTable.processEndTag(e)},n.inSelect=Object.create(n.base),n.inSelect.start_tag_handlers={html:"startTagHtml",option:"startTagOption",optgroup:"startTagOptgroup",select:"startTagSelect",input:"startTagInput",keygen:"startTagInput",textarea:"startTagInput",script:"startTagScript","-default":"startTagOther"},n.inSelect.end_tag_handlers={option:"endTagOption",optgroup:"endTagOptgroup",select:"endTagSelect",caption:"endTagTableElements",table:"endTagTableElements",tbody:"endTagTableElements",tfoot:"endTagTableElements",thead:"endTagTableElements",tr:"endTagTableElements",td:"endTagTableElements",th:"endTagTableElements","-default":"endTagOther"},n.inSelect.processCharacters=function(t){var n=t.takeRemaining();n=n.replace(/\u0000/g,function(t,n){return e.parseError("invalid-codepoint"),""});if(!n)return;e.insertText(n)},n.inSelect.startTagOption=function(t,n){e.currentStackItem().localName=="option"&&e.popElement(),e.insertElement(t,n)},n.inSelect.startTagOptgroup=function(t,n){e.currentStackItem().localName=="option"&&e.popElement(),e.currentStackItem().localName=="optgroup"&&e.popElement(),e.insertElement(t,n)},n.inSelect.endTagOption=function(t){if(e.currentStackItem().localName!=="option"){e.parseError("unexpected-end-tag-in-select",{name:t});return}e.popElement()},n.inSelect.endTagOptgroup=function(t){e.currentStackItem().localName=="option"&&e.openElements.item(e.openElements.length-2).localName=="optgroup"&&e.popElement(),e.currentStackItem().localName=="optgroup"?e.popElement():e.parseError("unexpected-end-tag-in-select",{name:"optgroup"})},n.inSelect.startTagSelect=function(t){e.parseError("unexpected-select-in-select"),this.endTagSelect("select")},n.inSelect.endTagSelect=function(t){e.openElements.inTableScope("select")?(e.openElements.popUntilPopped("select"),e.resetInsertionMode()):e.parseError("unexpected-end-tag",{name:t})},n.inSelect.startTagInput=function(t,n){e.parseError("unexpected-input-in-select"),e.openElements.inSelectScope("select")&&(this.endTagSelect("select"),e.insertionMode.processStartTag(t,n))},n.inSelect.startTagScript=function(e,t){n.inHead.processStartTag(e,t)},n.inSelect.endTagTableElements=function(t){e.parseError("unexpected-end-tag-in-select",{name:t}),e.openElements.inTableScope(t)&&(this.endTagSelect("select"),e.insertionMode.processEndTag(t))},n.inSelect.startTagOther=function(t,n){e.parseError("unexpected-start-tag-in-select",{name:t})},n.inSelect.endTagOther=function(t){e.parseError("unexpected-end-tag-in-select",{name:t})},n.inSelectInTable=Object.create(n.base),n.inSelectInTable.start_tag_handlers={caption:"startTagTable",table:"startTagTable",tbody:"startTagTable",tfoot:"startTagTable",thead:"startTagTable",tr:"startTagTable",td:"startTagTable",th:"startTagTable","-default":"startTagOther"},n.inSelectInTable.end_tag_handlers={caption:"endTagTable",table:"endTagTable",tbody:"endTagTable",tfoot:"endTagTable",thead:"endTagTable",tr:"endTagTable",td:"endTagTable",th:"endTagTable","-default":"endTagOther"},n.inSelectInTable.processCharacters=function(e){n.inSelect.processCharacters(e)},n.inSelectInTable.startTagTable=function(t,n){e.parseError("unexpected-table-element-start-tag-in-select-in-table",{name:t}),this.endTagOther("select"),e.insertionMode.processStartTag(t,n)},n.inSelectInTable.startTagOther=function(e,t,r){n.inSelect.processStartTag(e,t,r)},n.inSelectInTable.endTagTable=function(t){e.parseError("unexpected-table-element-end-tag-in-select-in-table",{name:t}),e.openElements.inTableScope(t)&&(this.endTagOther("select"),e.insertionMode.processEndTag(t))},n.inSelectInTable.endTagOther=function(e){n.inSelect.processEndTag(e)},n.inRow=Object.create(n.base),n.inRow.start_tag_handlers={html:"startTagHtml",td:"startTagTableCell",th:"startTagTableCell",caption:"startTagTableOther",col:"startTagTableOther",colgroup:"startTagTableOther",tbody:"startTagTableOther",tfoot:"startTagTableOther",thead:"startTagTableOther",tr:"startTagTableOther","-default":"startTagOther"},n.inRow.end_tag_handlers={tr:"endTagTr",table:"endTagTable",tbody:"endTagTableRowGroup",tfoot:"endTagTableRowGroup",thead:"endTagTableRowGroup",body:"endTagIgnore",caption:"endTagIgnore",col:"endTagIgnore",colgroup:"endTagIgnore",html:"endTagIgnore",td:"endTagIgnore",th:"endTagIgnore","-default":"endTagOther"},n.inRow.processCharacters=function(e){n.inTable.processCharacters(e)},n.inRow.startTagTableCell=function(t,n){e.openElements.popUntilTableRowScopeMarker(),e.insertElement(t,n),e.setInsertionMode("inCell"),e.activeFormattingElements.push(g)},n.inRow.startTagTableOther=function(t,n){var r=this.ignoreEndTagTr();this.endTagTr("tr"),r||e.insertionMode.processStartTag(t,n)},n.inRow.startTagOther=function(e,t,r){n.inTable.processStartTag(e,t,r)},n.inRow.endTagTr=function(t){this.ignoreEndTagTr()?(l.ok(e.context),e.parseError("unexpected-end-tag",{name:t})):(e.openElements.popUntilTableRowScopeMarker(),e.popElement(),e.setInsertionMode("inTableBody"))},n.inRow.endTagTable=function(t){var n=this.ignoreEndTagTr();this.endTagTr("tr"),n||e.insertionMode.processEndTag(t)},n.inRow.endTagTableRowGroup=function(t){e.openElements.inTableScope(t)?(this.endTagTr("tr"),e.insertionMode.processEndTag(t)):e.parseError("unexpected-end-tag",{name:t})},n.inRow.endTagIgnore=function(t){e.parseError("unexpected-end-tag-in-table-row",{name:t})},n.inRow.endTagOther=function(e){n.inTable.processEndTag(e)},n.inRow.ignoreEndTagTr=function(){return!e.openElements.inTableScope("tr")},n.afterAfterFrameset=Object.create(n.base),n.afterAfterFrameset.start_tag_handlers={html:"startTagHtml",noframes:"startTagNoFrames","-default":"startTagOther"},n.afterAfterFrameset.processEOF=function(){},n.afterAfterFrameset.processComment=function(t){e.insertComment(t,e.document)},n.afterAfterFrameset.processCharacters=function(n){var r=n.takeRemaining(),i="";for(var s=0;s0&&this.currentStackItem().isForeign()},a.prototype.isSelfClosingFlagAcknowledged=function(){return this.selfClosingFlagAcknowledged},a.prototype.createElement=function(e,t,n){throw new Error("Not implemented")},a.prototype.attachNode=function(e,t){throw new Error("Not implemented")},a.prototype.attachNodeToFosterParent=function(e,t,n){throw new Error("Not implemented")},a.prototype.detachFromParent=function(e){throw new Error("Not implemented")},a.prototype.addAttributesToElement=function(e,t){throw new Error("Not implemented")},a.prototype.insertHtmlElement=function(e){var t=this.createElement("http://www.w3.org/1999/xhtml","html",e);return this.attachNode(t,this.document),this.openElements.pushHtmlElement(new m("http://www.w3.org/1999/xhtml","html",e,t)),t},a.prototype.insertHeadElement=function(e){var t=this.createElement("http://www.w3.org/1999/xhtml","head",e);return this.head=new m("http://www.w3.org/1999/xhtml","head",e,t),this.attachNode(t,this.openElements.top.node),this.openElements.pushHeadElement(this.head),t},a.prototype.insertBodyElement=function(e){var t=this.createElement("http://www.w3.org/1999/xhtml","body",e);return this.attachNode(t,this.openElements.top.node),this.openElements.pushBodyElement(new m("http://www.w3.org/1999/xhtml","body",e,t)),t},a.prototype.insertIntoFosterParent=function(e){var t=this.openElements.findIndex("table"),n=this.openElements.item(t).node;if(t===0)return this.attachNode(e,n);this.attachNodeToFosterParent(e,n,this.openElements.item(t-1).node)},a.prototype.insertElement=function(e,t,n,r){n||(n="http://www.w3.org/1999/xhtml");var i=this.createElement(n,e,t);this.shouldFosterParent()?this.insertIntoFosterParent(i):this.attachNode(i,this.openElements.top.node),r||this.openElements.push(new m(n,e,t,i))},a.prototype.insertFormattingElement=function(e,t){this.insertElement(e,t,"http://www.w3.org/1999/xhtml"),this.appendElementToActiveFormattingElements(this.currentStackItem())},a.prototype.insertSelfClosingElement=function(e,t){this.selfClosingFlagAcknowledged=!0,this.insertElement(e,t,"http://www.w3.org/1999/xhtml",!0)},a.prototype.insertForeignElement=function(e,t,n,r){r&&(this.selfClosingFlagAcknowledged=!0),this.insertElement(e,t,n,r)},a.prototype.insertComment=function(e,t){throw new Error("Not implemented")},a.prototype.insertDoctype=function(e,t,n){throw new Error("Not implemented")},a.prototype.insertText=function(e){throw new Error("Not implemented")},a.prototype.currentStackItem=function(){return this.openElements.top},a.prototype.popElement=function(){return this.openElements.pop()},a.prototype.shouldFosterParent=function(){return this.redirectAttachToFosterParent&&this.currentStackItem().isFosterParenting()},a.prototype.generateImpliedEndTags=function(e){var t=this.openElements.top.localName;["dd","dt","li","option","optgroup","p","rp","rt"].indexOf(t)!=-1&&t!=e&&(this.popElement(),this.generateImpliedEndTags(e))},a.prototype.reconstructActiveFormattingElements=function(){if(this.activeFormattingElements.length===0)return;var e=this.activeFormattingElements.length-1,t=this.activeFormattingElements[e];if(t==g||this.openElements.contains(t))return;while(t!=g&&!this.openElements.contains(t)){e-=1,t=this.activeFormattingElements[e];if(!t)break}for(;;){e+=1,t=this.activeFormattingElements[e],this.insertElement(t.localName,t.attributes);var n=this.currentStackItem();this.activeFormattingElements[e]=n;if(n==this.activeFormattingElements[this.activeFormattingElements.length-1])break}},a.prototype.ensureNoahsArkCondition=function(e){var t=3;if(this.activeFormattingElements.length=0;i--){var s=this.activeFormattingElements[i];if(s===g)break;if(e.localName!==s.localName||e.namespaceURI!==s.namespaceURI)continue;if(s.attributes.length!=r)continue;n.push(s)}if(n.length=0&&this.activeFormattingElements.splice(t,1)},a.prototype.elementInActiveFormattingElements=function(e){var t=this.activeFormattingElements;for(var n=t.length-1;n>=0;n--){if(t[n]==g)break;if(t[n].localName==e)return t[n]}return!1},a.prototype.reparentChildren=function(e,t){throw new Error("Not implemented")},a.prototype.clearActiveFormattingElements=function(){while(this.activeFormattingElements.length!==0&&this.activeFormattingElements.pop()!=g);},a.prototype.setFragmentContext=function(e){this.context=e},a.prototype.parseError=function(e,t,n){if(!this.errorHandler)return;var r=f(c[e],t);this.errorHandler.error(r,this.tokenizer._inputStream.location(),e)},a.prototype.resetInsertionMode=function(){var e=!1,t=null;for(var n=this.openElements.length-1;n>=0;n--){t=this.openElements.item(n),n===0&&(l.ok(this.context),e=!0,t=new m("http://www.w3.org/1999/xhtml",this.context,[],null));if(t.namespaceURI==="http://www.w3.org/1999/xhtml"){if(t.localName==="select")return this.setInsertionMode("inSelect");if(t.localName==="td"||t.localName==="th")return this.setInsertionMode("inCell");if(t.localName==="tr")return this.setInsertionMode("inRow");if(t.localName==="tbody"||t.localName==="thead"||t.localName==="tfoot")return this.setInsertionMode("inTableBody");if(t.localName==="caption")return this.setInsertionMode("inCaption");if(t.localName==="colgroup")return this.setInsertionMode("inColumnGroup");if(t.localName==="table")return this.setInsertionMode("inTable");if(t.localName==="head"&&!e)return this.setInsertionMode("inHead");if(t.localName==="body")return this.setInsertionMode("inBody");if(t.localName==="frameset")return this.setInsertionMode("inFrameset");if(t.localName==="html")return this.openElements.headElement?this.setInsertionMode("afterHead"):this.setInsertionMode("beforeHead")}if(e)return this.setInsertionMode("inBody")}},a.prototype.processGenericRCDATAStartTag=function(e,t){this.insertElement(e,t),this.tokenizer.setState(d.RCDATA),this.originalInsertionMode=this.insertionModeName,this.setInsertionMode("text")},a.prototype.processGenericRawTextStartTag=function(e,t){this.insertElement(e,t),this.tokenizer.setState(d.RAWTEXT),this.originalInsertionMode=this.insertionModeName,this.setInsertionMode("text")},a.prototype.adjustMathMLAttributes=function(e){return e.forEach(function(e){e.namespaceURI="http://www.w3.org/1998/Math/MathML",h.MATHMLAttributeMap[e.nodeName]&&(e.nodeName=h.MATHMLAttributeMap[e.nodeName])}),e},a.prototype.adjustSVGTagNameCase=function(e){return h.SVGTagMap[e]||e},a.prototype.adjustSVGAttributes=function(e){return e.forEach(function(e){e.namespaceURI="http://www.w3.org/2000/svg",h.SVGAttributeMap[e.nodeName]&&(e.nodeName=h.SVGAttributeMap[e.nodeName])}),e},a.prototype.adjustForeignAttributes=function(e){for(var t=0;t' instead.","expected-tag-name-but-got-question-mark":"Expected tag name. Got '?' instead. (HTML doesn't support processing instructions.)","expected-tag-name":"Expected tag name. Got something else instead.","expected-closing-tag-but-got-right-bracket":"Expected closing tag. Got '>' instead. Ignoring ''.","expected-closing-tag-but-got-eof":"Expected closing tag. Unexpected end of file.","expected-closing-tag-but-got-char":"Expected closing tag. Unexpected character '{data}' found.","eof-in-tag-name":"Unexpected end of file in the tag name.","expected-attribute-name-but-got-eof":"Unexpected end of file. Expected attribute name instead.","eof-in-attribute-name":"Unexpected end of file in attribute name.","invalid-character-in-attribute-name":"Invalid character in attribute name.","duplicate-attribute":"Dropped duplicate attribute '{name}' on tag.","expected-end-of-tag-but-got-eof":"Unexpected end of file. Expected = or end of tag.","expected-attribute-value-but-got-eof":"Unexpected end of file. Expected attribute value.","expected-attribute-value-but-got-right-bracket":"Expected attribute value. Got '>' instead.","unexpected-character-in-unquoted-attribute-value":"Unexpected character in unquoted attribute","invalid-character-after-attribute-name":"Unexpected character after attribute name.","unexpected-character-after-attribute-value":"Unexpected character after attribute value.","eof-in-attribute-value-double-quote":'Unexpected end of file in attribute value (").',"eof-in-attribute-value-single-quote":"Unexpected end of file in attribute value (').","eof-in-attribute-value-no-quotes":"Unexpected end of file in attribute value.","eof-after-attribute-value":"Unexpected end of file after attribute value.","unexpected-eof-after-solidus-in-tag":"Unexpected end of file in tag. Expected >.","unexpected-character-after-solidus-in-tag":"Unexpected character after / in tag. Expected >.","expected-dashes-or-doctype":"Expected '--' or 'DOCTYPE'. Not found.","unexpected-bang-after-double-dash-in-comment":"Unexpected ! after -- in comment.","incorrect-comment":"Incorrect comment.","eof-in-comment":"Unexpected end of file in comment.","eof-in-comment-end-dash":"Unexpected end of file in comment (-).","unexpected-dash-after-double-dash-in-comment":"Unexpected '-' after '--' found in comment.","eof-in-comment-double-dash":"Unexpected end of file in comment (--).","eof-in-comment-end-bang-state":"Unexpected end of file in comment.","unexpected-char-in-comment":"Unexpected character in comment found.","need-space-after-doctype":"No space after literal string 'DOCTYPE'.","expected-doctype-name-but-got-right-bracket":"Unexpected > character. Expected DOCTYPE name.","expected-doctype-name-but-got-eof":"Unexpected end of file. Expected DOCTYPE name.","eof-in-doctype-name":"Unexpected end of file in DOCTYPE name.","eof-in-doctype":"Unexpected end of file in DOCTYPE.","expected-space-or-right-bracket-in-doctype":"Expected space or '>'. Got '{data}'.","unexpected-end-of-doctype":"Unexpected end of DOCTYPE.","unexpected-char-in-doctype":"Unexpected character in DOCTYPE.","eof-in-bogus-doctype":"Unexpected end of file in bogus doctype.","eof-in-innerhtml":"Unexpected EOF in inner html mode.","unexpected-doctype":"Unexpected DOCTYPE. Ignored.","non-html-root":"html needs to be the first start tag.","expected-doctype-but-got-eof":"Unexpected End of file. Expected DOCTYPE.","unknown-doctype":"Erroneous DOCTYPE. Expected .","quirky-doctype":"Quirky doctype. Expected .","almost-standards-doctype":"Almost standards mode doctype. Expected .","obsolete-doctype":"Obsolete doctype. Expected .","expected-doctype-but-got-chars":"Non-space characters found without seeing a doctype first. Expected e.g. .","expected-doctype-but-got-start-tag":"Start tag seen without seeing a doctype first. Expected e.g. .","expected-doctype-but-got-end-tag":"End tag seen without seeing a doctype first. Expected e.g. .","end-tag-after-implied-root":"Unexpected end tag ({name}) after the (implied) root element.","expected-named-closing-tag-but-got-eof":"Unexpected end of file. Expected end tag ({name}).","two-heads-are-not-better-than-one":"Unexpected start tag head in existing head. Ignored.","unexpected-end-tag":"Unexpected end tag ({name}). Ignored.","unexpected-start-tag-out-of-my-head":"Unexpected start tag ({name}) that can be in head. Moved.","unexpected-start-tag":"Unexpected start tag ({name}).","missing-end-tag":"Missing end tag ({name}).","missing-end-tags":"Missing end tags ({name}).","unexpected-start-tag-implies-end-tag":"Unexpected start tag ({startName}) implies end tag ({endName}).","unexpected-start-tag-treated-as":"Unexpected start tag ({originalName}). Treated as {newName}.","deprecated-tag":"Unexpected start tag {name}. Don't use it!","unexpected-start-tag-ignored":"Unexpected start tag {name}. Ignored.","expected-one-end-tag-but-got-another":"Unexpected end tag ({gotName}). Missing end tag ({expectedName}).","end-tag-too-early":"End tag ({name}) seen too early. Expected other end tag.","end-tag-too-early-named":"Unexpected end tag ({gotName}). Expected end tag ({expectedName}.","end-tag-too-early-ignored":"End tag ({name}) seen too early. Ignored.","adoption-agency-1.1":"End tag ({name}) violates step 1, paragraph 1 of the adoption agency algorithm.","adoption-agency-1.2":"End tag ({name}) violates step 1, paragraph 2 of the adoption agency algorithm.","adoption-agency-1.3":"End tag ({name}) violates step 1, paragraph 3 of the adoption agency algorithm.","adoption-agency-4.4":"End tag ({name}) violates step 4, paragraph 4 of the adoption agency algorithm.","unexpected-end-tag-treated-as":"Unexpected end tag ({originalName}). Treated as {newName}.","no-end-tag":"This element ({name}) has no end tag.","unexpected-implied-end-tag-in-table":"Unexpected implied end tag ({name}) in the table phase.","unexpected-implied-end-tag-in-table-body":"Unexpected implied end tag ({name}) in the table body phase.","unexpected-char-implies-table-voodoo":"Unexpected non-space characters in table context caused voodoo mode.","unexpected-hidden-input-in-table":"Unexpected input with type hidden in table context.","unexpected-form-in-table":"Unexpected form in table context.","unexpected-start-tag-implies-table-voodoo":"Unexpected start tag ({name}) in table context caused voodoo mode.","unexpected-end-tag-implies-table-voodoo":"Unexpected end tag ({name}) in table context caused voodoo mode.","unexpected-cell-in-table-body":"Unexpected table cell start tag ({name}) in the table body phase.","unexpected-cell-end-tag":"Got table cell end tag ({name}) while required end tags are missing.","unexpected-end-tag-in-table-body":"Unexpected end tag ({name}) in the table body phase. Ignored.","unexpected-implied-end-tag-in-table-row":"Unexpected implied end tag ({name}) in the table row phase.","unexpected-end-tag-in-table-row":"Unexpected end tag ({name}) in the table row phase. Ignored.","unexpected-select-in-select":"Unexpected select start tag in the select phase treated as select end tag.","unexpected-input-in-select":"Unexpected input start tag in the select phase.","unexpected-start-tag-in-select":"Unexpected start tag token ({name}) in the select phase. Ignored.","unexpected-end-tag-in-select":"Unexpected end tag ({name}) in the select phase. Ignored.","unexpected-table-element-start-tag-in-select-in-table":"Unexpected table element start tag ({name}) in the select in table phase.","unexpected-table-element-end-tag-in-select-in-table":"Unexpected table element end tag ({name}) in the select in table phase.","unexpected-char-after-body":"Unexpected non-space characters in the after body phase.","unexpected-start-tag-after-body":"Unexpected start tag token ({name}) in the after body phase.","unexpected-end-tag-after-body":"Unexpected end tag token ({name}) in the after body phase.","unexpected-char-in-frameset":"Unepxected characters in the frameset phase. Characters ignored.","unexpected-start-tag-in-frameset":"Unexpected start tag token ({name}) in the frameset phase. Ignored.","unexpected-frameset-in-frameset-innerhtml":"Unexpected end tag token (frameset in the frameset phase (innerHTML).","unexpected-end-tag-in-frameset":"Unexpected end tag token ({name}) in the frameset phase. Ignored.","unexpected-char-after-frameset":"Unexpected non-space characters in the after frameset phase. Ignored.","unexpected-start-tag-after-frameset":"Unexpected start tag ({name}) in the after frameset phase. Ignored.","unexpected-end-tag-after-frameset":"Unexpected end tag ({name}) in the after frameset phase. Ignored.","expected-eof-but-got-char":"Unexpected non-space characters. Expected end of file.","expected-eof-but-got-start-tag":"Unexpected start tag ({name}). Expected end of file.","expected-eof-but-got-end-tag":"Unexpected end tag ({name}). Expected end of file.","unexpected-end-table-in-caption":"Unexpected end table tag in caption. Generates implied end caption.","end-html-in-innerhtml":"Unexpected html end tag in inner html mode.","eof-in-table":"Unexpected end of file. Expected table content.","eof-in-script":"Unexpected end of file. Expected script content.","non-void-element-with-trailing-solidus":"Trailing solidus not allowed on element {name}.","unexpected-html-element-in-foreign-content":'HTML start tag "{name}" in a foreign namespace context.',"unexpected-start-tag-in-table":"Unexpected {name}. Expected table content."}},{}],DaboPu:[function(e,t,n){function r(){this.contentHandler=null,this._errorHandler=null,this._treeBuilder=new i,this._tokenizer=new s(this._treeBuilder),this._scriptingEnabled=!1}var i=e("./SAXTreeBuilder").SAXTreeBuilder,s=e("../Tokenizer").Tokenizer,o=e("./TreeParser").TreeParser;r.prototype.parse=function(e){this._tokenizer.tokenize(e);var t=this._treeBuilder.document;t&&(new o(this.contentHandler)).parse(t)},r.prototype.parseFragment=function(e,t){this._treeBuilder.setFragmentContext(t),this._tokenizer.tokenize(e);var n=this._treeBuilder.getFragment();n&&(new o(this.contentHandler)).parse(n)},Object.defineProperty(r.prototype,"scriptingEnabled",{get:function(){return this._scriptingEnabled},set:function(e){this._scriptingEnabled=e,this._treeBuilder.scriptingEnabled=e}}),Object.defineProperty(r.prototype,"errorHandler",{get:function(){return this._errorHandler},set:function(e){this._errorHandler=e,this._treeBuilder.errorHandler=e}}),n.SAXParser=r},{"../Tokenizer":5,"./SAXTreeBuilder":10,"./TreeParser":11}],10:[function(e,t,n){function r(){b.call(this)}function i(e,t){for(var n=0;n","GT;":">","Gamma;":"Γ","Gammad;":"Ϝ","Gbreve;":"Ğ","Gcedil;":"Ģ","Gcirc;":"Ĝ","Gcy;":"Г","Gdot;":"Ġ","Gfr;":"ᵐA","Gg;":"⋙","Gopf;":"ᵓE","GreaterEqual;":"≥","GreaterEqualLess;":"⋛","GreaterFullEqual;":"≧","GreaterGreater;":"⪢","GreaterLess;":"≷","GreaterSlantEqual;":"⩾","GreaterTilde;":"≳","Gscr;":"ᵊ2","Gt;":"≫","HARDcy;":"Ъ","Hacek;":"ˇ","Hat;":"^","Hcirc;":"Ĥ","Hfr;":"ℌ","HilbertSpace;":"ℋ","Hopf;":"ℍ","HorizontalLine;":"─","Hscr;":"ℋ","Hstrok;":"Ħ","HumpDownHump;":"≎","HumpEqual;":"≏","IEcy;":"Е","IJlig;":"IJ","IOcy;":"Ё",Iacute:"Í","Iacute;":"Í",Icirc:"Î","Icirc;":"Î","Icy;":"И","Idot;":"İ","Ifr;":"ℑ",Igrave:"Ì","Igrave;":"Ì","Im;":"ℑ","Imacr;":"Ī","ImaginaryI;":"ⅈ","Implies;":"⇒","Int;":"∬","Integral;":"∫","Intersection;":"⋂","InvisibleComma;":"⁣","InvisibleTimes;":"⁢","Iogon;":"Į","Iopf;":"ᵔ0","Iota;":"Ι","Iscr;":"ℐ","Itilde;":"Ĩ","Iukcy;":"І",Iuml:"Ï","Iuml;":"Ï","Jcirc;":"Ĵ","Jcy;":"Й","Jfr;":"ᵐD","Jopf;":"ᵔ1","Jscr;":"ᵊ5","Jsercy;":"Ј","Jukcy;":"Є","KHcy;":"Х","KJcy;":"Ќ","Kappa;":"Κ","Kcedil;":"Ķ","Kcy;":"К","Kfr;":"ᵐE","Kopf;":"ᵔ2","Kscr;":"ᵊ6","LJcy;":"Љ",LT:"<","LT;":"<","Lacute;":"Ĺ","Lambda;":"Λ","Lang;":"⟪","Laplacetrf;":"ℒ","Larr;":"↞","Lcaron;":"Ľ","Lcedil;":"Ļ","Lcy;":"Л","LeftAngleBracket;":"⟨","LeftArrow;":"←","LeftArrowBar;":"⇤","LeftArrowRightArrow;":"⇆","LeftCeiling;":"⌈","LeftDoubleBracket;":"⟦","LeftDownTeeVector;":"⥡","LeftDownVector;":"⇃","LeftDownVectorBar;":"⥙","LeftFloor;":"⌊","LeftRightArrow;":"↔","LeftRightVector;":"⥎","LeftTee;":"⊣","LeftTeeArrow;":"↤","LeftTeeVector;":"⥚","LeftTriangle;":"⊲","LeftTriangleBar;":"⧏","LeftTriangleEqual;":"⊴","LeftUpDownVector;":"⥑","LeftUpTeeVector;":"⥠","LeftUpVector;":"↿","LeftUpVectorBar;":"⥘","LeftVector;":"↼","LeftVectorBar;":"⥒","Leftarrow;":"⇐","Leftrightarrow;":"⇔","LessEqualGreater;":"⋚","LessFullEqual;":"≦","LessGreater;":"≶","LessLess;":"⪡","LessSlantEqual;":"⩽","LessTilde;":"≲","Lfr;":"ᵐF","Ll;":"⋘","Lleftarrow;":"⇚","Lmidot;":"Ŀ","LongLeftArrow;":"⟵","LongLeftRightArrow;":"⟷","LongRightArrow;":"⟶","Longleftarrow;":"⟸","Longleftrightarrow;":"⟺","Longrightarrow;":"⟹","Lopf;":"ᵔ3","LowerLeftArrow;":"↙","LowerRightArrow;":"↘","Lscr;":"ℒ","Lsh;":"↰","Lstrok;":"Ł","Lt;":"≪","Map;":"⤅","Mcy;":"М","MediumSpace;":" ","Mellintrf;":"ℳ","Mfr;":"ᵑ0","MinusPlus;":"∓","Mopf;":"ᵔ4","Mscr;":"ℳ","Mu;":"Μ","NJcy;":"Њ","Nacute;":"Ń","Ncaron;":"Ň","Ncedil;":"Ņ","Ncy;":"Н","NegativeMediumSpace;":"​","NegativeThickSpace;":"​","NegativeThinSpace;":"​","NegativeVeryThinSpace;":"​","NestedGreaterGreater;":"≫","NestedLessLess;":"≪","NewLine;":"\n","Nfr;":"ᵑ1","NoBreak;":"⁠","NonBreakingSpace;":" ","Nopf;":"ℕ","Not;":"⫬","NotCongruent;":"≢","NotCupCap;":"≭","NotDoubleVerticalBar;":"∦","NotElement;":"∉","NotEqual;":"≠","NotEqualTilde;":"≂̸","NotExists;":"∄","NotGreater;":"≯","NotGreaterEqual;":"≱","NotGreaterFullEqual;":"≧̸","NotGreaterGreater;":"≫̸","NotGreaterLess;":"≹","NotGreaterSlantEqual;":"⩾̸","NotGreaterTilde;":"≵","NotHumpDownHump;":"≎̸","NotHumpEqual;":"≏̸","NotLeftTriangle;":"⋪","NotLeftTriangleBar;":"⧏̸","NotLeftTriangleEqual;":"⋬","NotLess;":"≮","NotLessEqual;":"≰","NotLessGreater;":"≸","NotLessLess;":"≪̸","NotLessSlantEqual;":"⩽̸","NotLessTilde;":"≴","NotNestedGreaterGreater;":"⪢̸","NotNestedLessLess;":"⪡̸","NotPrecedes;":"⊀","NotPrecedesEqual;":"⪯̸","NotPrecedesSlantEqual;":"⋠","NotReverseElement;":"∌","NotRightTriangle;":"⋫","NotRightTriangleBar;":"⧐̸","NotRightTriangleEqual;":"⋭","NotSquareSubset;":"⊏̸","NotSquareSubsetEqual;":"⋢","NotSquareSuperset;":"⊐̸","NotSquareSupersetEqual;":"⋣","NotSubset;":"⊂⃒","NotSubsetEqual;":"⊈","NotSucceeds;":"⊁","NotSucceedsEqual;":"⪰̸","NotSucceedsSlantEqual;":"⋡","NotSucceedsTilde;":"≿̸","NotSuperset;":"⊃⃒","NotSupersetEqual;":"⊉","NotTilde;":"≁","NotTildeEqual;":"≄","NotTildeFullEqual;":"≇","NotTildeTilde;":"≉","NotVerticalBar;":"∤","Nscr;":"ᵊ9",Ntilde:"Ñ","Ntilde;":"Ñ","Nu;":"Ν","OElig;":"Œ",Oacute:"Ó","Oacute;":"Ó",Ocirc:"Ô","Ocirc;":"Ô","Ocy;":"О","Odblac;":"Ő","Ofr;":"ᵑ2",Ograve:"Ò","Ograve;":"Ò","Omacr;":"Ō","Omega;":"Ω","Omicron;":"Ο","Oopf;":"ᵔ6","OpenCurlyDoubleQuote;":"“","OpenCurlyQuote;":"‘","Or;":"⩔","Oscr;":"ᵊA",Oslash:"Ø","Oslash;":"Ø",Otilde:"Õ","Otilde;":"Õ","Otimes;":"⨷",Ouml:"Ö","Ouml;":"Ö","OverBar;":"‾","OverBrace;":"⏞","OverBracket;":"⎴","OverParenthesis;":"⏜","PartialD;":"∂","Pcy;":"П","Pfr;":"ᵑ3","Phi;":"Φ","Pi;":"Π","PlusMinus;":"±","Poincareplane;":"ℌ","Popf;":"ℙ","Pr;":"⪻","Precedes;":"≺","PrecedesEqual;":"⪯","PrecedesSlantEqual;":"≼","PrecedesTilde;":"≾","Prime;":"″","Product;":"∏","Proportion;":"∷","Proportional;":"∝","Pscr;":"ᵊB","Psi;":"Ψ",QUOT:'"',"QUOT;":'"',"Qfr;":"ᵑ4","Qopf;":"ℚ","Qscr;":"ᵊC","RBarr;":"⤐",REG:"®","REG;":"®","Racute;":"Ŕ","Rang;":"⟫","Rarr;":"↠","Rarrtl;":"⤖","Rcaron;":"Ř","Rcedil;":"Ŗ","Rcy;":"Р","Re;":"ℜ","ReverseElement;":"∋","ReverseEquilibrium;":"⇋","ReverseUpEquilibrium;":"⥯","Rfr;":"ℜ","Rho;":"Ρ","RightAngleBracket;":"⟩","RightArrow;":"→","RightArrowBar;":"⇥","RightArrowLeftArrow;":"⇄","RightCeiling;":"⌉","RightDoubleBracket;":"⟧","RightDownTeeVector;":"⥝","RightDownVector;":"⇂","RightDownVectorBar;":"⥕","RightFloor;":"⌋","RightTee;":"⊢","RightTeeArrow;":"↦","RightTeeVector;":"⥛","RightTriangle;":"⊳","RightTriangleBar;":"⧐","RightTriangleEqual;":"⊵","RightUpDownVector;":"⥏","RightUpTeeVector;":"⥜","RightUpVector;":"↾","RightUpVectorBar;":"⥔","RightVector;":"⇀","RightVectorBar;":"⥓","Rightarrow;":"⇒","Ropf;":"ℝ","RoundImplies;":"⥰","Rrightarrow;":"⇛","Rscr;":"ℛ","Rsh;":"↱","RuleDelayed;":"⧴","SHCHcy;":"Щ","SHcy;":"Ш","SOFTcy;":"Ь","Sacute;":"Ś","Sc;":"⪼","Scaron;":"Š","Scedil;":"Ş","Scirc;":"Ŝ","Scy;":"С","Sfr;":"ᵑ6","ShortDownArrow;":"↓","ShortLeftArrow;":"←","ShortRightArrow;":"→","ShortUpArrow;":"↑","Sigma;":"Σ","SmallCircle;":"∘","Sopf;":"ᵔA","Sqrt;":"√","Square;":"□","SquareIntersection;":"⊓","SquareSubset;":"⊏","SquareSubsetEqual;":"⊑","SquareSuperset;":"⊐","SquareSupersetEqual;":"⊒","SquareUnion;":"⊔","Sscr;":"ᵊE","Star;":"⋆","Sub;":"⋐","Subset;":"⋐","SubsetEqual;":"⊆","Succeeds;":"≻","SucceedsEqual;":"⪰","SucceedsSlantEqual;":"≽","SucceedsTilde;":"≿","SuchThat;":"∋","Sum;":"∑","Sup;":"⋑","Superset;":"⊃","SupersetEqual;":"⊇","Supset;":"⋑",THORN:"Þ","THORN;":"Þ","TRADE;":"™","TSHcy;":"Ћ","TScy;":"Ц","Tab;":" ","Tau;":"Τ","Tcaron;":"Ť","Tcedil;":"Ţ","Tcy;":"Т","Tfr;":"ᵑ7","Therefore;":"∴","Theta;":"Θ","ThickSpace;":"  ","ThinSpace;":" ","Tilde;":"∼","TildeEqual;":"≃","TildeFullEqual;":"≅","TildeTilde;":"≈","Topf;":"ᵔB","TripleDot;":"⃛","Tscr;":"ᵊF","Tstrok;":"Ŧ",Uacute:"Ú","Uacute;":"Ú","Uarr;":"↟","Uarrocir;":"⥉","Ubrcy;":"Ў","Ubreve;":"Ŭ",Ucirc:"Û","Ucirc;":"Û","Ucy;":"У","Udblac;":"Ű","Ufr;":"ᵑ8",Ugrave:"Ù","Ugrave;":"Ù","Umacr;":"Ū","UnderBar;":"_","UnderBrace;":"⏟","UnderBracket;":"⎵","UnderParenthesis;":"⏝","Union;":"⋃","UnionPlus;":"⊎","Uogon;":"Ų","Uopf;":"ᵔC","UpArrow;":"↑","UpArrowBar;":"⤒","UpArrowDownArrow;":"⇅","UpDownArrow;":"↕","UpEquilibrium;":"⥮","UpTee;":"⊥","UpTeeArrow;":"↥","Uparrow;":"⇑","Updownarrow;":"⇕","UpperLeftArrow;":"↖","UpperRightArrow;":"↗","Upsi;":"ϒ","Upsilon;":"Υ","Uring;":"Ů","Uscr;":"ᵋ0","Utilde;":"Ũ",Uuml:"Ü","Uuml;":"Ü","VDash;":"⊫","Vbar;":"⫫","Vcy;":"В","Vdash;":"⊩","Vdashl;":"⫦","Vee;":"⋁","Verbar;":"‖","Vert;":"‖","VerticalBar;":"∣","VerticalLine;":"|","VerticalSeparator;":"❘","VerticalTilde;":"≀","VeryThinSpace;":" ","Vfr;":"ᵑ9","Vopf;":"ᵔD","Vscr;":"ᵋ1","Vvdash;":"⊪","Wcirc;":"Ŵ","Wedge;":"⋀","Wfr;":"ᵑA","Wopf;":"ᵔE","Wscr;":"ᵋ2","Xfr;":"ᵑB","Xi;":"Ξ","Xopf;":"ᵔF","Xscr;":"ᵋ3","YAcy;":"Я","YIcy;":"Ї","YUcy;":"Ю",Yacute:"Ý","Yacute;":"Ý","Ycirc;":"Ŷ","Ycy;":"Ы","Yfr;":"ᵑC","Yopf;":"ᵕ0","Yscr;":"ᵋ4","Yuml;":"Ÿ","ZHcy;":"Ж","Zacute;":"Ź","Zcaron;":"Ž","Zcy;":"З","Zdot;":"Ż","ZeroWidthSpace;":"​","Zeta;":"Ζ","Zfr;":"ℨ","Zopf;":"ℤ","Zscr;":"ᵋ5",aacute:"á","aacute;":"á","abreve;":"ă","ac;":"∾","acE;":"∾̳","acd;":"∿",acirc:"â","acirc;":"â",acute:"´","acute;":"´","acy;":"а",aelig:"æ","aelig;":"æ","af;":"⁡","afr;":"ᵑE",agrave:"à","agrave;":"à","alefsym;":"ℵ","aleph;":"ℵ","alpha;":"α","amacr;":"ā","amalg;":"⨿",amp:"&","amp;":"&","and;":"∧","andand;":"⩕","andd;":"⩜","andslope;":"⩘","andv;":"⩚","ang;":"∠","ange;":"⦤","angle;":"∠","angmsd;":"∡","angmsdaa;":"⦨","angmsdab;":"⦩","angmsdac;":"⦪","angmsdad;":"⦫","angmsdae;":"⦬","angmsdaf;":"⦭","angmsdag;":"⦮","angmsdah;":"⦯","angrt;":"∟","angrtvb;":"⊾","angrtvbd;":"⦝","angsph;":"∢","angst;":"Å","angzarr;":"⍼","aogon;":"ą","aopf;":"ᵕ2","ap;":"≈","apE;":"⩰","apacir;":"⩯","ape;":"≊","apid;":"≋","apos;":"'","approx;":"≈","approxeq;":"≊",aring:"å","aring;":"å","ascr;":"ᵋ6","ast;":"*","asymp;":"≈","asympeq;":"≍",atilde:"ã","atilde;":"ã",auml:"ä","auml;":"ä","awconint;":"∳","awint;":"⨑","bNot;":"⫭","backcong;":"≌","backepsilon;":"϶","backprime;":"‵","backsim;":"∽","backsimeq;":"⋍","barvee;":"⊽","barwed;":"⌅","barwedge;":"⌅","bbrk;":"⎵","bbrktbrk;":"⎶","bcong;":"≌","bcy;":"б","bdquo;":"„","becaus;":"∵","because;":"∵","bemptyv;":"⦰","bepsi;":"϶","bernou;":"ℬ","beta;":"β","beth;":"ℶ","between;":"≬","bfr;":"ᵑF","bigcap;":"⋂","bigcirc;":"◯","bigcup;":"⋃","bigodot;":"⨀","bigoplus;":"⨁","bigotimes;":"⨂","bigsqcup;":"⨆","bigstar;":"★","bigtriangledown;":"▽","bigtriangleup;":"△","biguplus;":"⨄","bigvee;":"⋁","bigwedge;":"⋀","bkarow;":"⤍","blacklozenge;":"⧫","blacksquare;":"▪","blacktriangle;":"▴","blacktriangledown;":"▾","blacktriangleleft;":"◂","blacktriangleright;":"▸","blank;":"␣","blk12;":"▒","blk14;":"░","blk34;":"▓","block;":"█","bne;":"=⃥","bnequiv;":"≡⃥","bnot;":"⌐","bopf;":"ᵕ3","bot;":"⊥","bottom;":"⊥","bowtie;":"⋈","boxDL;":"╗","boxDR;":"╔","boxDl;":"╖","boxDr;":"╓","boxH;":"═","boxHD;":"╦","boxHU;":"╩","boxHd;":"╤","boxHu;":"╧","boxUL;":"╝","boxUR;":"╚","boxUl;":"╜","boxUr;":"╙","boxV;":"║","boxVH;":"╬","boxVL;":"╣","boxVR;":"╠","boxVh;":"╫","boxVl;":"╢","boxVr;":"╟","boxbox;":"⧉","boxdL;":"╕","boxdR;":"╒","boxdl;":"┐","boxdr;":"┌","boxh;":"─","boxhD;":"╥","boxhU;":"╨","boxhd;":"┬","boxhu;":"┴","boxminus;":"⊟","boxplus;":"⊞","boxtimes;":"⊠","boxuL;":"╛","boxuR;":"╘","boxul;":"┘","boxur;":"└","boxv;":"│","boxvH;":"╪","boxvL;":"╡","boxvR;":"╞","boxvh;":"┼","boxvl;":"┤","boxvr;":"├","bprime;":"‵","breve;":"˘",brvbar:"¦","brvbar;":"¦","bscr;":"ᵋ7","bsemi;":"⁏","bsim;":"∽","bsime;":"⋍","bsol;":"\\","bsolb;":"⧅","bsolhsub;":"⟈","bull;":"•","bullet;":"•","bump;":"≎","bumpE;":"⪮","bumpe;":"≏","bumpeq;":"≏","cacute;":"ć","cap;":"∩","capand;":"⩄","capbrcup;":"⩉","capcap;":"⩋","capcup;":"⩇","capdot;":"⩀","caps;":"∩︀","caret;":"⁁","caron;":"ˇ","ccaps;":"⩍","ccaron;":"č",ccedil:"ç","ccedil;":"ç","ccirc;":"ĉ","ccups;":"⩌","ccupssm;":"⩐","cdot;":"ċ",cedil:"¸","cedil;":"¸","cemptyv;":"⦲",cent:"¢","cent;":"¢","centerdot;":"·","cfr;":"ᵒ0","chcy;":"ч","check;":"✓","checkmark;":"✓","chi;":"χ","cir;":"○","cirE;":"⧃","circ;":"ˆ","circeq;":"≗","circlearrowleft;":"↺","circlearrowright;":"↻","circledR;":"®","circledS;":"Ⓢ","circledast;":"⊛","circledcirc;":"⊚","circleddash;":"⊝","cire;":"≗","cirfnint;":"⨐","cirmid;":"⫯","cirscir;":"⧂","clubs;":"♣","clubsuit;":"♣","colon;":":","colone;":"≔","coloneq;":"≔","comma;":",","commat;":"@","comp;":"∁","compfn;":"∘","complement;":"∁","complexes;":"ℂ","cong;":"≅","congdot;":"⩭","conint;":"∮","copf;":"ᵕ4","coprod;":"∐",copy:"©","copy;":"©","copysr;":"℗","crarr;":"↵","cross;":"✗","cscr;":"ᵋ8","csub;":"⫏","csube;":"⫑","csup;":"⫐","csupe;":"⫒","ctdot;":"⋯","cudarrl;":"⤸","cudarrr;":"⤵","cuepr;":"⋞","cuesc;":"⋟","cularr;":"↶","cularrp;":"⤽","cup;":"∪","cupbrcap;":"⩈","cupcap;":"⩆","cupcup;":"⩊","cupdot;":"⊍","cupor;":"⩅","cups;":"∪︀","curarr;":"↷","curarrm;":"⤼","curlyeqprec;":"⋞","curlyeqsucc;":"⋟","curlyvee;":"⋎","curlywedge;":"⋏",curren:"¤","curren;":"¤","curvearrowleft;":"↶","curvearrowright;":"↷","cuvee;":"⋎","cuwed;":"⋏","cwconint;":"∲","cwint;":"∱","cylcty;":"⌭","dArr;":"⇓","dHar;":"⥥","dagger;":"†","daleth;":"ℸ","darr;":"↓","dash;":"‐","dashv;":"⊣","dbkarow;":"⤏","dblac;":"˝","dcaron;":"ď","dcy;":"д","dd;":"ⅆ","ddagger;":"‡","ddarr;":"⇊","ddotseq;":"⩷",deg:"°","deg;":"°","delta;":"δ","demptyv;":"⦱","dfisht;":"⥿","dfr;":"ᵒ1","dharl;":"⇃","dharr;":"⇂","diam;":"⋄","diamond;":"⋄","diamondsuit;":"♦","diams;":"♦","die;":"¨","digamma;":"ϝ","disin;":"⋲","div;":"÷",divide:"÷","divide;":"÷","divideontimes;":"⋇","divonx;":"⋇","djcy;":"ђ","dlcorn;":"⌞","dlcrop;":"⌍","dollar;":"$","dopf;":"ᵕ5","dot;":"˙","doteq;":"≐","doteqdot;":"≑","dotminus;":"∸","dotplus;":"∔","dotsquare;":"⊡","doublebarwedge;":"⌆","downarrow;":"↓","downdownarrows;":"⇊","downharpoonleft;":"⇃","downharpoonright;":"⇂","drbkarow;":"⤐","drcorn;":"⌟","drcrop;":"⌌","dscr;":"ᵋ9","dscy;":"ѕ","dsol;":"⧶","dstrok;":"đ","dtdot;":"⋱","dtri;":"▿","dtrif;":"▾","duarr;":"⇵","duhar;":"⥯","dwangle;":"⦦","dzcy;":"џ","dzigrarr;":"⟿","eDDot;":"⩷","eDot;":"≑",eacute:"é","eacute;":"é","easter;":"⩮","ecaron;":"ě","ecir;":"≖",ecirc:"ê","ecirc;":"ê","ecolon;":"≕","ecy;":"э","edot;":"ė","ee;":"ⅇ","efDot;":"≒","efr;":"ᵒ2","eg;":"⪚",egrave:"è","egrave;":"è","egs;":"⪖","egsdot;":"⪘","el;":"⪙","elinters;":"⏧","ell;":"ℓ","els;":"⪕","elsdot;":"⪗","emacr;":"ē","empty;":"∅","emptyset;":"∅","emptyv;":"∅","emsp13;":" ","emsp14;":" ","emsp;":" ","eng;":"ŋ","ensp;":" ","eogon;":"ę","eopf;":"ᵕ6","epar;":"⋕","eparsl;":"⧣","eplus;":"⩱","epsi;":"ε","epsilon;":"ε","epsiv;":"ϵ","eqcirc;":"≖","eqcolon;":"≕","eqsim;":"≂","eqslantgtr;":"⪖","eqslantless;":"⪕","equals;":"=","equest;":"≟","equiv;":"≡","equivDD;":"⩸","eqvparsl;":"⧥","erDot;":"≓","erarr;":"⥱","escr;":"ℯ","esdot;":"≐","esim;":"≂","eta;":"η",eth:"ð","eth;":"ð",euml:"ë","euml;":"ë","euro;":"€","excl;":"!","exist;":"∃","expectation;":"ℰ","exponentiale;":"ⅇ","fallingdotseq;":"≒","fcy;":"ф","female;":"♀","ffilig;":"ffi","fflig;":"ff","ffllig;":"ffl","ffr;":"ᵒ3","filig;":"fi","fjlig;":"f","flat;":"♭","fllig;":"fl","fltns;":"▱","fnof;":"ƒ","fopf;":"ᵕ7","forall;":"∀","fork;":"⋔","forkv;":"⫙","fpartint;":"⨍",frac12:"½","frac12;":"½","frac13;":"⅓",frac14:"¼","frac14;":"¼","frac15;":"⅕","frac16;":"⅙","frac18;":"⅛","frac23;":"⅔","frac25;":"⅖",frac34:"¾","frac34;":"¾","frac35;":"⅗","frac38;":"⅜","frac45;":"⅘","frac56;":"⅚","frac58;":"⅝","frac78;":"⅞","frasl;":"⁄","frown;":"⌢","fscr;":"ᵋB","gE;":"≧","gEl;":"⪌","gacute;":"ǵ","gamma;":"γ","gammad;":"ϝ","gap;":"⪆","gbreve;":"ğ","gcirc;":"ĝ","gcy;":"г","gdot;":"ġ","ge;":"≥","gel;":"⋛","geq;":"≥","geqq;":"≧","geqslant;":"⩾","ges;":"⩾","gescc;":"⪩","gesdot;":"⪀","gesdoto;":"⪂","gesdotol;":"⪄","gesl;":"⋛︀","gesles;":"⪔","gfr;":"ᵒ4","gg;":"≫","ggg;":"⋙","gimel;":"ℷ","gjcy;":"ѓ","gl;":"≷","glE;":"⪒","gla;":"⪥","glj;":"⪤","gnE;":"≩","gnap;":"⪊","gnapprox;":"⪊","gne;":"⪈","gneq;":"⪈","gneqq;":"≩","gnsim;":"⋧","gopf;":"ᵕ8","grave;":"`","gscr;":"ℊ","gsim;":"≳","gsime;":"⪎","gsiml;":"⪐",gt:">","gt;":">","gtcc;":"⪧","gtcir;":"⩺","gtdot;":"⋗","gtlPar;":"⦕","gtquest;":"⩼","gtrapprox;":"⪆","gtrarr;":"⥸","gtrdot;":"⋗","gtreqless;":"⋛","gtreqqless;":"⪌","gtrless;":"≷","gtrsim;":"≳","gvertneqq;":"≩︀","gvnE;":"≩︀","hArr;":"⇔","hairsp;":" ","half;":"½","hamilt;":"ℋ","hardcy;":"ъ","harr;":"↔","harrcir;":"⥈","harrw;":"↭","hbar;":"ℏ","hcirc;":"ĥ","hearts;":"♥","heartsuit;":"♥","hellip;":"…","hercon;":"⊹","hfr;":"ᵒ5","hksearow;":"⤥","hkswarow;":"⤦","hoarr;":"⇿","homtht;":"∻","hookleftarrow;":"↩","hookrightarrow;":"↪","hopf;":"ᵕ9","horbar;":"―","hscr;":"ᵋD","hslash;":"ℏ","hstrok;":"ħ","hybull;":"⁃","hyphen;":"‐",iacute:"í","iacute;":"í","ic;":"⁣",icirc:"î","icirc;":"î","icy;":"и","iecy;":"е",iexcl:"¡","iexcl;":"¡","iff;":"⇔","ifr;":"ᵒ6",igrave:"ì","igrave;":"ì","ii;":"ⅈ","iiiint;":"⨌","iiint;":"∭","iinfin;":"⧜","iiota;":"℩","ijlig;":"ij","imacr;":"ī","image;":"ℑ","imagline;":"ℐ","imagpart;":"ℑ","imath;":"ı","imof;":"⊷","imped;":"Ƶ","in;":"∈","incare;":"℅","infin;":"∞","infintie;":"⧝","inodot;":"ı","int;":"∫","intcal;":"⊺","integers;":"ℤ","intercal;":"⊺","intlarhk;":"⨗","intprod;":"⨼","iocy;":"ё","iogon;":"į","iopf;":"ᵕA","iota;":"ι","iprod;":"⨼",iquest:"¿","iquest;":"¿","iscr;":"ᵋE","isin;":"∈","isinE;":"⋹","isindot;":"⋵","isins;":"⋴","isinsv;":"⋳","isinv;":"∈","it;":"⁢","itilde;":"ĩ","iukcy;":"і",iuml:"ï","iuml;":"ï","jcirc;":"ĵ","jcy;":"й","jfr;":"ᵒ7","jmath;":"ȷ","jopf;":"ᵕB","jscr;":"ᵋF","jsercy;":"ј","jukcy;":"є","kappa;":"κ","kappav;":"ϰ","kcedil;":"ķ","kcy;":"к","kfr;":"ᵒ8","kgreen;":"ĸ","khcy;":"х","kjcy;":"ќ","kopf;":"ᵕC","kscr;":"ᵌ0","lAarr;":"⇚","lArr;":"⇐","lAtail;":"⤛","lBarr;":"⤎","lE;":"≦","lEg;":"⪋","lHar;":"⥢","lacute;":"ĺ","laemptyv;":"⦴","lagran;":"ℒ","lambda;":"λ","lang;":"⟨","langd;":"⦑","langle;":"⟨","lap;":"⪅",laquo:"«","laquo;":"«","larr;":"←","larrb;":"⇤","larrbfs;":"⤟","larrfs;":"⤝","larrhk;":"↩","larrlp;":"↫","larrpl;":"⤹","larrsim;":"⥳","larrtl;":"↢","lat;":"⪫","latail;":"⤙","late;":"⪭","lates;":"⪭︀","lbarr;":"⤌","lbbrk;":"❲","lbrace;":"{","lbrack;":"[","lbrke;":"⦋","lbrksld;":"⦏","lbrkslu;":"⦍","lcaron;":"ľ","lcedil;":"ļ","lceil;":"⌈","lcub;":"{","lcy;":"л","ldca;":"⤶","ldquo;":"“","ldquor;":"„","ldrdhar;":"⥧","ldrushar;":"⥋","ldsh;":"↲","le;":"≤","leftarrow;":"←","leftarrowtail;":"↢","leftharpoondown;":"↽","leftharpoonup;":"↼","leftleftarrows;":"⇇","leftrightarrow;":"↔","leftrightarrows;":"⇆","leftrightharpoons;":"⇋","leftrightsquigarrow;":"↭","leftthreetimes;":"⋋","leg;":"⋚","leq;":"≤","leqq;":"≦","leqslant;":"⩽","les;":"⩽","lescc;":"⪨","lesdot;":"⩿","lesdoto;":"⪁","lesdotor;":"⪃","lesg;":"⋚︀","lesges;":"⪓","lessapprox;":"⪅","lessdot;":"⋖","lesseqgtr;":"⋚","lesseqqgtr;":"⪋","lessgtr;":"≶","lesssim;":"≲","lfisht;":"⥼","lfloor;":"⌊","lfr;":"ᵒ9","lg;":"≶","lgE;":"⪑","lhard;":"↽","lharu;":"↼","lharul;":"⥪","lhblk;":"▄","ljcy;":"љ","ll;":"≪","llarr;":"⇇","llcorner;":"⌞","llhard;":"⥫","lltri;":"◺","lmidot;":"ŀ","lmoust;":"⎰","lmoustache;":"⎰","lnE;":"≨","lnap;":"⪉","lnapprox;":"⪉","lne;":"⪇","lneq;":"⪇","lneqq;":"≨","lnsim;":"⋦","loang;":"⟬","loarr;":"⇽","lobrk;":"⟦","longleftarrow;":"⟵","longleftrightarrow;":"⟷","longmapsto;":"⟼","longrightarrow;":"⟶","looparrowleft;":"↫","looparrowright;":"↬","lopar;":"⦅","lopf;":"ᵕD","loplus;":"⨭","lotimes;":"⨴","lowast;":"∗","lowbar;":"_","loz;":"◊","lozenge;":"◊","lozf;":"⧫","lpar;":"(","lparlt;":"⦓","lrarr;":"⇆","lrcorner;":"⌟","lrhar;":"⇋","lrhard;":"⥭","lrm;":"‎","lrtri;":"⊿","lsaquo;":"‹","lscr;":"ᵌ1","lsh;":"↰","lsim;":"≲","lsime;":"⪍","lsimg;":"⪏","lsqb;":"[","lsquo;":"‘","lsquor;":"‚","lstrok;":"ł",lt:"<","lt;":"<","ltcc;":"⪦","ltcir;":"⩹","ltdot;":"⋖","lthree;":"⋋","ltimes;":"⋉","ltlarr;":"⥶","ltquest;":"⩻","ltrPar;":"⦖","ltri;":"◃","ltrie;":"⊴","ltrif;":"◂","lurdshar;":"⥊","luruhar;":"⥦","lvertneqq;":"≨︀","lvnE;":"≨︀","mDDot;":"∺",macr:"¯","macr;":"¯","male;":"♂","malt;":"✠","maltese;":"✠","map;":"↦","mapsto;":"↦","mapstodown;":"↧","mapstoleft;":"↤","mapstoup;":"↥","marker;":"▮","mcomma;":"⨩","mcy;":"м","mdash;":"—","measuredangle;":"∡","mfr;":"ᵒA","mho;":"℧",micro:"µ","micro;":"µ","mid;":"∣","midast;":"*","midcir;":"⫰",middot:"·","middot;":"·","minus;":"−","minusb;":"⊟","minusd;":"∸","minusdu;":"⨪","mlcp;":"⫛","mldr;":"…","mnplus;":"∓","models;":"⊧","mopf;":"ᵕE","mp;":"∓","mscr;":"ᵌ2","mstpos;":"∾","mu;":"μ","multimap;":"⊸","mumap;":"⊸","nGg;":"⋙̸","nGt;":"≫⃒","nGtv;":"≫̸","nLeftarrow;":"⇍","nLeftrightarrow;":"⇎","nLl;":"⋘̸","nLt;":"≪⃒","nLtv;":"≪̸","nRightarrow;":"⇏","nVDash;":"⊯","nVdash;":"⊮","nabla;":"∇","nacute;":"ń","nang;":"∠⃒","nap;":"≉","napE;":"⩰̸","napid;":"≋̸","napos;":"ʼn","napprox;":"≉","natur;":"♮","natural;":"♮","naturals;":"ℕ",nbsp:" ","nbsp;":" ","nbump;":"≎̸","nbumpe;":"≏̸","ncap;":"⩃","ncaron;":"ň","ncedil;":"ņ","ncong;":"≇̸","ncongdot;":"⩭","ncup;":"⩂","ncy;":"н","ndash;":"–","ne;":"≠","neArr;":"⇗","nearhk;":"⤤","nearr;":"↗","nearrow;":"↗","nedot;":"≐̸","nequiv;":"≢","nesear;":"⤨","nesim;":"≂̸","nexist;":"∄","nexists;":"∄","nfr;":"ᵒB","ngE;":"≧̸","nge;":"≱","ngeq;":"≱","ngeqq;":"≧̸","ngeqslant;":"⩾̸","nges;":"⩾̸","ngsim;":"≵","ngt;":"≯","ngtr;":"≯","nhArr;":"⇎","nharr;":"↮","nhpar;":"⫲","ni;":"∋","nis;":"⋼","nisd;":"⋺","niv;":"∋","njcy;":"њ","nlArr;":"⇍","nlE;":"≦̸","nlarr;":"↚","nldr;":"‥","nle;":"≰","nleftarrow;":"↚","nleftrightarrow;":"↮","nleq;":"≰","nleqq;":"≦̸","nleqslant;":"⩽̸","nles;":"⩽̸","nless;":"≮","nlsim;":"≴","nlt;":"≮","nltri;":"⋪","nltrie;":"⋬","nmid;":"∤","nopf;":"ᵕF",not:"¬","not;":"¬","notin;":"∉","notinE;":"⋹̸","notindot;":"⋵̸","notinva;":"∉","notinvb;":"⋷","notinvc;":"⋶","notni;":"∌","notniva;":"∌","notnivb;":"⋾","notnivc;":"⋽","npar;":"∦","nparallel;":"∦","nparsl;":"⫽⃥","npart;":"∂̸","npolint;":"⨔","npr;":"⊀","nprcue;":"⋠","npre;":"⪯","nprec;":"⊀","npreceq;":"⪯","nrArr;":"⇏","nrarr;":"↛","nrarrc;":"⤳̸","nrarrw;":"↝̸","nrightarrow;":"↛","nrtri;":"⋫","nrtrie;":"⋭","nsc;":"⊁","nsccue;":"⋡","nsce;":"⪰̸","nscr;":"ᵌ3","nshortmid;":"∤","nshortparallel;":"∦","nsim;":"≁","nsime;":"≄","nsimeq;":"≄","nsmid;":"∤","nspar;":"∦","nsqsube;":"⋢","nsqsupe;":"⋣","nsub;":"⊄","nsubE;":"⫅̸","nsube;":"⊈","nsubset;":"⊄","nsubseteq;":"⊈","nsubseteqq;":"⫅̸","nsucc;":"⊁","nsucceq;":"⪰̸","nsup;":"⊅","nsupE;":"⫆","nsupe;":"⊉","nsupset;":"⊅","nsupseteq;":"⊉","nsupseteqq;":"⫆̸","ntgl;":"≹",ntilde:"ñ","ntilde;":"ñ","ntlg;":"≸","ntriangleleft;":"⋪","ntrianglelefteq;":"⋬","ntriangleright;":"⋫","ntrianglerighteq;":"⋭","nu;":"ν","num;":"#","numero;":"№","numsp;":" ","nvDash;":"⊭","nvHarr;":"⤄","nvap;":"≍⃒","nvdash;":"⊬","nvge;":"≥⃒","nvgt;":">⃒","nvinfin;":"⧞","nvlArr;":"⤂","nvle;":"≤⃒","nvlt;":"<⃒","nvltrie;":"⊴⃒","nvrArr;":"⤃","nvrtrie;":"⊵⃒","nvsim;":"∼⃒","nwArr;":"⇖","nwarhk;":"⤣","nwarr;":"↖","nwarrow;":"↖","nwnear;":"⤧","oS;":"Ⓢ",oacute:"ó","oacute;":"ó","oast;":"⊛","ocir;":"⊚",ocirc:"ô","ocirc;":"ô","ocy;":"о","odash;":"⊝","odblac;":"ő","odiv;":"⨸","odot;":"⊙","odsold;":"⦼","oelig;":"œ","ofcir;":"⦿","ofr;":"ᵒC","ogon;":"˛",ograve:"ò","ograve;":"ò","ogt;":"⧁","ohbar;":"⦵","ohm;":"Ω","oint;":"∮","olarr;":"↺","olcir;":"⦾","olcross;":"⦻","oline;":"‾","olt;":"⧀","omacr;":"ō","omega;":"ω","omicron;":"ο","omid;":"⦶","ominus;":"⊖","oopf;":"ᵖ0","opar;":"⦷","operp;":"⦹","oplus;":"⊕","or;":"∨","orarr;":"↻","ord;":"⩝","order;":"ℴ","orderof;":"ℴ",ordf:"ª","ordf;":"ª",ordm:"º","ordm;":"º","origof;":"⊶","oror;":"⩖","orslope;":"⩗","orv;":"⩛","oscr;":"ℴ",oslash:"ø","oslash;":"ø","osol;":"⊘",otilde:"õ","otilde;":"õ","otimes;":"⊗","otimesas;":"⨶",ouml:"ö","ouml;":"ö","ovbar;":"⌽","par;":"∥",para:"¶","para;":"¶","parallel;":"∥","parsim;":"⫳","parsl;":"⫽","part;":"∂","pcy;":"п","percnt;":"%","period;":".","permil;":"‰","perp;":"⊥","pertenk;":"‱","pfr;":"ᵒD","phi;":"φ","phiv;":"ϕ","phmmat;":"ℳ","phone;":"☎","pi;":"π","pitchfork;":"⋔","piv;":"ϖ","planck;":"ℏ","planckh;":"ℎ","plankv;":"ℏ","plus;":"+","plusacir;":"⨣","plusb;":"⊞","pluscir;":"⨢","plusdo;":"∔","plusdu;":"⨥","pluse;":"⩲",plusmn:"±","plusmn;":"±","plussim;":"⨦","plustwo;":"⨧","pm;":"±","pointint;":"⨕","popf;":"ᵖ1",pound:"£","pound;":"£","pr;":"≺","prE;":"⪳","prap;":"⪷","prcue;":"≼","pre;":"⪯","prec;":"≺","precapprox;":"⪷","preccurlyeq;":"≼","preceq;":"⪯","precnapprox;":"⪹","precneqq;":"⪵","precnsim;":"⋨","precsim;":"≾","prime;":"′","primes;":"ℙ","prnE;":"⪵","prnap;":"⪹","prnsim;":"⋨","prod;":"∏","profalar;":"⌮","profline;":"⌒","profsurf;":"⌓","prop;":"∝","propto;":"∝","prsim;":"≾","prurel;":"⊰","pscr;":"ᵌ5","psi;":"ψ","puncsp;":" ","qfr;":"ᵒE","qint;":"⨌","qopf;":"ᵖ2","qprime;":"⁗","qscr;":"ᵌ6","quaternions;":"ℍ","quatint;":"⨖","quest;":"?","questeq;":"≟",quot:'"',"quot;":'"',"rAarr;":"⇛","rArr;":"⇒","rAtail;":"⤜","rBarr;":"⤏","rHar;":"⥤","race;":"∽̱","racute;":"ŕ","radic;":"√","raemptyv;":"⦳","rang;":"⟩","rangd;":"⦒","range;":"⦥","rangle;":"⟩",raquo:"»","raquo;":"»","rarr;":"→","rarrap;":"⥵","rarrb;":"⇥","rarrbfs;":"⤠","rarrc;":"⤳","rarrfs;":"⤞","rarrhk;":"↪","rarrlp;":"↬","rarrpl;":"⥅","rarrsim;":"⥴","rarrtl;":"↣","rarrw;":"↝","ratail;":"⤚","ratio;":"∶","rationals;":"ℚ","rbarr;":"⤍","rbbrk;":"❳","rbrace;":"}","rbrack;":"]","rbrke;":"⦌","rbrksld;":"⦎","rbrkslu;":"⦐","rcaron;":"ř","rcedil;":"ŗ","rceil;":"⌉","rcub;":"}","rcy;":"р","rdca;":"⤷","rdldhar;":"⥩","rdquo;":"”","rdquor;":"”","rdsh;":"↳","real;":"ℜ","realine;":"ℛ","realpart;":"ℜ","reals;":"ℝ","rect;":"▭",reg:"®","reg;":"®","rfisht;":"⥽","rfloor;":"⌋","rfr;":"ᵒF","rhard;":"⇁","rharu;":"⇀","rharul;":"⥬","rho;":"ρ","rhov;":"ϱ","rightarrow;":"→","rightarrowtail;":"↣","rightharpoondown;":"⇁","rightharpoonup;":"⇀","rightleftarrows;":"⇄","rightleftharpoons;":"⇌","rightrightarrows;":"⇉","rightsquigarrow;":"↝","rightthreetimes;":"⋌","ring;":"˚","risingdotseq;":"≓","rlarr;":"⇄","rlhar;":"⇌","rlm;":"‏","rmoust;":"⎱","rmoustache;":"⎱","rnmid;":"⫮","roang;":"⟭","roarr;":"⇾","robrk;":"⟧","ropar;":"⦆","ropf;":"ᵖ3","roplus;":"⨮","rotimes;":"⨵","rpar;":")","rpargt;":"⦔","rppolint;":"⨒","rrarr;":"⇉","rsaquo;":"›","rscr;":"ᵌ7","rsh;":"↱","rsqb;":"]","rsquo;":"’","rsquor;":"’","rthree;":"⋌","rtimes;":"⋊","rtri;":"▹","rtrie;":"⊵","rtrif;":"▸","rtriltri;":"⧎","ruluhar;":"⥨","rx;":"℞","sacute;":"ś","sbquo;":"‚","sc;":"≻","scE;":"⪴","scap;":"⪸","scaron;":"š","sccue;":"≽","sce;":"⪰","scedil;":"ş","scirc;":"ŝ","scnE;":"⪶","scnap;":"⪺","scnsim;":"⋩","scpolint;":"⨓","scsim;":"≿","scy;":"с","sdot;":"⋅","sdotb;":"⊡","sdote;":"⩦","seArr;":"⇘","searhk;":"⤥","searr;":"↘","searrow;":"↘",sect:"§","sect;":"§","semi;":";","seswar;":"⤩","setminus;":"∖","setmn;":"∖","sext;":"✶","sfr;":"ᵓ0","sfrown;":"⌢","sharp;":"♯","shchcy;":"щ","shcy;":"ш","shortmid;":"∣","shortparallel;":"∥",shy:"­","shy;":"­","sigma;":"σ","sigmaf;":"ς","sigmav;":"ς","sim;":"∼","simdot;":"⩪","sime;":"≃","simeq;":"≃","simg;":"⪞","simgE;":"⪠","siml;":"⪝","simlE;":"⪟","simne;":"≆","simplus;":"⨤","simrarr;":"⥲","slarr;":"←","smallsetminus;":"∖","smashp;":"⨳","smeparsl;":"⧤","smid;":"∣","smile;":"⌣","smt;":"⪪","smte;":"⪬","smtes;":"⪬︀","softcy;":"ь","sol;":"/","solb;":"⧄","solbar;":"⌿","sopf;":"ᵖ4","spades;":"♠","spadesuit;":"♠","spar;":"∥","sqcap;":"⊓","sqcaps;":"⊓︀","sqcup;":"⊔","sqcups;":"⊔︀","sqsub;":"⊏","sqsube;":"⊑","sqsubset;":"⊏","sqsubseteq;":"⊑","sqsup;":"⊐","sqsupe;":"⊒","sqsupset;":"⊐","sqsupseteq;":"⊒","squ;":"□","square;":"□","squarf;":"▪","squf;":"▪","srarr;":"→","sscr;":"ᵌ8","ssetmn;":"∖","ssmile;":"⌣","sstarf;":"⋆","star;":"☆","starf;":"★","straightepsilon;":"ϵ","straightphi;":"ϕ","strns;":"¯","sub;":"⊂","subE;":"⫅","subdot;":"⪽","sube;":"⊆","subedot;":"⫃","submult;":"⫁","subnE;":"⫋","subne;":"⊊","subplus;":"⪿","subrarr;":"⥹","subset;":"⊂","subseteq;":"⊆","subseteqq;":"⫅","subsetneq;":"⊊","subsetneqq;":"⫋","subsim;":"⫇","subsub;":"⫕","subsup;":"⫓","succ;":"≻","succapprox;":"⪸","succcurlyeq;":"≽","succeq;":"⪰","succnapprox;":"⪺","succneqq;":"⪶","succnsim;":"⋩","succsim;":"≿","sum;":"∑","sung;":"♪",sup1:"¹","sup1;":"¹",sup2:"²","sup2;":"²",sup3:"³","sup3;":"³","sup;":"⊃","supE;":"⫆","supdot;":"⪾","supdsub;":"⫘","supe;":"⊇","supedot;":"⫄","suphsol;":"⟉","suphsub;":"⫗","suplarr;":"⥻","supmult;":"⫂","supnE;":"⫌","supne;":"⊋","supplus;":"⫀","supset;":"⊃","supseteq;":"⊇","supseteqq;":"⫆","supsetneq;":"⊋","supsetneqq;":"⫌","supsim;":"⫈","supsub;":"⫔","supsup;":"⫖","swArr;":"⇙","swarhk;":"⤦","swarr;":"↙","swarrow;":"↙","swnwar;":"⤪",szlig:"ß","szlig;":"ß","target;":"⌖","tau;":"τ","tbrk;":"⎴","tcaron;":"ť","tcedil;":"ţ","tcy;":"т","tdot;":"⃛","telrec;":"⌕","tfr;":"ᵓ1","there4;":"∴","therefore;":"∴","theta;":"θ","thetasym;":"ϑ","thetav;":"ϑ","thickapprox;":"≈","thicksim;":"∼","thinsp;":" ","thkap;":"≈","thksim;":"∼",thorn:"þ","thorn;":"þ","tilde;":"˜",times:"×","times;":"×","timesb;":"⊠","timesbar;":"⨱","timesd;":"⨰","tint;":"∭","toea;":"⤨","top;":"⊤","topbot;":"⌶","topcir;":"⫱","topf;":"ᵖ5","topfork;":"⫚","tosa;":"⤩","tprime;":"‴","trade;":"™","triangle;":"▵","triangledown;":"▿","triangleleft;":"◃","trianglelefteq;":"⊴","triangleq;":"≜","triangleright;":"▹","trianglerighteq;":"⊵","tridot;":"◬","trie;":"≜","triminus;":"⨺","triplus;":"⨹","trisb;":"⧍","tritime;":"⨻","trpezium;":"⏢","tscr;":"ᵌ9","tscy;":"ц","tshcy;":"ћ","tstrok;":"ŧ","twixt;":"≬","twoheadleftarrow;":"↞","twoheadrightarrow;":"↠","uArr;":"⇑","uHar;":"⥣",uacute:"ú","uacute;":"ú","uarr;":"↑","ubrcy;":"ў","ubreve;":"ŭ",ucirc:"û","ucirc;":"û","ucy;":"у","udarr;":"⇅","udblac;":"ű","udhar;":"⥮","ufisht;":"⥾","ufr;":"ᵓ2",ugrave:"ù","ugrave;":"ù","uharl;":"↿","uharr;":"↾","uhblk;":"▀","ulcorn;":"⌜","ulcorner;":"⌜","ulcrop;":"⌏","ultri;":"◸","umacr;":"ū",uml:"¨","uml;":"¨","uogon;":"ų","uopf;":"ᵖ6","uparrow;":"↑","updownarrow;":"↕","upharpoonleft;":"↿","upharpoonright;":"↾","uplus;":"⊎","upsi;":"υ","upsih;":"ϒ","upsilon;":"υ","upuparrows;":"⇈","urcorn;":"⌝","urcorner;":"⌝","urcrop;":"⌎","uring;":"ů","urtri;":"◹","uscr;":"ᵌA","utdot;":"⋰","utilde;":"ũ","utri;":"▵","utrif;":"▴","uuarr;":"⇈",uuml:"ü","uuml;":"ü","uwangle;":"⦧","vArr;":"⇕","vBar;":"⫨","vBarv;":"⫩","vDash;":"⊨","vangrt;":"⦜","varepsilon;":"ϵ","varkappa;":"ϰ","varnothing;":"∅","varphi;":"ϕ","varpi;":"ϖ","varpropto;":"∝","varr;":"↕","varrho;":"ϱ","varsigma;":"ς","varsubsetneq;":"⊊︀","varsubsetneqq;":"⫋︀","varsupsetneq;":"⊋︀","varsupsetneqq;":"⫌︀","vartheta;":"ϑ","vartriangleleft;":"⊲","vartriangleright;":"⊳","vcy;":"в","vdash;":"⊢","vee;":"∨","veebar;":"⊻","veeeq;":"≚","vellip;":"⋮","verbar;":"|","vert;":"|","vfr;":"ᵓ3","vltri;":"⊲","vnsub;":"⊂⃒","vnsup;":"⊃⃒","vopf;":"ᵖ7","vprop;":"∝","vrtri;":"⊳","vscr;":"ᵌB","vsubnE;":"⫋︀","vsubne;":"⊊︀","vsupnE;":"⫌︀","vsupne;":"⊋︀","vzigzag;":"⦚","wcirc;":"ŵ","wedbar;":"⩟","wedge;":"∧","wedgeq;":"≙","weierp;":"℘","wfr;":"ᵓ4","wopf;":"ᵖ8","wp;":"℘","wr;":"≀","wreath;":"≀","wscr;":"ᵌC","xcap;":"⋂","xcirc;":"◯","xcup;":"⋃","xdtri;":"▽","xfr;":"ᵓ5","xhArr;":"⟺","xharr;":"⟷","xi;":"ξ","xlArr;":"⟸","xlarr;":"⟵","xmap;":"⟼","xnis;":"⋻","xodot;":"⨀","xopf;":"ᵖ9","xoplus;":"⨁","xotime;":"⨂","xrArr;":"⟹","xrarr;":"⟶","xscr;":"ᵌD","xsqcup;":"⨆","xuplus;":"⨄","xutri;":"△","xvee;":"⋁","xwedge;":"⋀",yacute:"ý","yacute;":"ý","yacy;":"я","ycirc;":"ŷ","ycy;":"ы",yen:"¥","yen;":"¥","yfr;":"ᵓ6","yicy;":"ї","yopf;":"ᵖA","yscr;":"ᵌE","yucy;":"ю",yuml:"ÿ","yuml;":"ÿ","zacute;":"ź","zcaron;":"ž","zcy;":"з","zdot;":"ż","zeetrf;":"ℨ","zeta;":"ζ","zfr;":"ᵓ7","zhcy;":"ж","zigrarr;":"⇝","zopf;":"ᵖB","zscr;":"ᵌF","zwj;":"‍","zwnj;":"‌"}},{}],13:[function(e,t,n){(function(){function n(e){if(Object.keys)return Object.keys(e);var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t}function r(e,t){return t===undefined?""+t:typeof t=="number"&&(isNaN(t)||!isFinite(t))?t.toString():typeof t=="function"||t instanceof RegExp?t.toString():t}function i(e,t){return typeof e=="string"?e.length=0;o--)if(r[o]!=i[o])return!1;for(o=r.length-1;o>=0;o--){s=r[o];if(!u(e[s],t[s]))return!1}return!0}function c(e,t){return!e||!t?!1:t instanceof RegExp?t.test(e):e instanceof t?!0:t.call({},e)===!0?!0:!1}function h(e,t,n,r){var i;typeof n=="string"&&(r=n,n=null);try{t()}catch(o){i=o}r=(n&&n.name?" ("+n.name+").":".")+(r?" "+r:"."),e&&!i&&s("Missing expected exception"+r),!e&&c(i,n)&&s("Got unwanted exception"+r);if(e&&i&&n&&!c(i,n)||!e&&i)throw i}var p=e("util"),d=e("buffer").Buffer,v=Array.prototype.slice,m=t.exports=o;m.AssertionError=function(e){this.name="AssertionError",this.message=e.message,this.actual=e.actual,this.expected=e.expected,this.operator=e.operator;var t=e.stackStartFunction||s;Error.captureStackTrace&&Error.captureStackTrace(this,t)},p.inherits(m.AssertionError,Error),m.AssertionError.prototype.toString=function(){return this.message?[this.name+":",this.message].join(" "):[this.name+":",i(JSON.stringify(this.actual,r),128),this.operator,i(JSON.stringify(this.expected,r),128)].join(" ")},m.fail=s,m.ok=o,m.equal=function(e,t,n){e!=t&&s(e,t,n,"==",m.equal)},m.notEqual=function(e,t,n){e==t&&s(e,t,n,"!=",m.notEqual)},m.deepEqual=function(e,t,n){u(e,t)||s(e,t,n,"deepEqual",m.deepEqual)},m.notDeepEqual=function(e,t,n){u(e,t)&&s(e,t,n,"notDeepEqual",m.notDeepEqual)},m.strictEqual=function(e,t,n){e!==t&&s(e,t,n,"===",m.strictEqual)},m.notStrictEqual=function(e,t,n){e===t&&s(e,t,n,"!==",m.notStrictEqual)},m.throws=function(e,t,n){h.apply(this,[!0].concat(v.call(arguments)))},m.doesNotThrow=function(e,t,n){h.apply(this,[!1].concat(v.call(arguments)))},m.ifError=function(e){if(e)throw e}})()},{buffer:17,util:15}],14:[function(e,t,n){(function(e){function t(e,t){if(e.indexOf)return e.indexOf(t);for(var n=0;n0&&this._events[e].length>n&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),console.trace())}this._events[e].push(t)}else this._events[e]=[this._events[e],t];return this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(e,t){var n=this;return n.on(e,function r(){n.removeListener(e,r),t.apply(this,arguments)}),this},r.prototype.removeListener=function(e,n){if("function"!=typeof n)throw new Error("removeListener only takes instances of Function");if(!this._events||!this._events[e])return this;var r=this._events[e];if(i(r)){var s=t(r,n);if(s<0)return this;r.splice(s,1),r.length==0&&delete this._events[e]}else this._events[e]===n&&delete this._events[e];return this},r.prototype.removeAllListeners=function(e){return arguments.length===0?(this._events={},this):(e&&this._events&&this._events[e]&&(this._events[e]=null),this)},r.prototype.listeners=function(e){return this._events||(this._events={}),this._events[e]||(this._events[e]=[]),i(this._events[e])||(this._events[e]=[this._events[e]]),this._events[e]}})(e("__browserify_process"))},{__browserify_process:20}],15:[function(e,t,n){function r(e){return Array.isArray(e)||typeof e=="object"&&Object.prototype.toString.call(e)==="[object Array]"}function i(e){typeof e=="object"&&Object.prototype.toString.call(e)==="[object RegExp]"}function s(e){return typeof e=="object"&&Object.prototype.toString.call(e)==="[object Date]"}function o(e){return e<10?"0"+e.toString(10):e.toString(10)}function u(){var e=new Date,t=[o(e.getHours()),o(e.getMinutes()),o(e.getSeconds())].join(":");return[e.getDate(),f[e.getMonth()],t].join(" ")}var a=e("events");n.isArray=r,n.isDate=function(e){return Object.prototype.toString.call(e)==="[object Date]"},n.isRegExp=function(e){return Object.prototype.toString.call(e)==="[object RegExp]"},n.print=function(){},n.puts=function(){},n.debug=function(){},n.inspect=function(e,t,o,u){function a(e,o){if(e&&typeof e.inspect=="function"&&e!==n&&(!e.constructor||e.constructor.prototype!==e))return e.inspect(o);switch(typeof e){case"undefined":return h("undefined","undefined");case"string":var u="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return h(u,"string");case"number":return h(""+e,"number");case"boolean":return h(""+e,"boolean")}if(e===null)return h("null","null");var p=l(e),d=t?c(e):p;if(typeof e=="function"&&d.length===0){if(i(e))return h(""+e,"regexp");var v=e.name?": "+e.name:"";return h("[Function"+v+"]","special")}if(s(e)&&d.length===0)return h(e.toUTCString(),"date");var m,g,y;r(e)?(g="Array",y=["[","]"]):(g="Object",y=["{","}"]);if(typeof e=="function"){var b=e.name?": "+e.name:"";m=i(e)?" "+e:" [Function"+b+"]"}else m="";s(e)&&(m=" "+e.toUTCString());if(d.length===0)return y[0]+m+y[1];if(o<0)return i(e)?h(""+e,"regexp"):h("[Object]","special");f.push(e);var w=d.map(function(t){var n,i;e.__lookupGetter__&&(e.__lookupGetter__(t)?e.__lookupSetter__(t)?i=h("[Getter/Setter]","special"):i=h("[Getter]","special"):e.__lookupSetter__(t)&&(i=h("[Setter]","special"))),p.indexOf(t)<0&&(n="["+t+"]"),i||(f.indexOf(e[t])<0?(o===null?i=a(e[t]):i=a(e[t],o-1),i.indexOf("\n")>-1&&(r(e)?i=i.split("\n").map(function(e){return" "+e}).join("\n").substr(2):i="\n"+i.split("\n").map(function(e){return" "+e}).join("\n"))):i=h("[Circular]","special"));if(typeof n=="undefined"){if(g==="Array"&&t.match(/^\d+$/))return i;n=JSON.stringify(""+t),n.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(n=n.substr(1,n.length-2),n=h(n,"name")):(n=n.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),n=h(n,"string"))}return n+": "+i});f.pop();var E=0,S=w.reduce(function(e,t){return E++,t.indexOf("\n")>=0&&E++,e+t.length+1},0);return S>50?w=y[0]+(m===""?"":m+"\n ")+" "+w.join(",\n ")+" "+y[1]:w=y[0]+m+" "+w.join(", ")+" "+y[1],w}var f=[],h=function(e,t){var n={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},r={special:"cyan",number:"blue","boolean":"yellow","undefined":"grey","null":"bold",string:"green",date:"magenta",regexp:"red"}[t];return r?"["+n[r][0]+"m"+e+"["+n[r][1]+"m":e};return u||(h=function(e,t){return e}),a(e,typeof o=="undefined"?2:o)};var f=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];n.log=function(e){},n.pump=null;var l=Object.keys||function(e){var t=[];for(var n in e)t.push(n);return t},c=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.hasOwnProperty.call(e,n)&&t.push(n);return t},h=Object.create||function(e,t){var n;if(e===null)n={__proto__:null};else{if(typeof e!="object")throw new TypeError("typeof prototype["+typeof e+"] != 'object'");var r=function(){};r.prototype=e,n=new r,n.__proto__=e}return typeof t!="undefined"&&Object.defineProperties&&Object.defineProperties(n,t),n};n.inherits=function(e,t){e.super_=t,e.prototype=h(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})};var p=/%[sdj%]/g;n.format=function(e){if(typeof e!="string"){var t=[];for(var r=0;r=s)return e;switch(e){case"%s":return String(i[r++]);case"%d":return Number(i[r++]);case"%j":return JSON.stringify(i[r++]);default:return e}});for(var u=i[r];r>1,l=-7,c=n?0:i-1,h=n?1:-1,p=e[t+c];c+=h,s=p&(1<<-l)-1,p>>=-l,l+=u;for(;l>0;s=s*256+e[t+c],c+=h,l-=8);o=s&(1<<-l)-1,s>>=-l,l+=r;for(;l>0;o=o*256+e[t+c],c+=h,l-=8);if(s===0)s=1-f;else{if(s===a)return o?NaN:(p?-1:1)*Infinity;o+=Math.pow(2,r),s-=f}return(p?-1:1)*o*Math.pow(2,s-r)},n.writeIEEE754=function(e,t,n,r,i,s){var o,u,a,f=s*8-i-1,l=(1<>1,h=i===23?Math.pow(2,-24)-Math.pow(2,-77):0,p=r?s-1:0,d=r?-1:1,v=t<0||t===0&&1/t<0?1:0;t=Math.abs(t),isNaN(t)||t===Infinity?(u=isNaN(t)?1:0,o=l):(o=Math.floor(Math.log(t)/Math.LN2),t*(a=Math.pow(2,-o))<1&&(o--,a*=2),o+c>=1?t+=h/a:t+=h*Math.pow(2,1-c),t*a>=2&&(o++,a/=2),o+c>=l?(u=0,o=l):o+c>=1?(u=(t*a-1)*Math.pow(2,i),o+=c):(u=t*Math.pow(2,c-1)*Math.pow(2,i),o=0));for(;i>=8;e[n+p]=u&255,p+=d,u/=256,i-=8);o=o<0;e[n+p]=o&255,p+=d,o/=256,f-=8);e[n+p-d]|=v*128}},{}],17:[function(e,t,n){(function(){function t(e,n,i){if(!(this instanceof t))return new t(e,n,i);this.parent=this,this.offset=0;var o;if(typeof i=="number")this.length=r(n),this.offset=i;else{switch(o=typeof e){case"number":this.length=r(e);break;case"string":this.length=t.byteLength(e,n);break;case"object":this.length=r(e.length);break;default:throw new Error("First argument needs to be a number, array or string.")}if(s(e))for(var u=0;u=t.length||s>=e.length)break;t[s+n]=e[s],s++}return s}function c(e){try{return decodeURIComponent(e)}catch(t){return String.fromCharCode(65533)}}function h(e,t,n,r){var i=0;return r||(k.ok(typeof n=="boolean","missing or invalid endian"),k.ok(t!==undefined&&t!==null,"missing offset"),k.ok(t+1=e.length?0:(n?(i=e[t]<<8,t+1=e.length?0:(n?(t+1>>0):(t+2>>0)),i)}function d(e,t,n,r){var i,s;return r||(k.ok(typeof n=="boolean","missing or invalid endian"),k.ok(t!==undefined&&t!==null,"missing offset"),k.ok(t+1=0,"specified a negative value for writing an unsigned value"),k.ok(e<=t,"value is larger than maximum value for type"),k.ok(Math.floor(e)===e,"value has a fractional component")}function b(e,t,n,r,i){i||(k.ok(t!==undefined&&t!==null,"missing value"),k.ok(typeof r=="boolean","missing or invalid endian"),k.ok(n!==undefined&&n!==null,"missing offset"),k.ok(n+1>>(r?1-s:s)*8}function w(e,t,n,r,i){i||(k.ok(t!==undefined&&t!==null,"missing value"),k.ok(typeof r=="boolean","missing or invalid endian"),k.ok(n!==undefined&&n!==null,"missing offset"),k.ok(n+3>>(r?3-s:s)*8&255}function E(e,t,n){k.ok(typeof e=="number","cannot write a non-number as a number"),k.ok(e<=t,"value larger than maximum allowed value"),k.ok(e>=n,"value smaller than minimum allowed value"),k.ok(Math.floor(e)===e,"value has a fractional component")}function S(e,t,n){k.ok(typeof e=="number","cannot write a non-number as a number"),k.ok(e<=t,"value larger than maximum allowed value"),k.ok(e>=n,"value smaller than minimum allowed value")}function x(e,t,n,r,i){i||(k.ok(t!==undefined&&t!==null,"missing value"),k.ok(typeof r=="boolean","missing or invalid endian"),k.ok(n!==undefined&&n!==null,"missing offset"),k.ok(n+1=0?b(e,t,n,r,i):b(e,65535+t+1,n,r,i)}function T(e,t,n,r,i){i||(k.ok(t!==undefined&&t!==null,"missing value"),k.ok(typeof r=="boolean","missing or invalid endian"),k.ok(n!==undefined&&n!==null,"missing offset"),k.ok(n+3=0?w(e,t,n,r,i):w(e,4294967295+t+1,n,r,i)}function N(t,n,r,i,s){s||(k.ok(n!==undefined&&n!==null,"missing value"),k.ok(typeof i=="boolean","missing or invalid endian"),k.ok(r!==undefined&&r!==null,"missing offset"),k.ok(r+3=this.length)throw new Error("oob");return this[e]},t.prototype.set=function(e,t){if(e<0||e>=this.length)throw new Error("oob");return this[e]=t},t.byteLength=function(e,t){switch(t||"utf8"){case"hex":return e.length/2;case"utf8":case"utf-8":return u(e).length;case"ascii":case"binary":return e.length;case"base64":return f(e).length;default:throw new Error("Unknown encoding")}},t.prototype.utf8Write=function(e,n,r){var i,s;return t._charsWritten=l(u(e),this,n,r)},t.prototype.asciiWrite=function(e,n,r){var i,s;return t._charsWritten=l(a(e),this,n,r)},t.prototype.binaryWrite=t.prototype.asciiWrite,t.prototype.base64Write=function(e,n,r){var i,s;return t._charsWritten=l(f(e),this,n,r)},t.prototype.base64Slice=function(t,n){var r=Array.prototype.slice.apply(this,arguments);return e("base64-js").fromByteArray(r)},t.prototype.utf8Slice=function(){var e=Array.prototype.slice.apply(this,arguments),t="",n="",r=0;while(r"},t.prototype.hexSlice=function(e,t){var n=this.length;if(!e||e<0)e=0;if(!t||t<0||t>n)t=n;var r="";for(var i=e;ii&&(r=i)):r=i;var s=e.length;if(s%2)throw new Error("Invalid hex string");r>s/2&&(r=s/2);for(var o=0;os&&(n=s)):n=s,r=String(r||"utf8").toLowerCase();switch(r){case"hex":return this.hexWrite(e,t,n);case"utf8":case"utf-8":return this.utf8Write(e,t,n);case"ascii":return this.asciiWrite(e,t,n);case"binary":return this.binaryWrite(e,t,n);case"base64":return this.base64Write(e,t,n);case"ucs2":case"ucs-2":return this.ucs2Write(e,t,n);default:throw new Error("Unknown encoding")}},t.prototype.slice=function(e,n){n===undefined&&(n=this.length);if(n>this.length)throw new Error("oob");if(e>n)throw new Error("oob");return new t(this,n-e,+e)},t.prototype.copy=function(e,t,n,r){var i=this;n||(n=0);if(r===undefined||isNaN(r))r=this.length;t||(t=0);if(r=e.length)throw new Error("targetStart out of bounds");if(n<0||n>=i.length)throw new Error("sourceStart out of bounds");if(r<0||r>i.length)throw new Error("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t=this.length)throw new Error("start out of bounds");if(n<0||n>this.length)throw new Error("end out of bounds");for(var r=t;r=n.length)return;return n[e]},t.prototype.readUInt16LE=function(e,t){return h(this,e,!1,t)},t.prototype.readUInt16BE=function(e,t){return h(this,e,!0,t)},t.prototype.readUInt32LE=function(e,t){return p(this,e,!1,t)},t.prototype.readUInt32BE=function(e,t){return p(this,e,!0,t)},t.prototype.readInt8=function(e,t){var n=this,r;t||(k.ok(e!==undefined&&e!==null,"missing offset"),k.ok(e=n.length)return;return r=n[e]&128,r?(255-n[e]+1)*-1:n[e]},t.prototype.readInt16LE=function(e,t){return d(this,e,!1,t)},t.prototype.readInt16BE=function(e,t){return d(this,e,!0,t)},t.prototype.readInt32LE=function(e,t){return v(this,e,!1,t)},t.prototype.readInt32BE=function(e,t){return v(this,e,!0,t)},t.prototype.readFloatLE=function(e,t){return m(this,e,!1,t)},t.prototype.readFloatBE=function(e,t){return m(this,e,!0,t)},t.prototype.readDoubleLE=function(e,t){return g(this,e,!1,t)},t.prototype.readDoubleBE=function(e,t){return g(this,e,!0,t)},t.prototype.writeUInt8=function(e,t,n){var r=this;n||(k.ok(e!==undefined&&e!==null,"missing value"),k.ok(t!==undefined&&t!==null,"missing offset"),k.ok(t=0?r.writeUInt8(e,t,n):r.writeUInt8(255+e+1,t,n)},t.prototype.writeInt16LE=function(e,t,n){x(this,e,t,!1,n)},t.prototype.writeInt16BE=function(e,t,n){x(this,e,t,!0,n)},t.prototype.writeInt32LE=function(e,t,n){T(this,e,t,!1,n)},t.prototype.writeInt32BE=function(e,t,n){T(this,e,t,!0,n)},t.prototype.writeFloatLE=function(e,t,n){N(this,e,t,!1,n)},t.prototype.writeFloatBE=function(e,t,n){N(this,e,t,!0,n)},t.prototype.writeDoubleLE=function(e,t,n){C(this,e,t,!1,n)},t.prototype.writeDoubleBE=function(e,t,n){C(this,e,t,!0,n)}})()},{"./buffer_ieee754":16,assert:13,"base64-js":18}],18:[function(e,t,n){(function(e){function n(e){var t,n,r,s,o,u;if(e.length%4>0)throw"Invalid string. Length must be a multiple of 4";o=e.indexOf("="),o=o>0?e.length-o:0,u=[],r=o>0?e.length-4:e.length;for(t=0,n=0;t>16),u.push((s&65280)>>8),u.push(s&255);return o===2?(s=i.indexOf(e[t])<<2|i.indexOf(e[t+1])>>4,u.push(s&255)):o===1&&(s=i.indexOf(e[t])<<10|i.indexOf(e[t+1])<<4|i.indexOf(e[t+2])>>2,u.push(s>>8&255),u.push(s&255)),u}function r(e){function t(e){return i[e>>18&63]+i[e>>12&63]+i[e>>6&63]+i[e&63]}var n,r=e.length%3,s="",o,u;for(n=0,u=e.length-r;n>2],s+=i[o<<4&63],s+="==";break;case 2:o=(e[e.length-2]<<8)+e[e.length-1],s+=i[o>>10],s+=i[o>>4&63],s+=i[o<<2&63],s+="="}return s}var i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";t.exports.toByteArray=n,t.exports.fromByteArray=r})()},{}],"./lib/sax/SAXParser.js":[function(e,t,n){t.exports=e("DaboPu")},{}],20:[function(e,t,n){var r=t.exports={};r.nextTick=function(){var e=typeof window!="undefined"&&window.setImmediate,t=typeof window!="undefined"&&window.postMessage&&window.addEventListener;if(e)return function(e){return window.setImmediate(e)};if(t){var n=[];return window.addEventListener("message",function(e){if(e.source===window&&e.data==="process-tick"){e.stopPropagation();if(n.length>0){var t=n.shift();t()}}},!0),function(e){n.push(e),window.postMessage("process-tick","*")}}return function(e){setTimeout(e,0)}}(),r.title="browser",r.browser=!0,r.env={},r.argv=[],r.binding=function(e){throw new Error("process.binding is not supported")},r.cwd=function(){return"/"},r.chdir=function(e){throw new Error("process.chdir is not supported")}},{}]},{},["DaboPu"]);t.SAXParser=r("./lib/sax/SAXParser.js").SAXParser}),ace.define("ace/worker/mirror",["require","exports","module","ace/document","ace/lib/lang"],function(e,t,n){var r=e("../document").Document,i=e("../lib/lang"),s=t.Mirror=function(e){this.sender=e;var t=this.doc=new r(""),n=this.deferredUpdate=i.delayedCall(this.onUpdate.bind(this)),s=this;e.on("change",function(e){t.applyDeltas(e.data);if(s.$timeout)return n.schedule(s.$timeout);s.onUpdate()})};(function(){this.$timeout=500,this.setTimeout=function(e){this.$timeout=e},this.setValue=function(e){this.doc.setValue(e),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(e){this.sender.callback(this.doc.getValue(),e)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(s.prototype)}) \ No newline at end of file +"no use strict";(function(e){if(typeof e.window!="undefined"&&e.document)return;e.console=function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:e})},e.console.error=e.console.warn=e.console.log=e.console.trace=e.console,e.window=e,e.ace=e,e.onerror=function(e,t,n,r,i){console.error("Worker "+(i?i.stack:e))},e.normalizeModule=function(t,n){if(n.indexOf("!")!==-1){var r=n.split("!");return e.normalizeModule(t,r[0])+"!"+e.normalizeModule(t,r[1])}if(n.charAt(0)=="."){var i=t.split("/").slice(0,-1).join("/");n=(i?i+"/":"")+n;while(n.indexOf(".")!==-1&&s!=n){var s=n;n=n.replace(/^\.\//,"").replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return n},e.require=function(t,n){n||(n=t,t=null);if(!n.charAt)throw new Error("worker.js require() accepts only (parentId, id) as arguments");n=e.normalizeModule(t,n);var r=e.require.modules[n];if(r)return r.initialized||(r.initialized=!0,r.exports=r.factory().exports),r.exports;var i=n.split("/");if(!e.require.tlns)return console.log("unable to load "+n);i[0]=e.require.tlns[i[0]]||i[0];var s=i.join("/")+".js";return e.require.id=n,importScripts(s),e.require(t,n)},e.require.modules={},e.require.tlns={},e.define=function(t,n,r){arguments.length==2?(r=n,typeof t!="string"&&(n=t,t=e.require.id)):arguments.length==1&&(r=t,n=[],t=e.require.id),n.length||(n=["require","exports","module"]);if(t.indexOf("text!")===0)return;var i=function(n){return e.require(t,n)};e.require.modules[t]={exports:{},factory:function(){var e=this,t=r.apply(this,n.map(function(t){switch(t){case"require":return i;case"exports":return e.exports;case"module":return e;default:return i(t)}}));return t&&(e.exports=t),e}}},e.define.amd={},e.initBaseUrls=function(e){require.tlns=e},e.initSender=function(){var t=e.require("ace/lib/event_emitter").EventEmitter,n=e.require("ace/lib/oop"),r=function(){};return function(){n.implement(this,t),this.callback=function(e,t){postMessage({type:"call",id:t,data:e})},this.emit=function(e,t){postMessage({type:"event",name:e,data:t})}}.call(r.prototype),new r};var t=e.main=null,n=e.sender=null;e.onmessage=function(r){var i=r.data;if(i.command){if(!t[i.command])throw new Error("Unknown command:"+i.command);t[i.command].apply(t,i.args)}else if(i.init){initBaseUrls(i.tlns),require("ace/lib/es5-shim"),n=e.sender=initSender();var s=require(i.module)[i.classname];t=e.main=new s(n)}else i.event&&n&&n._signal(i.event,i.data)}})(this),ace.define("ace/mode/html_worker",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/worker/mirror","ace/mode/html/saxparser"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/lang"),s=e("../worker/mirror").Mirror,o=e("./html/saxparser").SAXParser,u={"expected-doctype-but-got-start-tag":"info","expected-doctype-but-got-chars":"info","non-html-root":"info"},a=t.Worker=function(e){s.call(this,e),this.setTimeout(400),this.context=null};r.inherits(a,s),function(){this.setOptions=function(e){this.context=e.context},this.onUpdate=function(){var e=this.doc.getValue();if(!e)return;var t=new o,n=[],r=function(){};t.contentHandler={startDocument:r,endDocument:r,startElement:r,endElement:r,characters:r},t.errorHandler={error:function(e,t,r){n.push({row:t.line,column:t.column,text:e,type:u[r]||"error"})}},this.context?t.parseFragment(e,this.context):t.parse(e),this.sender.emit("error",n)}}.call(a.prototype)}),ace.define("ace/lib/oop",["require","exports","module"],function(e,t,n){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)}}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,n){t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){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;n0||-1)*Math.floor(Math.abs(e))),e}function o(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function u(e){var t,n,r;if(o(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(o(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(o(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(e){var t=this;if(typeof t!="function")throw new TypeError("Function.prototype.bind called on incompatible "+t);var n=c.call(arguments,1),i=function(){if(this instanceof i){var r=t.apply(this,n.concat(c.call(arguments)));return Object(r)===r?r:this}return t.apply(e,n.concat(c.call(arguments)))};return t.prototype&&(r.prototype=t.prototype,i.prototype=new r,r.prototype=null),i});var a=Function.prototype.call,f=Array.prototype,l=Object.prototype,c=f.slice,h=a.bind(l.toString),p=a.bind(l.hasOwnProperty),d,v,m,g,y;if(y=p(l,"__defineGetter__"))d=a.bind(l.__defineGetter__),v=a.bind(l.__defineSetter__),m=a.bind(l.__lookupGetter__),g=a.bind(l.__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+tu)for(h=f;h--;)this[a+h]=this[u+h];if(s&&e===l)this.length=l,this.push.apply(this,i);else{this.length=l+s;for(h=0;h>>0;if(h(e)!="[object Function]")throw new TypeError;while(++i>>0,i=Array(r),s=arguments[1];if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");for(var o=0;o>>0,i=[],s,o=arguments[1];if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");for(var u=0;u>>0,i=arguments[1];if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");for(var s=0;s>>0,i=arguments[1];if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");for(var s=0;s>>0;if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");if(!r&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var i=0,s;if(arguments.length>=2)s=arguments[1];else do{if(i in n){s=n[i++];break}if(++i>=r)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;i>>0;if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");if(!r&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var i,s=r-1;if(arguments.length>=2)i=arguments[1];else do{if(s in n){i=n[s--];break}if(--s<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do s in this&&(i=e.call(void 0,i,n[s],s,t));while(s--);return i});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(e){var t=E&&h(this)=="[object String]"?this.split(""):F(this),n=t.length>>>0;if(!n)return-1;var r=0;arguments.length>1&&(r=s(arguments[1])),r=r>=0?r:Math.max(0,n+r);for(;r>>0;if(!n)return-1;var r=n-1;arguments.length>1&&(r=Math.min(r,s(arguments[1]))),r=r>=0?r:n-Math.abs(r);for(;r>=0;r--)if(r in t&&e===t[r])return r;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(e){return e.__proto__||(e.constructor?e.constructor.prototype:l)});if(!Object.getOwnPropertyDescriptor){var S="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(e,t){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError(S+e);if(!p(e,t))return;var n,r,i;n={enumerable:!0,configurable:!0};if(y){var s=e.__proto__;e.__proto__=l;var r=m(e,t),i=g(e,t);e.__proto__=s;if(r||i)return r&&(n.get=r),i&&(n.set=i),n}return n.value=e[t],n}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(e){return Object.keys(e)});if(!Object.create){var x;Object.prototype.__proto__===null?x=function(){return{__proto__:null}}:x=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(e,t){var n;if(e===null)n=x();else{if(typeof e!="object")throw new TypeError("typeof prototype["+typeof e+"] != 'object'");var r=function(){};r.prototype=e,n=new r,n.__proto__=e}return t!==void 0&&Object.defineProperties(n,t),n}}if(Object.defineProperty){var T=i({}),N=typeof document=="undefined"||i(document.createElement("div"));if(!T||!N)var C=Object.defineProperty}if(!Object.defineProperty||C){var k="Property description must be an object: ",L="Object.defineProperty called on non-object: ",A="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(e,t,n){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError(L+e);if(typeof n!="object"&&typeof n!="function"||n===null)throw new TypeError(k+n);if(C)try{return C.call(Object,e,t,n)}catch(r){}if(p(n,"value"))if(y&&(m(e,t)||g(e,t))){var i=e.__proto__;e.__proto__=l,delete e[t],e[t]=n.value,e.__proto__=i}else e[t]=n.value;else{if(!y)throw new TypeError(A);p(n,"get")&&d(e,t,n.get),p(n,"set")&&v(e,t,n.set)}return e}}Object.defineProperties||(Object.defineProperties=function(e,t){for(var n in t)p(t,n)&&Object.defineProperty(e,n,t[n]);return e}),Object.seal||(Object.seal=function(e){return e}),Object.freeze||(Object.freeze=function(e){return e});try{Object.freeze(function(){})}catch(O){Object.freeze=function(e){return function(t){return typeof t=="function"?t:e(t)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(e){return e}),Object.isSealed||(Object.isSealed=function(e){return!1}),Object.isFrozen||(Object.isFrozen=function(e){return!1}),Object.isExtensible||(Object.isExtensible=function(e){if(Object(e)===e)throw new TypeError;var t="";while(p(e,t))t+="?";e[t]=!0;var n=p(e,t);return delete e[t],n});if(!Object.keys){var M=!0,_=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],D=_.length;for(var P in{toString:null})M=!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)p(e,t)&&I.push(t);if(M)for(var n=0,r=D;n=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):e.row<0&&(e.row=0),e},this.insert=function(e,t){if(!t||t.length===0)return e;e=this.$clipPosition(e),this.getLength()<=1&&this.$detectNewLine(t);var n=this.$split(t),r=n.splice(0,1)[0],i=n.length==0?null:n.splice(n.length-1,1)[0];return e=this.insertInLine(e,r),i!==null&&(e=this.insertNewLine(e),e=this._insertLines(e.row,n),e=this.insertInLine(e,i||"")),e},this.insertLines=function(e,t){return e>=this.getLength()?this.insert({row:e,column:0},"\n"+t.join("\n")):this._insertLines(Math.max(e,0),t)},this._insertLines=function(e,t){if(t.length==0)return{row:e,column:0};while(t.length>61440){var n=this._insertLines(e,t.slice(0,61440));t=t.slice(61440),e=n.row}var r=[e,0];r.push.apply(r,t),this.$lines.splice.apply(this.$lines,r);var i=new s(e,0,e+t.length,0),o={action:"insertLines",range:i,lines:t};return this._signal("change",{data:o}),i.end},this.insertNewLine=function(e){e=this.$clipPosition(e);var t=this.$lines[e.row]||"";this.$lines[e.row]=t.substring(0,e.column),this.$lines.splice(e.row+1,0,t.substring(e.column,t.length));var n={row:e.row+1,column:0},r={action:"insertText",range:s.fromPoints(e,n),text:this.getNewLineCharacter()};return this._signal("change",{data:r}),n},this.insertInLine=function(e,t){if(t.length==0)return e;var n=this.$lines[e.row]||"";this.$lines[e.row]=n.substring(0,e.column)+t+n.substring(e.column);var r={row:e.row,column:e.column+t.length},i={action:"insertText",range:s.fromPoints(e,r),text:t};return this._signal("change",{data:i}),r},this.remove=function(e){e instanceof s||(e=s.fromPoints(e.start,e.end)),e.start=this.$clipPosition(e.start),e.end=this.$clipPosition(e.end);if(e.isEmpty())return e.start;var t=e.start.row,n=e.end.row;if(e.isMultiLine()){var r=e.start.column==0?t:t+1,i=n-1;e.end.column>0&&this.removeInLine(n,0,e.end.column),i>=r&&this._removeLines(r,i),r!=t&&(this.removeInLine(t,e.start.column,this.getLine(t).length),this.removeNewLine(e.start.row))}else this.removeInLine(t,e.start.column,e.end.column);return e.start},this.removeInLine=function(e,t,n){if(t==n)return;var r=new s(e,t,e,n),i=this.getLine(e),o=i.substring(t,n),u=i.substring(0,t)+i.substring(n,i.length);this.$lines.splice(e,1,u);var a={action:"removeText",range:r,text:o};return this._signal("change",{data:a}),r.start},this.removeLines=function(e,t){return e<0||t>=this.getLength()?this.remove(new s(e,0,t+1,0)):this._removeLines(e,t)},this._removeLines=function(e,t){var n=new s(e,0,t+1,0),r=this.$lines.splice(e,t-e+1),i={action:"removeLines",range:n,nl:this.getNewLineCharacter(),lines:r};return this._signal("change",{data:i}),r},this.removeNewLine=function(e){var t=this.getLine(e),n=this.getLine(e+1),r=new s(e,t.length,e+1,0),i=t+n;this.$lines.splice(e,2,i);var o={action:"removeText",range:r,text:this.getNewLineCharacter()};this._signal("change",{data:o})},this.replace=function(e,t){e instanceof s||(e=s.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);if(t)var n=this.insert(e.start,t);else n=e.start;return n},this.applyDeltas=function(e){for(var t=0;t=0;t--){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="insertText"?this.remove(r):n.action=="removeLines"?this._insertLines(r.start.row,n.lines):n.action=="removeText"&&this.insert(r.start,n.text)}},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i ["+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.rowthis.row)return;if(n.start.row==this.row&&n.start.column>this.column)return;var r=this.row,i=this.column,s=n.start,o=n.end;if(t.action==="insertText")if(s.row===r&&s.column<=i){if(s.column!==i||!this.$insertRight)s.row===o.row?i+=o.column-s.column:(i-=s.column,r+=o.row-s.row)}else s.row!==o.row&&s.row=i?i=s.column:i=Math.max(0,i-(o.column-s.column)):s.row!==o.row&&s.row=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)}),ace.define("ace/mode/html/saxparser",["require","exports","module"],function(e,t,n){var r=e=function(t,n,r){function i(r,o){if(!n[r]){if(!t[r]){var u=typeof e=="function"&&e;if(!o&&u)return u(r,!0);if(s)return s(r,!0);throw new Error("Cannot find module '"+r+"'")}var a=n[r]={exports:{}};t[r][0].call(a.exports,function(e){var n=t[r][1][e];return i(n?n:e)},a,a.exports)}return n[r].exports}var s=typeof e=="function"&&e;for(var o=0;o=0;n--){var r=this.elements[n];if(r.localName===e)return!0;if(t(r))return!1}},l.prototype.push=function(e){this.elements.push(e)},l.prototype.pushHtmlElement=function(e){this.rootNode=e.node,this.push(e)},l.prototype.pushHeadElement=function(e){this.headElement=e.node,this.push(e)},l.prototype.pushBodyElement=function(e){this.bodyElement=e.node,this.push(e)},l.prototype.pop=function(){return this.elements.pop()},l.prototype.remove=function(e){this.elements.splice(this.elements.indexOf(e),1)},l.prototype.popUntilPopped=function(e){var t;do t=this.pop();while(t.localName!=e)},l.prototype.popUntilTableScopeMarker=function(){while(!s(this.top))this.pop()},l.prototype.popUntilTableBodyScopeMarker=function(){while(!o(this.top))this.pop()},l.prototype.popUntilTableRowScopeMarker=function(){while(!u(this.top))this.pop()},l.prototype.item=function(e){return this.elements[e]},l.prototype.contains=function(e){return this.elements.indexOf(e)!==-1},l.prototype.inScope=function(e){return this._inScope(e,r)},l.prototype.inListItemScope=function(e){return this._inScope(e,i)},l.prototype.inTableScope=function(e){return this._inScope(e,s)},l.prototype.inButtonScope=function(e){return this._inScope(e,a)},l.prototype.inSelectScope=function(e){return this._inScope(e,f)},l.prototype.hasNumberedHeaderElementInScope=function(){for(var e=this.elements.length-1;e>=0;e--){var t=this.elements[e];if(t.isNumberedHeader())return!0;if(r(t))return!1}},l.prototype.furthestBlockForFormattingElement=function(e){var t=null;for(var n=this.elements.length-1;n>=0;n--){var r=this.elements[n];if(r.node===e)return t;r.isSpecial()&&(t=r)}},l.prototype.findIndex=function(e){for(var t=this.elements.length-1;t>=0;t--)if(this.elements[t].localName==e)return t},l.prototype.remove_openElements_until=function(e){var t=!1,n;while(!t)n=this.elements.pop(),t=e(n);return n},Object.defineProperty(l.prototype,"top",{get:function(){return this.elements[this.elements.length-1]}}),Object.defineProperty(l.prototype,"length",{get:function(){return this.elements.length}}),n.ElementStack=l},{}],2:[function(e,t,n){function r(e){return e>="0"&&e<="9"||e>="a"&&e<="z"||e>="A"&&e<="Z"}function i(e){return e>="0"&&e<="9"||e>="a"&&e<="f"||e>="A"&&e<="F"}function s(e){return e>="0"&&e<="9"}var o=e("html5-entities"),u=e("./InputStream").InputStream,a=55232,f={};Object.keys(o).forEach(function(e){for(var t=0;t65535&&v<1114111){var g="";g+=String.fromCharCode(a+(v>>10)),g+=String.fromCharCode(56320+(v&1023)),l=g}else l=String.fromCharCode(v);return h!==";"&&(t._parseError("numeric-entity-without-semicolon"),e.unget(h)),l}return e.unget(c),t._parseError("expected-numeric-entity"),!1}if(h>="a"&&h<="z"||h>="A"&&h<="Z"){var y="";while(f[c]){o[c]&&(y=c);if(h==";")break;h=e.char();if(h===u.EOF)break;c+=h}return y?(l=o[y],h===";"||!n||!r(h)&&h!=="="?(c.length>y.length&&e.unget(c.substring(y.length)),h!==";"&&t._parseError("named-entity-without-semicolon"),l):(e.unget(c),!1)):(t._parseError("expected-named-entity"),e.unget(c),!1)}},l.replaceEntityNumbers=function(e){switch(e){case 0:return 65533;case 19:return 16;case 128:return 8364;case 129:return 129;case 130:return 8218;case 131:return 402;case 132:return 8222;case 133:return 8230;case 134:return 8224;case 135:return 8225;case 136:return 710;case 137:return 8240;case 138:return 352;case 139:return 8249;case 140:return 338;case 141:return 141;case 142:return 381;case 143:return 143;case 144:return 144;case 145:return 8216;case 146:return 8217;case 147:return 8220;case 148:return 8221;case 149:return 8226;case 150:return 8211;case 151:return 8212;case 152:return 732;case 153:return 8482;case 154:return 353;case 155:return 8250;case 156:return 339;case 157:return 157;case 158:return 382;case 159:return 376;default:if(e>=55296&&e<=57343||e>=1114111)return 65533;if(e>=1&&e<=8||e>=14&&e<=31||e>=127&&e<=159||e>=64976&&e<=65007||e==11||e==65534||e==131070||e==3145726||e==196607||e==262142||e==262143||e==327678||e==327679||e==393214||e==393215||e==458750||e==458751||e==524286||e==524287||e==589822||e==589823||e==655358||e==655359||e==720894||e==720895||e==786430||e==786431||e==851966||e==851967||e==917502||e==917503||e==983038||e==983039||e==1048574||e==1048575||e==1114110||e==1114111)return e}},n.EntityParser=l},{"./InputStream":3,"html5-entities":12}],3:[function(e,t,n){function r(){this.data="",this.start=0,this.committed=0,this.eof=!1,this.lastLocation={line:0,column:0}}r.EOF=-1,r.DRAIN=-2,r.prototype={slice:function(){if(this.start>=this.data.length){if(!this.eof)throw r.DRAIN;return r.EOF}return this.data.slice(this.start,this.data.length)},"char":function(){if(!this.eof&&this.start>=this.data.length-1)throw r.DRAIN;return this.start>=this.data.length?r.EOF:this.data[this.start++]},advance:function(e){this.start+=e;if(this.start>=this.data.length){if(!this.eof)throw r.DRAIN;return r.EOF}this.committed>this.data.length/2&&(this.lastLocation=this.location(),this.data=this.data.slice(this.committed),this.start=this.start-this.committed,this.committed=0)},matchWhile:function(e){if(this.eof&&this.start>=this.data.length)return"";var t=new RegExp("^"+e+"+"),n=t.exec(this.slice());if(n){if(!this.eof&&n[0].length==this.data.length-this.start)throw r.DRAIN;return this.advance(n[0].length),n[0]}return""},matchUntil:function(e){var t,n;n=this.slice();if(n===r.EOF)return"";if(t=(new RegExp(e+(this.eof?"|$":""))).exec(n)){var i=this.data.slice(this.start,this.start+t.index);return this.advance(t.index),i.toString()}throw r.DRAIN},append:function(e){this.data+=e},shift:function(e){if(!this.eof&&this.start+e>=this.data.length)throw r.DRAIN;if(this.eof&&this.start>=this.data.length)return r.EOF;var t=this.data.slice(this.start,this.start+e).toString();return this.advance(Math.min(e,this.data.length-this.start)),t},peek:function(e){if(!this.eof&&this.start+e>=this.data.length)throw r.DRAIN;return this.eof&&this.start>=this.data.length?r.EOF:this.data.slice(this.start,Math.min(this.start+e,this.data.length)).toString()},length:function(){return this.data.length-this.start-1},unget:function(e){if(e===r.EOF)return;this.start-=e.length},undo:function(){this.start=this.committed},commit:function(){this.committed=this.start},location:function(){var e=this.lastLocation.line,t=this.lastLocation.column,n=this.data.slice(0,this.committed),r=n.match(/\n/g),i=r?e+r.length:e,s=r?n.length-n.lastIndexOf("\n")-1:t+n.length;return{line:i,column:s}}},n.InputStream=r},{}],4:[function(e,t,n){function r(e,t,n,r){this.localName=t,this.namespaceURI=e,this.attributes=n,this.node=r}function i(e,t){for(var n=0;n-1},r.prototype.isFosterParenting=function(){return this.namespaceURI==="http://www.w3.org/1999/xhtml"?this.localName==="table"||this.localName==="tbody"||this.localName==="tfoot"||this.localName==="thead"||this.localName==="tr":!1},r.prototype.isNumberedHeader=function(){return this.namespaceURI==="http://www.w3.org/1999/xhtml"?this.localName==="h1"||this.localName==="h2"||this.localName==="h3"||this.localName==="h4"||this.localName==="h5"||this.localName==="h6":!1},r.prototype.isForeign=function(){return this.namespaceURI!="http://www.w3.org/1999/xhtml"},r.prototype.isHtmlIntegrationPoint=function(){if(this.namespaceURI==="http://www.w3.org/1998/Math/MathML"){if(this.localName!=="annotation-xml")return!1;var e=i(this,"encoding");return e?(e=e.toLowerCase(),e==="text/html"||e==="application/xhtml+xml"):!1}return this.namespaceURI==="http://www.w3.org/2000/svg"?this.localName==="foreignObject"||this.localName==="desc"||this.localName==="title":!1},r.prototype.isMathMLTextIntegrationPoint=function(){return this.namespaceURI==="http://www.w3.org/1998/Math/MathML"?this.localName==="mi"||this.localName==="mo"||this.localName==="mn"||this.localName==="ms"||this.localName==="mtext":!1},n.StackItem=r},{}],5:[function(e,t,n){function r(e){return e===" "||e==="\n"||e===" "||e==="\r"||e==="\f"}function i(e){return e>="A"&&e<="Z"||e>="a"&&e<="z"}function s(e){this._tokenHandler=e,this._state=s.DATA,this._inputStream=new o,this._currentToken=null,this._temporaryBuffer="",this._additionalAllowedCharacter=""}var o=e("./InputStream").InputStream,u=e("./EntityParser").EntityParser;s.prototype._parseError=function(e,t){this._tokenHandler.parseError(e,t)},s.prototype._emitToken=function(e){if(e.type==="StartTag")for(var t=1;t"&&n?(wt._currentToken={type:"EndTag",name:this._temporaryBuffer,data:[],selfClosing:!1},wt._emitCurrentToken(),wt.setState(t)):i(s)?(this._temporaryBuffer+=s,e.commit()):(wt._emitToken({type:"Characters",data:""&&n?(wt._currentToken={type:"EndTag",name:this._temporaryBuffer,data:[],selfClosing:!1},wt._emitCurrentToken(),wt.setState(t)):i(s)?(this._temporaryBuffer+=s,e.commit()):(wt._emitToken({type:"Characters",data:""&&t?(wt._currentToken={type:"EndTag",name:"script",data:[],selfClosing:!1},wt._emitCurrentToken()):i(n)?(this._temporaryBuffer+=n,e.commit()):(wt._emitToken({type:"Characters",data:""?(wt._emitToken({type:"Characters",data:">"}),wt.setState(h)):n==="\0"?(wt._parseError("invalid-codepoint"),wt._emitToken({type:"Characters",data:"�"}),wt.setState(T)):(wt._emitToken({type:"Characters",data:n}),wt.setState(T)),!0}function k(e){var t=e.char();return t==="/"?(this._temporaryBuffer="",wt.setState(L)):i(t)?(wt._emitToken({type:"Characters",data:"<"+t}),this._temporaryBuffer=t,wt.setState(O)):(wt._emitToken({type:"Characters",data:"<"}),e.unget(t),wt.setState(T)),!0}function L(e){var t=e.char();return i(t)?(this._temporaryBuffer=t,wt.setState(A)):(wt._emitToken({type:"Characters",data:""&&n?(wt._currentToken={type:"EndTag",name:"script",data:[],selfClosing:!1},wt.setState(t),wt._emitCurrentToken()):i(s)?(this._temporaryBuffer+=s,e.commit()):(wt._emitToken({type:"Characters",data:""?(wt._emitToken({type:"Characters",data:t}),this._temporaryBuffer.toLowerCase()==="script"?wt.setState(M):wt.setState(T)):i(t)?(wt._emitToken({type:"Characters",data:t}),this._temporaryBuffer+=t,e.commit()):(e.unget(t),wt.setState(T)),!0}function M(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-script"),e.unget(n),wt.setState(t)):n==="-"?(wt._emitToken({type:"Characters",data:"-"}),wt.setState(_)):n==="<"?(wt._emitToken({type:"Characters",data:"<"}),wt.setState(P)):n==="\0"?(wt._parseError("invalid-codepoint"),wt._emitToken({type:"Characters",data:"�"}),e.commit()):(wt._emitToken({type:"Characters",data:n}),e.commit()),!0}function _(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-script"),e.unget(n),wt.setState(t)):n==="-"?(wt._emitToken({type:"Characters",data:"-"}),wt.setState(D)):n==="<"?(wt._emitToken({type:"Characters",data:"<"}),wt.setState(P)):n==="\0"?(wt._parseError("invalid-codepoint"),wt._emitToken({type:"Characters",data:"�"}),wt.setState(M)):(wt._emitToken({type:"Characters",data:n}),wt.setState(M)),!0}function D(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-script"),e.unget(n),wt.setState(t)):n==="-"?(wt._emitToken({type:"Characters",data:"-"}),e.commit()):n==="<"?(wt._emitToken({type:"Characters",data:"<"}),wt.setState(P)):n===">"?(wt._emitToken({type:"Characters",data:">"}),wt.setState(h)):n==="\0"?(wt._parseError("invalid-codepoint"),wt._emitToken({type:"Characters",data:"�"}),wt.setState(M)):(wt._emitToken({type:"Characters",data:n}),wt.setState(M)),!0}function P(e){var t=e.char();return t==="/"?(wt._emitToken({type:"Characters",data:"/"}),this._temporaryBuffer="",wt.setState(H)):(e.unget(t),wt.setState(M)),!0}function H(e){var t=e.char();return r(t)||t==="/"||t===">"?(wt._emitToken({type:"Characters",data:t}),this._temporaryBuffer.toLowerCase()==="script"?wt.setState(T):wt.setState(M)):i(t)?(wt._emitToken({type:"Characters",data:t}),this._temporaryBuffer+=t,e.commit()):(e.unget(t),wt.setState(M)),!0}function B(e){var n=e.char();return n===o.EOF?(wt._parseError("bare-less-than-sign-at-eof"),wt._emitToken({type:"Characters",data:"<"}),e.unget(n),wt.setState(t)):i(n)?(wt._currentToken={type:"StartTag",name:n.toLowerCase(),data:[]},wt.setState(F)):n==="!"?wt.setState(Q):n==="/"?wt.setState(j):n===">"?(wt._parseError("expected-tag-name-but-got-right-bracket"),wt._emitToken({type:"Characters",data:"<>"}),wt.setState(t)):n==="?"?(wt._parseError("expected-tag-name-but-got-question-mark"),e.unget(n),wt.setState(K)):(wt._parseError("expected-tag-name"),wt._emitToken({type:"Characters",data:"<"}),e.unget(n),wt.setState(t)),!0}function j(e){var n=e.char();return n===o.EOF?(wt._parseError("expected-closing-tag-but-got-eof"),wt._emitToken({type:"Characters",data:""?(wt._parseError("expected-closing-tag-but-got-right-bracket"),wt.setState(t)):(wt._parseError("expected-closing-tag-but-got-char",{data:n}),e.unget(n),wt.setState(K)),!0}function F(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-tag-name"),e.unget(n),wt.setState(t)):r(n)?wt.setState(I):i(n)?wt._currentToken.name+=n.toLowerCase():n===">"?wt._emitCurrentToken():n==="/"?wt.setState(J):n==="\0"?(wt._parseError("invalid-codepoint"),wt._currentToken.name+="�"):wt._currentToken.name+=n,e.commit(),!0}function I(e){var n=e.char();if(n===o.EOF)wt._parseError("expected-attribute-name-but-got-eof"),e.unget(n),wt.setState(t);else{if(r(n))return!0;i(n)?(wt._currentToken.data.push({nodeName:n.toLowerCase(),nodeValue:""}),wt.setState(q)):n===">"?wt._emitCurrentToken():n==="/"?wt.setState(J):n==="'"||n==='"'||n==="="||n==="<"?(wt._parseError("invalid-character-in-attribute-name"),wt._currentToken.data.push({nodeName:n,nodeValue:""}),wt.setState(q)):n==="\0"?(wt._parseError("invalid-codepoint"),wt._currentToken.data.push({nodeName:"�",nodeValue:""})):(wt._currentToken.data.push({nodeName:n,nodeValue:""}),wt.setState(q))}return!0}function q(e){var n=e.char(),s=!0,u=!1;n===o.EOF?(wt._parseError("eof-in-attribute-name"),e.unget(n),wt.setState(t),u=!0):n==="="?wt.setState(U):i(n)?(wt._currentAttribute().nodeName+=n.toLowerCase(),s=!1):n===">"?u=!0:r(n)?wt.setState(R):n==="/"?wt.setState(J):n==="'"||n==='"'?(wt._parseError("invalid-character-in-attribute-name"),wt._currentAttribute().nodeName+=n,s=!1):n==="\0"?(wt._parseError("invalid-codepoint"),wt._currentAttribute().nodeName+="�"):(wt._currentAttribute().nodeName+=n,s=!1);if(s){var a=wt._currentToken.data,f=a[a.length-1];for(var l=a.length-2;l>=0;l--)if(f.nodeName===a[l].nodeName){wt._parseError("duplicate-attribute",{name:f.nodeName}),f.nodeName=null;break}u&&wt._emitCurrentToken()}else e.commit();return!0}function R(e){var n=e.char();if(n===o.EOF)wt._parseError("expected-end-of-tag-but-got-eof"),e.unget(n),wt.setState(t);else{if(r(n))return!0;n==="="?wt.setState(U):n===">"?wt._emitCurrentToken():i(n)?(wt._currentToken.data.push({nodeName:n,nodeValue:""}),wt.setState(q)):n==="/"?wt.setState(J):n==="'"||n==='"'||n==="<"?(wt._parseError("invalid-character-after-attribute-name"),wt._currentToken.data.push({nodeName:n,nodeValue:""}),wt.setState(q)):n==="\0"?(wt._parseError("invalid-codepoint"),wt._currentToken.data.push({nodeName:"�",nodeValue:""})):(wt._currentToken.data.push({nodeName:n,nodeValue:""}),wt.setState(q))}return!0}function U(e){var n=e.char();if(n===o.EOF)wt._parseError("expected-attribute-value-but-got-eof"),e.unget(n),wt.setState(t);else{if(r(n))return!0;n==='"'?wt.setState(z):n==="&"?(wt.setState(X),e.unget(n)):n==="'"?wt.setState(W):n===">"?(wt._parseError("expected-attribute-value-but-got-right-bracket"),wt._emitCurrentToken()):n==="="||n==="<"||n==="`"?(wt._parseError("unexpected-character-in-unquoted-attribute-value"),wt._currentAttribute().nodeValue+=n,wt.setState(X)):n==="\0"?(wt._parseError("invalid-codepoint"),wt._currentAttribute().nodeValue+="�"):(wt._currentAttribute().nodeValue+=n,wt.setState(X))}return!0}function z(e){var n=e.char();if(n===o.EOF)wt._parseError("eof-in-attribute-value-double-quote"),e.unget(n),wt.setState(t);else if(n==='"')wt.setState($);else if(n==="&")this._additionalAllowedCharacter='"',wt.setState(V);else if(n==="\0")wt._parseError("invalid-codepoint"),wt._currentAttribute().nodeValue+="�";else{var r=e.matchUntil('[\0"&]');n+=r,wt._currentAttribute().nodeValue+=n}return!0}function W(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-attribute-value-single-quote"),e.unget(n),wt.setState(t)):n==="'"?wt.setState($):n==="&"?(this._additionalAllowedCharacter="'",wt.setState(V)):n==="\0"?(wt._parseError("invalid-codepoint"),wt._currentAttribute().nodeValue+="�"):wt._currentAttribute().nodeValue+=n+e.matchUntil("\0|['&]"),!0}function X(e){var n=e.char();if(n===o.EOF)wt._parseError("eof-after-attribute-value"),e.unget(n),wt.setState(t);else if(r(n))wt.setState(I);else if(n==="&")this._additionalAllowedCharacter=">",wt.setState(V);else if(n===">")wt._emitCurrentToken();else if(n==='"'||n==="'"||n==="="||n==="`"||n==="<")wt._parseError("unexpected-character-in-unquoted-attribute-value"),wt._currentAttribute().nodeValue+=n,e.commit();else if(n==="\0")wt._parseError("invalid-codepoint"),wt._currentAttribute().nodeValue+="�";else{var i=e.matchUntil("\0|[ \n \f \r&<>\"'=`]");i===o.EOF&&(wt._parseError("eof-in-attribute-value-no-quotes"),wt._emitCurrentToken()),e.commit(),wt._currentAttribute().nodeValue+=n+i}return!0}function V(e){var t=u.consumeEntity(e,wt,this._additionalAllowedCharacter);return this._currentAttribute().nodeValue+=t||"&",this._additionalAllowedCharacter==='"'?wt.setState(z):this._additionalAllowedCharacter==="'"?wt.setState(W):this._additionalAllowedCharacter===">"&&wt.setState(X),!0}function $(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-after-attribute-value"),e.unget(n),wt.setState(t)):r(n)?wt.setState(I):n===">"?(wt.setState(t),wt._emitCurrentToken()):n==="/"?wt.setState(J):(wt._parseError("unexpected-character-after-attribute-value"),e.unget(n),wt.setState(I)),!0}function J(e){var n=e.char();return n===o.EOF?(wt._parseError("unexpected-eof-after-solidus-in-tag"),e.unget(n),wt.setState(t)):n===">"?(wt._currentToken.selfClosing=!0,wt.setState(t),wt._emitCurrentToken()):(wt._parseError("unexpected-character-after-solidus-in-tag"),e.unget(n),wt.setState(I)),!0}function K(e){var n=e.matchUntil(">");return n=n.replace(/\u0000/g,"�"),e.char(),wt._emitToken({type:"Comment",data:n}),wt.setState(t),!0}function Q(e){var t=e.shift(2);if(t==="--")wt._currentToken={type:"Comment",data:""},wt.setState(Y);else{var n=e.shift(5);if(n===o.EOF||t===o.EOF)return wt._parseError("expected-dashes-or-doctype"),wt.setState(K),e.unget(t),!0;t+=n,t.toUpperCase()==="DOCTYPE"?(wt._currentToken={type:"Doctype",name:"",publicId:null,systemId:null,forceQuirks:!1},wt.setState(it)):wt._tokenHandler.isCdataSectionAllowed()&&t==="[CDATA["?wt.setState(G):(wt._parseError("expected-dashes-or-doctype"),e.unget(t),wt.setState(K))}return!0}function G(e){var n=e.matchUntil("]]>");return e.shift(3),n&&wt._emitToken({type:"Characters",data:n}),wt.setState(t),!0}function Y(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-comment"),wt._emitToken(wt._currentToken),e.unget(n),wt.setState(t)):n==="-"?wt.setState(Z):n===">"?(wt._parseError("incorrect-comment"),wt._emitToken(wt._currentToken),wt.setState(t)):n==="\0"?(wt._parseError("invalid-codepoint"),wt._currentToken.data+="�"):(wt._currentToken.data+=n,wt.setState(et)),!0}function Z(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-comment"),wt._emitToken(wt._currentToken),e.unget(n),wt.setState(t)):n==="-"?wt.setState(nt):n===">"?(wt._parseError("incorrect-comment"),wt._emitToken(wt._currentToken),wt.setState(t)):n==="\0"?(wt._parseError("invalid-codepoint"),wt._currentToken.data+="�"):(wt._currentToken.data+="-"+n,wt.setState(et)),!0}function et(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-comment"),wt._emitToken(wt._currentToken),e.unget(n),wt.setState(t)):n==="-"?wt.setState(tt):n==="\0"?(wt._parseError("invalid-codepoint"),wt._currentToken.data+="�"):(wt._currentToken.data+=n,e.commit()),!0}function tt(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-comment-end-dash"),wt._emitToken(wt._currentToken),e.unget(n),wt.setState(t)):n==="-"?wt.setState(nt):n==="\0"?(wt._parseError("invalid-codepoint"),wt._currentToken.data+="-�",wt.setState(et)):(wt._currentToken.data+="-"+n+e.matchUntil("\0|-"),e.char()),!0}function nt(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-comment-double-dash"),wt._emitToken(wt._currentToken),e.unget(n),wt.setState(t)):n===">"?(wt._emitToken(wt._currentToken),wt.setState(t)):n==="!"?(wt._parseError("unexpected-bang-after-double-dash-in-comment"),wt.setState(rt)):n==="-"?(wt._parseError("unexpected-dash-after-double-dash-in-comment"),wt._currentToken.data+=n):n==="\0"?(wt._parseError("invalid-codepoint"),wt._currentToken.data+="--�",wt.setState(et)):(wt._parseError("unexpected-char-in-comment"),wt._currentToken.data+="--"+n,wt.setState(et)),!0}function rt(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-comment-end-bang-state"),wt._emitToken(wt._currentToken),e.unget(n),wt.setState(t)):n===">"?(wt._emitToken(wt._currentToken),wt.setState(t)):n==="-"?(wt._currentToken.data+="--!",wt.setState(tt)):(wt._currentToken.data+="--!"+n,wt.setState(et)),!0}function it(e){var n=e.char();return n===o.EOF?(wt._parseError("expected-doctype-name-but-got-eof"),wt._currentToken.forceQuirks=!0,e.unget(n),wt.setState(t),wt._emitCurrentToken()):r(n)?wt.setState(st):(wt._parseError("need-space-after-doctype"),e.unget(n),wt.setState(st)),!0}function st(e){var n=e.char();return n===o.EOF?(wt._parseError("expected-doctype-name-but-got-eof"),wt._currentToken.forceQuirks=!0,e.unget(n),wt.setState(t),wt._emitCurrentToken()):r(n)||(n===">"?(wt._parseError("expected-doctype-name-but-got-right-bracket"),wt._currentToken.forceQuirks=!0,wt.setState(t),wt._emitCurrentToken()):(i(n)&&(n=n.toLowerCase()),wt._currentToken.name=n,wt.setState(ot))),!0}function ot(e){var n=e.char();return n===o.EOF?(wt._currentToken.forceQuirks=!0,e.unget(n),wt._parseError("eof-in-doctype-name"),wt.setState(t),wt._emitCurrentToken()):r(n)?wt.setState(ut):n===">"?(wt.setState(t),wt._emitCurrentToken()):(i(n)&&(n=n.toLowerCase()),wt._currentToken.name+=n,e.commit()),!0}function ut(e){var n=e.char();if(n===o.EOF)wt._currentToken.forceQuirks=!0,e.unget(n),wt._parseError("eof-in-doctype"),wt.setState(t),wt._emitCurrentToken();else if(!r(n))if(n===">")wt.setState(t),wt._emitCurrentToken();else{if(["p","P"].indexOf(n)>-1){var i=[["u","U"],["b","B"],["l","L"],["i","I"],["c","C"]],s=i.every(function(t){return n=e.char(),t.indexOf(n)>-1});if(s)return wt.setState(at),!0}else if(["s","S"].indexOf(n)>-1){var i=[["y","Y"],["s","S"],["t","T"],["e","E"],["m","M"]],s=i.every(function(t){return n=e.char(),t.indexOf(n)>-1});if(s)return wt.setState(dt),!0}e.unget(n),wt._currentToken.forceQuirks=!0,n===o.EOF?(wt._parseError("eof-in-doctype"),e.unget(n),wt.setState(t),wt._emitCurrentToken()):(wt._parseError("expected-space-or-right-bracket-in-doctype",{data:n}),wt.setState(bt))}return!0}function at(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-doctype"),wt._currentToken.forceQuirks=!0,e.unget(n),wt.setState(t),wt._emitCurrentToken()):r(n)?wt.setState(ft):n==="'"||n==='"'?(wt._parseError("unexpected-char-in-doctype"),e.unget(n),wt.setState(ft)):(e.unget(n),wt.setState(ft)),!0}function ft(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-doctype"),wt._currentToken.forceQuirks=!0,e.unget(n),wt.setState(t),wt._emitCurrentToken()):r(n)||(n==='"'?(wt._currentToken.publicId="",wt.setState(lt)):n==="'"?(wt._currentToken.publicId="",wt.setState(ct)):n===">"?(wt._parseError("unexpected-end-of-doctype"),wt._currentToken.forceQuirks=!0,wt.setState(t),wt._emitCurrentToken()):(wt._parseError("unexpected-char-in-doctype"),wt._currentToken.forceQuirks=!0,wt.setState(bt))),!0}function lt(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-doctype"),wt._currentToken.forceQuirks=!0,e.unget(n),wt.setState(t),wt._emitCurrentToken()):n==='"'?wt.setState(ht):n===">"?(wt._parseError("unexpected-end-of-doctype"),wt._currentToken.forceQuirks=!0,wt.setState(t),wt._emitCurrentToken()):wt._currentToken.publicId+=n,!0}function ct(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-doctype"),wt._currentToken.forceQuirks=!0,e.unget(n),wt.setState(t),wt._emitCurrentToken()):n==="'"?wt.setState(ht):n===">"?(wt._parseError("unexpected-end-of-doctype"),wt._currentToken.forceQuirks=!0,wt.setState(t),wt._emitCurrentToken()):wt._currentToken.publicId+=n,!0}function ht(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-doctype"),wt._currentToken.forceQuirks=!0,wt._emitCurrentToken(),e.unget(n),wt.setState(t)):r(n)?wt.setState(pt):n===">"?(wt.setState(t),wt._emitCurrentToken()):n==='"'?(wt._parseError("unexpected-char-in-doctype"),wt._currentToken.systemId="",wt.setState(mt)):n==="'"?(wt._parseError("unexpected-char-in-doctype"),wt._currentToken.systemId="",wt.setState(gt)):(wt._parseError("unexpected-char-in-doctype"),wt._currentToken.forceQuirks=!0,wt.setState(bt)),!0}function pt(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-doctype"),wt._currentToken.forceQuirks=!0,wt._emitCurrentToken(),e.unget(n),wt.setState(t)):r(n)||(n===">"?(wt._emitCurrentToken(),wt.setState(t)):n==='"'?(wt._currentToken.systemId="",wt.setState(mt)):n==="'"?(wt._currentToken.systemId="",wt.setState(gt)):(wt._parseError("unexpected-char-in-doctype"),wt._currentToken.forceQuirks=!0,wt.setState(bt))),!0}function dt(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-doctype"),wt._currentToken.forceQuirks=!0,wt._emitCurrentToken(),e.unget(n),wt.setState(t)):r(n)?wt.setState(vt):n==="'"||n==='"'?(wt._parseError("unexpected-char-in-doctype"),e.unget(n),wt.setState(vt)):(e.unget(n),wt.setState(vt)),!0}function vt(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-doctype"),wt._currentToken.forceQuirks=!0,wt._emitCurrentToken(),e.unget(n),wt.setState(t)):r(n)||(n==='"'?(wt._currentToken.systemId="",wt.setState(mt)):n==="'"?(wt._currentToken.systemId="",wt.setState(gt)):n===">"?(wt._parseError("unexpected-end-of-doctype"),wt._currentToken.forceQuirks=!0,wt._emitCurrentToken(),wt.setState(t)):(wt._parseError("unexpected-char-in-doctype"),wt._currentToken.forceQuirks=!0,wt.setState(bt))),!0}function mt(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-doctype"),wt._currentToken.forceQuirks=!0,wt._emitCurrentToken(),e.unget(n),wt.setState(t)):n==='"'?wt.setState(yt):n===">"?(wt._parseError("unexpected-end-of-doctype"),wt._currentToken.forceQuirks=!0,wt._emitCurrentToken(),wt.setState(t)):wt._currentToken.systemId+=n,!0}function gt(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-doctype"),wt._currentToken.forceQuirks=!0,wt._emitCurrentToken(),e.unget(n),wt.setState(t)):n==="'"?wt.setState(yt):n===">"?(wt._parseError("unexpected-end-of-doctype"),wt._currentToken.forceQuirks=!0,wt._emitCurrentToken(),wt.setState(t)):wt._currentToken.systemId+=n,!0}function yt(e){var n=e.char();return n===o.EOF?(wt._parseError("eof-in-doctype"),wt._currentToken.forceQuirks=!0,wt._emitCurrentToken(),e.unget(n),wt.setState(t)):r(n)||(n===">"?(wt._emitCurrentToken(),wt.setState(t)):(wt._parseError("unexpected-char-in-doctype"),wt.setState(bt))),!0}function bt(e){var n=e.char();return n===o.EOF?(e.unget(n),wt._emitCurrentToken(),wt.setState(t)):n===">"&&(wt._emitCurrentToken(),wt.setState(t)),!0}s.DATA=t,s.RCDATA=a,s.RAWTEXT=l,s.SCRIPT_DATA=h,s.PLAINTEXT=c,this._state=s.DATA,this._inputStream.append(e),this._tokenHandler.startTokenization(this),this._inputStream.eof=!0;var wt=this;while(this._state.call(this,this._inputStream));},n.Tokenizer=s},{"./EntityParser":2,"./InputStream":3}],6:[function(e,t,n){(function(){function t(e){return e===" "||e==="\n"||e===" "||e==="\r"||e==="\f"}function r(e){return t(e)||e==="�"}function i(e){for(var n=0;n2?e.parseError("expected-closing-tag-but-got-eof"):e.openElements.length==2&&e.openElements.item(1).localName!="body"?e.parseError("expected-closing-tag-but-got-eof"):e.context&&e.openElements.length>1},processComment:function(t){e.insertComment(t,e.currentStackItem().node)},processDoctype:function(t,n,r,i){e.parseError("unexpected-doctype")},processStartTag:function(e,t,n){if(this[this.start_tag_handlers[e]])this[this.start_tag_handlers[e]](e,t,n);else{if(!this[this.start_tag_handlers["-default"]])throw new Error("No handler found for "+e);this[this.start_tag_handlers["-default"]](e,t,n)}},processEndTag:function(e){if(this[this.end_tag_handlers[e]])this[this.end_tag_handlers[e]](e);else{if(!this[this.end_tag_handlers["-default"]])throw new Error("No handler found for "+e);this[this.end_tag_handlers["-default"]](e)}},startTagHtml:function(t,n){!e.firstStartTag&&t=="html"&&e.parseError("non-html-root"),e.addAttributesToElement(e.openElements.rootNode,n),e.firstStartTag=!1}},n.initial=Object.create(n.base),n.initial.processEOF=function(){e.parseError("expected-doctype-but-got-eof"),this.anythingElse(),e.insertionMode.processEOF()},n.initial.processComment=function(t){e.insertComment(t,e.document)},n.initial.processDoctype=function(t,n,r,i){function s(e){return n.toLowerCase().indexOf(e)===0}e.insertDoctype(t||"",n||"",r||""),i||t!="html"||n!=null&&(["+//silmaril//dtd html pro v0r11 19970101//","-//advasoft ltd//dtd html 3.0 aswedit + extensions//","-//as//dtd html 3.0 aswedit + extensions//","-//ietf//dtd html 2.0 level 1//","-//ietf//dtd html 2.0 level 2//","-//ietf//dtd html 2.0 strict level 1//","-//ietf//dtd html 2.0 strict level 2//","-//ietf//dtd html 2.0 strict//","-//ietf//dtd html 2.0//","-//ietf//dtd html 2.1e//","-//ietf//dtd html 3.0//","-//ietf//dtd html 3.0//","-//ietf//dtd html 3.2 final//","-//ietf//dtd html 3.2//","-//ietf//dtd html 3//","-//ietf//dtd html level 0//","-//ietf//dtd html level 0//","-//ietf//dtd html level 1//","-//ietf//dtd html level 1//","-//ietf//dtd html level 2//","-//ietf//dtd html level 2//","-//ietf//dtd html level 3//","-//ietf//dtd html level 3//","-//ietf//dtd html strict level 0//","-//ietf//dtd html strict level 0//","-//ietf//dtd html strict level 1//","-//ietf//dtd html strict level 1//","-//ietf//dtd html strict level 2//","-//ietf//dtd html strict level 2//","-//ietf//dtd html strict level 3//","-//ietf//dtd html strict level 3//","-//ietf//dtd html strict//","-//ietf//dtd html strict//","-//ietf//dtd html strict//","-//ietf//dtd html//","-//ietf//dtd html//","-//ietf//dtd html//","-//metrius//dtd metrius presentational//","-//microsoft//dtd internet explorer 2.0 html strict//","-//microsoft//dtd internet explorer 2.0 html//","-//microsoft//dtd internet explorer 2.0 tables//","-//microsoft//dtd internet explorer 3.0 html strict//","-//microsoft//dtd internet explorer 3.0 html//","-//microsoft//dtd internet explorer 3.0 tables//","-//netscape comm. corp.//dtd html//","-//netscape comm. corp.//dtd strict html//","-//o'reilly and associates//dtd html 2.0//","-//o'reilly and associates//dtd html extended 1.0//","-//spyglass//dtd html 2.0 extended//","-//sq//dtd html 2.0 hotmetal + extensions//","-//sun microsystems corp.//dtd hotjava html//","-//sun microsystems corp.//dtd hotjava strict html//","-//w3c//dtd html 3 1995-03-24//","-//w3c//dtd html 3.2 draft//","-//w3c//dtd html 3.2 final//","-//w3c//dtd html 3.2//","-//w3c//dtd html 3.2s draft//","-//w3c//dtd html 4.0 frameset//","-//w3c//dtd html 4.0 transitional//","-//w3c//dtd html experimental 19960712//","-//w3c//dtd html experimental 970421//","-//w3c//dtd w3 html//","-//w3o//dtd w3 html 3.0//","-//webtechs//dtd mozilla html 2.0//","-//webtechs//dtd mozilla html//","html"].some(s)||["-//w3o//dtd w3 html strict 3.0//en//","-/w3c/dtd html 4.0 transitional/en","html"].indexOf(n.toLowerCase())>-1||r==null&&["-//w3c//dtd html 4.01 transitional//","-//w3c//dtd html 4.01 frameset//"].some(s))||r!=null&&r.toLowerCase()=="http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd"?(e.compatMode="quirks",e.parseError("quirky-doctype")):n!=null&&(["-//w3c//dtd xhtml 1.0 transitional//","-//w3c//dtd xhtml 1.0 frameset//"].some(s)||r!=null&&["-//w3c//dtd html 4.01 transitional//","-//w3c//dtd html 4.01 frameset//"].indexOf(n.toLowerCase())>-1)?(e.compatMode="limited quirks",e.parseError("almost-standards-doctype")):n=="-//W3C//DTD HTML 4.0//EN"&&(r==null||r=="http://www.w3.org/TR/REC-html40/strict.dtd")||n=="-//W3C//DTD HTML 4.01//EN"&&(r==null||r=="http://www.w3.org/TR/html4/strict.dtd")||n=="-//W3C//DTD XHTML 1.0 Strict//EN"&&r=="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"||n=="-//W3C//DTD XHTML 1.1//EN"&&r=="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"||(r!=null&&r!="about:legacy-compat"||n!=null)&&e.parseError("unknown-doctype"),e.setInsertionMode("beforeHTML")},n.initial.processCharacters=function(t){t.skipLeadingWhitespace();if(!t.length)return;e.parseError("expected-doctype-but-got-chars"),this.anythingElse(),e.insertionMode.processCharacters(t)},n.initial.processStartTag=function(t,n,r){e.parseError("expected-doctype-but-got-start-tag",{name:t}),this.anythingElse(),e.insertionMode.processStartTag(t,n,r)},n.initial.processEndTag=function(t){e.parseError("expected-doctype-but-got-end-tag",{name:t}),this.anythingElse(),e.insertionMode.processEndTag(t)},n.initial.anythingElse=function(){e.compatMode="quirks",e.setInsertionMode("beforeHTML")},n.beforeHTML=Object.create(n.base),n.beforeHTML.start_tag_handlers={html:"startTagHtml","-default":"startTagOther"},n.beforeHTML.processEOF=function(){this.anythingElse(),e.insertionMode.processEOF()},n.beforeHTML.processComment=function(t){e.insertComment(t,e.document)},n.beforeHTML.processCharacters=function(t){t.skipLeadingWhitespace();if(!t.length)return;this.anythingElse(),e.insertionMode.processCharacters(t)},n.beforeHTML.startTagHtml=function(t,n,r){e.firstStartTag=!0,e.insertHtmlElement(n),e.setInsertionMode("beforeHead")},n.beforeHTML.startTagOther=function(t,n,r){this.anythingElse(),e.insertionMode.processStartTag(t,n,r)},n.beforeHTML.processEndTag=function(t){this.anythingElse(),e.insertionMode.processEndTag(t)},n.beforeHTML.anythingElse=function(){e.insertHtmlElement(),e.setInsertionMode("beforeHead")},n.afterAfterBody=Object.create(n.base),n.afterAfterBody.start_tag_handlers={html:"startTagHtml","-default":"startTagOther"},n.afterAfterBody.processComment=function(t){e.insertComment(t,e.document)},n.afterAfterBody.processDoctype=function(e){n.inBody.processDoctype(e)},n.afterAfterBody.startTagHtml=function(e,t){n.inBody.startTagHtml(e,t)},n.afterAfterBody.startTagOther=function(t,n,r){e.parseError("unexpected-start-tag",{name:t}),e.setInsertionMode("inBody"),e.insertionMode.processStartTag(t,n,r)},n.afterAfterBody.endTagOther=function(t){e.parseError("unexpected-end-tag",{name:t}),e.setInsertionMode("inBody"),e.insertionMode.processEndTag(t)},n.afterAfterBody.processCharacters=function(t){if(!i(t.characters))return e.parseError("unexpected-char-after-body"),e.setInsertionMode("inBody"),e.insertionMode.processCharacters(t);n.inBody.processCharacters(t)},n.afterBody=Object.create(n.base),n.afterBody.end_tag_handlers={html:"endTagHtml","-default":"endTagOther"},n.afterBody.processComment=function(t){e.insertComment(t,e.openElements.rootNode)},n.afterBody.processCharacters=function(t){if(!i(t.characters))return e.parseError("unexpected-char-after-body"),e.setInsertionMode("inBody"),e.insertionMode.processCharacters(t);n.inBody.processCharacters(t)},n.afterBody.processStartTag=function(t,n,r){e.parseError("unexpected-start-tag-after-body",{name:t}),e.setInsertionMode("inBody"),e.insertionMode.processStartTag(t,n,r)},n.afterBody.endTagHtml=function(t){e.context?e.parseError("end-html-in-innerhtml"):e.setInsertionMode("afterAfterBody")},n.afterBody.endTagOther=function(t){e.parseError("unexpected-end-tag-after-body",{name:t}),e.setInsertionMode("inBody"),e.insertionMode.processEndTag(t)},n.afterFrameset=Object.create(n.base),n.afterFrameset.start_tag_handlers={html:"startTagHtml",noframes:"startTagNoframes","-default":"startTagOther"},n.afterFrameset.end_tag_handlers={html:"endTagHtml","-default":"endTagOther"},n.afterFrameset.processCharacters=function(n){var r=n.takeRemaining(),i="";for(var s=0;s1)e.openElements.pop();e.insertElement(t,n),e.setInsertionMode("inFrameset")}},n.inBody.startTagCloseP=function(t,n){e.openElements.inButtonScope("p")&&this.endTagP("p"),e.insertElement(t,n)},n.inBody.startTagPreListing=function(t,n){e.openElements.inButtonScope("p")&&this.endTagP("p"),e.insertElement(t,n),e.framesetOk=!1,e.shouldSkipLeadingNewline=!0},n.inBody.startTagForm=function(t,n){e.form?e.parseError("unexpected-start-tag",{name:t}):(e.openElements.inButtonScope("p")&&this.endTagP("p"),e.insertElement(t,n),e.form=e.currentStackItem())},n.inBody.startTagRpRt=function(t,n){e.openElements.inScope("ruby")&&(e.generateImpliedEndTags(),e.currentStackItem().localName!="ruby"&&e.parseError("unexpected-start-tag",{name:t})),e.insertElement(t,n)},n.inBody.startTagListItem=function(t,n){var r={li:["li"],dd:["dd","dt"],dt:["dd","dt"]},i=r[t],s=e.openElements;for(var o=s.length-1;o>=0;o--){var u=s.item(o);if(i.indexOf(u.localName)!=-1){e.insertionMode.processEndTag(u.localName);break}if(u.isSpecial()&&u.localName!=="p"&&u.localName!=="address"&&u.localName!=="div")break}e.openElements.inButtonScope("p")&&this.endTagP("p"),e.insertElement(t,n),e.framesetOk=!1},n.inBody.startTagPlaintext=function(t,n){e.openElements.inButtonScope("p")&&this.endTagP("p"),e.insertElement(t,n),e.tokenizer.setState(d.PLAINTEXT)},n.inBody.startTagHeading=function(t,n){e.openElements.inButtonScope("p")&&this.endTagP("p"),e.currentStackItem().isNumberedHeader()&&(e.parseError("unexpected-start-tag",{name:t}),e.popElement()),e.insertElement(t,n)},n.inBody.startTagA=function(t,n){var r=e.elementInActiveFormattingElements("a");r&&(e.parseError("unexpected-start-tag-implies-end-tag",{startName:"a",endName:"a"}),e.adoptionAgencyEndTag("a"),e.openElements.contains(r)&&e.openElements.remove(r),e.removeElementFromActiveFormattingElements(r)),e.reconstructActiveFormattingElements(),e.insertFormattingElement(t,n)},n.inBody.startTagFormatting=function(t,n){e.reconstructActiveFormattingElements(),e.insertFormattingElement(t,n)},n.inBody.startTagNobr=function(t,n){e.reconstructActiveFormattingElements(),e.openElements.inScope("nobr")&&(e.parseError("unexpected-start-tag-implies-end-tag",{startName:"nobr",endName:"nobr"}),this.processEndTag("nobr"),e.reconstructActiveFormattingElements()),e.insertFormattingElement(t,n)},n.inBody.startTagButton=function(t,n){e.openElements.inScope("button")?(e.parseError("unexpected-start-tag-implies-end-tag",{startName:"button",endName:"button"}),this.processEndTag("button"),e.insertionMode.processStartTag(t,n)):(e.framesetOk=!1,e.reconstructActiveFormattingElements(),e.insertElement(t,n))},n.inBody.startTagAppletMarqueeObject=function(t,n){e.reconstructActiveFormattingElements(),e.insertElement(t,n),e.activeFormattingElements.push(g),e.framesetOk=!1},n.inBody.endTagAppletMarqueeObject=function(t){e.openElements.inScope(t)?(e.generateImpliedEndTags(),e.currentStackItem().localName!=t&&e.parseError("end-tag-too-early",{name:t}),e.openElements.popUntilPopped(t),e.clearActiveFormattingElements()):e.parseError("unexpected-end-tag",{name:t})},n.inBody.startTagXmp=function(t,n){e.openElements.inButtonScope("p")&&this.processEndTag("p"),e.reconstructActiveFormattingElements(),e.processGenericRawTextStartTag(t,n),e.framesetOk=!1},n.inBody.startTagTable=function(t,n){e.compatMode!=="quirks"&&e.openElements.inButtonScope("p")&&this.processEndTag("p"),e.insertElement(t,n),e.setInsertionMode("inTable"),e.framesetOk=!1},n.inBody.startTagVoidFormatting=function(t,n){e.reconstructActiveFormattingElements(),e.insertSelfClosingElement(t,n),e.framesetOk=!1},n.inBody.startTagParamSourceTrack=function(t,n){e.insertSelfClosingElement(t,n)},n.inBody.startTagHr=function(t,n){e.openElements.inButtonScope("p")&&this.endTagP("p"),e.insertSelfClosingElement(t,n),e.framesetOk=!1},n.inBody.startTagImage=function(t,n){e.parseError("unexpected-start-tag-treated-as",{originalName:"image",newName:"img"}),this.processStartTag("img",n)},n.inBody.startTagInput=function(t,n){var r=e.framesetOk;this.startTagVoidFormatting(t,n);for(var i in n)if(n[i].nodeName=="type"){n[i].nodeValue.toLowerCase()=="hidden"&&(e.framesetOk=r);break}},n.inBody.startTagIsindex=function(t,n){e.parseError("deprecated-tag",{name:"isindex"}),e.selfClosingFlagAcknowledged=!0;if(e.form)return;var r=[],i=[],s="This is a searchable index. Enter search keywords: ";for(var o in n)switch(n[o].nodeName){case"action":r.push({nodeName:"action",nodeValue:n[o].nodeValue});break;case"prompt":s=n[o].nodeValue;break;case"name":break;default:i.push({nodeName:n[o].nodeName,nodeValue:n[o].nodeValue})}i.push({nodeName:"name",nodeValue:"isindex"}),this.processStartTag("form",r),this.processStartTag("hr"),this.processStartTag("label"),this.processCharacters(new u(s)),this.processStartTag("input",i),this.processEndTag("label"),this.processStartTag("hr"),this.processEndTag("form")},n.inBody.startTagTextarea=function(t,n){e.insertElement(t,n),e.tokenizer.setState(d.RCDATA),e.originalInsertionMode=e.insertionModeName,e.shouldSkipLeadingNewline=!0,e.framesetOk=!1,e.setInsertionMode("text")},n.inBody.startTagIFrame=function(t,n){e.framesetOk=!1,this.startTagRawText(t,n)},n.inBody.startTagRawText=function(t,n){e.processGenericRawTextStartTag(t,n)},n.inBody.startTagSelect=function(t,n){e.reconstructActiveFormattingElements(),e.insertElement(t,n),e.framesetOk=!1;var r=e.insertionModeName;r=="inTable"||r=="inCaption"||r=="inColumnGroup"||r=="inTableBody"||r=="inRow"||r=="inCell"?e.setInsertionMode("inSelectInTable"):e.setInsertionMode("inSelect")},n.inBody.startTagMisplaced=function(t,n){e.parseError("unexpected-start-tag-ignored",{name:t})},n.inBody.endTagMisplaced=function(t){e.parseError("unexpected-end-tag",{name:t})},n.inBody.endTagBr=function(t){e.parseError("unexpected-end-tag-treated-as",{originalName:"br",newName:"br element"}),e.reconstructActiveFormattingElements(),e.insertElement(t,[]),e.popElement()},n.inBody.startTagOptionOptgroup=function(t,n){e.currentStackItem().localName=="option"&&e.popElement(),e.reconstructActiveFormattingElements(),e.insertElement(t,n)},n.inBody.startTagOther=function(t,n){e.reconstructActiveFormattingElements(),e.insertElement(t,n)},n.inBody.endTagOther=function(t){var n;for(var r=e.openElements.length-1;r>0;r--){n=e.openElements.item(r);if(n.localName==t){e.generateImpliedEndTags(t),e.currentStackItem().localName!=t&&e.parseError("unexpected-end-tag",{name:t}),e.openElements.remove_openElements_until(function(e){return e===n});break}if(n.isSpecial()){e.parseError("unexpected-end-tag",{name:t});break}}},n.inBody.startTagMath=function(t,n,r){e.reconstructActiveFormattingElements(),n=e.adjustMathMLAttributes(n),n=e.adjustForeignAttributes(n),e.insertForeignElement(t,n,"http://www.w3.org/1998/Math/MathML",r)},n.inBody.startTagSVG=function(t,n,r){e.reconstructActiveFormattingElements(),n=e.adjustSVGAttributes(n),n=e.adjustForeignAttributes(n),e.insertForeignElement(t,n,"http://www.w3.org/2000/svg",r)},n.inBody.endTagP=function(t){e.openElements.inButtonScope("p")?(e.generateImpliedEndTags("p"),e.currentStackItem().localName!="p"&&e.parseError("unexpected-end-tag",{name:"p"}),e.openElements.popUntilPopped(t)):(e.parseError("unexpected-end-tag",{name:"p"}),this.startTagCloseP("p",[]),this.endTagP("p"))},n.inBody.endTagBody=function(t){if(!e.openElements.inScope("body")){e.parseError("unexpected-end-tag",{name:t});return}e.currentStackItem().localName!="body"&&e.parseError("expected-one-end-tag-but-got-another",{expectedName:e.currentStackItem().localName,gotName:t}),e.setInsertionMode("afterBody")},n.inBody.endTagHtml=function(t){if(!e.openElements.inScope("body")){e.parseError("unexpected-end-tag",{name:t});return}e.currentStackItem().localName!="body"&&e.parseError("expected-one-end-tag-but-got-another",{expectedName:e.currentStackItem().localName,gotName:t}),e.setInsertionMode("afterBody"),e.insertionMode.processEndTag(t)},n.inBody.endTagBlock=function(t){e.openElements.inScope(t)?(e.generateImpliedEndTags(),e.currentStackItem().localName!=t&&e.parseError("end-tag-too-early",{name:t}),e.openElements.popUntilPopped(t)):e.parseError("unexpected-end-tag",{name:t})},n.inBody.endTagForm=function(t){var n=e.form;e.form=null,!n||!e.openElements.inScope(t)?e.parseError("unexpected-end-tag",{name:t}):(e.generateImpliedEndTags(),e.currentStackItem()!=n&&e.parseError("end-tag-too-early-ignored",{name:"form"}),e.openElements.remove(n))},n.inBody.endTagListItem=function(t){e.openElements.inListItemScope(t)?(e.generateImpliedEndTags(t),e.currentStackItem().localName!=t&&e.parseError("end-tag-too-early",{name:t}),e.openElements.popUntilPopped(t)):e.parseError("unexpected-end-tag",{name:t})},n.inBody.endTagHeading=function(t){if(!e.openElements.hasNumberedHeaderElementInScope()){e.parseError("unexpected-end-tag",{name:t});return}e.generateImpliedEndTags(),e.currentStackItem().localName!=t&&e.parseError("end-tag-too-early",{name:t}),e.openElements.remove_openElements_until(function(e){return e.isNumberedHeader()})},n.inBody.endTagFormatting=function(t,n){e.adoptionAgencyEndTag(t)||this.endTagOther(t,n)},n.inCaption=Object.create(n.base),n.inCaption.start_tag_handlers={html:"startTagHtml",caption:"startTagTableElement",col:"startTagTableElement",colgroup:"startTagTableElement",tbody:"startTagTableElement",td:"startTagTableElement",tfoot:"startTagTableElement",thead:"startTagTableElement",tr:"startTagTableElement","-default":"startTagOther"},n.inCaption.end_tag_handlers={caption:"endTagCaption",table:"endTagTable",body:"endTagIgnore",col:"endTagIgnore",colgroup:"endTagIgnore",html:"endTagIgnore",tbody:"endTagIgnore",td:"endTagIgnore",tfood:"endTagIgnore",thead:"endTagIgnore",tr:"endTagIgnore","-default":"endTagOther"},n.inCaption.processCharacters=function(e){n.inBody.processCharacters(e)},n.inCaption.startTagTableElement=function(t,n){e.parseError("unexpected-end-tag",{name:t});var r=!e.openElements.inTableScope("caption");e.insertionMode.processEndTag("caption"),r||e.insertionMode.processStartTag(t,n)},n.inCaption.startTagOther=function(e,t,r){n.inBody.processStartTag(e,t,r)},n.inCaption.endTagCaption=function(t){e.openElements.inTableScope("caption")?(e.generateImpliedEndTags(),e.currentStackItem().localName!="caption"&&e.parseError("expected-one-end-tag-but-got-another",{gotName:"caption",expectedName:e.currentStackItem().localName}),e.openElements.popUntilPopped("caption"),e.clearActiveFormattingElements(),e.setInsertionMode("inTable")):(l.ok(e.context),e.parseError("unexpected-end-tag",{name:t}))},n.inCaption.endTagTable=function(t){e.parseError("unexpected-end-table-in-caption");var n=!e.openElements.inTableScope("caption");e.insertionMode.processEndTag("caption"),n||e.insertionMode.processEndTag(t)},n.inCaption.endTagIgnore=function(t){e.parseError("unexpected-end-tag",{name:t})},n.inCaption.endTagOther=function(e){n.inBody.processEndTag(e)},n.inCell=Object.create(n.base),n.inCell.start_tag_handlers={html:"startTagHtml",caption:"startTagTableOther",col:"startTagTableOther",colgroup:"startTagTableOther",tbody:"startTagTableOther",td:"startTagTableOther",tfoot:"startTagTableOther",th:"startTagTableOther",thead:"startTagTableOther",tr:"startTagTableOther","-default":"startTagOther"},n.inCell.end_tag_handlers={td:"endTagTableCell",th:"endTagTableCell",body:"endTagIgnore",caption:"endTagIgnore",col:"endTagIgnore",colgroup:"endTagIgnore",html:"endTagIgnore",table:"endTagImply",tbody:"endTagImply",tfoot:"endTagImply",thead:"endTagImply",tr:"endTagImply","-default":"endTagOther"},n.inCell.processCharacters=function(e){n.inBody.processCharacters(e)},n.inCell.startTagTableOther=function(t,n,r){e.openElements.inTableScope("td")||e.openElements.inTableScope("th")?(this.closeCell(),e.insertionMode.processStartTag(t,n,r)):e.parseError("unexpected-start-tag",{name:t})},n.inCell.startTagOther=function(e,t,r){n.inBody.processStartTag(e,t,r)},n.inCell.endTagTableCell=function(t){e.openElements.inTableScope(t)?(e.generateImpliedEndTags(t),e.currentStackItem().localName!=t.toLowerCase()?(e.parseError("unexpected-cell-end-tag",{name:t}),e.openElements.popUntilPopped(t)):e.popElement(),e.clearActiveFormattingElements(),e.setInsertionMode("inRow")):e.parseError("unexpected-end-tag",{name:t})},n.inCell.endTagIgnore=function(t){e.parseError("unexpected-end-tag",{name:t})},n.inCell.endTagImply=function(t){e.openElements.inTableScope(t)?(this.closeCell(),e.insertionMode.processEndTag(t)):e.parseError("unexpected-end-tag",{name:t})},n.inCell.endTagOther=function(e){n.inBody.processEndTag(e)},n.inCell.closeCell=function(){e.openElements.inTableScope("td")?this.endTagTableCell("td"):e.openElements.inTableScope("th")&&this.endTagTableCell("th")},n.inColumnGroup=Object.create(n.base),n.inColumnGroup.start_tag_handlers={html:"startTagHtml",col:"startTagCol","-default":"startTagOther"},n.inColumnGroup.end_tag_handlers={colgroup:"endTagColgroup",col:"endTagCol","-default":"endTagOther"},n.inColumnGroup.ignoreEndTagColgroup=function(){return e.currentStackItem().localName=="html"},n.inColumnGroup.processCharacters=function(t){var n=t.takeLeadingWhitespace();n&&e.insertText(n);if(!t.length)return;var r=this.ignoreEndTagColgroup();this.endTagColgroup("colgroup"),r||e.insertionMode.processCharacters(t)},n.inColumnGroup.startTagCol=function(t,n){e.insertSelfClosingElement(t,n)},n.inColumnGroup.startTagOther=function(t,n,r){var i=this.ignoreEndTagColgroup();this.endTagColgroup("colgroup"),i||e.insertionMode.processStartTag(t,n,r)},n.inColumnGroup.endTagColgroup=function(t){this.ignoreEndTagColgroup()?(l.ok(e.context),e.parseError("unexpected-end-tag",{name:t})):(e.popElement(),e.setInsertionMode("inTable"))},n.inColumnGroup.endTagCol=function(t){e.parseError("no-end-tag",{name:"col"})},n.inColumnGroup.endTagOther=function(t){var n=this.ignoreEndTagColgroup();this.endTagColgroup("colgroup"),n||e.insertionMode.processEndTag(t)},n.inForeignContent=Object.create(n.base),n.inForeignContent.processStartTag=function(t,n,r){if(["b","big","blockquote","body","br","center","code","dd","div","dl","dt","em","embed","h1","h2","h3","h4","h5","h6","head","hr","i","img","li","listing","menu","meta","nobr","ol","p","pre","ruby","s","small","span","strong","strike","sub","sup","table","tt","u","ul","var"].indexOf(t)!=-1||t=="font"&&n.some(function(e){return["color","face","size"].indexOf(e.nodeName)>=0})){e.parseError("unexpected-html-element-in-foreign-content",{name:t});while(e.currentStackItem().isForeign()&&!e.currentStackItem().isHtmlIntegrationPoint()&&!e.currentStackItem().isMathMLTextIntegrationPoint())e.openElements.pop();e.insertionMode.processStartTag(t,n,r);return}e.currentStackItem().namespaceURI=="http://www.w3.org/1998/Math/MathML"&&(n=e.adjustMathMLAttributes(n)),e.currentStackItem().namespaceURI=="http://www.w3.org/2000/svg"&&(t=e.adjustSVGTagNameCase(t),n=e.adjustSVGAttributes(n)),n=e.adjustForeignAttributes(n),e.insertForeignElement(t,n,e.currentStackItem().namespaceURI,r)},n.inForeignContent.processEndTag=function(t){var n=e.currentStackItem(),r=e.openElements.length-1;n.localName.toLowerCase()!=t&&e.parseError("unexpected-end-tag",{name:t});for(;;){if(r===0)break;if(n.localName.toLowerCase()==t){while(e.openElements.pop()!=n);break}r-=1,n=e.openElements.item(r);if(n.isForeign())continue;e.insertionMode.processEndTag(t);break}},n.inForeignContent.processCharacters=function(t){var n=t.takeRemaining();n=n.replace(/\u0000/g,function(t,n){return e.parseError("invalid-codepoint"),"�"}),e.framesetOk&&!s(n)&&(e.framesetOk=!1),e.insertText(n)},n.inHeadNoscript=Object.create(n.base),n.inHeadNoscript.start_tag_handlers={html:"startTagHtml",basefont:"startTagBasefontBgsoundLinkMetaNoframesStyle",bgsound:"startTagBasefontBgsoundLinkMetaNoframesStyle",link:"startTagBasefontBgsoundLinkMetaNoframesStyle",meta:"startTagBasefontBgsoundLinkMetaNoframesStyle",noframes:"startTagBasefontBgsoundLinkMetaNoframesStyle",style:"startTagBasefontBgsoundLinkMetaNoframesStyle",head:"startTagHeadNoscript",noscript:"startTagHeadNoscript","-default":"startTagOther"},n.inHeadNoscript.end_tag_handlers={noscript:"endTagNoscript",br:"endTagBr","-default":"endTagOther"},n.inHeadNoscript.processCharacters=function(t){var n=t.takeLeadingWhitespace();n&&e.insertText(n);if(!t.length)return;e.parseError("unexpected-char-in-frameset"),this.anythingElse(),e.insertionMode.processCharacters(t)},n.inHeadNoscript.processComment=function(e){n.inHead.processComment(e)},n.inHeadNoscript.startTagHtml=function(e,t){n.inBody.processStartTag(e,t)},n.inHeadNoscript.startTagBasefontBgsoundLinkMetaNoframesStyle=function(e,t){n.inHead.processStartTag(e,t)},n.inHeadNoscript.startTagHeadNoscript=function(t,n){e.parseError("unexpected-start-tag-in-frameset",{name:t})},n.inHeadNoscript.startTagOther=function(t,n){e.parseError("unexpected-start-tag-in-frameset",{name:t}),this.anythingElse(),e.insertionMode.processStartTag(t,n)},n.inHeadNoscript.endTagBr=function(t,n){e.parseError("unexpected-end-tag-in-frameset",{name:t}),this.anythingElse(),e.insertionMode.processEndTag(t,n)},n.inHeadNoscript.endTagNoscript=function(t,n){e.popElement(),e.setInsertionMode("inHead")},n.inHeadNoscript.endTagOther=function(t,n){e.parseError("unexpected-end-tag-in-frameset",{name:t})},n.inHeadNoscript.anythingElse=function(){e.popElement(),e.setInsertionMode("inHead")},n.inFrameset=Object.create(n.base),n.inFrameset.start_tag_handlers={html:"startTagHtml",frameset:"startTagFrameset",frame:"startTagFrame",noframes:"startTagNoframes","-default":"startTagOther"},n.inFrameset.end_tag_handlers={frameset:"endTagFrameset",noframes:"endTagNoframes","-default":"endTagOther"},n.inFrameset.processCharacters=function(t){e.parseError("unexpected-char-in-frameset")},n.inFrameset.startTagFrameset=function(t,n){e.insertElement(t,n)},n.inFrameset.startTagFrame=function(t,n){e.insertSelfClosingElement(t,n)},n.inFrameset.startTagNoframes=function(e,t){n.inBody.processStartTag(e,t)},n.inFrameset.startTagOther=function(t,n){e.parseError("unexpected-start-tag-in-frameset",{name:t})},n.inFrameset.endTagFrameset=function(t,n){e.currentStackItem().localName=="html"?e.parseError("unexpected-frameset-in-frameset-innerhtml"):e.popElement(),!e.context&&e.currentStackItem().localName!="frameset"&&e.setInsertionMode("afterFrameset")},n.inFrameset.endTagNoframes=function(e){n.inBody.processEndTag(e)},n.inFrameset.endTagOther=function(t){e.parseError("unexpected-end-tag-in-frameset",{name:t})},n.inTable=Object.create(n.base),n.inTable.start_tag_handlers={html:"startTagHtml",caption:"startTagCaption",colgroup:"startTagColgroup",col:"startTagCol",table:"startTagTable",tbody:"startTagRowGroup",tfoot:"startTagRowGroup",thead:"startTagRowGroup",td:"startTagImplyTbody",th:"startTagImplyTbody",tr:"startTagImplyTbody",style:"startTagStyleScript",script:"startTagStyleScript",input:"startTagInput",form:"startTagForm","-default":"startTagOther"},n.inTable.end_tag_handlers={table:"endTagTable",body:"endTagIgnore",caption:"endTagIgnore",col:"endTagIgnore",colgroup:"endTagIgnore",html:"endTagIgnore",tbody:"endTagIgnore",td:"endTagIgnore",tfoot:"endTagIgnore",th:"endTagIgnore",thead:"endTagIgnore",tr:"endTagIgnore","-default":"endTagOther"},n.inTable.processCharacters=function(t){if(e.currentStackItem().isFosterParenting()){var r=e.insertionModeName;e.setInsertionMode("inTableText"),e.originalInsertionMode=r,e.insertionMode.processCharacters(t)}else e.redirectAttachToFosterParent=!0,n.inBody.processCharacters(t),e.redirectAttachToFosterParent=!1},n.inTable.startTagCaption=function(t,n){e.openElements.popUntilTableScopeMarker(),e.activeFormattingElements.push(g),e.insertElement(t,n),e.setInsertionMode("inCaption")},n.inTable.startTagColgroup=function(t,n){e.openElements.popUntilTableScopeMarker(),e.insertElement(t,n),e.setInsertionMode("inColumnGroup")},n.inTable.startTagCol=function(t,n){this.startTagColgroup("colgroup",[]),e.insertionMode.processStartTag(t,n)},n.inTable.startTagRowGroup=function(t,n){e.openElements.popUntilTableScopeMarker(),e.insertElement(t,n),e.setInsertionMode("inTableBody")},n.inTable.startTagImplyTbody=function(t,n){this.startTagRowGroup("tbody",[]),e.insertionMode.processStartTag(t,n)},n.inTable.startTagTable=function(t,n){e.parseError("unexpected-start-tag-implies-end-tag",{startName:"table",endName:"table"}),e.insertionMode.processEndTag("table"),e.context||e.insertionMode.processStartTag(t,n)},n.inTable.startTagStyleScript=function(e,t){n.inHead.processStartTag(e,t)},n.inTable.startTagInput=function(t,n){for(var r in n)if(n[r].nodeName.toLowerCase()=="type"){if(n[r].nodeValue.toLowerCase()=="hidden"){e.parseError("unexpected-hidden-input-in-table"),e.insertElement(t,n),e.openElements.pop();return}break}this.startTagOther(t,n)},n.inTable.startTagForm=function(t,n){e.parseError("unexpected-form-in-table"),e.form||(e.insertElement(t,n),e.form=e.currentStackItem(),e.openElements.pop())},n.inTable.startTagOther=function(t,r,i){e.parseError("unexpected-start-tag-implies-table-voodoo",{name:t}),e.redirectAttachToFosterParent=!0,n.inBody.processStartTag(t,r,i),e.redirectAttachToFosterParent=!1},n.inTable.endTagTable=function(t){e.openElements.inTableScope(t)?(e.generateImpliedEndTags(),e.currentStackItem().localName!=t&&e.parseError("end-tag-too-early-named",{gotName:"table",expectedName:e.currentStackItem().localName}),e.openElements.popUntilPopped("table"),e.resetInsertionMode()):(l.ok(e.context),e.parseError("unexpected-end-tag",{name:t}))},n.inTable.endTagIgnore=function(t){e.parseError("unexpected-end-tag",{name:t})},n.inTable.endTagOther=function(t){e.parseError("unexpected-end-tag-implies-table-voodoo",{name:t}),e.redirectAttachToFosterParent=!0,n.inBody.processEndTag(t),e.redirectAttachToFosterParent=!1},n.inTableText=Object.create(n.base),n.inTableText.flushCharacters=function(){var t=e.pendingTableCharacters.join("");i(t)?e.insertText(t):(e.redirectAttachToFosterParent=!0,e.reconstructActiveFormattingElements(),e.insertText(t),e.framesetOk=!1,e.redirectAttachToFosterParent=!1),e.pendingTableCharacters=[]},n.inTableText.processComment=function(t){this.flushCharacters(),e.setInsertionMode(e.originalInsertionMode),e.insertionMode.processComment(t)},n.inTableText.processEOF=function(t){this.flushCharacters(),e.setInsertionMode(e.originalInsertionMode),e.insertionMode.processEOF()},n.inTableText.processCharacters=function(t){var n=t.takeRemaining();n=n.replace(/\u0000/g,function(t,n){return e.parseError("invalid-codepoint"),""});if(!n)return;e.pendingTableCharacters.push(n)},n.inTableText.processStartTag=function(t,n,r){this.flushCharacters(),e.setInsertionMode(e.originalInsertionMode),e.insertionMode.processStartTag(t,n,r)},n.inTableText.processEndTag=function(t,n){this.flushCharacters(),e.setInsertionMode(e.originalInsertionMode),e.insertionMode.processEndTag(t,n)},n.inTableBody=Object.create(n.base),n.inTableBody.start_tag_handlers={html:"startTagHtml",tr:"startTagTr",td:"startTagTableCell",th:"startTagTableCell",caption:"startTagTableOther",col:"startTagTableOther",colgroup:"startTagTableOther",tbody:"startTagTableOther",tfoot:"startTagTableOther",thead:"startTagTableOther","-default":"startTagOther"},n.inTableBody.end_tag_handlers={table:"endTagTable",tbody:"endTagTableRowGroup",tfoot:"endTagTableRowGroup",thead:"endTagTableRowGroup",body:"endTagIgnore",caption:"endTagIgnore",col:"endTagIgnore",colgroup:"endTagIgnore",html:"endTagIgnore",td:"endTagIgnore",th:"endTagIgnore",tr:"endTagIgnore","-default":"endTagOther"},n.inTableBody.processCharacters=function(e){n.inTable.processCharacters(e)},n.inTableBody.startTagTr=function(t,n){e.openElements.popUntilTableBodyScopeMarker(),e.insertElement(t,n),e.setInsertionMode("inRow")},n.inTableBody.startTagTableCell=function(t,n){e.parseError("unexpected-cell-in-table-body",{name:t}),this.startTagTr("tr",[]),e.insertionMode.processStartTag(t,n)},n.inTableBody.startTagTableOther=function(t,n){e.openElements.inTableScope("tbody")||e.openElements.inTableScope("thead")||e.openElements.inTableScope("tfoot")?(e.openElements.popUntilTableBodyScopeMarker(),this.endTagTableRowGroup(e.currentStackItem().localName),e.insertionMode.processStartTag(t,n)):e.parseError("unexpected-start-tag",{name:t})},n.inTableBody.startTagOther=function(e,t){n.inTable.processStartTag(e,t)},n.inTableBody.endTagTableRowGroup=function(t){e.openElements.inTableScope(t)?(e.openElements.popUntilTableBodyScopeMarker(),e.popElement(),e.setInsertionMode("inTable")):e.parseError("unexpected-end-tag-in-table-body",{name:t})},n.inTableBody.endTagTable=function(t){e.openElements.inTableScope("tbody")||e.openElements.inTableScope("thead")||e.openElements.inTableScope("tfoot")?(e.openElements.popUntilTableBodyScopeMarker(),this.endTagTableRowGroup(e.currentStackItem().localName),e.insertionMode.processEndTag(t)):e.parseError("unexpected-end-tag",{name:t})},n.inTableBody.endTagIgnore=function(t){e.parseError("unexpected-end-tag-in-table-body",{name:t})},n.inTableBody.endTagOther=function(e){n.inTable.processEndTag(e)},n.inSelect=Object.create(n.base),n.inSelect.start_tag_handlers={html:"startTagHtml",option:"startTagOption",optgroup:"startTagOptgroup",select:"startTagSelect",input:"startTagInput",keygen:"startTagInput",textarea:"startTagInput",script:"startTagScript","-default":"startTagOther"},n.inSelect.end_tag_handlers={option:"endTagOption",optgroup:"endTagOptgroup",select:"endTagSelect",caption:"endTagTableElements",table:"endTagTableElements",tbody:"endTagTableElements",tfoot:"endTagTableElements",thead:"endTagTableElements",tr:"endTagTableElements",td:"endTagTableElements",th:"endTagTableElements","-default":"endTagOther"},n.inSelect.processCharacters=function(t){var n=t.takeRemaining();n=n.replace(/\u0000/g,function(t,n){return e.parseError("invalid-codepoint"),""});if(!n)return;e.insertText(n)},n.inSelect.startTagOption=function(t,n){e.currentStackItem().localName=="option"&&e.popElement(),e.insertElement(t,n)},n.inSelect.startTagOptgroup=function(t,n){e.currentStackItem().localName=="option"&&e.popElement(),e.currentStackItem().localName=="optgroup"&&e.popElement(),e.insertElement(t,n)},n.inSelect.endTagOption=function(t){if(e.currentStackItem().localName!=="option"){e.parseError("unexpected-end-tag-in-select",{name:t});return}e.popElement()},n.inSelect.endTagOptgroup=function(t){e.currentStackItem().localName=="option"&&e.openElements.item(e.openElements.length-2).localName=="optgroup"&&e.popElement(),e.currentStackItem().localName=="optgroup"?e.popElement():e.parseError("unexpected-end-tag-in-select",{name:"optgroup"})},n.inSelect.startTagSelect=function(t){e.parseError("unexpected-select-in-select"),this.endTagSelect("select")},n.inSelect.endTagSelect=function(t){e.openElements.inTableScope("select")?(e.openElements.popUntilPopped("select"),e.resetInsertionMode()):e.parseError("unexpected-end-tag",{name:t})},n.inSelect.startTagInput=function(t,n){e.parseError("unexpected-input-in-select"),e.openElements.inSelectScope("select")&&(this.endTagSelect("select"),e.insertionMode.processStartTag(t,n))},n.inSelect.startTagScript=function(e,t){n.inHead.processStartTag(e,t)},n.inSelect.endTagTableElements=function(t){e.parseError("unexpected-end-tag-in-select",{name:t}),e.openElements.inTableScope(t)&&(this.endTagSelect("select"),e.insertionMode.processEndTag(t))},n.inSelect.startTagOther=function(t,n){e.parseError("unexpected-start-tag-in-select",{name:t})},n.inSelect.endTagOther=function(t){e.parseError("unexpected-end-tag-in-select",{name:t})},n.inSelectInTable=Object.create(n.base),n.inSelectInTable.start_tag_handlers={caption:"startTagTable",table:"startTagTable",tbody:"startTagTable",tfoot:"startTagTable",thead:"startTagTable",tr:"startTagTable",td:"startTagTable",th:"startTagTable","-default":"startTagOther"},n.inSelectInTable.end_tag_handlers={caption:"endTagTable",table:"endTagTable",tbody:"endTagTable",tfoot:"endTagTable",thead:"endTagTable",tr:"endTagTable",td:"endTagTable",th:"endTagTable","-default":"endTagOther"},n.inSelectInTable.processCharacters=function(e){n.inSelect.processCharacters(e)},n.inSelectInTable.startTagTable=function(t,n){e.parseError("unexpected-table-element-start-tag-in-select-in-table",{name:t}),this.endTagOther("select"),e.insertionMode.processStartTag(t,n)},n.inSelectInTable.startTagOther=function(e,t,r){n.inSelect.processStartTag(e,t,r)},n.inSelectInTable.endTagTable=function(t){e.parseError("unexpected-table-element-end-tag-in-select-in-table",{name:t}),e.openElements.inTableScope(t)&&(this.endTagOther("select"),e.insertionMode.processEndTag(t))},n.inSelectInTable.endTagOther=function(e){n.inSelect.processEndTag(e)},n.inRow=Object.create(n.base),n.inRow.start_tag_handlers={html:"startTagHtml",td:"startTagTableCell",th:"startTagTableCell",caption:"startTagTableOther",col:"startTagTableOther",colgroup:"startTagTableOther",tbody:"startTagTableOther",tfoot:"startTagTableOther",thead:"startTagTableOther",tr:"startTagTableOther","-default":"startTagOther"},n.inRow.end_tag_handlers={tr:"endTagTr",table:"endTagTable",tbody:"endTagTableRowGroup",tfoot:"endTagTableRowGroup",thead:"endTagTableRowGroup",body:"endTagIgnore",caption:"endTagIgnore",col:"endTagIgnore",colgroup:"endTagIgnore",html:"endTagIgnore",td:"endTagIgnore",th:"endTagIgnore","-default":"endTagOther"},n.inRow.processCharacters=function(e){n.inTable.processCharacters(e)},n.inRow.startTagTableCell=function(t,n){e.openElements.popUntilTableRowScopeMarker(),e.insertElement(t,n),e.setInsertionMode("inCell"),e.activeFormattingElements.push(g)},n.inRow.startTagTableOther=function(t,n){var r=this.ignoreEndTagTr();this.endTagTr("tr"),r||e.insertionMode.processStartTag(t,n)},n.inRow.startTagOther=function(e,t,r){n.inTable.processStartTag(e,t,r)},n.inRow.endTagTr=function(t){this.ignoreEndTagTr()?(l.ok(e.context),e.parseError("unexpected-end-tag",{name:t})):(e.openElements.popUntilTableRowScopeMarker(),e.popElement(),e.setInsertionMode("inTableBody"))},n.inRow.endTagTable=function(t){var n=this.ignoreEndTagTr();this.endTagTr("tr"),n||e.insertionMode.processEndTag(t)},n.inRow.endTagTableRowGroup=function(t){e.openElements.inTableScope(t)?(this.endTagTr("tr"),e.insertionMode.processEndTag(t)):e.parseError("unexpected-end-tag",{name:t})},n.inRow.endTagIgnore=function(t){e.parseError("unexpected-end-tag-in-table-row",{name:t})},n.inRow.endTagOther=function(e){n.inTable.processEndTag(e)},n.inRow.ignoreEndTagTr=function(){return!e.openElements.inTableScope("tr")},n.afterAfterFrameset=Object.create(n.base),n.afterAfterFrameset.start_tag_handlers={html:"startTagHtml",noframes:"startTagNoFrames","-default":"startTagOther"},n.afterAfterFrameset.processEOF=function(){},n.afterAfterFrameset.processComment=function(t){e.insertComment(t,e.document)},n.afterAfterFrameset.processCharacters=function(n){var r=n.takeRemaining(),i="";for(var s=0;s0&&this.currentStackItem().isForeign()},a.prototype.isSelfClosingFlagAcknowledged=function(){return this.selfClosingFlagAcknowledged},a.prototype.createElement=function(e,t,n){throw new Error("Not implemented")},a.prototype.attachNode=function(e,t){throw new Error("Not implemented")},a.prototype.attachNodeToFosterParent=function(e,t,n){throw new Error("Not implemented")},a.prototype.detachFromParent=function(e){throw new Error("Not implemented")},a.prototype.addAttributesToElement=function(e,t){throw new Error("Not implemented")},a.prototype.insertHtmlElement=function(e){var t=this.createElement("http://www.w3.org/1999/xhtml","html",e);return this.attachNode(t,this.document),this.openElements.pushHtmlElement(new m("http://www.w3.org/1999/xhtml","html",e,t)),t},a.prototype.insertHeadElement=function(e){var t=this.createElement("http://www.w3.org/1999/xhtml","head",e);return this.head=new m("http://www.w3.org/1999/xhtml","head",e,t),this.attachNode(t,this.openElements.top.node),this.openElements.pushHeadElement(this.head),t},a.prototype.insertBodyElement=function(e){var t=this.createElement("http://www.w3.org/1999/xhtml","body",e);return this.attachNode(t,this.openElements.top.node),this.openElements.pushBodyElement(new m("http://www.w3.org/1999/xhtml","body",e,t)),t},a.prototype.insertIntoFosterParent=function(e){var t=this.openElements.findIndex("table"),n=this.openElements.item(t).node;if(t===0)return this.attachNode(e,n);this.attachNodeToFosterParent(e,n,this.openElements.item(t-1).node)},a.prototype.insertElement=function(e,t,n,r){n||(n="http://www.w3.org/1999/xhtml");var i=this.createElement(n,e,t);this.shouldFosterParent()?this.insertIntoFosterParent(i):this.attachNode(i,this.openElements.top.node),r||this.openElements.push(new m(n,e,t,i))},a.prototype.insertFormattingElement=function(e,t){this.insertElement(e,t,"http://www.w3.org/1999/xhtml"),this.appendElementToActiveFormattingElements(this.currentStackItem())},a.prototype.insertSelfClosingElement=function(e,t){this.selfClosingFlagAcknowledged=!0,this.insertElement(e,t,"http://www.w3.org/1999/xhtml",!0)},a.prototype.insertForeignElement=function(e,t,n,r){r&&(this.selfClosingFlagAcknowledged=!0),this.insertElement(e,t,n,r)},a.prototype.insertComment=function(e,t){throw new Error("Not implemented")},a.prototype.insertDoctype=function(e,t,n){throw new Error("Not implemented")},a.prototype.insertText=function(e){throw new Error("Not implemented")},a.prototype.currentStackItem=function(){return this.openElements.top},a.prototype.popElement=function(){return this.openElements.pop()},a.prototype.shouldFosterParent=function(){return this.redirectAttachToFosterParent&&this.currentStackItem().isFosterParenting()},a.prototype.generateImpliedEndTags=function(e){var t=this.openElements.top.localName;["dd","dt","li","option","optgroup","p","rp","rt"].indexOf(t)!=-1&&t!=e&&(this.popElement(),this.generateImpliedEndTags(e))},a.prototype.reconstructActiveFormattingElements=function(){if(this.activeFormattingElements.length===0)return;var e=this.activeFormattingElements.length-1,t=this.activeFormattingElements[e];if(t==g||this.openElements.contains(t))return;while(t!=g&&!this.openElements.contains(t)){e-=1,t=this.activeFormattingElements[e];if(!t)break}for(;;){e+=1,t=this.activeFormattingElements[e],this.insertElement(t.localName,t.attributes);var n=this.currentStackItem();this.activeFormattingElements[e]=n;if(n==this.activeFormattingElements[this.activeFormattingElements.length-1])break}},a.prototype.ensureNoahsArkCondition=function(e){var t=3;if(this.activeFormattingElements.length=0;i--){var s=this.activeFormattingElements[i];if(s===g)break;if(e.localName!==s.localName||e.namespaceURI!==s.namespaceURI)continue;if(s.attributes.length!=r)continue;n.push(s)}if(n.length=0&&this.activeFormattingElements.splice(t,1)},a.prototype.elementInActiveFormattingElements=function(e){var t=this.activeFormattingElements;for(var n=t.length-1;n>=0;n--){if(t[n]==g)break;if(t[n].localName==e)return t[n]}return!1},a.prototype.reparentChildren=function(e,t){throw new Error("Not implemented")},a.prototype.clearActiveFormattingElements=function(){while(this.activeFormattingElements.length!==0&&this.activeFormattingElements.pop()!=g);},a.prototype.setFragmentContext=function(e){this.context=e},a.prototype.parseError=function(e,t,n){if(!this.errorHandler)return;var r=f(c[e],t);this.errorHandler.error(r,this.tokenizer._inputStream.location(),e)},a.prototype.resetInsertionMode=function(){var e=!1,t=null;for(var n=this.openElements.length-1;n>=0;n--){t=this.openElements.item(n),n===0&&(l.ok(this.context),e=!0,t=new m("http://www.w3.org/1999/xhtml",this.context,[],null));if(t.namespaceURI==="http://www.w3.org/1999/xhtml"){if(t.localName==="select")return this.setInsertionMode("inSelect");if(t.localName==="td"||t.localName==="th")return this.setInsertionMode("inCell");if(t.localName==="tr")return this.setInsertionMode("inRow");if(t.localName==="tbody"||t.localName==="thead"||t.localName==="tfoot")return this.setInsertionMode("inTableBody");if(t.localName==="caption")return this.setInsertionMode("inCaption");if(t.localName==="colgroup")return this.setInsertionMode("inColumnGroup");if(t.localName==="table")return this.setInsertionMode("inTable");if(t.localName==="head"&&!e)return this.setInsertionMode("inHead");if(t.localName==="body")return this.setInsertionMode("inBody");if(t.localName==="frameset")return this.setInsertionMode("inFrameset");if(t.localName==="html")return this.openElements.headElement?this.setInsertionMode("afterHead"):this.setInsertionMode("beforeHead")}if(e)return this.setInsertionMode("inBody")}},a.prototype.processGenericRCDATAStartTag=function(e,t){this.insertElement(e,t),this.tokenizer.setState(d.RCDATA),this.originalInsertionMode=this.insertionModeName,this.setInsertionMode("text")},a.prototype.processGenericRawTextStartTag=function(e,t){this.insertElement(e,t),this.tokenizer.setState(d.RAWTEXT),this.originalInsertionMode=this.insertionModeName,this.setInsertionMode("text")},a.prototype.adjustMathMLAttributes=function(e){return e.forEach(function(e){e.namespaceURI="http://www.w3.org/1998/Math/MathML",h.MATHMLAttributeMap[e.nodeName]&&(e.nodeName=h.MATHMLAttributeMap[e.nodeName])}),e},a.prototype.adjustSVGTagNameCase=function(e){return h.SVGTagMap[e]||e},a.prototype.adjustSVGAttributes=function(e){return e.forEach(function(e){e.namespaceURI="http://www.w3.org/2000/svg",h.SVGAttributeMap[e.nodeName]&&(e.nodeName=h.SVGAttributeMap[e.nodeName])}),e},a.prototype.adjustForeignAttributes=function(e){for(var t=0;t' instead.","expected-tag-name-but-got-question-mark":"Expected tag name. Got '?' instead. (HTML doesn't support processing instructions.)","expected-tag-name":"Expected tag name. Got something else instead.","expected-closing-tag-but-got-right-bracket":"Expected closing tag. Got '>' instead. Ignoring ''.","expected-closing-tag-but-got-eof":"Expected closing tag. Unexpected end of file.","expected-closing-tag-but-got-char":"Expected closing tag. Unexpected character '{data}' found.","eof-in-tag-name":"Unexpected end of file in the tag name.","expected-attribute-name-but-got-eof":"Unexpected end of file. Expected attribute name instead.","eof-in-attribute-name":"Unexpected end of file in attribute name.","invalid-character-in-attribute-name":"Invalid character in attribute name.","duplicate-attribute":"Dropped duplicate attribute '{name}' on tag.","expected-end-of-tag-but-got-eof":"Unexpected end of file. Expected = or end of tag.","expected-attribute-value-but-got-eof":"Unexpected end of file. Expected attribute value.","expected-attribute-value-but-got-right-bracket":"Expected attribute value. Got '>' instead.","unexpected-character-in-unquoted-attribute-value":"Unexpected character in unquoted attribute","invalid-character-after-attribute-name":"Unexpected character after attribute name.","unexpected-character-after-attribute-value":"Unexpected character after attribute value.","eof-in-attribute-value-double-quote":'Unexpected end of file in attribute value (").',"eof-in-attribute-value-single-quote":"Unexpected end of file in attribute value (').","eof-in-attribute-value-no-quotes":"Unexpected end of file in attribute value.","eof-after-attribute-value":"Unexpected end of file after attribute value.","unexpected-eof-after-solidus-in-tag":"Unexpected end of file in tag. Expected >.","unexpected-character-after-solidus-in-tag":"Unexpected character after / in tag. Expected >.","expected-dashes-or-doctype":"Expected '--' or 'DOCTYPE'. Not found.","unexpected-bang-after-double-dash-in-comment":"Unexpected ! after -- in comment.","incorrect-comment":"Incorrect comment.","eof-in-comment":"Unexpected end of file in comment.","eof-in-comment-end-dash":"Unexpected end of file in comment (-).","unexpected-dash-after-double-dash-in-comment":"Unexpected '-' after '--' found in comment.","eof-in-comment-double-dash":"Unexpected end of file in comment (--).","eof-in-comment-end-bang-state":"Unexpected end of file in comment.","unexpected-char-in-comment":"Unexpected character in comment found.","need-space-after-doctype":"No space after literal string 'DOCTYPE'.","expected-doctype-name-but-got-right-bracket":"Unexpected > character. Expected DOCTYPE name.","expected-doctype-name-but-got-eof":"Unexpected end of file. Expected DOCTYPE name.","eof-in-doctype-name":"Unexpected end of file in DOCTYPE name.","eof-in-doctype":"Unexpected end of file in DOCTYPE.","expected-space-or-right-bracket-in-doctype":"Expected space or '>'. Got '{data}'.","unexpected-end-of-doctype":"Unexpected end of DOCTYPE.","unexpected-char-in-doctype":"Unexpected character in DOCTYPE.","eof-in-bogus-doctype":"Unexpected end of file in bogus doctype.","eof-in-innerhtml":"Unexpected EOF in inner html mode.","unexpected-doctype":"Unexpected DOCTYPE. Ignored.","non-html-root":"html needs to be the first start tag.","expected-doctype-but-got-eof":"Unexpected End of file. Expected DOCTYPE.","unknown-doctype":"Erroneous DOCTYPE. Expected .","quirky-doctype":"Quirky doctype. Expected .","almost-standards-doctype":"Almost standards mode doctype. Expected .","obsolete-doctype":"Obsolete doctype. Expected .","expected-doctype-but-got-chars":"Non-space characters found without seeing a doctype first. Expected e.g. .","expected-doctype-but-got-start-tag":"Start tag seen without seeing a doctype first. Expected e.g. .","expected-doctype-but-got-end-tag":"End tag seen without seeing a doctype first. Expected e.g. .","end-tag-after-implied-root":"Unexpected end tag ({name}) after the (implied) root element.","expected-named-closing-tag-but-got-eof":"Unexpected end of file. Expected end tag ({name}).","two-heads-are-not-better-than-one":"Unexpected start tag head in existing head. Ignored.","unexpected-end-tag":"Unexpected end tag ({name}). Ignored.","unexpected-start-tag-out-of-my-head":"Unexpected start tag ({name}) that can be in head. Moved.","unexpected-start-tag":"Unexpected start tag ({name}).","missing-end-tag":"Missing end tag ({name}).","missing-end-tags":"Missing end tags ({name}).","unexpected-start-tag-implies-end-tag":"Unexpected start tag ({startName}) implies end tag ({endName}).","unexpected-start-tag-treated-as":"Unexpected start tag ({originalName}). Treated as {newName}.","deprecated-tag":"Unexpected start tag {name}. Don't use it!","unexpected-start-tag-ignored":"Unexpected start tag {name}. Ignored.","expected-one-end-tag-but-got-another":"Unexpected end tag ({gotName}). Missing end tag ({expectedName}).","end-tag-too-early":"End tag ({name}) seen too early. Expected other end tag.","end-tag-too-early-named":"Unexpected end tag ({gotName}). Expected end tag ({expectedName}.","end-tag-too-early-ignored":"End tag ({name}) seen too early. Ignored.","adoption-agency-1.1":"End tag ({name}) violates step 1, paragraph 1 of the adoption agency algorithm.","adoption-agency-1.2":"End tag ({name}) violates step 1, paragraph 2 of the adoption agency algorithm.","adoption-agency-1.3":"End tag ({name}) violates step 1, paragraph 3 of the adoption agency algorithm.","adoption-agency-4.4":"End tag ({name}) violates step 4, paragraph 4 of the adoption agency algorithm.","unexpected-end-tag-treated-as":"Unexpected end tag ({originalName}). Treated as {newName}.","no-end-tag":"This element ({name}) has no end tag.","unexpected-implied-end-tag-in-table":"Unexpected implied end tag ({name}) in the table phase.","unexpected-implied-end-tag-in-table-body":"Unexpected implied end tag ({name}) in the table body phase.","unexpected-char-implies-table-voodoo":"Unexpected non-space characters in table context caused voodoo mode.","unexpected-hidden-input-in-table":"Unexpected input with type hidden in table context.","unexpected-form-in-table":"Unexpected form in table context.","unexpected-start-tag-implies-table-voodoo":"Unexpected start tag ({name}) in table context caused voodoo mode.","unexpected-end-tag-implies-table-voodoo":"Unexpected end tag ({name}) in table context caused voodoo mode.","unexpected-cell-in-table-body":"Unexpected table cell start tag ({name}) in the table body phase.","unexpected-cell-end-tag":"Got table cell end tag ({name}) while required end tags are missing.","unexpected-end-tag-in-table-body":"Unexpected end tag ({name}) in the table body phase. Ignored.","unexpected-implied-end-tag-in-table-row":"Unexpected implied end tag ({name}) in the table row phase.","unexpected-end-tag-in-table-row":"Unexpected end tag ({name}) in the table row phase. Ignored.","unexpected-select-in-select":"Unexpected select start tag in the select phase treated as select end tag.","unexpected-input-in-select":"Unexpected input start tag in the select phase.","unexpected-start-tag-in-select":"Unexpected start tag token ({name}) in the select phase. Ignored.","unexpected-end-tag-in-select":"Unexpected end tag ({name}) in the select phase. Ignored.","unexpected-table-element-start-tag-in-select-in-table":"Unexpected table element start tag ({name}) in the select in table phase.","unexpected-table-element-end-tag-in-select-in-table":"Unexpected table element end tag ({name}) in the select in table phase.","unexpected-char-after-body":"Unexpected non-space characters in the after body phase.","unexpected-start-tag-after-body":"Unexpected start tag token ({name}) in the after body phase.","unexpected-end-tag-after-body":"Unexpected end tag token ({name}) in the after body phase.","unexpected-char-in-frameset":"Unepxected characters in the frameset phase. Characters ignored.","unexpected-start-tag-in-frameset":"Unexpected start tag token ({name}) in the frameset phase. Ignored.","unexpected-frameset-in-frameset-innerhtml":"Unexpected end tag token (frameset in the frameset phase (innerHTML).","unexpected-end-tag-in-frameset":"Unexpected end tag token ({name}) in the frameset phase. Ignored.","unexpected-char-after-frameset":"Unexpected non-space characters in the after frameset phase. Ignored.","unexpected-start-tag-after-frameset":"Unexpected start tag ({name}) in the after frameset phase. Ignored.","unexpected-end-tag-after-frameset":"Unexpected end tag ({name}) in the after frameset phase. Ignored.","expected-eof-but-got-char":"Unexpected non-space characters. Expected end of file.","expected-eof-but-got-start-tag":"Unexpected start tag ({name}). Expected end of file.","expected-eof-but-got-end-tag":"Unexpected end tag ({name}). Expected end of file.","unexpected-end-table-in-caption":"Unexpected end table tag in caption. Generates implied end caption.","end-html-in-innerhtml":"Unexpected html end tag in inner html mode.","eof-in-table":"Unexpected end of file. Expected table content.","eof-in-script":"Unexpected end of file. Expected script content.","non-void-element-with-trailing-solidus":"Trailing solidus not allowed on element {name}.","unexpected-html-element-in-foreign-content":'HTML start tag "{name}" in a foreign namespace context.',"unexpected-start-tag-in-table":"Unexpected {name}. Expected table content."}},{}],DaboPu:[function(e,t,n){function r(){this.contentHandler=null,this._errorHandler=null,this._treeBuilder=new i,this._tokenizer=new s(this._treeBuilder),this._scriptingEnabled=!1}var i=e("./SAXTreeBuilder").SAXTreeBuilder,s=e("../Tokenizer").Tokenizer,o=e("./TreeParser").TreeParser;r.prototype.parse=function(e){this._tokenizer.tokenize(e);var t=this._treeBuilder.document;t&&(new o(this.contentHandler)).parse(t)},r.prototype.parseFragment=function(e,t){this._treeBuilder.setFragmentContext(t),this._tokenizer.tokenize(e);var n=this._treeBuilder.getFragment();n&&(new o(this.contentHandler)).parse(n)},Object.defineProperty(r.prototype,"scriptingEnabled",{get:function(){return this._scriptingEnabled},set:function(e){this._scriptingEnabled=e,this._treeBuilder.scriptingEnabled=e}}),Object.defineProperty(r.prototype,"errorHandler",{get:function(){return this._errorHandler},set:function(e){this._errorHandler=e,this._treeBuilder.errorHandler=e}}),n.SAXParser=r},{"../Tokenizer":5,"./SAXTreeBuilder":10,"./TreeParser":11}],10:[function(e,t,n){function r(){b.call(this)}function i(e,t){for(var n=0;n","GT;":">","Gamma;":"Γ","Gammad;":"Ϝ","Gbreve;":"Ğ","Gcedil;":"Ģ","Gcirc;":"Ĝ","Gcy;":"Г","Gdot;":"Ġ","Gfr;":"ᵐA","Gg;":"⋙","Gopf;":"ᵓE","GreaterEqual;":"≥","GreaterEqualLess;":"⋛","GreaterFullEqual;":"≧","GreaterGreater;":"⪢","GreaterLess;":"≷","GreaterSlantEqual;":"⩾","GreaterTilde;":"≳","Gscr;":"ᵊ2","Gt;":"≫","HARDcy;":"Ъ","Hacek;":"ˇ","Hat;":"^","Hcirc;":"Ĥ","Hfr;":"ℌ","HilbertSpace;":"ℋ","Hopf;":"ℍ","HorizontalLine;":"─","Hscr;":"ℋ","Hstrok;":"Ħ","HumpDownHump;":"≎","HumpEqual;":"≏","IEcy;":"Е","IJlig;":"IJ","IOcy;":"Ё",Iacute:"Í","Iacute;":"Í",Icirc:"Î","Icirc;":"Î","Icy;":"И","Idot;":"İ","Ifr;":"ℑ",Igrave:"Ì","Igrave;":"Ì","Im;":"ℑ","Imacr;":"Ī","ImaginaryI;":"ⅈ","Implies;":"⇒","Int;":"∬","Integral;":"∫","Intersection;":"⋂","InvisibleComma;":"⁣","InvisibleTimes;":"⁢","Iogon;":"Į","Iopf;":"ᵔ0","Iota;":"Ι","Iscr;":"ℐ","Itilde;":"Ĩ","Iukcy;":"І",Iuml:"Ï","Iuml;":"Ï","Jcirc;":"Ĵ","Jcy;":"Й","Jfr;":"ᵐD","Jopf;":"ᵔ1","Jscr;":"ᵊ5","Jsercy;":"Ј","Jukcy;":"Є","KHcy;":"Х","KJcy;":"Ќ","Kappa;":"Κ","Kcedil;":"Ķ","Kcy;":"К","Kfr;":"ᵐE","Kopf;":"ᵔ2","Kscr;":"ᵊ6","LJcy;":"Љ",LT:"<","LT;":"<","Lacute;":"Ĺ","Lambda;":"Λ","Lang;":"⟪","Laplacetrf;":"ℒ","Larr;":"↞","Lcaron;":"Ľ","Lcedil;":"Ļ","Lcy;":"Л","LeftAngleBracket;":"⟨","LeftArrow;":"←","LeftArrowBar;":"⇤","LeftArrowRightArrow;":"⇆","LeftCeiling;":"⌈","LeftDoubleBracket;":"⟦","LeftDownTeeVector;":"⥡","LeftDownVector;":"⇃","LeftDownVectorBar;":"⥙","LeftFloor;":"⌊","LeftRightArrow;":"↔","LeftRightVector;":"⥎","LeftTee;":"⊣","LeftTeeArrow;":"↤","LeftTeeVector;":"⥚","LeftTriangle;":"⊲","LeftTriangleBar;":"⧏","LeftTriangleEqual;":"⊴","LeftUpDownVector;":"⥑","LeftUpTeeVector;":"⥠","LeftUpVector;":"↿","LeftUpVectorBar;":"⥘","LeftVector;":"↼","LeftVectorBar;":"⥒","Leftarrow;":"⇐","Leftrightarrow;":"⇔","LessEqualGreater;":"⋚","LessFullEqual;":"≦","LessGreater;":"≶","LessLess;":"⪡","LessSlantEqual;":"⩽","LessTilde;":"≲","Lfr;":"ᵐF","Ll;":"⋘","Lleftarrow;":"⇚","Lmidot;":"Ŀ","LongLeftArrow;":"⟵","LongLeftRightArrow;":"⟷","LongRightArrow;":"⟶","Longleftarrow;":"⟸","Longleftrightarrow;":"⟺","Longrightarrow;":"⟹","Lopf;":"ᵔ3","LowerLeftArrow;":"↙","LowerRightArrow;":"↘","Lscr;":"ℒ","Lsh;":"↰","Lstrok;":"Ł","Lt;":"≪","Map;":"⤅","Mcy;":"М","MediumSpace;":" ","Mellintrf;":"ℳ","Mfr;":"ᵑ0","MinusPlus;":"∓","Mopf;":"ᵔ4","Mscr;":"ℳ","Mu;":"Μ","NJcy;":"Њ","Nacute;":"Ń","Ncaron;":"Ň","Ncedil;":"Ņ","Ncy;":"Н","NegativeMediumSpace;":"​","NegativeThickSpace;":"​","NegativeThinSpace;":"​","NegativeVeryThinSpace;":"​","NestedGreaterGreater;":"≫","NestedLessLess;":"≪","NewLine;":"\n","Nfr;":"ᵑ1","NoBreak;":"⁠","NonBreakingSpace;":" ","Nopf;":"ℕ","Not;":"⫬","NotCongruent;":"≢","NotCupCap;":"≭","NotDoubleVerticalBar;":"∦","NotElement;":"∉","NotEqual;":"≠","NotEqualTilde;":"≂̸","NotExists;":"∄","NotGreater;":"≯","NotGreaterEqual;":"≱","NotGreaterFullEqual;":"≧̸","NotGreaterGreater;":"≫̸","NotGreaterLess;":"≹","NotGreaterSlantEqual;":"⩾̸","NotGreaterTilde;":"≵","NotHumpDownHump;":"≎̸","NotHumpEqual;":"≏̸","NotLeftTriangle;":"⋪","NotLeftTriangleBar;":"⧏̸","NotLeftTriangleEqual;":"⋬","NotLess;":"≮","NotLessEqual;":"≰","NotLessGreater;":"≸","NotLessLess;":"≪̸","NotLessSlantEqual;":"⩽̸","NotLessTilde;":"≴","NotNestedGreaterGreater;":"⪢̸","NotNestedLessLess;":"⪡̸","NotPrecedes;":"⊀","NotPrecedesEqual;":"⪯̸","NotPrecedesSlantEqual;":"⋠","NotReverseElement;":"∌","NotRightTriangle;":"⋫","NotRightTriangleBar;":"⧐̸","NotRightTriangleEqual;":"⋭","NotSquareSubset;":"⊏̸","NotSquareSubsetEqual;":"⋢","NotSquareSuperset;":"⊐̸","NotSquareSupersetEqual;":"⋣","NotSubset;":"⊂⃒","NotSubsetEqual;":"⊈","NotSucceeds;":"⊁","NotSucceedsEqual;":"⪰̸","NotSucceedsSlantEqual;":"⋡","NotSucceedsTilde;":"≿̸","NotSuperset;":"⊃⃒","NotSupersetEqual;":"⊉","NotTilde;":"≁","NotTildeEqual;":"≄","NotTildeFullEqual;":"≇","NotTildeTilde;":"≉","NotVerticalBar;":"∤","Nscr;":"ᵊ9",Ntilde:"Ñ","Ntilde;":"Ñ","Nu;":"Ν","OElig;":"Œ",Oacute:"Ó","Oacute;":"Ó",Ocirc:"Ô","Ocirc;":"Ô","Ocy;":"О","Odblac;":"Ő","Ofr;":"ᵑ2",Ograve:"Ò","Ograve;":"Ò","Omacr;":"Ō","Omega;":"Ω","Omicron;":"Ο","Oopf;":"ᵔ6","OpenCurlyDoubleQuote;":"“","OpenCurlyQuote;":"‘","Or;":"⩔","Oscr;":"ᵊA",Oslash:"Ø","Oslash;":"Ø",Otilde:"Õ","Otilde;":"Õ","Otimes;":"⨷",Ouml:"Ö","Ouml;":"Ö","OverBar;":"‾","OverBrace;":"⏞","OverBracket;":"⎴","OverParenthesis;":"⏜","PartialD;":"∂","Pcy;":"П","Pfr;":"ᵑ3","Phi;":"Φ","Pi;":"Π","PlusMinus;":"±","Poincareplane;":"ℌ","Popf;":"ℙ","Pr;":"⪻","Precedes;":"≺","PrecedesEqual;":"⪯","PrecedesSlantEqual;":"≼","PrecedesTilde;":"≾","Prime;":"″","Product;":"∏","Proportion;":"∷","Proportional;":"∝","Pscr;":"ᵊB","Psi;":"Ψ",QUOT:'"',"QUOT;":'"',"Qfr;":"ᵑ4","Qopf;":"ℚ","Qscr;":"ᵊC","RBarr;":"⤐",REG:"®","REG;":"®","Racute;":"Ŕ","Rang;":"⟫","Rarr;":"↠","Rarrtl;":"⤖","Rcaron;":"Ř","Rcedil;":"Ŗ","Rcy;":"Р","Re;":"ℜ","ReverseElement;":"∋","ReverseEquilibrium;":"⇋","ReverseUpEquilibrium;":"⥯","Rfr;":"ℜ","Rho;":"Ρ","RightAngleBracket;":"⟩","RightArrow;":"→","RightArrowBar;":"⇥","RightArrowLeftArrow;":"⇄","RightCeiling;":"⌉","RightDoubleBracket;":"⟧","RightDownTeeVector;":"⥝","RightDownVector;":"⇂","RightDownVectorBar;":"⥕","RightFloor;":"⌋","RightTee;":"⊢","RightTeeArrow;":"↦","RightTeeVector;":"⥛","RightTriangle;":"⊳","RightTriangleBar;":"⧐","RightTriangleEqual;":"⊵","RightUpDownVector;":"⥏","RightUpTeeVector;":"⥜","RightUpVector;":"↾","RightUpVectorBar;":"⥔","RightVector;":"⇀","RightVectorBar;":"⥓","Rightarrow;":"⇒","Ropf;":"ℝ","RoundImplies;":"⥰","Rrightarrow;":"⇛","Rscr;":"ℛ","Rsh;":"↱","RuleDelayed;":"⧴","SHCHcy;":"Щ","SHcy;":"Ш","SOFTcy;":"Ь","Sacute;":"Ś","Sc;":"⪼","Scaron;":"Š","Scedil;":"Ş","Scirc;":"Ŝ","Scy;":"С","Sfr;":"ᵑ6","ShortDownArrow;":"↓","ShortLeftArrow;":"←","ShortRightArrow;":"→","ShortUpArrow;":"↑","Sigma;":"Σ","SmallCircle;":"∘","Sopf;":"ᵔA","Sqrt;":"√","Square;":"□","SquareIntersection;":"⊓","SquareSubset;":"⊏","SquareSubsetEqual;":"⊑","SquareSuperset;":"⊐","SquareSupersetEqual;":"⊒","SquareUnion;":"⊔","Sscr;":"ᵊE","Star;":"⋆","Sub;":"⋐","Subset;":"⋐","SubsetEqual;":"⊆","Succeeds;":"≻","SucceedsEqual;":"⪰","SucceedsSlantEqual;":"≽","SucceedsTilde;":"≿","SuchThat;":"∋","Sum;":"∑","Sup;":"⋑","Superset;":"⊃","SupersetEqual;":"⊇","Supset;":"⋑",THORN:"Þ","THORN;":"Þ","TRADE;":"™","TSHcy;":"Ћ","TScy;":"Ц","Tab;":" ","Tau;":"Τ","Tcaron;":"Ť","Tcedil;":"Ţ","Tcy;":"Т","Tfr;":"ᵑ7","Therefore;":"∴","Theta;":"Θ","ThickSpace;":"  ","ThinSpace;":" ","Tilde;":"∼","TildeEqual;":"≃","TildeFullEqual;":"≅","TildeTilde;":"≈","Topf;":"ᵔB","TripleDot;":"⃛","Tscr;":"ᵊF","Tstrok;":"Ŧ",Uacute:"Ú","Uacute;":"Ú","Uarr;":"↟","Uarrocir;":"⥉","Ubrcy;":"Ў","Ubreve;":"Ŭ",Ucirc:"Û","Ucirc;":"Û","Ucy;":"У","Udblac;":"Ű","Ufr;":"ᵑ8",Ugrave:"Ù","Ugrave;":"Ù","Umacr;":"Ū","UnderBar;":"_","UnderBrace;":"⏟","UnderBracket;":"⎵","UnderParenthesis;":"⏝","Union;":"⋃","UnionPlus;":"⊎","Uogon;":"Ų","Uopf;":"ᵔC","UpArrow;":"↑","UpArrowBar;":"⤒","UpArrowDownArrow;":"⇅","UpDownArrow;":"↕","UpEquilibrium;":"⥮","UpTee;":"⊥","UpTeeArrow;":"↥","Uparrow;":"⇑","Updownarrow;":"⇕","UpperLeftArrow;":"↖","UpperRightArrow;":"↗","Upsi;":"ϒ","Upsilon;":"Υ","Uring;":"Ů","Uscr;":"ᵋ0","Utilde;":"Ũ",Uuml:"Ü","Uuml;":"Ü","VDash;":"⊫","Vbar;":"⫫","Vcy;":"В","Vdash;":"⊩","Vdashl;":"⫦","Vee;":"⋁","Verbar;":"‖","Vert;":"‖","VerticalBar;":"∣","VerticalLine;":"|","VerticalSeparator;":"❘","VerticalTilde;":"≀","VeryThinSpace;":" ","Vfr;":"ᵑ9","Vopf;":"ᵔD","Vscr;":"ᵋ1","Vvdash;":"⊪","Wcirc;":"Ŵ","Wedge;":"⋀","Wfr;":"ᵑA","Wopf;":"ᵔE","Wscr;":"ᵋ2","Xfr;":"ᵑB","Xi;":"Ξ","Xopf;":"ᵔF","Xscr;":"ᵋ3","YAcy;":"Я","YIcy;":"Ї","YUcy;":"Ю",Yacute:"Ý","Yacute;":"Ý","Ycirc;":"Ŷ","Ycy;":"Ы","Yfr;":"ᵑC","Yopf;":"ᵕ0","Yscr;":"ᵋ4","Yuml;":"Ÿ","ZHcy;":"Ж","Zacute;":"Ź","Zcaron;":"Ž","Zcy;":"З","Zdot;":"Ż","ZeroWidthSpace;":"​","Zeta;":"Ζ","Zfr;":"ℨ","Zopf;":"ℤ","Zscr;":"ᵋ5",aacute:"á","aacute;":"á","abreve;":"ă","ac;":"∾","acE;":"∾̳","acd;":"∿",acirc:"â","acirc;":"â",acute:"´","acute;":"´","acy;":"а",aelig:"æ","aelig;":"æ","af;":"⁡","afr;":"ᵑE",agrave:"à","agrave;":"à","alefsym;":"ℵ","aleph;":"ℵ","alpha;":"α","amacr;":"ā","amalg;":"⨿",amp:"&","amp;":"&","and;":"∧","andand;":"⩕","andd;":"⩜","andslope;":"⩘","andv;":"⩚","ang;":"∠","ange;":"⦤","angle;":"∠","angmsd;":"∡","angmsdaa;":"⦨","angmsdab;":"⦩","angmsdac;":"⦪","angmsdad;":"⦫","angmsdae;":"⦬","angmsdaf;":"⦭","angmsdag;":"⦮","angmsdah;":"⦯","angrt;":"∟","angrtvb;":"⊾","angrtvbd;":"⦝","angsph;":"∢","angst;":"Å","angzarr;":"⍼","aogon;":"ą","aopf;":"ᵕ2","ap;":"≈","apE;":"⩰","apacir;":"⩯","ape;":"≊","apid;":"≋","apos;":"'","approx;":"≈","approxeq;":"≊",aring:"å","aring;":"å","ascr;":"ᵋ6","ast;":"*","asymp;":"≈","asympeq;":"≍",atilde:"ã","atilde;":"ã",auml:"ä","auml;":"ä","awconint;":"∳","awint;":"⨑","bNot;":"⫭","backcong;":"≌","backepsilon;":"϶","backprime;":"‵","backsim;":"∽","backsimeq;":"⋍","barvee;":"⊽","barwed;":"⌅","barwedge;":"⌅","bbrk;":"⎵","bbrktbrk;":"⎶","bcong;":"≌","bcy;":"б","bdquo;":"„","becaus;":"∵","because;":"∵","bemptyv;":"⦰","bepsi;":"϶","bernou;":"ℬ","beta;":"β","beth;":"ℶ","between;":"≬","bfr;":"ᵑF","bigcap;":"⋂","bigcirc;":"◯","bigcup;":"⋃","bigodot;":"⨀","bigoplus;":"⨁","bigotimes;":"⨂","bigsqcup;":"⨆","bigstar;":"★","bigtriangledown;":"▽","bigtriangleup;":"△","biguplus;":"⨄","bigvee;":"⋁","bigwedge;":"⋀","bkarow;":"⤍","blacklozenge;":"⧫","blacksquare;":"▪","blacktriangle;":"▴","blacktriangledown;":"▾","blacktriangleleft;":"◂","blacktriangleright;":"▸","blank;":"␣","blk12;":"▒","blk14;":"░","blk34;":"▓","block;":"█","bne;":"=⃥","bnequiv;":"≡⃥","bnot;":"⌐","bopf;":"ᵕ3","bot;":"⊥","bottom;":"⊥","bowtie;":"⋈","boxDL;":"╗","boxDR;":"╔","boxDl;":"╖","boxDr;":"╓","boxH;":"═","boxHD;":"╦","boxHU;":"╩","boxHd;":"╤","boxHu;":"╧","boxUL;":"╝","boxUR;":"╚","boxUl;":"╜","boxUr;":"╙","boxV;":"║","boxVH;":"╬","boxVL;":"╣","boxVR;":"╠","boxVh;":"╫","boxVl;":"╢","boxVr;":"╟","boxbox;":"⧉","boxdL;":"╕","boxdR;":"╒","boxdl;":"┐","boxdr;":"┌","boxh;":"─","boxhD;":"╥","boxhU;":"╨","boxhd;":"┬","boxhu;":"┴","boxminus;":"⊟","boxplus;":"⊞","boxtimes;":"⊠","boxuL;":"╛","boxuR;":"╘","boxul;":"┘","boxur;":"└","boxv;":"│","boxvH;":"╪","boxvL;":"╡","boxvR;":"╞","boxvh;":"┼","boxvl;":"┤","boxvr;":"├","bprime;":"‵","breve;":"˘",brvbar:"¦","brvbar;":"¦","bscr;":"ᵋ7","bsemi;":"⁏","bsim;":"∽","bsime;":"⋍","bsol;":"\\","bsolb;":"⧅","bsolhsub;":"⟈","bull;":"•","bullet;":"•","bump;":"≎","bumpE;":"⪮","bumpe;":"≏","bumpeq;":"≏","cacute;":"ć","cap;":"∩","capand;":"⩄","capbrcup;":"⩉","capcap;":"⩋","capcup;":"⩇","capdot;":"⩀","caps;":"∩︀","caret;":"⁁","caron;":"ˇ","ccaps;":"⩍","ccaron;":"č",ccedil:"ç","ccedil;":"ç","ccirc;":"ĉ","ccups;":"⩌","ccupssm;":"⩐","cdot;":"ċ",cedil:"¸","cedil;":"¸","cemptyv;":"⦲",cent:"¢","cent;":"¢","centerdot;":"·","cfr;":"ᵒ0","chcy;":"ч","check;":"✓","checkmark;":"✓","chi;":"χ","cir;":"○","cirE;":"⧃","circ;":"ˆ","circeq;":"≗","circlearrowleft;":"↺","circlearrowright;":"↻","circledR;":"®","circledS;":"Ⓢ","circledast;":"⊛","circledcirc;":"⊚","circleddash;":"⊝","cire;":"≗","cirfnint;":"⨐","cirmid;":"⫯","cirscir;":"⧂","clubs;":"♣","clubsuit;":"♣","colon;":":","colone;":"≔","coloneq;":"≔","comma;":",","commat;":"@","comp;":"∁","compfn;":"∘","complement;":"∁","complexes;":"ℂ","cong;":"≅","congdot;":"⩭","conint;":"∮","copf;":"ᵕ4","coprod;":"∐",copy:"©","copy;":"©","copysr;":"℗","crarr;":"↵","cross;":"✗","cscr;":"ᵋ8","csub;":"⫏","csube;":"⫑","csup;":"⫐","csupe;":"⫒","ctdot;":"⋯","cudarrl;":"⤸","cudarrr;":"⤵","cuepr;":"⋞","cuesc;":"⋟","cularr;":"↶","cularrp;":"⤽","cup;":"∪","cupbrcap;":"⩈","cupcap;":"⩆","cupcup;":"⩊","cupdot;":"⊍","cupor;":"⩅","cups;":"∪︀","curarr;":"↷","curarrm;":"⤼","curlyeqprec;":"⋞","curlyeqsucc;":"⋟","curlyvee;":"⋎","curlywedge;":"⋏",curren:"¤","curren;":"¤","curvearrowleft;":"↶","curvearrowright;":"↷","cuvee;":"⋎","cuwed;":"⋏","cwconint;":"∲","cwint;":"∱","cylcty;":"⌭","dArr;":"⇓","dHar;":"⥥","dagger;":"†","daleth;":"ℸ","darr;":"↓","dash;":"‐","dashv;":"⊣","dbkarow;":"⤏","dblac;":"˝","dcaron;":"ď","dcy;":"д","dd;":"ⅆ","ddagger;":"‡","ddarr;":"⇊","ddotseq;":"⩷",deg:"°","deg;":"°","delta;":"δ","demptyv;":"⦱","dfisht;":"⥿","dfr;":"ᵒ1","dharl;":"⇃","dharr;":"⇂","diam;":"⋄","diamond;":"⋄","diamondsuit;":"♦","diams;":"♦","die;":"¨","digamma;":"ϝ","disin;":"⋲","div;":"÷",divide:"÷","divide;":"÷","divideontimes;":"⋇","divonx;":"⋇","djcy;":"ђ","dlcorn;":"⌞","dlcrop;":"⌍","dollar;":"$","dopf;":"ᵕ5","dot;":"˙","doteq;":"≐","doteqdot;":"≑","dotminus;":"∸","dotplus;":"∔","dotsquare;":"⊡","doublebarwedge;":"⌆","downarrow;":"↓","downdownarrows;":"⇊","downharpoonleft;":"⇃","downharpoonright;":"⇂","drbkarow;":"⤐","drcorn;":"⌟","drcrop;":"⌌","dscr;":"ᵋ9","dscy;":"ѕ","dsol;":"⧶","dstrok;":"đ","dtdot;":"⋱","dtri;":"▿","dtrif;":"▾","duarr;":"⇵","duhar;":"⥯","dwangle;":"⦦","dzcy;":"џ","dzigrarr;":"⟿","eDDot;":"⩷","eDot;":"≑",eacute:"é","eacute;":"é","easter;":"⩮","ecaron;":"ě","ecir;":"≖",ecirc:"ê","ecirc;":"ê","ecolon;":"≕","ecy;":"э","edot;":"ė","ee;":"ⅇ","efDot;":"≒","efr;":"ᵒ2","eg;":"⪚",egrave:"è","egrave;":"è","egs;":"⪖","egsdot;":"⪘","el;":"⪙","elinters;":"⏧","ell;":"ℓ","els;":"⪕","elsdot;":"⪗","emacr;":"ē","empty;":"∅","emptyset;":"∅","emptyv;":"∅","emsp13;":" ","emsp14;":" ","emsp;":" ","eng;":"ŋ","ensp;":" ","eogon;":"ę","eopf;":"ᵕ6","epar;":"⋕","eparsl;":"⧣","eplus;":"⩱","epsi;":"ε","epsilon;":"ε","epsiv;":"ϵ","eqcirc;":"≖","eqcolon;":"≕","eqsim;":"≂","eqslantgtr;":"⪖","eqslantless;":"⪕","equals;":"=","equest;":"≟","equiv;":"≡","equivDD;":"⩸","eqvparsl;":"⧥","erDot;":"≓","erarr;":"⥱","escr;":"ℯ","esdot;":"≐","esim;":"≂","eta;":"η",eth:"ð","eth;":"ð",euml:"ë","euml;":"ë","euro;":"€","excl;":"!","exist;":"∃","expectation;":"ℰ","exponentiale;":"ⅇ","fallingdotseq;":"≒","fcy;":"ф","female;":"♀","ffilig;":"ffi","fflig;":"ff","ffllig;":"ffl","ffr;":"ᵒ3","filig;":"fi","fjlig;":"f","flat;":"♭","fllig;":"fl","fltns;":"▱","fnof;":"ƒ","fopf;":"ᵕ7","forall;":"∀","fork;":"⋔","forkv;":"⫙","fpartint;":"⨍",frac12:"½","frac12;":"½","frac13;":"⅓",frac14:"¼","frac14;":"¼","frac15;":"⅕","frac16;":"⅙","frac18;":"⅛","frac23;":"⅔","frac25;":"⅖",frac34:"¾","frac34;":"¾","frac35;":"⅗","frac38;":"⅜","frac45;":"⅘","frac56;":"⅚","frac58;":"⅝","frac78;":"⅞","frasl;":"⁄","frown;":"⌢","fscr;":"ᵋB","gE;":"≧","gEl;":"⪌","gacute;":"ǵ","gamma;":"γ","gammad;":"ϝ","gap;":"⪆","gbreve;":"ğ","gcirc;":"ĝ","gcy;":"г","gdot;":"ġ","ge;":"≥","gel;":"⋛","geq;":"≥","geqq;":"≧","geqslant;":"⩾","ges;":"⩾","gescc;":"⪩","gesdot;":"⪀","gesdoto;":"⪂","gesdotol;":"⪄","gesl;":"⋛︀","gesles;":"⪔","gfr;":"ᵒ4","gg;":"≫","ggg;":"⋙","gimel;":"ℷ","gjcy;":"ѓ","gl;":"≷","glE;":"⪒","gla;":"⪥","glj;":"⪤","gnE;":"≩","gnap;":"⪊","gnapprox;":"⪊","gne;":"⪈","gneq;":"⪈","gneqq;":"≩","gnsim;":"⋧","gopf;":"ᵕ8","grave;":"`","gscr;":"ℊ","gsim;":"≳","gsime;":"⪎","gsiml;":"⪐",gt:">","gt;":">","gtcc;":"⪧","gtcir;":"⩺","gtdot;":"⋗","gtlPar;":"⦕","gtquest;":"⩼","gtrapprox;":"⪆","gtrarr;":"⥸","gtrdot;":"⋗","gtreqless;":"⋛","gtreqqless;":"⪌","gtrless;":"≷","gtrsim;":"≳","gvertneqq;":"≩︀","gvnE;":"≩︀","hArr;":"⇔","hairsp;":" ","half;":"½","hamilt;":"ℋ","hardcy;":"ъ","harr;":"↔","harrcir;":"⥈","harrw;":"↭","hbar;":"ℏ","hcirc;":"ĥ","hearts;":"♥","heartsuit;":"♥","hellip;":"…","hercon;":"⊹","hfr;":"ᵒ5","hksearow;":"⤥","hkswarow;":"⤦","hoarr;":"⇿","homtht;":"∻","hookleftarrow;":"↩","hookrightarrow;":"↪","hopf;":"ᵕ9","horbar;":"―","hscr;":"ᵋD","hslash;":"ℏ","hstrok;":"ħ","hybull;":"⁃","hyphen;":"‐",iacute:"í","iacute;":"í","ic;":"⁣",icirc:"î","icirc;":"î","icy;":"и","iecy;":"е",iexcl:"¡","iexcl;":"¡","iff;":"⇔","ifr;":"ᵒ6",igrave:"ì","igrave;":"ì","ii;":"ⅈ","iiiint;":"⨌","iiint;":"∭","iinfin;":"⧜","iiota;":"℩","ijlig;":"ij","imacr;":"ī","image;":"ℑ","imagline;":"ℐ","imagpart;":"ℑ","imath;":"ı","imof;":"⊷","imped;":"Ƶ","in;":"∈","incare;":"℅","infin;":"∞","infintie;":"⧝","inodot;":"ı","int;":"∫","intcal;":"⊺","integers;":"ℤ","intercal;":"⊺","intlarhk;":"⨗","intprod;":"⨼","iocy;":"ё","iogon;":"į","iopf;":"ᵕA","iota;":"ι","iprod;":"⨼",iquest:"¿","iquest;":"¿","iscr;":"ᵋE","isin;":"∈","isinE;":"⋹","isindot;":"⋵","isins;":"⋴","isinsv;":"⋳","isinv;":"∈","it;":"⁢","itilde;":"ĩ","iukcy;":"і",iuml:"ï","iuml;":"ï","jcirc;":"ĵ","jcy;":"й","jfr;":"ᵒ7","jmath;":"ȷ","jopf;":"ᵕB","jscr;":"ᵋF","jsercy;":"ј","jukcy;":"є","kappa;":"κ","kappav;":"ϰ","kcedil;":"ķ","kcy;":"к","kfr;":"ᵒ8","kgreen;":"ĸ","khcy;":"х","kjcy;":"ќ","kopf;":"ᵕC","kscr;":"ᵌ0","lAarr;":"⇚","lArr;":"⇐","lAtail;":"⤛","lBarr;":"⤎","lE;":"≦","lEg;":"⪋","lHar;":"⥢","lacute;":"ĺ","laemptyv;":"⦴","lagran;":"ℒ","lambda;":"λ","lang;":"⟨","langd;":"⦑","langle;":"⟨","lap;":"⪅",laquo:"«","laquo;":"«","larr;":"←","larrb;":"⇤","larrbfs;":"⤟","larrfs;":"⤝","larrhk;":"↩","larrlp;":"↫","larrpl;":"⤹","larrsim;":"⥳","larrtl;":"↢","lat;":"⪫","latail;":"⤙","late;":"⪭","lates;":"⪭︀","lbarr;":"⤌","lbbrk;":"❲","lbrace;":"{","lbrack;":"[","lbrke;":"⦋","lbrksld;":"⦏","lbrkslu;":"⦍","lcaron;":"ľ","lcedil;":"ļ","lceil;":"⌈","lcub;":"{","lcy;":"л","ldca;":"⤶","ldquo;":"“","ldquor;":"„","ldrdhar;":"⥧","ldrushar;":"⥋","ldsh;":"↲","le;":"≤","leftarrow;":"←","leftarrowtail;":"↢","leftharpoondown;":"↽","leftharpoonup;":"↼","leftleftarrows;":"⇇","leftrightarrow;":"↔","leftrightarrows;":"⇆","leftrightharpoons;":"⇋","leftrightsquigarrow;":"↭","leftthreetimes;":"⋋","leg;":"⋚","leq;":"≤","leqq;":"≦","leqslant;":"⩽","les;":"⩽","lescc;":"⪨","lesdot;":"⩿","lesdoto;":"⪁","lesdotor;":"⪃","lesg;":"⋚︀","lesges;":"⪓","lessapprox;":"⪅","lessdot;":"⋖","lesseqgtr;":"⋚","lesseqqgtr;":"⪋","lessgtr;":"≶","lesssim;":"≲","lfisht;":"⥼","lfloor;":"⌊","lfr;":"ᵒ9","lg;":"≶","lgE;":"⪑","lhard;":"↽","lharu;":"↼","lharul;":"⥪","lhblk;":"▄","ljcy;":"љ","ll;":"≪","llarr;":"⇇","llcorner;":"⌞","llhard;":"⥫","lltri;":"◺","lmidot;":"ŀ","lmoust;":"⎰","lmoustache;":"⎰","lnE;":"≨","lnap;":"⪉","lnapprox;":"⪉","lne;":"⪇","lneq;":"⪇","lneqq;":"≨","lnsim;":"⋦","loang;":"⟬","loarr;":"⇽","lobrk;":"⟦","longleftarrow;":"⟵","longleftrightarrow;":"⟷","longmapsto;":"⟼","longrightarrow;":"⟶","looparrowleft;":"↫","looparrowright;":"↬","lopar;":"⦅","lopf;":"ᵕD","loplus;":"⨭","lotimes;":"⨴","lowast;":"∗","lowbar;":"_","loz;":"◊","lozenge;":"◊","lozf;":"⧫","lpar;":"(","lparlt;":"⦓","lrarr;":"⇆","lrcorner;":"⌟","lrhar;":"⇋","lrhard;":"⥭","lrm;":"‎","lrtri;":"⊿","lsaquo;":"‹","lscr;":"ᵌ1","lsh;":"↰","lsim;":"≲","lsime;":"⪍","lsimg;":"⪏","lsqb;":"[","lsquo;":"‘","lsquor;":"‚","lstrok;":"ł",lt:"<","lt;":"<","ltcc;":"⪦","ltcir;":"⩹","ltdot;":"⋖","lthree;":"⋋","ltimes;":"⋉","ltlarr;":"⥶","ltquest;":"⩻","ltrPar;":"⦖","ltri;":"◃","ltrie;":"⊴","ltrif;":"◂","lurdshar;":"⥊","luruhar;":"⥦","lvertneqq;":"≨︀","lvnE;":"≨︀","mDDot;":"∺",macr:"¯","macr;":"¯","male;":"♂","malt;":"✠","maltese;":"✠","map;":"↦","mapsto;":"↦","mapstodown;":"↧","mapstoleft;":"↤","mapstoup;":"↥","marker;":"▮","mcomma;":"⨩","mcy;":"м","mdash;":"—","measuredangle;":"∡","mfr;":"ᵒA","mho;":"℧",micro:"µ","micro;":"µ","mid;":"∣","midast;":"*","midcir;":"⫰",middot:"·","middot;":"·","minus;":"−","minusb;":"⊟","minusd;":"∸","minusdu;":"⨪","mlcp;":"⫛","mldr;":"…","mnplus;":"∓","models;":"⊧","mopf;":"ᵕE","mp;":"∓","mscr;":"ᵌ2","mstpos;":"∾","mu;":"μ","multimap;":"⊸","mumap;":"⊸","nGg;":"⋙̸","nGt;":"≫⃒","nGtv;":"≫̸","nLeftarrow;":"⇍","nLeftrightarrow;":"⇎","nLl;":"⋘̸","nLt;":"≪⃒","nLtv;":"≪̸","nRightarrow;":"⇏","nVDash;":"⊯","nVdash;":"⊮","nabla;":"∇","nacute;":"ń","nang;":"∠⃒","nap;":"≉","napE;":"⩰̸","napid;":"≋̸","napos;":"ʼn","napprox;":"≉","natur;":"♮","natural;":"♮","naturals;":"ℕ",nbsp:" ","nbsp;":" ","nbump;":"≎̸","nbumpe;":"≏̸","ncap;":"⩃","ncaron;":"ň","ncedil;":"ņ","ncong;":"≇̸","ncongdot;":"⩭","ncup;":"⩂","ncy;":"н","ndash;":"–","ne;":"≠","neArr;":"⇗","nearhk;":"⤤","nearr;":"↗","nearrow;":"↗","nedot;":"≐̸","nequiv;":"≢","nesear;":"⤨","nesim;":"≂̸","nexist;":"∄","nexists;":"∄","nfr;":"ᵒB","ngE;":"≧̸","nge;":"≱","ngeq;":"≱","ngeqq;":"≧̸","ngeqslant;":"⩾̸","nges;":"⩾̸","ngsim;":"≵","ngt;":"≯","ngtr;":"≯","nhArr;":"⇎","nharr;":"↮","nhpar;":"⫲","ni;":"∋","nis;":"⋼","nisd;":"⋺","niv;":"∋","njcy;":"њ","nlArr;":"⇍","nlE;":"≦̸","nlarr;":"↚","nldr;":"‥","nle;":"≰","nleftarrow;":"↚","nleftrightarrow;":"↮","nleq;":"≰","nleqq;":"≦̸","nleqslant;":"⩽̸","nles;":"⩽̸","nless;":"≮","nlsim;":"≴","nlt;":"≮","nltri;":"⋪","nltrie;":"⋬","nmid;":"∤","nopf;":"ᵕF",not:"¬","not;":"¬","notin;":"∉","notinE;":"⋹̸","notindot;":"⋵̸","notinva;":"∉","notinvb;":"⋷","notinvc;":"⋶","notni;":"∌","notniva;":"∌","notnivb;":"⋾","notnivc;":"⋽","npar;":"∦","nparallel;":"∦","nparsl;":"⫽⃥","npart;":"∂̸","npolint;":"⨔","npr;":"⊀","nprcue;":"⋠","npre;":"⪯","nprec;":"⊀","npreceq;":"⪯","nrArr;":"⇏","nrarr;":"↛","nrarrc;":"⤳̸","nrarrw;":"↝̸","nrightarrow;":"↛","nrtri;":"⋫","nrtrie;":"⋭","nsc;":"⊁","nsccue;":"⋡","nsce;":"⪰̸","nscr;":"ᵌ3","nshortmid;":"∤","nshortparallel;":"∦","nsim;":"≁","nsime;":"≄","nsimeq;":"≄","nsmid;":"∤","nspar;":"∦","nsqsube;":"⋢","nsqsupe;":"⋣","nsub;":"⊄","nsubE;":"⫅̸","nsube;":"⊈","nsubset;":"⊄","nsubseteq;":"⊈","nsubseteqq;":"⫅̸","nsucc;":"⊁","nsucceq;":"⪰̸","nsup;":"⊅","nsupE;":"⫆","nsupe;":"⊉","nsupset;":"⊅","nsupseteq;":"⊉","nsupseteqq;":"⫆̸","ntgl;":"≹",ntilde:"ñ","ntilde;":"ñ","ntlg;":"≸","ntriangleleft;":"⋪","ntrianglelefteq;":"⋬","ntriangleright;":"⋫","ntrianglerighteq;":"⋭","nu;":"ν","num;":"#","numero;":"№","numsp;":" ","nvDash;":"⊭","nvHarr;":"⤄","nvap;":"≍⃒","nvdash;":"⊬","nvge;":"≥⃒","nvgt;":">⃒","nvinfin;":"⧞","nvlArr;":"⤂","nvle;":"≤⃒","nvlt;":"<⃒","nvltrie;":"⊴⃒","nvrArr;":"⤃","nvrtrie;":"⊵⃒","nvsim;":"∼⃒","nwArr;":"⇖","nwarhk;":"⤣","nwarr;":"↖","nwarrow;":"↖","nwnear;":"⤧","oS;":"Ⓢ",oacute:"ó","oacute;":"ó","oast;":"⊛","ocir;":"⊚",ocirc:"ô","ocirc;":"ô","ocy;":"о","odash;":"⊝","odblac;":"ő","odiv;":"⨸","odot;":"⊙","odsold;":"⦼","oelig;":"œ","ofcir;":"⦿","ofr;":"ᵒC","ogon;":"˛",ograve:"ò","ograve;":"ò","ogt;":"⧁","ohbar;":"⦵","ohm;":"Ω","oint;":"∮","olarr;":"↺","olcir;":"⦾","olcross;":"⦻","oline;":"‾","olt;":"⧀","omacr;":"ō","omega;":"ω","omicron;":"ο","omid;":"⦶","ominus;":"⊖","oopf;":"ᵖ0","opar;":"⦷","operp;":"⦹","oplus;":"⊕","or;":"∨","orarr;":"↻","ord;":"⩝","order;":"ℴ","orderof;":"ℴ",ordf:"ª","ordf;":"ª",ordm:"º","ordm;":"º","origof;":"⊶","oror;":"⩖","orslope;":"⩗","orv;":"⩛","oscr;":"ℴ",oslash:"ø","oslash;":"ø","osol;":"⊘",otilde:"õ","otilde;":"õ","otimes;":"⊗","otimesas;":"⨶",ouml:"ö","ouml;":"ö","ovbar;":"⌽","par;":"∥",para:"¶","para;":"¶","parallel;":"∥","parsim;":"⫳","parsl;":"⫽","part;":"∂","pcy;":"п","percnt;":"%","period;":".","permil;":"‰","perp;":"⊥","pertenk;":"‱","pfr;":"ᵒD","phi;":"φ","phiv;":"ϕ","phmmat;":"ℳ","phone;":"☎","pi;":"π","pitchfork;":"⋔","piv;":"ϖ","planck;":"ℏ","planckh;":"ℎ","plankv;":"ℏ","plus;":"+","plusacir;":"⨣","plusb;":"⊞","pluscir;":"⨢","plusdo;":"∔","plusdu;":"⨥","pluse;":"⩲",plusmn:"±","plusmn;":"±","plussim;":"⨦","plustwo;":"⨧","pm;":"±","pointint;":"⨕","popf;":"ᵖ1",pound:"£","pound;":"£","pr;":"≺","prE;":"⪳","prap;":"⪷","prcue;":"≼","pre;":"⪯","prec;":"≺","precapprox;":"⪷","preccurlyeq;":"≼","preceq;":"⪯","precnapprox;":"⪹","precneqq;":"⪵","precnsim;":"⋨","precsim;":"≾","prime;":"′","primes;":"ℙ","prnE;":"⪵","prnap;":"⪹","prnsim;":"⋨","prod;":"∏","profalar;":"⌮","profline;":"⌒","profsurf;":"⌓","prop;":"∝","propto;":"∝","prsim;":"≾","prurel;":"⊰","pscr;":"ᵌ5","psi;":"ψ","puncsp;":" ","qfr;":"ᵒE","qint;":"⨌","qopf;":"ᵖ2","qprime;":"⁗","qscr;":"ᵌ6","quaternions;":"ℍ","quatint;":"⨖","quest;":"?","questeq;":"≟",quot:'"',"quot;":'"',"rAarr;":"⇛","rArr;":"⇒","rAtail;":"⤜","rBarr;":"⤏","rHar;":"⥤","race;":"∽̱","racute;":"ŕ","radic;":"√","raemptyv;":"⦳","rang;":"⟩","rangd;":"⦒","range;":"⦥","rangle;":"⟩",raquo:"»","raquo;":"»","rarr;":"→","rarrap;":"⥵","rarrb;":"⇥","rarrbfs;":"⤠","rarrc;":"⤳","rarrfs;":"⤞","rarrhk;":"↪","rarrlp;":"↬","rarrpl;":"⥅","rarrsim;":"⥴","rarrtl;":"↣","rarrw;":"↝","ratail;":"⤚","ratio;":"∶","rationals;":"ℚ","rbarr;":"⤍","rbbrk;":"❳","rbrace;":"}","rbrack;":"]","rbrke;":"⦌","rbrksld;":"⦎","rbrkslu;":"⦐","rcaron;":"ř","rcedil;":"ŗ","rceil;":"⌉","rcub;":"}","rcy;":"р","rdca;":"⤷","rdldhar;":"⥩","rdquo;":"”","rdquor;":"”","rdsh;":"↳","real;":"ℜ","realine;":"ℛ","realpart;":"ℜ","reals;":"ℝ","rect;":"▭",reg:"®","reg;":"®","rfisht;":"⥽","rfloor;":"⌋","rfr;":"ᵒF","rhard;":"⇁","rharu;":"⇀","rharul;":"⥬","rho;":"ρ","rhov;":"ϱ","rightarrow;":"→","rightarrowtail;":"↣","rightharpoondown;":"⇁","rightharpoonup;":"⇀","rightleftarrows;":"⇄","rightleftharpoons;":"⇌","rightrightarrows;":"⇉","rightsquigarrow;":"↝","rightthreetimes;":"⋌","ring;":"˚","risingdotseq;":"≓","rlarr;":"⇄","rlhar;":"⇌","rlm;":"‏","rmoust;":"⎱","rmoustache;":"⎱","rnmid;":"⫮","roang;":"⟭","roarr;":"⇾","robrk;":"⟧","ropar;":"⦆","ropf;":"ᵖ3","roplus;":"⨮","rotimes;":"⨵","rpar;":")","rpargt;":"⦔","rppolint;":"⨒","rrarr;":"⇉","rsaquo;":"›","rscr;":"ᵌ7","rsh;":"↱","rsqb;":"]","rsquo;":"’","rsquor;":"’","rthree;":"⋌","rtimes;":"⋊","rtri;":"▹","rtrie;":"⊵","rtrif;":"▸","rtriltri;":"⧎","ruluhar;":"⥨","rx;":"℞","sacute;":"ś","sbquo;":"‚","sc;":"≻","scE;":"⪴","scap;":"⪸","scaron;":"š","sccue;":"≽","sce;":"⪰","scedil;":"ş","scirc;":"ŝ","scnE;":"⪶","scnap;":"⪺","scnsim;":"⋩","scpolint;":"⨓","scsim;":"≿","scy;":"с","sdot;":"⋅","sdotb;":"⊡","sdote;":"⩦","seArr;":"⇘","searhk;":"⤥","searr;":"↘","searrow;":"↘",sect:"§","sect;":"§","semi;":";","seswar;":"⤩","setminus;":"∖","setmn;":"∖","sext;":"✶","sfr;":"ᵓ0","sfrown;":"⌢","sharp;":"♯","shchcy;":"щ","shcy;":"ш","shortmid;":"∣","shortparallel;":"∥",shy:"­","shy;":"­","sigma;":"σ","sigmaf;":"ς","sigmav;":"ς","sim;":"∼","simdot;":"⩪","sime;":"≃","simeq;":"≃","simg;":"⪞","simgE;":"⪠","siml;":"⪝","simlE;":"⪟","simne;":"≆","simplus;":"⨤","simrarr;":"⥲","slarr;":"←","smallsetminus;":"∖","smashp;":"⨳","smeparsl;":"⧤","smid;":"∣","smile;":"⌣","smt;":"⪪","smte;":"⪬","smtes;":"⪬︀","softcy;":"ь","sol;":"/","solb;":"⧄","solbar;":"⌿","sopf;":"ᵖ4","spades;":"♠","spadesuit;":"♠","spar;":"∥","sqcap;":"⊓","sqcaps;":"⊓︀","sqcup;":"⊔","sqcups;":"⊔︀","sqsub;":"⊏","sqsube;":"⊑","sqsubset;":"⊏","sqsubseteq;":"⊑","sqsup;":"⊐","sqsupe;":"⊒","sqsupset;":"⊐","sqsupseteq;":"⊒","squ;":"□","square;":"□","squarf;":"▪","squf;":"▪","srarr;":"→","sscr;":"ᵌ8","ssetmn;":"∖","ssmile;":"⌣","sstarf;":"⋆","star;":"☆","starf;":"★","straightepsilon;":"ϵ","straightphi;":"ϕ","strns;":"¯","sub;":"⊂","subE;":"⫅","subdot;":"⪽","sube;":"⊆","subedot;":"⫃","submult;":"⫁","subnE;":"⫋","subne;":"⊊","subplus;":"⪿","subrarr;":"⥹","subset;":"⊂","subseteq;":"⊆","subseteqq;":"⫅","subsetneq;":"⊊","subsetneqq;":"⫋","subsim;":"⫇","subsub;":"⫕","subsup;":"⫓","succ;":"≻","succapprox;":"⪸","succcurlyeq;":"≽","succeq;":"⪰","succnapprox;":"⪺","succneqq;":"⪶","succnsim;":"⋩","succsim;":"≿","sum;":"∑","sung;":"♪",sup1:"¹","sup1;":"¹",sup2:"²","sup2;":"²",sup3:"³","sup3;":"³","sup;":"⊃","supE;":"⫆","supdot;":"⪾","supdsub;":"⫘","supe;":"⊇","supedot;":"⫄","suphsol;":"⟉","suphsub;":"⫗","suplarr;":"⥻","supmult;":"⫂","supnE;":"⫌","supne;":"⊋","supplus;":"⫀","supset;":"⊃","supseteq;":"⊇","supseteqq;":"⫆","supsetneq;":"⊋","supsetneqq;":"⫌","supsim;":"⫈","supsub;":"⫔","supsup;":"⫖","swArr;":"⇙","swarhk;":"⤦","swarr;":"↙","swarrow;":"↙","swnwar;":"⤪",szlig:"ß","szlig;":"ß","target;":"⌖","tau;":"τ","tbrk;":"⎴","tcaron;":"ť","tcedil;":"ţ","tcy;":"т","tdot;":"⃛","telrec;":"⌕","tfr;":"ᵓ1","there4;":"∴","therefore;":"∴","theta;":"θ","thetasym;":"ϑ","thetav;":"ϑ","thickapprox;":"≈","thicksim;":"∼","thinsp;":" ","thkap;":"≈","thksim;":"∼",thorn:"þ","thorn;":"þ","tilde;":"˜",times:"×","times;":"×","timesb;":"⊠","timesbar;":"⨱","timesd;":"⨰","tint;":"∭","toea;":"⤨","top;":"⊤","topbot;":"⌶","topcir;":"⫱","topf;":"ᵖ5","topfork;":"⫚","tosa;":"⤩","tprime;":"‴","trade;":"™","triangle;":"▵","triangledown;":"▿","triangleleft;":"◃","trianglelefteq;":"⊴","triangleq;":"≜","triangleright;":"▹","trianglerighteq;":"⊵","tridot;":"◬","trie;":"≜","triminus;":"⨺","triplus;":"⨹","trisb;":"⧍","tritime;":"⨻","trpezium;":"⏢","tscr;":"ᵌ9","tscy;":"ц","tshcy;":"ћ","tstrok;":"ŧ","twixt;":"≬","twoheadleftarrow;":"↞","twoheadrightarrow;":"↠","uArr;":"⇑","uHar;":"⥣",uacute:"ú","uacute;":"ú","uarr;":"↑","ubrcy;":"ў","ubreve;":"ŭ",ucirc:"û","ucirc;":"û","ucy;":"у","udarr;":"⇅","udblac;":"ű","udhar;":"⥮","ufisht;":"⥾","ufr;":"ᵓ2",ugrave:"ù","ugrave;":"ù","uharl;":"↿","uharr;":"↾","uhblk;":"▀","ulcorn;":"⌜","ulcorner;":"⌜","ulcrop;":"⌏","ultri;":"◸","umacr;":"ū",uml:"¨","uml;":"¨","uogon;":"ų","uopf;":"ᵖ6","uparrow;":"↑","updownarrow;":"↕","upharpoonleft;":"↿","upharpoonright;":"↾","uplus;":"⊎","upsi;":"υ","upsih;":"ϒ","upsilon;":"υ","upuparrows;":"⇈","urcorn;":"⌝","urcorner;":"⌝","urcrop;":"⌎","uring;":"ů","urtri;":"◹","uscr;":"ᵌA","utdot;":"⋰","utilde;":"ũ","utri;":"▵","utrif;":"▴","uuarr;":"⇈",uuml:"ü","uuml;":"ü","uwangle;":"⦧","vArr;":"⇕","vBar;":"⫨","vBarv;":"⫩","vDash;":"⊨","vangrt;":"⦜","varepsilon;":"ϵ","varkappa;":"ϰ","varnothing;":"∅","varphi;":"ϕ","varpi;":"ϖ","varpropto;":"∝","varr;":"↕","varrho;":"ϱ","varsigma;":"ς","varsubsetneq;":"⊊︀","varsubsetneqq;":"⫋︀","varsupsetneq;":"⊋︀","varsupsetneqq;":"⫌︀","vartheta;":"ϑ","vartriangleleft;":"⊲","vartriangleright;":"⊳","vcy;":"в","vdash;":"⊢","vee;":"∨","veebar;":"⊻","veeeq;":"≚","vellip;":"⋮","verbar;":"|","vert;":"|","vfr;":"ᵓ3","vltri;":"⊲","vnsub;":"⊂⃒","vnsup;":"⊃⃒","vopf;":"ᵖ7","vprop;":"∝","vrtri;":"⊳","vscr;":"ᵌB","vsubnE;":"⫋︀","vsubne;":"⊊︀","vsupnE;":"⫌︀","vsupne;":"⊋︀","vzigzag;":"⦚","wcirc;":"ŵ","wedbar;":"⩟","wedge;":"∧","wedgeq;":"≙","weierp;":"℘","wfr;":"ᵓ4","wopf;":"ᵖ8","wp;":"℘","wr;":"≀","wreath;":"≀","wscr;":"ᵌC","xcap;":"⋂","xcirc;":"◯","xcup;":"⋃","xdtri;":"▽","xfr;":"ᵓ5","xhArr;":"⟺","xharr;":"⟷","xi;":"ξ","xlArr;":"⟸","xlarr;":"⟵","xmap;":"⟼","xnis;":"⋻","xodot;":"⨀","xopf;":"ᵖ9","xoplus;":"⨁","xotime;":"⨂","xrArr;":"⟹","xrarr;":"⟶","xscr;":"ᵌD","xsqcup;":"⨆","xuplus;":"⨄","xutri;":"△","xvee;":"⋁","xwedge;":"⋀",yacute:"ý","yacute;":"ý","yacy;":"я","ycirc;":"ŷ","ycy;":"ы",yen:"¥","yen;":"¥","yfr;":"ᵓ6","yicy;":"ї","yopf;":"ᵖA","yscr;":"ᵌE","yucy;":"ю",yuml:"ÿ","yuml;":"ÿ","zacute;":"ź","zcaron;":"ž","zcy;":"з","zdot;":"ż","zeetrf;":"ℨ","zeta;":"ζ","zfr;":"ᵓ7","zhcy;":"ж","zigrarr;":"⇝","zopf;":"ᵖB","zscr;":"ᵌF","zwj;":"‍","zwnj;":"‌"}},{}],13:[function(e,t,n){(function(){function n(e){if(Object.keys)return Object.keys(e);var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t}function r(e,t){return t===undefined?""+t:typeof t=="number"&&(isNaN(t)||!isFinite(t))?t.toString():typeof t=="function"||t instanceof RegExp?t.toString():t}function i(e,t){return typeof e=="string"?e.length=0;o--)if(r[o]!=i[o])return!1;for(o=r.length-1;o>=0;o--){s=r[o];if(!u(e[s],t[s]))return!1}return!0}function c(e,t){return!e||!t?!1:t instanceof RegExp?t.test(e):e instanceof t?!0:t.call({},e)===!0?!0:!1}function h(e,t,n,r){var i;typeof n=="string"&&(r=n,n=null);try{t()}catch(o){i=o}r=(n&&n.name?" ("+n.name+").":".")+(r?" "+r:"."),e&&!i&&s("Missing expected exception"+r),!e&&c(i,n)&&s("Got unwanted exception"+r);if(e&&i&&n&&!c(i,n)||!e&&i)throw i}var p=e("util"),d=e("buffer").Buffer,v=Array.prototype.slice,m=t.exports=o;m.AssertionError=function(e){this.name="AssertionError",this.message=e.message,this.actual=e.actual,this.expected=e.expected,this.operator=e.operator;var t=e.stackStartFunction||s;Error.captureStackTrace&&Error.captureStackTrace(this,t)},p.inherits(m.AssertionError,Error),m.AssertionError.prototype.toString=function(){return this.message?[this.name+":",this.message].join(" "):[this.name+":",i(JSON.stringify(this.actual,r),128),this.operator,i(JSON.stringify(this.expected,r),128)].join(" ")},m.fail=s,m.ok=o,m.equal=function(e,t,n){e!=t&&s(e,t,n,"==",m.equal)},m.notEqual=function(e,t,n){e==t&&s(e,t,n,"!=",m.notEqual)},m.deepEqual=function(e,t,n){u(e,t)||s(e,t,n,"deepEqual",m.deepEqual)},m.notDeepEqual=function(e,t,n){u(e,t)&&s(e,t,n,"notDeepEqual",m.notDeepEqual)},m.strictEqual=function(e,t,n){e!==t&&s(e,t,n,"===",m.strictEqual)},m.notStrictEqual=function(e,t,n){e===t&&s(e,t,n,"!==",m.notStrictEqual)},m.throws=function(e,t,n){h.apply(this,[!0].concat(v.call(arguments)))},m.doesNotThrow=function(e,t,n){h.apply(this,[!1].concat(v.call(arguments)))},m.ifError=function(e){if(e)throw e}})()},{buffer:17,util:15}],14:[function(e,t,n){(function(e){function t(e,t){if(e.indexOf)return e.indexOf(t);for(var n=0;n0&&this._events[e].length>n&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),console.trace())}this._events[e].push(t)}else this._events[e]=[this._events[e],t];return this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(e,t){var n=this;return n.on(e,function r(){n.removeListener(e,r),t.apply(this,arguments)}),this},r.prototype.removeListener=function(e,n){if("function"!=typeof n)throw new Error("removeListener only takes instances of Function");if(!this._events||!this._events[e])return this;var r=this._events[e];if(i(r)){var s=t(r,n);if(s<0)return this;r.splice(s,1),r.length==0&&delete this._events[e]}else this._events[e]===n&&delete this._events[e];return this},r.prototype.removeAllListeners=function(e){return arguments.length===0?(this._events={},this):(e&&this._events&&this._events[e]&&(this._events[e]=null),this)},r.prototype.listeners=function(e){return this._events||(this._events={}),this._events[e]||(this._events[e]=[]),i(this._events[e])||(this._events[e]=[this._events[e]]),this._events[e]}})(e("__browserify_process"))},{__browserify_process:20}],15:[function(e,t,n){function r(e){return Array.isArray(e)||typeof e=="object"&&Object.prototype.toString.call(e)==="[object Array]"}function i(e){typeof e=="object"&&Object.prototype.toString.call(e)==="[object RegExp]"}function s(e){return typeof e=="object"&&Object.prototype.toString.call(e)==="[object Date]"}function o(e){return e<10?"0"+e.toString(10):e.toString(10)}function u(){var e=new Date,t=[o(e.getHours()),o(e.getMinutes()),o(e.getSeconds())].join(":");return[e.getDate(),f[e.getMonth()],t].join(" ")}var a=e("events");n.isArray=r,n.isDate=function(e){return Object.prototype.toString.call(e)==="[object Date]"},n.isRegExp=function(e){return Object.prototype.toString.call(e)==="[object RegExp]"},n.print=function(){},n.puts=function(){},n.debug=function(){},n.inspect=function(e,t,o,u){function a(e,o){if(e&&typeof e.inspect=="function"&&e!==n&&(!e.constructor||e.constructor.prototype!==e))return e.inspect(o);switch(typeof e){case"undefined":return h("undefined","undefined");case"string":var u="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return h(u,"string");case"number":return h(""+e,"number");case"boolean":return h(""+e,"boolean")}if(e===null)return h("null","null");var p=l(e),d=t?c(e):p;if(typeof e=="function"&&d.length===0){if(i(e))return h(""+e,"regexp");var v=e.name?": "+e.name:"";return h("[Function"+v+"]","special")}if(s(e)&&d.length===0)return h(e.toUTCString(),"date");var m,g,y;r(e)?(g="Array",y=["[","]"]):(g="Object",y=["{","}"]);if(typeof e=="function"){var b=e.name?": "+e.name:"";m=i(e)?" "+e:" [Function"+b+"]"}else m="";s(e)&&(m=" "+e.toUTCString());if(d.length===0)return y[0]+m+y[1];if(o<0)return i(e)?h(""+e,"regexp"):h("[Object]","special");f.push(e);var w=d.map(function(t){var n,i;e.__lookupGetter__&&(e.__lookupGetter__(t)?e.__lookupSetter__(t)?i=h("[Getter/Setter]","special"):i=h("[Getter]","special"):e.__lookupSetter__(t)&&(i=h("[Setter]","special"))),p.indexOf(t)<0&&(n="["+t+"]"),i||(f.indexOf(e[t])<0?(o===null?i=a(e[t]):i=a(e[t],o-1),i.indexOf("\n")>-1&&(r(e)?i=i.split("\n").map(function(e){return" "+e}).join("\n").substr(2):i="\n"+i.split("\n").map(function(e){return" "+e}).join("\n"))):i=h("[Circular]","special"));if(typeof n=="undefined"){if(g==="Array"&&t.match(/^\d+$/))return i;n=JSON.stringify(""+t),n.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(n=n.substr(1,n.length-2),n=h(n,"name")):(n=n.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),n=h(n,"string"))}return n+": "+i});f.pop();var E=0,S=w.reduce(function(e,t){return E++,t.indexOf("\n")>=0&&E++,e+t.length+1},0);return S>50?w=y[0]+(m===""?"":m+"\n ")+" "+w.join(",\n ")+" "+y[1]:w=y[0]+m+" "+w.join(", ")+" "+y[1],w}var f=[],h=function(e,t){var n={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},r={special:"cyan",number:"blue","boolean":"yellow","undefined":"grey","null":"bold",string:"green",date:"magenta",regexp:"red"}[t];return r?"["+n[r][0]+"m"+e+"["+n[r][1]+"m":e};return u||(h=function(e,t){return e}),a(e,typeof o=="undefined"?2:o)};var f=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];n.log=function(e){},n.pump=null;var l=Object.keys||function(e){var t=[];for(var n in e)t.push(n);return t},c=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.hasOwnProperty.call(e,n)&&t.push(n);return t},h=Object.create||function(e,t){var n;if(e===null)n={__proto__:null};else{if(typeof e!="object")throw new TypeError("typeof prototype["+typeof e+"] != 'object'");var r=function(){};r.prototype=e,n=new r,n.__proto__=e}return typeof t!="undefined"&&Object.defineProperties&&Object.defineProperties(n,t),n};n.inherits=function(e,t){e.super_=t,e.prototype=h(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})};var p=/%[sdj%]/g;n.format=function(e){if(typeof e!="string"){var t=[];for(var r=0;r=s)return e;switch(e){case"%s":return String(i[r++]);case"%d":return Number(i[r++]);case"%j":return JSON.stringify(i[r++]);default:return e}});for(var u=i[r];r>1,l=-7,c=n?0:i-1,h=n?1:-1,p=e[t+c];c+=h,s=p&(1<<-l)-1,p>>=-l,l+=u;for(;l>0;s=s*256+e[t+c],c+=h,l-=8);o=s&(1<<-l)-1,s>>=-l,l+=r;for(;l>0;o=o*256+e[t+c],c+=h,l-=8);if(s===0)s=1-f;else{if(s===a)return o?NaN:(p?-1:1)*Infinity;o+=Math.pow(2,r),s-=f}return(p?-1:1)*o*Math.pow(2,s-r)},n.writeIEEE754=function(e,t,n,r,i,s){var o,u,a,f=s*8-i-1,l=(1<>1,h=i===23?Math.pow(2,-24)-Math.pow(2,-77):0,p=r?s-1:0,d=r?-1:1,v=t<0||t===0&&1/t<0?1:0;t=Math.abs(t),isNaN(t)||t===Infinity?(u=isNaN(t)?1:0,o=l):(o=Math.floor(Math.log(t)/Math.LN2),t*(a=Math.pow(2,-o))<1&&(o--,a*=2),o+c>=1?t+=h/a:t+=h*Math.pow(2,1-c),t*a>=2&&(o++,a/=2),o+c>=l?(u=0,o=l):o+c>=1?(u=(t*a-1)*Math.pow(2,i),o+=c):(u=t*Math.pow(2,c-1)*Math.pow(2,i),o=0));for(;i>=8;e[n+p]=u&255,p+=d,u/=256,i-=8);o=o<0;e[n+p]=o&255,p+=d,o/=256,f-=8);e[n+p-d]|=v*128}},{}],17:[function(e,t,n){(function(){function t(e,n,i){if(!(this instanceof t))return new t(e,n,i);this.parent=this,this.offset=0;var o;if(typeof i=="number")this.length=r(n),this.offset=i;else{switch(o=typeof e){case"number":this.length=r(e);break;case"string":this.length=t.byteLength(e,n);break;case"object":this.length=r(e.length);break;default:throw new Error("First argument needs to be a number, array or string.")}if(s(e))for(var u=0;u=t.length||s>=e.length)break;t[s+n]=e[s],s++}return s}function c(e){try{return decodeURIComponent(e)}catch(t){return String.fromCharCode(65533)}}function h(e,t,n,r){var i=0;return r||(k.ok(typeof n=="boolean","missing or invalid endian"),k.ok(t!==undefined&&t!==null,"missing offset"),k.ok(t+1=e.length?0:(n?(i=e[t]<<8,t+1=e.length?0:(n?(t+1>>0):(t+2>>0)),i)}function d(e,t,n,r){var i,s;return r||(k.ok(typeof n=="boolean","missing or invalid endian"),k.ok(t!==undefined&&t!==null,"missing offset"),k.ok(t+1=0,"specified a negative value for writing an unsigned value"),k.ok(e<=t,"value is larger than maximum value for type"),k.ok(Math.floor(e)===e,"value has a fractional component")}function b(e,t,n,r,i){i||(k.ok(t!==undefined&&t!==null,"missing value"),k.ok(typeof r=="boolean","missing or invalid endian"),k.ok(n!==undefined&&n!==null,"missing offset"),k.ok(n+1>>(r?1-s:s)*8}function w(e,t,n,r,i){i||(k.ok(t!==undefined&&t!==null,"missing value"),k.ok(typeof r=="boolean","missing or invalid endian"),k.ok(n!==undefined&&n!==null,"missing offset"),k.ok(n+3>>(r?3-s:s)*8&255}function E(e,t,n){k.ok(typeof e=="number","cannot write a non-number as a number"),k.ok(e<=t,"value larger than maximum allowed value"),k.ok(e>=n,"value smaller than minimum allowed value"),k.ok(Math.floor(e)===e,"value has a fractional component")}function S(e,t,n){k.ok(typeof e=="number","cannot write a non-number as a number"),k.ok(e<=t,"value larger than maximum allowed value"),k.ok(e>=n,"value smaller than minimum allowed value")}function x(e,t,n,r,i){i||(k.ok(t!==undefined&&t!==null,"missing value"),k.ok(typeof r=="boolean","missing or invalid endian"),k.ok(n!==undefined&&n!==null,"missing offset"),k.ok(n+1=0?b(e,t,n,r,i):b(e,65535+t+1,n,r,i)}function T(e,t,n,r,i){i||(k.ok(t!==undefined&&t!==null,"missing value"),k.ok(typeof r=="boolean","missing or invalid endian"),k.ok(n!==undefined&&n!==null,"missing offset"),k.ok(n+3=0?w(e,t,n,r,i):w(e,4294967295+t+1,n,r,i)}function N(t,n,r,i,s){s||(k.ok(n!==undefined&&n!==null,"missing value"),k.ok(typeof i=="boolean","missing or invalid endian"),k.ok(r!==undefined&&r!==null,"missing offset"),k.ok(r+3=this.length)throw new Error("oob");return this[e]},t.prototype.set=function(e,t){if(e<0||e>=this.length)throw new Error("oob");return this[e]=t},t.byteLength=function(e,t){switch(t||"utf8"){case"hex":return e.length/2;case"utf8":case"utf-8":return u(e).length;case"ascii":case"binary":return e.length;case"base64":return f(e).length;default:throw new Error("Unknown encoding")}},t.prototype.utf8Write=function(e,n,r){var i,s;return t._charsWritten=l(u(e),this,n,r)},t.prototype.asciiWrite=function(e,n,r){var i,s;return t._charsWritten=l(a(e),this,n,r)},t.prototype.binaryWrite=t.prototype.asciiWrite,t.prototype.base64Write=function(e,n,r){var i,s;return t._charsWritten=l(f(e),this,n,r)},t.prototype.base64Slice=function(t,n){var r=Array.prototype.slice.apply(this,arguments);return e("base64-js").fromByteArray(r)},t.prototype.utf8Slice=function(){var e=Array.prototype.slice.apply(this,arguments),t="",n="",r=0;while(r"},t.prototype.hexSlice=function(e,t){var n=this.length;if(!e||e<0)e=0;if(!t||t<0||t>n)t=n;var r="";for(var i=e;ii&&(r=i)):r=i;var s=e.length;if(s%2)throw new Error("Invalid hex string");r>s/2&&(r=s/2);for(var o=0;os&&(n=s)):n=s,r=String(r||"utf8").toLowerCase();switch(r){case"hex":return this.hexWrite(e,t,n);case"utf8":case"utf-8":return this.utf8Write(e,t,n);case"ascii":return this.asciiWrite(e,t,n);case"binary":return this.binaryWrite(e,t,n);case"base64":return this.base64Write(e,t,n);case"ucs2":case"ucs-2":return this.ucs2Write(e,t,n);default:throw new Error("Unknown encoding")}},t.prototype.slice=function(e,n){n===undefined&&(n=this.length);if(n>this.length)throw new Error("oob");if(e>n)throw new Error("oob");return new t(this,n-e,+e)},t.prototype.copy=function(e,t,n,r){var i=this;n||(n=0);if(r===undefined||isNaN(r))r=this.length;t||(t=0);if(r=e.length)throw new Error("targetStart out of bounds");if(n<0||n>=i.length)throw new Error("sourceStart out of bounds");if(r<0||r>i.length)throw new Error("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t=this.length)throw new Error("start out of bounds");if(n<0||n>this.length)throw new Error("end out of bounds");for(var r=t;r=n.length)return;return n[e]},t.prototype.readUInt16LE=function(e,t){return h(this,e,!1,t)},t.prototype.readUInt16BE=function(e,t){return h(this,e,!0,t)},t.prototype.readUInt32LE=function(e,t){return p(this,e,!1,t)},t.prototype.readUInt32BE=function(e,t){return p(this,e,!0,t)},t.prototype.readInt8=function(e,t){var n=this,r;t||(k.ok(e!==undefined&&e!==null,"missing offset"),k.ok(e=n.length)return;return r=n[e]&128,r?(255-n[e]+1)*-1:n[e]},t.prototype.readInt16LE=function(e,t){return d(this,e,!1,t)},t.prototype.readInt16BE=function(e,t){return d(this,e,!0,t)},t.prototype.readInt32LE=function(e,t){return v(this,e,!1,t)},t.prototype.readInt32BE=function(e,t){return v(this,e,!0,t)},t.prototype.readFloatLE=function(e,t){return m(this,e,!1,t)},t.prototype.readFloatBE=function(e,t){return m(this,e,!0,t)},t.prototype.readDoubleLE=function(e,t){return g(this,e,!1,t)},t.prototype.readDoubleBE=function(e,t){return g(this,e,!0,t)},t.prototype.writeUInt8=function(e,t,n){var r=this;n||(k.ok(e!==undefined&&e!==null,"missing value"),k.ok(t!==undefined&&t!==null,"missing offset"),k.ok(t=0?r.writeUInt8(e,t,n):r.writeUInt8(255+e+1,t,n)},t.prototype.writeInt16LE=function(e,t,n){x(this,e,t,!1,n)},t.prototype.writeInt16BE=function(e,t,n){x(this,e,t,!0,n)},t.prototype.writeInt32LE=function(e,t,n){T(this,e,t,!1,n)},t.prototype.writeInt32BE=function(e,t,n){T(this,e,t,!0,n)},t.prototype.writeFloatLE=function(e,t,n){N(this,e,t,!1,n)},t.prototype.writeFloatBE=function(e,t,n){N(this,e,t,!0,n)},t.prototype.writeDoubleLE=function(e,t,n){C(this,e,t,!1,n)},t.prototype.writeDoubleBE=function(e,t,n){C(this,e,t,!0,n)}})()},{"./buffer_ieee754":16,assert:13,"base64-js":18}],18:[function(e,t,n){(function(e){function n(e){var t,n,r,s,o,u;if(e.length%4>0)throw"Invalid string. Length must be a multiple of 4";o=e.indexOf("="),o=o>0?e.length-o:0,u=[],r=o>0?e.length-4:e.length;for(t=0,n=0;t>16),u.push((s&65280)>>8),u.push(s&255);return o===2?(s=i.indexOf(e[t])<<2|i.indexOf(e[t+1])>>4,u.push(s&255)):o===1&&(s=i.indexOf(e[t])<<10|i.indexOf(e[t+1])<<4|i.indexOf(e[t+2])>>2,u.push(s>>8&255),u.push(s&255)),u}function r(e){function t(e){return i[e>>18&63]+i[e>>12&63]+i[e>>6&63]+i[e&63]}var n,r=e.length%3,s="",o,u;for(n=0,u=e.length-r;n>2],s+=i[o<<4&63],s+="==";break;case 2:o=(e[e.length-2]<<8)+e[e.length-1],s+=i[o>>10],s+=i[o>>4&63],s+=i[o<<2&63],s+="="}return s}var i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";t.exports.toByteArray=n,t.exports.fromByteArray=r})()},{}],"./lib/sax/SAXParser.js":[function(e,t,n){t.exports=e("DaboPu")},{}],20:[function(e,t,n){var r=t.exports={};r.nextTick=function(){var e=typeof window!="undefined"&&window.setImmediate,t=typeof window!="undefined"&&window.postMessage&&window.addEventListener;if(e)return function(e){return window.setImmediate(e)};if(t){var n=[];return window.addEventListener("message",function(e){if(e.source===window&&e.data==="process-tick"){e.stopPropagation();if(n.length>0){var t=n.shift();t()}}},!0),function(e){n.push(e),window.postMessage("process-tick","*")}}return function(e){setTimeout(e,0)}}(),r.title="browser",r.browser=!0,r.env={},r.argv=[],r.binding=function(e){throw new Error("process.binding is not supported")},r.cwd=function(){return"/"},r.chdir=function(e){throw new Error("process.chdir is not supported")}},{}]},{},["DaboPu"]);t.SAXParser=r("./lib/sax/SAXParser.js").SAXParser}),ace.define("ace/worker/mirror",["require","exports","module","ace/document","ace/lib/lang"],function(e,t,n){var r=e("../document").Document,i=e("../lib/lang"),s=t.Mirror=function(e){this.sender=e;var t=this.doc=new r(""),n=this.deferredUpdate=i.delayedCall(this.onUpdate.bind(this)),s=this;e.on("change",function(e){t.applyDeltas(e.data);if(s.$timeout)return n.schedule(s.$timeout);s.onUpdate()})};(function(){this.$timeout=500,this.setTimeout=function(e){this.$timeout=e},this.setValue=function(e){this.doc.setValue(e),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(e){this.sender.callback(this.doc.getValue(),e)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(s.prototype)}) \ No newline at end of file diff --git a/contact-center/app/src/main/resources/static/js/ace/worker-javascript.js b/contact-center/app/src/main/resources/static/js/ace/worker-javascript.js index 5db10869..347daa8d 100644 --- a/contact-center/app/src/main/resources/static/js/ace/worker-javascript.js +++ b/contact-center/app/src/main/resources/static/js/ace/worker-javascript.js @@ -1 +1 @@ -"no use strict";(function(e){if(typeof e.window!="undefined"&&e.document)return;e.console=function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:e})},e.console.error=e.console.warn=e.console.log=e.console.trace=e.console,e.window=e,e.ace=e,e.onerror=function(e,t,n,r,i){console.error("Worker "+(i?i.stack:e))},e.normalizeModule=function(t,n){if(n.indexOf("!")!==-1){var r=n.split("!");return e.normalizeModule(t,r[0])+"!"+e.normalizeModule(t,r[1])}if(n.charAt(0)=="."){var i=t.split("/").slice(0,-1).join("/");n=(i?i+"/":"")+n;while(n.indexOf(".")!==-1&&s!=n){var s=n;n=n.replace(/^\.\//,"").replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return n},e.require=function(t,n){n||(n=t,t=null);if(!n.charAt)throw new Error("worker.js require() accepts only (parentId, id) as arguments");n=e.normalizeModule(t,n);var r=e.require.modules[n];if(r)return r.initialized||(r.initialized=!0,r.exports=r.factory().exports),r.exports;var i=n.split("/");if(!e.require.tlns)return console.log("unable to load "+n);i[0]=e.require.tlns[i[0]]||i[0];var s=i.join("/")+".js";return e.require.id=n,importScripts(s),e.require(t,n)},e.require.modules={},e.require.tlns={},e.define=function(t,n,r){arguments.length==2?(r=n,typeof t!="string"&&(n=t,t=e.require.id)):arguments.length==1&&(r=t,n=[],t=e.require.id),n.length||(n=["require","exports","module"]);if(t.indexOf("text!")===0)return;var i=function(n){return e.require(t,n)};e.require.modules[t]={exports:{},factory:function(){var e=this,t=r.apply(this,n.map(function(t){switch(t){case"require":return i;case"exports":return e.exports;case"module":return e;default:return i(t)}}));return t&&(e.exports=t),e}}},e.define.amd={},e.initBaseUrls=function(e){require.tlns=e},e.initSender=function(){var t=e.require("ace/lib/event_emitter").EventEmitter,n=e.require("ace/lib/oop"),r=function(){};return function(){n.implement(this,t),this.callback=function(e,t){postMessage({type:"call",id:t,data:e})},this.emit=function(e,t){postMessage({type:"event",name:e,data:t})}}.call(r.prototype),new r};var t=e.main=null,n=e.sender=null;e.onmessage=function(r){var i=r.data;if(i.command){if(!t[i.command])throw new Error("Unknown command:"+i.command);t[i.command].apply(t,i.args)}else if(i.init){initBaseUrls(i.tlns),require("ace/lib/es5-shim"),n=e.sender=initSender();var s=require(i.module)[i.classname];t=e.main=new s(n)}else i.event&&n&&n._signal(i.event,i.data)}})(this),ace.define("ace/mode/javascript_worker",["require","exports","module","ace/lib/oop","ace/worker/mirror","ace/mode/javascript/jshint"],function(require,exports,module){function startRegex(e){return RegExp("^("+e.join("|")+")")}var oop=require("../lib/oop"),Mirror=require("../worker/mirror").Mirror,lint=require("./javascript/jshint").JSHINT,disabledWarningsRe=startRegex(["Bad for in variable '(.+)'.",'Missing "use strict"']),errorsRe=startRegex(["Unexpected","Expected ","Confusing (plus|minus)","\\{a\\} unterminated regular expression","Unclosed ","Unmatched ","Unbegun comment","Bad invocation","Missing space after","Missing operator at"]),infoRe=startRegex(["Expected an assignment","Bad escapement of EOL","Unexpected comma","Unexpected space","Missing radix parameter.","A leading decimal point can","\\['{a}'\\] is better written in dot notation.","'{a}' used out of scope"]),JavaScriptWorker=exports.JavaScriptWorker=function(e){Mirror.call(this,e),this.setTimeout(500),this.setOptions()};oop.inherits(JavaScriptWorker,Mirror),function(){this.setOptions=function(e){this.options=e||{esnext:!0,moz:!0,devel:!0,browser:!0,node:!0,laxcomma:!0,laxbreak:!0,lastsemic:!0,onevar:!1,passfail:!1,maxerr:100,expr:!0,multistr:!0,globalstrict:!0},this.doc.getValue()&&this.deferredUpdate.schedule(100)},this.changeOptions=function(e){oop.mixin(this.options,e),this.doc.getValue()&&this.deferredUpdate.schedule(100)},this.isValidJS=function(str){try{eval("throw 0;"+str)}catch(e){if(e===0)return!0}return!1},this.onUpdate=function(){var e=this.doc.getValue();e=e.replace(/^#!.*\n/,"\n");if(!e){this.sender.emit("jslint",[]);return}var t=[],n=this.isValidJS(e)?"warning":"error";lint(e,this.options);var r=lint.errors,i=!1;for(var s=0;s0||-1)*Math.floor(Math.abs(e))),e}function o(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function u(e){var t,n,r;if(o(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(o(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(o(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(e){var t=this;if(typeof t!="function")throw new TypeError("Function.prototype.bind called on incompatible "+t);var n=c.call(arguments,1),i=function(){if(this instanceof i){var r=t.apply(this,n.concat(c.call(arguments)));return Object(r)===r?r:this}return t.apply(e,n.concat(c.call(arguments)))};return t.prototype&&(r.prototype=t.prototype,i.prototype=new r,r.prototype=null),i});var a=Function.prototype.call,f=Array.prototype,l=Object.prototype,c=f.slice,h=a.bind(l.toString),p=a.bind(l.hasOwnProperty),d,v,m,g,y;if(y=p(l,"__defineGetter__"))d=a.bind(l.__defineGetter__),v=a.bind(l.__defineSetter__),m=a.bind(l.__lookupGetter__),g=a.bind(l.__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+tu)for(h=f;h--;)this[a+h]=this[u+h];if(s&&e===l)this.length=l,this.push.apply(this,i);else{this.length=l+s;for(h=0;h>>0;if(h(e)!="[object Function]")throw new TypeError;while(++i>>0,i=Array(r),s=arguments[1];if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");for(var o=0;o>>0,i=[],s,o=arguments[1];if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");for(var u=0;u>>0,i=arguments[1];if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");for(var s=0;s>>0,i=arguments[1];if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");for(var s=0;s>>0;if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");if(!r&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var i=0,s;if(arguments.length>=2)s=arguments[1];else do{if(i in n){s=n[i++];break}if(++i>=r)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;i>>0;if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");if(!r&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var i,s=r-1;if(arguments.length>=2)i=arguments[1];else do{if(s in n){i=n[s--];break}if(--s<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do s in this&&(i=e.call(void 0,i,n[s],s,t));while(s--);return i});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(e){var t=E&&h(this)=="[object String]"?this.split(""):F(this),n=t.length>>>0;if(!n)return-1;var r=0;arguments.length>1&&(r=s(arguments[1])),r=r>=0?r:Math.max(0,n+r);for(;r>>0;if(!n)return-1;var r=n-1;arguments.length>1&&(r=Math.min(r,s(arguments[1]))),r=r>=0?r:n-Math.abs(r);for(;r>=0;r--)if(r in t&&e===t[r])return r;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(e){return e.__proto__||(e.constructor?e.constructor.prototype:l)});if(!Object.getOwnPropertyDescriptor){var S="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(e,t){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError(S+e);if(!p(e,t))return;var n,r,i;n={enumerable:!0,configurable:!0};if(y){var s=e.__proto__;e.__proto__=l;var r=m(e,t),i=g(e,t);e.__proto__=s;if(r||i)return r&&(n.get=r),i&&(n.set=i),n}return n.value=e[t],n}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(e){return Object.keys(e)});if(!Object.create){var x;Object.prototype.__proto__===null?x=function(){return{__proto__:null}}:x=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(e,t){var n;if(e===null)n=x();else{if(typeof e!="object")throw new TypeError("typeof prototype["+typeof e+"] != 'object'");var r=function(){};r.prototype=e,n=new r,n.__proto__=e}return t!==void 0&&Object.defineProperties(n,t),n}}if(Object.defineProperty){var T=i({}),N=typeof document=="undefined"||i(document.createElement("div"));if(!T||!N)var C=Object.defineProperty}if(!Object.defineProperty||C){var k="Property description must be an object: ",L="Object.defineProperty called on non-object: ",A="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(e,t,n){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError(L+e);if(typeof n!="object"&&typeof n!="function"||n===null)throw new TypeError(k+n);if(C)try{return C.call(Object,e,t,n)}catch(r){}if(p(n,"value"))if(y&&(m(e,t)||g(e,t))){var i=e.__proto__;e.__proto__=l,delete e[t],e[t]=n.value,e.__proto__=i}else e[t]=n.value;else{if(!y)throw new TypeError(A);p(n,"get")&&d(e,t,n.get),p(n,"set")&&v(e,t,n.set)}return e}}Object.defineProperties||(Object.defineProperties=function(e,t){for(var n in t)p(t,n)&&Object.defineProperty(e,n,t[n]);return e}),Object.seal||(Object.seal=function(e){return e}),Object.freeze||(Object.freeze=function(e){return e});try{Object.freeze(function(){})}catch(O){Object.freeze=function(e){return function(t){return typeof t=="function"?t:e(t)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(e){return e}),Object.isSealed||(Object.isSealed=function(e){return!1}),Object.isFrozen||(Object.isFrozen=function(e){return!1}),Object.isExtensible||(Object.isExtensible=function(e){if(Object(e)===e)throw new TypeError;var t="";while(p(e,t))t+="?";e[t]=!0;var n=p(e,t);return delete e[t],n});if(!Object.keys){var M=!0,_=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],D=_.length;for(var P in{toString:null})M=!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)p(e,t)&&I.push(t);if(M)for(var n=0,r=D;n ["+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.rowthis.row)return;if(n.start.row==this.row&&n.start.column>this.column)return;var r=this.row,i=this.column,s=n.start,o=n.end;if(t.action==="insertText")if(s.row===r&&s.column<=i){if(s.column!==i||!this.$insertRight)s.row===o.row?i+=o.column-s.column:(i-=s.column,r+=o.row-s.row)}else s.row!==o.row&&s.row=i?i=s.column:i=Math.max(0,i-(o.column-s.column)):s.row!==o.row&&s.row=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)}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,n){t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){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;n2;e==null&&(e=[]);if(v&&e.reduce===v)return r&&(t=N.bind(t,r)),i?e.reduce(t,n):e.reduce(t);C(e,function(e,s,o){i?n=t.call(r,n,e,s,o):(n=e,i=!0)});if(!i)throw new TypeError(k);return n},N.reduceRight=N.foldr=function(e,t,n,r){var i=arguments.length>2;e==null&&(e=[]);if(m&&e.reduceRight===m)return r&&(t=N.bind(t,r)),i?e.reduceRight(t,n):e.reduceRight(t);var s=e.length;if(s!==+s){var o=N.keys(e);s=o.length}C(e,function(u,a,f){a=o?o[--s]:--s,i?n=t.call(r,n,e[a],a,f):(n=e[a],i=!0)});if(!i)throw new TypeError(k);return n},N.find=N.detect=function(e,t,n){var r;return L(e,function(e,i,s){if(t.call(n,e,i,s))return r=e,!0}),r},N.filter=N.select=function(e,t,n){var r=[];return e==null?r:g&&e.filter===g?e.filter(t,n):(C(e,function(e,i,s){t.call(n,e,i,s)&&(r[r.length]=e)}),r)},N.reject=function(e,t,n){return N.filter(e,function(e,r,i){return!t.call(n,e,r,i)},n)},N.every=N.all=function(e,t,n){t||(t=N.identity);var r=!0;return e==null?r:y&&e.every===y?e.every(t,n):(C(e,function(e,s,o){if(!(r=r&&t.call(n,e,s,o)))return i}),!!r)};var L=N.some=N.any=function(e,t,n){t||(t=N.identity);var r=!1;return e==null?r:b&&e.some===b?e.some(t,n):(C(e,function(e,s,o){if(r||(r=t.call(n,e,s,o)))return i}),!!r)};N.contains=N.include=function(e,t){return e==null?!1:w&&e.indexOf===w?e.indexOf(t)!=-1:L(e,function(e){return e===t})},N.invoke=function(e,t){var n=f.call(arguments,2),r=N.isFunction(t);return N.map(e,function(e){return(r?t:e[t]).apply(e,n)})},N.pluck=function(e,t){return N.map(e,function(e){return e[t]})},N.where=function(e,t,n){return N.isEmpty(t)?n?null:[]:N[n?"find":"filter"](e,function(e){for(var n in t)if(t[n]!==e[n])return!1;return!0})},N.findWhere=function(e,t){return N.where(e,t,!0)},N.max=function(e,t,n){if(!t&&N.isArray(e)&&e[0]===+e[0]&&e.length<65535)return Math.max.apply(Math,e);if(!t&&N.isEmpty(e))return-Infinity;var r={computed:-Infinity,value:-Infinity};return C(e,function(e,i,s){var o=t?t.call(n,e,i,s):e;o>=r.computed&&(r={value:e,computed:o})}),r.value},N.min=function(e,t,n){if(!t&&N.isArray(e)&&e[0]===+e[0]&&e.length<65535)return Math.min.apply(Math,e);if(!t&&N.isEmpty(e))return Infinity;var r={computed:Infinity,value:Infinity};return C(e,function(e,i,s){var o=t?t.call(n,e,i,s):e;or||n===void 0)return 1;if(n>>1;n.call(r,e[u])=0})})},N.difference=function(e){var t=l.apply(s,f.call(arguments,1));return N.filter(e,function(e){return!N.contains(t,e)})},N.zip=function(){var e=f.call(arguments),t=N.max(N.pluck(e,"length")),n=new Array(t);for(var r=0;r=0;n--)t=[e[n].apply(this,t)];return t[0]}},N.after=function(e,t){return e<=0?t():function(){if(--e<1)return t.apply(this,arguments)}},N.keys=x||function(e){if(e!==Object(e))throw new TypeError("Invalid object");var t=[];for(var n in e)N.has(e,n)&&(t[t.length]=n);return t},N.values=function(e){var t=[];for(var n in e)N.has(e,n)&&t.push(e[n]);return t},N.pairs=function(e){var t=[];for(var n in e)N.has(e,n)&&t.push([n,e[n]]);return t},N.invert=function(e){var t={};for(var n in e)N.has(e,n)&&(t[e[n]]=n);return t},N.functions=N.methods=function(e){var t=[];for(var n in e)N.isFunction(e[n])&&t.push(n);return t.sort()},N.extend=function(e){return C(f.call(arguments,1),function(t){if(t)for(var n in t)e[n]=t[n]}),e},N.pick=function(e){var t={},n=l.apply(s,f.call(arguments,1));return C(n,function(n){n in e&&(t[n]=e[n])}),t},N.omit=function(e){var t={},n=l.apply(s,f.call(arguments,1));for(var r in e)N.contains(n,r)||(t[r]=e[r]);return t},N.defaults=function(e){return C(f.call(arguments,1),function(t){if(t)for(var n in t)e[n]==null&&(e[n]=t[n])}),e},N.clone=function(e){return N.isObject(e)?N.isArray(e)?e.slice():N.extend({},e):e},N.tap=function(e,t){return t(e),e};var _=function(e,t,n,r){if(e===t)return e!==0||1/e==1/t;if(e==null||t==null)return e===t;e instanceof N&&(e=e._wrapped),t instanceof N&&(t=t._wrapped);var i=c.call(e);if(i!=c.call(t))return!1;switch(i){case"[object String]":return e==String(t);case"[object Number]":return e!=+e?t!=+t:e==0?1/e==1/t:e==+t;case"[object Date]":case"[object Boolean]":return+e==+t;case"[object RegExp]":return e.source==t.source&&e.global==t.global&&e.multiline==t.multiline&&e.ignoreCase==t.ignoreCase}if(typeof e!="object"||typeof t!="object")return!1;var s=n.length;while(s--)if(n[s]==e)return r[s]==t;n.push(e),r.push(t);var o=0,u=!0;if(i=="[object Array]"){o=e.length,u=o==t.length;if(u)while(o--)if(!(u=_(e[o],t[o],n,r)))break}else{var a=e.constructor,f=t.constructor;if(a!==f&&!(N.isFunction(a)&&a instanceof a&&N.isFunction(f)&&f instanceof f))return!1;for(var l in e)if(N.has(e,l)){o++;if(!(u=N.has(t,l)&&_(e[l],t[l],n,r)))break}if(u){for(l in t)if(N.has(t,l)&&!(o--))break;u=!o}}return n.pop(),r.pop(),u};N.isEqual=function(e,t){return _(e,t,[],[])},N.isEmpty=function(e){if(e==null)return!0;if(N.isArray(e)||N.isString(e))return e.length===0;for(var t in e)if(N.has(e,t))return!1;return!0},N.isElement=function(e){return!!e&&e.nodeType===1},N.isArray=S||function(e){return c.call(e)=="[object Array]"},N.isObject=function(e){return e===Object(e)},C(["Arguments","Function","String","Number","Date","RegExp"],function(e){N["is"+e]=function(t){return c.call(t)=="[object "+e+"]"}}),N.isArguments(arguments)||(N.isArguments=function(e){return!!e&&!!N.has(e,"callee")}),typeof /./!="function"&&(N.isFunction=function(e){return typeof e=="function"}),N.isFinite=function(e){return isFinite(e)&&!isNaN(parseFloat(e))},N.isNaN=function(e){return N.isNumber(e)&&e!=+e},N.isBoolean=function(e){return e===!0||e===!1||c.call(e)=="[object Boolean]"},N.isNull=function(e){return e===null},N.isUndefined=function(e){return e===void 0},N.has=function(e,t){return h.call(e,t)},N.noConflict=function(){return e._=r,this},N.identity=function(e){return e},N.times=function(e,t,n){var r=Array(e);for(var i=0;i":">",'"':""","'":"'","/":"/"}};D.unescape=N.invert(D.escape);var P={escape:new RegExp("["+N.keys(D.escape).join("")+"]","g"),unescape:new RegExp("("+N.keys(D.unescape).join("|")+")","g")};N.each(["escape","unescape"],function(e){N[e]=function(t){return t==null?"":(""+t).replace(P[e],function(t){return D[e][t]})}}),N.result=function(e,t){if(e==null)return null;var n=e[t];return N.isFunction(n)?n.call(e):n},N.mixin=function(e){C(N.functions(e),function(t){var n=N[t]=e[t];N.prototype[t]=function(){var e=[this._wrapped];return a.apply(e,arguments),I.call(this,n.apply(N,e))}})};var H=0;N.uniqueId=function(e){var t=++H+"";return e?e+t:t},N.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var B=/(.)^/,j={"'":"'","\\":"\\","\r":"r","\n":"n"," ":"t","\u2028":"u2028","\u2029":"u2029"},F=/\\|'|\r|\n|\t|\u2028|\u2029/g;N.template=function(e,t,n){var r;n=N.defaults({},n,N.templateSettings);var i=new RegExp([(n.escape||B).source,(n.interpolate||B).source,(n.evaluate||B).source].join("|")+"|$","g"),s=0,o="__p+='";e.replace(i,function(t,n,r,i,u){return o+=e.slice(s,u).replace(F,function(e){return"\\"+j[e]}),n&&(o+="'+\n((__t=("+n+"))==null?'':_.escape(__t))+\n'"),r&&(o+="'+\n((__t=("+r+"))==null?'':__t)+\n'"),i&&(o+="';\n"+i+"\n__p+='"),s=u+t.length,t}),o+="';\n",n.variable||(o="with(obj||{}){\n"+o+"}\n"),o="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+o+"return __p;\n";try{r=new Function(n.variable||"obj","_",o)}catch(u){throw u.source=o,u}if(t)return r(t,N);var a=function(e){return r.call(this,e,N)};return a.source="function("+(n.variable||"obj")+"){\n"+o+"}",a},N.chain=function(e){return N(e).chain()};var I=function(e){return this._chain?N(e).chain():e};N.mixin(N),C(["pop","push","reverse","shift","sort","splice","unshift"],function(e){var t=s[e];N.prototype[e]=function(){var n=this._wrapped;return t.apply(n,arguments),(e=="shift"||e=="splice")&&n.length===0&&delete n[0],I.call(this,n)}}),C(["concat","join","slice"],function(e){var t=s[e];N.prototype[e]=function(){return I.call(this,t.apply(this._wrapped,arguments))}}),N.extend(N.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}})}).call(this)},{}],2:[function(e,t,n){var r=e("underscore"),i={E001:"Bad option: '{a}'.",E002:"Bad option value.",E003:"Expected a JSON value.",E004:"Input is neither a string nor an array of strings.",E005:"Input is empty.",E006:"Unexpected early end of program.",E007:'Missing "use strict" statement.',E008:"Strict violation.",E009:"Option 'validthis' can't be used in a global scope.",E010:"'with' is not allowed in strict mode.",E011:"const '{a}' has already been declared.",E012:"const '{a}' is initialized to 'undefined'.",E013:"Attempting to override '{a}' which is a constant.",E014:"A regular expression literal can be confused with '/='.",E015:"Unclosed regular expression.",E016:"Invalid regular expression.",E017:"Unclosed comment.",E018:"Unbegun comment.",E019:"Unmatched '{a}'.",E020:"Expected '{a}' to match '{b}' from line {c} and instead saw '{d}'.",E021:"Expected '{a}' and instead saw '{b}'.",E022:"Line breaking error '{a}'.",E023:"Missing '{a}'.",E024:"Unexpected '{a}'.",E025:"Missing ':' on a case clause.",E026:"Missing '}' to match '{' from line {a}.",E027:"Missing ']' to match '[' form line {a}.",E028:"Illegal comma.",E029:"Unclosed string.",E030:"Expected an identifier and instead saw '{a}'.",E031:"Bad assignment.",E032:"Expected a small integer or 'false' and instead saw '{a}'.",E033:"Expected an operator and instead saw '{a}'.",E034:"get/set are ES5 features.",E035:"Missing property name.",E036:"Expected to see a statement and instead saw a block.",E037:null,E038:null,E039:"Function declarations are not invocable. Wrap the whole function invocation in parens.",E040:"Each value should have its own case label.",E041:"Unrecoverable syntax error.",E042:"Stopping.",E043:"Too many errors.",E044:"'{a}' is already defined and can't be redefined.",E045:"Invalid for each loop.",E046:"A yield statement shall be within a generator function (with syntax: `function*`)",E047:"A generator function shall contain a yield statement.",E048:"Let declaration not directly within block.",E049:"A {a} cannot be named '{b}'.",E050:"Mozilla requires the yield expression to be parenthesized here.",E051:"Regular parameters cannot come after default parameters."},s={W001:"'hasOwnProperty' is a really bad name.",W002:"Value of '{a}' may be overwritten in IE 8 and earlier.",W003:"'{a}' was used before it was defined.",W004:"'{a}' is already defined.",W005:"A dot following a number can be confused with a decimal point.",W006:"Confusing minuses.",W007:"Confusing pluses.",W008:"A leading decimal point can be confused with a dot: '{a}'.",W009:"The array literal notation [] is preferrable.",W010:"The object literal notation {} is preferrable.",W011:"Unexpected space after '{a}'.",W012:"Unexpected space before '{a}'.",W013:"Missing space after '{a}'.",W014:"Bad line breaking before '{a}'.",W015:"Expected '{a}' to have an indentation at {b} instead at {c}.",W016:"Unexpected use of '{a}'.",W017:"Bad operand.",W018:"Confusing use of '{a}'.",W019:"Use the isNaN function to compare with NaN.",W020:"Read only.",W021:"'{a}' is a function.",W022:"Do not assign to the exception parameter.",W023:"Expected an identifier in an assignment and instead saw a function invocation.",W024:"Expected an identifier and instead saw '{a}' (a reserved word).",W025:"Missing name in function declaration.",W026:"Inner functions should be listed at the top of the outer function.",W027:"Unreachable '{a}' after '{b}'.",W028:"Label '{a}' on {b} statement.",W030:"Expected an assignment or function call and instead saw an expression.",W031:"Do not use 'new' for side effects.",W032:"Unnecessary semicolon.",W033:"Missing semicolon.",W034:'Unnecessary directive "{a}".',W035:"Empty block.",W036:"Unexpected /*member '{a}'.",W037:"'{a}' is a statement label.",W038:"'{a}' used out of scope.",W039:"'{a}' is not allowed.",W040:"Possible strict violation.",W041:"Use '{a}' to compare with '{b}'.",W042:"Avoid EOL escaping.",W043:"Bad escaping of EOL. Use option multistr if needed.",W044:"Bad or unnecessary escaping.",W045:"Bad number '{a}'.",W046:"Don't use extra leading zeros '{a}'.",W047:"A trailing decimal point can be confused with a dot: '{a}'.",W048:"Unexpected control character in regular expression.",W049:"Unexpected escaped character '{a}' in regular expression.",W050:"JavaScript URL.",W051:"Variables should not be deleted.",W052:"Unexpected '{a}'.",W053:"Do not use {a} as a constructor.",W054:"The Function constructor is a form of eval.",W055:"A constructor name should start with an uppercase letter.",W056:"Bad constructor.",W057:"Weird construction. Is 'new' unnecessary?",W058:"Missing '()' invoking a constructor.",W059:"Avoid arguments.{a}.",W060:"document.write can be a form of eval.",W061:"eval can be harmful.",W062:"Wrap an immediate function invocation in parens to assist the reader in understanding that the expression is the result of a function, and not the function itself.",W063:"Math is not a function.",W064:"Missing 'new' prefix when invoking a constructor.",W065:"Missing radix parameter.",W066:"Implied eval. Consider passing a function instead of a string.",W067:"Bad invocation.",W068:"Wrapping non-IIFE function literals in parens is unnecessary.",W069:"['{a}'] is better written in dot notation.",W070:"Extra comma. (it breaks older versions of IE)",W071:"This function has too many statements. ({a})",W072:"This function has too many parameters. ({a})",W073:"Blocks are nested too deeply. ({a})",W074:"This function's cyclomatic complexity is too high. ({a})",W075:"Duplicate key '{a}'.",W076:"Unexpected parameter '{a}' in get {b} function.",W077:"Expected a single parameter in set {a} function.",W078:"Setter is defined without getter.",W079:"Redefinition of '{a}'.",W080:"It's not necessary to initialize '{a}' to 'undefined'.",W081:"Too many var statements.",W082:"Function declarations should not be placed in blocks. Use a function expression or move the statement to the top of the outer function.",W083:"Don't make functions within a loop.",W084:"Assignment in conditional expression",W085:"Don't use 'with'.",W086:"Expected a 'break' statement before '{a}'.",W087:"Forgotten 'debugger' statement?",W088:"Creating global 'for' variable. Should be 'for (var {a} ...'.",W089:"The body of a for in should be wrapped in an if statement to filter unwanted properties from the prototype.",W090:"'{a}' is not a statement label.",W091:"'{a}' is out of scope.",W092:"Wrap the /regexp/ literal in parens to disambiguate the slash operator.",W093:"Did you mean to return a conditional instead of an assignment?",W094:"Unexpected comma.",W095:"Expected a string and instead saw {a}.",W096:"The '{a}' key may produce unexpected results.",W097:'Use the function form of "use strict".',W098:"'{a}' is defined but never used.",W099:"Mixed spaces and tabs.",W100:"This character may get silently deleted by one or more browsers.",W101:"Line is too long.",W102:"Trailing whitespace.",W103:"The '{a}' property is deprecated.",W104:"'{a}' is only available in JavaScript 1.7.",W105:"Unexpected {a} in '{b}'.",W106:"Identifier '{a}' is not in camel case.",W107:"Script URL.",W108:"Strings must use doublequote.",W109:"Strings must use singlequote.",W110:"Mixed double and single quotes.",W112:"Unclosed string.",W113:"Control character in string: {a}.",W114:"Avoid {a}.",W115:"Octal literals are not allowed in strict mode.",W116:"Expected '{a}' and instead saw '{b}'.",W117:"'{a}' is not defined.",W118:"'{a}' is only available in Mozilla JavaScript extensions (use moz option).",W119:"'{a}' is only available in ES6 (use esnext option).",W120:"You might be leaking a variable ({a}) here."},o={I001:"Comma warnings can be turned off with 'laxcomma'.",I002:"Reserved words as properties can be used under the 'es5' option.",I003:"ES5 option is now set per default"};n.errors={},n.warnings={},n.info={},r.each(i,function(e,t){n.errors[t]={code:t,desc:e}}),r.each(s,function(e,t){n.warnings[t]={code:t,desc:e}}),r.each(o,function(e,t){n.info[t]={code:t,desc:e}})},{underscore:1}],3:[function(e,t,n){n.reservedVars={arguments:!1,NaN:!1},n.ecmaIdentifiers={Array:!1,Boolean:!1,Date:!1,decodeURI:!1,decodeURIComponent:!1,encodeURI:!1,encodeURIComponent:!1,Error:!1,eval:!1,EvalError:!1,Function:!1,hasOwnProperty:!1,isFinite:!1,isNaN:!1,JSON:!1,Math:!1,Map:!1,Number:!1,Object:!1,parseInt:!1,parseFloat:!1,RangeError:!1,ReferenceError:!1,RegExp:!1,Set:!1,String:!1,SyntaxError:!1,TypeError:!1,URIError:!1,WeakMap:!1},n.browser={ArrayBuffer:!1,ArrayBufferView:!1,Audio:!1,Blob:!1,addEventListener:!1,applicationCache:!1,atob:!1,blur:!1,btoa:!1,clearInterval:!1,clearTimeout:!1,close:!1,closed:!1,CustomEvent:!1,DataView:!1,DOMParser:!1,defaultStatus:!1,document:!1,Element:!1,ElementTimeControl:!1,event:!1,FileReader:!1,Float32Array:!1,Float64Array:!1,FormData:!1,focus:!1,frames:!1,getComputedStyle:!1,HTMLElement:!1,HTMLAnchorElement:!1,HTMLBaseElement:!1,HTMLBlockquoteElement:!1,HTMLBodyElement:!1,HTMLBRElement:!1,HTMLButtonElement:!1,HTMLCanvasElement:!1,HTMLDirectoryElement:!1,HTMLDivElement:!1,HTMLDListElement:!1,HTMLFieldSetElement:!1,HTMLFontElement:!1,HTMLFormElement:!1,HTMLFrameElement:!1,HTMLFrameSetElement:!1,HTMLHeadElement:!1,HTMLHeadingElement:!1,HTMLHRElement:!1,HTMLHtmlElement:!1,HTMLIFrameElement:!1,HTMLImageElement:!1,HTMLInputElement:!1,HTMLIsIndexElement:!1,HTMLLabelElement:!1,HTMLLayerElement:!1,HTMLLegendElement:!1,HTMLLIElement:!1,HTMLLinkElement:!1,HTMLMapElement:!1,HTMLMenuElement:!1,HTMLMetaElement:!1,HTMLModElement:!1,HTMLObjectElement:!1,HTMLOListElement:!1,HTMLOptGroupElement:!1,HTMLOptionElement:!1,HTMLParagraphElement:!1,HTMLParamElement:!1,HTMLPreElement:!1,HTMLQuoteElement:!1,HTMLScriptElement:!1,HTMLSelectElement:!1,HTMLStyleElement:!1,HTMLTableCaptionElement:!1,HTMLTableCellElement:!1,HTMLTableColElement:!1,HTMLTableElement:!1,HTMLTableRowElement:!1,HTMLTableSectionElement:!1,HTMLTextAreaElement:!1,HTMLTitleElement:!1,HTMLUListElement:!1,HTMLVideoElement:!1,history:!1,Int16Array:!1,Int32Array:!1,Int8Array:!1,Image:!1,length:!1,localStorage:!1,location:!1,MessageChannel:!1,MessageEvent:!1,MessagePort:!1,MouseEvent:!1,moveBy:!1,moveTo:!1,MutationObserver:!1,name:!1,Node:!1,NodeFilter:!1,navigator:!1,onbeforeunload:!0,onblur:!0,onerror:!0,onfocus:!0,onload:!0,onresize:!0,onunload:!0,open:!1,openDatabase:!1,opener:!1,Option:!1,parent:!1,print:!1,removeEventListener:!1,resizeBy:!1,resizeTo:!1,screen:!1,scroll:!1,scrollBy:!1,scrollTo:!1,sessionStorage:!1,setInterval:!1,setTimeout:!1,SharedWorker:!1,status:!1,SVGAElement:!1,SVGAltGlyphDefElement:!1,SVGAltGlyphElement:!1,SVGAltGlyphItemElement:!1,SVGAngle:!1,SVGAnimateColorElement:!1,SVGAnimateElement:!1,SVGAnimateMotionElement:!1,SVGAnimateTransformElement:!1,SVGAnimatedAngle:!1,SVGAnimatedBoolean:!1,SVGAnimatedEnumeration:!1,SVGAnimatedInteger:!1,SVGAnimatedLength:!1,SVGAnimatedLengthList:!1,SVGAnimatedNumber:!1,SVGAnimatedNumberList:!1,SVGAnimatedPathData:!1,SVGAnimatedPoints:!1,SVGAnimatedPreserveAspectRatio:!1,SVGAnimatedRect:!1,SVGAnimatedString:!1,SVGAnimatedTransformList:!1,SVGAnimationElement:!1,SVGCSSRule:!1,SVGCircleElement:!1,SVGClipPathElement:!1,SVGColor:!1,SVGColorProfileElement:!1,SVGColorProfileRule:!1,SVGComponentTransferFunctionElement:!1,SVGCursorElement:!1,SVGDefsElement:!1,SVGDescElement:!1,SVGDocument:!1,SVGElement:!1,SVGElementInstance:!1,SVGElementInstanceList:!1,SVGEllipseElement:!1,SVGExternalResourcesRequired:!1,SVGFEBlendElement:!1,SVGFEColorMatrixElement:!1,SVGFEComponentTransferElement:!1,SVGFECompositeElement:!1,SVGFEConvolveMatrixElement:!1,SVGFEDiffuseLightingElement:!1,SVGFEDisplacementMapElement:!1,SVGFEDistantLightElement:!1,SVGFEFloodElement:!1,SVGFEFuncAElement:!1,SVGFEFuncBElement:!1,SVGFEFuncGElement:!1,SVGFEFuncRElement:!1,SVGFEGaussianBlurElement:!1,SVGFEImageElement:!1,SVGFEMergeElement:!1,SVGFEMergeNodeElement:!1,SVGFEMorphologyElement:!1,SVGFEOffsetElement:!1,SVGFEPointLightElement:!1,SVGFESpecularLightingElement:!1,SVGFESpotLightElement:!1,SVGFETileElement:!1,SVGFETurbulenceElement:!1,SVGFilterElement:!1,SVGFilterPrimitiveStandardAttributes:!1,SVGFitToViewBox:!1,SVGFontElement:!1,SVGFontFaceElement:!1,SVGFontFaceFormatElement:!1,SVGFontFaceNameElement:!1,SVGFontFaceSrcElement:!1,SVGFontFaceUriElement:!1,SVGForeignObjectElement:!1,SVGGElement:!1,SVGGlyphElement:!1,SVGGlyphRefElement:!1,SVGGradientElement:!1,SVGHKernElement:!1,SVGICCColor:!1,SVGImageElement:!1,SVGLangSpace:!1,SVGLength:!1,SVGLengthList:!1,SVGLineElement:!1,SVGLinearGradientElement:!1,SVGLocatable:!1,SVGMPathElement:!1,SVGMarkerElement:!1,SVGMaskElement:!1,SVGMatrix:!1,SVGMetadataElement:!1,SVGMissingGlyphElement:!1,SVGNumber:!1,SVGNumberList:!1,SVGPaint:!1,SVGPathElement:!1,SVGPathSeg:!1,SVGPathSegArcAbs:!1,SVGPathSegArcRel:!1,SVGPathSegClosePath:!1,SVGPathSegCurvetoCubicAbs:!1,SVGPathSegCurvetoCubicRel:!1,SVGPathSegCurvetoCubicSmoothAbs:!1,SVGPathSegCurvetoCubicSmoothRel:!1,SVGPathSegCurvetoQuadraticAbs:!1,SVGPathSegCurvetoQuadraticRel:!1,SVGPathSegCurvetoQuadraticSmoothAbs:!1,SVGPathSegCurvetoQuadraticSmoothRel:!1,SVGPathSegLinetoAbs:!1,SVGPathSegLinetoHorizontalAbs:!1,SVGPathSegLinetoHorizontalRel:!1,SVGPathSegLinetoRel:!1,SVGPathSegLinetoVerticalAbs:!1,SVGPathSegLinetoVerticalRel:!1,SVGPathSegList:!1,SVGPathSegMovetoAbs:!1,SVGPathSegMovetoRel:!1,SVGPatternElement:!1,SVGPoint:!1,SVGPointList:!1,SVGPolygonElement:!1,SVGPolylineElement:!1,SVGPreserveAspectRatio:!1,SVGRadialGradientElement:!1,SVGRect:!1,SVGRectElement:!1,SVGRenderingIntent:!1,SVGSVGElement:!1,SVGScriptElement:!1,SVGSetElement:!1,SVGStopElement:!1,SVGStringList:!1,SVGStylable:!1,SVGStyleElement:!1,SVGSwitchElement:!1,SVGSymbolElement:!1,SVGTRefElement:!1,SVGTSpanElement:!1,SVGTests:!1,SVGTextContentElement:!1,SVGTextElement:!1,SVGTextPathElement:!1,SVGTextPositioningElement:!1,SVGTitleElement:!1,SVGTransform:!1,SVGTransformList:!1,SVGTransformable:!1,SVGURIReference:!1,SVGUnitTypes:!1,SVGUseElement:!1,SVGVKernElement:!1,SVGViewElement:!1,SVGViewSpec:!1,SVGZoomAndPan:!1,TimeEvent:!1,top:!1,Uint16Array:!1,Uint32Array:!1,Uint8Array:!1,Uint8ClampedArray:!1,WebSocket:!1,window:!1,Worker:!1,XMLHttpRequest:!1,XMLSerializer:!1,XPathEvaluator:!1,XPathException:!1,XPathExpression:!1,XPathNamespace:!1,XPathNSResolver:!1,XPathResult:!1},n.devel={alert:!1,confirm:!1,console:!1,Debug:!1,opera:!1,prompt:!1},n.worker={importScripts:!0,postMessage:!0,self:!0},n.nonstandard={escape:!1,unescape:!1},n.couch={require:!1,respond:!1,getRow:!1,emit:!1,send:!1,start:!1,sum:!1,log:!1,exports:!1,module:!1,provides:!1},n.node={__filename:!1,__dirname:!1,Buffer:!1,DataView:!1,console:!1,exports:!0,GLOBAL:!1,global:!1,module:!1,process:!1,require:!1,setTimeout:!1,clearTimeout:!1,setInterval:!1,clearInterval:!1,setImmediate:!1,clearImmediate:!1},n.phantom={phantom:!0,require:!0,WebPage:!0},n.rhino={defineClass:!1,deserialize:!1,gc:!1,help:!1,importPackage:!1,java:!1,load:!1,loadClass:!1,print:!1,quit:!1,readFile:!1,readUrl:!1,runCommand:!1,seal:!1,serialize:!1,spawn:!1,sync:!1,toint32:!1,version:!1},n.shelljs={target:!1,echo:!1,exit:!1,cd:!1,pwd:!1,ls:!1,find:!1,cp:!1,rm:!1,mv:!1,mkdir:!1,test:!1,cat:!1,sed:!1,grep:!1,which:!1,dirs:!1,pushd:!1,popd:!1,env:!1,exec:!1,chmod:!1,config:!1,error:!1,tempdir:!1},n.wsh={ActiveXObject:!0,Enumerator:!0,GetObject:!0,ScriptEngine:!0,ScriptEngineBuildVersion:!0,ScriptEngineMajorVersion:!0,ScriptEngineMinorVersion:!0,VBArray:!0,WSH:!0,WScript:!0,XDomainRequest:!0},n.dojo={dojo:!1,dijit:!1,dojox:!1,define:!1,require:!1},n.jquery={$:!1,jQuery:!1},n.mootools={$:!1,$$:!1,Asset:!1,Browser:!1,Chain:!1,Class:!1,Color:!1,Cookie:!1,Core:!1,Document:!1,DomReady:!1,DOMEvent:!1,DOMReady:!1,Drag:!1,Element:!1,Elements:!1,Event:!1,Events:!1,Fx:!1,Group:!1,Hash:!1,HtmlTable:!1,Iframe:!1,IframeShim:!1,InputValidator:!1,instanceOf:!1,Keyboard:!1,Locale:!1,Mask:!1,MooTools:!1,Native:!1,Options:!1,OverText:!1,Request:!1,Scroller:!1,Slick:!1,Slider:!1,Sortables:!1,Spinner:!1,Swiff:!1,Tips:!1,Type:!1,typeOf:!1,URI:!1,Window:!1},n.prototypejs={$:!1,$$:!1,$A:!1,$F:!1,$H:!1,$R:!1,$break:!1,$continue:!1,$w:!1,Abstract:!1,Ajax:!1,Class:!1,Enumerable:!1,Element:!1,Event:!1,Field:!1,Form:!1,Hash:!1,Insertion:!1,ObjectRange:!1,PeriodicalExecuter:!1,Position:!1,Prototype:!1,Selector:!1,Template:!1,Toggle:!1,Try:!1,Autocompleter:!1,Builder:!1,Control:!1,Draggable:!1,Draggables:!1,Droppables:!1,Effect:!1,Sortable:!1,SortableObserver:!1,Sound:!1,Scriptaculous:!1},n.yui={YUI:!1,Y:!1,YUI_config:!1}},{}],n4bKNg:[function(e,t,n){var r=e("underscore"),i=e("events"),s=e("../shared/vars.js"),o=e("../shared/messages.js"),u=e("./lex.js").Lexer,a=e("./reg.js"),f=e("./state.js").state,l=e("./style.js"),c=e("console-browserify"),h=function(){function e(e,t){return e=e.trim(),/^[+-]W\d{3}$/g.test(e)?!0:Ot[e]===undefined&&At[e]===undefined&&t.type!=="jslint"?(E("E001",t,e),!1):!0}function t(e){return Object.prototype.toString.call(e)==="[object String]"}function n(e,t){return e?!e.identifier||e.value!==t?!1:!0:!1}function c(e){if(!e.reserved)return!1;var t=e.meta;if(t&&t.isFutureReservedWord&&f.option.inES5()){if(!t.es5)return!1;if(t.strictOnly&&!f.option.strict&&!f.directive["use strict"])return!1;if(e.isProperty)return!1}return!0}function p(e,t){return e.replace(/\{([^{}]*)\}/g,function(e,n){var r=t[n];return typeof r=="string"||typeof r=="number"?r:e})}function d(e,t){var n;for(n in t)r.has(t,n)&&!r.has(h.blacklist,n)&&(e[n]=t[n])}function v(){Object.keys(h.blacklist).forEach(function(e){delete $t[e]})}function m(){f.option.couch&&d($t,s.couch),f.option.rhino&&d($t,s.rhino),f.option.shelljs&&(d($t,s.shelljs),d($t,s.node)),f.option.phantom&&d($t,s.phantom),f.option.prototypejs&&d($t,s.prototypejs),f.option.node&&d($t,s.node),f.option.devel&&d($t,s.devel),f.option.dojo&&d($t,s.dojo),f.option.browser&&d($t,s.browser),f.option.nonstandard&&d($t,s.nonstandard),f.option.jquery&&d($t,s.jquery),f.option.mootools&&d($t,s.mootools),f.option.worker&&d($t,s.worker),f.option.wsh&&d($t,s.wsh),f.option.globalstrict&&f.option.strict!==!1&&(f.option.strict=!0),f.option.yui&&d($t,s.yui),f.option.inMoz=function(e){return f.option.moz},f.option.inESNext=function(e){return f.option.moz||f.option.esnext},f.option.inES5=function(){return!f.option.es3},f.option.inES3=function(e){return e?!f.option.moz&&!f.option.esnext&&f.option.es3:f.option.es3}}function g(e,t,n){var r=Math.floor(t/f.lines.length*100),i=o.errors[e].desc;throw{name:"JSHintError",line:t,character:n,message:i+" ("+r+"% scanned).",raw:i,code:e}}function y(e,t,n,r){return h.undefs.push([e,t,n,r])}function b(e,t,n,r,i,s){var u,a,l,c;if(/^W\d{3}$/.test(e)){if(f.ignored[e])return;c=o.warnings[e]}else/E\d{3}/.test(e)?c=o.errors[e]:/I\d{3}/.test(e)&&(c=o.info[e]);return t=t||f.tokens.next,t.id==="(end)"&&(t=f.tokens.curr),a=t.line||0,u=t.from||0,l={id:"(error)",raw:c.desc,code:c.code,evidence:f.lines[a-1]||"",line:a,character:u,scope:h.scope,a:n,b:r,c:i,d:s},l.reason=p(c.desc,l),h.errors.push(l),f.option.passfail&&g("E042",a,u),Yt+=1,Yt>=f.option.maxerr&&g("E043",a,u),l}function w(e,t,n,r,i,s,o){return b(e,{line:t,from:n},r,i,s,o)}function E(e,t,n,r,i,s){b(e,t,n,r,i,s)}function S(e,t,n,r,i,s,o){return E(e,{line:t,from:n},r,i,s,o)}function x(e,t){var n;return n={id:"(internal)",elem:e,value:t},h.internals.push(n),n}function T(e,t,n,i){t==="exception"&&r.has(Bt["(context)"],e)&&Bt[e]!==!0&&!f.option.node&&b("W002",f.tokens.next,e),r.has(Bt,e)&&!Bt["(global)"]&&(Bt[e]===!0?f.option.latedef&&(f.option.latedef===!0&&r.contains([Bt[e],t],"unction")||!r.contains([Bt[e],t],"unction"))&&b("W003",f.tokens.next,e):(!f.option.shadow&&t!=="exception"||Bt["(blockscope)"].getlabel(e))&&b("W004",f.tokens.next,e)),Bt["(blockscope)"]&&Bt["(blockscope)"].current.has(e)&&E("E044",f.tokens.next,e),i?Bt["(blockscope)"].current.add(e,t,f.tokens.curr):(Bt[e]=t,n&&(Bt["(tokens)"][e]=n),Bt["(global)"]?(Ft[e]=Bt,r.has(It,e)&&(f.option.latedef&&(f.option.latedef===!0&&r.contains([Bt[e],t],"unction")||!r.contains([Bt[e],t],"unction"))&&b("W003",f.tokens.next,e),delete It[e])):Jt[e]=Bt)}function N(){var t=f.tokens.next,n=t.body.match(/(-\s+)?[^\s,]+(?:\s*:\s*(-\s+)?[^\s,]+)?/g),i={};if(t.type==="globals"){n.forEach(function(e){e=e.split(":");var t=(e[0]||"").trim(),n=(e[1]||"").trim();t.charAt(0)==="-"?(t=t.slice(1),n=!1,h.blacklist[t]=t,v()):i[t]=n==="true"}),d($t,i);for(var s in i)r.has(i,s)&&(Dt[s]=t)}t.type==="exported"&&n.forEach(function(e){Pt[e]=!0}),t.type==="members"&&(Xt=Xt||{},n.forEach(function(e){var t=e.charAt(0),n=e.charAt(e.length-1);t===n&&(t==='"'||t==="'")&&(e=e.substr(1,e.length-2).replace("\\b","\b").replace("\\t"," ").replace("\\n","\n").replace("\\v"," ").replace("\\f","\f").replace("\\r","\r").replace("\\\\","\\").replace('\\"','"')),Xt[e]=!1}));var o=["maxstatements","maxparams","maxdepth","maxcomplexity","maxerr","maxlen","indent"];if(t.type==="jshint"||t.type==="jslint")n.forEach(function(n){n=n.split(":");var r=(n[0]||"").trim(),i=(n[1]||"").trim();if(!e(r,t))return;if(o.indexOf(r)>=0){if(i!=="false"){i=+i;if(typeof i!="number"||!isFinite(i)||i<=0||Math.floor(i)!==i){E("E032",t,n[1].trim());return}r==="indent"&&(f.option["(explicitIndent)"]=!0),f.option[r]=i}else r==="indent"?f.option["(explicitIndent)"]=!1:f.option[r]=!1;return}if(r==="validthis"){Bt["(global)"]?E("E009"):i==="true"||i==="false"?f.option.validthis=i==="true":E("E002",t);return}if(r==="quotmark"){switch(i){case"true":case"false":f.option.quotmark=i==="true";break;case"double":case"single":f.option.quotmark=i;break;default:E("E002",t)}return}if(r==="unused"){switch(i){case"true":f.option.unused=!0;break;case"false":f.option.unused=!1;break;case"vars":case"strict":f.option.unused=i;break;default:E("E002",t)}return}if(r==="latedef"){switch(i){case"true":f.option.latedef=!0;break;case"false":f.option.latedef=!1;break;case"nofunc":f.option.latedef="nofunc";break;default:E("E002",t)}return}var s=/^([+-])(W\d{3})$/g.exec(r);if(s){f.ignored[s[2]]=s[1]==="-";return}var u;if(i==="true"||i==="false"){t.type==="jslint"?(u=_t[r]||r,f.option[u]=i==="true",Mt[u]!==undefined&&(f.option[u]=!f.option[u])):f.option[r]=i==="true",r==="newcap"&&(f.option["(explicitNewcap)"]=!0);return}E("E002",t)}),m()}function C(e){var t=e||0,n=0,r;while(n<=t)r=Ut[n],r||(r=Ut[n]=zt.token()),n+=1;return r}function k(e,t){switch(f.tokens.curr.id){case"(number)":f.tokens.next.id==="."&&b("W005",f.tokens.curr);break;case"-":(f.tokens.next.id==="-"||f.tokens.next.id==="--")&&b("W006");break;case"+":(f.tokens.next.id==="+"||f.tokens.next.id==="++")&&b("W007")}if(f.tokens.curr.type==="(string)"||f.tokens.curr.identifier)Ct=f.tokens.curr.value;e&&f.tokens.next.id!==e&&(t?f.tokens.next.id==="(end)"?E("E019",t,t.id):E("E020",f.tokens.next,e,t.id,t.line,f.tokens.next.value):(f.tokens.next.type!=="(identifier)"||f.tokens.next.value!==e)&&b("W116",f.tokens.next,e,f.tokens.next.value)),f.tokens.prev=f.tokens.curr,f.tokens.curr=f.tokens.next;for(;;){f.tokens.next=Ut.shift()||zt.token(),f.tokens.next||g("E041",f.tokens.curr.line);if(f.tokens.next.id==="(end)"||f.tokens.next.id==="(error)")return;f.tokens.next.check&&f.tokens.next.check();if(f.tokens.next.isSpecial)N();else if(f.tokens.next.id!=="(endline)")break}}function L(e){return e.infix||!e.identifier&&!!e.led}function A(){var e=f.tokens.curr,t=f.tokens.next;return t.id===";"||t.id==="}"||t.id===":"?!0:L(t)===L(e)||e.id==="yield"&&f.option.inMoz(!0)?e.line!==t.line:!1}function O(e,t){var n,r=!1,i=!1,s=!1;!t&&f.tokens.next.value==="let"&&C(0).value==="("&&(f.option.inMoz(!0)||b("W118",f.tokens.next,"let expressions"),s=!0,Bt["(blockscope)"].stack(),k("let"),k("("),f.syntax.let.fud.call(f.syntax.let.fud,!1),k(")")),f.tokens.next.id==="(end)"&&E("E006",f.tokens.curr),k(),t&&(Ct="anonymous",Bt["(verb)"]=f.tokens.curr.value);if(t===!0&&f.tokens.curr.fud)n=f.tokens.curr.fud();else{f.tokens.curr.nud?n=f.tokens.curr.nud():E("E030",f.tokens.curr,f.tokens.curr.id);while(e="a"&&t<="z"||t>="A"&&t<="Z")e.identifier=e.reserved=!0;return e}function X(e,t){var n=q(e,150);return W(n),n.nud=typeof t=="function"?t:function(){this.right=O(150),this.arity="unary";if(this.id==="++"||this.id==="--")f.option.plusplus?b("W016",this,this.id):this.right&&(!this.right.identifier||c(this.right))&&this.right.id!=="."&&this.right.id!=="["&&b("W017",this);return this},n}function V(e,t){var n=R(e);return n.type=e,n.nud=t,n}function $(e,t){var n=V(e,t);return n.identifier=!0,n.reserved=!0,n}function J(e,t){var n=V(e,t&&t.nud||function(){return this});return t=t||{},t.isFutureReservedWord=!0,n.value=e,n.identifier=!0,n.reserved=!0,n.meta=t,n}function K(e,t){return $(e,function(){return typeof t=="function"&&t(this),this})}function Q(e,t,n,r){var i=q(e,n);return W(i),i.infix=!0,i.led=function(i){return r||(H(f.tokens.prev,f.tokens.curr),P(f.tokens.curr,f.tokens.next)),e==="in"&&i.id==="!"&&b("W018",i,"!"),typeof t=="function"?t(i,this):(this.left=i,this.right=O(n),this)},i}function G(e){var t=q(e,42);return t.led=function(e){return f.option.inESNext()||b("W104",f.tokens.curr,"arrow function syntax (=>)"),H(f.tokens.prev,f.tokens.curr),P(f.tokens.curr,f.tokens.next),this.left=e,this.right=mt(undefined,undefined,!1,e),this},t}function Y(e,t){var r=q(e,100);return r.led=function(e){H(f.tokens.prev,f.tokens.curr),P(f.tokens.curr,f.tokens.next);var r=O(100);return n(e,"NaN")||n(r,"NaN")?b("W019",this):t&&t.apply(this,[e,r]),(!e||!r)&&g("E041",f.tokens.curr.line),e.id==="!"&&b("W018",e,"!"),r.id==="!"&&b("W018",r,"!"),this.left=e,this.right=r,this},r}function Z(e){return e&&(e.type==="(number)"&&+e.value===0||e.type==="(string)"&&e.value===""||e.type==="null"&&!f.option.eqnull||e.type==="true"||e.type==="false"||e.type==="undefined")}function et(e,t,n){var r=Q(e,typeof t=="function"?t:function(e,t){t.left=e;if(e){$t[e.value]===!1&&Jt[e.value]["(global)"]===!0?b("W020",e):e["function"]&&b("W021",e,e.value),Bt[e.value]==="const"&&E("E013",e,e.value);if(e.id===".")return e.left?e.left.value==="arguments"&&!f.directive["use strict"]&&b("E031",t):b("E031",t),t.right=O(10),t;if(e.id==="[")return f.tokens.curr.left.first?f.tokens.curr.left.first.forEach(function(e){Bt[e.value]==="const"&&E("E013",e,e.value)}):e.left?e.left.value==="arguments"&&!f.directive["use strict"]&&b("E031",t):b("E031",t),t.right=O(10),t;if(e.identifier&&!c(e))return Bt[e.value]==="exception"&&b("W022",e),t.right=O(10),t;e===f.syntax["function"]&&b("W023",f.tokens.curr)}E("E031",t)},n);return r.exps=!0,r.assign=!0,r}function tt(e,t,n){var r=q(e,n);return W(r),r.led=typeof t=="function"?t:function(e){return f.option.bitwise&&b("W016",this,this.id),this.left=e,this.right=O(n),this},r}function nt(e){return et(e,function(e,t){f.option.bitwise&&b("W016",t,t.id),P(f.tokens.prev,f.tokens.curr),P(f.tokens.curr,f.tokens.next);if(e)return e.id==="."||e.id==="["||e.identifier&&!c(e)?(O(10),t):(e===f.syntax["function"]&&b("W023",f.tokens.curr),t);E("E031",t)},20)}function rt(e){var t=q(e,150);return t.led=function(e){return f.option.plusplus?b("W016",this,this.id):(!e.identifier||c(e))&&e.id!=="."&&e.id!=="["&&b("W017",this),this.left=e,this},t}function it(e,t){if(!f.tokens.next.identifier)return;k();var n=f.tokens.curr,r=f.tokens.curr.value;return c(n)?t&&f.option.inES5()?r:e&&r==="undefined"?r:(t&&!kt.getCache("displayed:I002")&&(kt.setCache("displayed:I002",!0),b("I002")),b("W024",f.tokens.curr,f.tokens.curr.id),r):r}function st(e,t){var n=it(e,t);if(n)return n;f.tokens.curr.id==="function"&&f.tokens.next.id==="("?b("W025"):E("E030",f.tokens.next,f.tokens.next.value)}function ot(e){var t=0,n;if(f.tokens.next.id!==";"||Vt)return;for(;;){n=C(t);if(n.reach)return;if(n.id!=="(endline)"){if(n.id==="function"){if(!f.option.latedef)break;b("W026",n);break}b("W027",n,n.value,e);break}t+=1}}function ut(e){var t,n=Rt,i,s=Jt,o=f.tokens.next;if(o.id===";"){k(";");return}var u=c(o);u&&o.meta&&o.meta.isFutureReservedWord&&C().id===":"&&(b("W024",o,o.id),u=!1);if(r.has(["[","{"],o.value)&&on().isDestAssign){f.option.inESNext()||b("W104",f.tokens.curr,"destructuring expression"),t=wt(),t.forEach(function(e){y(Bt,"W117",e.token,e.id)}),k("="),Et(t,O(10,!0)),k(";");return}o.identifier&&!u&&C().id===":"&&(k(),k(":"),Jt=Object.create(s),T(o.value,"label"),!f.tokens.next.labelled&&f.tokens.next.value!=="{"&&b("W028",f.tokens.next,o.value,f.tokens.next.value),f.tokens.next.label=o.value,o=f.tokens.next);if(o.id==="{"){lt(!0,!0);return}return e||B(),i=O(0,!0),o.block||(!f.option.expr&&(!i||!i.exps)?b("W030",f.tokens.curr):f.option.nonew&&i&&i.left&&i.id==="("&&i.left.id==="new"&&b("W031",o),f.tokens.next.id!==";"?f.option.asi||(!f.option.lastsemic||f.tokens.next.id!=="}"||f.tokens.next.line!==f.tokens.curr.line)&&w("W033",f.tokens.curr.line,f.tokens.curr.character):(M(f.tokens.curr,f.tokens.next),k(";"),P(f.tokens.curr,f.tokens.next))),Rt=n,Jt=s,i}function at(e){var t=[],n;while(!f.tokens.next.reach&&f.tokens.next.id!=="(end)")f.tokens.next.id===";"?(n=C(),(!n||n.id!=="("&&n.id!=="[")&&b("W032"),k(";")):t.push(ut(e===f.tokens.next.line));return t}function ft(){var e,t,n;for(;;){if(f.tokens.next.id==="(string)"){t=C(0);if(t.id==="(endline)"){e=1;do n=C(e),e+=1;while(n.id==="(endline)");if(n.id!==";"){if(n.id!=="(string)"&&n.id!=="(number)"&&n.id!=="(regexp)"&&n.identifier!==!0&&n.id!=="}")break;b("W033",f.tokens.next)}else t=n}else if(t.id==="}")b("W033",t);else if(t.id!==";")break;B(),k(),f.directive[f.tokens.curr.value]&&b("W034",f.tokens.curr,f.tokens.curr.value),f.tokens.curr.value==="use strict"&&(f.option["(explicitNewcap)"]||(f.option.newcap=!0),f.option.undef=!0),f.directive[f.tokens.curr.value]=!0,t.id===";"&&k(";");continue}break}}function lt(e,t,n,i){var s,o=qt,u=Rt,a,l=Jt,c,h,p;qt=e;if(!e||!f.option.funcscope)Jt=Object.create(Jt);P(f.tokens.curr,f.tokens.next),c=f.tokens.next;var d=Bt["(metrics)"];d.nestedBlockDepth+=1,d.verifyMaxNestedBlockDepthPerFunction();if(f.tokens.next.id==="{"){k("{"),Bt["(blockscope)"].stack(),h=f.tokens.curr.line;if(f.tokens.next.id!=="}"){Rt+=f.option.indent;while(!e&&f.tokens.next.from>Rt)Rt+=f.option.indent;if(n){a={};for(p in f.directive)r.has(f.directive,p)&&(a[p]=f.directive[p]);ft(),f.option.strict&&Bt["(context)"]["(global)"]&&!a["use strict"]&&!f.directive["use strict"]&&b("E007")}s=at(h),d.statementCount+=s.length,n&&(f.directive=a),Rt-=f.option.indent,h!==f.tokens.next.line&&B()}else h!==f.tokens.next.line&&B();k("}",c),Bt["(blockscope)"].unstack(),Rt=u}else if(!e)if(n){a={},t&&!i&&!f.option.inMoz(!0)&&E("W118",f.tokens.curr,"function closure expressions");if(!t)for(p in f.directive)r.has(f.directive,p)&&(a[p]=f.directive[p]);O(10),f.option.strict&&Bt["(context)"]["(global)"]&&!a["use strict"]&&!f.directive["use strict"]&&b("E007")}else E("E021",f.tokens.next,"{",f.tokens.next.value);else Bt["(nolet)"]=!0,(!t||f.option.curly)&&b("W116",f.tokens.next,"{",f.tokens.next.value),Vt=!0,Rt+=f.option.indent,s=[ut(f.tokens.next.line===f.tokens.curr.line)],Rt-=f.option.indent,Vt=!1,delete Bt["(nolet)"];Bt["(verb)"]=null;if(!e||!f.option.funcscope)Jt=l;return qt=o,e&&f.option.noempty&&(!s||s.length===0)&&b("W035"),d.nestedBlockDepth-=1,s}function ct(e){Xt&&typeof Xt[e]!="boolean"&&b("W036",f.tokens.curr,e),typeof Wt[e]=="number"?Wt[e]+=1:Wt[e]=1}function ht(e){var t=e.value,n=e.line,r=It[t];typeof r=="function"&&(r=!1),r?r[r.length-1]!==n&&r.push(n):(r=[n],It[t]=r)}function pt(){var e={};return e.exps=!0,Bt["(comparray)"].stack(),e.right=O(10),k("for"),f.tokens.next.value==="each"&&(k("each"),f.option.inMoz(!0)||b("W118",f.tokens.curr,"for each")),k("("),Bt["(comparray)"].setState("define"),e.left=O(10),k(")"),f.tokens.next.value==="if"&&(k("if"),k("("),Bt["(comparray)"].setState("filter"),e.filter=O(10),k(")")),k("]"),Bt["(comparray)"].unstack(),e}function dt(){var e=it(!1,!0);return e||(f.tokens.next.id==="(string)"?(e=f.tokens.next.value,k()):f.tokens.next.id==="(number)"&&(e=f.tokens.next.value.toString(),k())),e==="hasOwnProperty"&&b("W001"),e}function vt(e){var t,n,i=[],s,o=[],u,a=!1;if(e){if(e instanceof Array){for(var l in e){t=e[l];if(r.contains(["{","["],t.id))for(u in t.left)u=o[u],u.id&&(i.push(u.id),T(u.id,"unused",u.token));else{if(t.value==="..."){f.option.inESNext()||b("W104",t,"spread/rest operator");continue}T(t.value,"unused",t)}}return i}if(e.identifier===!0)return T(e.value,"unused",e),[e]}n=f.tokens.next,k("("),D();if(f.tokens.next.id===")"){k(")");return}for(;;){if(r.contains(["{","["],f.tokens.next.id)){o=wt();for(u in o)u=o[u],u.id&&(i.push(u.id),T(u.id,"unused",u.token))}else f.tokens.next.value==="..."?(f.option.inESNext()||b("W104",f.tokens.next,"spread/rest operator"),k("..."),D(),s=st(!0),i.push(s),T(s,"unused",f.tokens.curr)):(s=st(!0),i.push(s),T(s,"unused",f.tokens.curr));a&&f.tokens.next.id!=="="&&E("E051",f.tokens.current),f.tokens.next.id==="="&&(f.option.inESNext()||b("W119",f.tokens.next,"default parameters"),k("="),a=!0,O(10));if(f.tokens.next.id!==",")return k(")",n),D(f.tokens.prev,f.tokens.curr),i;I()}}function mt(e,t,n,r){var i,s=f.option,o=f.ignored,u=Jt;return f.option=Object.create(f.option),f.ignored=Object.create(f.ignored),Jt=Object.create(Jt),Bt={"(name)":e||'"'+Ct+'"',"(line)":f.tokens.next.line,"(character)":f.tokens.next.character,"(context)":Bt,"(breakage)":0,"(loopage)":0,"(metrics)":gt(f.tokens.next),"(scope)":Jt,"(statement)":t,"(tokens)":{},"(blockscope)":Bt["(blockscope)"],"(comparray)":Bt["(comparray)"]},n&&(Bt["(generator)"]=!0),i=Bt,f.tokens.curr.funct=Bt,jt.push(Bt),e&&T(e,"function"),Bt["(params)"]=vt(r),Bt["(metrics)"].verifyMaxParametersPerFunction(Bt["(params)"]),lt(!1,!0,!0,r?!0:!1),n&&Bt["(generator)"]!=="yielded"&&E("E047",f.tokens.curr),Bt["(metrics)"].verifyMaxStatementsPerFunction(),Bt["(metrics)"].verifyMaxComplexityPerFunction(),Bt["(unusedOption)"]=f.option.unused,Jt=u,f.option=s,f.ignored=o,Bt["(last)"]=f.tokens.curr.line,Bt["(lastcharacter)"]=f.tokens.curr.character,Bt=Bt["(context)"],i}function gt(e){return{statementCount:0,nestedBlockDepth:-1,ComplexityCount:1,verifyMaxStatementsPerFunction:function(){f.option.maxstatements&&this.statementCount>f.option.maxstatements&&b("W071",e,this.statementCount)},verifyMaxParametersPerFunction:function(t){t=t||[],f.option.maxparams&&t.length>f.option.maxparams&&b("W072",e,t.length)},verifyMaxNestedBlockDepthPerFunction:function(){f.option.maxdepth&&this.nestedBlockDepth>0&&this.nestedBlockDepth===f.option.maxdepth+1&&b("W073",null,this.nestedBlockDepth)},verifyMaxComplexityPerFunction:function(){var t=f.option.maxcomplexity,n=this.ComplexityCount;t&&n>t&&b("W074",e,n)}}}function yt(){Bt["(metrics)"].ComplexityCount+=1}function bt(e){var t,n;e&&(t=e.id,n=e.paren,t===","&&(e=e.exprs[e.exprs.length-1])&&(t=e.id,n=n||e.paren));switch(t){case"=":case"+=":case"-=":case"*=":case"%=":case"&=":case"|=":case"^=":case"/=":!n&&!f.option.boss&&b("W084")}}function wt(){var e,t,n=[];f.option.inESNext()||b("W104",f.tokens.curr,"destructuring expression");var i=function(){var e;if(r.contains(["[","{"],f.tokens.next.value)){t=wt();for(var i in t)i=t[i],n.push({id:i.id,token:i.token})}else f.tokens.next.value===","?n.push({id:null,token:f.tokens.curr}):(e=st(),e&&n.push({id:e,token:f.tokens.curr}))};if(f.tokens.next.value==="["){k("["),i();while(f.tokens.next.value!=="]")k(","),i();k("]")}else if(f.tokens.next.value==="{"){k("{"),e=st(),f.tokens.next.value===":"?(k(":"),i()):n.push({id:e,token:f.tokens.curr});while(f.tokens.next.value!=="}")k(","),e=st(),f.tokens.next.value===":"?(k(":"),i()):n.push({id:e,token:f.tokens.curr});k("}")}return n}function Et(e,t){t.first&&r.zip(e,t.first).forEach(function(e){var t=e[0],n=e[1];t&&n?t.first=n:t&&t.first&&!n&&b("W080",t.first,t.first.value)})}function St(e){return f.option.inESNext()||b("W104",f.tokens.curr,"class"),e?(this.name=st(),T(this.name,"unused",f.tokens.curr)):f.tokens.next.identifier&&f.tokens.next.value!=="extends"&&(this.name=st()),xt(this),this}function xt(e){var t=f.directive["use strict"];f.tokens.next.value==="extends"&&(k("extends"),e.heritage=O(10)),f.directive["use strict"]=!0,k("{"),e.body=f.syntax["{"].nud(!0),f.directive["use strict"]=t}function Tt(){var e=on();e.notJson?(!f.option.inESNext()&&e.isDestAssign&&b("W104",f.tokens.curr,"destructuring assignment"),at()):(f.option.laxbreak=!0,f.jsonMode=!0,Nt())}function Nt(){function e(){var e={},t=f.tokens.next;k("{");if(f.tokens.next.id!=="}")for(;;){if(f.tokens.next.id==="(end)")E("E026",f.tokens.next,t.line);else{if(f.tokens.next.id==="}"){b("W094",f.tokens.curr);break}f.tokens.next.id===","?E("E028",f.tokens.next):f.tokens.next.id!=="(string)"&&b("W095",f.tokens.next,f.tokens.next.value)}e[f.tokens.next.value]===!0?b("W075",f.tokens.next,f.tokens.next.value):f.tokens.next.value==="__proto__"&&!f.option.proto||f.tokens.next.value==="__iterator__"&&!f.option.iterator?b("W096",f.tokens.next,f.tokens.next.value):e[f.tokens.next.value]=!0,k(),k(":"),Nt();if(f.tokens.next.id!==",")break;k(",")}k("}")}function t(){var e=f.tokens.next;k("[");if(f.tokens.next.id!=="]")for(;;){if(f.tokens.next.id==="(end)")E("E027",f.tokens.next,e.line);else{if(f.tokens.next.id==="]"){b("W094",f.tokens.curr);break}f.tokens.next.id===","&&E("E028",f.tokens.next)}Nt();if(f.tokens.next.id!==",")break;k(",")}k("]")}switch(f.tokens.next.id){case"{":e();break;case"[":t();break;case"true":case"false":case"null":case"(number)":case"(string)":k();break;case"-":k("-"),f.tokens.curr.character!==f.tokens.next.from&&b("W011",f.tokens.curr),M(f.tokens.curr,f.tokens.next),k("(number)");break;default:E("E003",f.tokens.next)}}var Ct,kt,Lt={"<":!0,"<=":!0,"==":!0,"===":!0,"!==":!0,"!=":!0,">":!0,">=":!0,"+":!0,"-":!0,"*":!0,"/":!0,"%":!0},At={asi:!0,bitwise:!0,boss:!0,browser:!0,camelcase:!0,couch:!0,curly:!0,debug:!0,devel:!0,dojo:!0,eqeqeq:!0,eqnull:!0,es3:!0,es5:!0,esnext:!0,moz:!0,evil:!0,expr:!0,forin:!0,funcscope:!0,gcl:!0,globalstrict:!0,immed:!0,iterator:!0,jquery:!0,lastsemic:!0,laxbreak:!0,laxcomma:!0,loopfunc:!0,mootools:!0,multistr:!0,newcap:!0,noarg:!0,node:!0,noempty:!0,nonew:!0,nonstandard:!0,nomen:!0,onevar:!0,passfail:!0,phantom:!0,plusplus:!0,proto:!0,prototypejs:!0,rhino:!0,shelljs:!0,undef:!0,scripturl:!0,shadow:!0,smarttabs:!0,strict:!0,sub:!0,supernew:!0,trailing:!0,validthis:!0,withstmt:!0,white:!0,worker:!0,wsh:!0,yui:!0,onecase:!0,regexp:!0,regexdash:!0},Ot={maxlen:!1,indent:!1,maxerr:!1,predef:!1,quotmark:!1,scope:!1,maxstatements:!1,maxdepth:!1,maxparams:!1,maxcomplexity:!1,unused:!0,latedef:!1},Mt={bitwise:!0,forin:!0,newcap:!0,nomen:!0,plusplus:!0,regexp:!0,undef:!0,white:!0,eqeqeq:!0,onevar:!0,strict:!0},_t={eqeq:"eqeqeq",vars:"onevar",windows:"wsh",sloppy:"strict"},Dt,Pt,Ht=["closure","exception","global","label","outer","unused","var"],Bt,jt,Ft,It,qt,Rt,Ut,zt,Wt,Xt,Vt,$t,Jt,Kt,Qt,Gt,Yt,Zt=[],en=new i.EventEmitter;V("(number)",function(){return this}),V("(string)",function(){return this}),f.syntax["(identifier)"]={type:"(identifier)",lbp:0,identifier:!0,nud:function(){var e=this.value,t=Jt[e],n;typeof t=="function"?t=undefined:typeof t=="boolean"&&(n=Bt,Bt=jt[0],T(e,"var"),t=Bt,Bt=n);var i;r.has(Bt,"(blockscope)")&&(i=Bt["(blockscope)"].getlabel(e));if(Bt===t||i)switch(i?i[e]["(type)"]:Bt[e]){case"unused":i?i[e]["(type)"]="var":Bt[e]="var";break;case"unction":i?i[e]["(type)"]="function":Bt[e]="function",this["function"]=!0;break;case"function":this["function"]=!0;break;case"label":b("W037",f.tokens.curr,e)}else if(Bt["(global)"])typeof $t[e]!="boolean"&&(Ct!=="typeof"&&Ct!=="delete"||f.tokens.next&&(f.tokens.next.value==="."||f.tokens.next.value==="["))&&(Bt["(comparray)"].check(e)||y(Bt,"W117",f.tokens.curr,e)),ht(f.tokens.curr);else switch(Bt[e]){case"closure":case"function":case"var":case"unused":b("W038",f.tokens.curr,e);break;case"label":b("W037",f.tokens.curr,e);break;case"outer":case"global":break;default:if(t===!0)Bt[e]=!0;else if(t===null)b("W039",f.tokens.curr,e),ht(f.tokens.curr);else if(typeof t!="object")(Ct!=="typeof"&&Ct!=="delete"||f.tokens.next&&(f.tokens.next.value==="."||f.tokens.next.value==="["))&&y(Bt,"W117",f.tokens.curr,e),Bt[e]=!0,ht(f.tokens.curr);else switch(t[e]){case"function":case"unction":this["function"]=!0,t[e]="closure",Bt[e]=t["(global)"]?"global":"outer";break;case"var":case"unused":t[e]="closure",Bt[e]=t["(global)"]?"global":"outer";break;case"closure":Bt[e]=t["(global)"]?"global":"outer";break;case"label":b("W037",f.tokens.curr,e)}}return this},led:function(){E("E033",f.tokens.next,f.tokens.next.value)}},V("(regexp)",function(){return this}),R("(endline)"),R("(begin)"),R("(end)").reach=!0,R("(error)").reach=!0,R("}").reach=!0,R(")"),R("]"),R('"').reach=!0,R("'").reach=!0,R(";"),R(":").reach=!0,R("#"),$("else"),$("case").reach=!0,$("catch"),$("default").reach=!0,$("finally"),K("arguments",function(e){f.directive["use strict"]&&Bt["(global)"]&&b("E008",e)}),K("eval"),K("false"),K("Infinity"),K("null"),K("this",function(e){f.directive["use strict"]&&!f.option.validthis&&(Bt["(statement)"]&&Bt["(name)"].charAt(0)>"Z"||Bt["(global)"])&&b("W040",e)}),K("true"),K("undefined"),et("=","assign",20),et("+=","assignadd",20),et("-=","assignsub",20),et("*=","assignmult",20),et("/=","assigndiv",20).nud=function(){E("E014")},et("%=","assignmod",20),nt("&=","assignbitand",20),nt("|=","assignbitor",20),nt("^=","assignbitxor",20),nt("<<=","assignshiftleft",20),nt(">>=","assignshiftright",20),nt(">>>=","assignshiftrightunsigned",20),Q(",",function(e,t){var n;t.exprs=[e];if(!I({peek:!0}))return t;for(;;){if(!(n=O(10)))break;t.exprs.push(n);if(f.tokens.next.value!==","||!I())break}return t},10,!0),Q("?",function(e,t){return yt(),t.left=e,t.right=O(10),k(":"),t["else"]=O(10),t},30);var tn=40;Q("||",function(e,t){return yt(),t.left=e,t.right=O(tn),t},tn),Q("&&","and",50),tt("|","bitor",70),tt("^","bitxor",80),tt("&","bitand",90),Y("==",function(e,t){var n=f.option.eqnull&&(e.value==="null"||t.value==="null");return!n&&f.option.eqeqeq?b("W116",this,"===","=="):Z(e)?b("W041",this,"===",e.value):Z(t)&&b("W041",this,"===",t.value),this}),Y("==="),Y("!=",function(e,t){var n=f.option.eqnull&&(e.value==="null"||t.value==="null");return!n&&f.option.eqeqeq?b("W116",this,"!==","!="):Z(e)?b("W041",this,"!==",e.value):Z(t)&&b("W041",this,"!==",t.value),this}),Y("!=="),Y("<"),Y(">"),Y("<="),Y(">="),tt("<<","shiftleft",120),tt(">>","shiftright",120),tt(">>>","shiftrightunsigned",120),Q("in","in",120),Q("instanceof","instanceof",120),Q("+",function(e,t){var n=O(130);return e&&n&&e.id==="(string)"&&n.id==="(string)"?(e.value+=n.value,e.character=n.character,!f.option.scripturl&&a.javascriptURL.test(e.value)&&b("W050",e),e):(t.left=e,t.right=n,t)},130),X("+","num"),X("+++",function(){return b("W007"),this.right=O(150),this.arity="unary",this}),Q("+++",function(e){return b("W007"),this.left=e,this.right=O(130),this},130),Q("-","sub",130),X("-","neg"),X("---",function(){return b("W006"),this.right=O(150),this.arity="unary",this}),Q("---",function(e){return b("W006"),this.left=e,this.right=O(130),this},130),Q("*","mult",140),Q("/","div",140),Q("%","mod",140),rt("++","postinc"),X("++","preinc"),f.syntax["++"].exps=!0,rt("--","postdec"),X("--","predec"),f.syntax["--"].exps=!0,X("delete",function(){var e=O(10);return(!e||e.id!=="."&&e.id!=="[")&&b("W051"),this.first=e,this}).exps=!0,X("~",function(){return f.option.bitwise&&b("W052",this,"~"),O(150),this}),X("...",function(){return f.option.inESNext()||b("W104",this,"spread/rest operator"),f.tokens.next.identifier||E("E030",f.tokens.next,f.tokens.next.value),O(150),this}),X("!",function(){return this.right=O(150),this.arity="unary",this.right||g("E041",this.line||0),Lt[this.right.id]===!0&&b("W018",this,"!"),this}),X("typeof","typeof"),X("new",function(){var e=O(155),t;if(e&&e.id!=="function")if(e.identifier){e["new"]=!0;switch(e.value){case"Number":case"String":case"Boolean":case"Math":case"JSON":b("W053",f.tokens.prev,e.value);break;case"Function":f.option.evil||b("W054");break;case"Date":case"RegExp":break;default:e.id!=="function"&&(t=e.value.substr(0,1),f.option.newcap&&(t<"A"||t>"Z")&&!r.has(Ft,e.value)&&b("W055",f.tokens.curr))}}else e.id!=="."&&e.id!=="["&&e.id!=="("&&b("W056",f.tokens.curr);else f.option.supernew||b("W057",this);return M(f.tokens.curr,f.tokens.next),f.tokens.next.id!=="("&&!f.option.supernew&&b("W058",f.tokens.curr,f.tokens.curr.value),this.first=e,this}),f.syntax["new"].exps=!0,X("void").exps=!0,Q(".",function(e,t){M(f.tokens.prev,f.tokens.curr),_();var n=st(!1,!0);return typeof n=="string"&&ct(n),t.left=e,t.right=n,n&&n==="hasOwnProperty"&&f.tokens.next.value==="="&&b("W001"),!e||e.value!=="arguments"||n!=="callee"&&n!=="caller"?!f.option.evil&&e&&e.value==="document"&&(n==="write"||n==="writeln")&&b("W060",e):f.option.noarg?b("W059",e,n):f.directive["use strict"]&&E("E008"),!f.option.evil&&(n==="eval"||n==="execScript")&&b("W061"),t},160,!0),Q("(",function(e,t){f.tokens.prev.id!=="}"&&f.tokens.prev.id!==")"&&_(f.tokens.prev,f.tokens.curr),D(),f.option.immed&&e&&!e.immed&&e.id==="function"&&b("W062");var n=0,r=[];e&&e.type==="(identifier)"&&e.value.match(/^[A-Z]([A-Z0-9_$]*[a-z][A-Za-z0-9_$]*)?$/)&&"Number String Boolean Date Object".indexOf(e.value)===-1&&(e.value==="Math"?b("W063",e):f.option.newcap&&b("W064",e));if(f.tokens.next.id!==")")for(;;){r[r.length]=O(10),n+=1;if(f.tokens.next.id!==",")break;I()}return k(")"),D(f.tokens.prev,f.tokens.curr),typeof e=="object"&&(e.value==="parseInt"&&n===1&&b("W065",f.tokens.curr),f.option.evil||(e.value==="eval"||e.value==="Function"||e.value==="execScript"?(b("W061",e),r[0]&&[0].id==="(string)"&&x(e,r[0].value)):!r[0]||r[0].id!=="(string)"||e.value!=="setTimeout"&&e.value!=="setInterval"?r[0]&&r[0].id==="(string)"&&e.value==="."&&e.left.value==="window"&&(e.right==="setTimeout"||e.right==="setInterval")&&(b("W066",e),x(e,r[0].value)):(b("W066",e),x(e,r[0].value))),!e.identifier&&e.id!=="."&&e.id!=="["&&e.id!=="("&&e.id!=="&&"&&e.id!=="||"&&e.id!=="?"&&b("W067",e)),t.left=e,t},155,!0).exps=!0,X("(",function(){D();var e,t=[],n,r,i=0,s;do n=C(i),i+=1,r=C(i),i+=1;while(n.value!==")"&&r.value!=="=>"&&r.value!==";"&&r.type!=="(end)");f.tokens.next.id==="function"&&(f.tokens.next.immed=!0);var o=[];if(f.tokens.next.id!==")")for(;;){if(r.value==="=>"&&f.tokens.next.value==="{"){e=f.tokens.next,e.left=wt(),t.push(e);for(var u in e.left)o.push(e.left[u].token)}else o.push(O(10));if(f.tokens.next.id!==",")break;I()}k(")",this),D(f.tokens.prev,f.tokens.curr),f.option.immed&&o[0]&&o[0].id==="function"&&f.tokens.next.id!=="("&&(f.tokens.next.id!=="."||C().value!=="call"&&C().value!=="apply")&&b("W068",this);if(f.tokens.next.value==="=>")return o;if(!o.length)return;return o.length>1?(s=Object.create(f.syntax[","]),s.exprs=o):s=o[0],s&&(s.paren=!0),s}),G("=>"),Q("[",function(e,t){_(f.tokens.prev,f.tokens.curr),D();var n=O(10),r;return n&&n.type==="(string)"&&(!f.option.evil&&(n.value==="eval"||n.value==="execScript")&&b("W061",t),ct(n.value),!f.option.sub&&a.identifier.test(n.value)&&(r=f.syntax[n.value],(!r||!c(r))&&b("W069",f.tokens.prev,n.value))),k("]",t),n&&n.value==="hasOwnProperty"&&f.tokens.next.value==="="&&b("W001"),D(f.tokens.prev,f.tokens.curr),t.left=e,t.right=n,t},160,!0),X("[",function(){var e=on(!0);if(e.isCompArray)return f.option.inMoz(!0)||b("W118",f.tokens.curr,"array comprehension"),pt();e.isDestAssign&&!f.option.inESNext()&&b("W104",f.tokens.curr,"destructuring assignment");var t=f.tokens.curr.line!==f.tokens.next.line;this.first=[],t&&(Rt+=f.option.indent,f.tokens.next.from===Rt+f.option.indent&&(Rt+=f.option.indent));while(f.tokens.next.id!=="(end)"){while(f.tokens.next.id===",")f.option.inES5()||b("W070"),k(",");if(f.tokens.next.id==="]")break;t&&f.tokens.curr.line!==f.tokens.next.line&&B(),this.first.push(O(10));if(f.tokens.next.id!==",")break;I({allowTrailing:!0});if(f.tokens.next.id==="]"&&!f.option.inES5(!0)){b("W070",f.tokens.curr);break}}return t&&(Rt-=f.option.indent,B()),k("]",this),this},160),function(e){e.nud=function(e){function t(e,t){h[e]&&r.has(h,e)?b("W075",f.tokens.next,u):h[e]={},h[e].basic=!0,h[e].basictkn=t}function n(e,t){h[e]&&r.has(h,e)?(h[e].basic||h[e].setter)&&b("W075",f.tokens.next,u):h[e]={},h[e].setter=!0,h[e].setterToken=t}function i(e){h[e]&&r.has(h,e)?(h[e].basic||h[e].getter)&&b("W075",f.tokens.next,u):h[e]={},h[e].getter=!0,h[e].getterToken=f.tokens.curr}var s,o,u,a,l,c,h={},p="";s=f.tokens.curr.line!==f.tokens.next.line,s&&(Rt+=f.option.indent,f.tokens.next.from===Rt+f.option.indent&&(Rt+=f.option.indent));for(;;){if(f.tokens.next.id==="}")break;s&&B(),e&&f.tokens.next.value==="static"&&(k("static"),p="static ");if(f.tokens.next.value==="get"&&C().id!==":")k("get"),f.option.inES5(!e)||E("E034"),u=dt(),u||E("E035"),e&&u==="constructor"&&E("E049",f.tokens.next,"class getter method",u),i(p+u),l=f.tokens.next,M(f.tokens.curr,f.tokens.next),o=mt(),a=o["(params)"],a&&b("W076",l,a[0],u),M(f.tokens.curr,f.tokens.next);else if(f.tokens.next.value==="set"&&C().id!==":")k("set"),f.option.inES5(!e)||E("E034"),u=dt(),u||E("E035"),e&&u==="constructor"&&E("E049",f.tokens.next,"class setter method",u),n(p+u,f.tokens.next),l=f.tokens.next,M(f.tokens.curr,f.tokens.next),o=mt(),a=o["(params)"],(!a||a.length!==1)&&b("W077",l,u);else{c=!1,f.tokens.next.value==="*"&&f.tokens.next.type==="(punctuator)"&&(f.option.inESNext()||b("W104",f.tokens.next,"generator functions"),k("*"),c=!0),u=dt(),t(p+u,f.tokens.next);if(typeof u!="string")break;f.tokens.next.value==="("?(f.option.inESNext()||b("W104",f.tokens.curr,"concise methods"),mt(u,undefined,c)):e||(k(":"),P(f.tokens.curr,f.tokens.next),O(10))}e&&u==="prototype"&&E("E049",f.tokens.next,"class method",u),ct(u);if(e){p="";continue}if(f.tokens.next.id!==",")break;I({allowTrailing:!0,property:!0}),f.tokens.next.id===","?b("W070",f.tokens.curr):f.tokens.next.id==="}"&&!f.option.inES5(!0)&&b("W070",f.tokens.curr)}s&&(Rt-=f.option.indent,B()),k("}",this);if(f.option.inES5())for(var d in h)r.has(h,d)&&h[d].setter&&!h[d].getter&&b("W078",h[d].setterToken);return this},e.fud=function(){E("E036",f.tokens.curr)}}(R("{"));var nn=U("const",function(e){var t,n,i;f.option.inESNext()||b("W104",f.tokens.curr,"const"),this.first=[];for(;;){var s=[];P(f.tokens.curr,f.tokens.next),r.contains(["{","["],f.tokens.next.value)?(t=wt(),i=!1):(t=[{id:st(),token:f.tokens.curr}],i=!0);for(var o in t)o=t[o],Bt[o.id]==="const"&&b("E011",null,o.id),Bt["(global)"]&&$t[o.id]===!1&&b("W079",o.token,o.id),o.id&&(T(o.id,"const"),s.push(o.token));if(e)break;this.first=this.first.concat(s),f.tokens.next.id!=="="&&b("E012",f.tokens.curr,f.tokens.curr.value),f.tokens.next.id==="="&&(P(f.tokens.curr,f.tokens.next),k("="),P(f.tokens.curr,f.tokens.next),f.tokens.next.id==="undefined"&&b("W080",f.tokens.prev,f.tokens.prev.value),C(0).id==="="&&f.tokens.next.identifier&&b("W120",f.tokens.next,f.tokens.next.value),n=O(10),i?t[0].first=n:Et(s,n));if(f.tokens.next.id!==",")break;I()}return this});nn.exps=!0;var rn=U("var",function(e){var t,n,i;Bt["(onevar)"]&&f.option.onevar?b("W081"):Bt["(global)"]||(Bt["(onevar)"]=!0),this.first=[];for(;;){var s=[];P(f.tokens.curr,f.tokens.next),r.contains(["{","["],f.tokens.next.value)?(t=wt(),n=!1):(t=[{id:st(),token:f.tokens.curr}],n=!0);for(var o in t)o=t[o],f.option.inESNext()&&Bt[o.id]==="const"&&b("E011",null,o.id),Bt["(global)"]&&$t[o.id]===!1&&b("W079",o.token,o.id),o.id&&(T(o.id,"unused",o.token),s.push(o.token));if(e)break;this.first=this.first.concat(s),f.tokens.next.id==="="&&(P(f.tokens.curr,f.tokens.next),k("="),P(f.tokens.curr,f.tokens.next),f.tokens.next.id==="undefined"&&b("W080",f.tokens.prev,f.tokens.prev.value),C(0).id==="="&&f.tokens.next.identifier&&b("W120",f.tokens.next,f.tokens.next.value),i=O(10),n?t[0].first=i:Et(s,i));if(f.tokens.next.id!==",")break;I()}return this});rn.exps=!0;var sn=U("let",function(e){var t,n,i,s;f.option.inESNext()||b("W104",f.tokens.curr,"let"),f.tokens.next.value==="("?(f.option.inMoz(!0)||b("W118",f.tokens.next,"let block"),k("("),Bt["(blockscope)"].stack(),s=!0):Bt["(nolet)"]&&E("E048",f.tokens.curr),Bt["(onevar)"]&&f.option.onevar?b("W081"):Bt["(global)"]||(Bt["(onevar)"]=!0),this.first=[];for(;;){var o=[];P(f.tokens.curr,f.tokens.next),r.contains(["{","["],f.tokens.next.value)?(t=wt(),n=!1):(t=[{id:st(),token:f.tokens.curr.value}],n=!0);for(var u in t)u=t[u],f.option.inESNext()&&Bt[u.id]==="const"&&b("E011",null,u.id),Bt["(global)"]&&$t[u.id]===!1&&b("W079",u.token,u.id),u.id&&!Bt["(nolet)"]&&(T(u.id,"unused",u.token,!0),o.push(u.token));if(e)break;this.first=this.first.concat(o),f.tokens.next.id==="="&&(P(f.tokens.curr,f.tokens.next),k("="),P(f.tokens.curr,f.tokens.next),f.tokens.next.id==="undefined"&&b("W080",f.tokens.prev,f.tokens.prev.value),C(0).id==="="&&f.tokens.next.identifier&&b("W120",f.tokens.next,f.tokens.next.value),i=O(10),n?t[0].first=i:Et(o,i));if(f.tokens.next.id!==",")break;I()}return s&&(k(")"),lt(!0,!0),this.block=!0,Bt["(blockscope)"].unstack()),this});sn.exps=!0,z("class",function(){return St.call(this,!0)}),z("function",function(){var e=!1;f.tokens.next.value==="*"&&(k("*"),f.option.inESNext(!0)?e=!0:b("W119",f.tokens.curr,"function*")),qt&&b("W082",f.tokens.curr);var t=st();return Bt[t]==="const"&&b("E011",null,t),M(f.tokens.curr,f.tokens.next),T(t,"unction",f.tokens.curr),mt(t,{statement:!0},e),f.tokens.next.id==="("&&f.tokens.next.line===f.tokens.curr.line&&E("E039"),this}),X("function",function(){var e=!1;f.tokens.next.value==="*"&&(f.option.inESNext()||b("W119",f.tokens.curr,"function*"),k("*"),e=!0);var t=it();return t||f.option.gcl?M(f.tokens.curr,f.tokens.next):P(f.tokens.curr,f.tokens.next),mt(t,undefined,e),!f.option.loopfunc&&Bt["(loopage)"]&&b("W083"),this}),z("if",function(){var e=f.tokens.next;return yt(),f.condition=!0,k("("),P(this,e),D(),bt(O(0)),k(")",e),f.condition=!1,D(f.tokens.prev,f.tokens.curr),lt(!0,!0),f.tokens.next.id==="else"&&(P(f.tokens.curr,f.tokens.next),k("else"),f.tokens.next.id==="if"||f.tokens.next.id==="switch"?ut(!0):lt(!0,!0)),this}),z("try",function(){function e(){var e=Jt,t;k("catch"),P(f.tokens.curr,f.tokens.next),k("("),Jt=Object.create(e),t=f.tokens.next.value,f.tokens.next.type!=="(identifier)"&&(t=null,b("E030",f.tokens.next,t)),k(),Bt={"(name)":"(catch)","(line)":f.tokens.next.line,"(character)":f.tokens.next.character,"(context)":Bt,"(breakage)":Bt["(breakage)"],"(loopage)":Bt["(loopage)"],"(scope)":Jt,"(statement)":!1,"(metrics)":gt(f.tokens.next),"(catch)":!0,"(tokens)":{},"(blockscope)":Bt["(blockscope)"],"(comparray)":Bt["(comparray)"]},t&&T(t,"exception"),f.tokens.next.value==="if"&&(f.option.inMoz(!0)||b("W118",f.tokens.curr,"catch filter"),k("if"),O(0)),k(")"),f.tokens.curr.funct=Bt,jt.push(Bt),lt(!1),Jt=e,Bt["(last)"]=f.tokens.curr.line,Bt["(lastcharacter)"]=f.tokens.curr.character,Bt=Bt["(context)"]}var t;lt(!1);while(f.tokens.next.id==="catch")yt(),t&&!f.option.inMoz(!0)&&b("W118",f.tokens.next,"multiple catch blocks"),e(),t=!0;if(f.tokens.next.id==="finally"){k("finally"),lt(!1);return}return t||E("E021",f.tokens.next,"catch",f.tokens.next.value),this}),z("while",function(){var e=f.tokens.next;return Bt["(breakage)"]+=1,Bt["(loopage)"]+=1,yt(),k("("),P(this,e),D(),bt(O(0)),k(")",e),D(f.tokens.prev,f.tokens.curr),lt(!0,!0),Bt["(breakage)"]-=1,Bt["(loopage)"]-=1,this}).labelled=!0,z("with",function(){var e=f.tokens.next;return f.directive["use strict"]?E("E010",f.tokens.curr):f.option.withstmt||b("W085",f.tokens.curr),k("("),P(this,e),D(),O(0),k(")",e),D(f.tokens.prev,f.tokens.curr),lt(!0,!0),this}),z("switch",function(){var e=f.tokens.next,t=!1;Bt["(breakage)"]+=1,k("("),P(this,e),D(),bt(O(0)),k(")",e),D(f.tokens.prev,f.tokens.curr),P(f.tokens.curr,f.tokens.next),e=f.tokens.next,k("{"),P(f.tokens.curr,f.tokens.next),Rt+=f.option.indent,this.cases=[];for(;;)switch(f.tokens.next.id){case"case":switch(Bt["(verb)"]){case"yield":case"break":case"case":case"continue":case"return":case"switch":case"throw":break;default:a.fallsThrough.test(f.lines[f.tokens.next.line-2])||b("W086",f.tokens.curr,"case")}B(-f.option.indent),k("case"),this.cases.push(O(20)),yt(),t=!0,k(":"),Bt["(verb)"]="case";break;case"default":switch(Bt["(verb)"]){case"yield":case"break":case"continue":case"return":case"throw":break;default:this.cases.length&&(a.fallsThrough.test(f.lines[f.tokens.next.line-2])||b("W086",f.tokens.curr,"default"))}B(-f.option.indent),k("default"),t=!0,k(":");break;case"}":Rt-=f.option.indent,B(),k("}",e),Bt["(breakage)"]-=1,Bt["(verb)"]=undefined;return;case"(end)":E("E023",f.tokens.next,"}");return;default:if(t)switch(f.tokens.curr.id){case",":E("E040");return;case":":t=!1,at();break;default:E("E025",f.tokens.curr);return}else{if(f.tokens.curr.id!==":"){E("E021",f.tokens.next,"case",f.tokens.next.value);return}k(":"),E("E024",f.tokens.curr,":"),at()}}}).labelled=!0,U("debugger",function(){return f.option.debug||b("W087"),this}).exps=!0,function(){var e=U("do",function(){Bt["(breakage)"]+=1,Bt["(loopage)"]+=1,yt(),this.first=lt(!0,!0),k("while");var e=f.tokens.next;return P(f.tokens.curr,e),k("("),D(),bt(O(0)),k(")",e),D(f.tokens.prev,f.tokens.curr),Bt["(breakage)"]-=1,Bt["(loopage)"]-=1,this});e.labelled=!0,e.exps=!0}(),z("for",function(){var e,t=f.tokens.next,n=!1,i=null;t.value==="each"&&(i=t,k("each"),f.option.inMoz(!0)||b("W118",f.tokens.curr,"for each")),Bt["(breakage)"]+=1,Bt["(loopage)"]+=1,yt(),k("("),P(this,t),D();var s,o=0,u=["in","of"];do s=C(o),++o;while(!r.contains(u,s.value)&&s.value!==";"&&s.type!=="(end)");if(r.contains(u,s.value)){!f.option.inESNext()&&s.value==="of"&&E("W104",s,"for of");if(f.tokens.next.id==="var")k("var"),f.syntax["var"].fud.call(f.syntax["var"].fud,!0);else if(f.tokens.next.id==="let")k("let"),n=!0,Bt["(blockscope)"].stack(),f.syntax.let.fud.call(f.syntax.let.fud,!0);else{switch(Bt[f.tokens.next.value]){case"unused":Bt[f.tokens.next.value]="var";break;case"var":break;default:Bt["(blockscope)"].getlabel(f.tokens.next.value)||b("W088",f.tokens.next,f.tokens.next.value)}k()}k(s.value),O(20),k(")",t),e=lt(!0,!0),f.option.forin&&e&&(e.length>1||typeof e[0]!="object"||e[0].value!=="if")&&b("W089",this),Bt["(breakage)"]-=1,Bt["(loopage)"]-=1}else{i&&E("E045",i);if(f.tokens.next.id!==";")if(f.tokens.next.id==="var")k("var"),f.syntax["var"].fud.call(f.syntax["var"].fud);else if(f.tokens.next.id==="let")k("let"),n=!0,Bt["(blockscope)"].stack(),f.syntax.let.fud.call(f.syntax.let.fud);else for(;;){O(0,"for");if(f.tokens.next.id!==",")break;I()}j(f.tokens.curr),k(";"),f.tokens.next.id!==";"&&bt(O(0)),j(f.tokens.curr),k(";"),f.tokens.next.id===";"&&E("E021",f.tokens.next,")",";");if(f.tokens.next.id!==")")for(;;){O(0,"for");if(f.tokens.next.id!==",")break;I()}k(")",t),D(f.tokens.prev,f.tokens.curr),lt(!0,!0),Bt["(breakage)"]-=1,Bt["(loopage)"]-=1}return n&&Bt["(blockscope)"].unstack(),this}).labelled=!0,U("break",function(){var e=f.tokens.next.value;return Bt["(breakage)"]===0&&b("W052",f.tokens.next,this.value),f.option.asi||j(this),f.tokens.next.id!==";"&&!f.tokens.next.reach&&f.tokens.curr.line===f.tokens.next.line&&(Bt[e]!=="label"?b("W090",f.tokens.next,e):Jt[e]!==Bt&&b("W091",f.tokens.next,e),this.first=f.tokens.next,k()),ot("break"),this}).exps=!0,U("continue",function(){var e=f.tokens.next.value;return Bt["(breakage)"]===0&&b("W052",f.tokens.next,this.value),f.option.asi||j(this),f.tokens.next.id!==";"&&!f.tokens.next.reach?f.tokens.curr.line===f.tokens.next.line&&(Bt[e]!=="label"?b("W090",f.tokens.next,e):Jt[e]!==Bt&&b("W091",f.tokens.next,e),this.first=f.tokens.next,k()):Bt["(loopage)"]||b("W052",f.tokens.next,this.value),ot("continue"),this}).exps=!0,U("return",function(){return this.line===f.tokens.next.line?(f.tokens.next.id==="(regexp)"&&b("W092"),f.tokens.next.id!==";"&&!f.tokens.next.reach&&(P(f.tokens.curr,f.tokens.next),this.first=O(0),this.first&&this.first.type==="(punctuator)"&&this.first.value==="="&&!f.option.boss&&w("W093",this.first.line,this.first.character))):f.tokens.next.type==="(punctuator)"&&["[","{","+","-"].indexOf(f.tokens.next.value)>-1&&j(this),ot("return"),this}).exps=!0,function(e){e.exps=!0,e.lbp=25}(X("yield",function(){var e=f.tokens.prev;return f.option.inESNext(!0)&&!Bt["(generator)"]?E("E046",f.tokens.curr,"yield"):f.option.inESNext()||b("W104",f.tokens.curr,"yield"),Bt["(generator)"]="yielded",this.line===f.tokens.next.line||!f.option.inMoz(!0)?(f.tokens.next.id==="(regexp)"&&b("W092"),f.tokens.next.id!==";"&&!f.tokens.next.reach&&f.tokens.next.nud&&(H(f.tokens.curr,f.tokens.next),this.first=O(10),this.first.type==="(punctuator)"&&this.first.value==="="&&!f.option.boss&&w("W093",this.first.line,this.first.character)),f.option.inMoz(!0)&&f.tokens.next.id!==")"&&(e.lbp>30||!e.assign&&!A()||e.id==="yield")&&E("E050",this)):f.option.asi||j(this),this})),U("throw",function(){return j(this),P(f.tokens.curr,f.tokens.next),this.first=O(20),ot("throw"),this}).exps=!0,U("import",function(){f.option.inESNext()||b("W119",f.tokens.curr,"import");if(f.tokens.next.identifier)this.name=st(),T(this.name,"unused",f.tokens.curr);else{k("{");for(;;){var e;f.tokens.next.type==="default"?(e="default",k("default")):e=st(),f.tokens.next.value==="as"&&(k("as"),e=st()),T(e,"unused",f.tokens.curr);if(f.tokens.next.value!==","){if(f.tokens.next.value==="}"){k("}");break}E("E024",f.tokens.next,f.tokens.next.value);break}k(",")}}return k("from"),k("(string)"),this}).exps=!0,U("export",function(){f.option.inESNext()||b("W119",f.tokens.curr,"export");if(f.tokens.next.type==="default"){k("default");if(f.tokens.next.id==="function"||f.tokens.next.id==="class")this.block=!0;return this.exportee=O(10),this}if(f.tokens.next.value==="{"){k("{");for(;;){st();if(f.tokens.next.value!==","){if(f.tokens.next.value==="}"){k("}");break}E("E024",f.tokens.next,f.tokens.next.value);break}k(",")}return this}return f.tokens.next.id==="var"?(k("var"),f.syntax["var"].fud.call(f.syntax["var"].fud)):f.tokens.next.id==="let"?(k("let"),f.syntax.let.fud.call(f.syntax.let.fud)):f.tokens.next.id==="const"?(k("const"),f.syntax["const"].fud.call(f.syntax["const"].fud)):f.tokens.next.id==="function"?(this.block=!0,k("function"),f.syntax["function"].fud()):f.tokens.next.id==="class"?(this.block=!0,k("class"),f.syntax["class"].fud()):E("E024",f.tokens.next,f.tokens.next.value),this}).exps=!0,J("abstract"),J("boolean"),J("byte"),J("char"),J("class",{es5:!0,nud:St}),J("double"),J("enum",{es5:!0}),J("export",{es5:!0}),J("extends",{es5:!0}),J("final"),J("float"),J("goto"),J("implements",{es5:!0,strictOnly:!0}),J("import",{es5:!0}),J("int"),J("interface",{es5:!0,strictOnly:!0}),J("long"),J("native"),J("package",{es5:!0,strictOnly:!0}),J("private",{es5:!0,strictOnly:!0}),J("protected",{es5:!0,strictOnly:!0}),J("public",{es5:!0,strictOnly:!0}),J("short"),J("static",{es5:!0,strictOnly:!0}),J("super",{es5:!0}),J("synchronized"),J("throws"),J("transient"),J("volatile");var on=function(){var e,t,n=0,i=0,s={};r.contains(["[","{"],f.tokens.curr.value)&&(i+=1),r.contains(["[","{"],f.tokens.next.value)&&(i+=1),r.contains(["]","}"],f.tokens.next.value)&&(i-=1);do{e=C(n),t=C(n+1),n+=1,r.contains(["[","{"],e.value)?i+=1:r.contains(["]","}"],e.value)&&(i-=1);if(e.identifier&&e.value==="for"&&i===1){s.isCompArray=!0,s.notJson=!0;break}if(r.contains(["}","]"],e.value)&&t.value==="="){s.isDestAssign=!0,s.notJson=!0;break}e.value===";"&&(s.isBlock=!0,s.notJson=!0)}while(i>0&&e.id!=="(end)"&&n<15);return s},un=function(){function e(e){var t=s.variables.filter(function(t){if(t.value===e)return t.undef=!1,e}).length;return t!==0}function t(e){var t=s.variables.filter(function(t){if(t.value===e&&!t.undef)return t.unused===!0&&(t.unused=!1),e}).length;return t===0}var n=function(){this.mode="use",this.variables=[]},i=[],s;return{stack:function(){s=new n,i.push(s)},unstack:function(){s.variables.filter(function(e){e.unused&&b("W098",e.token,e.value),e.undef&&y(e.funct,"W117",e.token,e.value)}),i.splice(i[i.length-1],1),s=i[i.length-1]},setState:function(e){r.contains(["use","define","filter"],e)&&(s.mode=e)},check:function(n){return s&&s.mode==="use"?(s.variables.push({funct:Bt,token:f.tokens.curr,value:n,undef:!0,unused:!1}),!0):s&&s.mode==="define"?(e(n)||s.variables.push({funct:Bt,token:f.tokens.curr,value:n,undef:!1,unused:!0}),!0):s&&s.mode==="filter"?(t(n)&&y(Bt,"W117",f.tokens.curr,n),!0):!1}}},an=function(){function e(){for(var e in t)if(t[e]["(type)"]==="unused"&&f.option.unused){var n=t[e]["(token)"],r=n.line,i=n.character;w("W098",r,i,e)}}var t={},n=[t];return{stack:function(){t={},n.push(t)},unstack:function(){e(),n.splice(n.length-1,1),t=r.last(n)},getlabel:function(e){for(var t=n.length-1;t>=0;--t)if(r.has(n[t],e))return n[t]},current:{has:function(e){return r.has(t,e)},add:function(e,n,r){t[e]={"(type)":n,"(token)":r}}}}},fn=function(n,i,o){function a(e,t){if(!e)return;!Array.isArray(e)&&typeof e=="object"&&(e=Object.keys(e)),e.forEach(t)}var l,c,p,v,y={},E={};f.reset(),i&&i.scope?h.scope=i.scope:(h.errors=[],h.undefs=[],h.internals=[],h.blacklist={},h.scope="(main)"),$t=Object.create(null),d($t,s.ecmaIdentifiers),d($t,s.reservedVars),d($t,o||{}),Dt=Object.create(null),Pt=Object.create(null);if(i){a(i.predef||null,function(e){var t,n;e[0]==="-"?(t=e.slice(1),h.blacklist[t]=t):(n=Object.getOwnPropertyDescriptor(i.predef,e),$t[e]=n?n.value:!1)}),a(i.exported||null,function(e){Pt[e]=!0}),delete i.predef,delete i.exported,v=Object.keys(i);for(p=0;p0&&(e.implieds=t),Gt.length>0&&(e.urls=Gt),l=Object.keys(Jt),l.length>0&&(e.globals=l);for(o=1;o0&&(e.unused=Qt),n=[];for(a in Wt)if(typeof Wt[a]=="number"){e.member=Wt;break}return e},fn.jshint=fn,fn}();typeof n=="object"&&n&&(n.JSHINT=h)},{"../shared/messages.js":2,"../shared/vars.js":3,"./lex.js":5,"./reg.js":6,"./state.js":7,"./style.js":8,"console-browserify":9,events:10,underscore:1}],5:[function(e,t,n){function r(){var e=[];return{push:function(t){e.push(t)},check:function(){for(var t=0;t=65&&h<=90||h===95||h>=97&&h<=122;var p=[];for(var h=0;h<128;h++)p[h]=c[h]||h>=48&&h<=57;i.prototype={_lines:[],getLines:function(){return this._lines=a.lines,this._lines},setLines:function(e){this._lines=e,a.lines=this._lines},peek:function(e){return this.input.charAt(e||0)},skip:function(e){e=e||1,this.char+=e,this.input=this.input.slice(e)},on:function(e,t){e.split(" ").forEach(function(e){this.emitter.on(e,t)}.bind(this))},trigger:function(){this.emitter.emit.apply(this.emitter,Array.prototype.slice.call(arguments))},triggerAsync:function(e,t,n,r){n.push(function(){r()&&this.trigger(e,t)}.bind(this))},scanPunctuator:function(){var e=this.peek(),t,n,r;switch(e){case".":if(/^[0-9]$/.test(this.peek(1)))return null;if(this.peek(1)==="."&&this.peek(2)===".")return{type:f.Punctuator,value:"..."};case"(":case")":case";":case",":case"{":case"}":case"[":case"]":case":":case"~":case"?":return{type:f.Punctuator,value:e};case"#":return{type:f.Punctuator,value:e};case"":return null}return t=this.peek(1),n=this.peek(2),r=this.peek(3),e===">"&&t===">"&&n===">"&&r==="="?{type:f.Punctuator,value:">>>="}:e==="="&&t==="="&&n==="="?{type:f.Punctuator,value:"==="}:e==="!"&&t==="="&&n==="="?{type:f.Punctuator,value:"!=="}:e===">"&&t===">"&&n===">"?{type:f.Punctuator,value:">>>"}:e==="<"&&t==="<"&&n==="="?{type:f.Punctuator,value:"<<="}:e===">"&&t===">"&&n==="="?{type:f.Punctuator,value:">>="}:e==="="&&t===">"?{type:f.Punctuator,value:e+t}:e===t&&"+-<>&|".indexOf(e)>=0?{type:f.Punctuator,value:e+t}:"<>=!+-*%&|^".indexOf(e)>=0?t==="="?{type:f.Punctuator,value:e+t}:{type:f.Punctuator,value:e}:e==="/"?t==="="&&/\/=(?!(\S*\/[gim]?))/.test(this.input)?{type:f.Punctuator,value:"/="}:{type:f.Punctuator,value:"/"}:null},scanComments:function(){function e(e,t,n){var r=["jshint","jslint","members","member","globals","global","exported"],i=!1,s=e+t,o="plain";return n=n||{},n.isMultiline&&(s+="*/"),r.forEach(function(n){if(i)return;if(e==="//"&&n!=="jshint")return;t.substr(0,n.length)===n&&(i=!0,e+=n,t=t.substr(n.length)),!i&&t.charAt(0)===" "&&t.substr(1,n.length)===n&&(i=!0,e=e+" "+n,t=t.substr(n.length+1));if(!i)return;switch(n){case"member":o="members";break;case"global":o="globals";break;default:o=n}}),{type:f.Comment,commentType:o,value:s,body:t,isSpecial:i,isMultiline:n.isMultiline||!1,isMalformed:n.isMalformed||!1}}var t=this.peek(),n=this.peek(1),r=this.input.substr(2),i=this.line,s=this.char;if(t==="*"&&n==="/")return this.trigger("error",{code:"E018",line:i,character:s}),this.skip(2),null;if(t!=="/"||n!=="*"&&n!=="/")return null;if(n==="/")return this.skip(this.input.length),e("//",r);var o="";if(n==="*"){this.skip(2);while(this.peek()!=="*"||this.peek(1)!=="/")if(this.peek()===""){o+="\n";if(!this.nextLine())return this.trigger("error",{code:"E017",line:i,character:s}),e("/*",o,{isMultiline:!0,isMalformed:!0})}else o+=this.peek(),this.skip();return this.skip(2),e("/*",o,{isMultiline:!0})}},scanKeyword:function(){var e=/^[a-zA-Z_$][a-zA-Z0-9_$]*/.exec(this.input),t=["if","in","do","var","for","new","try","let","this","else","case","void","with","enum","while","break","catch","throw","const","yield","class","super","return","typeof","delete","switch","export","import","default","finally","extends","function","continue","debugger","instanceof"];return e&&t.indexOf(e[0])>=0?{type:f.Keyword,value:e[0]}:null},scanIdentifier:function(){function e(e){for(var t=0;t="a"&&e<="z"||e>="A"&&e<="Z"}var i=0,s="",o=this.input.length,u=this.peek(i),a;if(u!=="."&&!e(u))return null;if(u!=="."){s=this.peek(i),i+=1,u=this.peek(i);if(s==="0"){if(u==="x"||u==="X"){i+=1,s+=u;while(i"]});if(o==="\\"){this.skip(),o=this.peek();switch(o){case"'":this.triggerAsync("warning",{code:"W114",line:this.line,character:this.char,data:["\\'"]},e,function(){return a.jsonMode});break;case"b":o="\b";break;case"f":o="\f";break;case"n":o="\n";break;case"r":o="\r";break;case"t":o=" ";break;case"0":o="\0";var l=parseInt(this.peek(1),10);this.triggerAsync("warning",{code:"W115",line:this.line,character:this.char},e,function(){return l>=0&&l<=7&&a.directive["use strict"]});break;case"u":o=String.fromCharCode(parseInt(this.input.substr(1,4),16)),u=5;break;case"v":this.triggerAsync("warning",{code:"W114",line:this.line,character:this.char,data:["\\v"]},e,function(){return a.jsonMode}),o=" ";break;case"x":var c=parseInt(this.input.substr(1,2),16);this.triggerAsync("warning",{code:"W114",line:this.line,character:this.char,data:["\\x-"]},e,function(){return a.jsonMode}),o=String.fromCharCode(c),u=3;break;case"\\":case'"':case"/":break;case"":s=!0,o="";break;case"!":if(n.slice(n.length-2)==="<")break;default:this.trigger("warning",{code:"W044",line:this.line,character:this.char})}}n+=o,this.skip(u)}return this.skip(),{type:f.StringLiteral,value:n,isUnclosed:!1,quote:t}},scanRegExp:function(){var e=0,t=this.input.length,n=this.peek(),r=n,i="",s=[],o=!1,u=!1,a,l=function(){n<" "&&(o=!0,this.trigger("warning",{code:"W048",line:this.line,character:this.char})),n==="<"&&(o=!0,this.trigger("warning",{code:"W049",line:this.line,character:this.char,data:[n]}))}.bind(this);if(!this.prereg||n!=="/")return null;e+=1,a=!1;while(e=this.getLines().length?!1:(this.input=this.getLines()[this.line],this.line+=1,this.char=1,this.from=1,e=this.scanMixedSpacesAndTabs(),e>=0&&this.trigger("warning",{code:"W099",line:this.line,character:e+1}),this.input=this.input.replace(/\t/g,a.tab),e=this.scanUnsafeChars(),e>=0&&this.trigger("warning",{code:"W100",line:this.line,character:e}),a.option.maxlen&&a.option.maxlen-1&&!t.name.match(/^[A-Z0-9_]*$/)&&e.warn("W106",{line:t.line,"char":t.from,data:[t.name]})}),e.on("String",function(t){var n=e.getOption("quotmark"),r;if(!n)return;n==="single"&&t.quote!=="'"&&(r="W109"),n==="double"&&t.quote!=='"'&&(r="W108"),n===!0&&(e.getCache("quotmark")||e.setCache("quotmark",t.quote),e.getCache("quotmark")!==t.quote&&(r="W110")),r&&e.warn(r,{line:t.line,"char":t.char})}),e.on("Number",function(t){t.value.charAt(0)==="."&&e.warn("W008",{line:t.line,"char":t.char,data:[t.value]}),t.value.substr(t.value.length-1)==="."&&e.warn("W047",{line:t.line,"char":t.char,data:[t.value]}),/^00+/.test(t.value)&&e.warn("W046",{line:t.line,"char":t.char,data:[t.value]})}),e.on("String",function(t){var n=/^(?:javascript|jscript|ecmascript|vbscript|mocha|livescript)\s*:/i;if(e.getOption("scripturl"))return;n.test(t.value)&&e.warn("W107",{line:t.line,"char":t.char})})}},{}],9:[function(e,t,n){},{}],10:[function(e,t,n){function r(e,t){if(e.indexOf)return e.indexOf(t);for(var n=0;n0&&this._events[e].length>n&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),console.trace())}this._events[e].push(t)}else this._events[e]=[this._events[e],t];return this},s.prototype.on=s.prototype.addListener,s.prototype.once=function(e,t){var n=this;return n.on(e,function r(){n.removeListener(e,r),t.apply(this,arguments)}),this},s.prototype.removeListener=function(e,t){if("function"!=typeof t)throw new Error("removeListener only takes instances of Function");if(!this._events||!this._events[e])return this;var n=this._events[e];if(o(n)){var i=r(n,t);if(i<0)return this;n.splice(i,1),n.length==0&&delete this._events[e]}else this._events[e]===t&&delete this._events[e];return this},s.prototype.removeAllListeners=function(e){return arguments.length===0?(this._events={},this):(e&&this._events&&this._events[e]&&(this._events[e]=null),this)},s.prototype.listeners=function(e){return this._events||(this._events={}),this._events[e]||(this._events[e]=[]),o(this._events[e])||(this._events[e]=[this._events[e]]),this._events[e]},s.listenerCount=function(e,t){var n;return!e._events||!e._events[t]?n=0:typeof e._events[t]=="function"?n=1:n=e._events[t].length,n}},{__browserify_process:11}],11:[function(e,t,n){var r=t.exports={};r.nextTick=function(){var e=typeof window!="undefined"&&window.setImmediate,t=typeof window!="undefined"&&window.postMessage&&window.addEventListener;if(e)return function(e){return window.setImmediate(e)};if(t){var n=[];return window.addEventListener("message",function(e){if(e.source===window&&e.data==="process-tick"){e.stopPropagation();if(n.length>0){var t=n.shift();t()}}},!0),function(e){n.push(e),window.postMessage("process-tick","*")}}return function(e){setTimeout(e,0)}}(),r.title="browser",r.browser=!0,r.env={},r.argv=[],r.binding=function(e){throw new Error("process.binding is not supported")},r.cwd=function(){return"/"},r.chdir=function(e){throw new Error("process.chdir is not supported")}},{}],jshint:[function(e,t,n){t.exports=e("n4bKNg")},{}]},{},["n4bKNg"]),n.exports=r("jshint")}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=e("./range").Range,o=e("./anchor").Anchor,u=function(e){this.$lines=[],e.length===0?this.$lines=[""]:Array.isArray(e)?this._insertLines(0,e):this.insert({row:0,column:0},e)};(function(){r.implement(this,i),this.setValue=function(e){var t=this.getLength();this.remove(new s(0,0,t,this.getLine(t-1).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new o(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){if(e.start.row==e.end.row)return this.getLine(e.start.row).substring(e.start.column,e.end.column);var t=this.getLines(e.start.row,e.end.row);t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;return e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column)),t.join(this.getNewLineCharacter())},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<0&&(e.row=0),e},this.insert=function(e,t){if(!t||t.length===0)return e;e=this.$clipPosition(e),this.getLength()<=1&&this.$detectNewLine(t);var n=this.$split(t),r=n.splice(0,1)[0],i=n.length==0?null:n.splice(n.length-1,1)[0];return e=this.insertInLine(e,r),i!==null&&(e=this.insertNewLine(e),e=this._insertLines(e.row,n),e=this.insertInLine(e,i||"")),e},this.insertLines=function(e,t){return e>=this.getLength()?this.insert({row:e,column:0},"\n"+t.join("\n")):this._insertLines(Math.max(e,0),t)},this._insertLines=function(e,t){if(t.length==0)return{row:e,column:0};while(t.length>61440){var n=this._insertLines(e,t.slice(0,61440));t=t.slice(61440),e=n.row}var r=[e,0];r.push.apply(r,t),this.$lines.splice.apply(this.$lines,r);var i=new s(e,0,e+t.length,0),o={action:"insertLines",range:i,lines:t};return this._signal("change",{data:o}),i.end},this.insertNewLine=function(e){e=this.$clipPosition(e);var t=this.$lines[e.row]||"";this.$lines[e.row]=t.substring(0,e.column),this.$lines.splice(e.row+1,0,t.substring(e.column,t.length));var n={row:e.row+1,column:0},r={action:"insertText",range:s.fromPoints(e,n),text:this.getNewLineCharacter()};return this._signal("change",{data:r}),n},this.insertInLine=function(e,t){if(t.length==0)return e;var n=this.$lines[e.row]||"";this.$lines[e.row]=n.substring(0,e.column)+t+n.substring(e.column);var r={row:e.row,column:e.column+t.length},i={action:"insertText",range:s.fromPoints(e,r),text:t};return this._signal("change",{data:i}),r},this.remove=function(e){e instanceof s||(e=s.fromPoints(e.start,e.end)),e.start=this.$clipPosition(e.start),e.end=this.$clipPosition(e.end);if(e.isEmpty())return e.start;var t=e.start.row,n=e.end.row;if(e.isMultiLine()){var r=e.start.column==0?t:t+1,i=n-1;e.end.column>0&&this.removeInLine(n,0,e.end.column),i>=r&&this._removeLines(r,i),r!=t&&(this.removeInLine(t,e.start.column,this.getLine(t).length),this.removeNewLine(e.start.row))}else this.removeInLine(t,e.start.column,e.end.column);return e.start},this.removeInLine=function(e,t,n){if(t==n)return;var r=new s(e,t,e,n),i=this.getLine(e),o=i.substring(t,n),u=i.substring(0,t)+i.substring(n,i.length);this.$lines.splice(e,1,u);var a={action:"removeText",range:r,text:o};return this._signal("change",{data:a}),r.start},this.removeLines=function(e,t){return e<0||t>=this.getLength()?this.remove(new s(e,0,t+1,0)):this._removeLines(e,t)},this._removeLines=function(e,t){var n=new s(e,0,t+1,0),r=this.$lines.splice(e,t-e+1),i={action:"removeLines",range:n,nl:this.getNewLineCharacter(),lines:r};return this._signal("change",{data:i}),r},this.removeNewLine=function(e){var t=this.getLine(e),n=this.getLine(e+1),r=new s(e,t.length,e+1,0),i=t+n;this.$lines.splice(e,2,i);var o={action:"removeText",range:r,text:this.getNewLineCharacter()};this._signal("change",{data:o})},this.replace=function(e,t){e instanceof s||(e=s.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);if(t)var n=this.insert(e.start,t);else n=e.start;return n},this.applyDeltas=function(e){for(var t=0;t=0;t--){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="insertText"?this.remove(r):n.action=="removeLines"?this._insertLines(r.start.row,n.lines):n.action=="removeText"&&this.insert(r.start,n.text)}},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i0||-1)*Math.floor(Math.abs(e))),e}function o(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function u(e){var t,n,r;if(o(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(o(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(o(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(e){var t=this;if(typeof t!="function")throw new TypeError("Function.prototype.bind called on incompatible "+t);var n=c.call(arguments,1),i=function(){if(this instanceof i){var r=t.apply(this,n.concat(c.call(arguments)));return Object(r)===r?r:this}return t.apply(e,n.concat(c.call(arguments)))};return t.prototype&&(r.prototype=t.prototype,i.prototype=new r,r.prototype=null),i});var a=Function.prototype.call,f=Array.prototype,l=Object.prototype,c=f.slice,h=a.bind(l.toString),p=a.bind(l.hasOwnProperty),d,v,m,g,y;if(y=p(l,"__defineGetter__"))d=a.bind(l.__defineGetter__),v=a.bind(l.__defineSetter__),m=a.bind(l.__lookupGetter__),g=a.bind(l.__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+tu)for(h=f;h--;)this[a+h]=this[u+h];if(s&&e===l)this.length=l,this.push.apply(this,i);else{this.length=l+s;for(h=0;h>>0;if(h(e)!="[object Function]")throw new TypeError;while(++i>>0,i=Array(r),s=arguments[1];if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");for(var o=0;o>>0,i=[],s,o=arguments[1];if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");for(var u=0;u>>0,i=arguments[1];if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");for(var s=0;s>>0,i=arguments[1];if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");for(var s=0;s>>0;if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");if(!r&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var i=0,s;if(arguments.length>=2)s=arguments[1];else do{if(i in n){s=n[i++];break}if(++i>=r)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;i>>0;if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");if(!r&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var i,s=r-1;if(arguments.length>=2)i=arguments[1];else do{if(s in n){i=n[s--];break}if(--s<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do s in this&&(i=e.call(void 0,i,n[s],s,t));while(s--);return i});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(e){var t=E&&h(this)=="[object String]"?this.split(""):F(this),n=t.length>>>0;if(!n)return-1;var r=0;arguments.length>1&&(r=s(arguments[1])),r=r>=0?r:Math.max(0,n+r);for(;r>>0;if(!n)return-1;var r=n-1;arguments.length>1&&(r=Math.min(r,s(arguments[1]))),r=r>=0?r:n-Math.abs(r);for(;r>=0;r--)if(r in t&&e===t[r])return r;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(e){return e.__proto__||(e.constructor?e.constructor.prototype:l)});if(!Object.getOwnPropertyDescriptor){var S="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(e,t){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError(S+e);if(!p(e,t))return;var n,r,i;n={enumerable:!0,configurable:!0};if(y){var s=e.__proto__;e.__proto__=l;var r=m(e,t),i=g(e,t);e.__proto__=s;if(r||i)return r&&(n.get=r),i&&(n.set=i),n}return n.value=e[t],n}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(e){return Object.keys(e)});if(!Object.create){var x;Object.prototype.__proto__===null?x=function(){return{__proto__:null}}:x=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(e,t){var n;if(e===null)n=x();else{if(typeof e!="object")throw new TypeError("typeof prototype["+typeof e+"] != 'object'");var r=function(){};r.prototype=e,n=new r,n.__proto__=e}return t!==void 0&&Object.defineProperties(n,t),n}}if(Object.defineProperty){var T=i({}),N=typeof document=="undefined"||i(document.createElement("div"));if(!T||!N)var C=Object.defineProperty}if(!Object.defineProperty||C){var k="Property description must be an object: ",L="Object.defineProperty called on non-object: ",A="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(e,t,n){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError(L+e);if(typeof n!="object"&&typeof n!="function"||n===null)throw new TypeError(k+n);if(C)try{return C.call(Object,e,t,n)}catch(r){}if(p(n,"value"))if(y&&(m(e,t)||g(e,t))){var i=e.__proto__;e.__proto__=l,delete e[t],e[t]=n.value,e.__proto__=i}else e[t]=n.value;else{if(!y)throw new TypeError(A);p(n,"get")&&d(e,t,n.get),p(n,"set")&&v(e,t,n.set)}return e}}Object.defineProperties||(Object.defineProperties=function(e,t){for(var n in t)p(t,n)&&Object.defineProperty(e,n,t[n]);return e}),Object.seal||(Object.seal=function(e){return e}),Object.freeze||(Object.freeze=function(e){return e});try{Object.freeze(function(){})}catch(O){Object.freeze=function(e){return function(t){return typeof t=="function"?t:e(t)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(e){return e}),Object.isSealed||(Object.isSealed=function(e){return!1}),Object.isFrozen||(Object.isFrozen=function(e){return!1}),Object.isExtensible||(Object.isExtensible=function(e){if(Object(e)===e)throw new TypeError;var t="";while(p(e,t))t+="?";e[t]=!0;var n=p(e,t);return delete e[t],n});if(!Object.keys){var M=!0,_=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],D=_.length;for(var P in{toString:null})M=!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)p(e,t)&&I.push(t);if(M)for(var n=0,r=D;n ["+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.rowthis.row)return;if(n.start.row==this.row&&n.start.column>this.column)return;var r=this.row,i=this.column,s=n.start,o=n.end;if(t.action==="insertText")if(s.row===r&&s.column<=i){if(s.column!==i||!this.$insertRight)s.row===o.row?i+=o.column-s.column:(i-=s.column,r+=o.row-s.row)}else s.row!==o.row&&s.row=i?i=s.column:i=Math.max(0,i-(o.column-s.column)):s.row!==o.row&&s.row=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)}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,n){t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){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;n2;e==null&&(e=[]);if(v&&e.reduce===v)return r&&(t=N.bind(t,r)),i?e.reduce(t,n):e.reduce(t);C(e,function(e,s,o){i?n=t.call(r,n,e,s,o):(n=e,i=!0)});if(!i)throw new TypeError(k);return n},N.reduceRight=N.foldr=function(e,t,n,r){var i=arguments.length>2;e==null&&(e=[]);if(m&&e.reduceRight===m)return r&&(t=N.bind(t,r)),i?e.reduceRight(t,n):e.reduceRight(t);var s=e.length;if(s!==+s){var o=N.keys(e);s=o.length}C(e,function(u,a,f){a=o?o[--s]:--s,i?n=t.call(r,n,e[a],a,f):(n=e[a],i=!0)});if(!i)throw new TypeError(k);return n},N.find=N.detect=function(e,t,n){var r;return L(e,function(e,i,s){if(t.call(n,e,i,s))return r=e,!0}),r},N.filter=N.select=function(e,t,n){var r=[];return e==null?r:g&&e.filter===g?e.filter(t,n):(C(e,function(e,i,s){t.call(n,e,i,s)&&(r[r.length]=e)}),r)},N.reject=function(e,t,n){return N.filter(e,function(e,r,i){return!t.call(n,e,r,i)},n)},N.every=N.all=function(e,t,n){t||(t=N.identity);var r=!0;return e==null?r:y&&e.every===y?e.every(t,n):(C(e,function(e,s,o){if(!(r=r&&t.call(n,e,s,o)))return i}),!!r)};var L=N.some=N.any=function(e,t,n){t||(t=N.identity);var r=!1;return e==null?r:b&&e.some===b?e.some(t,n):(C(e,function(e,s,o){if(r||(r=t.call(n,e,s,o)))return i}),!!r)};N.contains=N.include=function(e,t){return e==null?!1:w&&e.indexOf===w?e.indexOf(t)!=-1:L(e,function(e){return e===t})},N.invoke=function(e,t){var n=f.call(arguments,2),r=N.isFunction(t);return N.map(e,function(e){return(r?t:e[t]).apply(e,n)})},N.pluck=function(e,t){return N.map(e,function(e){return e[t]})},N.where=function(e,t,n){return N.isEmpty(t)?n?null:[]:N[n?"find":"filter"](e,function(e){for(var n in t)if(t[n]!==e[n])return!1;return!0})},N.findWhere=function(e,t){return N.where(e,t,!0)},N.max=function(e,t,n){if(!t&&N.isArray(e)&&e[0]===+e[0]&&e.length<65535)return Math.max.apply(Math,e);if(!t&&N.isEmpty(e))return-Infinity;var r={computed:-Infinity,value:-Infinity};return C(e,function(e,i,s){var o=t?t.call(n,e,i,s):e;o>=r.computed&&(r={value:e,computed:o})}),r.value},N.min=function(e,t,n){if(!t&&N.isArray(e)&&e[0]===+e[0]&&e.length<65535)return Math.min.apply(Math,e);if(!t&&N.isEmpty(e))return Infinity;var r={computed:Infinity,value:Infinity};return C(e,function(e,i,s){var o=t?t.call(n,e,i,s):e;or||n===void 0)return 1;if(n>>1;n.call(r,e[u])=0})})},N.difference=function(e){var t=l.apply(s,f.call(arguments,1));return N.filter(e,function(e){return!N.contains(t,e)})},N.zip=function(){var e=f.call(arguments),t=N.max(N.pluck(e,"length")),n=new Array(t);for(var r=0;r=0;n--)t=[e[n].apply(this,t)];return t[0]}},N.after=function(e,t){return e<=0?t():function(){if(--e<1)return t.apply(this,arguments)}},N.keys=x||function(e){if(e!==Object(e))throw new TypeError("Invalid object");var t=[];for(var n in e)N.has(e,n)&&(t[t.length]=n);return t},N.values=function(e){var t=[];for(var n in e)N.has(e,n)&&t.push(e[n]);return t},N.pairs=function(e){var t=[];for(var n in e)N.has(e,n)&&t.push([n,e[n]]);return t},N.invert=function(e){var t={};for(var n in e)N.has(e,n)&&(t[e[n]]=n);return t},N.functions=N.methods=function(e){var t=[];for(var n in e)N.isFunction(e[n])&&t.push(n);return t.sort()},N.extend=function(e){return C(f.call(arguments,1),function(t){if(t)for(var n in t)e[n]=t[n]}),e},N.pick=function(e){var t={},n=l.apply(s,f.call(arguments,1));return C(n,function(n){n in e&&(t[n]=e[n])}),t},N.omit=function(e){var t={},n=l.apply(s,f.call(arguments,1));for(var r in e)N.contains(n,r)||(t[r]=e[r]);return t},N.defaults=function(e){return C(f.call(arguments,1),function(t){if(t)for(var n in t)e[n]==null&&(e[n]=t[n])}),e},N.clone=function(e){return N.isObject(e)?N.isArray(e)?e.slice():N.extend({},e):e},N.tap=function(e,t){return t(e),e};var _=function(e,t,n,r){if(e===t)return e!==0||1/e==1/t;if(e==null||t==null)return e===t;e instanceof N&&(e=e._wrapped),t instanceof N&&(t=t._wrapped);var i=c.call(e);if(i!=c.call(t))return!1;switch(i){case"[object String]":return e==String(t);case"[object Number]":return e!=+e?t!=+t:e==0?1/e==1/t:e==+t;case"[object Date]":case"[object Boolean]":return+e==+t;case"[object RegExp]":return e.source==t.source&&e.global==t.global&&e.multiline==t.multiline&&e.ignoreCase==t.ignoreCase}if(typeof e!="object"||typeof t!="object")return!1;var s=n.length;while(s--)if(n[s]==e)return r[s]==t;n.push(e),r.push(t);var o=0,u=!0;if(i=="[object Array]"){o=e.length,u=o==t.length;if(u)while(o--)if(!(u=_(e[o],t[o],n,r)))break}else{var a=e.constructor,f=t.constructor;if(a!==f&&!(N.isFunction(a)&&a instanceof a&&N.isFunction(f)&&f instanceof f))return!1;for(var l in e)if(N.has(e,l)){o++;if(!(u=N.has(t,l)&&_(e[l],t[l],n,r)))break}if(u){for(l in t)if(N.has(t,l)&&!(o--))break;u=!o}}return n.pop(),r.pop(),u};N.isEqual=function(e,t){return _(e,t,[],[])},N.isEmpty=function(e){if(e==null)return!0;if(N.isArray(e)||N.isString(e))return e.length===0;for(var t in e)if(N.has(e,t))return!1;return!0},N.isElement=function(e){return!!e&&e.nodeType===1},N.isArray=S||function(e){return c.call(e)=="[object Array]"},N.isObject=function(e){return e===Object(e)},C(["Arguments","Function","String","Number","Date","RegExp"],function(e){N["is"+e]=function(t){return c.call(t)=="[object "+e+"]"}}),N.isArguments(arguments)||(N.isArguments=function(e){return!!e&&!!N.has(e,"callee")}),typeof /./!="function"&&(N.isFunction=function(e){return typeof e=="function"}),N.isFinite=function(e){return isFinite(e)&&!isNaN(parseFloat(e))},N.isNaN=function(e){return N.isNumber(e)&&e!=+e},N.isBoolean=function(e){return e===!0||e===!1||c.call(e)=="[object Boolean]"},N.isNull=function(e){return e===null},N.isUndefined=function(e){return e===void 0},N.has=function(e,t){return h.call(e,t)},N.noConflict=function(){return e._=r,this},N.identity=function(e){return e},N.times=function(e,t,n){var r=Array(e);for(var i=0;i":">",'"':""","'":"'","/":"/"}};D.unescape=N.invert(D.escape);var P={escape:new RegExp("["+N.keys(D.escape).join("")+"]","g"),unescape:new RegExp("("+N.keys(D.unescape).join("|")+")","g")};N.each(["escape","unescape"],function(e){N[e]=function(t){return t==null?"":(""+t).replace(P[e],function(t){return D[e][t]})}}),N.result=function(e,t){if(e==null)return null;var n=e[t];return N.isFunction(n)?n.call(e):n},N.mixin=function(e){C(N.functions(e),function(t){var n=N[t]=e[t];N.prototype[t]=function(){var e=[this._wrapped];return a.apply(e,arguments),I.call(this,n.apply(N,e))}})};var H=0;N.uniqueId=function(e){var t=++H+"";return e?e+t:t},N.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var B=/(.)^/,j={"'":"'","\\":"\\","\r":"r","\n":"n"," ":"t","\u2028":"u2028","\u2029":"u2029"},F=/\\|'|\r|\n|\t|\u2028|\u2029/g;N.template=function(e,t,n){var r;n=N.defaults({},n,N.templateSettings);var i=new RegExp([(n.escape||B).source,(n.interpolate||B).source,(n.evaluate||B).source].join("|")+"|$","g"),s=0,o="__p+='";e.replace(i,function(t,n,r,i,u){return o+=e.slice(s,u).replace(F,function(e){return"\\"+j[e]}),n&&(o+="'+\n((__t=("+n+"))==null?'':_.escape(__t))+\n'"),r&&(o+="'+\n((__t=("+r+"))==null?'':__t)+\n'"),i&&(o+="';\n"+i+"\n__p+='"),s=u+t.length,t}),o+="';\n",n.variable||(o="with(obj||{}){\n"+o+"}\n"),o="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+o+"return __p;\n";try{r=new Function(n.variable||"obj","_",o)}catch(u){throw u.source=o,u}if(t)return r(t,N);var a=function(e){return r.call(this,e,N)};return a.source="function("+(n.variable||"obj")+"){\n"+o+"}",a},N.chain=function(e){return N(e).chain()};var I=function(e){return this._chain?N(e).chain():e};N.mixin(N),C(["pop","push","reverse","shift","sort","splice","unshift"],function(e){var t=s[e];N.prototype[e]=function(){var n=this._wrapped;return t.apply(n,arguments),(e=="shift"||e=="splice")&&n.length===0&&delete n[0],I.call(this,n)}}),C(["concat","join","slice"],function(e){var t=s[e];N.prototype[e]=function(){return I.call(this,t.apply(this._wrapped,arguments))}}),N.extend(N.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}})}).call(this)},{}],2:[function(e,t,n){var r=e("underscore"),i={E001:"Bad option: '{a}'.",E002:"Bad option value.",E003:"Expected a JSON value.",E004:"Input is neither a string nor an array of strings.",E005:"Input is empty.",E006:"Unexpected early end of program.",E007:'Missing "use strict" statement.',E008:"Strict violation.",E009:"Option 'validthis' can't be used in a global scope.",E010:"'with' is not allowed in strict mode.",E011:"const '{a}' has already been declared.",E012:"const '{a}' is initialized to 'undefined'.",E013:"Attempting to override '{a}' which is a constant.",E014:"A regular expression literal can be confused with '/='.",E015:"Unclosed regular expression.",E016:"Invalid regular expression.",E017:"Unclosed comment.",E018:"Unbegun comment.",E019:"Unmatched '{a}'.",E020:"Expected '{a}' to match '{b}' from line {c} and instead saw '{d}'.",E021:"Expected '{a}' and instead saw '{b}'.",E022:"Line breaking error '{a}'.",E023:"Missing '{a}'.",E024:"Unexpected '{a}'.",E025:"Missing ':' on a case clause.",E026:"Missing '}' to match '{' from line {a}.",E027:"Missing ']' to match '[' form line {a}.",E028:"Illegal comma.",E029:"Unclosed string.",E030:"Expected an identifier and instead saw '{a}'.",E031:"Bad assignment.",E032:"Expected a small integer or 'false' and instead saw '{a}'.",E033:"Expected an operator and instead saw '{a}'.",E034:"get/set are ES5 features.",E035:"Missing property name.",E036:"Expected to see a statement and instead saw a block.",E037:null,E038:null,E039:"Function declarations are not invocable. Wrap the whole function invocation in parens.",E040:"Each value should have its own case label.",E041:"Unrecoverable syntax error.",E042:"Stopping.",E043:"Too many errors.",E044:"'{a}' is already defined and can't be redefined.",E045:"Invalid for each loop.",E046:"A yield statement shall be within a generator function (with syntax: `function*`)",E047:"A generator function shall contain a yield statement.",E048:"Let declaration not directly within block.",E049:"A {a} cannot be named '{b}'.",E050:"Mozilla requires the yield expression to be parenthesized here.",E051:"Regular parameters cannot come after default parameters."},s={W001:"'hasOwnProperty' is a really bad name.",W002:"Value of '{a}' may be overwritten in IE 8 and earlier.",W003:"'{a}' was used before it was defined.",W004:"'{a}' is already defined.",W005:"A dot following a number can be confused with a decimal point.",W006:"Confusing minuses.",W007:"Confusing pluses.",W008:"A leading decimal point can be confused with a dot: '{a}'.",W009:"The array literal notation [] is preferrable.",W010:"The object literal notation {} is preferrable.",W011:"Unexpected space after '{a}'.",W012:"Unexpected space before '{a}'.",W013:"Missing space after '{a}'.",W014:"Bad line breaking before '{a}'.",W015:"Expected '{a}' to have an indentation at {b} instead at {c}.",W016:"Unexpected use of '{a}'.",W017:"Bad operand.",W018:"Confusing use of '{a}'.",W019:"Use the isNaN function to compare with NaN.",W020:"Read only.",W021:"'{a}' is a function.",W022:"Do not assign to the exception parameter.",W023:"Expected an identifier in an assignment and instead saw a function invocation.",W024:"Expected an identifier and instead saw '{a}' (a reserved word).",W025:"Missing name in function declaration.",W026:"Inner functions should be listed at the top of the outer function.",W027:"Unreachable '{a}' after '{b}'.",W028:"Label '{a}' on {b} statement.",W030:"Expected an assignment or function call and instead saw an expression.",W031:"Do not use 'new' for side effects.",W032:"Unnecessary semicolon.",W033:"Missing semicolon.",W034:'Unnecessary directive "{a}".',W035:"Empty block.",W036:"Unexpected /*member '{a}'.",W037:"'{a}' is a statement label.",W038:"'{a}' used out of scope.",W039:"'{a}' is not allowed.",W040:"Possible strict violation.",W041:"Use '{a}' to compare with '{b}'.",W042:"Avoid EOL escaping.",W043:"Bad escaping of EOL. Use option multistr if needed.",W044:"Bad or unnecessary escaping.",W045:"Bad number '{a}'.",W046:"Don't use extra leading zeros '{a}'.",W047:"A trailing decimal point can be confused with a dot: '{a}'.",W048:"Unexpected control character in regular expression.",W049:"Unexpected escaped character '{a}' in regular expression.",W050:"JavaScript URL.",W051:"Variables should not be deleted.",W052:"Unexpected '{a}'.",W053:"Do not use {a} as a constructor.",W054:"The Function constructor is a form of eval.",W055:"A constructor name should start with an uppercase letter.",W056:"Bad constructor.",W057:"Weird construction. Is 'new' unnecessary?",W058:"Missing '()' invoking a constructor.",W059:"Avoid arguments.{a}.",W060:"document.write can be a form of eval.",W061:"eval can be harmful.",W062:"Wrap an immediate function invocation in parens to assist the reader in understanding that the expression is the result of a function, and not the function itself.",W063:"Math is not a function.",W064:"Missing 'new' prefix when invoking a constructor.",W065:"Missing radix parameter.",W066:"Implied eval. Consider passing a function instead of a string.",W067:"Bad invocation.",W068:"Wrapping non-IIFE function literals in parens is unnecessary.",W069:"['{a}'] is better written in dot notation.",W070:"Extra comma. (it breaks older versions of IE)",W071:"This function has too many statements. ({a})",W072:"This function has too many parameters. ({a})",W073:"Blocks are nested too deeply. ({a})",W074:"This function's cyclomatic complexity is too high. ({a})",W075:"Duplicate key '{a}'.",W076:"Unexpected parameter '{a}' in get {b} function.",W077:"Expected a single parameter in set {a} function.",W078:"Setter is defined without getter.",W079:"Redefinition of '{a}'.",W080:"It's not necessary to initialize '{a}' to 'undefined'.",W081:"Too many var statements.",W082:"Function declarations should not be placed in blocks. Use a function expression or move the statement to the top of the outer function.",W083:"Don't make functions within a loop.",W084:"Assignment in conditional expression",W085:"Don't use 'with'.",W086:"Expected a 'break' statement before '{a}'.",W087:"Forgotten 'debugger' statement?",W088:"Creating global 'for' variable. Should be 'for (var {a} ...'.",W089:"The body of a for in should be wrapped in an if statement to filter unwanted properties from the prototype.",W090:"'{a}' is not a statement label.",W091:"'{a}' is out of scope.",W092:"Wrap the /regexp/ literal in parens to disambiguate the slash operator.",W093:"Did you mean to return a conditional instead of an assignment?",W094:"Unexpected comma.",W095:"Expected a string and instead saw {a}.",W096:"The '{a}' key may produce unexpected results.",W097:'Use the function form of "use strict".',W098:"'{a}' is defined but never used.",W099:"Mixed spaces and tabs.",W100:"This character may get silently deleted by one or more browsers.",W101:"Line is too long.",W102:"Trailing whitespace.",W103:"The '{a}' property is deprecated.",W104:"'{a}' is only available in JavaScript 1.7.",W105:"Unexpected {a} in '{b}'.",W106:"Identifier '{a}' is not in camel case.",W107:"Script URL.",W108:"Strings must use doublequote.",W109:"Strings must use singlequote.",W110:"Mixed double and single quotes.",W112:"Unclosed string.",W113:"Control character in string: {a}.",W114:"Avoid {a}.",W115:"Octal literals are not allowed in strict mode.",W116:"Expected '{a}' and instead saw '{b}'.",W117:"'{a}' is not defined.",W118:"'{a}' is only available in Mozilla JavaScript extensions (use moz option).",W119:"'{a}' is only available in ES6 (use esnext option).",W120:"You might be leaking a variable ({a}) here."},o={I001:"Comma warnings can be turned off with 'laxcomma'.",I002:"Reserved words as properties can be used under the 'es5' option.",I003:"ES5 option is now set per default"};n.errors={},n.warnings={},n.info={},r.each(i,function(e,t){n.errors[t]={code:t,desc:e}}),r.each(s,function(e,t){n.warnings[t]={code:t,desc:e}}),r.each(o,function(e,t){n.info[t]={code:t,desc:e}})},{underscore:1}],3:[function(e,t,n){n.reservedVars={arguments:!1,NaN:!1},n.ecmaIdentifiers={Array:!1,Boolean:!1,Date:!1,decodeURI:!1,decodeURIComponent:!1,encodeURI:!1,encodeURIComponent:!1,Error:!1,eval:!1,EvalError:!1,Function:!1,hasOwnProperty:!1,isFinite:!1,isNaN:!1,JSON:!1,Math:!1,Map:!1,Number:!1,Object:!1,parseInt:!1,parseFloat:!1,RangeError:!1,ReferenceError:!1,RegExp:!1,Set:!1,String:!1,SyntaxError:!1,TypeError:!1,URIError:!1,WeakMap:!1},n.browser={ArrayBuffer:!1,ArrayBufferView:!1,Audio:!1,Blob:!1,addEventListener:!1,applicationCache:!1,atob:!1,blur:!1,btoa:!1,clearInterval:!1,clearTimeout:!1,close:!1,closed:!1,CustomEvent:!1,DataView:!1,DOMParser:!1,defaultStatus:!1,document:!1,Element:!1,ElementTimeControl:!1,event:!1,FileReader:!1,Float32Array:!1,Float64Array:!1,FormData:!1,focus:!1,frames:!1,getComputedStyle:!1,HTMLElement:!1,HTMLAnchorElement:!1,HTMLBaseElement:!1,HTMLBlockquoteElement:!1,HTMLBodyElement:!1,HTMLBRElement:!1,HTMLButtonElement:!1,HTMLCanvasElement:!1,HTMLDirectoryElement:!1,HTMLDivElement:!1,HTMLDListElement:!1,HTMLFieldSetElement:!1,HTMLFontElement:!1,HTMLFormElement:!1,HTMLFrameElement:!1,HTMLFrameSetElement:!1,HTMLHeadElement:!1,HTMLHeadingElement:!1,HTMLHRElement:!1,HTMLHtmlElement:!1,HTMLIFrameElement:!1,HTMLImageElement:!1,HTMLInputElement:!1,HTMLIsIndexElement:!1,HTMLLabelElement:!1,HTMLLayerElement:!1,HTMLLegendElement:!1,HTMLLIElement:!1,HTMLLinkElement:!1,HTMLMapElement:!1,HTMLMenuElement:!1,HTMLMetaElement:!1,HTMLModElement:!1,HTMLObjectElement:!1,HTMLOListElement:!1,HTMLOptGroupElement:!1,HTMLOptionElement:!1,HTMLParagraphElement:!1,HTMLParamElement:!1,HTMLPreElement:!1,HTMLQuoteElement:!1,HTMLScriptElement:!1,HTMLSelectElement:!1,HTMLStyleElement:!1,HTMLTableCaptionElement:!1,HTMLTableCellElement:!1,HTMLTableColElement:!1,HTMLTableElement:!1,HTMLTableRowElement:!1,HTMLTableSectionElement:!1,HTMLTextAreaElement:!1,HTMLTitleElement:!1,HTMLUListElement:!1,HTMLVideoElement:!1,history:!1,Int16Array:!1,Int32Array:!1,Int8Array:!1,Image:!1,length:!1,localStorage:!1,location:!1,MessageChannel:!1,MessageEvent:!1,MessagePort:!1,MouseEvent:!1,moveBy:!1,moveTo:!1,MutationObserver:!1,name:!1,Node:!1,NodeFilter:!1,navigator:!1,onbeforeunload:!0,onblur:!0,onerror:!0,onfocus:!0,onload:!0,onresize:!0,onunload:!0,open:!1,openDatabase:!1,opener:!1,Option:!1,parent:!1,print:!1,removeEventListener:!1,resizeBy:!1,resizeTo:!1,screen:!1,scroll:!1,scrollBy:!1,scrollTo:!1,sessionStorage:!1,setInterval:!1,setTimeout:!1,SharedWorker:!1,status:!1,SVGAElement:!1,SVGAltGlyphDefElement:!1,SVGAltGlyphElement:!1,SVGAltGlyphItemElement:!1,SVGAngle:!1,SVGAnimateColorElement:!1,SVGAnimateElement:!1,SVGAnimateMotionElement:!1,SVGAnimateTransformElement:!1,SVGAnimatedAngle:!1,SVGAnimatedBoolean:!1,SVGAnimatedEnumeration:!1,SVGAnimatedInteger:!1,SVGAnimatedLength:!1,SVGAnimatedLengthList:!1,SVGAnimatedNumber:!1,SVGAnimatedNumberList:!1,SVGAnimatedPathData:!1,SVGAnimatedPoints:!1,SVGAnimatedPreserveAspectRatio:!1,SVGAnimatedRect:!1,SVGAnimatedString:!1,SVGAnimatedTransformList:!1,SVGAnimationElement:!1,SVGCSSRule:!1,SVGCircleElement:!1,SVGClipPathElement:!1,SVGColor:!1,SVGColorProfileElement:!1,SVGColorProfileRule:!1,SVGComponentTransferFunctionElement:!1,SVGCursorElement:!1,SVGDefsElement:!1,SVGDescElement:!1,SVGDocument:!1,SVGElement:!1,SVGElementInstance:!1,SVGElementInstanceList:!1,SVGEllipseElement:!1,SVGExternalResourcesRequired:!1,SVGFEBlendElement:!1,SVGFEColorMatrixElement:!1,SVGFEComponentTransferElement:!1,SVGFECompositeElement:!1,SVGFEConvolveMatrixElement:!1,SVGFEDiffuseLightingElement:!1,SVGFEDisplacementMapElement:!1,SVGFEDistantLightElement:!1,SVGFEFloodElement:!1,SVGFEFuncAElement:!1,SVGFEFuncBElement:!1,SVGFEFuncGElement:!1,SVGFEFuncRElement:!1,SVGFEGaussianBlurElement:!1,SVGFEImageElement:!1,SVGFEMergeElement:!1,SVGFEMergeNodeElement:!1,SVGFEMorphologyElement:!1,SVGFEOffsetElement:!1,SVGFEPointLightElement:!1,SVGFESpecularLightingElement:!1,SVGFESpotLightElement:!1,SVGFETileElement:!1,SVGFETurbulenceElement:!1,SVGFilterElement:!1,SVGFilterPrimitiveStandardAttributes:!1,SVGFitToViewBox:!1,SVGFontElement:!1,SVGFontFaceElement:!1,SVGFontFaceFormatElement:!1,SVGFontFaceNameElement:!1,SVGFontFaceSrcElement:!1,SVGFontFaceUriElement:!1,SVGForeignObjectElement:!1,SVGGElement:!1,SVGGlyphElement:!1,SVGGlyphRefElement:!1,SVGGradientElement:!1,SVGHKernElement:!1,SVGICCColor:!1,SVGImageElement:!1,SVGLangSpace:!1,SVGLength:!1,SVGLengthList:!1,SVGLineElement:!1,SVGLinearGradientElement:!1,SVGLocatable:!1,SVGMPathElement:!1,SVGMarkerElement:!1,SVGMaskElement:!1,SVGMatrix:!1,SVGMetadataElement:!1,SVGMissingGlyphElement:!1,SVGNumber:!1,SVGNumberList:!1,SVGPaint:!1,SVGPathElement:!1,SVGPathSeg:!1,SVGPathSegArcAbs:!1,SVGPathSegArcRel:!1,SVGPathSegClosePath:!1,SVGPathSegCurvetoCubicAbs:!1,SVGPathSegCurvetoCubicRel:!1,SVGPathSegCurvetoCubicSmoothAbs:!1,SVGPathSegCurvetoCubicSmoothRel:!1,SVGPathSegCurvetoQuadraticAbs:!1,SVGPathSegCurvetoQuadraticRel:!1,SVGPathSegCurvetoQuadraticSmoothAbs:!1,SVGPathSegCurvetoQuadraticSmoothRel:!1,SVGPathSegLinetoAbs:!1,SVGPathSegLinetoHorizontalAbs:!1,SVGPathSegLinetoHorizontalRel:!1,SVGPathSegLinetoRel:!1,SVGPathSegLinetoVerticalAbs:!1,SVGPathSegLinetoVerticalRel:!1,SVGPathSegList:!1,SVGPathSegMovetoAbs:!1,SVGPathSegMovetoRel:!1,SVGPatternElement:!1,SVGPoint:!1,SVGPointList:!1,SVGPolygonElement:!1,SVGPolylineElement:!1,SVGPreserveAspectRatio:!1,SVGRadialGradientElement:!1,SVGRect:!1,SVGRectElement:!1,SVGRenderingIntent:!1,SVGSVGElement:!1,SVGScriptElement:!1,SVGSetElement:!1,SVGStopElement:!1,SVGStringList:!1,SVGStylable:!1,SVGStyleElement:!1,SVGSwitchElement:!1,SVGSymbolElement:!1,SVGTRefElement:!1,SVGTSpanElement:!1,SVGTests:!1,SVGTextContentElement:!1,SVGTextElement:!1,SVGTextPathElement:!1,SVGTextPositioningElement:!1,SVGTitleElement:!1,SVGTransform:!1,SVGTransformList:!1,SVGTransformable:!1,SVGURIReference:!1,SVGUnitTypes:!1,SVGUseElement:!1,SVGVKernElement:!1,SVGViewElement:!1,SVGViewSpec:!1,SVGZoomAndPan:!1,TimeEvent:!1,top:!1,Uint16Array:!1,Uint32Array:!1,Uint8Array:!1,Uint8ClampedArray:!1,WebSocket:!1,window:!1,Worker:!1,XMLHttpRequest:!1,XMLSerializer:!1,XPathEvaluator:!1,XPathException:!1,XPathExpression:!1,XPathNamespace:!1,XPathNSResolver:!1,XPathResult:!1},n.devel={alert:!1,confirm:!1,console:!1,Debug:!1,opera:!1,prompt:!1},n.worker={importScripts:!0,postMessage:!0,self:!0},n.nonstandard={escape:!1,unescape:!1},n.couch={require:!1,respond:!1,getRow:!1,emit:!1,send:!1,start:!1,sum:!1,log:!1,exports:!1,module:!1,provides:!1},n.node={__filename:!1,__dirname:!1,Buffer:!1,DataView:!1,console:!1,exports:!0,GLOBAL:!1,global:!1,module:!1,process:!1,require:!1,setTimeout:!1,clearTimeout:!1,setInterval:!1,clearInterval:!1,setImmediate:!1,clearImmediate:!1},n.phantom={phantom:!0,require:!0,WebPage:!0},n.rhino={defineClass:!1,deserialize:!1,gc:!1,help:!1,importPackage:!1,java:!1,load:!1,loadClass:!1,print:!1,quit:!1,readFile:!1,readUrl:!1,runCommand:!1,seal:!1,serialize:!1,spawn:!1,sync:!1,toint32:!1,version:!1},n.shelljs={target:!1,echo:!1,exit:!1,cd:!1,pwd:!1,ls:!1,find:!1,cp:!1,rm:!1,mv:!1,mkdir:!1,test:!1,cat:!1,sed:!1,grep:!1,which:!1,dirs:!1,pushd:!1,popd:!1,env:!1,exec:!1,chmod:!1,config:!1,error:!1,tempdir:!1},n.wsh={ActiveXObject:!0,Enumerator:!0,GetObject:!0,ScriptEngine:!0,ScriptEngineBuildVersion:!0,ScriptEngineMajorVersion:!0,ScriptEngineMinorVersion:!0,VBArray:!0,WSH:!0,WScript:!0,XDomainRequest:!0},n.dojo={dojo:!1,dijit:!1,dojox:!1,define:!1,require:!1},n.jquery={$:!1,jQuery:!1},n.mootools={$:!1,$$:!1,Asset:!1,Browser:!1,Chain:!1,Class:!1,Color:!1,Cookie:!1,Core:!1,Document:!1,DomReady:!1,DOMEvent:!1,DOMReady:!1,Drag:!1,Element:!1,Elements:!1,Event:!1,Events:!1,Fx:!1,Group:!1,Hash:!1,HtmlTable:!1,Iframe:!1,IframeShim:!1,InputValidator:!1,instanceOf:!1,Keyboard:!1,Locale:!1,Mask:!1,MooTools:!1,Native:!1,Options:!1,OverText:!1,Request:!1,Scroller:!1,Slick:!1,Slider:!1,Sortables:!1,Spinner:!1,Swiff:!1,Tips:!1,Type:!1,typeOf:!1,URI:!1,Window:!1},n.prototypejs={$:!1,$$:!1,$A:!1,$F:!1,$H:!1,$R:!1,$break:!1,$continue:!1,$w:!1,Abstract:!1,Ajax:!1,Class:!1,Enumerable:!1,Element:!1,Event:!1,Field:!1,Form:!1,Hash:!1,Insertion:!1,ObjectRange:!1,PeriodicalExecuter:!1,Position:!1,Prototype:!1,Selector:!1,Template:!1,Toggle:!1,Try:!1,Autocompleter:!1,Builder:!1,Control:!1,Draggable:!1,Draggables:!1,Droppables:!1,Effect:!1,Sortable:!1,SortableObserver:!1,Sound:!1,Scriptaculous:!1},n.yui={YUI:!1,Y:!1,YUI_config:!1}},{}],n4bKNg:[function(e,t,n){var r=e("underscore"),i=e("events"),s=e("../shared/vars.js"),o=e("../shared/messages.js"),u=e("./lex.js").Lexer,a=e("./reg.js"),f=e("./state.js").state,l=e("./style.js"),c=e("console-browserify"),h=function(){function e(e,t){return e=e.trim(),/^[+-]W\d{3}$/g.test(e)?!0:Ot[e]===undefined&&At[e]===undefined&&t.type!=="jslint"?(E("E001",t,e),!1):!0}function t(e){return Object.prototype.toString.call(e)==="[object String]"}function n(e,t){return e?!e.identifier||e.value!==t?!1:!0:!1}function c(e){if(!e.reserved)return!1;var t=e.meta;if(t&&t.isFutureReservedWord&&f.option.inES5()){if(!t.es5)return!1;if(t.strictOnly&&!f.option.strict&&!f.directive["use strict"])return!1;if(e.isProperty)return!1}return!0}function p(e,t){return e.replace(/\{([^{}]*)\}/g,function(e,n){var r=t[n];return typeof r=="string"||typeof r=="number"?r:e})}function d(e,t){var n;for(n in t)r.has(t,n)&&!r.has(h.blacklist,n)&&(e[n]=t[n])}function v(){Object.keys(h.blacklist).forEach(function(e){delete $t[e]})}function m(){f.option.couch&&d($t,s.couch),f.option.rhino&&d($t,s.rhino),f.option.shelljs&&(d($t,s.shelljs),d($t,s.node)),f.option.phantom&&d($t,s.phantom),f.option.prototypejs&&d($t,s.prototypejs),f.option.node&&d($t,s.node),f.option.devel&&d($t,s.devel),f.option.dojo&&d($t,s.dojo),f.option.browser&&d($t,s.browser),f.option.nonstandard&&d($t,s.nonstandard),f.option.jquery&&d($t,s.jquery),f.option.mootools&&d($t,s.mootools),f.option.worker&&d($t,s.worker),f.option.wsh&&d($t,s.wsh),f.option.globalstrict&&f.option.strict!==!1&&(f.option.strict=!0),f.option.yui&&d($t,s.yui),f.option.inMoz=function(e){return f.option.moz},f.option.inESNext=function(e){return f.option.moz||f.option.esnext},f.option.inES5=function(){return!f.option.es3},f.option.inES3=function(e){return e?!f.option.moz&&!f.option.esnext&&f.option.es3:f.option.es3}}function g(e,t,n){var r=Math.floor(t/f.lines.length*100),i=o.errors[e].desc;throw{name:"JSHintError",line:t,character:n,message:i+" ("+r+"% scanned).",raw:i,code:e}}function y(e,t,n,r){return h.undefs.push([e,t,n,r])}function b(e,t,n,r,i,s){var u,a,l,c;if(/^W\d{3}$/.test(e)){if(f.ignored[e])return;c=o.warnings[e]}else/E\d{3}/.test(e)?c=o.errors[e]:/I\d{3}/.test(e)&&(c=o.info[e]);return t=t||f.tokens.next,t.id==="(end)"&&(t=f.tokens.curr),a=t.line||0,u=t.from||0,l={id:"(error)",raw:c.desc,code:c.code,evidence:f.lines[a-1]||"",line:a,character:u,scope:h.scope,a:n,b:r,c:i,d:s},l.reason=p(c.desc,l),h.errors.push(l),f.option.passfail&&g("E042",a,u),Yt+=1,Yt>=f.option.maxerr&&g("E043",a,u),l}function w(e,t,n,r,i,s,o){return b(e,{line:t,from:n},r,i,s,o)}function E(e,t,n,r,i,s){b(e,t,n,r,i,s)}function S(e,t,n,r,i,s,o){return E(e,{line:t,from:n},r,i,s,o)}function x(e,t){var n;return n={id:"(internal)",elem:e,value:t},h.internals.push(n),n}function T(e,t,n,i){t==="exception"&&r.has(Bt["(context)"],e)&&Bt[e]!==!0&&!f.option.node&&b("W002",f.tokens.next,e),r.has(Bt,e)&&!Bt["(global)"]&&(Bt[e]===!0?f.option.latedef&&(f.option.latedef===!0&&r.contains([Bt[e],t],"unction")||!r.contains([Bt[e],t],"unction"))&&b("W003",f.tokens.next,e):(!f.option.shadow&&t!=="exception"||Bt["(blockscope)"].getlabel(e))&&b("W004",f.tokens.next,e)),Bt["(blockscope)"]&&Bt["(blockscope)"].current.has(e)&&E("E044",f.tokens.next,e),i?Bt["(blockscope)"].current.add(e,t,f.tokens.curr):(Bt[e]=t,n&&(Bt["(tokens)"][e]=n),Bt["(global)"]?(Ft[e]=Bt,r.has(It,e)&&(f.option.latedef&&(f.option.latedef===!0&&r.contains([Bt[e],t],"unction")||!r.contains([Bt[e],t],"unction"))&&b("W003",f.tokens.next,e),delete It[e])):Jt[e]=Bt)}function N(){var t=f.tokens.next,n=t.body.match(/(-\s+)?[^\s,]+(?:\s*:\s*(-\s+)?[^\s,]+)?/g),i={};if(t.type==="globals"){n.forEach(function(e){e=e.split(":");var t=(e[0]||"").trim(),n=(e[1]||"").trim();t.charAt(0)==="-"?(t=t.slice(1),n=!1,h.blacklist[t]=t,v()):i[t]=n==="true"}),d($t,i);for(var s in i)r.has(i,s)&&(Dt[s]=t)}t.type==="exported"&&n.forEach(function(e){Pt[e]=!0}),t.type==="members"&&(Xt=Xt||{},n.forEach(function(e){var t=e.charAt(0),n=e.charAt(e.length-1);t===n&&(t==='"'||t==="'")&&(e=e.substr(1,e.length-2).replace("\\b","\b").replace("\\t"," ").replace("\\n","\n").replace("\\v"," ").replace("\\f","\f").replace("\\r","\r").replace("\\\\","\\").replace('\\"','"')),Xt[e]=!1}));var o=["maxstatements","maxparams","maxdepth","maxcomplexity","maxerr","maxlen","indent"];if(t.type==="jshint"||t.type==="jslint")n.forEach(function(n){n=n.split(":");var r=(n[0]||"").trim(),i=(n[1]||"").trim();if(!e(r,t))return;if(o.indexOf(r)>=0){if(i!=="false"){i=+i;if(typeof i!="number"||!isFinite(i)||i<=0||Math.floor(i)!==i){E("E032",t,n[1].trim());return}r==="indent"&&(f.option["(explicitIndent)"]=!0),f.option[r]=i}else r==="indent"?f.option["(explicitIndent)"]=!1:f.option[r]=!1;return}if(r==="validthis"){Bt["(global)"]?E("E009"):i==="true"||i==="false"?f.option.validthis=i==="true":E("E002",t);return}if(r==="quotmark"){switch(i){case"true":case"false":f.option.quotmark=i==="true";break;case"double":case"single":f.option.quotmark=i;break;default:E("E002",t)}return}if(r==="unused"){switch(i){case"true":f.option.unused=!0;break;case"false":f.option.unused=!1;break;case"vars":case"strict":f.option.unused=i;break;default:E("E002",t)}return}if(r==="latedef"){switch(i){case"true":f.option.latedef=!0;break;case"false":f.option.latedef=!1;break;case"nofunc":f.option.latedef="nofunc";break;default:E("E002",t)}return}var s=/^([+-])(W\d{3})$/g.exec(r);if(s){f.ignored[s[2]]=s[1]==="-";return}var u;if(i==="true"||i==="false"){t.type==="jslint"?(u=_t[r]||r,f.option[u]=i==="true",Mt[u]!==undefined&&(f.option[u]=!f.option[u])):f.option[r]=i==="true",r==="newcap"&&(f.option["(explicitNewcap)"]=!0);return}E("E002",t)}),m()}function C(e){var t=e||0,n=0,r;while(n<=t)r=Ut[n],r||(r=Ut[n]=zt.token()),n+=1;return r}function k(e,t){switch(f.tokens.curr.id){case"(number)":f.tokens.next.id==="."&&b("W005",f.tokens.curr);break;case"-":(f.tokens.next.id==="-"||f.tokens.next.id==="--")&&b("W006");break;case"+":(f.tokens.next.id==="+"||f.tokens.next.id==="++")&&b("W007")}if(f.tokens.curr.type==="(string)"||f.tokens.curr.identifier)Ct=f.tokens.curr.value;e&&f.tokens.next.id!==e&&(t?f.tokens.next.id==="(end)"?E("E019",t,t.id):E("E020",f.tokens.next,e,t.id,t.line,f.tokens.next.value):(f.tokens.next.type!=="(identifier)"||f.tokens.next.value!==e)&&b("W116",f.tokens.next,e,f.tokens.next.value)),f.tokens.prev=f.tokens.curr,f.tokens.curr=f.tokens.next;for(;;){f.tokens.next=Ut.shift()||zt.token(),f.tokens.next||g("E041",f.tokens.curr.line);if(f.tokens.next.id==="(end)"||f.tokens.next.id==="(error)")return;f.tokens.next.check&&f.tokens.next.check();if(f.tokens.next.isSpecial)N();else if(f.tokens.next.id!=="(endline)")break}}function L(e){return e.infix||!e.identifier&&!!e.led}function A(){var e=f.tokens.curr,t=f.tokens.next;return t.id===";"||t.id==="}"||t.id===":"?!0:L(t)===L(e)||e.id==="yield"&&f.option.inMoz(!0)?e.line!==t.line:!1}function O(e,t){var n,r=!1,i=!1,s=!1;!t&&f.tokens.next.value==="let"&&C(0).value==="("&&(f.option.inMoz(!0)||b("W118",f.tokens.next,"let expressions"),s=!0,Bt["(blockscope)"].stack(),k("let"),k("("),f.syntax.let.fud.call(f.syntax.let.fud,!1),k(")")),f.tokens.next.id==="(end)"&&E("E006",f.tokens.curr),k(),t&&(Ct="anonymous",Bt["(verb)"]=f.tokens.curr.value);if(t===!0&&f.tokens.curr.fud)n=f.tokens.curr.fud();else{f.tokens.curr.nud?n=f.tokens.curr.nud():E("E030",f.tokens.curr,f.tokens.curr.id);while(e="a"&&t<="z"||t>="A"&&t<="Z")e.identifier=e.reserved=!0;return e}function X(e,t){var n=q(e,150);return W(n),n.nud=typeof t=="function"?t:function(){this.right=O(150),this.arity="unary";if(this.id==="++"||this.id==="--")f.option.plusplus?b("W016",this,this.id):this.right&&(!this.right.identifier||c(this.right))&&this.right.id!=="."&&this.right.id!=="["&&b("W017",this);return this},n}function V(e,t){var n=R(e);return n.type=e,n.nud=t,n}function $(e,t){var n=V(e,t);return n.identifier=!0,n.reserved=!0,n}function J(e,t){var n=V(e,t&&t.nud||function(){return this});return t=t||{},t.isFutureReservedWord=!0,n.value=e,n.identifier=!0,n.reserved=!0,n.meta=t,n}function K(e,t){return $(e,function(){return typeof t=="function"&&t(this),this})}function Q(e,t,n,r){var i=q(e,n);return W(i),i.infix=!0,i.led=function(i){return r||(H(f.tokens.prev,f.tokens.curr),P(f.tokens.curr,f.tokens.next)),e==="in"&&i.id==="!"&&b("W018",i,"!"),typeof t=="function"?t(i,this):(this.left=i,this.right=O(n),this)},i}function G(e){var t=q(e,42);return t.led=function(e){return f.option.inESNext()||b("W104",f.tokens.curr,"arrow function syntax (=>)"),H(f.tokens.prev,f.tokens.curr),P(f.tokens.curr,f.tokens.next),this.left=e,this.right=mt(undefined,undefined,!1,e),this},t}function Y(e,t){var r=q(e,100);return r.led=function(e){H(f.tokens.prev,f.tokens.curr),P(f.tokens.curr,f.tokens.next);var r=O(100);return n(e,"NaN")||n(r,"NaN")?b("W019",this):t&&t.apply(this,[e,r]),(!e||!r)&&g("E041",f.tokens.curr.line),e.id==="!"&&b("W018",e,"!"),r.id==="!"&&b("W018",r,"!"),this.left=e,this.right=r,this},r}function Z(e){return e&&(e.type==="(number)"&&+e.value===0||e.type==="(string)"&&e.value===""||e.type==="null"&&!f.option.eqnull||e.type==="true"||e.type==="false"||e.type==="undefined")}function et(e,t,n){var r=Q(e,typeof t=="function"?t:function(e,t){t.left=e;if(e){$t[e.value]===!1&&Jt[e.value]["(global)"]===!0?b("W020",e):e["function"]&&b("W021",e,e.value),Bt[e.value]==="const"&&E("E013",e,e.value);if(e.id===".")return e.left?e.left.value==="arguments"&&!f.directive["use strict"]&&b("E031",t):b("E031",t),t.right=O(10),t;if(e.id==="[")return f.tokens.curr.left.first?f.tokens.curr.left.first.forEach(function(e){Bt[e.value]==="const"&&E("E013",e,e.value)}):e.left?e.left.value==="arguments"&&!f.directive["use strict"]&&b("E031",t):b("E031",t),t.right=O(10),t;if(e.identifier&&!c(e))return Bt[e.value]==="exception"&&b("W022",e),t.right=O(10),t;e===f.syntax["function"]&&b("W023",f.tokens.curr)}E("E031",t)},n);return r.exps=!0,r.assign=!0,r}function tt(e,t,n){var r=q(e,n);return W(r),r.led=typeof t=="function"?t:function(e){return f.option.bitwise&&b("W016",this,this.id),this.left=e,this.right=O(n),this},r}function nt(e){return et(e,function(e,t){f.option.bitwise&&b("W016",t,t.id),P(f.tokens.prev,f.tokens.curr),P(f.tokens.curr,f.tokens.next);if(e)return e.id==="."||e.id==="["||e.identifier&&!c(e)?(O(10),t):(e===f.syntax["function"]&&b("W023",f.tokens.curr),t);E("E031",t)},20)}function rt(e){var t=q(e,150);return t.led=function(e){return f.option.plusplus?b("W016",this,this.id):(!e.identifier||c(e))&&e.id!=="."&&e.id!=="["&&b("W017",this),this.left=e,this},t}function it(e,t){if(!f.tokens.next.identifier)return;k();var n=f.tokens.curr,r=f.tokens.curr.value;return c(n)?t&&f.option.inES5()?r:e&&r==="undefined"?r:(t&&!kt.getCache("displayed:I002")&&(kt.setCache("displayed:I002",!0),b("I002")),b("W024",f.tokens.curr,f.tokens.curr.id),r):r}function st(e,t){var n=it(e,t);if(n)return n;f.tokens.curr.id==="function"&&f.tokens.next.id==="("?b("W025"):E("E030",f.tokens.next,f.tokens.next.value)}function ot(e){var t=0,n;if(f.tokens.next.id!==";"||Vt)return;for(;;){n=C(t);if(n.reach)return;if(n.id!=="(endline)"){if(n.id==="function"){if(!f.option.latedef)break;b("W026",n);break}b("W027",n,n.value,e);break}t+=1}}function ut(e){var t,n=Rt,i,s=Jt,o=f.tokens.next;if(o.id===";"){k(";");return}var u=c(o);u&&o.meta&&o.meta.isFutureReservedWord&&C().id===":"&&(b("W024",o,o.id),u=!1);if(r.has(["[","{"],o.value)&&on().isDestAssign){f.option.inESNext()||b("W104",f.tokens.curr,"destructuring expression"),t=wt(),t.forEach(function(e){y(Bt,"W117",e.token,e.id)}),k("="),Et(t,O(10,!0)),k(";");return}o.identifier&&!u&&C().id===":"&&(k(),k(":"),Jt=Object.create(s),T(o.value,"label"),!f.tokens.next.labelled&&f.tokens.next.value!=="{"&&b("W028",f.tokens.next,o.value,f.tokens.next.value),f.tokens.next.label=o.value,o=f.tokens.next);if(o.id==="{"){lt(!0,!0);return}return e||B(),i=O(0,!0),o.block||(!f.option.expr&&(!i||!i.exps)?b("W030",f.tokens.curr):f.option.nonew&&i&&i.left&&i.id==="("&&i.left.id==="new"&&b("W031",o),f.tokens.next.id!==";"?f.option.asi||(!f.option.lastsemic||f.tokens.next.id!=="}"||f.tokens.next.line!==f.tokens.curr.line)&&w("W033",f.tokens.curr.line,f.tokens.curr.character):(M(f.tokens.curr,f.tokens.next),k(";"),P(f.tokens.curr,f.tokens.next))),Rt=n,Jt=s,i}function at(e){var t=[],n;while(!f.tokens.next.reach&&f.tokens.next.id!=="(end)")f.tokens.next.id===";"?(n=C(),(!n||n.id!=="("&&n.id!=="[")&&b("W032"),k(";")):t.push(ut(e===f.tokens.next.line));return t}function ft(){var e,t,n;for(;;){if(f.tokens.next.id==="(string)"){t=C(0);if(t.id==="(endline)"){e=1;do n=C(e),e+=1;while(n.id==="(endline)");if(n.id!==";"){if(n.id!=="(string)"&&n.id!=="(number)"&&n.id!=="(regexp)"&&n.identifier!==!0&&n.id!=="}")break;b("W033",f.tokens.next)}else t=n}else if(t.id==="}")b("W033",t);else if(t.id!==";")break;B(),k(),f.directive[f.tokens.curr.value]&&b("W034",f.tokens.curr,f.tokens.curr.value),f.tokens.curr.value==="use strict"&&(f.option["(explicitNewcap)"]||(f.option.newcap=!0),f.option.undef=!0),f.directive[f.tokens.curr.value]=!0,t.id===";"&&k(";");continue}break}}function lt(e,t,n,i){var s,o=qt,u=Rt,a,l=Jt,c,h,p;qt=e;if(!e||!f.option.funcscope)Jt=Object.create(Jt);P(f.tokens.curr,f.tokens.next),c=f.tokens.next;var d=Bt["(metrics)"];d.nestedBlockDepth+=1,d.verifyMaxNestedBlockDepthPerFunction();if(f.tokens.next.id==="{"){k("{"),Bt["(blockscope)"].stack(),h=f.tokens.curr.line;if(f.tokens.next.id!=="}"){Rt+=f.option.indent;while(!e&&f.tokens.next.from>Rt)Rt+=f.option.indent;if(n){a={};for(p in f.directive)r.has(f.directive,p)&&(a[p]=f.directive[p]);ft(),f.option.strict&&Bt["(context)"]["(global)"]&&!a["use strict"]&&!f.directive["use strict"]&&b("E007")}s=at(h),d.statementCount+=s.length,n&&(f.directive=a),Rt-=f.option.indent,h!==f.tokens.next.line&&B()}else h!==f.tokens.next.line&&B();k("}",c),Bt["(blockscope)"].unstack(),Rt=u}else if(!e)if(n){a={},t&&!i&&!f.option.inMoz(!0)&&E("W118",f.tokens.curr,"function closure expressions");if(!t)for(p in f.directive)r.has(f.directive,p)&&(a[p]=f.directive[p]);O(10),f.option.strict&&Bt["(context)"]["(global)"]&&!a["use strict"]&&!f.directive["use strict"]&&b("E007")}else E("E021",f.tokens.next,"{",f.tokens.next.value);else Bt["(nolet)"]=!0,(!t||f.option.curly)&&b("W116",f.tokens.next,"{",f.tokens.next.value),Vt=!0,Rt+=f.option.indent,s=[ut(f.tokens.next.line===f.tokens.curr.line)],Rt-=f.option.indent,Vt=!1,delete Bt["(nolet)"];Bt["(verb)"]=null;if(!e||!f.option.funcscope)Jt=l;return qt=o,e&&f.option.noempty&&(!s||s.length===0)&&b("W035"),d.nestedBlockDepth-=1,s}function ct(e){Xt&&typeof Xt[e]!="boolean"&&b("W036",f.tokens.curr,e),typeof Wt[e]=="number"?Wt[e]+=1:Wt[e]=1}function ht(e){var t=e.value,n=e.line,r=It[t];typeof r=="function"&&(r=!1),r?r[r.length-1]!==n&&r.push(n):(r=[n],It[t]=r)}function pt(){var e={};return e.exps=!0,Bt["(comparray)"].stack(),e.right=O(10),k("for"),f.tokens.next.value==="each"&&(k("each"),f.option.inMoz(!0)||b("W118",f.tokens.curr,"for each")),k("("),Bt["(comparray)"].setState("define"),e.left=O(10),k(")"),f.tokens.next.value==="if"&&(k("if"),k("("),Bt["(comparray)"].setState("filter"),e.filter=O(10),k(")")),k("]"),Bt["(comparray)"].unstack(),e}function dt(){var e=it(!1,!0);return e||(f.tokens.next.id==="(string)"?(e=f.tokens.next.value,k()):f.tokens.next.id==="(number)"&&(e=f.tokens.next.value.toString(),k())),e==="hasOwnProperty"&&b("W001"),e}function vt(e){var t,n,i=[],s,o=[],u,a=!1;if(e){if(e instanceof Array){for(var l in e){t=e[l];if(r.contains(["{","["],t.id))for(u in t.left)u=o[u],u.id&&(i.push(u.id),T(u.id,"unused",u.token));else{if(t.value==="..."){f.option.inESNext()||b("W104",t,"spread/rest operator");continue}T(t.value,"unused",t)}}return i}if(e.identifier===!0)return T(e.value,"unused",e),[e]}n=f.tokens.next,k("("),D();if(f.tokens.next.id===")"){k(")");return}for(;;){if(r.contains(["{","["],f.tokens.next.id)){o=wt();for(u in o)u=o[u],u.id&&(i.push(u.id),T(u.id,"unused",u.token))}else f.tokens.next.value==="..."?(f.option.inESNext()||b("W104",f.tokens.next,"spread/rest operator"),k("..."),D(),s=st(!0),i.push(s),T(s,"unused",f.tokens.curr)):(s=st(!0),i.push(s),T(s,"unused",f.tokens.curr));a&&f.tokens.next.id!=="="&&E("E051",f.tokens.current),f.tokens.next.id==="="&&(f.option.inESNext()||b("W119",f.tokens.next,"default parameters"),k("="),a=!0,O(10));if(f.tokens.next.id!==",")return k(")",n),D(f.tokens.prev,f.tokens.curr),i;I()}}function mt(e,t,n,r){var i,s=f.option,o=f.ignored,u=Jt;return f.option=Object.create(f.option),f.ignored=Object.create(f.ignored),Jt=Object.create(Jt),Bt={"(name)":e||'"'+Ct+'"',"(line)":f.tokens.next.line,"(character)":f.tokens.next.character,"(context)":Bt,"(breakage)":0,"(loopage)":0,"(metrics)":gt(f.tokens.next),"(scope)":Jt,"(statement)":t,"(tokens)":{},"(blockscope)":Bt["(blockscope)"],"(comparray)":Bt["(comparray)"]},n&&(Bt["(generator)"]=!0),i=Bt,f.tokens.curr.funct=Bt,jt.push(Bt),e&&T(e,"function"),Bt["(params)"]=vt(r),Bt["(metrics)"].verifyMaxParametersPerFunction(Bt["(params)"]),lt(!1,!0,!0,r?!0:!1),n&&Bt["(generator)"]!=="yielded"&&E("E047",f.tokens.curr),Bt["(metrics)"].verifyMaxStatementsPerFunction(),Bt["(metrics)"].verifyMaxComplexityPerFunction(),Bt["(unusedOption)"]=f.option.unused,Jt=u,f.option=s,f.ignored=o,Bt["(last)"]=f.tokens.curr.line,Bt["(lastcharacter)"]=f.tokens.curr.character,Bt=Bt["(context)"],i}function gt(e){return{statementCount:0,nestedBlockDepth:-1,ComplexityCount:1,verifyMaxStatementsPerFunction:function(){f.option.maxstatements&&this.statementCount>f.option.maxstatements&&b("W071",e,this.statementCount)},verifyMaxParametersPerFunction:function(t){t=t||[],f.option.maxparams&&t.length>f.option.maxparams&&b("W072",e,t.length)},verifyMaxNestedBlockDepthPerFunction:function(){f.option.maxdepth&&this.nestedBlockDepth>0&&this.nestedBlockDepth===f.option.maxdepth+1&&b("W073",null,this.nestedBlockDepth)},verifyMaxComplexityPerFunction:function(){var t=f.option.maxcomplexity,n=this.ComplexityCount;t&&n>t&&b("W074",e,n)}}}function yt(){Bt["(metrics)"].ComplexityCount+=1}function bt(e){var t,n;e&&(t=e.id,n=e.paren,t===","&&(e=e.exprs[e.exprs.length-1])&&(t=e.id,n=n||e.paren));switch(t){case"=":case"+=":case"-=":case"*=":case"%=":case"&=":case"|=":case"^=":case"/=":!n&&!f.option.boss&&b("W084")}}function wt(){var e,t,n=[];f.option.inESNext()||b("W104",f.tokens.curr,"destructuring expression");var i=function(){var e;if(r.contains(["[","{"],f.tokens.next.value)){t=wt();for(var i in t)i=t[i],n.push({id:i.id,token:i.token})}else f.tokens.next.value===","?n.push({id:null,token:f.tokens.curr}):(e=st(),e&&n.push({id:e,token:f.tokens.curr}))};if(f.tokens.next.value==="["){k("["),i();while(f.tokens.next.value!=="]")k(","),i();k("]")}else if(f.tokens.next.value==="{"){k("{"),e=st(),f.tokens.next.value===":"?(k(":"),i()):n.push({id:e,token:f.tokens.curr});while(f.tokens.next.value!=="}")k(","),e=st(),f.tokens.next.value===":"?(k(":"),i()):n.push({id:e,token:f.tokens.curr});k("}")}return n}function Et(e,t){t.first&&r.zip(e,t.first).forEach(function(e){var t=e[0],n=e[1];t&&n?t.first=n:t&&t.first&&!n&&b("W080",t.first,t.first.value)})}function St(e){return f.option.inESNext()||b("W104",f.tokens.curr,"class"),e?(this.name=st(),T(this.name,"unused",f.tokens.curr)):f.tokens.next.identifier&&f.tokens.next.value!=="extends"&&(this.name=st()),xt(this),this}function xt(e){var t=f.directive["use strict"];f.tokens.next.value==="extends"&&(k("extends"),e.heritage=O(10)),f.directive["use strict"]=!0,k("{"),e.body=f.syntax["{"].nud(!0),f.directive["use strict"]=t}function Tt(){var e=on();e.notJson?(!f.option.inESNext()&&e.isDestAssign&&b("W104",f.tokens.curr,"destructuring assignment"),at()):(f.option.laxbreak=!0,f.jsonMode=!0,Nt())}function Nt(){function e(){var e={},t=f.tokens.next;k("{");if(f.tokens.next.id!=="}")for(;;){if(f.tokens.next.id==="(end)")E("E026",f.tokens.next,t.line);else{if(f.tokens.next.id==="}"){b("W094",f.tokens.curr);break}f.tokens.next.id===","?E("E028",f.tokens.next):f.tokens.next.id!=="(string)"&&b("W095",f.tokens.next,f.tokens.next.value)}e[f.tokens.next.value]===!0?b("W075",f.tokens.next,f.tokens.next.value):f.tokens.next.value==="__proto__"&&!f.option.proto||f.tokens.next.value==="__iterator__"&&!f.option.iterator?b("W096",f.tokens.next,f.tokens.next.value):e[f.tokens.next.value]=!0,k(),k(":"),Nt();if(f.tokens.next.id!==",")break;k(",")}k("}")}function t(){var e=f.tokens.next;k("[");if(f.tokens.next.id!=="]")for(;;){if(f.tokens.next.id==="(end)")E("E027",f.tokens.next,e.line);else{if(f.tokens.next.id==="]"){b("W094",f.tokens.curr);break}f.tokens.next.id===","&&E("E028",f.tokens.next)}Nt();if(f.tokens.next.id!==",")break;k(",")}k("]")}switch(f.tokens.next.id){case"{":e();break;case"[":t();break;case"true":case"false":case"null":case"(number)":case"(string)":k();break;case"-":k("-"),f.tokens.curr.character!==f.tokens.next.from&&b("W011",f.tokens.curr),M(f.tokens.curr,f.tokens.next),k("(number)");break;default:E("E003",f.tokens.next)}}var Ct,kt,Lt={"<":!0,"<=":!0,"==":!0,"===":!0,"!==":!0,"!=":!0,">":!0,">=":!0,"+":!0,"-":!0,"*":!0,"/":!0,"%":!0},At={asi:!0,bitwise:!0,boss:!0,browser:!0,camelcase:!0,couch:!0,curly:!0,debug:!0,devel:!0,dojo:!0,eqeqeq:!0,eqnull:!0,es3:!0,es5:!0,esnext:!0,moz:!0,evil:!0,expr:!0,forin:!0,funcscope:!0,gcl:!0,globalstrict:!0,immed:!0,iterator:!0,jquery:!0,lastsemic:!0,laxbreak:!0,laxcomma:!0,loopfunc:!0,mootools:!0,multistr:!0,newcap:!0,noarg:!0,node:!0,noempty:!0,nonew:!0,nonstandard:!0,nomen:!0,onevar:!0,passfail:!0,phantom:!0,plusplus:!0,proto:!0,prototypejs:!0,rhino:!0,shelljs:!0,undef:!0,scripturl:!0,shadow:!0,smarttabs:!0,strict:!0,sub:!0,supernew:!0,trailing:!0,validthis:!0,withstmt:!0,white:!0,worker:!0,wsh:!0,yui:!0,onecase:!0,regexp:!0,regexdash:!0},Ot={maxlen:!1,indent:!1,maxerr:!1,predef:!1,quotmark:!1,scope:!1,maxstatements:!1,maxdepth:!1,maxparams:!1,maxcomplexity:!1,unused:!0,latedef:!1},Mt={bitwise:!0,forin:!0,newcap:!0,nomen:!0,plusplus:!0,regexp:!0,undef:!0,white:!0,eqeqeq:!0,onevar:!0,strict:!0},_t={eqeq:"eqeqeq",vars:"onevar",windows:"wsh",sloppy:"strict"},Dt,Pt,Ht=["closure","exception","global","label","outer","unused","var"],Bt,jt,Ft,It,qt,Rt,Ut,zt,Wt,Xt,Vt,$t,Jt,Kt,Qt,Gt,Yt,Zt=[],en=new i.EventEmitter;V("(number)",function(){return this}),V("(string)",function(){return this}),f.syntax["(identifier)"]={type:"(identifier)",lbp:0,identifier:!0,nud:function(){var e=this.value,t=Jt[e],n;typeof t=="function"?t=undefined:typeof t=="boolean"&&(n=Bt,Bt=jt[0],T(e,"var"),t=Bt,Bt=n);var i;r.has(Bt,"(blockscope)")&&(i=Bt["(blockscope)"].getlabel(e));if(Bt===t||i)switch(i?i[e]["(type)"]:Bt[e]){case"unused":i?i[e]["(type)"]="var":Bt[e]="var";break;case"unction":i?i[e]["(type)"]="function":Bt[e]="function",this["function"]=!0;break;case"function":this["function"]=!0;break;case"label":b("W037",f.tokens.curr,e)}else if(Bt["(global)"])typeof $t[e]!="boolean"&&(Ct!=="typeof"&&Ct!=="delete"||f.tokens.next&&(f.tokens.next.value==="."||f.tokens.next.value==="["))&&(Bt["(comparray)"].check(e)||y(Bt,"W117",f.tokens.curr,e)),ht(f.tokens.curr);else switch(Bt[e]){case"closure":case"function":case"var":case"unused":b("W038",f.tokens.curr,e);break;case"label":b("W037",f.tokens.curr,e);break;case"outer":case"global":break;default:if(t===!0)Bt[e]=!0;else if(t===null)b("W039",f.tokens.curr,e),ht(f.tokens.curr);else if(typeof t!="object")(Ct!=="typeof"&&Ct!=="delete"||f.tokens.next&&(f.tokens.next.value==="."||f.tokens.next.value==="["))&&y(Bt,"W117",f.tokens.curr,e),Bt[e]=!0,ht(f.tokens.curr);else switch(t[e]){case"function":case"unction":this["function"]=!0,t[e]="closure",Bt[e]=t["(global)"]?"global":"outer";break;case"var":case"unused":t[e]="closure",Bt[e]=t["(global)"]?"global":"outer";break;case"closure":Bt[e]=t["(global)"]?"global":"outer";break;case"label":b("W037",f.tokens.curr,e)}}return this},led:function(){E("E033",f.tokens.next,f.tokens.next.value)}},V("(regexp)",function(){return this}),R("(endline)"),R("(begin)"),R("(end)").reach=!0,R("(error)").reach=!0,R("}").reach=!0,R(")"),R("]"),R('"').reach=!0,R("'").reach=!0,R(";"),R(":").reach=!0,R("#"),$("else"),$("case").reach=!0,$("catch"),$("default").reach=!0,$("finally"),K("arguments",function(e){f.directive["use strict"]&&Bt["(global)"]&&b("E008",e)}),K("eval"),K("false"),K("Infinity"),K("null"),K("this",function(e){f.directive["use strict"]&&!f.option.validthis&&(Bt["(statement)"]&&Bt["(name)"].charAt(0)>"Z"||Bt["(global)"])&&b("W040",e)}),K("true"),K("undefined"),et("=","assign",20),et("+=","assignadd",20),et("-=","assignsub",20),et("*=","assignmult",20),et("/=","assigndiv",20).nud=function(){E("E014")},et("%=","assignmod",20),nt("&=","assignbitand",20),nt("|=","assignbitor",20),nt("^=","assignbitxor",20),nt("<<=","assignshiftleft",20),nt(">>=","assignshiftright",20),nt(">>>=","assignshiftrightunsigned",20),Q(",",function(e,t){var n;t.exprs=[e];if(!I({peek:!0}))return t;for(;;){if(!(n=O(10)))break;t.exprs.push(n);if(f.tokens.next.value!==","||!I())break}return t},10,!0),Q("?",function(e,t){return yt(),t.left=e,t.right=O(10),k(":"),t["else"]=O(10),t},30);var tn=40;Q("||",function(e,t){return yt(),t.left=e,t.right=O(tn),t},tn),Q("&&","and",50),tt("|","bitor",70),tt("^","bitxor",80),tt("&","bitand",90),Y("==",function(e,t){var n=f.option.eqnull&&(e.value==="null"||t.value==="null");return!n&&f.option.eqeqeq?b("W116",this,"===","=="):Z(e)?b("W041",this,"===",e.value):Z(t)&&b("W041",this,"===",t.value),this}),Y("==="),Y("!=",function(e,t){var n=f.option.eqnull&&(e.value==="null"||t.value==="null");return!n&&f.option.eqeqeq?b("W116",this,"!==","!="):Z(e)?b("W041",this,"!==",e.value):Z(t)&&b("W041",this,"!==",t.value),this}),Y("!=="),Y("<"),Y(">"),Y("<="),Y(">="),tt("<<","shiftleft",120),tt(">>","shiftright",120),tt(">>>","shiftrightunsigned",120),Q("in","in",120),Q("instanceof","instanceof",120),Q("+",function(e,t){var n=O(130);return e&&n&&e.id==="(string)"&&n.id==="(string)"?(e.value+=n.value,e.character=n.character,!f.option.scripturl&&a.javascriptURL.test(e.value)&&b("W050",e),e):(t.left=e,t.right=n,t)},130),X("+","num"),X("+++",function(){return b("W007"),this.right=O(150),this.arity="unary",this}),Q("+++",function(e){return b("W007"),this.left=e,this.right=O(130),this},130),Q("-","sub",130),X("-","neg"),X("---",function(){return b("W006"),this.right=O(150),this.arity="unary",this}),Q("---",function(e){return b("W006"),this.left=e,this.right=O(130),this},130),Q("*","mult",140),Q("/","div",140),Q("%","mod",140),rt("++","postinc"),X("++","preinc"),f.syntax["++"].exps=!0,rt("--","postdec"),X("--","predec"),f.syntax["--"].exps=!0,X("delete",function(){var e=O(10);return(!e||e.id!=="."&&e.id!=="[")&&b("W051"),this.first=e,this}).exps=!0,X("~",function(){return f.option.bitwise&&b("W052",this,"~"),O(150),this}),X("...",function(){return f.option.inESNext()||b("W104",this,"spread/rest operator"),f.tokens.next.identifier||E("E030",f.tokens.next,f.tokens.next.value),O(150),this}),X("!",function(){return this.right=O(150),this.arity="unary",this.right||g("E041",this.line||0),Lt[this.right.id]===!0&&b("W018",this,"!"),this}),X("typeof","typeof"),X("new",function(){var e=O(155),t;if(e&&e.id!=="function")if(e.identifier){e["new"]=!0;switch(e.value){case"Number":case"String":case"Boolean":case"Math":case"JSON":b("W053",f.tokens.prev,e.value);break;case"Function":f.option.evil||b("W054");break;case"Date":case"RegExp":break;default:e.id!=="function"&&(t=e.value.substr(0,1),f.option.newcap&&(t<"A"||t>"Z")&&!r.has(Ft,e.value)&&b("W055",f.tokens.curr))}}else e.id!=="."&&e.id!=="["&&e.id!=="("&&b("W056",f.tokens.curr);else f.option.supernew||b("W057",this);return M(f.tokens.curr,f.tokens.next),f.tokens.next.id!=="("&&!f.option.supernew&&b("W058",f.tokens.curr,f.tokens.curr.value),this.first=e,this}),f.syntax["new"].exps=!0,X("void").exps=!0,Q(".",function(e,t){M(f.tokens.prev,f.tokens.curr),_();var n=st(!1,!0);return typeof n=="string"&&ct(n),t.left=e,t.right=n,n&&n==="hasOwnProperty"&&f.tokens.next.value==="="&&b("W001"),!e||e.value!=="arguments"||n!=="callee"&&n!=="caller"?!f.option.evil&&e&&e.value==="document"&&(n==="write"||n==="writeln")&&b("W060",e):f.option.noarg?b("W059",e,n):f.directive["use strict"]&&E("E008"),!f.option.evil&&(n==="eval"||n==="execScript")&&b("W061"),t},160,!0),Q("(",function(e,t){f.tokens.prev.id!=="}"&&f.tokens.prev.id!==")"&&_(f.tokens.prev,f.tokens.curr),D(),f.option.immed&&e&&!e.immed&&e.id==="function"&&b("W062");var n=0,r=[];e&&e.type==="(identifier)"&&e.value.match(/^[A-Z]([A-Z0-9_$]*[a-z][A-Za-z0-9_$]*)?$/)&&"Number String Boolean Date Object".indexOf(e.value)===-1&&(e.value==="Math"?b("W063",e):f.option.newcap&&b("W064",e));if(f.tokens.next.id!==")")for(;;){r[r.length]=O(10),n+=1;if(f.tokens.next.id!==",")break;I()}return k(")"),D(f.tokens.prev,f.tokens.curr),typeof e=="object"&&(e.value==="parseInt"&&n===1&&b("W065",f.tokens.curr),f.option.evil||(e.value==="eval"||e.value==="Function"||e.value==="execScript"?(b("W061",e),r[0]&&[0].id==="(string)"&&x(e,r[0].value)):!r[0]||r[0].id!=="(string)"||e.value!=="setTimeout"&&e.value!=="setInterval"?r[0]&&r[0].id==="(string)"&&e.value==="."&&e.left.value==="window"&&(e.right==="setTimeout"||e.right==="setInterval")&&(b("W066",e),x(e,r[0].value)):(b("W066",e),x(e,r[0].value))),!e.identifier&&e.id!=="."&&e.id!=="["&&e.id!=="("&&e.id!=="&&"&&e.id!=="||"&&e.id!=="?"&&b("W067",e)),t.left=e,t},155,!0).exps=!0,X("(",function(){D();var e,t=[],n,r,i=0,s;do n=C(i),i+=1,r=C(i),i+=1;while(n.value!==")"&&r.value!=="=>"&&r.value!==";"&&r.type!=="(end)");f.tokens.next.id==="function"&&(f.tokens.next.immed=!0);var o=[];if(f.tokens.next.id!==")")for(;;){if(r.value==="=>"&&f.tokens.next.value==="{"){e=f.tokens.next,e.left=wt(),t.push(e);for(var u in e.left)o.push(e.left[u].token)}else o.push(O(10));if(f.tokens.next.id!==",")break;I()}k(")",this),D(f.tokens.prev,f.tokens.curr),f.option.immed&&o[0]&&o[0].id==="function"&&f.tokens.next.id!=="("&&(f.tokens.next.id!=="."||C().value!=="call"&&C().value!=="apply")&&b("W068",this);if(f.tokens.next.value==="=>")return o;if(!o.length)return;return o.length>1?(s=Object.create(f.syntax[","]),s.exprs=o):s=o[0],s&&(s.paren=!0),s}),G("=>"),Q("[",function(e,t){_(f.tokens.prev,f.tokens.curr),D();var n=O(10),r;return n&&n.type==="(string)"&&(!f.option.evil&&(n.value==="eval"||n.value==="execScript")&&b("W061",t),ct(n.value),!f.option.sub&&a.identifier.test(n.value)&&(r=f.syntax[n.value],(!r||!c(r))&&b("W069",f.tokens.prev,n.value))),k("]",t),n&&n.value==="hasOwnProperty"&&f.tokens.next.value==="="&&b("W001"),D(f.tokens.prev,f.tokens.curr),t.left=e,t.right=n,t},160,!0),X("[",function(){var e=on(!0);if(e.isCompArray)return f.option.inMoz(!0)||b("W118",f.tokens.curr,"array comprehension"),pt();e.isDestAssign&&!f.option.inESNext()&&b("W104",f.tokens.curr,"destructuring assignment");var t=f.tokens.curr.line!==f.tokens.next.line;this.first=[],t&&(Rt+=f.option.indent,f.tokens.next.from===Rt+f.option.indent&&(Rt+=f.option.indent));while(f.tokens.next.id!=="(end)"){while(f.tokens.next.id===",")f.option.inES5()||b("W070"),k(",");if(f.tokens.next.id==="]")break;t&&f.tokens.curr.line!==f.tokens.next.line&&B(),this.first.push(O(10));if(f.tokens.next.id!==",")break;I({allowTrailing:!0});if(f.tokens.next.id==="]"&&!f.option.inES5(!0)){b("W070",f.tokens.curr);break}}return t&&(Rt-=f.option.indent,B()),k("]",this),this},160),function(e){e.nud=function(e){function t(e,t){h[e]&&r.has(h,e)?b("W075",f.tokens.next,u):h[e]={},h[e].basic=!0,h[e].basictkn=t}function n(e,t){h[e]&&r.has(h,e)?(h[e].basic||h[e].setter)&&b("W075",f.tokens.next,u):h[e]={},h[e].setter=!0,h[e].setterToken=t}function i(e){h[e]&&r.has(h,e)?(h[e].basic||h[e].getter)&&b("W075",f.tokens.next,u):h[e]={},h[e].getter=!0,h[e].getterToken=f.tokens.curr}var s,o,u,a,l,c,h={},p="";s=f.tokens.curr.line!==f.tokens.next.line,s&&(Rt+=f.option.indent,f.tokens.next.from===Rt+f.option.indent&&(Rt+=f.option.indent));for(;;){if(f.tokens.next.id==="}")break;s&&B(),e&&f.tokens.next.value==="static"&&(k("static"),p="static ");if(f.tokens.next.value==="get"&&C().id!==":")k("get"),f.option.inES5(!e)||E("E034"),u=dt(),u||E("E035"),e&&u==="constructor"&&E("E049",f.tokens.next,"class getter method",u),i(p+u),l=f.tokens.next,M(f.tokens.curr,f.tokens.next),o=mt(),a=o["(params)"],a&&b("W076",l,a[0],u),M(f.tokens.curr,f.tokens.next);else if(f.tokens.next.value==="set"&&C().id!==":")k("set"),f.option.inES5(!e)||E("E034"),u=dt(),u||E("E035"),e&&u==="constructor"&&E("E049",f.tokens.next,"class setter method",u),n(p+u,f.tokens.next),l=f.tokens.next,M(f.tokens.curr,f.tokens.next),o=mt(),a=o["(params)"],(!a||a.length!==1)&&b("W077",l,u);else{c=!1,f.tokens.next.value==="*"&&f.tokens.next.type==="(punctuator)"&&(f.option.inESNext()||b("W104",f.tokens.next,"generator functions"),k("*"),c=!0),u=dt(),t(p+u,f.tokens.next);if(typeof u!="string")break;f.tokens.next.value==="("?(f.option.inESNext()||b("W104",f.tokens.curr,"concise methods"),mt(u,undefined,c)):e||(k(":"),P(f.tokens.curr,f.tokens.next),O(10))}e&&u==="prototype"&&E("E049",f.tokens.next,"class method",u),ct(u);if(e){p="";continue}if(f.tokens.next.id!==",")break;I({allowTrailing:!0,property:!0}),f.tokens.next.id===","?b("W070",f.tokens.curr):f.tokens.next.id==="}"&&!f.option.inES5(!0)&&b("W070",f.tokens.curr)}s&&(Rt-=f.option.indent,B()),k("}",this);if(f.option.inES5())for(var d in h)r.has(h,d)&&h[d].setter&&!h[d].getter&&b("W078",h[d].setterToken);return this},e.fud=function(){E("E036",f.tokens.curr)}}(R("{"));var nn=U("const",function(e){var t,n,i;f.option.inESNext()||b("W104",f.tokens.curr,"const"),this.first=[];for(;;){var s=[];P(f.tokens.curr,f.tokens.next),r.contains(["{","["],f.tokens.next.value)?(t=wt(),i=!1):(t=[{id:st(),token:f.tokens.curr}],i=!0);for(var o in t)o=t[o],Bt[o.id]==="const"&&b("E011",null,o.id),Bt["(global)"]&&$t[o.id]===!1&&b("W079",o.token,o.id),o.id&&(T(o.id,"const"),s.push(o.token));if(e)break;this.first=this.first.concat(s),f.tokens.next.id!=="="&&b("E012",f.tokens.curr,f.tokens.curr.value),f.tokens.next.id==="="&&(P(f.tokens.curr,f.tokens.next),k("="),P(f.tokens.curr,f.tokens.next),f.tokens.next.id==="undefined"&&b("W080",f.tokens.prev,f.tokens.prev.value),C(0).id==="="&&f.tokens.next.identifier&&b("W120",f.tokens.next,f.tokens.next.value),n=O(10),i?t[0].first=n:Et(s,n));if(f.tokens.next.id!==",")break;I()}return this});nn.exps=!0;var rn=U("var",function(e){var t,n,i;Bt["(onevar)"]&&f.option.onevar?b("W081"):Bt["(global)"]||(Bt["(onevar)"]=!0),this.first=[];for(;;){var s=[];P(f.tokens.curr,f.tokens.next),r.contains(["{","["],f.tokens.next.value)?(t=wt(),n=!1):(t=[{id:st(),token:f.tokens.curr}],n=!0);for(var o in t)o=t[o],f.option.inESNext()&&Bt[o.id]==="const"&&b("E011",null,o.id),Bt["(global)"]&&$t[o.id]===!1&&b("W079",o.token,o.id),o.id&&(T(o.id,"unused",o.token),s.push(o.token));if(e)break;this.first=this.first.concat(s),f.tokens.next.id==="="&&(P(f.tokens.curr,f.tokens.next),k("="),P(f.tokens.curr,f.tokens.next),f.tokens.next.id==="undefined"&&b("W080",f.tokens.prev,f.tokens.prev.value),C(0).id==="="&&f.tokens.next.identifier&&b("W120",f.tokens.next,f.tokens.next.value),i=O(10),n?t[0].first=i:Et(s,i));if(f.tokens.next.id!==",")break;I()}return this});rn.exps=!0;var sn=U("let",function(e){var t,n,i,s;f.option.inESNext()||b("W104",f.tokens.curr,"let"),f.tokens.next.value==="("?(f.option.inMoz(!0)||b("W118",f.tokens.next,"let block"),k("("),Bt["(blockscope)"].stack(),s=!0):Bt["(nolet)"]&&E("E048",f.tokens.curr),Bt["(onevar)"]&&f.option.onevar?b("W081"):Bt["(global)"]||(Bt["(onevar)"]=!0),this.first=[];for(;;){var o=[];P(f.tokens.curr,f.tokens.next),r.contains(["{","["],f.tokens.next.value)?(t=wt(),n=!1):(t=[{id:st(),token:f.tokens.curr.value}],n=!0);for(var u in t)u=t[u],f.option.inESNext()&&Bt[u.id]==="const"&&b("E011",null,u.id),Bt["(global)"]&&$t[u.id]===!1&&b("W079",u.token,u.id),u.id&&!Bt["(nolet)"]&&(T(u.id,"unused",u.token,!0),o.push(u.token));if(e)break;this.first=this.first.concat(o),f.tokens.next.id==="="&&(P(f.tokens.curr,f.tokens.next),k("="),P(f.tokens.curr,f.tokens.next),f.tokens.next.id==="undefined"&&b("W080",f.tokens.prev,f.tokens.prev.value),C(0).id==="="&&f.tokens.next.identifier&&b("W120",f.tokens.next,f.tokens.next.value),i=O(10),n?t[0].first=i:Et(o,i));if(f.tokens.next.id!==",")break;I()}return s&&(k(")"),lt(!0,!0),this.block=!0,Bt["(blockscope)"].unstack()),this});sn.exps=!0,z("class",function(){return St.call(this,!0)}),z("function",function(){var e=!1;f.tokens.next.value==="*"&&(k("*"),f.option.inESNext(!0)?e=!0:b("W119",f.tokens.curr,"function*")),qt&&b("W082",f.tokens.curr);var t=st();return Bt[t]==="const"&&b("E011",null,t),M(f.tokens.curr,f.tokens.next),T(t,"unction",f.tokens.curr),mt(t,{statement:!0},e),f.tokens.next.id==="("&&f.tokens.next.line===f.tokens.curr.line&&E("E039"),this}),X("function",function(){var e=!1;f.tokens.next.value==="*"&&(f.option.inESNext()||b("W119",f.tokens.curr,"function*"),k("*"),e=!0);var t=it();return t||f.option.gcl?M(f.tokens.curr,f.tokens.next):P(f.tokens.curr,f.tokens.next),mt(t,undefined,e),!f.option.loopfunc&&Bt["(loopage)"]&&b("W083"),this}),z("if",function(){var e=f.tokens.next;return yt(),f.condition=!0,k("("),P(this,e),D(),bt(O(0)),k(")",e),f.condition=!1,D(f.tokens.prev,f.tokens.curr),lt(!0,!0),f.tokens.next.id==="else"&&(P(f.tokens.curr,f.tokens.next),k("else"),f.tokens.next.id==="if"||f.tokens.next.id==="switch"?ut(!0):lt(!0,!0)),this}),z("try",function(){function e(){var e=Jt,t;k("catch"),P(f.tokens.curr,f.tokens.next),k("("),Jt=Object.create(e),t=f.tokens.next.value,f.tokens.next.type!=="(identifier)"&&(t=null,b("E030",f.tokens.next,t)),k(),Bt={"(name)":"(catch)","(line)":f.tokens.next.line,"(character)":f.tokens.next.character,"(context)":Bt,"(breakage)":Bt["(breakage)"],"(loopage)":Bt["(loopage)"],"(scope)":Jt,"(statement)":!1,"(metrics)":gt(f.tokens.next),"(catch)":!0,"(tokens)":{},"(blockscope)":Bt["(blockscope)"],"(comparray)":Bt["(comparray)"]},t&&T(t,"exception"),f.tokens.next.value==="if"&&(f.option.inMoz(!0)||b("W118",f.tokens.curr,"catch filter"),k("if"),O(0)),k(")"),f.tokens.curr.funct=Bt,jt.push(Bt),lt(!1),Jt=e,Bt["(last)"]=f.tokens.curr.line,Bt["(lastcharacter)"]=f.tokens.curr.character,Bt=Bt["(context)"]}var t;lt(!1);while(f.tokens.next.id==="catch")yt(),t&&!f.option.inMoz(!0)&&b("W118",f.tokens.next,"multiple catch blocks"),e(),t=!0;if(f.tokens.next.id==="finally"){k("finally"),lt(!1);return}return t||E("E021",f.tokens.next,"catch",f.tokens.next.value),this}),z("while",function(){var e=f.tokens.next;return Bt["(breakage)"]+=1,Bt["(loopage)"]+=1,yt(),k("("),P(this,e),D(),bt(O(0)),k(")",e),D(f.tokens.prev,f.tokens.curr),lt(!0,!0),Bt["(breakage)"]-=1,Bt["(loopage)"]-=1,this}).labelled=!0,z("with",function(){var e=f.tokens.next;return f.directive["use strict"]?E("E010",f.tokens.curr):f.option.withstmt||b("W085",f.tokens.curr),k("("),P(this,e),D(),O(0),k(")",e),D(f.tokens.prev,f.tokens.curr),lt(!0,!0),this}),z("switch",function(){var e=f.tokens.next,t=!1;Bt["(breakage)"]+=1,k("("),P(this,e),D(),bt(O(0)),k(")",e),D(f.tokens.prev,f.tokens.curr),P(f.tokens.curr,f.tokens.next),e=f.tokens.next,k("{"),P(f.tokens.curr,f.tokens.next),Rt+=f.option.indent,this.cases=[];for(;;)switch(f.tokens.next.id){case"case":switch(Bt["(verb)"]){case"yield":case"break":case"case":case"continue":case"return":case"switch":case"throw":break;default:a.fallsThrough.test(f.lines[f.tokens.next.line-2])||b("W086",f.tokens.curr,"case")}B(-f.option.indent),k("case"),this.cases.push(O(20)),yt(),t=!0,k(":"),Bt["(verb)"]="case";break;case"default":switch(Bt["(verb)"]){case"yield":case"break":case"continue":case"return":case"throw":break;default:this.cases.length&&(a.fallsThrough.test(f.lines[f.tokens.next.line-2])||b("W086",f.tokens.curr,"default"))}B(-f.option.indent),k("default"),t=!0,k(":");break;case"}":Rt-=f.option.indent,B(),k("}",e),Bt["(breakage)"]-=1,Bt["(verb)"]=undefined;return;case"(end)":E("E023",f.tokens.next,"}");return;default:if(t)switch(f.tokens.curr.id){case",":E("E040");return;case":":t=!1,at();break;default:E("E025",f.tokens.curr);return}else{if(f.tokens.curr.id!==":"){E("E021",f.tokens.next,"case",f.tokens.next.value);return}k(":"),E("E024",f.tokens.curr,":"),at()}}}).labelled=!0,U("debugger",function(){return f.option.debug||b("W087"),this}).exps=!0,function(){var e=U("do",function(){Bt["(breakage)"]+=1,Bt["(loopage)"]+=1,yt(),this.first=lt(!0,!0),k("while");var e=f.tokens.next;return P(f.tokens.curr,e),k("("),D(),bt(O(0)),k(")",e),D(f.tokens.prev,f.tokens.curr),Bt["(breakage)"]-=1,Bt["(loopage)"]-=1,this});e.labelled=!0,e.exps=!0}(),z("for",function(){var e,t=f.tokens.next,n=!1,i=null;t.value==="each"&&(i=t,k("each"),f.option.inMoz(!0)||b("W118",f.tokens.curr,"for each")),Bt["(breakage)"]+=1,Bt["(loopage)"]+=1,yt(),k("("),P(this,t),D();var s,o=0,u=["in","of"];do s=C(o),++o;while(!r.contains(u,s.value)&&s.value!==";"&&s.type!=="(end)");if(r.contains(u,s.value)){!f.option.inESNext()&&s.value==="of"&&E("W104",s,"for of");if(f.tokens.next.id==="var")k("var"),f.syntax["var"].fud.call(f.syntax["var"].fud,!0);else if(f.tokens.next.id==="let")k("let"),n=!0,Bt["(blockscope)"].stack(),f.syntax.let.fud.call(f.syntax.let.fud,!0);else{switch(Bt[f.tokens.next.value]){case"unused":Bt[f.tokens.next.value]="var";break;case"var":break;default:Bt["(blockscope)"].getlabel(f.tokens.next.value)||b("W088",f.tokens.next,f.tokens.next.value)}k()}k(s.value),O(20),k(")",t),e=lt(!0,!0),f.option.forin&&e&&(e.length>1||typeof e[0]!="object"||e[0].value!=="if")&&b("W089",this),Bt["(breakage)"]-=1,Bt["(loopage)"]-=1}else{i&&E("E045",i);if(f.tokens.next.id!==";")if(f.tokens.next.id==="var")k("var"),f.syntax["var"].fud.call(f.syntax["var"].fud);else if(f.tokens.next.id==="let")k("let"),n=!0,Bt["(blockscope)"].stack(),f.syntax.let.fud.call(f.syntax.let.fud);else for(;;){O(0,"for");if(f.tokens.next.id!==",")break;I()}j(f.tokens.curr),k(";"),f.tokens.next.id!==";"&&bt(O(0)),j(f.tokens.curr),k(";"),f.tokens.next.id===";"&&E("E021",f.tokens.next,")",";");if(f.tokens.next.id!==")")for(;;){O(0,"for");if(f.tokens.next.id!==",")break;I()}k(")",t),D(f.tokens.prev,f.tokens.curr),lt(!0,!0),Bt["(breakage)"]-=1,Bt["(loopage)"]-=1}return n&&Bt["(blockscope)"].unstack(),this}).labelled=!0,U("break",function(){var e=f.tokens.next.value;return Bt["(breakage)"]===0&&b("W052",f.tokens.next,this.value),f.option.asi||j(this),f.tokens.next.id!==";"&&!f.tokens.next.reach&&f.tokens.curr.line===f.tokens.next.line&&(Bt[e]!=="label"?b("W090",f.tokens.next,e):Jt[e]!==Bt&&b("W091",f.tokens.next,e),this.first=f.tokens.next,k()),ot("break"),this}).exps=!0,U("continue",function(){var e=f.tokens.next.value;return Bt["(breakage)"]===0&&b("W052",f.tokens.next,this.value),f.option.asi||j(this),f.tokens.next.id!==";"&&!f.tokens.next.reach?f.tokens.curr.line===f.tokens.next.line&&(Bt[e]!=="label"?b("W090",f.tokens.next,e):Jt[e]!==Bt&&b("W091",f.tokens.next,e),this.first=f.tokens.next,k()):Bt["(loopage)"]||b("W052",f.tokens.next,this.value),ot("continue"),this}).exps=!0,U("return",function(){return this.line===f.tokens.next.line?(f.tokens.next.id==="(regexp)"&&b("W092"),f.tokens.next.id!==";"&&!f.tokens.next.reach&&(P(f.tokens.curr,f.tokens.next),this.first=O(0),this.first&&this.first.type==="(punctuator)"&&this.first.value==="="&&!f.option.boss&&w("W093",this.first.line,this.first.character))):f.tokens.next.type==="(punctuator)"&&["[","{","+","-"].indexOf(f.tokens.next.value)>-1&&j(this),ot("return"),this}).exps=!0,function(e){e.exps=!0,e.lbp=25}(X("yield",function(){var e=f.tokens.prev;return f.option.inESNext(!0)&&!Bt["(generator)"]?E("E046",f.tokens.curr,"yield"):f.option.inESNext()||b("W104",f.tokens.curr,"yield"),Bt["(generator)"]="yielded",this.line===f.tokens.next.line||!f.option.inMoz(!0)?(f.tokens.next.id==="(regexp)"&&b("W092"),f.tokens.next.id!==";"&&!f.tokens.next.reach&&f.tokens.next.nud&&(H(f.tokens.curr,f.tokens.next),this.first=O(10),this.first.type==="(punctuator)"&&this.first.value==="="&&!f.option.boss&&w("W093",this.first.line,this.first.character)),f.option.inMoz(!0)&&f.tokens.next.id!==")"&&(e.lbp>30||!e.assign&&!A()||e.id==="yield")&&E("E050",this)):f.option.asi||j(this),this})),U("throw",function(){return j(this),P(f.tokens.curr,f.tokens.next),this.first=O(20),ot("throw"),this}).exps=!0,U("import",function(){f.option.inESNext()||b("W119",f.tokens.curr,"import");if(f.tokens.next.identifier)this.name=st(),T(this.name,"unused",f.tokens.curr);else{k("{");for(;;){var e;f.tokens.next.type==="default"?(e="default",k("default")):e=st(),f.tokens.next.value==="as"&&(k("as"),e=st()),T(e,"unused",f.tokens.curr);if(f.tokens.next.value!==","){if(f.tokens.next.value==="}"){k("}");break}E("E024",f.tokens.next,f.tokens.next.value);break}k(",")}}return k("from"),k("(string)"),this}).exps=!0,U("export",function(){f.option.inESNext()||b("W119",f.tokens.curr,"export");if(f.tokens.next.type==="default"){k("default");if(f.tokens.next.id==="function"||f.tokens.next.id==="class")this.block=!0;return this.exportee=O(10),this}if(f.tokens.next.value==="{"){k("{");for(;;){st();if(f.tokens.next.value!==","){if(f.tokens.next.value==="}"){k("}");break}E("E024",f.tokens.next,f.tokens.next.value);break}k(",")}return this}return f.tokens.next.id==="var"?(k("var"),f.syntax["var"].fud.call(f.syntax["var"].fud)):f.tokens.next.id==="let"?(k("let"),f.syntax.let.fud.call(f.syntax.let.fud)):f.tokens.next.id==="const"?(k("const"),f.syntax["const"].fud.call(f.syntax["const"].fud)):f.tokens.next.id==="function"?(this.block=!0,k("function"),f.syntax["function"].fud()):f.tokens.next.id==="class"?(this.block=!0,k("class"),f.syntax["class"].fud()):E("E024",f.tokens.next,f.tokens.next.value),this}).exps=!0,J("abstract"),J("boolean"),J("byte"),J("char"),J("class",{es5:!0,nud:St}),J("double"),J("enum",{es5:!0}),J("export",{es5:!0}),J("extends",{es5:!0}),J("final"),J("float"),J("goto"),J("implements",{es5:!0,strictOnly:!0}),J("import",{es5:!0}),J("int"),J("interface",{es5:!0,strictOnly:!0}),J("long"),J("native"),J("package",{es5:!0,strictOnly:!0}),J("private",{es5:!0,strictOnly:!0}),J("protected",{es5:!0,strictOnly:!0}),J("public",{es5:!0,strictOnly:!0}),J("short"),J("static",{es5:!0,strictOnly:!0}),J("super",{es5:!0}),J("synchronized"),J("throws"),J("transient"),J("volatile");var on=function(){var e,t,n=0,i=0,s={};r.contains(["[","{"],f.tokens.curr.value)&&(i+=1),r.contains(["[","{"],f.tokens.next.value)&&(i+=1),r.contains(["]","}"],f.tokens.next.value)&&(i-=1);do{e=C(n),t=C(n+1),n+=1,r.contains(["[","{"],e.value)?i+=1:r.contains(["]","}"],e.value)&&(i-=1);if(e.identifier&&e.value==="for"&&i===1){s.isCompArray=!0,s.notJson=!0;break}if(r.contains(["}","]"],e.value)&&t.value==="="){s.isDestAssign=!0,s.notJson=!0;break}e.value===";"&&(s.isBlock=!0,s.notJson=!0)}while(i>0&&e.id!=="(end)"&&n<15);return s},un=function(){function e(e){var t=s.variables.filter(function(t){if(t.value===e)return t.undef=!1,e}).length;return t!==0}function t(e){var t=s.variables.filter(function(t){if(t.value===e&&!t.undef)return t.unused===!0&&(t.unused=!1),e}).length;return t===0}var n=function(){this.mode="use",this.variables=[]},i=[],s;return{stack:function(){s=new n,i.push(s)},unstack:function(){s.variables.filter(function(e){e.unused&&b("W098",e.token,e.value),e.undef&&y(e.funct,"W117",e.token,e.value)}),i.splice(i[i.length-1],1),s=i[i.length-1]},setState:function(e){r.contains(["use","define","filter"],e)&&(s.mode=e)},check:function(n){return s&&s.mode==="use"?(s.variables.push({funct:Bt,token:f.tokens.curr,value:n,undef:!0,unused:!1}),!0):s&&s.mode==="define"?(e(n)||s.variables.push({funct:Bt,token:f.tokens.curr,value:n,undef:!1,unused:!0}),!0):s&&s.mode==="filter"?(t(n)&&y(Bt,"W117",f.tokens.curr,n),!0):!1}}},an=function(){function e(){for(var e in t)if(t[e]["(type)"]==="unused"&&f.option.unused){var n=t[e]["(token)"],r=n.line,i=n.character;w("W098",r,i,e)}}var t={},n=[t];return{stack:function(){t={},n.push(t)},unstack:function(){e(),n.splice(n.length-1,1),t=r.last(n)},getlabel:function(e){for(var t=n.length-1;t>=0;--t)if(r.has(n[t],e))return n[t]},current:{has:function(e){return r.has(t,e)},add:function(e,n,r){t[e]={"(type)":n,"(token)":r}}}}},fn=function(n,i,o){function a(e,t){if(!e)return;!Array.isArray(e)&&typeof e=="object"&&(e=Object.keys(e)),e.forEach(t)}var l,c,p,v,y={},E={};f.reset(),i&&i.scope?h.scope=i.scope:(h.errors=[],h.undefs=[],h.internals=[],h.blacklist={},h.scope="(main)"),$t=Object.create(null),d($t,s.ecmaIdentifiers),d($t,s.reservedVars),d($t,o||{}),Dt=Object.create(null),Pt=Object.create(null);if(i){a(i.predef||null,function(e){var t,n;e[0]==="-"?(t=e.slice(1),h.blacklist[t]=t):(n=Object.getOwnPropertyDescriptor(i.predef,e),$t[e]=n?n.value:!1)}),a(i.exported||null,function(e){Pt[e]=!0}),delete i.predef,delete i.exported,v=Object.keys(i);for(p=0;p0&&(e.implieds=t),Gt.length>0&&(e.urls=Gt),l=Object.keys(Jt),l.length>0&&(e.globals=l);for(o=1;o0&&(e.unused=Qt),n=[];for(a in Wt)if(typeof Wt[a]=="number"){e.member=Wt;break}return e},fn.jshint=fn,fn}();typeof n=="object"&&n&&(n.JSHINT=h)},{"../shared/messages.js":2,"../shared/vars.js":3,"./lex.js":5,"./reg.js":6,"./state.js":7,"./style.js":8,"console-browserify":9,events:10,underscore:1}],5:[function(e,t,n){function r(){var e=[];return{push:function(t){e.push(t)},check:function(){for(var t=0;t=65&&h<=90||h===95||h>=97&&h<=122;var p=[];for(var h=0;h<128;h++)p[h]=c[h]||h>=48&&h<=57;i.prototype={_lines:[],getLines:function(){return this._lines=a.lines,this._lines},setLines:function(e){this._lines=e,a.lines=this._lines},peek:function(e){return this.input.charAt(e||0)},skip:function(e){e=e||1,this.char+=e,this.input=this.input.slice(e)},on:function(e,t){e.split(" ").forEach(function(e){this.emitter.on(e,t)}.bind(this))},trigger:function(){this.emitter.emit.apply(this.emitter,Array.prototype.slice.call(arguments))},triggerAsync:function(e,t,n,r){n.push(function(){r()&&this.trigger(e,t)}.bind(this))},scanPunctuator:function(){var e=this.peek(),t,n,r;switch(e){case".":if(/^[0-9]$/.test(this.peek(1)))return null;if(this.peek(1)==="."&&this.peek(2)===".")return{type:f.Punctuator,value:"..."};case"(":case")":case";":case",":case"{":case"}":case"[":case"]":case":":case"~":case"?":return{type:f.Punctuator,value:e};case"#":return{type:f.Punctuator,value:e};case"":return null}return t=this.peek(1),n=this.peek(2),r=this.peek(3),e===">"&&t===">"&&n===">"&&r==="="?{type:f.Punctuator,value:">>>="}:e==="="&&t==="="&&n==="="?{type:f.Punctuator,value:"==="}:e==="!"&&t==="="&&n==="="?{type:f.Punctuator,value:"!=="}:e===">"&&t===">"&&n===">"?{type:f.Punctuator,value:">>>"}:e==="<"&&t==="<"&&n==="="?{type:f.Punctuator,value:"<<="}:e===">"&&t===">"&&n==="="?{type:f.Punctuator,value:">>="}:e==="="&&t===">"?{type:f.Punctuator,value:e+t}:e===t&&"+-<>&|".indexOf(e)>=0?{type:f.Punctuator,value:e+t}:"<>=!+-*%&|^".indexOf(e)>=0?t==="="?{type:f.Punctuator,value:e+t}:{type:f.Punctuator,value:e}:e==="/"?t==="="&&/\/=(?!(\S*\/[gim]?))/.test(this.input)?{type:f.Punctuator,value:"/="}:{type:f.Punctuator,value:"/"}:null},scanComments:function(){function e(e,t,n){var r=["jshint","jslint","members","member","globals","global","exported"],i=!1,s=e+t,o="plain";return n=n||{},n.isMultiline&&(s+="*/"),r.forEach(function(n){if(i)return;if(e==="//"&&n!=="jshint")return;t.substr(0,n.length)===n&&(i=!0,e+=n,t=t.substr(n.length)),!i&&t.charAt(0)===" "&&t.substr(1,n.length)===n&&(i=!0,e=e+" "+n,t=t.substr(n.length+1));if(!i)return;switch(n){case"member":o="members";break;case"global":o="globals";break;default:o=n}}),{type:f.Comment,commentType:o,value:s,body:t,isSpecial:i,isMultiline:n.isMultiline||!1,isMalformed:n.isMalformed||!1}}var t=this.peek(),n=this.peek(1),r=this.input.substr(2),i=this.line,s=this.char;if(t==="*"&&n==="/")return this.trigger("error",{code:"E018",line:i,character:s}),this.skip(2),null;if(t!=="/"||n!=="*"&&n!=="/")return null;if(n==="/")return this.skip(this.input.length),e("//",r);var o="";if(n==="*"){this.skip(2);while(this.peek()!=="*"||this.peek(1)!=="/")if(this.peek()===""){o+="\n";if(!this.nextLine())return this.trigger("error",{code:"E017",line:i,character:s}),e("/*",o,{isMultiline:!0,isMalformed:!0})}else o+=this.peek(),this.skip();return this.skip(2),e("/*",o,{isMultiline:!0})}},scanKeyword:function(){var e=/^[a-zA-Z_$][a-zA-Z0-9_$]*/.exec(this.input),t=["if","in","do","var","for","new","try","let","this","else","case","void","with","enum","while","break","catch","throw","const","yield","class","super","return","typeof","delete","switch","export","import","default","finally","extends","function","continue","debugger","instanceof"];return e&&t.indexOf(e[0])>=0?{type:f.Keyword,value:e[0]}:null},scanIdentifier:function(){function e(e){for(var t=0;t="a"&&e<="z"||e>="A"&&e<="Z"}var i=0,s="",o=this.input.length,u=this.peek(i),a;if(u!=="."&&!e(u))return null;if(u!=="."){s=this.peek(i),i+=1,u=this.peek(i);if(s==="0"){if(u==="x"||u==="X"){i+=1,s+=u;while(i"]});if(o==="\\"){this.skip(),o=this.peek();switch(o){case"'":this.triggerAsync("warning",{code:"W114",line:this.line,character:this.char,data:["\\'"]},e,function(){return a.jsonMode});break;case"b":o="\b";break;case"f":o="\f";break;case"n":o="\n";break;case"r":o="\r";break;case"t":o=" ";break;case"0":o="\0";var l=parseInt(this.peek(1),10);this.triggerAsync("warning",{code:"W115",line:this.line,character:this.char},e,function(){return l>=0&&l<=7&&a.directive["use strict"]});break;case"u":o=String.fromCharCode(parseInt(this.input.substr(1,4),16)),u=5;break;case"v":this.triggerAsync("warning",{code:"W114",line:this.line,character:this.char,data:["\\v"]},e,function(){return a.jsonMode}),o=" ";break;case"x":var c=parseInt(this.input.substr(1,2),16);this.triggerAsync("warning",{code:"W114",line:this.line,character:this.char,data:["\\x-"]},e,function(){return a.jsonMode}),o=String.fromCharCode(c),u=3;break;case"\\":case'"':case"/":break;case"":s=!0,o="";break;case"!":if(n.slice(n.length-2)==="<")break;default:this.trigger("warning",{code:"W044",line:this.line,character:this.char})}}n+=o,this.skip(u)}return this.skip(),{type:f.StringLiteral,value:n,isUnclosed:!1,quote:t}},scanRegExp:function(){var e=0,t=this.input.length,n=this.peek(),r=n,i="",s=[],o=!1,u=!1,a,l=function(){n<" "&&(o=!0,this.trigger("warning",{code:"W048",line:this.line,character:this.char})),n==="<"&&(o=!0,this.trigger("warning",{code:"W049",line:this.line,character:this.char,data:[n]}))}.bind(this);if(!this.prereg||n!=="/")return null;e+=1,a=!1;while(e=this.getLines().length?!1:(this.input=this.getLines()[this.line],this.line+=1,this.char=1,this.from=1,e=this.scanMixedSpacesAndTabs(),e>=0&&this.trigger("warning",{code:"W099",line:this.line,character:e+1}),this.input=this.input.replace(/\t/g,a.tab),e=this.scanUnsafeChars(),e>=0&&this.trigger("warning",{code:"W100",line:this.line,character:e}),a.option.maxlen&&a.option.maxlen-1&&!t.name.match(/^[A-Z0-9_]*$/)&&e.warn("W106",{line:t.line,"char":t.from,data:[t.name]})}),e.on("String",function(t){var n=e.getOption("quotmark"),r;if(!n)return;n==="single"&&t.quote!=="'"&&(r="W109"),n==="double"&&t.quote!=='"'&&(r="W108"),n===!0&&(e.getCache("quotmark")||e.setCache("quotmark",t.quote),e.getCache("quotmark")!==t.quote&&(r="W110")),r&&e.warn(r,{line:t.line,"char":t.char})}),e.on("Number",function(t){t.value.charAt(0)==="."&&e.warn("W008",{line:t.line,"char":t.char,data:[t.value]}),t.value.substr(t.value.length-1)==="."&&e.warn("W047",{line:t.line,"char":t.char,data:[t.value]}),/^00+/.test(t.value)&&e.warn("W046",{line:t.line,"char":t.char,data:[t.value]})}),e.on("String",function(t){var n=/^(?:javascript|jscript|ecmascript|vbscript|mocha|livescript)\s*:/i;if(e.getOption("scripturl"))return;n.test(t.value)&&e.warn("W107",{line:t.line,"char":t.char})})}},{}],9:[function(e,t,n){},{}],10:[function(e,t,n){function r(e,t){if(e.indexOf)return e.indexOf(t);for(var n=0;n0&&this._events[e].length>n&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),console.trace())}this._events[e].push(t)}else this._events[e]=[this._events[e],t];return this},s.prototype.on=s.prototype.addListener,s.prototype.once=function(e,t){var n=this;return n.on(e,function r(){n.removeListener(e,r),t.apply(this,arguments)}),this},s.prototype.removeListener=function(e,t){if("function"!=typeof t)throw new Error("removeListener only takes instances of Function");if(!this._events||!this._events[e])return this;var n=this._events[e];if(o(n)){var i=r(n,t);if(i<0)return this;n.splice(i,1),n.length==0&&delete this._events[e]}else this._events[e]===t&&delete this._events[e];return this},s.prototype.removeAllListeners=function(e){return arguments.length===0?(this._events={},this):(e&&this._events&&this._events[e]&&(this._events[e]=null),this)},s.prototype.listeners=function(e){return this._events||(this._events={}),this._events[e]||(this._events[e]=[]),o(this._events[e])||(this._events[e]=[this._events[e]]),this._events[e]},s.listenerCount=function(e,t){var n;return!e._events||!e._events[t]?n=0:typeof e._events[t]=="function"?n=1:n=e._events[t].length,n}},{__browserify_process:11}],11:[function(e,t,n){var r=t.exports={};r.nextTick=function(){var e=typeof window!="undefined"&&window.setImmediate,t=typeof window!="undefined"&&window.postMessage&&window.addEventListener;if(e)return function(e){return window.setImmediate(e)};if(t){var n=[];return window.addEventListener("message",function(e){if(e.source===window&&e.data==="process-tick"){e.stopPropagation();if(n.length>0){var t=n.shift();t()}}},!0),function(e){n.push(e),window.postMessage("process-tick","*")}}return function(e){setTimeout(e,0)}}(),r.title="browser",r.browser=!0,r.env={},r.argv=[],r.binding=function(e){throw new Error("process.binding is not supported")},r.cwd=function(){return"/"},r.chdir=function(e){throw new Error("process.chdir is not supported")}},{}],jshint:[function(e,t,n){t.exports=e("n4bKNg")},{}]},{},["n4bKNg"]),n.exports=r("jshint")}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=e("./range").Range,o=e("./anchor").Anchor,u=function(e){this.$lines=[],e.length===0?this.$lines=[""]:Array.isArray(e)?this._insertLines(0,e):this.insert({row:0,column:0},e)};(function(){r.implement(this,i),this.setValue=function(e){var t=this.getLength();this.remove(new s(0,0,t,this.getLine(t-1).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new o(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){if(e.start.row==e.end.row)return this.getLine(e.start.row).substring(e.start.column,e.end.column);var t=this.getLines(e.start.row,e.end.row);t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;return e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column)),t.join(this.getNewLineCharacter())},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<0&&(e.row=0),e},this.insert=function(e,t){if(!t||t.length===0)return e;e=this.$clipPosition(e),this.getLength()<=1&&this.$detectNewLine(t);var n=this.$split(t),r=n.splice(0,1)[0],i=n.length==0?null:n.splice(n.length-1,1)[0];return e=this.insertInLine(e,r),i!==null&&(e=this.insertNewLine(e),e=this._insertLines(e.row,n),e=this.insertInLine(e,i||"")),e},this.insertLines=function(e,t){return e>=this.getLength()?this.insert({row:e,column:0},"\n"+t.join("\n")):this._insertLines(Math.max(e,0),t)},this._insertLines=function(e,t){if(t.length==0)return{row:e,column:0};while(t.length>61440){var n=this._insertLines(e,t.slice(0,61440));t=t.slice(61440),e=n.row}var r=[e,0];r.push.apply(r,t),this.$lines.splice.apply(this.$lines,r);var i=new s(e,0,e+t.length,0),o={action:"insertLines",range:i,lines:t};return this._signal("change",{data:o}),i.end},this.insertNewLine=function(e){e=this.$clipPosition(e);var t=this.$lines[e.row]||"";this.$lines[e.row]=t.substring(0,e.column),this.$lines.splice(e.row+1,0,t.substring(e.column,t.length));var n={row:e.row+1,column:0},r={action:"insertText",range:s.fromPoints(e,n),text:this.getNewLineCharacter()};return this._signal("change",{data:r}),n},this.insertInLine=function(e,t){if(t.length==0)return e;var n=this.$lines[e.row]||"";this.$lines[e.row]=n.substring(0,e.column)+t+n.substring(e.column);var r={row:e.row,column:e.column+t.length},i={action:"insertText",range:s.fromPoints(e,r),text:t};return this._signal("change",{data:i}),r},this.remove=function(e){e instanceof s||(e=s.fromPoints(e.start,e.end)),e.start=this.$clipPosition(e.start),e.end=this.$clipPosition(e.end);if(e.isEmpty())return e.start;var t=e.start.row,n=e.end.row;if(e.isMultiLine()){var r=e.start.column==0?t:t+1,i=n-1;e.end.column>0&&this.removeInLine(n,0,e.end.column),i>=r&&this._removeLines(r,i),r!=t&&(this.removeInLine(t,e.start.column,this.getLine(t).length),this.removeNewLine(e.start.row))}else this.removeInLine(t,e.start.column,e.end.column);return e.start},this.removeInLine=function(e,t,n){if(t==n)return;var r=new s(e,t,e,n),i=this.getLine(e),o=i.substring(t,n),u=i.substring(0,t)+i.substring(n,i.length);this.$lines.splice(e,1,u);var a={action:"removeText",range:r,text:o};return this._signal("change",{data:a}),r.start},this.removeLines=function(e,t){return e<0||t>=this.getLength()?this.remove(new s(e,0,t+1,0)):this._removeLines(e,t)},this._removeLines=function(e,t){var n=new s(e,0,t+1,0),r=this.$lines.splice(e,t-e+1),i={action:"removeLines",range:n,nl:this.getNewLineCharacter(),lines:r};return this._signal("change",{data:i}),r},this.removeNewLine=function(e){var t=this.getLine(e),n=this.getLine(e+1),r=new s(e,t.length,e+1,0),i=t+n;this.$lines.splice(e,2,i);var o={action:"removeText",range:r,text:this.getNewLineCharacter()};this._signal("change",{data:o})},this.replace=function(e,t){e instanceof s||(e=s.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);if(t)var n=this.insert(e.start,t);else n=e.start;return n},this.applyDeltas=function(e){for(var t=0;t=0;t--){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="insertText"?this.remove(r):n.action=="removeLines"?this._insertLines(r.start.row,n.lines):n.action=="removeText"&&this.insert(r.start,n.text)}},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i=0)&&i(t,!a)}}),e("
").outerWidth(1).jquery||e.each(["Width","Height"],function(i,s){function a(t,i,s,a){return e.each(n,function(){i-=parseFloat(e.css(t,"padding"+this))||0,s&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),a&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var n="Width"===s?["Left","Right"]:["Top","Bottom"],r=s.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+s]=function(i){return i===t?o["inner"+s].call(this):this.each(function(){e(this).css(r,a(this,i)+"px")})},e.fn["outer"+s]=function(t,i){return"number"!=typeof t?o["outer"+s].call(this,t):this.each(function(){e(this).css(r,a(this,t,!0,i)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.support.selectstart="onselectstart"in document.createElement("div"),e.fn.extend({disableSelection:function(){return this.bind((e.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),e.extend(e.ui,{plugin:{add:function(t,i,s){var a,n=e.ui[t].prototype;for(a in s)n.plugins[a]=n.plugins[a]||[],n.plugins[a].push([i,s[a]])},call:function(e,t,i){var s,a=e.plugins[t];if(a&&e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType)for(s=0;a.length>s;s++)e.options[a[s][0]]&&a[s][1].apply(e.element,i)}},hasScroll:function(t,i){if("hidden"===e(t).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",a=!1;return t[s]>0?!0:(t[s]=1,a=t[s]>0,t[s]=0,a)}})})(jQuery);(function(e,t){var i=0,s=Array.prototype.slice,n=e.cleanData;e.cleanData=function(t){for(var i,s=0;null!=(i=t[s]);s++)try{e(i).triggerHandler("remove")}catch(a){}n(t)},e.widget=function(i,s,n){var a,r,o,h,l={},u=i.split(".")[0];i=i.split(".")[1],a=u+"-"+i,n||(n=s,s=e.Widget),e.expr[":"][a.toLowerCase()]=function(t){return!!e.data(t,a)},e[u]=e[u]||{},r=e[u][i],o=e[u][i]=function(e,i){return this._createWidget?(arguments.length&&this._createWidget(e,i),t):new o(e,i)},e.extend(o,r,{version:n.version,_proto:e.extend({},n),_childConstructors:[]}),h=new s,h.options=e.widget.extend({},h.options),e.each(n,function(i,n){return e.isFunction(n)?(l[i]=function(){var e=function(){return s.prototype[i].apply(this,arguments)},t=function(e){return s.prototype[i].apply(this,e)};return function(){var i,s=this._super,a=this._superApply;return this._super=e,this._superApply=t,i=n.apply(this,arguments),this._super=s,this._superApply=a,i}}(),t):(l[i]=n,t)}),o.prototype=e.widget.extend(h,{widgetEventPrefix:r?h.widgetEventPrefix:i},l,{constructor:o,namespace:u,widgetName:i,widgetFullName:a}),r?(e.each(r._childConstructors,function(t,i){var s=i.prototype;e.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete r._childConstructors):s._childConstructors.push(o),e.widget.bridge(i,o)},e.widget.extend=function(i){for(var n,a,r=s.call(arguments,1),o=0,h=r.length;h>o;o++)for(n in r[o])a=r[o][n],r[o].hasOwnProperty(n)&&a!==t&&(i[n]=e.isPlainObject(a)?e.isPlainObject(i[n])?e.widget.extend({},i[n],a):e.widget.extend({},a):a);return i},e.widget.bridge=function(i,n){var a=n.prototype.widgetFullName||i;e.fn[i]=function(r){var o="string"==typeof r,h=s.call(arguments,1),l=this;return r=!o&&h.length?e.widget.extend.apply(null,[r].concat(h)):r,o?this.each(function(){var s,n=e.data(this,a);return n?e.isFunction(n[r])&&"_"!==r.charAt(0)?(s=n[r].apply(n,h),s!==n&&s!==t?(l=s&&s.jquery?l.pushStack(s.get()):s,!1):t):e.error("no such method '"+r+"' for "+i+" widget instance"):e.error("cannot call methods on "+i+" prior to initialization; "+"attempted to call method '"+r+"'")}):this.each(function(){var t=e.data(this,a);t?t.option(r||{})._init():e.data(this,a,new n(r,this))}),l}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{disabled:!1,create:null},_createWidget:function(t,s){s=e(s||this.defaultElement||this)[0],this.element=e(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this.bindings=e(),this.hoverable=e(),this.focusable=e(),s!==this&&(e.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===s&&this.destroy()}}),this.document=e(s.style?s.ownerDocument:s.document||s),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(i,s){var n,a,r,o=i;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof i)if(o={},n=i.split("."),i=n.shift(),n.length){for(a=o[i]=e.widget.extend({},this.options[i]),r=0;n.length-1>r;r++)a[n[r]]=a[n[r]]||{},a=a[n[r]];if(i=n.pop(),s===t)return a[i]===t?null:a[i];a[i]=s}else{if(s===t)return this.options[i]===t?null:this.options[i];o[i]=s}return this._setOptions(o),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled ui-state-disabled",!!t).attr("aria-disabled",t),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_on:function(i,s,n){var a,r=this;"boolean"!=typeof i&&(n=s,s=i,i=!1),n?(s=a=e(s),this.bindings=this.bindings.add(s)):(n=s,s=this.element,a=this.widget()),e.each(n,function(n,o){function h(){return i||r.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof o?r[o]:o).apply(r,arguments):t}"string"!=typeof o&&(h.guid=o.guid=o.guid||h.guid||e.guid++);var l=n.match(/^(\w+)\s*(.*)$/),u=l[1]+r.eventNamespace,c=l[2];c?a.delegate(c,u,h):s.bind(u,h)})},_off:function(e,t){t=(t||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.unbind(t).undelegate(t)},_delay:function(e,t){function i(){return("string"==typeof e?s[e]:e).apply(s,arguments)}var s=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,i,s){var n,a,r=this.options[t];if(s=s||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],a=i.originalEvent)for(n in a)n in i||(i[n]=a[n]);return this.element.trigger(i,s),!(e.isFunction(r)&&r.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(s,n,a){"string"==typeof n&&(n={effect:n});var r,o=n?n===!0||"number"==typeof n?i:n.effect||i:t;n=n||{},"number"==typeof n&&(n={duration:n}),r=!e.isEmptyObject(n),n.complete=a,n.delay&&s.delay(n.delay),r&&e.effects&&e.effects.effect[o]?s[t](n):o!==t&&s[o]?s[o](n.duration,n.easing,a):s.queue(function(i){e(this)[t](),a&&a.call(s[0]),i()})}})})(jQuery);(function(e){var t=!1;e(document).mouseup(function(){t=!1}),e.widget("ui.mouse",{version:"1.10.2",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(i){return!0===e.data(i.target,t.widgetName+".preventClickEvent")?(e.removeData(i.target,t.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):undefined}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(i){if(!t){this._mouseStarted&&this._mouseUp(i),this._mouseDownEvent=i;var s=this,n=1===i.which,a="string"==typeof this.options.cancel&&i.target.nodeName?e(i.target).closest(this.options.cancel).length:!1;return n&&!a&&this._mouseCapture(i)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){s.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(i)&&this._mouseDelayMet(i)&&(this._mouseStarted=this._mouseStart(i)!==!1,!this._mouseStarted)?(i.preventDefault(),!0):(!0===e.data(i.target,this.widgetName+".preventClickEvent")&&e.removeData(i.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return s._mouseMove(e)},this._mouseUpDelegate=function(e){return s._mouseUp(e)},e(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),i.preventDefault(),t=!0,!0)):!0}},_mouseMove:function(t){return e.ui.ie&&(!document.documentMode||9>document.documentMode)&&!t.button?this._mouseUp(t):this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){return e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}})})(jQuery);(function(t,e){function i(t,e,i){return[parseFloat(t[0])*(p.test(t[0])?e/100:1),parseFloat(t[1])*(p.test(t[1])?i/100:1)]}function s(e,i){return parseInt(t.css(e,i),10)||0}function n(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}t.ui=t.ui||{};var a,o=Math.max,r=Math.abs,h=Math.round,l=/left|center|right/,c=/top|center|bottom/,u=/[\+\-]\d+(\.[\d]+)?%?/,d=/^\w+/,p=/%$/,f=t.fn.position;t.position={scrollbarWidth:function(){if(a!==e)return a;var i,s,n=t("
"),o=n.children()[0];return t("body").append(n),i=o.offsetWidth,n.css("overflow","scroll"),s=o.offsetWidth,i===s&&(s=n[0].clientWidth),n.remove(),a=i-s},getScrollInfo:function(e){var i=e.isWindow?"":e.element.css("overflow-x"),s=e.isWindow?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widths?"left":i>0?"right":"center",vertical:0>a?"top":n>0?"bottom":"middle"};u>p&&p>r(i+s)&&(h.horizontal="center"),d>m&&m>r(n+a)&&(h.vertical="middle"),h.important=o(r(i),r(s))>o(r(n),r(a))?"horizontal":"vertical",e.using.call(this,t,h)}),c.offset(t.extend(C,{using:l}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,a=n.offset.left+n.scrollLeft,o=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-o-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-o-a,(0>i||r(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>r(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,a=n.offset.top+n.scrollTop,o=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-o-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-o-a,t.top+p+f+m>c&&(0>s||r(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,t.top+p+f+m>u&&(i>0||u>r(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}},function(){var e,i,s,n,a,o=document.getElementsByTagName("body")[0],r=document.createElement("div");e=document.createElement(o?"div":"body"),s={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},o&&t.extend(s,{position:"absolute",left:"-1000px",top:"-1000px"});for(a in s)e.style[a]=s[a];e.appendChild(r),i=o||document.documentElement,i.insertBefore(e,i.firstChild),r.style.cssText="position: absolute; left: 10.7432222px;",n=t(r).offset().left,t.support.offsetFractions=n>10&&11>n,e.innerHTML="",i.removeChild(e)}()})(jQuery);(function(e){e.widget("ui.draggable",e.ui.mouse,{version:"1.10.2",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"!==this.options.helper||/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative"),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._mouseInit()},_destroy:function(){this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy()},_mouseCapture:function(t){var i=this.options;return this.helper||i.disabled||e(t.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(t),this.handle?(e(i.iframeFix===!0?"iframe":i.iframeFix).each(function(){e("
").css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(e(this).offset()).appendTo("body")}),!0):!1)},_mouseStart:function(t){var i=this.options;return this.helper=this._createHelper(t),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),i.containment&&this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_mouseDrag:function(t,i){if(this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",t,s)===!1)return this._mouseUp({}),!1;this.position=s.position}return this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var i,s=this,n=!1,a=!1;for(e.ui.ddmanager&&!this.options.dropBehaviour&&(a=e.ui.ddmanager.drop(this,t)),this.dropped&&(a=this.dropped,this.dropped=!1),i=this.element[0];i&&(i=i.parentNode);)i===document&&(n=!0);return n||"original"!==this.options.helper?("invalid"===this.options.revert&&!a||"valid"===this.options.revert&&a||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,a)?e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){s._trigger("stop",t)!==!1&&s._clear()}):this._trigger("stop",t)!==!1&&this._clear(),!1):!1},_mouseUp:function(t){return e("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(t){return this.options.handle?!!e(t.target).closest(this.element.find(this.options.handle)).length:!0},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper)?e(i.helper.apply(this.element[0],[t])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return s.parents("body").length||s.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s[0]===this.element[0]||/(fixed|absolute)/.test(s.css("position"))||s.css("position","absolute"),s},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===document.body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&e.ui.ie)&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var e=this.element.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,n=this.options;if("parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=["document"===n.containment?0:e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,"document"===n.containment?0:e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,("document"===n.containment?0:e(window).scrollLeft())+e("document"===n.containment?document:window).width()-this.helperProportions.width-this.margins.left,("document"===n.containment?0:e(window).scrollTop())+(e("document"===n.containment?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||n.containment.constructor===Array)n.containment.constructor===Array&&(this.containment=n.containment);else{if(i=e(n.containment),s=i[0],!s)return;t="hidden"!==e(s).css("overflow"),this.containment=[(parseInt(e(s).css("borderLeftWidth"),10)||0)+(parseInt(e(s).css("paddingLeft"),10)||0),(parseInt(e(s).css("borderTopWidth"),10)||0)+(parseInt(e(s).css("paddingTop"),10)||0),(t?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(e(s).css("borderRightWidth"),10)||0)-(parseInt(e(s).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(e(s).css("borderBottomWidth"),10)||0)-(parseInt(e(s).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=i}},_convertPositionTo:function(t,i){i||(i=this.position);var s="absolute"===t?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,a=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():a?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():a?0:n.scrollLeft())*s}},_generatePosition:function(t){var i,s,n,a,o=this.options,r="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName),l=t.pageX,u=t.pageY;return this.originalPosition&&(this.containment&&(this.relative_container?(s=this.relative_container.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,t.pageX-this.offset.click.lefti[2]&&(l=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(u=i[3]+this.offset.click.top)),o.grid&&(n=o.grid[1]?this.originalPageY+Math.round((u-this.originalPageY)/o.grid[1])*o.grid[1]:this.originalPageY,u=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-o.grid[1]:n+o.grid[1]:n,a=o.grid[0]?this.originalPageX+Math.round((l-this.originalPageX)/o.grid[0])*o.grid[0]:this.originalPageX,l=i?a-this.offset.click.left>=i[0]||a-this.offset.click.left>i[2]?a:a-this.offset.click.left>=i[0]?a-o.grid[0]:a+o.grid[0]:a)),{top:u-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:l-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1},_trigger:function(t,i,s){return s=s||this._uiHash(),e.ui.plugin.call(this,t,[i,s]),"drag"===t&&(this.positionAbs=this._convertPositionTo("absolute")),e.Widget.prototype._trigger.call(this,t,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),e.ui.plugin.add("draggable","connectToSortable",{start:function(t,i){var s=e(this).data("ui-draggable"),n=s.options,a=e.extend({},i,{item:s.element});s.sortables=[],e(n.connectToSortable).each(function(){var i=e.data(this,"ui-sortable");i&&!i.options.disabled&&(s.sortables.push({instance:i,shouldRevert:i.options.revert}),i.refreshPositions(),i._trigger("activate",t,a))})},stop:function(t,i){var s=e(this).data("ui-draggable"),n=e.extend({},i,{item:s.element});e.each(s.sortables,function(){this.instance.isOver?(this.instance.isOver=0,s.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=this.shouldRevert),this.instance._mouseStop(t),this.instance.options.helper=this.instance.options._helper,"original"===s.options.helper&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",t,n))})},drag:function(t,i){var s=e(this).data("ui-draggable"),n=this;e.each(s.sortables,function(){var a=!1,o=this;this.instance.positionAbs=s.positionAbs,this.instance.helperProportions=s.helperProportions,this.instance.offset.click=s.offset.click,this.instance._intersectsWith(this.instance.containerCache)&&(a=!0,e.each(s.sortables,function(){return this.instance.positionAbs=s.positionAbs,this.instance.helperProportions=s.helperProportions,this.instance.offset.click=s.offset.click,this!==o&&this.instance._intersectsWith(this.instance.containerCache)&&e.contains(o.instance.element[0],this.instance.element[0])&&(a=!1),a})),a?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=e(n).clone().removeAttr("id").appendTo(this.instance.element).data("ui-sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return i.helper[0]},t.target=this.instance.currentItem[0],this.instance._mouseCapture(t,!0),this.instance._mouseStart(t,!0,!0),this.instance.offset.click.top=s.offset.click.top,this.instance.offset.click.left=s.offset.click.left,this.instance.offset.parent.left-=s.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=s.offset.parent.top-this.instance.offset.parent.top,s._trigger("toSortable",t),s.dropped=this.instance.element,s.currentItem=s.element,this.instance.fromOutside=s),this.instance.currentItem&&this.instance._mouseDrag(t)):this.instance.isOver&&(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",t,this.instance._uiHash(this.instance)),this.instance._mouseStop(t,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),s._trigger("fromSortable",t),s.dropped=!1)})}}),e.ui.plugin.add("draggable","cursor",{start:function(){var t=e("body"),i=e(this).data("ui-draggable").options;t.css("cursor")&&(i._cursor=t.css("cursor")),t.css("cursor",i.cursor)},stop:function(){var t=e(this).data("ui-draggable").options;t._cursor&&e("body").css("cursor",t._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,i){var s=e(i.helper),n=e(this).data("ui-draggable").options;s.css("opacity")&&(n._opacity=s.css("opacity")),s.css("opacity",n.opacity)},stop:function(t,i){var s=e(this).data("ui-draggable").options;s._opacity&&e(i.helper).css("opacity",s._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(){var t=e(this).data("ui-draggable");t.scrollParent[0]!==document&&"HTML"!==t.scrollParent[0].tagName&&(t.overflowOffset=t.scrollParent.offset())},drag:function(t){var i=e(this).data("ui-draggable"),s=i.options,n=!1;i.scrollParent[0]!==document&&"HTML"!==i.scrollParent[0].tagName?(s.axis&&"x"===s.axis||(i.overflowOffset.top+i.scrollParent[0].offsetHeight-t.pageY=0;c--)r=p.snapElements[c].left,h=r+p.snapElements[c].width,l=p.snapElements[c].top,u=l+p.snapElements[c].height,g>r-m&&h+m>g&&y>l-m&&u+m>y||g>r-m&&h+m>g&&b>l-m&&u+m>b||v>r-m&&h+m>v&&y>l-m&&u+m>y||v>r-m&&h+m>v&&b>l-m&&u+m>b?("inner"!==f.snapMode&&(s=m>=Math.abs(l-b),n=m>=Math.abs(u-y),a=m>=Math.abs(r-v),o=m>=Math.abs(h-g),s&&(i.position.top=p._convertPositionTo("relative",{top:l-p.helperProportions.height,left:0}).top-p.margins.top),n&&(i.position.top=p._convertPositionTo("relative",{top:u,left:0}).top-p.margins.top),a&&(i.position.left=p._convertPositionTo("relative",{top:0,left:r-p.helperProportions.width}).left-p.margins.left),o&&(i.position.left=p._convertPositionTo("relative",{top:0,left:h}).left-p.margins.left)),d=s||n||a||o,"outer"!==f.snapMode&&(s=m>=Math.abs(l-y),n=m>=Math.abs(u-b),a=m>=Math.abs(r-g),o=m>=Math.abs(h-v),s&&(i.position.top=p._convertPositionTo("relative",{top:l,left:0}).top-p.margins.top),n&&(i.position.top=p._convertPositionTo("relative",{top:u-p.helperProportions.height,left:0}).top-p.margins.top),a&&(i.position.left=p._convertPositionTo("relative",{top:0,left:r}).left-p.margins.left),o&&(i.position.left=p._convertPositionTo("relative",{top:0,left:h-p.helperProportions.width}).left-p.margins.left)),!p.snapElements[c].snapping&&(s||n||a||o||d)&&p.options.snap.snap&&p.options.snap.snap.call(p.element,t,e.extend(p._uiHash(),{snapItem:p.snapElements[c].item})),p.snapElements[c].snapping=s||n||a||o||d):(p.snapElements[c].snapping&&p.options.snap.release&&p.options.snap.release.call(p.element,t,e.extend(p._uiHash(),{snapItem:p.snapElements[c].item})),p.snapElements[c].snapping=!1)}}),e.ui.plugin.add("draggable","stack",{start:function(){var t,i=this.data("ui-draggable").options,s=e.makeArray(e(i.stack)).sort(function(t,i){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(i).css("zIndex"),10)||0)});s.length&&(t=parseInt(e(s[0]).css("zIndex"),10)||0,e(s).each(function(i){e(this).css("zIndex",t+i)}),this.css("zIndex",t+s.length))}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,i){var s=e(i.helper),n=e(this).data("ui-draggable").options;s.css("zIndex")&&(n._zIndex=s.css("zIndex")),s.css("zIndex",n.zIndex)},stop:function(t,i){var s=e(this).data("ui-draggable").options;s._zIndex&&e(i.helper).css("zIndex",s._zIndex)}})})(jQuery);(function(e){function t(e,t,i){return e>t&&t+i>e}e.widget("ui.droppable",{version:"1.10.2",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t=this.options,i=t.accept;this.isover=!1,this.isout=!0,this.accept=e.isFunction(i)?i:function(e){return e.is(i)},this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight},e.ui.ddmanager.droppables[t.scope]=e.ui.ddmanager.droppables[t.scope]||[],e.ui.ddmanager.droppables[t.scope].push(this),t.addClasses&&this.element.addClass("ui-droppable")},_destroy:function(){for(var t=0,i=e.ui.ddmanager.droppables[this.options.scope];i.length>t;t++)i[t]===this&&i.splice(t,1);this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(t,i){"accept"===t&&(this.accept=e.isFunction(i)?i:function(e){return e.is(i)}),e.Widget.prototype._setOption.apply(this,arguments)},_activate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),i&&this._trigger("activate",t,this.ui(i))},_deactivate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),i&&this._trigger("deactivate",t,this.ui(i))},_over:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",t,this.ui(i)))},_out:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",t,this.ui(i)))},_drop:function(t,i){var s=i||e.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var t=e.data(this,"ui-droppable");return t.options.greedy&&!t.options.disabled&&t.options.scope===s.options.scope&&t.accept.call(t.element[0],s.currentItem||s.element)&&e.ui.intersect(s,e.extend(t,{offset:t.element.offset()}),t.options.tolerance)?(n=!0,!1):undefined}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",t,this.ui(s)),this.element):!1):!1},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}}}),e.ui.intersect=function(e,i,s){if(!i.offset)return!1;var n,a,o=(e.positionAbs||e.position.absolute).left,r=o+e.helperProportions.width,h=(e.positionAbs||e.position.absolute).top,l=h+e.helperProportions.height,u=i.offset.left,c=u+i.proportions.width,d=i.offset.top,p=d+i.proportions.height;switch(s){case"fit":return o>=u&&c>=r&&h>=d&&p>=l;case"intersect":return o+e.helperProportions.width/2>u&&c>r-e.helperProportions.width/2&&h+e.helperProportions.height/2>d&&p>l-e.helperProportions.height/2;case"pointer":return n=(e.positionAbs||e.position.absolute).left+(e.clickOffset||e.offset.click).left,a=(e.positionAbs||e.position.absolute).top+(e.clickOffset||e.offset.click).top,t(a,d,i.proportions.height)&&t(n,u,i.proportions.width);case"touch":return(h>=d&&p>=h||l>=d&&p>=l||d>h&&l>p)&&(o>=u&&c>=o||r>=u&&c>=r||u>o&&r>c);default:return!1}},e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,i){var s,n,a=e.ui.ddmanager.droppables[t.options.scope]||[],o=i?i.type:null,r=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();e:for(s=0;a.length>s;s++)if(!(a[s].options.disabled||t&&!a[s].accept.call(a[s].element[0],t.currentItem||t.element))){for(n=0;r.length>n;n++)if(r[n]===a[s].element[0]){a[s].proportions.height=0;continue e}a[s].visible="none"!==a[s].element.css("display"),a[s].visible&&("mousedown"===o&&a[s]._activate.call(a[s],i),a[s].offset=a[s].element.offset(),a[s].proportions={width:a[s].element[0].offsetWidth,height:a[s].element[0].offsetHeight})}},drop:function(t,i){var s=!1;return e.each((e.ui.ddmanager.droppables[t.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&e.ui.intersect(t,this,this.options.tolerance)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(t,i){t.element.parentsUntil("body").bind("scroll.droppable",function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)})},drag:function(t,i){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,i),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,a,o=e.ui.intersect(t,this,this.options.tolerance),r=!o&&this.isover?"isout":o&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,a=this.element.parents(":data(ui-droppable)").filter(function(){return e.data(this,"ui-droppable").options.scope===n}),a.length&&(s=e.data(a[0],"ui-droppable"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(t,i){t.element.parentsUntil("body").unbind("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)}}})(jQuery);(function(e){function t(e){return parseInt(e,10)||0}function i(e){return!isNaN(parseInt(e,10))}e.widget("ui.resizable",e.ui.mouse,{version:"1.10.2",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_create:function(){var t,i,s,n,a,o=this,r=this.options;if(this.element.addClass("ui-resizable"),e.extend(this,{_aspectRatio:!!r.aspectRatio,aspectRatio:r.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:r.helper||r.ghost||r.animate?r.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(e("
").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.data("ui-resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=r.handles||(e(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),t=this.handles.split(","),this.handles={},i=0;t.length>i;i++)s=e.trim(t[i]),a="ui-resizable-"+s,n=e("
"),n.css({zIndex:r.zIndex}),"se"===s&&n.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[s]=".ui-resizable-"+s,this.element.append(n);this._renderAxis=function(t){var i,s,n,a;t=t||this.element;for(i in this.handles)this.handles[i].constructor===String&&(this.handles[i]=e(this.handles[i],this.element).show()),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)&&(s=e(this.handles[i],this.element),a=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),t.css(n,a),this._proportionallyResize()),e(this.handles[i]).length},this._renderAxis(this.element),this._handles=e(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){o.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),o.axis=n&&n[1]?n[1]:"se")}),r.autoHide&&(this._handles.hide(),e(this.element).addClass("ui-resizable-autohide").mouseenter(function(){r.disabled||(e(this).removeClass("ui-resizable-autohide"),o._handles.show())}).mouseleave(function(){r.disabled||o.resizing||(e(this).addClass("ui-resizable-autohide"),o._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t,i=function(t){e(t).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),t=this.element,this.originalElement.css({position:t.css("position"),width:t.outerWidth(),height:t.outerHeight(),top:t.css("top"),left:t.css("left")}).insertAfter(t),t.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_mouseCapture:function(t){var i,s,n=!1;for(i in this.handles)s=e(this.handles[i])[0],(s===t.target||e.contains(s,t.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(i){var s,n,a,o=this.options,r=this.element.position(),h=this.element;return this.resizing=!0,/absolute/.test(h.css("position"))?h.css({position:"absolute",top:h.css("top"),left:h.css("left")}):h.is(".ui-draggable")&&h.css({position:"absolute",top:r.top,left:r.left}),this._renderProxy(),s=t(this.helper.css("left")),n=t(this.helper.css("top")),o.containment&&(s+=e(o.containment).scrollLeft()||0,n+=e(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:s,top:n},this.size=this._helper?{width:h.outerWidth(),height:h.outerHeight()}:{width:h.width(),height:h.height()},this.originalSize=this._helper?{width:h.outerWidth(),height:h.outerHeight()}:{width:h.width(),height:h.height()},this.originalPosition={left:s,top:n},this.sizeDiff={width:h.outerWidth()-h.width(),height:h.outerHeight()-h.height()},this.originalMousePosition={left:i.pageX,top:i.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,a=e(".ui-resizable-"+this.axis).css("cursor"),e("body").css("cursor","auto"===a?this.axis+"-resize":a),h.addClass("ui-resizable-resizing"),this._propagate("start",i),!0},_mouseDrag:function(t){var i,s=this.helper,n={},a=this.originalMousePosition,o=this.axis,r=this.position.top,h=this.position.left,l=this.size.width,u=this.size.height,c=t.pageX-a.left||0,d=t.pageY-a.top||0,p=this._change[o];return p?(i=p.apply(this,[t,c,d]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(i=this._updateRatio(i,t)),i=this._respectSize(i,t),this._updateCache(i),this._propagate("resize",t),this.position.top!==r&&(n.top=this.position.top+"px"),this.position.left!==h&&(n.left=this.position.left+"px"),this.size.width!==l&&(n.width=this.size.width+"px"),this.size.height!==u&&(n.height=this.size.height+"px"),s.css(n),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),e.isEmptyObject(n)||this._trigger("resize",t,this.ui()),!1):!1},_mouseStop:function(t){this.resizing=!1;var i,s,n,a,o,r,h,l=this.options,u=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&e.ui.hasScroll(i[0],"left")?0:u.sizeDiff.height,a=s?0:u.sizeDiff.width,o={width:u.helper.width()-a,height:u.helper.height()-n},r=parseInt(u.element.css("left"),10)+(u.position.left-u.originalPosition.left)||null,h=parseInt(u.element.css("top"),10)+(u.position.top-u.originalPosition.top)||null,l.animate||this.element.css(e.extend(o,{top:h,left:r})),u.helper.height(u.size.height),u.helper.width(u.size.width),this._helper&&!l.animate&&this._proportionallyResize()),e("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updateVirtualBoundaries:function(e){var t,s,n,a,o,r=this.options;o={minWidth:i(r.minWidth)?r.minWidth:0,maxWidth:i(r.maxWidth)?r.maxWidth:1/0,minHeight:i(r.minHeight)?r.minHeight:0,maxHeight:i(r.maxHeight)?r.maxHeight:1/0},(this._aspectRatio||e)&&(t=o.minHeight*this.aspectRatio,n=o.minWidth/this.aspectRatio,s=o.maxHeight*this.aspectRatio,a=o.maxWidth/this.aspectRatio,t>o.minWidth&&(o.minWidth=t),n>o.minHeight&&(o.minHeight=n),o.maxWidth>s&&(o.maxWidth=s),o.maxHeight>a&&(o.maxHeight=a)),this._vBoundaries=o},_updateCache:function(e){this.offset=this.helper.offset(),i(e.left)&&(this.position.left=e.left),i(e.top)&&(this.position.top=e.top),i(e.height)&&(this.size.height=e.height),i(e.width)&&(this.size.width=e.width)},_updateRatio:function(e){var t=this.position,s=this.size,n=this.axis;return i(e.height)?e.width=e.height*this.aspectRatio:i(e.width)&&(e.height=e.width/this.aspectRatio),"sw"===n&&(e.left=t.left+(s.width-e.width),e.top=null),"nw"===n&&(e.top=t.top+(s.height-e.height),e.left=t.left+(s.width-e.width)),e},_respectSize:function(e){var t=this._vBoundaries,s=this.axis,n=i(e.width)&&t.maxWidth&&t.maxWidthe.width,r=i(e.height)&&t.minHeight&&t.minHeight>e.height,h=this.originalPosition.left+this.originalSize.width,l=this.position.top+this.size.height,u=/sw|nw|w/.test(s),c=/nw|ne|n/.test(s);return o&&(e.width=t.minWidth),r&&(e.height=t.minHeight),n&&(e.width=t.maxWidth),a&&(e.height=t.maxHeight),o&&u&&(e.left=h-t.minWidth),n&&u&&(e.left=h-t.maxWidth),r&&c&&(e.top=l-t.minHeight),a&&c&&(e.top=l-t.maxHeight),e.width||e.height||e.left||!e.top?e.width||e.height||e.top||!e.left||(e.left=null):e.top=null,e},_proportionallyResize:function(){if(this._proportionallyResizeElements.length){var e,t,i,s,n,a=this.helper||this.element;for(e=0;this._proportionallyResizeElements.length>e;e++){if(n=this._proportionallyResizeElements[e],!this.borderDif)for(this.borderDif=[],i=[n.css("borderTopWidth"),n.css("borderRightWidth"),n.css("borderBottomWidth"),n.css("borderLeftWidth")],s=[n.css("paddingTop"),n.css("paddingRight"),n.css("paddingBottom"),n.css("paddingLeft")],t=0;i.length>t;t++)this.borderDif[t]=(parseInt(i[t],10)||0)+(parseInt(s[t],10)||0);n.css({height:a.height()-this.borderDif[0]-this.borderDif[2]||0,width:a.width()-this.borderDif[1]-this.borderDif[3]||0})}}},_renderProxy:function(){var t=this.element,i=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||e("
"),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(e,t){return{width:this.originalSize.width+t}},w:function(e,t){var i=this.originalSize,s=this.originalPosition;return{left:s.left+t,width:i.width-t}},n:function(e,t,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(e,t,i){return{height:this.originalSize.height+i}},se:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},sw:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,i,s]))},ne:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},nw:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,i,s]))}},_propagate:function(t,i){e.ui.plugin.call(this,t,[i,this.ui()]),"resize"!==t&&this._trigger(t,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),e.ui.plugin.add("resizable","animate",{stop:function(t){var i=e(this).data("ui-resizable"),s=i.options,n=i._proportionallyResizeElements,a=n.length&&/textarea/i.test(n[0].nodeName),o=a&&e.ui.hasScroll(n[0],"left")?0:i.sizeDiff.height,r=a?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-o},l=parseInt(i.element.css("left"),10)+(i.position.left-i.originalPosition.left)||null,u=parseInt(i.element.css("top"),10)+(i.position.top-i.originalPosition.top)||null;i.element.animate(e.extend(h,u&&l?{top:u,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseInt(i.element.css("width"),10),height:parseInt(i.element.css("height"),10),top:parseInt(i.element.css("top"),10),left:parseInt(i.element.css("left"),10)};n&&n.length&&e(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(){var i,s,n,a,o,r,h,l=e(this).data("ui-resizable"),u=l.options,c=l.element,d=u.containment,p=d instanceof e?d.get(0):/parent/.test(d)?c.parent().get(0):d;p&&(l.containerElement=e(p),/document/.test(d)||d===document?(l.containerOffset={left:0,top:0},l.containerPosition={left:0,top:0},l.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}):(i=e(p),s=[],e(["Top","Right","Left","Bottom"]).each(function(e,n){s[e]=t(i.css("padding"+n))}),l.containerOffset=i.offset(),l.containerPosition=i.position(),l.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},n=l.containerOffset,a=l.containerSize.height,o=l.containerSize.width,r=e.ui.hasScroll(p,"left")?p.scrollWidth:o,h=e.ui.hasScroll(p)?p.scrollHeight:a,l.parentData={element:p,left:n.left,top:n.top,width:r,height:h}))},resize:function(t){var i,s,n,a,o=e(this).data("ui-resizable"),r=o.options,h=o.containerOffset,l=o.position,u=o._aspectRatio||t.shiftKey,c={top:0,left:0},d=o.containerElement;d[0]!==document&&/static/.test(d.css("position"))&&(c=h),l.left<(o._helper?h.left:0)&&(o.size.width=o.size.width+(o._helper?o.position.left-h.left:o.position.left-c.left),u&&(o.size.height=o.size.width/o.aspectRatio),o.position.left=r.helper?h.left:0),l.top<(o._helper?h.top:0)&&(o.size.height=o.size.height+(o._helper?o.position.top-h.top:o.position.top),u&&(o.size.width=o.size.height*o.aspectRatio),o.position.top=o._helper?h.top:0),o.offset.left=o.parentData.left+o.position.left,o.offset.top=o.parentData.top+o.position.top,i=Math.abs((o._helper?o.offset.left-c.left:o.offset.left-c.left)+o.sizeDiff.width),s=Math.abs((o._helper?o.offset.top-c.top:o.offset.top-h.top)+o.sizeDiff.height),n=o.containerElement.get(0)===o.element.parent().get(0),a=/relative|absolute/.test(o.containerElement.css("position")),n&&a&&(i-=o.parentData.left),i+o.size.width>=o.parentData.width&&(o.size.width=o.parentData.width-i,u&&(o.size.height=o.size.width/o.aspectRatio)),s+o.size.height>=o.parentData.height&&(o.size.height=o.parentData.height-s,u&&(o.size.width=o.size.height*o.aspectRatio))},stop:function(){var t=e(this).data("ui-resizable"),i=t.options,s=t.containerOffset,n=t.containerPosition,a=t.containerElement,o=e(t.helper),r=o.offset(),h=o.outerWidth()-t.sizeDiff.width,l=o.outerHeight()-t.sizeDiff.height;t._helper&&!i.animate&&/relative/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l}),t._helper&&!i.animate&&/static/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),e.ui.plugin.add("resizable","alsoResize",{start:function(){var t=e(this).data("ui-resizable"),i=t.options,s=function(t){e(t).each(function(){var t=e(this);t.data("ui-resizable-alsoresize",{width:parseInt(t.width(),10),height:parseInt(t.height(),10),left:parseInt(t.css("left"),10),top:parseInt(t.css("top"),10)})})};"object"!=typeof i.alsoResize||i.alsoResize.parentNode?s(i.alsoResize):i.alsoResize.length?(i.alsoResize=i.alsoResize[0],s(i.alsoResize)):e.each(i.alsoResize,function(e){s(e)})},resize:function(t,i){var s=e(this).data("ui-resizable"),n=s.options,a=s.originalSize,o=s.originalPosition,r={height:s.size.height-a.height||0,width:s.size.width-a.width||0,top:s.position.top-o.top||0,left:s.position.left-o.left||0},h=function(t,s){e(t).each(function(){var t=e(this),n=e(this).data("ui-resizable-alsoresize"),a={},o=s&&s.length?s:t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(o,function(e,t){var i=(n[t]||0)+(r[t]||0);i&&i>=0&&(a[t]=i||null)}),t.css(a)})};"object"!=typeof n.alsoResize||n.alsoResize.nodeType?h(n.alsoResize):e.each(n.alsoResize,function(e,t){h(e,t)})},stop:function(){e(this).removeData("resizable-alsoresize")}}),e.ui.plugin.add("resizable","ghost",{start:function(){var t=e(this).data("ui-resizable"),i=t.options,s=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof i.ghost?i.ghost:""),t.ghost.appendTo(t.helper)},resize:function(){var t=e(this).data("ui-resizable");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=e(this).data("ui-resizable");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),e.ui.plugin.add("resizable","grid",{resize:function(){var t=e(this).data("ui-resizable"),i=t.options,s=t.size,n=t.originalSize,a=t.originalPosition,o=t.axis,r="number"==typeof i.grid?[i.grid,i.grid]:i.grid,h=r[0]||1,l=r[1]||1,u=Math.round((s.width-n.width)/h)*h,c=Math.round((s.height-n.height)/l)*l,d=n.width+u,p=n.height+c,f=i.maxWidth&&d>i.maxWidth,m=i.maxHeight&&p>i.maxHeight,g=i.minWidth&&i.minWidth>d,v=i.minHeight&&i.minHeight>p;i.grid=r,g&&(d+=h),v&&(p+=l),f&&(d-=h),m&&(p-=l),/^(se|s|e)$/.test(o)?(t.size.width=d,t.size.height=p):/^(ne)$/.test(o)?(t.size.width=d,t.size.height=p,t.position.top=a.top-c):/^(sw)$/.test(o)?(t.size.width=d,t.size.height=p,t.position.left=a.left-u):(t.size.width=d,t.size.height=p,t.position.top=a.top-c,t.position.left=a.left-u)}})})(jQuery);(function(e){e.widget("ui.selectable",e.ui.mouse,{version:"1.10.2",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var t,i=this;this.element.addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){t=e(i.options.filter,i.element[0]),t.addClass("ui-selectee"),t.each(function(){var t=e(this),i=t.offset();e.data(this,"selectable-item",{element:this,$element:t,left:i.left,top:i.top,right:i.left+t.outerWidth(),bottom:i.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=t.addClass("ui-selectee"),this._mouseInit(),this.helper=e("
")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(t){var i=this,s=this.options;this.opos=[t.pageX,t.pageY],this.options.disabled||(this.selectees=e(s.filter,this.element[0]),this._trigger("start",t),e(s.appendTo).append(this.helper),this.helper.css({left:t.pageX,top:t.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=e.data(this,"selectable-item");s.startselected=!0,t.metaKey||t.ctrlKey||(s.$element.removeClass("ui-selected"),s.selected=!1,s.$element.addClass("ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",t,{unselecting:s.element}))}),e(t.target).parents().addBack().each(function(){var s,n=e.data(this,"selectable-item");return n?(s=!t.metaKey&&!t.ctrlKey||!n.$element.hasClass("ui-selected"),n.$element.removeClass(s?"ui-unselecting":"ui-selected").addClass(s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",t,{selecting:n.element}):i._trigger("unselecting",t,{unselecting:n.element}),!1):undefined}))},_mouseDrag:function(t){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,a=this.opos[0],o=this.opos[1],r=t.pageX,h=t.pageY;return a>r&&(i=r,r=a,a=i),o>h&&(i=h,h=o,o=i),this.helper.css({left:a,top:o,width:r-a,height:h-o}),this.selectees.each(function(){var i=e.data(this,"selectable-item"),l=!1;i&&i.element!==s.element[0]&&("touch"===n.tolerance?l=!(i.left>r||a>i.right||i.top>h||o>i.bottom):"fit"===n.tolerance&&(l=i.left>a&&r>i.right&&i.top>o&&h>i.bottom),l?(i.selected&&(i.$element.removeClass("ui-selected"),i.selected=!1),i.unselecting&&(i.$element.removeClass("ui-unselecting"),i.unselecting=!1),i.selecting||(i.$element.addClass("ui-selecting"),i.selecting=!0,s._trigger("selecting",t,{selecting:i.element}))):(i.selecting&&((t.metaKey||t.ctrlKey)&&i.startselected?(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.$element.addClass("ui-selected"),i.selected=!0):(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.startselected&&(i.$element.addClass("ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",t,{unselecting:i.element}))),i.selected&&(t.metaKey||t.ctrlKey||i.startselected||(i.$element.removeClass("ui-selected"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",t,{unselecting:i.element})))))}),!1}},_mouseStop:function(t){var i=this;return this.dragged=!1,e(".ui-unselecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",t,{unselected:s.element})}),e(".ui-selecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-selecting").addClass("ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",t,{selected:s.element})}),this._trigger("stop",t),this.helper.remove(),!1}})})(jQuery);(function(t){function e(t,e,i){return t>e&&e+i>t}function i(t){return/left|right/.test(t.css("float"))||/inline|table-cell/.test(t.css("display"))}t.widget("ui.sortable",t.ui.mouse,{version:"1.10.2",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_create:function(){var t=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?"x"===t.axis||i(this.items[0].item):!1,this.offset=this.element.offset(),this._mouseInit(),this.ready=!0},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var t=this.items.length-1;t>=0;t--)this.items[t].item.removeData(this.widgetName+"-item");return this},_setOption:function(e,i){"disabled"===e?(this.options[e]=i,this.widget().toggleClass("ui-sortable-disabled",!!i)):t.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(e,i){var s=null,n=!1,a=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(e),t(e.target).parents().each(function(){return t.data(this,a.widgetName+"-item")===a?(s=t(this),!1):undefined}),t.data(e.target,a.widgetName+"-item")===a&&(s=t(e.target)),s?!this.options.handle||i||(t(this.options.handle,s).find("*").addBack().each(function(){this===e.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(e,i,s){var n,a,o=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(e),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},t.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(e),this.originalPageX=e.pageX,this.originalPageY=e.pageY,o.cursorAt&&this._adjustOffsetFromHelper(o.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),o.containment&&this._setContainment(),o.cursor&&"auto"!==o.cursor&&(a=this.document.find("body"),this.storedCursor=a.css("cursor"),a.css("cursor",o.cursor),this.storedStylesheet=t("").appendTo(a)),o.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",o.opacity)),o.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",o.zIndex)),this.scrollParent[0]!==document&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",e,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",e,this._uiHash(this));return t.ui.ddmanager&&(t.ui.ddmanager.current=this),t.ui.ddmanager&&!o.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(e),!0},_mouseDrag:function(e){var i,s,n,a,o=this.options,r=!1;for(this.position=this._generatePosition(e),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==document&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-e.pageY=0;i--)if(s=this.items[i],n=s.item[0],a=this._intersectsWithPointer(s),a&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===a?"next":"prev"]()[0]!==n&&!t.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!t.contains(this.element[0],n):!0)){if(this.direction=1===a?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(e,s),this._trigger("change",e,this._uiHash());break}return this._contactContainers(e),t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),this._trigger("sort",e,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(e,i){if(e){if(t.ui.ddmanager&&!this.options.dropBehaviour&&t.ui.ddmanager.drop(this,e),this.options.revert){var s=this,n=this.placeholder.offset(),a=this.options.axis,o={};a&&"x"!==a||(o.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollLeft)),a&&"y"!==a||(o.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,t(this.helper).animate(o,parseInt(this.options.revert,10)||500,function(){s._clear(e)})}else this._clear(e,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp({target:null}),"original"===this.options.helper?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var e=this.containers.length-1;e>=0;e--)this.containers[e]._trigger("deactivate",null,this._uiHash(this)),this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",null,this._uiHash(this)),this.containers[e].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),t.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?t(this.domPosition.prev).after(this.currentItem):t(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},t(i).each(function(){var i=(t(e.item||this).attr(e.attribute||"id")||"").match(e.expression||/(.+)[\-=_](.+)/);i&&s.push((e.key||i[1]+"[]")+"="+(e.key&&e.expression?i[1]:i[2]))}),!s.length&&e.key&&s.push(e.key+"="),s.join("&")},toArray:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},i.each(function(){s.push(t(e.item||this).attr(e.attribute||"id")||"")}),s},_intersectsWith:function(t){var e=this.positionAbs.left,i=e+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,a=t.left,o=a+t.width,r=t.top,h=r+t.height,l=this.offset.click.top,c=this.offset.click.left,u=s+l>r&&h>s+l&&e+c>a&&o>e+c;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>t[this.floating?"width":"height"]?u:e+this.helperProportions.width/2>a&&o>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>n-this.helperProportions.height/2},_intersectsWithPointer:function(t){var i="x"===this.options.axis||e(this.positionAbs.top+this.offset.click.top,t.top,t.height),s="y"===this.options.axis||e(this.positionAbs.left+this.offset.click.left,t.left,t.width),n=i&&s,a=this._getDragVerticalDirection(),o=this._getDragHorizontalDirection();return n?this.floating?o&&"right"===o||"down"===a?2:1:a&&("down"===a?2:1):!1},_intersectsWithSides:function(t){var i=e(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),s=e(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),n=this._getDragVerticalDirection(),a=this._getDragHorizontalDirection();return this.floating&&a?"right"===a&&s||"left"===a&&!s:n&&("down"===n&&i||"up"===n&&!i)},_getDragVerticalDirection:function(){var t=this.positionAbs.top-this.lastPositionAbs.top;return 0!==t&&(t>0?"down":"up")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!==t&&(t>0?"right":"left")},refresh:function(t){return this._refreshItems(t),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQuery:function(e){var i,s,n,a,o=[],r=[],h=this._connectWith();if(h&&e)for(i=h.length-1;i>=0;i--)for(n=t(h[i]),s=n.length-1;s>=0;s--)a=t.data(n[s],this.widgetFullName),a&&a!==this&&!a.options.disabled&&r.push([t.isFunction(a.options.items)?a.options.items.call(a.element):t(a.options.items,a.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),a]);for(r.push([t.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):t(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),i=r.length-1;i>=0;i--)r[i][0].each(function(){o.push(this)});return t(o)},_removeCurrentsFromItems:function(){var e=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=t.grep(this.items,function(t){for(var i=0;e.length>i;i++)if(e[i]===t.item[0])return!1;return!0})},_refreshItems:function(e){this.items=[],this.containers=[this];var i,s,n,a,o,r,h,l,c=this.items,u=[[t.isFunction(this.options.items)?this.options.items.call(this.element[0],e,{item:this.currentItem}):t(this.options.items,this.element),this]],d=this._connectWith();if(d&&this.ready)for(i=d.length-1;i>=0;i--)for(n=t(d[i]),s=n.length-1;s>=0;s--)a=t.data(n[s],this.widgetFullName),a&&a!==this&&!a.options.disabled&&(u.push([t.isFunction(a.options.items)?a.options.items.call(a.element[0],e,{item:this.currentItem}):t(a.options.items,a.element),a]),this.containers.push(a));for(i=u.length-1;i>=0;i--)for(o=u[i][1],r=u[i][0],s=0,l=r.length;l>s;s++)h=t(r[s]),h.data(this.widgetName+"-item",o),c.push({item:h,instance:o,width:0,height:0,left:0,top:0})},refreshPositions:function(e){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,a;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?t(this.options.toleranceElement,s.item):s.item,e||(s.width=n.outerWidth(),s.height=n.outerHeight()),a=n.offset(),s.left=a.left,s.top=a.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)a=this.containers[i].element.offset(),this.containers[i].containerCache.left=a.left,this.containers[i].containerCache.top=a.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(e){e=e||this;var i,s=e.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=e.currentItem[0].nodeName.toLowerCase(),n=t(e.document[0].createElement(s)).addClass(i||e.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper");return"tr"===s?n.append(" "):"img"===s&&n.attr("src",e.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(t,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(e.currentItem.innerHeight()-parseInt(e.currentItem.css("paddingTop")||0,10)-parseInt(e.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(e.currentItem.innerWidth()-parseInt(e.currentItem.css("paddingLeft")||0,10)-parseInt(e.currentItem.css("paddingRight")||0,10)))}}),e.placeholder=t(s.placeholder.element.call(e.element,e.currentItem)),e.currentItem.after(e.placeholder),s.placeholder.update(e,e.placeholder)},_contactContainers:function(s){var n,a,o,r,h,l,c,u,d,p,f=null,m=null;for(n=this.containers.length-1;n>=0;n--)if(!t.contains(this.currentItem[0],this.containers[n].element[0]))if(this._intersectsWith(this.containers[n].containerCache)){if(f&&t.contains(this.containers[n].element[0],f.element[0]))continue;f=this.containers[n],m=n}else this.containers[n].containerCache.over&&(this.containers[n]._trigger("out",s,this._uiHash(this)),this.containers[n].containerCache.over=0);if(f)if(1===this.containers.length)this.containers[m].containerCache.over||(this.containers[m]._trigger("over",s,this._uiHash(this)),this.containers[m].containerCache.over=1);else{for(o=1e4,r=null,p=f.floating||i(this.currentItem),h=p?"left":"top",l=p?"width":"height",c=this.positionAbs[h]+this.offset.click[h],a=this.items.length-1;a>=0;a--)t.contains(this.containers[m].element[0],this.items[a].item[0])&&this.items[a].item[0]!==this.currentItem[0]&&(!p||e(this.positionAbs.top+this.offset.click.top,this.items[a].top,this.items[a].height))&&(u=this.items[a].item.offset()[h],d=!1,Math.abs(u-c)>Math.abs(u+this.items[a][l]-c)&&(d=!0,u+=this.items[a][l]),o>Math.abs(u-c)&&(o=Math.abs(u-c),r=this.items[a],this.direction=d?"up":"down"));if(!r&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[m])return;r?this._rearrange(s,r,null,!0):this._rearrange(s,null,this.containers[m].element,!0),this._trigger("change",s,this._uiHash()),this.containers[m]._trigger("change",s,this._uiHash(this)),this.currentContainer=this.containers[m],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[m]._trigger("over",s,this._uiHash(this)),this.containers[m].containerCache.over=1}},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper)?t(i.helper.apply(this.element[0],[e,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||t("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var e=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===document.body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&t.ui.ie)&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var t=this.currentItem.position();return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,t("document"===n.containment?document:window).width()-this.helperProportions.width-this.margins.left,(t("document"===n.containment?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(e=t(n.containment)[0],i=t(n.containment).offset(),s="hidden"!==t(e).css("overflow"),this.containment=[i.left+(parseInt(t(e).css("borderLeftWidth"),10)||0)+(parseInt(t(e).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(t(e).css("borderTopWidth"),10)||0)+(parseInt(t(e).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(e.scrollWidth,e.offsetWidth):e.offsetWidth)-(parseInt(t(e).css("borderLeftWidth"),10)||0)-(parseInt(t(e).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(e.scrollHeight,e.offsetHeight):e.offsetHeight)-(parseInt(t(e).css("borderTopWidth"),10)||0)-(parseInt(t(e).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(e,i){i||(i=this.position);var s="absolute"===e?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,a=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():a?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():a?0:n.scrollLeft())*s}},_generatePosition:function(e){var i,s,n=this.options,a=e.pageX,o=e.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==document&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(e.pageX-this.offset.click.leftthis.containment[2]&&(a=this.containment[2]+this.offset.click.left),e.pageY-this.offset.click.top>this.containment[3]&&(o=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((o-this.originalPageY)/n.grid[1])*n.grid[1],o=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((a-this.originalPageX)/n.grid[0])*n.grid[0],a=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:a-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){this.reverting=!1;var i,s=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(i in this._storedCSS)("auto"===this._storedCSS[i]||"static"===this._storedCSS[i])&&(this._storedCSS[i]="");this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!e&&s.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||s.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(s.push(function(t){this._trigger("remove",t,this._uiHash())}),s.push(function(t){return function(e){t._trigger("receive",e,this._uiHash(this))}}.call(this,this.currentContainer)),s.push(function(t){return function(e){t._trigger("update",e,this._uiHash(this))}}.call(this,this.currentContainer)))),i=this.containers.length-1;i>=0;i--)e||s.push(function(t){return function(e){t._trigger("deactivate",e,this._uiHash(this))}}.call(this,this.containers[i])),this.containers[i].containerCache.over&&(s.push(function(t){return function(e){t._trigger("out",e,this._uiHash(this))}}.call(this,this.containers[i])),this.containers[i].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,this.cancelHelperRemoval){if(!e){for(this._trigger("beforeStop",t,this._uiHash()),i=0;s.length>i;i++)s[i].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!1}if(e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null,!e){for(i=0;s.length>i;i++)s[i].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!0},_trigger:function(){t.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(e){var i=e||this;return{helper:i.helper,placeholder:i.placeholder||t([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:e?e.element:null}}})})(jQuery);(function(t){var e=0,i={},s={};i.height=i.paddingTop=i.paddingBottom=i.borderTopWidth=i.borderBottomWidth="hide",s.height=s.paddingTop=s.paddingBottom=s.borderTopWidth=s.borderBottomWidth="show",t.widget("ui.accordion",{version:"1.10.2",options:{active:0,animate:{},collapsible:!1,event:"click",header:"> li > :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},_create:function(){var e=this.options;this.prevShow=this.prevHide=t(),this.element.addClass("ui-accordion ui-widget ui-helper-reset").attr("role","tablist"),e.collapsible||e.active!==!1&&null!=e.active||(e.active=0),this._processPanels(),0>e.active&&(e.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():t(),content:this.active.length?this.active.next():t()}},_createIcons:function(){var e=this.options.icons;e&&(t("").addClass("ui-accordion-header-icon ui-icon "+e.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(e.header).addClass(e.activeHeader),this.headers.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){return"active"===t?(this._activate(e),undefined):("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||this.options.active!==!1||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons()),"disabled"===t&&this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!e),undefined)},_keydown:function(e){if(!e.altKey&&!e.ctrlKey){var i=t.ui.keyCode,s=this.headers.length,n=this.headers.index(e.target),a=!1;switch(e.keyCode){case i.RIGHT:case i.DOWN:a=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:a=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(e);break;case i.HOME:a=this.headers[0];break;case i.END:a=this.headers[s-1]}a&&(t(e.target).attr("tabIndex",-1),t(a).attr("tabIndex",0),a.focus(),e.preventDefault())}},_panelKeyDown:function(e){e.keyCode===t.ui.keyCode.UP&&e.ctrlKey&&t(e.currentTarget).prev().focus()},refresh:function(){var e=this.options;this._processPanels(),(e.active===!1&&e.collapsible===!0||!this.headers.length)&&(e.active=!1,this.active=t()),e.active===!1?this._activate(0):this.active.length&&!t.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(e.active=!1,this.active=t()):this._activate(Math.max(0,e.active-1)):e.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){this.headers=this.element.find(this.options.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all"),this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").filter(":not(.ui-accordion-content-active)").hide()},_refresh:function(){var i,s=this.options,n=s.heightStyle,a=this.element.parent(),o=this.accordionId="ui-accordion-"+(this.element.attr("id")||++e);this.active=this._findActive(s.active).addClass("ui-accordion-header-active ui-state-active ui-corner-top").removeClass("ui-corner-all"),this.active.next().addClass("ui-accordion-content-active").show(),this.headers.attr("role","tab").each(function(e){var i=t(this),s=i.attr("id"),n=i.next(),a=n.attr("id");s||(s=o+"-header-"+e,i.attr("id",s)),a||(a=o+"-panel-"+e,n.attr("id",a)),i.attr("aria-controls",a),n.attr("aria-labelledby",s)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false",tabIndex:-1}).next().attr({"aria-expanded":"false","aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true",tabIndex:0}).next().attr({"aria-expanded":"true","aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(s.event),"fill"===n?(i=a.height(),this.element.siblings(":visible").each(function(){var e=t(this),s=e.css("position");"absolute"!==s&&"fixed"!==s&&(i-=e.outerHeight(!0))}),this.headers.each(function(){i-=t(this).outerHeight(!0)}),this.headers.next().each(function(){t(this).height(Math.max(0,i-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===n&&(i=0,this.headers.next().each(function(){i=Math.max(i,t(this).css("height","").height())}).height(i))},_activate:function(e){var i=this._findActive(e)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return"number"==typeof e?this.headers.eq(e):t()},_setupEvents:function(e){var i={keydown:"_keydown"};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(e){var i=this.options,s=this.active,n=t(e.currentTarget),a=n[0]===s[0],o=a&&i.collapsible,r=o?t():n.next(),h=s.next(),l={oldHeader:s,oldPanel:h,newHeader:o?t():n,newPanel:r};e.preventDefault(),a&&!i.collapsible||this._trigger("beforeActivate",e,l)===!1||(i.active=o?!1:this.headers.index(n),this.active=a?t():n,this._toggle(l),s.removeClass("ui-accordion-header-active ui-state-active"),i.icons&&s.children(".ui-accordion-header-icon").removeClass(i.icons.activeHeader).addClass(i.icons.header),a||(n.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),i.icons&&n.children(".ui-accordion-header-icon").removeClass(i.icons.header).addClass(i.icons.activeHeader),n.next().addClass("ui-accordion-content-active")))},_toggle:function(e){var i=e.newPanel,s=this.prevShow.length?this.prevShow:e.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,e):(s.hide(),i.show(),this._toggleComplete(e)),s.attr({"aria-expanded":"false","aria-hidden":"true"}),s.prev().attr("aria-selected","false"),i.length&&s.length?s.prev().attr("tabIndex",-1):i.length&&this.headers.filter(function(){return 0===t(this).attr("tabIndex")}).attr("tabIndex",-1),i.attr({"aria-expanded":"true","aria-hidden":"false"}).prev().attr({"aria-selected":"true",tabIndex:0})},_animate:function(t,e,n){var a,o,r,h=this,l=0,c=t.length&&(!e.length||t.index()",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},pending:0,_create:function(){var t,i,s,n=this.element[0].nodeName.toLowerCase(),a="textarea"===n,o="input"===n;this.isMultiLine=a?!0:o?!1:this.element.prop("isContentEditable"),this.valueMethod=this.element[a||o?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return t=!0,s=!0,i=!0,undefined;t=!1,s=!1,i=!1;var a=e.ui.keyCode;switch(n.keyCode){case a.PAGE_UP:t=!0,this._move("previousPage",n);break;case a.PAGE_DOWN:t=!0,this._move("nextPage",n);break;case a.UP:t=!0,this._keyEvent("previous",n);break;case a.DOWN:t=!0,this._keyEvent("next",n);break;case a.ENTER:case a.NUMPAD_ENTER:this.menu.active&&(t=!0,n.preventDefault(),this.menu.select(n));break;case a.TAB:this.menu.active&&this.menu.select(n);break;case a.ESCAPE:this.menu.element.is(":visible")&&(this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(t)return t=!1,s.preventDefault(),undefined;if(!i){var n=e.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(e){return s?(s=!1,e.preventDefault(),undefined):(this._searchTimeout(e),undefined)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,undefined):(clearTimeout(this.searching),this.close(e),this._change(e),undefined)}}),this._initSource(),this.menu=e("
"].join("")),s=g.find("."+r),u=function(){var t=n.scrollTop();t>=e.showHeight?i||(s.show(),i=1):i&&(s.hide(),i=0)};t("."+a)[0]||("object"==typeof e.css&&g.css(e.css),l.append(g),u(),g.find("li").on("click",function(){var i=t(this),o=i.attr("lay-type");"top"===o&&t("html,body").animate({scrollTop:0},200),e.click&&e.click.call(this,o)}),n.on("scroll",function(){clearTimeout(o),o=setTimeout(function(){u()},100)}))},countdown:function(e,t,i){var o=this,a="function"==typeof t,r=new Date(e).getTime(),n=new Date(!t||a?(new Date).getTime():t).getTime(),l=r-n,c=[Math.floor(l/864e5),Math.floor(l/36e5)%24,Math.floor(l/6e4)%60,Math.floor(l/1e3)%60];a&&(i=t);var g=setTimeout(function(){o.countdown(e,n+1e3,i)},1e3);return i&&i(l>0?c:[0,0,0,0],t,g),l<=0&&clearTimeout(g),g},timeAgo:function(e,t){var i=this,o=[[],[]],a=(new Date).getTime()-new Date(e).getTime();return a>6912e5?(a=new Date(e),o[0][0]=i.digit(a.getFullYear(),4),o[0][1]=i.digit(a.getMonth()+1),o[0][2]=i.digit(a.getDate()),t||(o[1][0]=i.digit(a.getHours()),o[1][1]=i.digit(a.getMinutes()),o[1][2]=i.digit(a.getSeconds())),o[0].join("-")+" "+o[1].join(":")):a>=864e5?(a/1e3/60/60/24|0)+"天前":a>=36e5?(a/1e3/60/60|0)+"小时前":a>=12e4?(a/1e3/60|0)+"分钟前":a<0?"未来":"刚刚"},digit:function(e,t){var i="";e=String(e),t=t||2;for(var o=e.length;o';o.prototype.load=function(e){var o,i,n,r,a=this,c=0;e=e||{};var f=l(e.elem);if(f[0]){var m=l(e.scrollElem||document),u=e.mb||50,s=!("isAuto"in e)||e.isAuto,v=e.end||"没有更多了",y=e.scrollElem&&e.scrollElem!==document,d="加载更多",h=l('");f.find(".layui-flow-more")[0]||f.append(h);var p=function(e,t){e=l(e),h.before(e),t=0==t||null,t?h.html(v):h.find("a").html(d),i=t,o=null,n&&n()},g=function(){o=!0,h.find("a").html(t),"function"==typeof e.done&&e.done(++c,p)};if(g(),h.find("a").on("click",function(){l(this);i||o||g()}),e.isLazyimg)var n=a.lazyimg({elem:e.elem+" img",scrollElem:e.scrollElem});return s?(m.on("scroll",function(){var e=l(this),t=e.scrollTop();r&&clearTimeout(r),i||(r=setTimeout(function(){var i=y?e.height():l(window).height(),n=y?e.prop("scrollHeight"):document.documentElement.scrollHeight;n-t-i<=u&&(o||g())},100))}),a):a}},o.prototype.lazyimg=function(e){var o,t=this,i=0;e=e||{};var n=l(e.scrollElem||document),r=e.elem||"img",a=e.scrollElem&&e.scrollElem!==document,c=function(e,l){var o=n.scrollTop(),r=o+l,c=a?function(){return e.offset().top-n.offset().top+o}():e.offset().top;if(c>=o&&c<=r&&!e.attr("src")){var m=e.attr("lay-src");layui.img(m,function(){var l=t.lazyimg.elem.eq(i);e.attr("src",m).removeAttr("lay-src"),l[0]&&f(l),i++})}},f=function(e,o){var f=a?(o||n).height():l(window).height(),m=n.scrollTop(),u=m+f;if(t.lazyimg.elem=l(r),e)c(e,f);else for(var s=0;su)break}};if(f(),!o){var m;n.on("scroll",function(){var e=l(this);m&&clearTimeout(m),m=setTimeout(function(){f(null,e)},50)}),o=!0}return f},e("flow",new o)});layui.define(["layer","form"],function(t){"use strict";var e=layui.$,i=layui.layer,a=layui.form,l=(layui.hint(),layui.device()),n="layedit",o="layui-show",r="layui-disabled",c=function(){var t=this;t.index=0,t.config={tool:["strong","italic","underline","del","|","left","center","right","|","link","unlink","face","image"],hideTool:[],height:280}};c.prototype.set=function(t){var i=this;return e.extend(!0,i.config,t),i},c.prototype.on=function(t,e){return layui.onevent(n,t,e)},c.prototype.build=function(t,i){i=i||{};var a=this,n=a.config,r="layui-layedit",c=e("#"+t),u="LAY_layedit_"+ ++a.index,d=c.next("."+r),y=e.extend({},n,i),f=function(){var t=[],e={};return layui.each(y.hideTool,function(t,i){e[i]=!0}),layui.each(y.tool,function(i,a){C[a]&&!e[a]&&t.push(C[a])}),t.join("")}(),m=e(['
','
'+f+"
",'
','',"
","
"].join(""));return l.ie&&l.ie<8?c.removeClass("layui-hide").addClass(o):(d[0]&&d.remove(),s.call(a,m,c[0],y),c.addClass("layui-hide").after(m),a.index)},c.prototype.getContent=function(t){var e=u(t);if(e[0])return d(e[0].document.body.innerHTML)},c.prototype.getText=function(t){var i=u(t);if(i[0])return e(i[0].document.body).text()},c.prototype.setContent=function(t,i,a){var l=u(t);l[0]&&(a?e(l[0].document.body).append(i):e(l[0].document.body).html(i),layedit.sync(t))},c.prototype.sync=function(t){var i=u(t);if(i[0]){var a=e("#"+i[1].attr("textarea"));a.val(d(i[0].document.body.innerHTML))}},c.prototype.getSelection=function(t){var e=u(t);if(e[0]){var i=m(e[0].document);return document.selection?i.text:i.toString()}};var s=function(t,i,a){var l=this,n=t.find("iframe");n.css({height:a.height}).on("load",function(){var o=n.contents(),r=n.prop("contentWindow"),c=o.find("head"),s=e([""].join("")),u=o.find("body");c.append(s),u.attr("contenteditable","true").css({"min-height":a.height}).html(i.value||""),y.apply(l,[r,n,i,a]),g.call(l,r,t,a)})},u=function(t){var i=e("#LAY_layedit_"+t),a=i.prop("contentWindow");return[a,i]},d=function(t){return 8==l.ie&&(t=t.replace(/<.+>/g,function(t){return t.toLowerCase()})),t},y=function(t,a,n,o){var r=t.document,c=e(r.body);c.on("keydown",function(t){var e=t.keyCode;if(13===e){var a=m(r),l=p(a),n=l.parentNode;if("pre"===n.tagName.toLowerCase()){if(t.shiftKey)return;return i.msg("请暂时用shift+enter"),!1}r.execCommand("formatBlock",!1,"

")}}),e(n).parents("form").on("submit",function(){var t=c.html();8==l.ie&&(t=t.replace(/<.+>/g,function(t){return t.toLowerCase()})),n.value=t}),c.on("paste",function(e){r.execCommand("formatBlock",!1,"

"),setTimeout(function(){f.call(t,c),n.value=c.html()},100)})},f=function(t){var i=this;i.document;t.find("*[style]").each(function(){var t=this.style.textAlign;this.removeAttribute("style"),e(this).css({"text-align":t||""})}),t.find("table").addClass("layui-table"),t.find("script,link").remove()},m=function(t){return t.selection?t.selection.createRange():t.getSelection().getRangeAt(0)},p=function(t){return t.endContainer||t.parentElement().childNodes[0]},v=function(t,i,a){var l=this.document,n=document.createElement(t);for(var o in i)n.setAttribute(o,i[o]);if(n.removeAttribute("text"),l.selection){var r=a.text||i.text;if("a"===t&&!r)return;r&&(n.innerHTML=r),a.pasteHTML(e(n).prop("outerHTML")),a.select()}else{var r=a.toString()||i.text;if("a"===t&&!r)return;r&&(n.innerHTML=r),a.deleteContents(),a.insertNode(n)}},h=function(t,i){var a=this.document,l="layedit-tool-active",n=p(m(a)),o=function(e){return t.find(".layedit-tool-"+e)};i&&i[i.hasClass(l)?"removeClass":"addClass"](l),t.find(">i").removeClass(l),o("unlink").addClass(r),e(n).parents().each(function(){var t=this.tagName.toLowerCase(),e=this.style.textAlign;"b"!==t&&"strong"!==t||o("b").addClass(l),"i"!==t&&"em"!==t||o("i").addClass(l),"u"===t&&o("u").addClass(l),"strike"===t&&o("d").addClass(l),"p"===t&&("center"===e?o("center").addClass(l):"right"===e?o("right").addClass(l):o("left").addClass(l)),"a"===t&&(o("link").addClass(l),o("unlink").removeClass(r))})},g=function(t,a,l){var n=t.document,o=e(n.body),c={link:function(i){var a=p(i),l=e(a).parent();b.call(o,{href:l.attr("href"),target:l.attr("target")},function(e){var a=l[0];"A"===a.tagName?a.href=e.url:v.call(t,"a",{target:e.target,href:e.url,text:e.url},i)})},unlink:function(t){n.execCommand("unlink")},face:function(e){x.call(this,function(i){v.call(t,"img",{src:i.src,alt:i.alt},e)})},image:function(a){var n=this;layui.use("upload",function(o){var r=l.uploadImage||{};o.render({url:r.url,method:r.type,elem:e(n).find("input")[0],done:function(e){0==e.code?(e.data=e.data||{},v.call(t,"img",{src:e.data.src,alt:e.data.title},a)):i.msg(e.msg||"上传失败")}})})},code:function(e){k.call(o,function(i){v.call(t,"pre",{text:i.code,"lay-lang":i.lang},e)})},help:function(){i.open({type:2,title:"帮助",area:["600px","380px"],shadeClose:!0,shade:.1,skin:"layui-layer-msg",content:["http://www.layui.com/about/layedit/help.html","no"]})}},s=a.find(".layui-layedit-tool"),u=function(){var i=e(this),a=i.attr("layedit-exchange"),l=i.attr("lay-command");if(!i.hasClass(r)){o.focus();var u=m(n);u.commonAncestorContainer;l?(n.execCommand(l),/justifyLeft|justifyCenter|justifyRight/.test(l)&&n.execCommand("formatBlock",!1,"

"),setTimeout(function(){o.focus()},10)):c[a]&&c[a].call(this,u),h.call(t,s,i)}},d=/image/;s.find(">i").on("mousedown",function(){var t=e(this),i=t.attr("layedit-exchange");d.test(i)||u.call(this)}).on("click",function(){var t=e(this),i=t.attr("layedit-exchange");d.test(i)&&u.call(this)}),o.on("click",function(){h.call(t,s),i.close(x.index)})},b=function(t,e){var l=this,n=i.open({type:1,id:"LAY_layedit_link",area:"350px",shade:.05,shadeClose:!0,moveType:1,title:"超链接",skin:"layui-layer-msg",content:['

    ','
  • ','','
    ','',"
    ","
  • ",'
  • ','','
    ','",'","
    ","
  • ",'
  • ','','',"
  • ","
"].join(""),success:function(t,n){var o="submit(layedit-link-yes)";a.render("radio"),t.find(".layui-btn-primary").on("click",function(){i.close(n),l.focus()}),a.on(o,function(t){i.close(b.index),e&&e(t.field)})}});b.index=n},x=function(t){var a=function(){var t=["[微笑]","[嘻嘻]","[哈哈]","[可爱]","[可怜]","[挖鼻]","[吃惊]","[害羞]","[挤眼]","[闭嘴]","[鄙视]","[爱你]","[泪]","[偷笑]","[亲亲]","[生病]","[太开心]","[白眼]","[右哼哼]","[左哼哼]","[嘘]","[衰]","[委屈]","[吐]","[哈欠]","[抱抱]","[怒]","[疑问]","[馋嘴]","[拜拜]","[思考]","[汗]","[困]","[睡]","[钱]","[失望]","[酷]","[色]","[哼]","[鼓掌]","[晕]","[悲伤]","[抓狂]","[黑线]","[阴险]","[怒骂]","[互粉]","[心]","[伤心]","[猪头]","[熊猫]","[兔子]","[ok]","[耶]","[good]","[NO]","[赞]","[来]","[弱]","[草泥马]","[神马]","[囧]","[浮云]","[给力]","[围观]","[威武]","[奥特曼]","[礼物]","[钟]","[话筒]","[蜡烛]","[蛋糕]"],e={};return layui.each(t,function(t,i){e[i]=layui.cache.dir+"images/face/"+t+".gif"}),e}();return x.hide=x.hide||function(t){"face"!==e(t.target).attr("layedit-exchange")&&i.close(x.index)},x.index=i.tips(function(){var t=[];return layui.each(a,function(e,i){t.push('
  • '+e+'
  • ')}),'
      '+t.join("")+"
    "}(),this,{tips:1,time:0,skin:"layui-box layui-util-face",maxWidth:500,success:function(l,n){l.css({marginTop:-4,marginLeft:-10}).find(".layui-clear>li").on("click",function(){t&&t({src:a[this.title],alt:this.title}),i.close(n)}),e(document).off("click",x.hide).on("click",x.hide)}})},k=function(t){var e=this,l=i.open({type:1,id:"LAY_layedit_code",area:"550px",shade:.05,shadeClose:!0,moveType:1,title:"插入代码",skin:"layui-layer-msg",content:['
      ','
    • ','','
      ','","
      ","
    • ",'
    • ','','
      ','',"
      ","
    • ",'
    • ','','',"
    • ","
    "].join(""),success:function(l,n){var o="submit(layedit-code-yes)";a.render("select"),l.find(".layui-btn-primary").on("click",function(){i.close(n),e.focus()}),a.on(o,function(e){i.close(k.index),t&&t(e.field)})}});k.index=l},C={html:'',strong:'',italic:'',underline:'',del:'',"|":'',left:'',center:'',right:'',link:'',unlink:'',face:'',image:'',code:'',help:''},w=new c;t(n,w)});layui.define("jquery",function(e){"use strict";var a=layui.$,l="http://www.layui.com/doc/modules/code.html";e("code",function(e){var t=[];e=e||{},e.elem=a(e.elem||".layui-code"),e.about=!("about"in e)||e.about,e.elem.each(function(){t.push(this)}),layui.each(t.reverse(),function(t,i){var c=a(i),o=c.html();(c.attr("lay-encode")||e.encode)&&(o=o.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""")),c.html('
    1. '+o.replace(/[\r\t\n]+/g,"
    2. ")+"
    "),c.find(">.layui-code-h3")[0]||c.prepend('

    '+(c.attr("lay-title")||e.title||"code")+(e.about?'layui.code':"")+"

    ");var d=c.find(">.layui-code-ol");c.addClass("layui-box layui-code-view"),(c.attr("lay-skin")||e.skin)&&c.addClass("layui-code-"+(c.attr("lay-skin")||e.skin)),(d.find("li").length/100|0)>0&&d.css("margin-left",(d.find("li").length/100|0)+"px"),(c.attr("lay-height")||e.height)&&d.css("max-height",c.attr("lay-height")||e.height)})})}).addcss("modules/code.css","skincodecss"); \ No newline at end of file diff --git a/contact-center/app/src/main/resources/templates/apps/agent/mainagentuser_callout.html b/contact-center/app/src/main/resources/templates/apps/agent/mainagentuser_callout.html index 22d4d3dc..4c53d5ee 100644 --- a/contact-center/app/src/main/resources/templates/apps/agent/mainagentuser_callout.html +++ b/contact-center/app/src/main/resources/templates/apps/agent/mainagentuser_callout.html @@ -57,7 +57,7 @@ data: { ops: "fetch", contactid: id }, }; httpRequest(payload).then(function (data) { - // remove a click event and set color to gray + // remove a click exchange and set color to gray // AUTH_ERROR if(data.status && data.status === "AUTH_ERROR"){ openFail(data.status); diff --git a/contact-center/app/src/main/resources/templates/apps/business/contacts/detail.html b/contact-center/app/src/main/resources/templates/apps/business/contacts/detail.html index db95ee2b..9d8d18d6 100644 --- a/contact-center/app/src/main/resources/templates/apps/business/contacts/detail.html +++ b/contact-center/app/src/main/resources/templates/apps/business/contacts/detail.html @@ -242,7 +242,7 @@ data: { ops: "fetch", contactid: id }, }; httpRequest(payload).then(function (data) { - // remove a click event and set color to gray + // remove a click exchange and set color to gray // AUTH_ERROR if(data.status && data.status === "AUTH_ERROR"){ openFail(data.status); diff --git a/contact-center/app/src/main/resources/templates/apps/callout/dialplan/index.html b/contact-center/app/src/main/resources/templates/apps/callout/dialplan/index.html index 26123eb8..32c23821 100644 --- a/contact-center/app/src/main/resources/templates/apps/callout/dialplan/index.html +++ b/contact-center/app/src/main/resources/templates/apps/callout/dialplan/index.html @@ -52,7 +52,7 @@ }); // setAttrs({ // id: 'delete_' + id, - // event: event, + // exchange: exchange, // css: css, // attrs: attrs, // }); @@ -144,7 +144,7 @@ }; httpRequest(payload).then(function (data) { - // remove a click event and set color to gray + // remove a click exchange and set color to gray // AUTH_ERROR if(data.status && data.status === "AUTH_ERROR"){ openFail(data.status); @@ -200,7 +200,7 @@ }; httpRequest(payload).then(function (data) { - // remove a click event and set color to gray + // remove a click exchange and set color to gray // AUTH_ERROR if(data.status && data.status === "AUTH_ERROR"){ openFail(data.status); @@ -273,7 +273,7 @@ }; httpRequest(payload).then(function (data) { - // remove a click event and set color to gray + // remove a click exchange and set color to gray if(data.status && data.status === "AUTH_ERROR"){ openFail(data.status); return;