From 9f74182cc521ee2d9f87c192c6893ac052ce46df Mon Sep 17 00:00:00 2001 From: luanjia Date: Tue, 11 Dec 2018 15:32:58 +0800 Subject: [PATCH] =?UTF-8?q?EventWatchBuilder=E6=94=AF=E6=8C=81=E6=AD=A3?= =?UTF-8?q?=E5=88=99=E8=A1=A8=E8=BE=BE=E5=BC=8F=E6=A8=A1=E5=BC=8F=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0LOGO=20=E5=A2=9E=E5=8A=A0=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E7=94=A8=E4=BE=8B=E6=97=A5=E5=BF=97=20=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E7=AE=A1=E7=90=86=E6=97=A5=E5=BF=97=20?= =?UTF-8?q?=E6=8F=90=E4=BA=A4CoreLoadedClassDataSource=E7=9A=84=E5=8D=95?= =?UTF-8?q?=E5=85=83=E6=B5=8B=E8=AF=95=20=E5=AE=8C=E6=88=90CoreModuleManag?= =?UTF-8?q?er=E6=B5=8B=E8=AF=95=E7=94=A8=E4=BE=8B=20=E6=8F=90=E4=BA=A4Core?= =?UTF-8?q?ModuleManager=E7=9A=84=E5=8D=95=E5=85=83=E6=B5=8B=E8=AF=95=20?= =?UTF-8?q?=E4=BC=98=E5=8C=96import=20=E4=BF=AE=E5=A4=8D=E9=97=AE=E9=A2=98?= =?UTF-8?q?=20#117=20=E5=AE=8C=E5=96=84=E6=B5=8B=E8=AF=95=E7=94=A8?= =?UTF-8?q?=E4=BE=8B=20=E4=BF=AE=E5=A4=8D=E9=87=8D=E5=A4=8D=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2user=5Fmodule=E7=9A=84BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/sandbox-logback.xml | 2 +- bin/sandbox.sh | 7 +- pom.xml | 11 +- sandbox-agent/pom.xml | 2 +- .../jvm/sandbox/agent/AgentLauncher.class | Bin 0 -> 11307 bytes .../sandbox/agent/SandboxClassLoader.class | Bin 0 -> 3827 bytes sandbox-api/pom.xml | 7 +- .../jvm/sandbox/api/ModuleLifecycle.java | 1 + .../listener/ext/AdviceAdapterListener.java | 14 +- .../api/listener/ext/EventWatchBuilder.java | 153 +++- .../jvm/sandbox/api/util/GaStringUtils.java | 17 - .../qatest/api/AdviceListenerTestCase.java | 99 +++ .../qatest/api/EventWatchBuilderTestCase.java | 162 +++++ .../MockForBuilderModuleEventWatcher.java | 79 +++ .../api/mock/MockForBuilderProgress.java | 40 ++ .../qatest/api/util/ApiQaArrayUtils.java | 14 + sandbox-api/src/test/resources/logback.xml | 14 + .../jvm/sandbox/api/LoadCompleted.class | Bin 0 -> 165 bytes .../jvm/sandbox/api/ModuleLifecycle.class | Bin 0 -> 346 bytes .../api/ProcessControlException$State.class | Bin 0 -> 1358 bytes .../sandbox/api/ProcessControlException.class | Bin 0 -> 1753 bytes .../jvm/sandbox/api/ProcessController.class | Bin 0 -> 1876 bytes .../api/annotation/IncludeBootstrap.class | Bin 0 -> 461 bytes .../api/annotation/IncludeSubClasses.class | Bin 0 -> 463 bytes .../jvm/sandbox/api/annotation/Stealth.class | Bin 0 -> 443 bytes .../jvm/sandbox/api/event/BeforeEvent.class | Bin 0 -> 1392 bytes .../sandbox/api/event/CallBeforeEvent.class | Bin 0 -> 947 bytes .../sandbox/api/event/CallReturnEvent.class | Bin 0 -> 685 bytes .../sandbox/api/event/CallThrowsEvent.class | Bin 0 -> 778 bytes .../jvm/sandbox/api/event/Event$Type.class | Bin 0 -> 1577 bytes .../alibaba/jvm/sandbox/api/event/Event.class | Bin 0 -> 545 bytes .../api/event/ImmediatelyReturnEvent.class | Bin 0 -> 790 bytes .../api/event/ImmediatelyThrowsEvent.class | Bin 0 -> 802 bytes .../jvm/sandbox/api/event/InvokeEvent.class | Bin 0 -> 709 bytes .../jvm/sandbox/api/event/LineEvent.class | Bin 0 -> 711 bytes .../jvm/sandbox/api/event/ReturnEvent.class | Bin 0 -> 1307 bytes .../jvm/sandbox/api/event/ThrowsEvent.class | Bin 0 -> 1341 bytes .../jvm/sandbox/api/filter/AccessFlags.class | Bin 0 -> 865 bytes .../filter/ExtFilter$ExtFilterFactory$1.class | Bin 0 -> 1840 bytes .../filter/ExtFilter$ExtFilterFactory.class | Bin 0 -> 1373 bytes .../jvm/sandbox/api/filter/ExtFilter.class | Bin 0 -> 365 bytes .../jvm/sandbox/api/filter/Filter.class | Bin 0 -> 340 bytes .../sandbox/api/filter/NameRegexFilter.class | Bin 0 -> 1288 bytes .../sandbox/api/filter/OrGroupFilter.class | Bin 0 -> 2073 bytes .../jvm/sandbox/api/http/Http$Method.class | Bin 0 -> 1156 bytes .../alibaba/jvm/sandbox/api/http/Http.class | Bin 0 -> 685 bytes .../ConcurrentLinkedQueuePrinter.class | Bin 0 -> 4966 bytes .../sandbox/api/http/printer/Printer.class | Bin 0 -> 451 bytes .../http/websocket/TextMessageListener.class | Bin 0 -> 284 bytes .../http/websocket/WebSocketAcceptor.class | Bin 0 -> 311 bytes .../http/websocket/WebSocketConnection.class | Bin 0 -> 332 bytes .../WebSocketConnectionListener.class | Bin 0 -> 308 bytes .../sandbox/api/listener/EventListener.class | Bin 0 -> 257 bytes .../api/listener/EventListenerFactory.class | Bin 0 -> 245 bytes .../jvm/sandbox/api/listener/Sentry$1.class | Bin 0 -> 1156 bytes .../api/listener/Sentry$WrapData.class | Bin 0 -> 874 bytes .../jvm/sandbox/api/listener/Sentry.class | Bin 0 -> 2284 bytes .../listener/ThreadSafeEventListener$1.class | Bin 0 -> 1256 bytes .../listener/ThreadSafeEventListener.class | Bin 0 -> 1485 bytes .../jvm/sandbox/api/listener/ext/Advice.class | Bin 0 -> 5015 bytes .../ext/AdviceAdapterListener$1.class | Bin 0 -> 1300 bytes .../ext/AdviceAdapterListener$2.class | Bin 0 -> 2982 bytes .../ext/AdviceAdapterListener$3.class | Bin 0 -> 1272 bytes ...viceAdapterListener$BehaviorCacheKey.class | Bin 0 -> 2444 bytes .../AdviceAdapterListener$CallTarget.class | Bin 0 -> 983 bytes .../ext/AdviceAdapterListener$OpStack.class | Bin 0 -> 2592 bytes .../AdviceAdapterListener$WrapAdvice.class | Bin 0 -> 1178 bytes .../listener/ext/AdviceAdapterListener.class | Bin 0 -> 9659 bytes .../api/listener/ext/AdviceListener.class | Bin 0 -> 1681 bytes .../sandbox/api/listener/ext/Attachment.class | Bin 0 -> 277 bytes .../ext/Behavior$ConstructorImpl.class | Bin 0 -> 2537 bytes .../listener/ext/Behavior$MethodImpl.class | Bin 0 -> 2338 bytes .../sandbox/api/listener/ext/Behavior.class | Bin 0 -> 1049 bytes .../listener/ext/EventWatchBuilder$1.class | Bin 0 -> 4080 bytes .../listener/ext/EventWatchBuilder$2.class | Bin 0 -> 1213 bytes .../listener/ext/EventWatchBuilder$3.class | Bin 0 -> 2705 bytes .../listener/ext/EventWatchBuilder$4.class | Bin 0 -> 957 bytes ...ventWatchBuilder$BuildingForBehavior.class | Bin 0 -> 7892 bytes .../EventWatchBuilder$BuildingForClass.class | Bin 0 -> 6163 bytes ...ventWatchBuilder$BuildingForWatching.class | Bin 0 -> 4293 bytes .../ext/EventWatchBuilder$Group.class | Bin 0 -> 2123 bytes ...entWatchBuilder$IBuildingForBehavior.class | Bin 0 -> 2297 bytes .../EventWatchBuilder$IBuildingForClass.class | Bin 0 -> 1434 bytes ...tWatchBuilder$IBuildingForUnWatching.class | Bin 0 -> 654 bytes ...entWatchBuilder$IBuildingForWatching.class | Bin 0 -> 1156 bytes .../EventWatchBuilder$PatternGroupList.class | Bin 0 -> 2351 bytes .../ext/EventWatchBuilder$PatternType.class | Bin 0 -> 1357 bytes .../ext/EventWatchBuilder$ProgressGroup.class | Bin 0 -> 2309 bytes .../api/listener/ext/EventWatchBuilder.class | Bin 0 -> 9484 bytes .../listener/ext/EventWatchCondition.class | Bin 0 -> 236 bytes .../api/listener/ext/EventWatcher.class | Bin 0 -> 382 bytes .../resource/EventMonitor$EventPoolInfo.class | Bin 0 -> 486 bytes .../sandbox/api/resource/EventMonitor.class | Bin 0 -> 355 bytes .../api/resource/LoadedClassDataSource.class | Bin 0 -> 543 bytes .../api/resource/ModuleController.class | Bin 0 -> 272 bytes .../ModuleEventWatcher$Progress.class | Bin 0 -> 438 bytes .../ModuleEventWatcher$WatchCallback.class | Bin 0 -> 355 bytes .../api/resource/ModuleEventWatcher.class | Bin 0 -> 1862 bytes .../sandbox/api/resource/ModuleManager.class | Bin 0 -> 803 bytes .../api/util/BehaviorDescriptor$Type.class | Bin 0 -> 5826 bytes .../sandbox/api/util/BehaviorDescriptor.class | Bin 0 -> 1265 bytes .../CacheGet$CacheLoadUnCaughtException.class | Bin 0 -> 554 bytes .../jvm/sandbox/api/util/CacheGet.class | Bin 0 -> 1418 bytes .../jvm/sandbox/api/util/GaArrayUtils.class | Bin 0 -> 909 bytes .../sandbox/api/util/GaCollectionUtils.class | Bin 0 -> 783 bytes .../jvm/sandbox/api/util/GaStringUtils.class | Bin 0 -> 2492 bytes .../qatest/api/AdviceListenerTestCase$1.class | Bin 0 -> 1460 bytes .../qatest/api/AdviceListenerTestCase.class | Bin 0 -> 3138 bytes .../api/EventWatchBuilderTestCase.class | Bin 0 -> 6115 bytes .../MockForBuilderModuleEventWatcher.class | Bin 0 -> 4851 bytes .../api/mock/MockForBuilderProgress.class | Bin 0 -> 1518 bytes .../qatest/api/util/ApiQaArrayUtils.class | Bin 0 -> 813 bytes sandbox-api/target/test-classes/logback.xml | 14 + sandbox-common-api/pom.xml | 2 +- .../jvm/sandbox/api/Information$Mode.class | Bin 0 -> 1167 bytes .../alibaba/jvm/sandbox/api/Information.class | Bin 0 -> 903 bytes .../com/alibaba/jvm/sandbox/api/Module.class | Bin 0 -> 121 bytes .../api/ModuleException$ErrorCode.class | Bin 0 -> 1456 bytes .../jvm/sandbox/api/ModuleException.class | Bin 0 -> 1207 bytes .../jvm/sandbox/api/resource/ConfigInfo.class | Bin 0 -> 1084 bytes sandbox-core/pom.xml | 21 +- .../jvm/sandbox/core/CoreConfigure.java | 42 +- .../jvm/sandbox/core/CoreLauncher.java | 11 +- .../sandbox/core/enhance/EventEnhancer.java | 1 - .../enhance/weaver/EventListenerHandlers.java | 179 +++-- .../SeparateImmediatelyEventListener.java | 38 +- .../core/enhance/weaver/asm/EventWeaver.java | 14 +- .../core/manager/CoreModuleManager.java | 14 +- .../impl/DefaultCoreModuleManager.java | 474 +++++++------ .../impl/DefaultModuleLifeCycleEventBus.java | 24 +- .../core/manager/impl/ModuleJarLoader.java | 132 ++-- .../core/server/jetty/JettyCoreServer.java | 95 ++- .../jetty/servlet/ModuleHttpServlet.java | 12 +- .../servlet/WebSocketAcceptorServlet.java | 4 +- .../sandbox/core/util/NamespaceConvert.java | 31 + .../sandbox/core/util/SandboxStringUtils.java | 21 + .../sandbox/core/util/collection/GaStack.java | 2 + .../util/collection/ThreadUnsafeGaStack.java | 5 + .../resources/com/alibaba/jvm/sandbox/logo | 5 + .../qatest/core/enhance/AdviceTestCase.java | 176 +++++ .../core/enhance/CalculatorTestCase.java | 6 + .../core/enhance/CoreEnhanceBaseTestCase.java | 4 +- .../core/enhance/EventStackTestCase.java | 138 ++++ .../core/enhance/EventStreamTestCase.java | 0 .../qatest/core/enhance/EventTestCase.java | 0 .../core/enhance/NamespaceTestCase.java | 0 .../enhance/ProcessControllerTestCase.java | 0 .../listener/EventStreamCheckerListener.java | 0 .../InterruptedAdviceAdapterListener.java | 14 + .../listener/InterruptedEventListener.java | 13 + .../core/enhance/target/Calculator.java | 0 .../CoreLoadedClassDataSourceTestCase.java | 359 ++++++++++ .../manager/CoreModuleManagerTestCase.java | 660 ++++++++++++++++++ .../core/manager/ModuleLifeCycleAdapter.java | 30 + .../sandbox/qatest/core/util/JarBuilder.java | 85 +++ .../sandbox/qatest/core/util/ModuleTests.java | 25 + .../qatest/core}/util/QaClassUtils.java | 2 +- .../core/util/SandboxModuleJarBuilder.java | 43 ++ .../ClassStructureTestCaseByChildClass.java | 2 +- .../util/matcher/asserts/AccessAsserter.java | 0 .../core/util/matcher/asserts/Asserter.java | 0 .../asserts/BehaviorStructureAsserter.java | 0 .../BehaviorStructureCollectionAsserter.java | 0 .../asserts/ClassStructureAsserter.java | 0 .../ClassStructureCollectionAsserter.java | 0 .../util/matcher/asserts/MappingAsserter.java | 0 .../core/util/matcher/target/ChildClass.java | 0 .../util/matcher/target/GrandpaClass.java | 0 .../target/IGrandpaInterfaceFirst.java | 0 .../target/IGrandpaInterfaceFirstFirst.java | 0 .../matcher/target/IParentInterfaceFirst.java | 0 .../target/IParentInterfaceFirstFirst.java | 0 .../target/IParentInterfaceFirstSecond.java | 0 .../target/IParentInterfaceSecond.java | 0 .../target/IllInheritedAnnotation.java | 0 .../matcher/target/InheritedAnnotation.java | 0 .../core/util/matcher/target/ParentClass.java | 0 .../util/matcher/target/package-info.java | 0 .../lib/sandbox-spy-1.1.0-for-qatest.jar | Bin sandbox-core/src/test/resources/logback.xml | 14 + .../jvm/sandbox/core/CoreConfigure.class | Bin 0 -> 9146 bytes .../jvm/sandbox/core/CoreLauncher.class | Bin 0 -> 2290 bytes .../core/classloader/ModuleClassLoader.class | Bin 0 -> 6595 bytes .../classloader/ProviderClassLoader.class | Bin 0 -> 1444 bytes .../RoutingURLClassLoader$Routing.class | Bin 0 -> 2290 bytes .../classloader/RoutingURLClassLoader.class | Bin 0 -> 3614 bytes .../jvm/sandbox/core/domain/CoreModule.class | Bin 0 -> 3264 bytes .../jvm/sandbox/core/enhance/Enhancer.class | Bin 0 -> 559 bytes .../core/enhance/EventEnhancer$1.class | Bin 0 -> 2131 bytes .../sandbox/core/enhance/EventEnhancer.class | Bin 0 -> 3269 bytes .../core/enhance/annotation/Interrupted.class | Bin 0 -> 460 bytes .../core/enhance/weaver/CodeLock$Block.class | Bin 0 -> 265 bytes .../core/enhance/weaver/CodeLock.class | Bin 0 -> 370 bytes .../weaver/EventListenerHandlers$1.class | Bin 0 -> 1054 bytes ...ListenerHandlers$EventListenerWrap$1.class | Bin 0 -> 1450 bytes ...dlers$EventListenerWrap$EventProcess.class | Bin 0 -> 1725 bytes ...ntListenerHandlers$EventListenerWrap.class | Bin 0 -> 4551 bytes ...andlers$InterruptedEventListenerImpl.class | Bin 0 -> 1776 bytes .../weaver/EventListenerHandlers.class | Bin 0 -> 20038 bytes .../SeparateImmediatelyEventListener$1.class | Bin 0 -> 1374 bytes .../SeparateImmediatelyEventListener$2.class | Bin 0 -> 1705 bytes ...eparateImmediatelyEventListener$Step.class | Bin 0 -> 1560 bytes .../SeparateImmediatelyEventListener.class | Bin 0 -> 4457 bytes .../core/enhance/weaver/asm/AsmCodeLock.class | Bin 0 -> 2215 bytes .../weaver/asm/AsmMethods$InnerHelper.class | Bin 0 -> 1319 bytes .../core/enhance/weaver/asm/AsmMethods.class | Bin 0 -> 1683 bytes .../enhance/weaver/asm/AsmTryCatchBlock.class | Bin 0 -> 696 bytes .../core/enhance/weaver/asm/AsmTypes.class | Bin 0 -> 860 bytes .../enhance/weaver/asm/CallAsmCodeLock.class | Bin 0 -> 617 bytes .../enhance/weaver/asm/EventWeaver$1$1.class | Bin 0 -> 2127 bytes .../enhance/weaver/asm/EventWeaver$1$2.class | Bin 0 -> 1890 bytes .../enhance/weaver/asm/EventWeaver$1$3.class | Bin 0 -> 1781 bytes .../enhance/weaver/asm/EventWeaver$1$4.class | Bin 0 -> 1801 bytes .../enhance/weaver/asm/EventWeaver$1$5.class | Bin 0 -> 2242 bytes .../enhance/weaver/asm/EventWeaver$1$6.class | Bin 0 -> 1777 bytes .../enhance/weaver/asm/EventWeaver$1$7.class | Bin 0 -> 1777 bytes .../enhance/weaver/asm/EventWeaver$1$8.class | Bin 0 -> 1995 bytes .../enhance/weaver/asm/EventWeaver$1.class | Bin 0 -> 8176 bytes .../core/enhance/weaver/asm/EventWeaver.class | Bin 0 -> 6247 bytes .../enhance/weaver/asm/ReWriteMethod.class | Bin 0 -> 2621 bytes .../manager/CoreLoadedClassDataSource.class | Bin 0 -> 449 bytes .../core/manager/CoreModuleManager.class | Bin 0 -> 840 bytes .../ModuleLifeCycleEventBus$Event.class | Bin 0 -> 1498 bytes ...ventBus$ModuleLifeCycleEventListener.class | Bin 0 -> 548 bytes .../manager/ModuleLifeCycleEventBus.class | Bin 0 -> 660 bytes .../ModuleResourceManager$WeakResource.class | Bin 0 -> 1113 bytes .../core/manager/ModuleResourceManager.class | Bin 0 -> 878 bytes .../core/manager/ProviderManager.class | Bin 0 -> 277 bytes .../core/manager/impl/AffectStatistic.class | Bin 0 -> 2984 bytes .../core/manager/impl/DefaultConfigInfo.class | Bin 0 -> 3848 bytes .../impl/DefaultCoreModuleManager$1.class | Bin 0 -> 1114 bytes ...leManager$InnerModuleJarLoadCallback.class | Bin 0 -> 1749 bytes ...oduleManager$InnerModuleLoadCallback.class | Bin 0 -> 3688 bytes .../impl/DefaultCoreModuleManager.class | Bin 0 -> 21600 bytes .../manager/impl/DefaultEventMonitor$1.class | Bin 0 -> 1663 bytes .../manager/impl/DefaultEventMonitor.class | Bin 0 -> 1214 bytes .../impl/DefaultLoadedClassDataSource$1.class | Bin 0 -> 1734 bytes .../impl/DefaultLoadedClassDataSource.class | Bin 0 -> 5545 bytes .../impl/DefaultModuleController.class | Bin 0 -> 1208 bytes .../impl/DefaultModuleEventWatcher.class | Bin 0 -> 13701 bytes .../impl/DefaultModuleLifeCycleEventBus.class | Bin 0 -> 3179 bytes .../manager/impl/DefaultModuleManager.class | Bin 0 -> 3526 bytes .../impl/DefaultModuleResourceManager.class | Bin 0 -> 5399 bytes .../manager/impl/DefaultProviderManager.class | Bin 0 -> 6463 bytes ...oduleJarLoader$ModuleJarLoadCallback.class | Bin 0 -> 378 bytes .../ModuleJarLoader$ModuleLoadCallback.class | Bin 0 -> 503 bytes .../core/manager/impl/ModuleJarLoader.class | Bin 0 -> 7842 bytes .../impl/SandboxClassFileTransformer.class | Bin 0 -> 7204 bytes .../jvm/sandbox/core/server/CoreServer.class | Bin 0 -> 424 bytes .../sandbox/core/server/ProxyCoreServer.class | Bin 0 -> 2402 bytes .../core/server/jetty/JettyCoreServer$1.class | Bin 0 -> 1368 bytes .../core/server/jetty/JettyCoreServer$2.class | Bin 0 -> 2268 bytes .../core/server/jetty/JettyCoreServer.class | Bin 0 -> 12462 bytes .../jetty/servlet/ModuleHttpServlet$1.class | Bin 0 -> 1532 bytes .../jetty/servlet/ModuleHttpServlet.class | Bin 0 -> 8709 bytes ...etAcceptorServlet$InnerOnTextMessage.class | Bin 0 -> 1624 bytes ...cketAcceptorServlet$InnerWebSocket$1.class | Bin 0 -> 1923 bytes ...SocketAcceptorServlet$InnerWebSocket.class | Bin 0 -> 3343 bytes ...rServlet$WebSocketConnectionResource.class | Bin 0 -> 1507 bytes .../servlet/WebSocketAcceptorServlet.class | Bin 0 -> 4421 bytes .../jvm/sandbox/core/util/BitUtils.class | Bin 0 -> 627 bytes .../jvm/sandbox/core/util/EventPool$1.class | Bin 0 -> 1222 bytes .../core/util/EventPool$EventFactory.class | Bin 0 -> 4666 bytes .../jvm/sandbox/core/util/EventPool.class | Bin 0 -> 14235 bytes .../sandbox/core/util/ExceptionUtils.class | Bin 0 -> 1127 bytes .../sandbox/core/util/FeatureCodec$1.class | Bin 0 -> 1422 bytes .../FeatureCodec$ESCAPE_DECODE_STATE.class | Bin 0 -> 1331 bytes .../FeatureCodec$ESCAPE_SPLIT_STATE.class | Bin 0 -> 1381 bytes .../jvm/sandbox/core/util/FeatureCodec.class | Bin 0 -> 6660 bytes .../core/util/Initializer$Processor.class | Bin 0 -> 313 bytes .../sandbox/core/util/Initializer$State.class | Bin 0 -> 1275 bytes .../jvm/sandbox/core/util/Initializer.class | Bin 0 -> 2549 bytes .../jvm/sandbox/core/util/LazyGet.class | Bin 0 -> 1025 bytes .../sandbox/core/util/NamespaceConvert.class | Bin 0 -> 1261 bytes .../jvm/sandbox/core/util/NetworkUtils.class | Bin 0 -> 1083 bytes .../jvm/sandbox/core/util/ObjectIDs$1.class | Bin 0 -> 243 bytes .../ObjectIDs$IdentityWeakReference.class | Bin 0 -> 1538 bytes .../jvm/sandbox/core/util/ObjectIDs.class | Bin 0 -> 4256 bytes .../core/util/SandboxReflectUtils.class | Bin 0 -> 4580 bytes .../core/util/SandboxStringUtils.class | Bin 0 -> 1971 bytes .../jvm/sandbox/core/util/Sequencer.class | Bin 0 -> 614 bytes .../jvm/sandbox/core/util/SpyUtils.class | Bin 0 -> 1771 bytes .../sandbox/core/util/UnCaughtException.class | Bin 0 -> 422 bytes .../jvm/sandbox/core/util/UnsafeUtils.class | Bin 0 -> 830 bytes .../core/util/collection/GaLRUCache.class | Bin 0 -> 1026 bytes .../core/util/collection/GaStack.class | Bin 0 -> 424 bytes .../sandbox/core/util/collection/Pair.class | Bin 0 -> 572 bytes .../util/collection/ThreadUnsafeGaStack.class | Bin 0 -> 2439 bytes .../core/util/matcher/ExtFilterMatcher.class | Bin 0 -> 6699 bytes .../core/util/matcher/GroupMatcher$1.class | Bin 0 -> 268 bytes .../core/util/matcher/GroupMatcher$And.class | Bin 0 -> 2078 bytes .../core/util/matcher/GroupMatcher$Or.class | Bin 0 -> 1636 bytes .../core/util/matcher/GroupMatcher.class | Bin 0 -> 1097 bytes .../sandbox/core/util/matcher/Matcher.class | Bin 0 -> 287 bytes .../core/util/matcher/MatchingResult.class | Bin 0 -> 1696 bytes .../util/matcher/UnsupportedMatcher.class | Bin 0 -> 5635 bytes .../core/util/matcher/structure/Access.class | Bin 0 -> 351 bytes .../matcher/structure/AccessImplByAsm.class | Bin 0 -> 1612 bytes .../structure/AccessImplByJDKBehavior.class | Bin 0 -> 948 bytes .../structure/AccessImplByJDKClass.class | Bin 0 -> 889 bytes .../structure/ArrayClassStructure.class | Bin 0 -> 993 bytes .../structure/BehaviorStructure$1.class | Bin 0 -> 1837 bytes .../structure/BehaviorStructure$2.class | Bin 0 -> 1917 bytes .../matcher/structure/BehaviorStructure.class | Bin 0 -> 5013 bytes .../matcher/structure/ClassStructure.class | Bin 0 -> 1254 bytes .../structure/ClassStructureFactory.class | Bin 0 -> 2042 bytes .../structure/ClassStructureImplByAsm$1.class | Bin 0 -> 1527 bytes .../structure/ClassStructureImplByAsm$2.class | Bin 0 -> 2022 bytes .../structure/ClassStructureImplByAsm$3.class | Bin 0 -> 1638 bytes .../ClassStructureImplByAsm$4$1.class | Bin 0 -> 1915 bytes .../structure/ClassStructureImplByAsm$4.class | Bin 0 -> 1897 bytes .../ClassStructureImplByAsm$5$1$1.class | Bin 0 -> 4888 bytes .../ClassStructureImplByAsm$5$1.class | Bin 0 -> 1786 bytes .../structure/ClassStructureImplByAsm$5.class | Bin 0 -> 1895 bytes .../structure/ClassStructureImplByAsm.class | Bin 0 -> 10032 bytes .../structure/ClassStructureImplByJDK$1.class | Bin 0 -> 1893 bytes .../structure/ClassStructureImplByJDK$2.class | Bin 0 -> 2750 bytes .../structure/ClassStructureImplByJDK.class | Bin 0 -> 8172 bytes .../structure/EmptyClassStructure.class | Bin 0 -> 2326 bytes .../structure/FamilyClassStructure$1.class | Bin 0 -> 2316 bytes .../structure/FamilyClassStructure$2.class | Bin 0 -> 2232 bytes .../structure/FamilyClassStructure$3.class | Bin 0 -> 2283 bytes .../structure/FamilyClassStructure$4.class | Bin 0 -> 2021 bytes .../structure/FamilyClassStructure.class | Bin 0 -> 4557 bytes .../matcher/structure/MemberStructure.class | Bin 0 -> 1233 bytes .../matcher/structure/ModifierAccess.class | Bin 0 -> 1243 bytes .../PrimitiveClassStructure$Primitive.class | Bin 0 -> 3120 bytes .../structure/PrimitiveClassStructure.class | Bin 0 -> 1990 bytes .../classes/com/alibaba/jvm/sandbox/logo | 5 + .../classes/com/alibaba/jvm/sandbox/version | 1 + .../core/enhance/AdviceTestCase$1.class | Bin 0 -> 1397 bytes .../core/enhance/AdviceTestCase$2.class | Bin 0 -> 1669 bytes .../core/enhance/AdviceTestCase$3.class | Bin 0 -> 1678 bytes .../core/enhance/AdviceTestCase$4.class | Bin 0 -> 1469 bytes .../core/enhance/AdviceTestCase$5.class | Bin 0 -> 1574 bytes .../core/enhance/AdviceTestCase$6.class | Bin 0 -> 1573 bytes .../qatest/core/enhance/AdviceTestCase.class | Bin 0 -> 4121 bytes .../core/enhance/CalculatorTestCase.class | Bin 0 -> 2134 bytes .../enhance/CoreEnhanceBaseTestCase$1.class | Bin 0 -> 305 bytes ...eEnhanceBaseTestCase$TestClassLoader.class | Bin 0 -> 3168 bytes .../enhance/CoreEnhanceBaseTestCase.class | Bin 0 -> 5169 bytes .../core/enhance/EventStackTestCase$1.class | Bin 0 -> 2222 bytes .../core/enhance/EventStackTestCase$2.class | Bin 0 -> 2492 bytes .../core/enhance/EventStackTestCase$3.class | Bin 0 -> 2555 bytes .../core/enhance/EventStackTestCase$4.class | Bin 0 -> 852 bytes .../core/enhance/EventStackTestCase.class | Bin 0 -> 3078 bytes .../core/enhance/EventStreamTestCase.class | Bin 0 -> 3664 bytes .../qatest/core/enhance/EventTestCase$1.class | Bin 0 -> 2422 bytes .../qatest/core/enhance/EventTestCase$2.class | Bin 0 -> 1897 bytes .../qatest/core/enhance/EventTestCase$3.class | Bin 0 -> 1993 bytes .../qatest/core/enhance/EventTestCase$4.class | Bin 0 -> 2134 bytes .../qatest/core/enhance/EventTestCase$5.class | Bin 0 -> 1959 bytes .../EventTestCase$LineEventChecker.class | Bin 0 -> 2228 bytes .../qatest/core/enhance/EventTestCase.class | Bin 0 -> 5991 bytes .../core/enhance/NamespaceTestCase$1.class | Bin 0 -> 1716 bytes .../core/enhance/NamespaceTestCase$2.class | Bin 0 -> 1750 bytes .../core/enhance/NamespaceTestCase.class | Bin 0 -> 2595 bytes .../enhance/ProcessControllerTestCase$1.class | Bin 0 -> 1692 bytes .../enhance/ProcessControllerTestCase$2.class | Bin 0 -> 1769 bytes .../enhance/ProcessControllerTestCase$3.class | Bin 0 -> 1919 bytes .../enhance/ProcessControllerTestCase$4.class | Bin 0 -> 1769 bytes .../enhance/ProcessControllerTestCase.class | Bin 0 -> 3436 bytes ...ntStreamCheckerListener$EventChecker.class | Bin 0 -> 546 bytes ...reamCheckerListener$EventTypeChecker.class | Bin 0 -> 3439 bytes .../listener/EventStreamCheckerListener.class | Bin 0 -> 2473 bytes .../InterruptedAdviceAdapterListener.class | Bin 0 -> 726 bytes .../listener/InterruptedEventListener.class | Bin 0 -> 789 bytes .../core/enhance/target/Calculator.class | Bin 0 -> 972 bytes .../CoreLoadedClassDataSourceTestCase$1.class | Bin 0 -> 1143 bytes .../CoreLoadedClassDataSourceTestCase$2.class | Bin 0 -> 1290 bytes ...eLoadedClassDataSourceTestCase$Human.class | Bin 0 -> 349 bytes ...dClassDataSourceTestCase$InnerWorker.class | Bin 0 -> 1163 bytes ...oreLoadedClassDataSourceTestCase$Man.class | Bin 0 -> 450 bytes ...ase$NameRegexWithSubClassesExtFilter.class | Bin 0 -> 1244 bytes ...eLoadedClassDataSourceTestCase$Woman.class | Bin 0 -> 456 bytes ...LoadedClassDataSourceTestCase$Worker.class | Bin 0 -> 562 bytes .../CoreLoadedClassDataSourceTestCase.class | Bin 0 -> 6721 bytes .../manager/CoreModuleManagerTestCase$1.class | Bin 0 -> 2407 bytes .../manager/CoreModuleManagerTestCase$2.class | Bin 0 -> 2422 bytes .../manager/CoreModuleManagerTestCase$3.class | Bin 0 -> 2414 bytes ...eManagerTestCase$AnotherNormalModule.class | Bin 0 -> 716 bytes ...ManagerTestCase$BrokenOnActiveModule.class | Bin 0 -> 929 bytes ...eManagerTestCase$BrokenOnCInitModule.class | Bin 0 -> 856 bytes ...ManagerTestCase$BrokenOnFrozenModule.class | Bin 0 -> 929 bytes ...gerTestCase$BrokenOnLazyActiveModule.class | Bin 0 -> 978 bytes ...TestCase$BrokenOnLoadCompletedModule.class | Bin 0 -> 971 bytes ...leManagerTestCase$BrokenOnLoadModule.class | Bin 0 -> 971 bytes ...ManagerTestCase$BrokenOnUnLoadModule.class | Bin 0 -> 929 bytes ...tCase$EmptyCoreLoadedClassDataSource.class | Bin 0 -> 1777 bytes ...ManagerTestCase$EmptyInstrumentation.class | Bin 0 -> 3246 bytes ...ManagerTestCase$EmptyProviderManager.class | Bin 0 -> 1381 bytes ...erTestCase$ModifyAnotherNormalModule.class | Bin 0 -> 734 bytes ...reModuleManagerTestCase$NormalModule.class | Bin 0 -> 737 bytes ...gerTestCase$NormalOnLazyActiveModule.class | Bin 0 -> 815 bytes .../manager/CoreModuleManagerTestCase.class | Bin 0 -> 13712 bytes ...MockLoadedClassesOnlyInstrumentation.class | Bin 0 -> 3380 bytes .../core/manager/ModuleLifeCycleAdapter.class | Bin 0 -> 851 bytes .../sandbox/qatest/core/util/JarBuilder.class | Bin 0 -> 4530 bytes .../core/util/ModuleTests$TestModule.class | Bin 0 -> 614 bytes .../qatest/core/util/ModuleTests.class | Bin 0 -> 1253 bytes .../qatest/core/util/QaClassUtils.class | Bin 0 -> 3971 bytes .../core/util/SandboxModuleJarBuilder.class | Bin 0 -> 2064 bytes .../ClassStructureTestCaseByChildClass.class | Bin 0 -> 12266 bytes .../asserts/AccessAsserter$AccessIsEnum.class | Bin 0 -> 1924 bytes .../util/matcher/asserts/AccessAsserter.class | Bin 0 -> 3073 bytes .../core/util/matcher/asserts/Asserter.class | Bin 0 -> 315 bytes .../asserts/BehaviorStructureAsserter.class | Bin 0 -> 4936 bytes .../BehaviorStructureCollectionAsserter.class | Bin 0 -> 3451 bytes .../asserts/ClassStructureAsserter.class | Bin 0 -> 6245 bytes .../ClassStructureCollectionAsserter.class | Bin 0 -> 2719 bytes .../asserts/MappingAsserter$Mode.class | Bin 0 -> 1398 bytes .../matcher/asserts/MappingAsserter.class | Bin 0 -> 4263 bytes .../target/ChildClass$InnerClass.class | Bin 0 -> 692 bytes .../target/ChildClass$ProtectedEnum.class | Bin 0 -> 1308 bytes .../ChildClass$ProtectedInterface.class | Bin 0 -> 300 bytes .../ChildClass$ProtectedStaticClass.class | Bin 0 -> 535 bytes .../target/ChildClass$PublicEnum.class | Bin 0 -> 1287 bytes .../target/ChildClass$PublicInterface.class | Bin 0 -> 294 bytes .../target/ChildClass$PublicStaticClass.class | Bin 0 -> 683 bytes .../core/util/matcher/target/ChildClass.class | Bin 0 -> 6030 bytes .../util/matcher/target/GrandpaClass.class | Bin 0 -> 459 bytes .../target/IGrandpaInterfaceFirst.class | Bin 0 -> 272 bytes .../target/IGrandpaInterfaceFirstFirst.class | Bin 0 -> 191 bytes .../target/IParentInterfaceFirst.class | Bin 0 -> 398 bytes .../target/IParentInterfaceFirstFirst.class | Bin 0 -> 476 bytes .../target/IParentInterfaceFirstSecond.class | Bin 0 -> 191 bytes .../target/IParentInterfaceSecond.class | Bin 0 -> 181 bytes .../target/IllInheritedAnnotation.class | Bin 0 -> 484 bytes .../matcher/target/InheritedAnnotation.class | Bin 0 -> 517 bytes .../util/matcher/target/ParentClass.class | Bin 0 -> 628 bytes .../lib/sandbox-spy-1.1.0-for-qatest.jar | Bin 0 -> 7002 bytes sandbox-core/target/test-classes/logback.xml | 14 + sandbox-debug-module/pom.xml | 2 +- .../com.alibaba.jvm.sandbox.api.Module | 7 + .../module/debug/DebugRalphModule$1.class | Bin 0 -> 3179 bytes .../module/debug/DebugRalphModule$2.class | Bin 0 -> 2786 bytes .../module/debug/DebugRalphModule$3.class | Bin 0 -> 1584 bytes .../module/debug/DebugRalphModule$4.class | Bin 0 -> 2340 bytes .../module/debug/DebugRalphModule$5.class | Bin 0 -> 2801 bytes .../module/debug/DebugRalphModule$6.class | Bin 0 -> 926 bytes .../DebugRalphModule$ExceptionFactory.class | Bin 0 -> 342 bytes .../DebugRalphModule$ExceptionType$1.class | Bin 0 -> 922 bytes .../DebugRalphModule$ExceptionType$2.class | Bin 0 -> 933 bytes .../DebugRalphModule$ExceptionType$3.class | Bin 0 -> 929 bytes .../DebugRalphModule$ExceptionType$4.class | Bin 0 -> 940 bytes .../DebugRalphModule$ExceptionType.class | Bin 0 -> 2484 bytes .../module/debug/DebugRalphModule.class | Bin 0 -> 9796 bytes .../module/debug/DebugTraceModule$1.class | Bin 0 -> 4617 bytes .../module/debug/DebugTraceModule.class | Bin 0 -> 4829 bytes .../module/debug/DebugWatchModule$1.class | Bin 0 -> 1556 bytes .../module/debug/DebugWatchModule$2.class | Bin 0 -> 4246 bytes .../module/debug/DebugWatchModule$Bind.class | Bin 0 -> 1025 bytes .../debug/DebugWatchModule$Trigger.class | Bin 0 -> 1345 bytes .../module/debug/DebugWatchModule.class | Bin 0 -> 6374 bytes .../debug/ExceptionLoggerModule$1.class | Bin 0 -> 1424 bytes .../module/debug/ExceptionLoggerModule.class | Bin 0 -> 2307 bytes .../debug/HttpHttpAccessLoggerModule$1.class | Bin 0 -> 1991 bytes .../debug/HttpHttpAccessLoggerModule$2.class | Bin 0 -> 3806 bytes ...ttpHttpAccessLoggerModule$HttpAccess.class | Bin 0 -> 948 bytes ...tpAccessLoggerModule$HttpProcessStep.class | Bin 0 -> 1555 bytes .../debug/HttpHttpAccessLoggerModule.class | Bin 0 -> 7186 bytes .../module/debug/HttpSupported$1.class | Bin 0 -> 930 bytes .../module/debug/HttpSupported$2.class | Bin 0 -> 969 bytes .../module/debug/HttpSupported$3.class | Bin 0 -> 975 bytes .../module/debug/HttpSupported$4.class | Bin 0 -> 978 bytes .../debug/HttpSupported$Converter.class | Bin 0 -> 409 bytes ...HttpSupported$HttpErrorCodeException.class | Bin 0 -> 713 bytes .../sandbox/module/debug/HttpSupported.class | Bin 0 -> 6724 bytes .../module/debug/JdbcLoggerModule$1.class | Bin 0 -> 2117 bytes .../module/debug/JdbcLoggerModule$2.class | Bin 0 -> 3624 bytes ...$MonitorJavaSqlPreparedStatementStep.class | Bin 0 -> 1631 bytes .../module/debug/JdbcLoggerModule.class | Bin 0 -> 4064 bytes .../module/debug/ProgressPrinter.class | Bin 0 -> 2719 bytes .../module/debug/SpringLoggerModule$1.class | Bin 0 -> 2504 bytes .../module/debug/SpringLoggerModule.class | Bin 0 -> 3294 bytes .../module/debug/textui/TComponent.class | Bin 0 -> 188 bytes .../sandbox/module/debug/textui/TTree$1.class | Bin 0 -> 3077 bytes .../module/debug/textui/TTree$Callback.class | Bin 0 -> 417 bytes .../module/debug/textui/TTree$Node.class | Bin 0 -> 2332 bytes .../sandbox/module/debug/textui/TTree.class | Bin 0 -> 4028 bytes .../debug/util/Express$ExpressException.class | Bin 0 -> 750 bytes .../debug/util/Express$ExpressFactory$1.class | Bin 0 -> 1000 bytes .../debug/util/Express$ExpressFactory.class | Bin 0 -> 1115 bytes .../debug/util/Express$OgnlExpress.class | Bin 0 -> 2251 bytes .../sandbox/module/debug/util/Express.class | Bin 0 -> 829 bytes .../module/debug/util/GaEnumUtils.class | Bin 0 -> 1686 bytes .../debug/util/SimpleDateFormatHolder.class | Bin 0 -> 1328 bytes .../target/classes/logback.xml | 79 +++ sandbox-mgr-module/pom.xml | 2 +- .../sandbox/module/mgr/ModuleMgrModule.java | 2 +- .../com.alibaba.jvm.sandbox.api.Module | 3 + .../sandbox/module/mgr/ControlModule$1.class | Bin 0 -> 1822 bytes .../sandbox/module/mgr/ControlModule.class | Bin 0 -> 7124 bytes .../jvm/sandbox/module/mgr/InfoModule.class | Bin 0 -> 4539 bytes .../sandbox/module/mgr/ModuleMgrModule.class | Bin 0 -> 9307 bytes sandbox-mgr-module/target/classes/logback.xml | 19 + sandbox-mgr-provider/pom.xml | 2 +- ...sandbox.provider.api.ModuleJarLoadingChain | 1 + ...vm.sandbox.provider.api.ModuleLoadingChain | 1 + .../mgr/EmptyModuleJarLoadingChain.class | Bin 0 -> 621 bytes .../mgr/EmptyModuleLoadingChain.class | Bin 0 -> 903 bytes sandbox-module-starter/pom.xml | 2 +- sandbox-provider-api/pom.xml | 2 +- .../provider/api/ModuleJarLoadingChain.class | Bin 0 -> 246 bytes .../provider/api/ModuleLoadingChain.class | Bin 0 -> 334 bytes sandbox-qatest/pom.xml | 56 -- sandbox-spy/pom.xml | 2 +- .../jvm/sandbox/spy/Spy$MethodHook.class | Bin 0 -> 1787 bytes .../com/alibaba/jvm/sandbox/spy/Spy$Ret.class | Bin 0 -> 1289 bytes .../spy/Spy$SelfCallBarrier$Node.class | Bin 0 -> 1518 bytes .../jvm/sandbox/spy/Spy$SelfCallBarrier.class | Bin 0 -> 2850 bytes .../com/alibaba/jvm/sandbox/spy/Spy.class | Bin 0 -> 5958 bytes 512 files changed, 3023 insertions(+), 511 deletions(-) create mode 100644 sandbox-agent/target/classes/com/alibaba/jvm/sandbox/agent/AgentLauncher.class create mode 100644 sandbox-agent/target/classes/com/alibaba/jvm/sandbox/agent/SandboxClassLoader.class create mode 100644 sandbox-api/src/test/java/com/alibaba/jvm/sandbox/qatest/api/AdviceListenerTestCase.java create mode 100644 sandbox-api/src/test/java/com/alibaba/jvm/sandbox/qatest/api/EventWatchBuilderTestCase.java create mode 100644 sandbox-api/src/test/java/com/alibaba/jvm/sandbox/qatest/api/mock/MockForBuilderModuleEventWatcher.java create mode 100644 sandbox-api/src/test/java/com/alibaba/jvm/sandbox/qatest/api/mock/MockForBuilderProgress.java create mode 100644 sandbox-api/src/test/java/com/alibaba/jvm/sandbox/qatest/api/util/ApiQaArrayUtils.java create mode 100755 sandbox-api/src/test/resources/logback.xml create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/LoadCompleted.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/ModuleLifecycle.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/ProcessControlException$State.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/ProcessControlException.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/ProcessController.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/annotation/IncludeBootstrap.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/annotation/IncludeSubClasses.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/annotation/Stealth.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/event/BeforeEvent.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/event/CallBeforeEvent.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/event/CallReturnEvent.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/event/CallThrowsEvent.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/event/Event$Type.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/event/Event.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/event/ImmediatelyReturnEvent.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/event/ImmediatelyThrowsEvent.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/event/InvokeEvent.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/event/LineEvent.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/event/ReturnEvent.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/event/ThrowsEvent.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/filter/AccessFlags.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/filter/ExtFilter$ExtFilterFactory$1.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/filter/ExtFilter$ExtFilterFactory.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/filter/ExtFilter.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/filter/Filter.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/filter/NameRegexFilter.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/filter/OrGroupFilter.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/http/Http$Method.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/http/Http.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/http/printer/ConcurrentLinkedQueuePrinter.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/http/printer/Printer.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/http/websocket/TextMessageListener.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/http/websocket/WebSocketAcceptor.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/http/websocket/WebSocketConnection.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/http/websocket/WebSocketConnectionListener.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/EventListener.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/EventListenerFactory.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/Sentry$1.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/Sentry$WrapData.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/Sentry.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ThreadSafeEventListener$1.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ThreadSafeEventListener.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/Advice.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/AdviceAdapterListener$1.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/AdviceAdapterListener$2.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/AdviceAdapterListener$3.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/AdviceAdapterListener$BehaviorCacheKey.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/AdviceAdapterListener$CallTarget.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/AdviceAdapterListener$OpStack.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/AdviceAdapterListener$WrapAdvice.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/AdviceAdapterListener.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/AdviceListener.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/Attachment.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/Behavior$ConstructorImpl.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/Behavior$MethodImpl.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/Behavior.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder$1.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder$2.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder$3.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder$4.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder$BuildingForBehavior.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder$BuildingForClass.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder$BuildingForWatching.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder$Group.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder$IBuildingForBehavior.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder$IBuildingForClass.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder$IBuildingForUnWatching.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder$IBuildingForWatching.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder$PatternGroupList.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder$PatternType.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder$ProgressGroup.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchCondition.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatcher.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/resource/EventMonitor$EventPoolInfo.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/resource/EventMonitor.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/resource/LoadedClassDataSource.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/resource/ModuleController.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/resource/ModuleEventWatcher$Progress.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/resource/ModuleEventWatcher$WatchCallback.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/resource/ModuleEventWatcher.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/resource/ModuleManager.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/util/BehaviorDescriptor$Type.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/util/BehaviorDescriptor.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/util/CacheGet$CacheLoadUnCaughtException.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/util/CacheGet.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/util/GaArrayUtils.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/util/GaCollectionUtils.class create mode 100644 sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/util/GaStringUtils.class create mode 100644 sandbox-api/target/test-classes/com/alibaba/jvm/sandbox/qatest/api/AdviceListenerTestCase$1.class create mode 100644 sandbox-api/target/test-classes/com/alibaba/jvm/sandbox/qatest/api/AdviceListenerTestCase.class create mode 100644 sandbox-api/target/test-classes/com/alibaba/jvm/sandbox/qatest/api/EventWatchBuilderTestCase.class create mode 100644 sandbox-api/target/test-classes/com/alibaba/jvm/sandbox/qatest/api/mock/MockForBuilderModuleEventWatcher.class create mode 100644 sandbox-api/target/test-classes/com/alibaba/jvm/sandbox/qatest/api/mock/MockForBuilderProgress.class create mode 100644 sandbox-api/target/test-classes/com/alibaba/jvm/sandbox/qatest/api/util/ApiQaArrayUtils.class create mode 100755 sandbox-api/target/test-classes/logback.xml create mode 100644 sandbox-common-api/target/classes/com/alibaba/jvm/sandbox/api/Information$Mode.class create mode 100644 sandbox-common-api/target/classes/com/alibaba/jvm/sandbox/api/Information.class create mode 100644 sandbox-common-api/target/classes/com/alibaba/jvm/sandbox/api/Module.class create mode 100644 sandbox-common-api/target/classes/com/alibaba/jvm/sandbox/api/ModuleException$ErrorCode.class create mode 100644 sandbox-common-api/target/classes/com/alibaba/jvm/sandbox/api/ModuleException.class create mode 100644 sandbox-common-api/target/classes/com/alibaba/jvm/sandbox/api/resource/ConfigInfo.class create mode 100644 sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/util/NamespaceConvert.java create mode 100644 sandbox-core/src/main/resources/com/alibaba/jvm/sandbox/logo create mode 100644 sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/AdviceTestCase.java rename {sandbox-qatest => sandbox-core}/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/CalculatorTestCase.java (89%) rename {sandbox-qatest => sandbox-core}/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/CoreEnhanceBaseTestCase.java (96%) create mode 100644 sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/EventStackTestCase.java rename {sandbox-qatest => sandbox-core}/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/EventStreamTestCase.java (100%) rename {sandbox-qatest => sandbox-core}/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/EventTestCase.java (100%) rename {sandbox-qatest => sandbox-core}/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/NamespaceTestCase.java (100%) rename {sandbox-qatest => sandbox-core}/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/ProcessControllerTestCase.java (100%) rename {sandbox-qatest => sandbox-core}/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/listener/EventStreamCheckerListener.java (100%) create mode 100644 sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/listener/InterruptedAdviceAdapterListener.java create mode 100644 sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/listener/InterruptedEventListener.java rename {sandbox-qatest => sandbox-core}/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/target/Calculator.java (100%) create mode 100644 sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/manager/CoreLoadedClassDataSourceTestCase.java create mode 100644 sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase.java create mode 100644 sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/manager/ModuleLifeCycleAdapter.java create mode 100644 sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/JarBuilder.java create mode 100644 sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/ModuleTests.java rename {sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest => sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core}/util/QaClassUtils.java (98%) create mode 100644 sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/SandboxModuleJarBuilder.java rename {sandbox-qatest => sandbox-core}/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/ClassStructureTestCaseByChildClass.java (99%) rename {sandbox-qatest => sandbox-core}/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/AccessAsserter.java (100%) rename {sandbox-qatest => sandbox-core}/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/Asserter.java (100%) rename {sandbox-qatest => sandbox-core}/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/BehaviorStructureAsserter.java (100%) rename {sandbox-qatest => sandbox-core}/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/BehaviorStructureCollectionAsserter.java (100%) rename {sandbox-qatest => sandbox-core}/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/ClassStructureAsserter.java (100%) rename {sandbox-qatest => sandbox-core}/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/ClassStructureCollectionAsserter.java (100%) rename {sandbox-qatest => sandbox-core}/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/MappingAsserter.java (100%) rename {sandbox-qatest => sandbox-core}/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ChildClass.java (100%) rename {sandbox-qatest => sandbox-core}/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/GrandpaClass.java (100%) rename {sandbox-qatest => sandbox-core}/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IGrandpaInterfaceFirst.java (100%) rename {sandbox-qatest => sandbox-core}/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IGrandpaInterfaceFirstFirst.java (100%) rename {sandbox-qatest => sandbox-core}/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IParentInterfaceFirst.java (100%) rename {sandbox-qatest => sandbox-core}/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IParentInterfaceFirstFirst.java (100%) rename {sandbox-qatest => sandbox-core}/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IParentInterfaceFirstSecond.java (100%) rename {sandbox-qatest => sandbox-core}/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IParentInterfaceSecond.java (100%) rename {sandbox-qatest => sandbox-core}/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IllInheritedAnnotation.java (100%) rename {sandbox-qatest => sandbox-core}/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/InheritedAnnotation.java (100%) rename {sandbox-qatest => sandbox-core}/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ParentClass.java (100%) rename {sandbox-qatest => sandbox-core}/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/package-info.java (100%) rename {sandbox-qatest => sandbox-core/src/test/resources}/lib/sandbox-spy-1.1.0-for-qatest.jar (100%) create mode 100755 sandbox-core/src/test/resources/logback.xml create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/CoreConfigure.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/CoreLauncher.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/classloader/ModuleClassLoader.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/classloader/ProviderClassLoader.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/classloader/RoutingURLClassLoader$Routing.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/classloader/RoutingURLClassLoader.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/domain/CoreModule.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/Enhancer.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/EventEnhancer$1.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/EventEnhancer.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/annotation/Interrupted.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/CodeLock$Block.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/CodeLock.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/EventListenerHandlers$1.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/EventListenerHandlers$EventListenerWrap$1.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/EventListenerHandlers$EventListenerWrap$EventProcess.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/EventListenerHandlers$EventListenerWrap.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/EventListenerHandlers$InterruptedEventListenerImpl.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/EventListenerHandlers.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/SeparateImmediatelyEventListener$1.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/SeparateImmediatelyEventListener$2.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/SeparateImmediatelyEventListener$Step.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/SeparateImmediatelyEventListener.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/AsmCodeLock.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/AsmMethods$InnerHelper.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/AsmMethods.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/AsmTryCatchBlock.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/AsmTypes.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/CallAsmCodeLock.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/EventWeaver$1$1.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/EventWeaver$1$2.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/EventWeaver$1$3.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/EventWeaver$1$4.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/EventWeaver$1$5.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/EventWeaver$1$6.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/EventWeaver$1$7.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/EventWeaver$1$8.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/EventWeaver$1.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/EventWeaver.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/ReWriteMethod.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/CoreLoadedClassDataSource.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/CoreModuleManager.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/ModuleLifeCycleEventBus$Event.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/ModuleLifeCycleEventBus$ModuleLifeCycleEventListener.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/ModuleLifeCycleEventBus.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/ModuleResourceManager$WeakResource.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/ModuleResourceManager.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/ProviderManager.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/impl/AffectStatistic.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/impl/DefaultConfigInfo.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/impl/DefaultCoreModuleManager$1.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/impl/DefaultCoreModuleManager$InnerModuleJarLoadCallback.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/impl/DefaultCoreModuleManager$InnerModuleLoadCallback.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/impl/DefaultCoreModuleManager.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/impl/DefaultEventMonitor$1.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/impl/DefaultEventMonitor.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/impl/DefaultLoadedClassDataSource$1.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/impl/DefaultLoadedClassDataSource.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/impl/DefaultModuleController.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/impl/DefaultModuleEventWatcher.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/impl/DefaultModuleLifeCycleEventBus.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/impl/DefaultModuleManager.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/impl/DefaultModuleResourceManager.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/impl/DefaultProviderManager.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/impl/ModuleJarLoader$ModuleJarLoadCallback.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/impl/ModuleJarLoader$ModuleLoadCallback.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/impl/ModuleJarLoader.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/impl/SandboxClassFileTransformer.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/server/CoreServer.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/server/ProxyCoreServer.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/server/jetty/JettyCoreServer$1.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/server/jetty/JettyCoreServer$2.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/server/jetty/JettyCoreServer.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/server/jetty/servlet/ModuleHttpServlet$1.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/server/jetty/servlet/ModuleHttpServlet.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/server/jetty/servlet/WebSocketAcceptorServlet$InnerOnTextMessage.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/server/jetty/servlet/WebSocketAcceptorServlet$InnerWebSocket$1.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/server/jetty/servlet/WebSocketAcceptorServlet$InnerWebSocket.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/server/jetty/servlet/WebSocketAcceptorServlet$WebSocketConnectionResource.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/server/jetty/servlet/WebSocketAcceptorServlet.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/BitUtils.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/EventPool$1.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/EventPool$EventFactory.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/EventPool.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/ExceptionUtils.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/FeatureCodec$1.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/FeatureCodec$ESCAPE_DECODE_STATE.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/FeatureCodec$ESCAPE_SPLIT_STATE.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/FeatureCodec.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/Initializer$Processor.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/Initializer$State.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/Initializer.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/LazyGet.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/NamespaceConvert.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/NetworkUtils.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/ObjectIDs$1.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/ObjectIDs$IdentityWeakReference.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/ObjectIDs.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/SandboxReflectUtils.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/SandboxStringUtils.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/Sequencer.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/SpyUtils.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/UnCaughtException.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/UnsafeUtils.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/collection/GaLRUCache.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/collection/GaStack.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/collection/Pair.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/collection/ThreadUnsafeGaStack.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/ExtFilterMatcher.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/GroupMatcher$1.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/GroupMatcher$And.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/GroupMatcher$Or.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/GroupMatcher.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/Matcher.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/MatchingResult.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/UnsupportedMatcher.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/Access.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/AccessImplByAsm.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/AccessImplByJDKBehavior.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/AccessImplByJDKClass.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ArrayClassStructure.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/BehaviorStructure$1.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/BehaviorStructure$2.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/BehaviorStructure.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ClassStructure.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ClassStructureFactory.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ClassStructureImplByAsm$1.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ClassStructureImplByAsm$2.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ClassStructureImplByAsm$3.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ClassStructureImplByAsm$4$1.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ClassStructureImplByAsm$4.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ClassStructureImplByAsm$5$1$1.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ClassStructureImplByAsm$5$1.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ClassStructureImplByAsm$5.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ClassStructureImplByAsm.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ClassStructureImplByJDK$1.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ClassStructureImplByJDK$2.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ClassStructureImplByJDK.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/EmptyClassStructure.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/FamilyClassStructure$1.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/FamilyClassStructure$2.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/FamilyClassStructure$3.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/FamilyClassStructure$4.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/FamilyClassStructure.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/MemberStructure.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ModifierAccess.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/PrimitiveClassStructure$Primitive.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/PrimitiveClassStructure.class create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/logo create mode 100644 sandbox-core/target/classes/com/alibaba/jvm/sandbox/version create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/AdviceTestCase$1.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/AdviceTestCase$2.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/AdviceTestCase$3.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/AdviceTestCase$4.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/AdviceTestCase$5.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/AdviceTestCase$6.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/AdviceTestCase.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/CalculatorTestCase.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/CoreEnhanceBaseTestCase$1.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/CoreEnhanceBaseTestCase$TestClassLoader.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/CoreEnhanceBaseTestCase.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/EventStackTestCase$1.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/EventStackTestCase$2.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/EventStackTestCase$3.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/EventStackTestCase$4.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/EventStackTestCase.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/EventStreamTestCase.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/EventTestCase$1.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/EventTestCase$2.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/EventTestCase$3.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/EventTestCase$4.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/EventTestCase$5.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/EventTestCase$LineEventChecker.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/EventTestCase.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/NamespaceTestCase$1.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/NamespaceTestCase$2.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/NamespaceTestCase.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/ProcessControllerTestCase$1.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/ProcessControllerTestCase$2.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/ProcessControllerTestCase$3.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/ProcessControllerTestCase$4.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/ProcessControllerTestCase.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/listener/EventStreamCheckerListener$EventChecker.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/listener/EventStreamCheckerListener$EventTypeChecker.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/listener/EventStreamCheckerListener.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/listener/InterruptedAdviceAdapterListener.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/listener/InterruptedEventListener.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/target/Calculator.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreLoadedClassDataSourceTestCase$1.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreLoadedClassDataSourceTestCase$2.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreLoadedClassDataSourceTestCase$Human.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreLoadedClassDataSourceTestCase$InnerWorker.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreLoadedClassDataSourceTestCase$Man.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreLoadedClassDataSourceTestCase$NameRegexWithSubClassesExtFilter.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreLoadedClassDataSourceTestCase$Woman.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreLoadedClassDataSourceTestCase$Worker.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreLoadedClassDataSourceTestCase.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase$1.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase$2.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase$3.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase$AnotherNormalModule.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase$BrokenOnActiveModule.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase$BrokenOnCInitModule.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase$BrokenOnFrozenModule.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase$BrokenOnLazyActiveModule.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase$BrokenOnLoadCompletedModule.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase$BrokenOnLoadModule.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase$BrokenOnUnLoadModule.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase$EmptyCoreLoadedClassDataSource.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase$EmptyInstrumentation.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase$EmptyProviderManager.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase$ModifyAnotherNormalModule.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase$NormalModule.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase$NormalOnLazyActiveModule.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/MockLoadedClassesOnlyInstrumentation.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/ModuleLifeCycleAdapter.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/JarBuilder.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/ModuleTests$TestModule.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/ModuleTests.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/QaClassUtils.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/SandboxModuleJarBuilder.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/ClassStructureTestCaseByChildClass.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/AccessAsserter$AccessIsEnum.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/AccessAsserter.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/Asserter.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/BehaviorStructureAsserter.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/BehaviorStructureCollectionAsserter.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/ClassStructureAsserter.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/ClassStructureCollectionAsserter.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/MappingAsserter$Mode.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/MappingAsserter.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ChildClass$InnerClass.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ChildClass$ProtectedEnum.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ChildClass$ProtectedInterface.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ChildClass$ProtectedStaticClass.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ChildClass$PublicEnum.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ChildClass$PublicInterface.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ChildClass$PublicStaticClass.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ChildClass.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/GrandpaClass.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IGrandpaInterfaceFirst.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IGrandpaInterfaceFirstFirst.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IParentInterfaceFirst.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IParentInterfaceFirstFirst.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IParentInterfaceFirstSecond.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IParentInterfaceSecond.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IllInheritedAnnotation.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/InheritedAnnotation.class create mode 100644 sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ParentClass.class create mode 100644 sandbox-core/target/test-classes/lib/sandbox-spy-1.1.0-for-qatest.jar create mode 100755 sandbox-core/target/test-classes/logback.xml create mode 100644 sandbox-debug-module/target/classes/META-INF/services/com.alibaba.jvm.sandbox.api.Module create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugRalphModule$1.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugRalphModule$2.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugRalphModule$3.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugRalphModule$4.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugRalphModule$5.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugRalphModule$6.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugRalphModule$ExceptionFactory.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugRalphModule$ExceptionType$1.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugRalphModule$ExceptionType$2.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugRalphModule$ExceptionType$3.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugRalphModule$ExceptionType$4.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugRalphModule$ExceptionType.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugRalphModule.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugTraceModule$1.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugTraceModule.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugWatchModule$1.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugWatchModule$2.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugWatchModule$Bind.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugWatchModule$Trigger.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugWatchModule.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/ExceptionLoggerModule$1.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/ExceptionLoggerModule.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/HttpHttpAccessLoggerModule$1.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/HttpHttpAccessLoggerModule$2.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/HttpHttpAccessLoggerModule$HttpAccess.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/HttpHttpAccessLoggerModule$HttpProcessStep.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/HttpHttpAccessLoggerModule.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/HttpSupported$1.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/HttpSupported$2.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/HttpSupported$3.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/HttpSupported$4.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/HttpSupported$Converter.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/HttpSupported$HttpErrorCodeException.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/HttpSupported.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/JdbcLoggerModule$1.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/JdbcLoggerModule$2.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/JdbcLoggerModule$MonitorJavaSqlPreparedStatementStep.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/JdbcLoggerModule.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/ProgressPrinter.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/SpringLoggerModule$1.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/SpringLoggerModule.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/textui/TComponent.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/textui/TTree$1.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/textui/TTree$Callback.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/textui/TTree$Node.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/textui/TTree.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/util/Express$ExpressException.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/util/Express$ExpressFactory$1.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/util/Express$ExpressFactory.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/util/Express$OgnlExpress.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/util/Express.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/util/GaEnumUtils.class create mode 100644 sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/util/SimpleDateFormatHolder.class create mode 100755 sandbox-debug-module/target/classes/logback.xml create mode 100755 sandbox-mgr-module/target/classes/META-INF/services/com.alibaba.jvm.sandbox.api.Module create mode 100644 sandbox-mgr-module/target/classes/com/alibaba/jvm/sandbox/module/mgr/ControlModule$1.class create mode 100644 sandbox-mgr-module/target/classes/com/alibaba/jvm/sandbox/module/mgr/ControlModule.class create mode 100644 sandbox-mgr-module/target/classes/com/alibaba/jvm/sandbox/module/mgr/InfoModule.class create mode 100644 sandbox-mgr-module/target/classes/com/alibaba/jvm/sandbox/module/mgr/ModuleMgrModule.class create mode 100755 sandbox-mgr-module/target/classes/logback.xml create mode 100644 sandbox-mgr-provider/target/classes/META-INF/services/com.alibaba.jvm.sandbox.provider.api.ModuleJarLoadingChain create mode 100644 sandbox-mgr-provider/target/classes/META-INF/services/com.alibaba.jvm.sandbox.provider.api.ModuleLoadingChain create mode 100644 sandbox-mgr-provider/target/classes/com/alibaba/jvm/sandbox/provider/mgr/EmptyModuleJarLoadingChain.class create mode 100644 sandbox-mgr-provider/target/classes/com/alibaba/jvm/sandbox/provider/mgr/EmptyModuleLoadingChain.class create mode 100644 sandbox-provider-api/target/classes/com/alibaba/jvm/sandbox/provider/api/ModuleJarLoadingChain.class create mode 100644 sandbox-provider-api/target/classes/com/alibaba/jvm/sandbox/provider/api/ModuleLoadingChain.class delete mode 100644 sandbox-qatest/pom.xml create mode 100644 sandbox-spy/target/classes/java/com/alibaba/jvm/sandbox/spy/Spy$MethodHook.class create mode 100644 sandbox-spy/target/classes/java/com/alibaba/jvm/sandbox/spy/Spy$Ret.class create mode 100644 sandbox-spy/target/classes/java/com/alibaba/jvm/sandbox/spy/Spy$SelfCallBarrier$Node.class create mode 100644 sandbox-spy/target/classes/java/com/alibaba/jvm/sandbox/spy/Spy$SelfCallBarrier.class create mode 100644 sandbox-spy/target/classes/java/com/alibaba/jvm/sandbox/spy/Spy.class diff --git a/bin/sandbox-logback.xml b/bin/sandbox-logback.xml index dc3d8c0e..6b90e443 100755 --- a/bin/sandbox-logback.xml +++ b/bin/sandbox-logback.xml @@ -8,7 +8,7 @@ 30 - %d{yyyy-MM-dd HH:mm:ss} %-5level %msg%n + %d{yyyy-MM-dd HH:mm:ss} %SANDBOX_NAMESPACE %-5level %msg%n UTF-8 diff --git a/bin/sandbox.sh b/bin/sandbox.sh index 47a02d43..7385e877 100755 --- a/bin/sandbox.sh +++ b/bin/sandbox.sh @@ -50,11 +50,13 @@ exit_on_err() # display usage function usage() { echo " -usage: ${0} [h] [ [vlRFfu:a:A:d:m:I:P:C:]] +usage: ${0} [h] [ [vlRFfu:a:A:d:m:I:P:C:X]] -h : help Prints the ${0} help + -X : debug + Prints debug message -p : PID Select target JVM process ID @@ -253,7 +255,7 @@ function main() { check_permission - while getopts "hp:vFfRu:a:A:d:m:I:P:ClSn:" ARG + while getopts "hp:vFfRu:a:A:d:m:I:P:ClSn:X" ARG do case ${ARG} in h) usage;exit;; @@ -273,6 +275,7 @@ function main() { C) OP_CONNECT_ONLY=1;; S) OP_SHUTDOWN=1;; n) OP_NAMESPACE=1;ARG_NAMESPACE=${OPTARG};; + X) set -x;; ?) usage;exit_on_err 1;; esac done diff --git a/pom.xml b/pom.xml index f430419e..d03352bd 100644 --- a/pom.xml +++ b/pom.xml @@ -5,14 +5,14 @@ com.alibaba.jvm.sandbox sandbox - 1.1.1 + 1.1.2-SNAPSHOT pom sandbox ${sandbox.version} UTF-8 - 1.1.1 + 1.1.2-SNAPSHOT @@ -128,11 +128,16 @@ sandbox-mgr-provider sandbox-module-starter sandbox-debug-module - sandbox-qatest + + junit + junit + 4.9 + test + com.alibaba.jvm.sandbox sandbox-api diff --git a/sandbox-agent/pom.xml b/sandbox-agent/pom.xml index 39da1082..6037e4a7 100755 --- a/sandbox-agent/pom.xml +++ b/sandbox-agent/pom.xml @@ -6,7 +6,7 @@ com.alibaba.jvm.sandbox sandbox - 1.1.1 + 1.1.2-SNAPSHOT sandbox-agent sandbox-agent ${sandbox.version} diff --git a/sandbox-agent/target/classes/com/alibaba/jvm/sandbox/agent/AgentLauncher.class b/sandbox-agent/target/classes/com/alibaba/jvm/sandbox/agent/AgentLauncher.class new file mode 100644 index 0000000000000000000000000000000000000000..241b74a2cceb3fadae069f0d25b2f4497b1e1a8f GIT binary patch literal 11307 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 RK$1&Hl?s6wYHYyle*q@vtvdh! literal 0 HcmV?d00001 diff --git a/sandbox-api/pom.xml b/sandbox-api/pom.xml index 07144ded..038bf51d 100755 --- a/sandbox-api/pom.xml +++ b/sandbox-api/pom.xml @@ -6,12 +6,17 @@ com.alibaba.jvm.sandbox sandbox - 1.1.1 + 1.1.2-SNAPSHOT sandbox-api sandbox-api ${sandbox.version} + + junit + junit + test + com.alibaba.jvm.sandbox sandbox-common-api diff --git a/sandbox-api/src/main/java/com/alibaba/jvm/sandbox/api/ModuleLifecycle.java b/sandbox-api/src/main/java/com/alibaba/jvm/sandbox/api/ModuleLifecycle.java index 11252fb3..b88913d4 100755 --- a/sandbox-api/src/main/java/com/alibaba/jvm/sandbox/api/ModuleLifecycle.java +++ b/sandbox-api/src/main/java/com/alibaba/jvm/sandbox/api/ModuleLifecycle.java @@ -18,6 +18,7 @@ public interface ModuleLifecycle extends LoadCompleted { */ void onLoad() throws Throwable; + /** * 模块卸载,模块开始卸载之前调用! *

diff --git a/sandbox-api/src/main/java/com/alibaba/jvm/sandbox/api/listener/ext/AdviceAdapterListener.java b/sandbox-api/src/main/java/com/alibaba/jvm/sandbox/api/listener/ext/AdviceAdapterListener.java index 304025e8..57378215 100644 --- a/sandbox-api/src/main/java/com/alibaba/jvm/sandbox/api/listener/ext/AdviceAdapterListener.java +++ b/sandbox-api/src/main/java/com/alibaba/jvm/sandbox/api/listener/ext/AdviceAdapterListener.java @@ -16,11 +16,11 @@ * @author luanjia@taobao.com * @since {@code sandbox-api:1.0.10} */ -class AdviceAdapterListener implements EventListener { +public class AdviceAdapterListener implements EventListener { private final AdviceListener adviceListener; - AdviceAdapterListener(final AdviceListener adviceListener) { + public AdviceAdapterListener(final AdviceListener adviceListener) { this.adviceListener = adviceListener; } @@ -71,6 +71,16 @@ final public void onEvent(final Event event) throws Throwable { adviceListener.before(advice); break; } + + /** + * 这里需要感知到IMMEDIATELY,修复#117 + */ + case IMMEDIATELY_THROWS: + case IMMEDIATELY_RETURN: { + final InvokeEvent invokeEvent = (InvokeEvent) event; + opStackRef.get().popByExpectInvokeId(invokeEvent.invokeId); + } + case RETURN: { final OpStack opStack = opStackRef.get(); final ReturnEvent rEvent = (ReturnEvent) event; diff --git a/sandbox-api/src/main/java/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder.java b/sandbox-api/src/main/java/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder.java index 50081398..a06a3e80 100644 --- a/sandbox-api/src/main/java/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder.java +++ b/sandbox-api/src/main/java/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder.java @@ -16,8 +16,11 @@ import java.util.Set; import static com.alibaba.jvm.sandbox.api.event.Event.Type.*; +import static com.alibaba.jvm.sandbox.api.listener.ext.EventWatchBuilder.PatternType.WILDCARD; import static com.alibaba.jvm.sandbox.api.util.GaCollectionUtils.add; -import static com.alibaba.jvm.sandbox.api.util.GaStringUtils.*; +import static com.alibaba.jvm.sandbox.api.util.GaStringUtils.getJavaClassName; +import static com.alibaba.jvm.sandbox.api.util.GaStringUtils.getJavaClassNameArray; +import static java.util.regex.Pattern.quote; /** * 事件观察者类构建器 @@ -272,19 +275,89 @@ public interface IBuildingForUnWatching { // -------------------------- 这里开始实现 -------------------------- + /** + * 模版匹配模式 + * + * @since {@code sandbox-api:1.1.2} + */ + public enum PatternType { + + /** + * 通配符表达式 + */ + WILDCARD, + + /** + * 正则表达式 + */ + REGEX + } private final ModuleEventWatcher moduleEventWatcher; + private final PatternType patternType; private List bfClasses = new ArrayList(); /** - * 构造事件观察者构造器 + * 构造事件观察者构造器(通配符匹配模式) * * @param moduleEventWatcher 模块事件观察者 */ public EventWatchBuilder(final ModuleEventWatcher moduleEventWatcher) { + this(moduleEventWatcher, WILDCARD); + } + + /** + * 构造事件观察者构造器 + * + * @param moduleEventWatcher 模块事件观察者 + * @param patternType 模版匹配模式 + * @since {@code sandbox-api:1.1.2} + */ + public EventWatchBuilder(final ModuleEventWatcher moduleEventWatcher, + final PatternType patternType) { this.moduleEventWatcher = moduleEventWatcher; + this.patternType = patternType; + } + + /** + * 模式匹配 + * + * @param string 目标字符串 + * @param pattern 模式字符串 + * @param patternType 匹配模式 + * @return TRUE:匹配成功 / FALSE:匹配失败 + */ + private static boolean patternMatching(final String string, + final String pattern, + final PatternType patternType) { + switch (patternType) { + case WILDCARD: + return GaStringUtils.matching(string, pattern); + case REGEX: + return string.matches(pattern); + default: + return false; + } + } + + /** + * 将字符串数组转换为正则表达式字符串数组 + * + * @param stringArray 目标字符串数组 + * @return 正则表达式字符串数组 + */ + private static String[] toRegexQuoteArray(final String[] stringArray) { + if (null == stringArray) { + return null; + } + final String[] regexQuoteArray = new String[stringArray.length]; + for (int index = 0; index < stringArray.length; index++) { + regexQuoteArray[index] = quote(stringArray[index]); + } + return regexQuoteArray; } + /** * 匹配任意类 *

@@ -294,7 +367,13 @@ public EventWatchBuilder(final ModuleEventWatcher moduleEventWatcher) { * @return IBuildingForClass */ public IBuildingForClass onAnyClass() { - return onClass("*"); + switch (patternType) { + case REGEX: + return onClass(".*"); + case WILDCARD: + default: + return onClass("*"); + } } /** @@ -308,7 +387,15 @@ public IBuildingForClass onAnyClass() { * @return IBuildingForClass */ public IBuildingForClass onClass(final Class clazz) { - return onClass(getJavaClassName(clazz)); + switch (patternType) { + case REGEX: { + return onClass(quote(getJavaClassName(clazz))); + } + case WILDCARD: + default: + return onClass(getJavaClassName(clazz)); + } + } /** @@ -397,12 +484,24 @@ public IBuildingForClass hasAnnotationTypes(final String... patterns) { @Override public IBuildingForClass hasInterfaceTypes(final Class... classes) { - return hasInterfaceTypes(getJavaClassNameArray(classes)); + switch (patternType) { + case REGEX: + return hasInterfaceTypes(toRegexQuoteArray(getJavaClassNameArray(classes))); + case WILDCARD: + default: + return hasInterfaceTypes(getJavaClassNameArray(classes)); + } } @Override public IBuildingForClass hasAnnotationTypes(final Class... classes) { - return hasAnnotationTypes(getJavaClassNameArray(classes)); + switch (patternType) { + case REGEX: + return hasAnnotationTypes(toRegexQuoteArray(getJavaClassNameArray(classes))); + case WILDCARD: + default: + return hasAnnotationTypes(getJavaClassNameArray(classes)); + } } @Override @@ -412,7 +511,13 @@ public IBuildingForBehavior onBehavior(final String pattern) { @Override public IBuildingForBehavior onAnyBehavior() { - return onBehavior("*"); + switch (patternType) { + case REGEX: + return onBehavior(".*"); + case WILDCARD: + default: + return onBehavior("*"); + } } } @@ -455,7 +560,13 @@ public IBuildingForBehavior withParameterTypes(final String... patterns) { @Override public IBuildingForBehavior withParameterTypes(final Class... classes) { - return withParameterTypes(getJavaClassNameArray(classes)); + switch (patternType) { + case REGEX: + return withParameterTypes(toRegexQuoteArray(getJavaClassNameArray(classes))); + case WILDCARD: + default: + return withParameterTypes(getJavaClassNameArray(classes)); + } } @Override @@ -466,7 +577,13 @@ public IBuildingForBehavior hasExceptionTypes(final String... patterns) { @Override public IBuildingForBehavior hasExceptionTypes(final Class... classes) { - return hasExceptionTypes(getJavaClassNameArray(classes)); + switch (patternType) { + case REGEX: + return hasExceptionTypes(toRegexQuoteArray(getJavaClassNameArray(classes))); + case WILDCARD: + default: + return hasExceptionTypes(getJavaClassNameArray(classes)); + } } @Override @@ -477,7 +594,13 @@ public IBuildingForBehavior hasAnnotationTypes(final String... patterns) { @Override public IBuildingForBehavior hasAnnotationTypes(final Class... classes) { - return hasAnnotationTypes(getJavaClassNameArray(classes)); + switch (patternType) { + case REGEX: + return hasAnnotationTypes(toRegexQuoteArray(getJavaClassNameArray(classes))); + case WILDCARD: + default: + return hasAnnotationTypes(getJavaClassNameArray(classes)); + } } @Override @@ -507,7 +630,7 @@ public IBuildingForWatching onWatching() { @Override public EventWatcher onWatch(final AdviceListener adviceListener) { - return build(new AdviceAdapterListener(adviceListener), null, BEFORE, RETURN, THROWS); + return build(new AdviceAdapterListener(adviceListener), null, BEFORE, RETURN, THROWS, IMMEDIATELY_RETURN, IMMEDIATELY_THROWS); } @Override @@ -574,7 +697,7 @@ public boolean doClassFilter(final int access, final String[] interfaceTypeJavaClassNameArray, final String[] annotationTypeJavaClassNameArray) { return (access & bfClass.withAccess) == bfClass.withAccess - && matching(javaClassName, bfClass.pattern) + && patternMatching(javaClassName, bfClass.pattern, patternType) && bfClass.hasInterfaceTypes.patternHas(interfaceTypeJavaClassNameArray) && bfClass.hasAnnotationTypes.patternHas(annotationTypeJavaClassNameArray); } @@ -593,7 +716,7 @@ public boolean doMethodFilter(final int access, // matching any behavior for (final BuildingForBehavior bfBehavior : bfClass.bfBehaviors) { if ((access & bfBehavior.withAccess) == bfBehavior.withAccess - && matching(javaMethodName, bfBehavior.pattern) + && patternMatching(javaMethodName, bfBehavior.pattern, patternType) && bfBehavior.withParameterTypes.patternWith(parameterTypeJavaClassNameArray) && bfBehavior.hasExceptionTypes.patternHas(throwsTypeJavaClassNameArray) && bfBehavior.hasAnnotationTypes.patternHas(annotationTypeJavaClassNameArray)) { @@ -783,7 +906,7 @@ boolean anyMatching(final String[] stringArray, return false; } for (final String string : stringArray) { - if (GaStringUtils.matching(string, pattern)) { + if (patternMatching(string, pattern, patternType)) { return true; } } @@ -823,7 +946,7 @@ boolean matchingWith(final String[] stringArray) { } // 长度相同则逐个位置比较,只要有一个位置不符,则判定不通过 for (int index = 0; index < length; index++) { - if (!GaStringUtils.matching(stringArray[index], patternArray[index])) { + if (!patternMatching(stringArray[index], patternArray[index], patternType)) { return false; } } diff --git a/sandbox-api/src/main/java/com/alibaba/jvm/sandbox/api/util/GaStringUtils.java b/sandbox-api/src/main/java/com/alibaba/jvm/sandbox/api/util/GaStringUtils.java index 34f605d7..35c9f2e5 100644 --- a/sandbox-api/src/main/java/com/alibaba/jvm/sandbox/api/util/GaStringUtils.java +++ b/sandbox-api/src/main/java/com/alibaba/jvm/sandbox/api/util/GaStringUtils.java @@ -21,10 +21,6 @@ public static String getJavaClassName(final Class clazz) { return clazz.isArray() ? clazz.getCanonicalName() : clazz.getName(); -// final String canonicalName = clazz.getCanonicalName(); -// return isEmpty(canonicalName) -// ? clazz.getName() -// : canonicalName; } /** @@ -58,19 +54,6 @@ public static boolean isEmpty(String string) { || string.isEmpty(); } -// /** -// * 比较两个字符串是否相等 -// * -// * @param target 目标字符串 -// * @param except 期待字符串 -// * @return TRUE:相等;FALSE:不相等 -// */ -// public static boolean isEquals(final String target, -// final String except) { -// return target == except -// || (null != target && target.equals(except)); -// } - /** * 通配符表达式匹配 *

diff --git a/sandbox-api/src/test/java/com/alibaba/jvm/sandbox/qatest/api/AdviceListenerTestCase.java b/sandbox-api/src/test/java/com/alibaba/jvm/sandbox/qatest/api/AdviceListenerTestCase.java new file mode 100644 index 00000000..7d59c16d --- /dev/null +++ b/sandbox-api/src/test/java/com/alibaba/jvm/sandbox/qatest/api/AdviceListenerTestCase.java @@ -0,0 +1,99 @@ +package com.alibaba.jvm.sandbox.qatest.api; + +import com.alibaba.jvm.sandbox.api.event.BeforeEvent; +import com.alibaba.jvm.sandbox.api.event.ReturnEvent; +import com.alibaba.jvm.sandbox.api.event.ThrowsEvent; +import com.alibaba.jvm.sandbox.api.listener.ext.Advice; +import com.alibaba.jvm.sandbox.api.listener.ext.AdviceListener; +import com.alibaba.jvm.sandbox.api.listener.ext.EventWatchBuilder; +import com.alibaba.jvm.sandbox.qatest.api.mock.MockForBuilderModuleEventWatcher; +import org.junit.Assert; +import org.junit.Test; + +public class AdviceListenerTestCase { + + + @Test + public void test$$AdviceListener$$onBefore$onReturn$onThrows() throws Throwable { + + final MockForBuilderModuleEventWatcher mockForBuilderModuleEventWatcher + = new MockForBuilderModuleEventWatcher(); + + final StringBuilder traceSB = new StringBuilder(); + new EventWatchBuilder(mockForBuilderModuleEventWatcher) + .onClass(String.class) + .onBehavior("toString") + .onWatch(new AdviceListener(){ + @Override + protected void before(Advice advice) throws Throwable { + traceSB.append("before;"); + } + + @Override + protected void afterReturning(Advice advice) throws Throwable { + traceSB.append("afterReturning;"); + } + + @Override + protected void afterThrowing(Advice advice) throws Throwable { + traceSB.append("afterThrowing;"); + } + }); + + { + mockForBuilderModuleEventWatcher.getEventListener().onEvent( + new BeforeEvent( + 10001, + 10001, + getClass().getClassLoader(), + "java.lang.String", + "toString", + "()Ljava/lang/String;", + this, + new Object[]{} + ) + ); + + mockForBuilderModuleEventWatcher.getEventListener().onEvent( + new ReturnEvent( + 10001, + 10001, + this + ) + ); + + Assert.assertEquals("before;afterReturning;", traceSB.toString()); + traceSB.delete(0, traceSB.length()); + + } + + { + mockForBuilderModuleEventWatcher.getEventListener().onEvent( + new BeforeEvent( + 10001, + 10001, + getClass().getClassLoader(), + "java.lang.String", + "toString", + "()Ljava/lang/String;", + this, + new Object[]{} + ) + ); + + mockForBuilderModuleEventWatcher.getEventListener().onEvent( + new ThrowsEvent( + 10001, + 10001, + new RuntimeException() + ) + ); + + Assert.assertEquals("before;afterThrowing;", traceSB.toString()); + traceSB.delete(0, traceSB.length()); + + } + + } + +} diff --git a/sandbox-api/src/test/java/com/alibaba/jvm/sandbox/qatest/api/EventWatchBuilderTestCase.java b/sandbox-api/src/test/java/com/alibaba/jvm/sandbox/qatest/api/EventWatchBuilderTestCase.java new file mode 100644 index 00000000..ac88c617 --- /dev/null +++ b/sandbox-api/src/test/java/com/alibaba/jvm/sandbox/qatest/api/EventWatchBuilderTestCase.java @@ -0,0 +1,162 @@ +package com.alibaba.jvm.sandbox.qatest.api; + +import com.alibaba.jvm.sandbox.api.event.Event; +import com.alibaba.jvm.sandbox.api.filter.AccessFlags; +import com.alibaba.jvm.sandbox.api.filter.Filter; +import com.alibaba.jvm.sandbox.api.listener.ext.AdviceListener; +import com.alibaba.jvm.sandbox.api.listener.ext.EventWatchBuilder; +import com.alibaba.jvm.sandbox.qatest.api.mock.MockForBuilderModuleEventWatcher; +import com.alibaba.jvm.sandbox.qatest.api.mock.MockForBuilderProgress; +import com.alibaba.jvm.sandbox.qatest.api.util.ApiQaArrayUtils; +import org.junit.Assert; +import org.junit.Test; + +import static com.alibaba.jvm.sandbox.api.listener.ext.EventWatchBuilder.PatternType.REGEX; + +public class EventWatchBuilderTestCase { + + + @Test + public void test$$EventWatchBuilder$$normal$$all() { + + final MockForBuilderModuleEventWatcher mockForBuilderModuleEventWatcher + = new MockForBuilderModuleEventWatcher(); + final MockForBuilderProgress mockForBuilderProgress + = new MockForBuilderProgress(); + new EventWatchBuilder(mockForBuilderModuleEventWatcher) + .onClass(String.class) + .onBehavior("toString") + .onWatching() + .withCall() + .withLine() + .withProgress(mockForBuilderProgress) + .onWatch(new AdviceListener()); + + Assert.assertEquals(7, mockForBuilderModuleEventWatcher.getEventTypeArray().length); + Assert.assertTrue(ApiQaArrayUtils.has(Event.Type.RETURN, mockForBuilderModuleEventWatcher.getEventTypeArray())); + Assert.assertTrue(ApiQaArrayUtils.has(Event.Type.THROWS, mockForBuilderModuleEventWatcher.getEventTypeArray())); + Assert.assertTrue(ApiQaArrayUtils.has(Event.Type.BEFORE, mockForBuilderModuleEventWatcher.getEventTypeArray())); + Assert.assertTrue(ApiQaArrayUtils.has(Event.Type.CALL_BEFORE, mockForBuilderModuleEventWatcher.getEventTypeArray())); + Assert.assertTrue(ApiQaArrayUtils.has(Event.Type.CALL_THROWS, mockForBuilderModuleEventWatcher.getEventTypeArray())); + Assert.assertTrue(ApiQaArrayUtils.has(Event.Type.CALL_RETURN, mockForBuilderModuleEventWatcher.getEventTypeArray())); + Assert.assertTrue(ApiQaArrayUtils.has(Event.Type.LINE, mockForBuilderModuleEventWatcher.getEventTypeArray())); + Assert.assertEquals(1, mockForBuilderModuleEventWatcher.getEventWatchCondition().getOrFilterArray().length); + } + + @Test + public void test$$EventWatchBuilder$$normal$$CallOnly() { + + final MockForBuilderModuleEventWatcher mockForBuilderModuleEventWatcher + = new MockForBuilderModuleEventWatcher(); + final MockForBuilderProgress mockForBuilderProgress + = new MockForBuilderProgress(); + new EventWatchBuilder(mockForBuilderModuleEventWatcher) + .onClass(String.class) + .onBehavior("toString") + .onWatching() + .withCall() + .withProgress(mockForBuilderProgress) + .onWatch(new AdviceListener()); + + Assert.assertEquals(6, mockForBuilderModuleEventWatcher.getEventTypeArray().length); + Assert.assertTrue(ApiQaArrayUtils.has(Event.Type.RETURN, mockForBuilderModuleEventWatcher.getEventTypeArray())); + Assert.assertTrue(ApiQaArrayUtils.has(Event.Type.THROWS, mockForBuilderModuleEventWatcher.getEventTypeArray())); + Assert.assertTrue(ApiQaArrayUtils.has(Event.Type.BEFORE, mockForBuilderModuleEventWatcher.getEventTypeArray())); + Assert.assertTrue(ApiQaArrayUtils.has(Event.Type.CALL_BEFORE, mockForBuilderModuleEventWatcher.getEventTypeArray())); + Assert.assertTrue(ApiQaArrayUtils.has(Event.Type.CALL_THROWS, mockForBuilderModuleEventWatcher.getEventTypeArray())); + Assert.assertTrue(ApiQaArrayUtils.has(Event.Type.CALL_RETURN, mockForBuilderModuleEventWatcher.getEventTypeArray())); + Assert.assertFalse(ApiQaArrayUtils.has(Event.Type.LINE, mockForBuilderModuleEventWatcher.getEventTypeArray())); + + } + + @Test + public void test$$EventWatchBuilder$$normal$$LineOnly() { + + final MockForBuilderModuleEventWatcher mockForBuilderModuleEventWatcher + = new MockForBuilderModuleEventWatcher(); + final MockForBuilderProgress mockForBuilderProgress + = new MockForBuilderProgress(); + new EventWatchBuilder(mockForBuilderModuleEventWatcher) + .onClass(String.class) + .onBehavior("toString") + .onWatching() + .withLine() + .withProgress(mockForBuilderProgress) + .onWatch(new AdviceListener()); + + Assert.assertEquals(4, mockForBuilderModuleEventWatcher.getEventTypeArray().length); + Assert.assertTrue(ApiQaArrayUtils.has(Event.Type.RETURN, mockForBuilderModuleEventWatcher.getEventTypeArray())); + Assert.assertTrue(ApiQaArrayUtils.has(Event.Type.THROWS, mockForBuilderModuleEventWatcher.getEventTypeArray())); + Assert.assertTrue(ApiQaArrayUtils.has(Event.Type.BEFORE, mockForBuilderModuleEventWatcher.getEventTypeArray())); + Assert.assertFalse(ApiQaArrayUtils.has(Event.Type.CALL_BEFORE, mockForBuilderModuleEventWatcher.getEventTypeArray())); + Assert.assertFalse(ApiQaArrayUtils.has(Event.Type.CALL_THROWS, mockForBuilderModuleEventWatcher.getEventTypeArray())); + Assert.assertFalse(ApiQaArrayUtils.has(Event.Type.CALL_RETURN, mockForBuilderModuleEventWatcher.getEventTypeArray())); + Assert.assertTrue(ApiQaArrayUtils.has(Event.Type.LINE, mockForBuilderModuleEventWatcher.getEventTypeArray())); + + } + + @Test + public void test$$EventWatchBuilder$$regex() { + + final MockForBuilderModuleEventWatcher mockForBuilderModuleEventWatcher + = new MockForBuilderModuleEventWatcher(); + new EventWatchBuilder(mockForBuilderModuleEventWatcher, REGEX) + .onClass("java\\.lang\\.String") + .onBehavior("") + .withParameterTypes("byte\\[\\]") + .hasAnnotationTypes(".*Override") + .hasExceptionTypes(".*Exception") + .onWatch(new AdviceListener()); + Assert.assertEquals(1, mockForBuilderModuleEventWatcher.getEventWatchCondition().getOrFilterArray().length); + final Filter filter = mockForBuilderModuleEventWatcher.getEventWatchCondition().getOrFilterArray()[0]; + Assert.assertTrue(filter.doClassFilter( + AccessFlags.ACF_PUBLIC, + String.class.getName(), + null, + null, + null + )); + + Assert.assertFalse(filter.doClassFilter( + AccessFlags.ACF_PUBLIC, + Integer.class.getName(), + null, + null, + null + )); + + Assert.assertTrue(filter.doMethodFilter( + AccessFlags.ACF_PUBLIC, + "", + new String[]{byte[].class.getCanonicalName()}, + new String[]{RuntimeException.class.getName(), IllegalAccessException.class.getName()}, + new String[]{Override.class.getName()} + )); + + Assert.assertFalse(filter.doMethodFilter( + AccessFlags.ACF_PUBLIC, + "", + null, + null, + null + )); + + Assert.assertFalse(filter.doMethodFilter( + AccessFlags.ACF_PUBLIC, + "", + new String[]{short[].class.getCanonicalName()}, + null, + null + )); + + Assert.assertFalse(filter.doMethodFilter( + AccessFlags.ACF_PUBLIC, + "", + new String[]{byte[].class.getCanonicalName()}, + new String[]{Integer.class.getName()}, + null + )); + + } + +} diff --git a/sandbox-api/src/test/java/com/alibaba/jvm/sandbox/qatest/api/mock/MockForBuilderModuleEventWatcher.java b/sandbox-api/src/test/java/com/alibaba/jvm/sandbox/qatest/api/mock/MockForBuilderModuleEventWatcher.java new file mode 100644 index 00000000..37d0e4f8 --- /dev/null +++ b/sandbox-api/src/test/java/com/alibaba/jvm/sandbox/qatest/api/mock/MockForBuilderModuleEventWatcher.java @@ -0,0 +1,79 @@ +package com.alibaba.jvm.sandbox.qatest.api.mock; + +import com.alibaba.jvm.sandbox.api.event.Event; +import com.alibaba.jvm.sandbox.api.filter.Filter; +import com.alibaba.jvm.sandbox.api.listener.EventListener; +import com.alibaba.jvm.sandbox.api.listener.ext.EventWatchCondition; +import com.alibaba.jvm.sandbox.api.resource.ModuleEventWatcher; + +import java.util.concurrent.atomic.AtomicReference; + +public class MockForBuilderModuleEventWatcher implements ModuleEventWatcher { + + private final AtomicReference eventWatchConditionRef + = new AtomicReference(); + + private final AtomicReference eventListenerRef + = new AtomicReference(); + + private final AtomicReference progressRef + = new AtomicReference(); + + private final AtomicReference eventTypeArrayRef + = new AtomicReference(); + + public EventWatchCondition getEventWatchCondition() { + return eventWatchConditionRef.get(); + } + + public EventListener getEventListener() { + return eventListenerRef.get(); + } + + public Progress getProgress() { + return progressRef.get(); + } + + public Event.Type[] getEventTypeArray() { + return eventTypeArrayRef.get(); + } + + @Override + public int watch(Filter filter, EventListener listener, Progress progress, Event.Type... eventType) { + return 0; + } + + @Override + public int watch(Filter filter, EventListener listener, Event.Type... eventType) { + return 0; + } + + @Override + public int watch(EventWatchCondition condition, EventListener listener, Progress progress, Event.Type... eventType) { + eventWatchConditionRef.set(condition); + eventListenerRef.set(listener); + progressRef.set(progress); + eventTypeArrayRef.set(eventType); + return 0; + } + + @Override + public void delete(int watcherId, Progress progress) { + + } + + @Override + public void delete(int watcherId) { + + } + + @Override + public void watching(Filter filter, EventListener listener, Progress wProgress, WatchCallback watchCb, Progress dProgress, Event.Type... eventType) throws Throwable { + + } + + @Override + public void watching(Filter filter, EventListener listener, WatchCallback watchCb, Event.Type... eventType) throws Throwable { + + } +} diff --git a/sandbox-api/src/test/java/com/alibaba/jvm/sandbox/qatest/api/mock/MockForBuilderProgress.java b/sandbox-api/src/test/java/com/alibaba/jvm/sandbox/qatest/api/mock/MockForBuilderProgress.java new file mode 100644 index 00000000..94f47f57 --- /dev/null +++ b/sandbox-api/src/test/java/com/alibaba/jvm/sandbox/qatest/api/mock/MockForBuilderProgress.java @@ -0,0 +1,40 @@ +package com.alibaba.jvm.sandbox.qatest.api.mock; + +import com.alibaba.jvm.sandbox.api.resource.ModuleEventWatcher; + +import java.util.concurrent.atomic.AtomicInteger; + +public class MockForBuilderProgress implements ModuleEventWatcher.Progress { + + private final AtomicInteger onSuccessCntRef = new AtomicInteger(); + private final AtomicInteger onFailedCntRef = new AtomicInteger(); + + @Override + public void begin(int total) { + + } + + @Override + public void progressOnSuccess(Class clazz, int index) { + onSuccessCntRef.incrementAndGet(); + } + + @Override + public void progressOnFailed(Class clazz, int index, Throwable cause) { + onFailedCntRef.incrementAndGet(); + } + + @Override + public void finish(int cCnt, int mCnt) { + + } + + public int cntOnSuccess() { + return onSuccessCntRef.get(); + } + + public int cntOnFailed() { + return onFailedCntRef.get(); + } + +} \ No newline at end of file diff --git a/sandbox-api/src/test/java/com/alibaba/jvm/sandbox/qatest/api/util/ApiQaArrayUtils.java b/sandbox-api/src/test/java/com/alibaba/jvm/sandbox/qatest/api/util/ApiQaArrayUtils.java new file mode 100644 index 00000000..28ccb540 --- /dev/null +++ b/sandbox-api/src/test/java/com/alibaba/jvm/sandbox/qatest/api/util/ApiQaArrayUtils.java @@ -0,0 +1,14 @@ +package com.alibaba.jvm.sandbox.qatest.api.util; + +public class ApiQaArrayUtils { + + public static boolean has(T target, T... targetArray) { + for(T t : targetArray) { + if(target.equals(t)) { + return true; + } + } + return false; + } + +} diff --git a/sandbox-api/src/test/resources/logback.xml b/sandbox-api/src/test/resources/logback.xml new file mode 100755 index 00000000..c7f37818 --- /dev/null +++ b/sandbox-api/src/test/resources/logback.xml @@ -0,0 +1,14 @@ + + + + + + %d{yyyy-MM-dd HH:mm:ss} %5level %msg%n   + + + + + + + + \ No newline at end of file diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/LoadCompleted.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/LoadCompleted.class new file mode 100644 index 0000000000000000000000000000000000000000..e0c8a17b73569217b51938bc8461a4c6367bbb4d GIT binary patch literal 165 zcmY+8Jqp4=6olu+n5ZC#r!Y+(cm=^qun_Fu{vf+-vO#0;Y!)8CLy4PCo8c?wW9I#N zz5r}7FHx455tbo}*~O*{wzq~b*;Hr3;uP;!ZTBu%!us%Asl5zBsB~;tf>WY|{m}4D nTBG8FrE~lz5LTnYLD~x+mAASt2!t#h0Vq$K$Vb97WrpGlVQ(s3 literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/ModuleLifecycle.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/ModuleLifecycle.class new file mode 100644 index 0000000000000000000000000000000000000000..bca614917987172fcd26a1b444c21066198ae89a GIT binary patch literal 346 zcmaKnOHRW;3_$HRWJ>uJ!6B%S7>OGoL{~*D`0PCs0~1ZgQJRLr(O7T*4ux>KK~RZ> zW&6p`vOmAxKLFqy4h`%X*f(&1kV~2i6$rzV=>x*}YUR0ZgQSIl3BpLyeTwS=EiZf< zI$qORBX68kxRqt&c^0Db<7+9Fk>}x&{i~0BR#Ha@r(P;cF*tH$%dWBuN`;e^r8?L@ z3c{q9Y^3yLZ(PZ~MVS7#pg;dosycGZ`p40ae)rtS3%STS0>VIJsQ+gfLIzvf<$b5w UC>d>#?F};iP1M}c4FlNy2EQ>+8UO$Q literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/ProcessControlException$State.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/ProcessControlException$State.class new file mode 100644 index 0000000000000000000000000000000000000000..a6be8d6900f4361f92bbb66ae138e83e609b9a36 GIT binary patch literal 1358 zcmbtT`%lwQ6#g#j)~%F>1yLTpr*5EBUOuvgK%mAYV>9c3ESi|RQn93KN!JnnEFFm$ zjfS87qm1X4MYgEFur|3T=brDL?>pz7`}5b=9{?8dJOv3^1+$owF(Kozf?>>yMNeWx zp`b1hPm&lDb|HyzVHagAF=!Q|x?L%~D{O5Un}zkNQLHh<&5(ySgIe%BJJ@h}vuQUO zaz)E;=-hScyw3H5qlVt(-d^25*7>2MzYcuMZZR(bUeG%YSitZ%Ihxe z$Pq>PJwrKDJm5!Mce%H(n_=L1`?+ji^0lIGad(FYj^OGLN*-?zul6??Ln7~ZPPoc2 z@eeJ9><)tzesHKCDbv~ac-RUkQ!FC_$-L!u4sUg(HoR6N-$xOvbnS}iw*t$4>4<*K z{AWn!MekHx72`XhVi_wko-(|+^t`E<#xoVSaYw}nG!FAUalY5R!9XbT|xxIO7|T^FDTcQ{Lg^&YRRoF(8C<2S1qkg3f%x%k{(%74~$NU zE(ruuxQ6Rsm?ZBmS@9`tu+JDcL+m4Y3{$iwqF9CS)0pYtmoX6SDw;I=1@SXT0zc4$ zzd<|dISMy%D~eM?2_+a85ThTEXXj>4k@ysayXh{D%OsDa<6eYGBZ>P+cZAqfi1^mO zL8@tT>=elpq#{R=B4;pi)Oh3!CB73b)}|S*No@?8wRjst<_VY(a9*z#rQF33-cmgl a9-=}@&&eNeU)4!IrQT_~$oLsksErqmR9XTKpkidnB&2ePuO z%d57fYL2sDnXYXa#RFB_b#==e@i+?%Nn3MvEwj#$F7GJ&ifkz6mb_Bi(NvdSXLP5u zWm>it@D%qo(`8_r42cK2sk`$GtJ!m8@ULiYogubh)v4l+vTkb2dySfASCyJUo^;t# z6=Pkob$$+G_<--BQ!oRbZ5f> z3Cn9agK#_}D#@p*axSNZrmvaCd(Zn(;Jr(E(tf+To5W6{7^2x6O|WfCbA!9}Fq=C^ z4=8J*s{Fl486pe0OPz0Z!zh`gsJ^S(ib~_`ZHa8oP*}6}Y*ky-`P2vhbBo8hiiivb z_;OD~8eJkTqC-R{E-_4<;h!O5j^i`v7I7aP3|%Ls9FK-!?hMrajq$oqb4pi=)mN3} zH>IVe;?vUOYO%aQ&g!$u%ImdeCno5NAkfz%O65^)WTkm|-cAM6-bN2447xC6Jx7dU z$ty)i^G9Hx$&R3xR)Kbql|&!?fMGul{kTjg&cpecXK@7{P0bB>4LZlTM>;}88aPB$ z${!*ojU6I>qS1pm#ayAtt4Lvp7>6mxYo4CujCF@M0)92PpvOY3FH2 d*lFa8CS)YYIf79yxjZh=E)cSvnkqi({{spDbz1-c literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/ProcessController.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/ProcessController.class new file mode 100644 index 0000000000000000000000000000000000000000..e86fe45674242a41e05a2c5a52e6aa8119984f80 GIT binary patch literal 1876 zcmb_cTT|0O6#ll9-b@9GARyq4OF+vwAjvwgV`{ig)zs_qZ>NURw{f?RV=Q3&YYC_k);|s!(6UxRAfa{OG-(R505Ky zRnhlK#)+&Psq&_2lzFwfX6Tk_Xiiv)Vaf-&qgn^qecdp5BPMgqb<2rh2&GkBwU!uK zl4IKp!8K!#GqmMYo#$(n5;u!VNh3=lXOtCfTQOC!Zy1Btfm&sdZ$MV#CeiFLxm7cD zSMCg5$=soGtjL<8@5>vdLteI0f>Ow^*MdURIYZ3Jg@|-m2d43<>VfTX!xqK4NWeyp z+V1uIx?JEFUJRp6OfQ#|Jew}R%CpT^B!*$1<*LX?x~w(o727guW|_ZHMRmHp9YG>b z39Te_AR*y7dL_(bkYV;Ox+;tp5>iMDu$K~+#OgNMB(#fRxqh(1FnN7!;>XbLuO_8o zOIT>`jrxII7jJbJu79c1C_`Ho{ca4cjaka-IycuerCR0GM2SMC_`Z<;m|b7byw0u` zGr3)c)D2qPcM-MwyX1#|h$gZ0-xfA@w!Adk^Beh$*R+}Z&sSrbUb8qoe*yG~ zMxa%n=mnZ1pnnhv8artx)68gY9X|*ALW=*qRCho(?$R!b9`urz2%dF< zzanrE9HV2PpI*@c4?rL8*>=zgyP$8#+T&C|zezFWNFS%PV3!LiPY@ QzDRS7JSM0D3oE^U026DzsQ>@~ literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/annotation/IncludeBootstrap.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/annotation/IncludeBootstrap.class new file mode 100644 index 0000000000000000000000000000000000000000..9c5e5fd740d3a5f47f6ba77dca8583ceed420307 GIT binary patch literal 461 zcmaixJxc>Y5Qg8?#MAf{1q%y_Sfq5p#=gn%C*o`P7-U52<}Z#UfS9p5xPiCE0e&dkHR%)1|-Z|?xkupePJLNmgiLgU_-dCFJDvcf^nrM4XMrT3u-IZaN- zRFT5rpmf1x{Adc3SnfFI0|nz

T9PW3(kV()2UXG36r;7Yg-?Y$@6&%ek)Qj9rMQ z6Bf7@KlQr`$IICP2SMdoA>02TeQ!-V6)+k++{V3|zg2tgg>w^lDDZjeGfmbcl#m`* znJ&l;6aT7dVivdi?UO=t?!sL%<}@g@=B))|=H|5(6jmfwuUX~9t00k@zA3IPl6|r3I#t(y9(lIc6X>*vf0vPi~VaJ`~m(b zaq7VqtazAAX6E4y^XB98?H#}w_9N^@XhzsmXbj3~obt7?tZ>kEsjV^|RLPYk@7bT` zG$Dn5 zI%0uq@l&s(aJ-!Da}ZRX6|(&g(krb=rvgU(hr76Y`?qS>z3|us&ICSB%R-Yi2_>ZS zNufQtEGb_#jm+Y9zl>67&TY6)a!!LnYu;LLX6{~FL19H=RsIEXt9_q!tVwQ3H!|cq?{P>pn_T%&I9l#|{0vrYC1UOb`jq|EV_{LaPXpcRU^|O9TH7T5imGdU! zCsUf(^0jlhCvS3BDxBRe8Ewf;HT@2BM8%Z-l|r*7TZ!bwW^Q0PW9OsAoCR(~&!d6D z`DQj`FQ_~#WbYqjlv|T51PsE*`)GLgx9ZT%xGez9{ z2VZ>iM>*czb}-I3BYnB|?(W%p?mc&tpTE9+2e5$025w_Iha6@M7?_o2P8wU9JJJ-S zDe9Ql;V|Tnc#E&sc@$LwUK1h1SVe9*b?zTHiGwAEfivtjZwQ8w1adbHJ^z3}gA%kQ z;=`cUK_xaeMC3ALVjdod`0x8W)g$4?l7tSM4dKTx!jPXbjJ`>*oS`zyp6|sg3?F98 zYvNrHijs^;592rtToFa(8UrgcWIewX zyccqrcMoYu;uQ~R9I>3;#%xlIZvAsTbEZANCQcaoI|Tc@-lV>AyFoK_#il2l97`8@l;mb-ErJ9aM42AzwDDc$Y z=`r=Ab(~rDeG#fxBxqcjwbJI!>k`BKIW+u}j>fhq-(@c)EXg-DbIu#MLEmtWzW5A@ zN>WoaEY((?1XrFkSDs{7o|Gq_0;36CB0EN_AJ8ZhP_)MQESwnPNWxPoVx#0sYI90jbxBE;Jc37w78 zis&$bt5kxFu2Gayk!++-MY0u5MY5T+iex((70HHl70H⪙=7zb{cv~8DtK_{(|gy yVb}ghixgzBIYm>Ut6Qq5$qw+WD1%h(6lG9jBZN-jmbyKKMRlLi&-E@AR;}MTAWxY9 literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/event/CallBeforeEvent.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/event/CallBeforeEvent.class new file mode 100644 index 0000000000000000000000000000000000000000..79e59670bd2b9c6e61f588aa3ccd9559771303a5 GIT binary patch literal 947 zcmb7C+iuf95IvhZc9I%O(sFUyLIb527h>8xQXy!R3QJazXw_G=c9ycOvySXEz_;)f zAVo+#@Bw@jVs?u_f`_IrGiPRJX3w74A3wi+2e5;!DwdSDSmn zxX(~ar4k3{gIMGYEMzEW@0G@l=#-CnkaBer9FB6SPM$JYiVp<2z9(kV^=ns`69;cLPL|MYqW1dSL|4v$?cd}sUL`gOXcq(Ha^Wbzm z2nw$HarPnLLm7y%P@|yB({xX~&2rJxF+HF<%(FxkMc8MkNHxyRgod@l>^x7zzSOra z{L|LfLO57;v5pNFbJ%oIMa{)5To>20xek|M`^tnE9$(%Q8kXh(4t$13m$#VW)uWF? zy{il7hKknOO?goWQg62VB8uMZ_4Z%A?lH8d(DLt0lCeVzzgmyp^ZJy`(V`z(pT4$COzk;00GvW8WL%!Tyi_>v)gV48rVnl+(`9u`H!?d;1Sob zu45Bb9ck1UPUkkjaPq&#j2*>>HEb~)|1XIT?{%L?;8<+v5O>q5H+YPRNM@$8X=3=B*pwuwe|}3hQte@ u1hR^w2rNPUuN-AN)04y(2&sJ?3v`dl7AZ^6ED}nPrV_J^lxx_ys(b^ke6-jA literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/event/CallThrowsEvent.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/event/CallThrowsEvent.class new file mode 100644 index 0000000000000000000000000000000000000000..412cd19ccf13db0c47400f25fa0b6387de5b998e GIT binary patch literal 778 zcmb7C(MlUZ6g`uySrb>IF>Oqfwkm=ej7#;=QY=B~!eXHb_EBaxgN|-ymfcNiKTDw$ zeCP-Cqe}0r1))9|cVX^1ckh`wd++@IbN36t9@fjK<3$BCcv*&phK&^)O@@W+BGKQD zu0s)LQY(gvWp0m0(ZHBY zj|?X_DSZr=>>IX(`|a5tw^V2$q93|%;eCDYm*(ST5UC|R;a3uS7;wL F{{pl_%BKJT literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/event/Event$Type.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/event/Event$Type.class new file mode 100644 index 0000000000000000000000000000000000000000..f9d632f2bb14fe5a345ef3064cf9bb77f67f136d GIT binary patch literal 1577 zcmb7DYflqV5Iswm?si$E)F+52FKJO(QN%|PTX2!;LQS_~Hky!aU2#dfHKir^ue2s& zFd9DlgZyZmxox#XKiD>zvuEzynK^Us{r>at8-N>l8i94YADny7@4Z&YPCA)ebr4Y)2}S zn`!HrNkxnoT{pVtmg+2VE}rOmv%FGyMZ+4f{J`6&mkVAs?-okrQAF14YYEG7YscMl zjglK|8+NVg2iwU+w@t>ZO3^KCx>cXkw`$0NTc%R6zw^`77yZDmElD`@kMfzsCLKrZ zjZdm0w!a;?wR)8@h2p%RE*49z&8d#mW>7CLcGve3-2=_8)T>2r)#s^b;)=}jJakO+ zosR3Uu&#hE%GGXen2u}6>hwr%>Nt;49T(YLVl&2OoXrHANj6h#E@M=}i9d(IiX`+F zOO=3nI~7lKsLd93ykd>|pZ?FTB;4wpw0Jnlj)cEY{&@XlYL1@ZFuivzHN;8)LJ}j8 z^avzL0!fuX5+;ze2_$&}Ng)s&=Fw6{84)Bf0|{4%jT7=uYe4#ho+E_b6Qi+{4U4rA ziob^0R{T7Agjb8nGoR6W1exP|j>Q|~(VJ1YjybVTM?z6taSkE+1Io;mkpqN3h~>_5 zf3_=_=hksc#4JF?Z7j4J`9VVXclZUe6H`J5P(LCfh$aitCy3rFNWUN_!h#G45>*5l z6eOk!a#D~}(PrFf!OpY-&kA-f+Ke2EM!r(zP=nrzBR9}zJG~9`+fKNF0ozd;7_=R= zfs?iqCD&;J@|`6h=aBso5-V>GdIlPOkD;F~<1h_rnuauwRix<^Y#@i1aIk|d>|=yR Y*PO;3+@(D|xQ7db8fB8Pgpt(HFA{`QyZ`_I literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/event/Event.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/event/Event.class new file mode 100644 index 0000000000000000000000000000000000000000..b9297c594ce5313c1392bd5b09c3adb452f23c24 GIT binary patch literal 545 zcmb7>-%7(U6vn@Fb#=A6Kf29b3WD2|1-(^77!HJ@7mnViUC@j!9c@?ivAht$3m?FT z5>JBgsHmkjkQrB!~-a6bGWItu90X|kXw zOxzDF$3CB8>wpERg4r_n@<6mh02BezY;LI;j<8McV7-wb{Mw5)_> literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/event/ImmediatelyReturnEvent.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/event/ImmediatelyReturnEvent.class new file mode 100644 index 0000000000000000000000000000000000000000..142201af2df0626da7461ca9bac4e7285c6b99fd GIT binary patch literal 790 zcmbVK*-FDe6g^XGV;8r&RIMurE~o*YL`4*h5Qqx3Dn7|19dv3kDM?!Nv-Cyq!4L4G z#5*b|sJP6-+b*W^s!BCpDZKuv#-1NCR zHxJyp@RGH;V}|s0SQ8B0j#Og58Mq>v(?t7OXtFc!$&t!4x{^&XENM$(E2MZ~irvaGns6 jP(UXY(q0#NIy;YU^iZ=DdI_aaM44=kvidNDkW8lSs_Xo^9-r7%d!eovO*Y~vMl>dG=%Ai;KX!J zqwrF=o?MzfAf(sBnk01CDv&!DzAGa~zYz*{SQXxZh?K@}#&mM3V#1VN3Wa?2^m2qs<2xJjjRnQ2}rG}a0 zy*EP7mn{>r`{6}Ym77X8S^B!loSxReKpsOF&Z8M4goXdMOep^x`e{T1qlDR?Ltglp zaIWh-NBULdtss!mx+mgTGR*~Rd%Ln>tvMC@=-AoX+dbST%>9D1)TD1`z_EVJxYL_Y>s2c7|tVcb;! literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/event/InvokeEvent.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/event/InvokeEvent.class new file mode 100644 index 0000000000000000000000000000000000000000..0ced220528261ffd777e034408bc879c8abab022 GIT binary patch literal 709 zcmb7CO;5r=5Pe&U1+4PnC-PxTOavk{>Jej1h$c;l7YX+*Y~mucq=iO*mIq?u!5`p{ zGS03ZxPh0Md9yR`&1~lD`{NV9C8`-Dagc_ILuHB)h$wQ049sOnNk0yr zg@PN`(wDOv3uOkg_c|2}w(I*M?2LI7iHPB<=DOWMFmd=;dfemAD4sYG_lI8a;_#_- zL@fN7bEoX7VrbX<#MKFg#FgzzUp&kwo(Ox~8&jsx4F-JN=b=>iFKN!6BuP1I=(u`x zt=1-)nI5^dM&r_e44KDZ9uCC4R3qh@$L literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/event/LineEvent.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/event/LineEvent.class new file mode 100644 index 0000000000000000000000000000000000000000..adcc939ce60bb811788462944fdf3f87be5653cb GIT binary patch literal 711 zcmb7CO-sW-5PjRmrirn&tsm94YC%w|HlRmEgrX1#y;ypcO}pUMG$~12^k*rE;K3i@ zj}m92)T1_moi}gi%?va9@%i=+-~@F8C9IfOz^VZaYdY3-lo?E42BJL~dLm+A4nyW# z26B8sVBc|^gD!*C3j2Z~@6IAS-1CVkx?zv|T^>p0|B%}FPR0z!ZZ90#+?O8rxILH- z?U)CBFMP21NZMj5g0Zadg5BDdbydPIp9;S zW79$nTNbj|wvd6&a5zU*YVz-BCut?=QpXO%(ch9Jc(?O7qL#I9V>v+}qL$C&SkQ1Z z*J)odH2*Q9-()nTQ(DP<8nwT@f3}P|J&Xl>alU=U-HcT4vg*?gl?eFl3) zs!@AE`iZC%7U|3(P3Ia3)(Mwkk=OW^V2K#@<>}Wcp+d`qQVCM!(u51-rBFnbtVvNN JY@l+v@dXe5vAO^N literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/event/ReturnEvent.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/event/ReturnEvent.class new file mode 100644 index 0000000000000000000000000000000000000000..03c9b1f605f36cf3acfcf65e29abb72f62354f20 GIT binary patch literal 1307 zcmb7EVNVl55PeHqj+R29f>@zi5u~)x13{(M7zx(ol7b1XB#j@)wq5JN^{%nfLb1?0x(G@e6?acpSzJ%tbJa`7k25CzlHv(nDC( zkcl9Rr3gY;){xVnGYmSl15x)G;-v%L<+{b~rv6gJ3bgygv`zmh!&KTZ{yea_#}M3d z8iFBKGHtQbY1M>V;WdjQ@sd;L)*g3FxjqjD{kNvapqJ`SOXrqZ<29}ybX&T|?MBTx z(s|p|MOWCqzAOBWYZs+YOu}u~sSD3D8Vt-}7&7gyb1004hE*a_dDkY$sA1c}-Lkmn z2|_8RF9D+f=45{1pI7u%_1x8}F^rUbUO(LCZFPC2_$oDlAyRfaZe6@ErA}jg7tP5Y zM5&F*C`PdsMHC}ZtRu-Vd(j@lvP6?xn{KnyB6W&KbmiB=>r&;XxD+@kqjKFf3oG9hW+9sQxH*HRKtV{tt1{3Yxs#V&&ED4#S$9ysP9E zQkZYyQbYFm^Y5w;xzvGbl-UQb_=ijLg!Cnu`hIfid6qg zt|YN=N!qwWFLjunFT=R(IC%r)k0M5Pj8^*y(hrDbre{vT&M=T!K1JZYIyg>t6algc zgmIJnX~b!j>80QrCTK;;n8bA|D7`8229zh^WUkEWft^C54+N0U%p|iCDiI{C> F_zA4hKB)iz literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/event/ThrowsEvent.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/event/ThrowsEvent.class new file mode 100644 index 0000000000000000000000000000000000000000..0785487191b2909109a17a7cdd55cfdfba3ba96c GIT binary patch literal 1341 zcmb7EZBNrs6n-w-C>!H#fI4705oBzz@}@Fpj09(BG9+;eX7K~L>*^?U?b3D=e-J-F z6N1sG-~CbQxh=4LAj-1j?3~kk&hy;ooc7o6uRj2+As@ya%tbJW`7k1QD8dB^sR1lX zNJo&tQUoC^OUO!)8N%+NZGGTXLt~gM9`QDp4Q|%u@?|>D(Em&~b@w^LR7z2SdX-nXeAI5p4mWF6 z>qO>FUDn!~>H1Whg7AqreKZ2C)spj0 z(z3}CMyGhMdZekYgvU`l!KQ%8F)a5qksF;?yb*Z|E??L ziqNG#ltHty5AJV-A%!koa0R0+_7QYA?F(iaSzBm7g)3eZhJAfi#48fFM4 zOAssAq@5S^HhhpPdO6G>;nB-^LT$*^6=~=IZST9X8&+r^mC@qGz zNV6T+7z?3W`W)A@rnX_qV!hJmlFgUOD+W#YjM2=S8m1?#pBP#~v)q$6#56fNGRJi% zqT$3PRUuX7VHoAPo$xtB<3*gt#YuKdhtHa8J>>AY^n1k4tT)z#o1ENd3qXTA9emA*5AcR5v_FNZ`b@eZ8?vM3x%Q9 zAJ9dsvuwQzBRduyyBG2NXu;1o!_ois(QpfoHQYpls)-7E!qd4v2^LXU$euoK(~Z>W z`ZVle0}Y}kk%AU>(f)_k3U5+etMC?ar^4IB-3nhK-l_0q;wu%tN_?%t*NJabc$avu z!uwQ>7L&6w+Vg-WKP0kgc7;xL_#Mh{{~KywWKNI19f*f=K>HrjZavx^)Kg~T4(<|> qPgWJL=N|5tHFY`}#WsdtQTt3k3Yj5?0og0S0F3R2T<_hdMrN(*VIV+euP{|Ky7^ zGLAm@1N>2rCrOP!iK7Wf-bx zhPvHq)Kqhi*L3ovDnjAOclPUncnV~i+$1SzOV_cQw2w^j z(YkIqwkukuq7r4&GwvUXIR}W2=_cJOVNnx3Pzf(lln}#!1j!i&5tlH8l_*vvOyZ7& zM|jNes)y_3V|6)-bl(4VcBgi%DmKH+O^PzC-Xy$(1KrdH|3I3&&-HSzyp|WM)qF3} z{?_Tr(dD9NA>RX84+Hb`9QJ{sAHhVzX$3$tb;F&hA@qKR=^H|VqLO5l5I~6LkwW?$ ztT1_wKw#fGM%Y5a)TH~2rx;=!Su}RL}()X4dDo`7Fu@;mAv3K3rfRXWL)Y= zOyM5!c6|5A3cA(5BIzXm6FSlf{r11mIUhPtFdlT_3Um9nXH=@0xb-ikmJ)N=@J5?hX%}*dGSd(Y`|%kD8X>)w%1K+~j)au&amM zYn%R&&U=o&EBN)Kl5%1VYuY5*ExRnfG0bg-)p1}{tU+hEcUBJfJU`-*<9qt45zDBnSjPs#-SHrj zyHIfvvkVW;N*_q#40+NkiU+B?+}qP%m>t`S80wl~jG>|UY326pNQj37rB$0Jm?B8( zEdCb~!h4(y=w)DswnyAE+NtEKfhBtPdHO{FDUb?Kr0*1YI<1V>OzjKUXEG#Qpl?F5xomQv&92MZo4U zPnINL7lyDd(qgYt`-SueD7BwRf5cp^c8p9Zdkk3^IWoRtA|_0UnrEpRz@p0b3ErWW pcTpz)q=(9|fU9&)hE#Yh;~H^aCs)EECTT5^r4YYL6-nd+xxZcrYa9Ro literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/filter/ExtFilter.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/filter/ExtFilter.class new file mode 100644 index 0000000000000000000000000000000000000000..1f8a7a46a2fe8c36286dcbe79ffdd4472e6e8da1 GIT binary patch literal 365 zcma)2%T7Wu5IqA(<%&r37g$JQY~tRH1`<{-*twgQO72Z*N!v^C*If7kew3l0>6*pN znas>N^Z5Dw`UdcXvA|H^T3{q_Lm1EYXr z*{YK5-cR2Nx25*teTpgYmQXEy8??!)hA=Anj}7mb@Sy!hvaJ;>md$P>BfFLId&%2c zew;Rug_HL?vZQ6VmT#&tIuWL4DEys7cs`@IOq-PG{}+7%p_8qfU)Sjo1TKM$gCpij Qb@Er}XRLBxFWUtM2Zp?6+5i9m literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/filter/Filter.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/filter/Filter.class new file mode 100644 index 0000000000000000000000000000000000000000..16f3de36eca163a006364c6b06427edc3acb5d6d GIT binary patch literal 340 zcma)&!3u&<5Jm5lX(>gYk((a0Z5aeX<-%R9MtzlHzEG3CtwkTuM@3pli(I%GI1F>< z-skK705F4PU|_%`365;Fgecu$-Wh`cZ5-(HZnh{ zpf)&7hIaQFwkn0`s%z@YQXmP|*E6j`5Nuza1;?Ss9*d|ri;R=NQ#ZkvP#iv)Mg7?L fm)r3o>E}9u&?)-@IvSx14Jc<1dPxXI#nFEQH$`Rk literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/filter/NameRegexFilter.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/filter/NameRegexFilter.class new file mode 100644 index 0000000000000000000000000000000000000000..6e141be2b701fa1b8ded2e451fb46eb47a0b8f94 GIT binary patch literal 1288 zcmb7D?@!ZE6g{sSn;rXs1ylsx5R|P0KIpXdCCY6AIs$*nbn{WVqDv_8lGsF~HESA0$mBkqgs^O+z8Wr`ZI z6z@^IPum|5wt@;FwRjsAaF;S7h-6swC503c(6Bg`5tQesrZ)92P`)DjiIP}A`UE+a zqB_B;B9}|5nSxrdR I$clpX-;p6V82|tP literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/filter/OrGroupFilter.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/filter/OrGroupFilter.class new file mode 100644 index 0000000000000000000000000000000000000000..ec2c4152ebd135cf2e6629589ec387c0895e3678 GIT binary patch literal 2073 zcmb7_PjlNu7{;HqY{_^xyET6>K=AiyV`yCd4BI|_2<*y9|Ks# zwKOugq~UT3IzF9149ntaMO3Sz`b<=7qWU~dRYgo$*KkF{2E)W{w;4LYdJyn?4CPzf zw%@XN)2;J5w+`>NtPb}Yb^m*dw_PimYkeV?tT1RbZre_$!@xEfvb95gmv1zAr?bOb z4#VkfF<>>hcgNZb1J}DlYi4SlZrcguw43+Z&eqX2b2Zl^J-4~-9DCardFIxrxaVrz z^Zby9uJ4_+QeAaDH(X<|3a?|dxX%#Z@Ec@la@+Nsoo=h{1UGrTDNXt|Z|?KJ75)BT zJUnoT%HlXQtHGCn-)#?|X7)mEe|v+sWh|MeNrp_rm&l@N3_FF*;}njMj6gMFsQ3+o z8YP#ZG>+(jTJ^;V$h?&N{QstT_LW(ldv!XqwU?kQ6kbESFr97qH=OXmZ@j=-9ffrS zvGIoF7J^H(N%U3Bws}CG2OaX0j_FKz5cuD9PI{f*^SgoVkYsWEjvSu_u^B`9s?!b} zn}<$=!PxD3q1$ry-HuBqbbauZ&;iX2otXdDtmt?fR~d?9-vv6dnAGtu&g(dZH*}oF z869tmY6>|WZ;7gevW|HyFkBcT@DX1Or-ZZUDyh~F9Xn)D3dMbVL^oOnjIK15HYF8w zC&q*Z*^&&|k`mdH7}=5@YUB8Uj2g6hntCCvi%~mmJ_2K_{M%kxIuNc@Jliu;%|^F1WYau2FG z--Biv@gC_l5|?%N$I@E1^quPT*3vc63HvnyN-+4LK$CU zNxHcXjoJmghxf@TX&d<3#Ro*0$*~WKuW-GK0zE16sYsOK^2wCEg#Rp*r^u3Z##a6% zhB0v{`tGabUc|_k$bN!~N=2iRq>_?ug^id@fGRg$9s-^p2+K>c^iProqvZb8M_Zv- z$IzDhXiX#a2v6#gzP6uNF>Z0f+Nn=%E4ROWnwEa-xB2@Vq`$>P&3R46I!QVQ{BDNCHu zX!h)nGM-zAW6=j`lY4sZ`R@6?bI$G0UtfO!*u`E9G9IdUgp7h!1vwQOcEpm8Vo{}F zULYPvu_A0ifzBWuR!7G^QMT5xIGl)#Y}eY!}5XKHW`*{ zmSY|d`-bVAaKok@CCFNT&+sBs>+uoSZSHjRhVNNUr<9#nWTNJ_xZUKQCDKnhWQX^O zD)D!I>Tua|EPtQj=0E6;owA`|%hbuFwtIn`ro=^8a zO-OCHL$77Nv_w~8VtNJ94h;!$XI3>lK~cdjLw=soYgorq4R>%?!y@7uRuE@cx@xpg z%Mfnau0yfq>tn=+@duS#L|RcM{aq1eO1Y;2ry?~P2*|V;DmM=0rb30sJMH4lCOKa_Dc z67gW79@^PXe>3x+>AtG|Dz))pfLO9C29K4?8IA)~@SOD3#HH3Y2X1LK!Rj5JXQ>wY6+I*Or&O zZGTqc;OvRDkyB1b_KY4?*EoUw|0Wr_DEb2F+j5mnrW$oSbvoCEC66W5_7l+pxk}eM z9n!sybzo>vm|I-`)|mQIBz@IskYkx!Ki?M(g=C%o+@@p@rJ{dXJ`>pdnXZsym^)=Q z{|j;(8C`#7(5u|t_*bQ(z|NmWD=;&7qjJ!qI!|o&0vv;zF6k!6B$u`B{bb?|AS+=YEHOrt^gCNXd9t+8du!tp$Fpy+P J^BO+ReE{-r!L9%R literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/http/printer/ConcurrentLinkedQueuePrinter.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/http/printer/ConcurrentLinkedQueuePrinter.class new file mode 100644 index 0000000000000000000000000000000000000000..84e88d8cf74d52fe93d9b219dd83a4e651989d38 GIT binary patch literal 4966 zcmb_g3wsph6@Di>$z&&!kZhAEpxnh|Bdl^&p&EmMCQU$-kO+!0*$l~$&F*$~mWyq* zR?%9~wu-GFB6v%yUT9xkNW)$o=V6x&`%3Y!%=_i!5g86> zcvOTQ)Nu%p$*sp_^@JGsq->uGV;EmA!#D7>(4G<6VV$%iI-bQhh50#g;HZvccwUAV zgk?kyMrAc7!*LBS%Gn7GCx!cz=>C@Qyrg3;Ue@r6hHqCecMf)T^%iJ*C>dz zZ8f)mZ&91ET5<*i^r! zEuI>RnF+hs>@{Osw++QIX0oq0wIgPx?bv|prekR-0Lv+yR6-Dub~7EARP1R|usV>GUz+tF-p)yrN-|zuE6_a22`0US?he_m z0-Dgx231hJC6UbxC|FYWk#s~TFr9U+t0l1$8KZEf)ks>~b7Z!mf=b8ASZ+9E4Q1h(`5hZl;c;Mg1L3Ag^Nwpu4jp?kf??SEYoqDER#+u%>FF@ zju*@pNu-layH;OL7gMLY6u>D<8470p7bOg$@Qd-4c1CokvM&3@by5kcqzPKar3vjB zA`_W=y=Gw>P4o?&jwezXYAjtDPXx8Ccc!vV+*)l*#m+7WAwgmn3T_$b2D`7$!>|tm zP=Vez(27qQcn#k%(1vye^#yMhYFknDT?5zPS_4<3nTS*HYC)3?ti~Dx9q2UBCBu3d z)?%H4Do;u-E&Y}wih2xu53d`z5jPol1K(G0&Lp1?(@j}B(I?z*;s=bkZs3P_%fQ=m z<41UhS^3}%15H?^;j{r0KQ>@ti-7?dT4mUZK@IO3_z8Auc+bF3kumTyIdNq5bNoWX zFAe+(g9d&rN`8ZzH2l`U@9=vAe-KJaxc`VhiCEh}62#>hlU5WeI|F}~1b%Fit82hX zZ5MzDq>= z1h*a^u;PQwj+5fIPN?6a(7cmsy}P8{>-L@{qB zn0Pbs$(xBa-b}dR+$4y@xso!7E*!7p?scgAQUuzgV^E?eQM6$Up%JLj=nGIsQ9ObY zQnd}CF_exV9BmkZPC^;kj1iPaXN{mDTC0v=iYzOmH6*uZfizd&VFQG+R{ zrBl-|A2BrGVl2ZYSivv%tFV~ZxP)N56dTFC1oFwq7BuERHHg_&KS;}v`W6QB_QPtuxPCHxpNvT0*yrizJbgZ@`w%9 z3{3ebrgEw}1Wg@=8ahmR$n#h10KE~ZhR+{J-Aqa`iXx2!YJzVsM~QzA#fmWz#(&yA z7$Uu46w`a6&yng2t>6siT4RVR`D9F*9Lbp+L7dJg*zDa>B*}d_B{l_!l6k(88KUGQ z&SMVGr>+^1nH)wjtDxFWs_nuYmdvEuc{#Q7&Q?2zYWSuEzTF@Aw%8BZ?0snPS94y$ z+%~1*Db~vi(2rr>C@vUAnQUm!1;gW~C0D-lGpHZbr?VPru!;3^BQB(yF?zR%+9#~4 z;fWstu%7(d+02{etdcXBuc7~aXp%y{OM!h?a+Y+JGc5B(`6w>*!tU3uANGFUA7B;R zc{wc)aFNW+i{h2yv+-P;ADJjQ{s(qbY( zmo~51L@UGs-)+BycjmdP=iKG%PA;k22N)J9spaBDc+VqHk8(xCsN+<^fYu*F^hGqN z=<(?n4Wqm*ST?+Tl)a(xTJxRtrSji86*C%JYJE$+%QX?dRO zr3mS!hIE*r0?krzDgQgUG+*Y?!1@Z)rco^Ld&~FMhl1TydvBijvOv6u$xs+QR>mks zr-FkE*e(l~tF>x)&w&5{mX*|$>_zxEVuXY6axJthOjlV?7w^LjT!lw*$v$)($D&az z-iH?9t|E7>X4R@Jlw$QTxd_hKf4x1=U~M_8$>eq#J&ASyJ9rNiS#X#TPuGAzGt zc>LfnYA&Zv%Dl{@52N_d6MLo z=9%s%eWk)#f0ECYS2G`H4Yf&w$b&gGm#t~^9e9g=zs-|(c=j$&Pcv)p<*A#V*BE>R vH!uRU6Q9rNj(TGF;GD$V4eF`V4WUri7_N98^8|C1yjLv3-R-0m;f{X+A(Vqp literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/http/printer/Printer.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/http/printer/Printer.class new file mode 100644 index 0000000000000000000000000000000000000000..64113ec1db167c519ab0a242647b4df534c2a7d3 GIT binary patch literal 451 zcmbVIF;c@Y5Znu~9YO#DPoQxc#4vR3C|od^ftdgWooqxRBTF7x4!n(m2k*a*_H@~aA6om^3gprRMn2i0W7y}-I0YgMRpZwr<&!+?5!K~-I*z*pAeP2h2 FKLKb8ceVfk literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/http/websocket/TextMessageListener.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/http/websocket/TextMessageListener.class new file mode 100644 index 0000000000000000000000000000000000000000..64332b4ebc1fbf7233ecab4843407d4945e5cce4 GIT binary patch literal 284 zcmb7=zfJ-{5Ql$*$O$wyCO!f-PGUFP_kA;&@1L&&fENri+-2xz7!dm2y=n+jD&b)?uVgD+iz_*gt##%2X+;?1e$y5@ zvvmqRE_EOOkhu*}owm;>j4&yD!%|x#M!4EG9K^jFzh_xn{)lnSJ2k-Zjf szc7^+kubZ$`KBiSwNJfsiMHPTU)UoMI;n2b2dGQv;`TJ5mwE@;5jcWY7ytkO literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/http/websocket/WebSocketAcceptor.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/http/websocket/WebSocketAcceptor.class new file mode 100644 index 0000000000000000000000000000000000000000..0898c4d0631ecdcb56dae0840067676e8fad20c9 GIT binary patch literal 311 zcmbV|F-`+95JmqaAseWuI0G~pDea~~NQh!3B(|Wo%_#9^V=uO|q~}%?9DqY1yjj5k zXuiHiUvK`**Z0RKfECUQ6a^N9g?G2cNS6rj*Hxo>b>t|aZzb_IrH&u6)Z^euUJnve zd5UqX+=lBEtlN|~mGOI4t<_2^Zu&h(oSki~(P?50y&%R#<;c}pi7d+}FcbF3hll&ThW`rqbgTq=_Jia%_)7JsOBW`otVHi@rU@q z>a9e66<=Mp!c?V>!Sw0jg^-&TtqnrBn?IM0+dFQZuDObR(DlVKt?a$8Wf|J!y8k1n v3_}!^esMl0EdPh~lSY{R;;ej=pfdttl>PyX#)K=3fi$m?B_(w^>zI54ZSq`H literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/EventListener.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/EventListener.class new file mode 100644 index 0000000000000000000000000000000000000000..2c605dea086589b5390dc7d331ccdd06d113daca GIT binary patch literal 257 zcmaKnO>V+45QX0W#T2@z$|a~&)e>9Qu!_W@75lLnwT>JcB_VJ&794;>p*m?%cPvIT zZ}h$Sxm-_Y0CPMkJSvO{Du!hvp(eb|G8+rc-WfKm^QO=hhpmZ6%{!;1rF6$GUN?mC z@@QpOyBI2kNzxy2Us_o?FNBwl%Uo4Ukn%m}h6(d~}Jhxu$Ieh80$;GBa jr~j?b?=l|Pco`B1z4RJD1418zq#u%M^Du=?UnSu_oqNvje@^br?>|3&0eFH(Wt6aO!oVE^J0>*THOX?%zW7QvydGk0L=!JCADZ zfHJQB3qPA?0+y;oDqU|zNvwPb`Sh5_oZ(r$kxM3vB(-u^4t*ZaLLxrThiUar4%>T6 ztPP4E^HXkn+#lNSoUw3YlISfNd!tbBK~iBWPs$gx+JrT`!7OyeE2&OoH9hb>B~K^z z(s#WelK${S#G_zf;DLn|lr5Ne$nZ4B6{=VRP|SmOcQ(ZVnEE zR&VsNLw|)qzYMEXR7Et?s8MR5t4Fi+LMznw-|)m2Yb8ETb!HWs_SlrYfx?qvoTs5A zCXz_P@ktt%k{w3*$519FOiXEYri*aIU&Sd|nmdMWcNGR3m3}@xP-yJshYV+FXfpkF znnt?Vmnh*$dzivK=cS*w>x_`Sn zom{%yuEMy(s_t(6LF9Lng9W=23W+JhxGtGJPhDrPT^UF+W$^K zq4jUS+2RdX;LQqrP7radOR8W%9lWU6&i^%sRm!tT;nq2s9wYqO%X%}tc?gd_^lu5g2P aFmuttGHw#paBH^S<{QVO80ZSF1HS+nOyQ6K literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/Sentry.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/Sentry.class new file mode 100644 index 0000000000000000000000000000000000000000..2d2abaadb6391d868bf2ddf265c58a93eb9326ba GIT binary patch literal 2284 zcmbVOYi}Dx6g}fd){hMhCXa^jNFfl%sk82blE$tfO=wzhf`qLiD)C|LEXf8x!g^EE zpTd8r1V~AdKtg=xH&qqq?mD)U_(K;OoSt+G(4`ly6;#*fAZfZ{}n2*|R+udmDZrAQA z#GJO{DP$@K`l+^>y1i$8T|clJUQr=gb@tlYJ92G>Xl7RQz-`GDW%nSw9_FY@= zRyqycq+e~crBrEjT9$4)bzRri!PA!2)$QGS=h)JRj@5L!o=t96)oy$4vl26wSI&qR z%Y+>(3EQ&5RCXvqkMGiBRXwd%H8)Ac4-GCs4%+I3{!Ta0=84kgHk zVMP|x=dqq0p5fgL1LT({HDy_+a5wgBFKE$fb}0?c+o47Dn#++w0E%WnK&uc!~FT)zgh1xAmdlS{?}QUJ+Kb6_(ngeP1CJ3|ib_ z3X>FT#I~O+)z&Vrm$OT?8vB*fjfUOrE))s{h4pM0*2R(OBF6;!zO+3m=VcnNmyb=f z*8P&DQej=~9Jvkqfg^_@9UQO~solhz$e6f_Egpmrr*q+k1U)n{g=qtiOneEJaXSpc z*|s(D0X{VGmGG!w+k}OT!g2^Gg^7!ORJiq80OytBJ(rcUSP0oyhD;3@4BdqUAaJ^SVp1v!L zQhukZ^p{R0r3f}BJ!nqKH{2({#!yp|eWFP@9fTRECAN8jDOw7QmaVYKnUG6Jf)k`K z>c2Ilf8vtEP`~z}}c!F&8kmGEw64;2Zb`}-)`gZTt^eD6=$ S3)zDa{zWlyh2to{{QL*jga`fr literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ThreadSafeEventListener$1.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ThreadSafeEventListener$1.class new file mode 100644 index 0000000000000000000000000000000000000000..a997f999b515de1f219e683af16d765f327d0701 GIT binary patch literal 1256 zcmbtU+iuf95IvhXF>zg*HfgyPXdx|0kZ{Wb2oXh~(n?4veMr^!wX;n&a@NRpA`m|X z688r_fR94V+LlNwAyxHSyR$o*Idk{#KRf*~E#s8o0qbhrgAMFQZr}5jw}CQ1C&YpNjpNP;oEg zKPRM)R5I=|ylm!!YMn3`d%-|3EcK)kZ>AGhgvZ?ViL=rRJnobHOrn@&Gdwo4R={?s+1juHK=({*bpDFHwL4 z?!`g)o~rQdLh+nwmrR+V=FzCdXXgwXG`uFwHmg>3h3HnKZD9e_t#s?6Kp%1155Iu5 zzoGDnUIi@DStc1^8CU6COQo1938tQu`}P=ao}mQsq+Si-Fa|#2T(8^g3=3HR$&RRB2lTSSCvAFB{xZ Al>h($ literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ThreadSafeEventListener.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ThreadSafeEventListener.class new file mode 100644 index 0000000000000000000000000000000000000000..ec5c3c4f066135e964ec1148c3883df7591d6ed8 GIT binary patch literal 1485 zcmbtUYflqF6g{(TSy)z}<>dqLLDjY(i>RMUniv8JN!7#>51r)?t_qB(cKo&47MQH>$s_5sq`%{A?1oBi)dN?yxOt%A?f5c2 z43)r(fA3npf|_cL+%+;6IILpEDP3P~QD zGW7KN6wJoE9_v}_EofSghTK+{>Ph`(;3ts4eD?&Bf~Ut()pBzQAW-hApxsNrT0M5v zLF@&7WWwQEx~__%;^N|>!29m;&pV=1F5QKkyC>QH-B89cC0LE%Fm%p5Up#QcskZQn7IZHwBh^^6Vgn_v+#fy=v|$ zHx?MZfan&yO`9@P(oOLEf6t5@=5KVi;&MZbXydMnv5OX^}9ZT_4# zk6V}`=`?Awv@;|96mW+#9l)U#v^fS4A2>0n59mw4p@h&*H?Trlr-6IPIEz7AU9k); Ge}4cUca2*B literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/Advice.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/Advice.class new file mode 100644 index 0000000000000000000000000000000000000000..a06906dd4939791cd4c1b5742bba59c39643b1c9 GIT binary patch literal 5015 zcmb_fTXY*&72Q|X!;&VpBj@ENq=BYH9=lf35DK+%9Xk$oYsabWCNyawV|i*#B1?)i zc5Pne(eg@pw?G4hKxw-cs~YS@d?m%#UlsAS1iqd^7gpur8)zrM%mYs4{;qXMhyqL3!&YU%8<<2iJ z=4w`Hey+Tdvno!m=+s=hWLI(YEH(RNy$%(QXUG3P`-?fHd3%N4^Guwwic6Bu zEaa2x9fbthQ__4n-e@cGRBsXrN3yrzgSr|Mf2$a(Z_95l+q2yv`OI49+F8HHY@@x9 z9wfXyuj)o4kBulP?7U8?@j>d(>o#mh!2k#9X7|A8{WlsM%y!R?QoXfc)e2r^#qEnr zR*|U^io`Itl%)m6E!|bv`&pCH-I^5qh9xB%Y^VNfg#;~5ZmdQ-DSIVvS6pvVe5vG3 z4utG4u&;nw!>RchFe?pniv-Hc2>pEcRs!B=p&4mkV;=RX(n!H_N(%dfoazibQo7Sm zP=`)VcrK%BJ8t~A2A%Sp(fL z4fKfkzAWj*JqCUtvp$##xlP{*JZcGCG4Mm2Gw>r3FNrvd#|+Ga{5#jl>T;Ig8CXDp zPBc)&n1M1X27Zi}8OY`m<`rf0Y#JAY1YS|-y_sV3k;_ZXI!~dP!yULeKF4LH48L!%lJwc`B4*Geay#ykk9g_P4L_3 znRf9^vxO71Fh%{7+QJS`qhX;<$4@Mb;&>Qt2XVKC;hrJxS>isn0j}f&|03Xn81r#Q zX`UCoNHo;v<(U5gBw9^-3W62e?dNk z2?9$FK141OwIo>@yL)E>4wXM-Km`e0)OcRFk_~4jG09?)Ehce-=^)#kqT@Z_97p*U zBXCmo?B#*C=am4#m=CD%aHw*sS^23@SWd6!hiCaxsPZfx2~jqhm7fb$K84dE z%3GS1Ukp|LP^fZSv+_?ul^?~K5X&9S%D)Iz=Go#a4>C3q>bO)^X1$|$3Ghp1;x&!n zRa3l?0C73!h`~Q*+(ks^Q!wnAW+J~1A>y^n#|iS`M);-lC3jMiJN%{2HRr(Z0!XPw z0(}JMs3&QCi3pO`Io0zrQa!&#=VioNUh8=aos$CE%ik4b1e?>;l^bd^qx;TT>zAU`Dj;Suf=J4RySYlEhvJ=d@; zg44|&{|h_$UjrUD8rI}8@C1>RocuoG13qHfN8BDkv$y^h082N((r|pR^BaQgxDo8{ z8-UfBoy7&8*~5Mi(q_+9>@<6?V%Pdsy#wJNOs;?OK=@a{xj}|rf`JYZc*zQ0b$s{{ z{VWH<>rCB^df|UGve#bQ{Js0_)ff^_E~4ZE26H#ol)I`mfV1ARc;_Mu$+(yNMtbl~ zbnzU&V^TJ~`vs(X&1=}hD4SRDj?2jO3R`~KdkuH;ZLipg>f_)JIgC{Xt*R3pY8!T` z9k^5NM4##kc;{dveh2;dwenEDh$?y1bn5Z)q~ExFBRfqZ@-}uQu(aL3pDgpkll&0D S3f|8##r@xh7x2EJuKxmdtqlMG literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/AdviceAdapterListener$1.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/AdviceAdapterListener$1.class new file mode 100644 index 0000000000000000000000000000000000000000..a4487c473117a57b08e51fc3405948b5e0fbe78d GIT binary patch literal 1300 zcmb`G&2G~`5Xb);J25dX4WZ?uKq(MV5~Oa!g+r@|5~u_U?IBepj%$0BY;f$zcA~yO z-v^{ZC6IUk9ttrVTOvZ-jII5c+1=mF&dmP&_3a0M=XhF01@~-NxNl+GhJgn*X?83; zwD5?bl8#l<*kgFv_o68mfpUc__+&BVi3oi+I^$xdc%YJ0hBD^zEaiv(LV5Dg7qe8x z{d{GgSO+RpX_ukbEDCE48O&bfONRBn3gz*9>dN?3xB+SE{m2u+P{c~hxzf}ZVQ}7t z#xZhMJyvW*$8_L?A@IfT=wA?5a0 rl>a`Q`H~$j=f0Tan>KL^x0mA`Y|&_v-$0F8oz^Ne>dzqU4U~QZ-5X-8 literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/AdviceAdapterListener$2.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/AdviceAdapterListener$2.class new file mode 100644 index 0000000000000000000000000000000000000000..1060fb38711bb97333b70d6de66f21eefc591ffe GIT binary patch literal 2982 zcmcIm%~RV}5dS@}Q7l9;5J-U1q{OARAqY$YEx2yLKuTkv36wNRzhwCZi^w09WeWFB zk3F}SOs1DylS4_TnaOl|?5+PzPqh2wF98~t4ikB-_jcdv_kO$kcBMZLe|rTWhMfR< z@t%x6ynhb;GI}s8V-9gK`#?qlABx!x3G*@nSP-|Qge4h@5E8g4<0GsH^~Vx!$>eOPi$WP8D>` z+|n#V$W^6JIKrT;Z@{|0cKNO-=v1 zVot{8^nmr$i*U#rg|emdWkVFlfM*WIMHr}-mh!q;C>if-T&Y z@R@>pxUb*=K9}%?f-muvg0FFxVX9e&a6(g~wa81lWfbW!3S><|8oC5JZu89`j)bfR z6>?>NC08`biDMcC91kUIE673@`xy-J|G!TqB9$#%+sXK<*;ghj8HHC^YWQfP95 zUPb(Mbkzp?4cnpupt=bj*HK^O-;_0zUL3t%&E$TAXiN~zyk4TtTa0*iHh4NJh6~%= zUgWx|Sv=#a2I4&&j(BC!Wh5F#HQH0ciD9>=UI#R@4mV!|u*nkLcv7PeZM| z>22=vrE=KFjUjJ0>WA@SBP2D-l{E&5@Yb{(wZb7U&#DlSEnKGWpg#J}V!@#3fi!ES ze?JDmFi5imTIdJJ(a~SPqA$?$oTL`KN%uCgAsvQj-dC~0TZAYs*+HYv22tk~ES4mx zjnR;fqVV_7myFo?$~#{ zgyLvAo_*(IPyhMrDehDt-f%-C>JYwu{{cFkXRo*sgD%7_2eG??_y>DN9DR<5<7g)j zuR>wt7-1^nYy!(PUuV~-!CuEco5l}p20xPgn9Vtnh|;qo6onApfgc7`lHR2m`CX6B z6NC|=s6j59V%LU54+s#35;a;9h$$q7V9 ze@D*&&I{%zb0c;jqw4MxH20BalI}6behSx|@j9lRwHdl!qW>^i^wKD<9?X#3LTneY LOjunsrV#iS2@zjO literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/AdviceAdapterListener$3.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/AdviceAdapterListener$3.class new file mode 100644 index 0000000000000000000000000000000000000000..34199cbe3f14d4fdd5198bfc6609e2e2cb9ad1ab GIT binary patch literal 1272 zcmbtU?M@Rx6g^8zw=D%~Mfvaxb>%~m6%bHCq{0##x2ByAxPkcAM?C;y)98 z02AXg_*+ekF@^{5p^SHy);5F~iD~DYd#3l^xpQZxKYx8c05FYo92amgh8|psku@yj zWf@n5xGF#qa81C7fKdTs0>%YgmvKYJO$qZ#@ulS(J6Tpy40lgqwpC_jrtH@Dlqz$~ zvb(Raily*6cYH+)u=J|JC3I|NBt#bt+j1;_NkV9Bd|g6##Wm^2UfptduC`a^UWt`$ znn~%d!R&SBSwc4^yNfNh$YR*goNt{aHHf9r;!#pJtA*#)sZ8hf>YsSu+#cfmb zJl9L$j&Qpx;GTd50gD3e3s@5H0J9R7sX=O^K`J#!Z8S)w2B~(VIF;}F>ak@jGZGRR zhc>Wcvuc%BB_vyA<;%O=@Fgt$-y$-WB~1J+M{tsA`$>im4>VF|c1=_@H8#GfpCrYC zgvdi}Enmt|8x>Bi3Hmj{>(j`rQwpDsm$Zr&nOcu1#(?X8c{9`oT zx>nMY}j6g|%#+wpXgI!>K0N}4nQVms+LNuhv)o5ZCM;iN)AU9jSLJj9bacCeku z?V3MP_J{>tfJ9oU3j|w!6GEIj3xEsTkI7M-aG2By#I5qv`iNa{ z+pp{Pann_}_U8P0robg5vTMg}R~waGeaLmmo^^ZerdQuTzv`abaulNNs@Gb`DQuLS z#-XiiURjs5eQZ^)pqM{({?*;d$V%lIqqgfAGO_PsXN2q(RHux zwF?TJ#X*Dha1S)-8R#a{Kazf^U=$k_CV#c$)!p6W!?N4_N|$TC91Ta;9_pqies|E2 z>=hDQZdIRnjb>3hRrd?`v4XW-XSzPN%N1V^n9#zT2$XBQbdJ&Eqcc|d#h%=J3Ub6f zWB;kZP*u08fePWp^fr&h{q9)Tm_({K?t}7y>$LOfuN73|e6@6^6vB^0is8Msb{_5M zBVRNYu7ar@$8EJ1R&uNychJ-B7bo4HtU{r%@i%f%639bq_&vJ|hOe@TGIWB7^GruAH95FV=a}0gMHYDvc&V_tl5)&$g zD{7paCNROia0)OcyPTAqZ#VYO+$oHTD*GeM?4OALfJpdR_7B8&1a8TPG@oK#Q0Wo* z%2T8Sn;!A$#f+a|goQ>R&kUu7x(-XtP@Y**nL}FL#2q!yXK~J_G#kLalBtMy@GeP> zA&2)UT?mUlal=x7V>O2KhDr=k+-#S)%~nK-2(Mq*2^5IRpo;cn9l?^E1UE0^)&-lx zm)mS#h#b1iW~rBzF7mgmoG96vne5W?l<@*es;ZxRAz1ZF9+O$5{De*Ze+uf!#9FtW iOx*VCiE;5hJ|IR2cl@{?;%&A``f+UHI@=t5{{98c$3_|e literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/AdviceAdapterListener$CallTarget.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/AdviceAdapterListener$CallTarget.class new file mode 100644 index 0000000000000000000000000000000000000000..609cdf2467846d3c25f053eb8b9653a3f134ff0d GIT binary patch literal 983 zcmbtSO>fgc5Pjn~apRiSY57VhG(do21V)G(sG(JNXzJ-St z287i}B*{pna(po(P(bMD%D$M3VIqoREM}6hF`9D0PeeNLkIP)8lQ&%aHFzk?vn*ar z{#kr4i-^!F&r~sZNq9GkvY9Uu6^c;!)A`IVL>hM+Ip)}Rqhf#?ksy)@VBb}sXRR;n8Pe)U)C4Sg)%=8VNyGlu>+?fS9-rF znp!`>9{T-~=g4tv#09J6KZ8;OcBP$v)05@<@JAno{qdR=&_L>R=tNgAN`! zXv21}3dg}U9oFDjcuWYEd$Hem5!|a^bQDfy#5Oc`w4J-lU4lM;=@tI=O}JVIBUekQ zGpngH3*xe?74x2Wb+EyClhG#_XmRd)&nl4j1%|g(q2WERV0vA%LeuLuE3`iIjDhPM zdwQM%v}qq}bbw77p-YF@rZH}C|21>r^KcVg&KhZ6MvXMHMvXK#vqqX-llwj18MuSn NoNZ=j;Q?;J_z58?{Eh$s literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/AdviceAdapterListener$OpStack.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/AdviceAdapterListener$OpStack.class new file mode 100644 index 0000000000000000000000000000000000000000..e44f71edd648536b55d0ca8936ab130ee4b83760 GIT binary patch literal 2592 zcmcguOK%%h6#lO5dSYjqxFIcl@F>(2$041jv_Nq%N!*0GbrK+`Raqci+gItN&Uj>x zBbPmYf)zV9EI?`#iAo5mLPCfI`~YB6`ZFrNdp&ZZA&VMU%wp!g&UeoF&g0H6Prm;F zzy++QF^;!We7%!K2A3_on??ec^-4jH=Je}53-70q!n~d=q&Qkkql7DZx@2M5!UqDQ zvcB!s)OsLmcLa`9Hs!W-I)U48%u+!hweD_sGU&9FK>B7&`U^%vz%F~9YLyzY-BxXZ z&!Vz(m0EMlkqx&htJ2xr-g4T~t5=&{NBXYQaNB{Ryra5-(}P^7OFvMpO1P8VQ&uR_ zkYsS%ZD-F5%nu2yvF2RQ4T=J#+^}F%Hv|%;W}WnmS6ol6cDAaj^@*%DxH3^`)@0*` zY`Jso}WChg3sx0V&eo(+ISwv^@!w+M|zBnBbc!93SPBw2G=ZH7brio)}fVFY^-3_ z#_PygShMjVKC$R1H~F(7h6JF%prZ|Q0 z5*6x)sT~4d;8*XBxI28Is6CNOSi%_xYU8Hv~dNb8*{?_OFo;+WxqqV1hp;z#kaHpCs%ryuq=iv!{BduX+a4 z+!L7L9^*AVZ{Zw=&VRE*b9j&)k7&o=wBs>#J$h<8m|Z6@8}f05Y{Y33^8Wm9wd zBq}5x_y9f%G3!J$N?saa$==zSGskmgXMg|s`3t~HcqJ5Y*MW_D#@aBS%_1HYQ7_^l z!4}=I3MJu1J52h%h*Tf~;rGUUe<OL=C^@#j zY#DPssh@M3_Dl|gu<9+IgsFeUYb*u`r2};w3q49%$@+HZ^&+O_H98%0+y}`h4dq*9 zM6XRm&6V`b%zz6QS6r0w$i*d;TsXK~#ACwVk|Q=pKBJdVou4+stBcdm%x%sy&1qdc zH=F*s(y+nz$_Al`9I8e&-#!@OK(%W6!Mhy4WmFhdWosW+=BYHFoPnA@U^SnfA@_|# z7OrMcPN0t{(Gkk@2{raz=NOpc8e8V6WWTbQ@&;~BiCc^@DBBR{&-onVrOznPml-bm zAD5k#OU&Zn7Gq73KJSRvLi0QFU)h+HW|V@u8I3yuOlj6K%sS(4XVx98^6D_Afcsd1 F^%oZID_8&k literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/AdviceAdapterListener.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/AdviceAdapterListener.class new file mode 100644 index 0000000000000000000000000000000000000000..f6ec961829a9e87a83388b2360a4be031c1d2c89 GIT binary patch literal 9659 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 literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/AdviceListener.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/AdviceListener.class new file mode 100644 index 0000000000000000000000000000000000000000..458de9cadfc79af6315ec60a361d7bb61871d5dd GIT binary patch literal 1681 zcmcgr$!-%t5Pj`<0cSBzAnXvc8V-zDB7}^LkO2{7f`p^oIP{F$cAN1`G&44q5Jx_U z6A}kLfR92{^-M5f4qk+?F&!w^EokQqn-{09yJ|*U`bco(w0_#G_XSH zwQYZF$pdYuGzW9o0-sHOg>I5w?Vjn zh*17*oCxvhzj06N!)k1D^`@M^1V}o>LJ4dyP$i=m+<5$HLR$VXaMTOUZ(!r-^xk2q zSCBd;!r_`-Yx%*f!--{^v%=BqE*nEyZsg73vDte z&^K?4C2|HYkxp4GlO!BxiBl{cZvAriQi>xB}t!9LLS3Z($6O8Rw7Y6Y77xi4DTvN LN`WgBp25{$r;t>7 literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/Attachment.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/Attachment.class new file mode 100644 index 0000000000000000000000000000000000000000..54d38acb1fb47e61954928ecd98f02c95f0e6ad6 GIT binary patch literal 277 zcmZXPy>7xl5QJy>vH2AgNtG9{8&-l2BBV4_NEBG<*X9Ig*=J-9#IvQ~0eC3H849FO z?P&Dv%5lI#ed!7`PTa3*HUt2kAOorS-I&J)O$v4oExe5VNQ zwcZ-B$5Ii#zN6_oGY`Tjnz^)faV!(H(3wLAKacJzdQ^22CP|UAWIC2uI6dWj5VMJk vGs|9crVmybRkAu;eytLQ{}1;FgqnL4s5J<6Gypf7@SN{gE?Q2tAF6W)5#LDp literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/Behavior$ConstructorImpl.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/Behavior$ConstructorImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..1741d4b73c20ddcf649bad002d76bc10652d4cc9 GIT binary patch literal 2537 zcmbtUO;a3I6g_VS=PS*JBuvy8gOQj4lC+7R5rPsD;wT|8AV#8#H_gk?*mPregSb%3 zg&Q}zaO1{}8y8xomXa#VvdXPL%JRJKo}p^iy53*Y%bZ@W>t$XqH}rB-FR$z6Rv8OrESB+xKq-`dTZIBA z=GNqvG#%--O<&!0logsYo*RVzrWJbrgg|w{Zo4wv^p(KLgVB>?Q*vgOb+IOkc?S(3i3&xx@oT(twDQxco&8;*d{bY11o zI5G$n0W))!w{A+uZpoH3*S6NpK)Nd}Z`+g`w&~bGs0cUJc4%H!t8&Zs{E-YNGpX;D z@WDn$#;JeEOcz2YSF+tL?_DNyG3{`pwZ<|}+(}g@F^%pw2^787nl8ugMI~q!kGIHd z59d$`)UIw@Y9q9Hn`JDO@n#vfStvW0wk#C{c2wnJV{}=dH&9{P+S6Fp@@q0e&N{L! zAc!loXXfQP6FSmJYh4I^+ikOA4-#-w`hBg6jLNv7TP?-cpD=@wb={!wM&XX0j#bWe;rO;_YzF*P}?Fg8H zup`*j$M@5wMql8NtKM%$3>L59bR*ro_n%Wd&c}HG><<10^+j<%!pFOSA@uQo9Y^{9 zAzE&8FL1Ao-Gdk#{{@8~c`D*zu6^8r57C2yuu;mi(-Kk!h9f|VlYPop5iF{m4)iYG7w-iQkL}g+2x&b>y`e!drvqWU+n@BZ8X literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/Behavior$MethodImpl.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/Behavior$MethodImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..024fc7e63c57fa31d026669fe3021d0ec0ca9ed3 GIT binary patch literal 2338 zcmbtV?^7F96g`_nLe_7u6BFZDsbCEEOsrx} z%$H*Bi>ZrwAm%GE4KeFtHpFa-c_`*<^A_PUO`etUtaMaOfZB?H&1=fh@p43t* zN7nt#Qq*-q17;GZ-rIK#Sar|S!HTQGQ1fi5(eit?a-F7XDtqs+XNSsbH~k}9?K`&X zgpnrP)<={URcIX8Q+%i9VI&9a;v4o(1}Y^tj_Ej7zuTh-Yr#krJ$yY zk!!B%7%+${^R_lrkAf~$)46U%f#Y>3c$|QTDj+0c^?%xzDiWH`FRm`3l`W^^spude z+vOa{;_MPpqa#g5ChZCLe=S+J%G{AqTjmTcAh#qU=Ea7PqMqGTP_>H>%@7m zcFzboNpAA&Zj#Rkc^_$J?TNaC^0dx5%^MK)KwT$mtBZ z5_8Kx2wHm0kp><)X|J2o1QsUn*uq6zDr48e>v+RL6*CrQQL}IpwuKKcXW=7!Y~d4p zYT+~7vald#Q4Vg)!IB(&fjb5kU!=|?M29T3i zqRs(p#l5i|za=Sjn$Qa)RzjBpu4iO7ps&Gvus1(-}GnR7`Z{clvO!N0JQSabgyvGxE39ZDK=eHn- zCB`vIzwmcD!a^LuN-+HhhBR2;f0<~}T@n9l$9QQV+l&wHFz|9pa^*D53U1*2I6Pam zPnSt&C@Xk1Hyw64W97&xXZ;`K_|M0ZKV$|Rl>9t~vpkzQJci6zzJDcK*6mz>j%U6O zGaLVLj(?)#b7sH^&*ynL%k%yJ^6-(!=drRpt#f&#u6$?m>oSt%>E`h8|L=Kq9nIFY wm+Q~htsnn3^_;eA?HCub1VK!YOlP`PlZh&@m1REe;x&GoBpu_Ma1E9J0P#1t#sB~S literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/Behavior.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/Behavior.class new file mode 100644 index 0000000000000000000000000000000000000000..98169437f81c952bde4e79e3a08c3cd4a11e7152 GIT binary patch literal 1049 zcmb7DO>Yx15Pfb!wn-EENy;~+4X|k?EV!XoNTGlfi2@=OhjMZ@ZtCE8Bio6>k-x=( zAHa`7Om=CqO-{Y+XlCBLc{85<^Y_j}sD4j@u5qHvbL77qfT{651KlH>%a4k%ie`@z+{79UK!+4Ty-&;>ZuU#7fGtkWV)1cy4L>#R|%80 zk)4?+Qc-HfLmSEWYO?6c8+jo{Dz?uj56bW&iu+t>)fR2Rd!s&g!gSj4n2UkpS~)N2 zK)4)xep$${Hh&8Yjce1?7LM`g`W)F~-I=LsYAw4$r>8XC6T`s_V&%D}E9OnQ@F;oZ zQ(CUs%+)`h)Dzck^4-G?vK!>*h$TvI!T6#w0A+AYbJh5~_Fw4g=O2W-om7E7VF(2|yFk;+5yCfSlL>2BQJ6i|5x z5&hsl&>3gs8(;Y13}ErW_{AA@#`iem-y)8B?(XIx2@EzhGr4=txp&Xwcg{Wc?stEE zb|1i2e6S2_uwM)Zf>?{eAX@OE7>0t_hhZ@s6zriOMldRc}$44O%ep)sZ#+IV(0 zu31NUJWZ0On3>?|W8BgO?+XJ04Tk<|+~^@R8j_})zF|G>XcohGbR;&z=eU~Y#u;_e zu_(oT<&u+6Bx*lFaPve$v&mI9Le_+8*WNgvbwew&#n57BGkzT%y^zsH|NTm6r16r4p`!7NM}83k{`QeeYW;2u$O%W@6V!EFqs~-?xgP4N#m#UeKBFZZhW5v4oObuDny=2ok6Zg6`z>`H z*O{!Nr_~Xv3+{*t?OnVHhSiQ)tcpR?Na|uUG7Lo97gOQ|4OGxIQPDwzUaM)_*-fX! zL^a*LLWidAmDj&Z=;uqUzr3Lq4fb?*%Xpto;R)_gF5CvjaJ?E2`WA(G{&+6&gV4|8 zvRmL{M$03qAX$7NwUruod#IoGJ;Hq0pFL=q*-VTs84Mp)gHwe{SWK}#1YE&8La&-_ zTOMpM7|CN*hoY^^2d+rwiYi#vThH}W*j=Z zX(N++^?IS>M5s9w734b+DUnm$9;eGAU7QT}u`0jPy}5V|l-3o3+bV*aT&m#mM?zma zHHLzXZNf%!>1~v6pc13oh0%}y2cy;R(b75(`IR}PJE;=ycL?tb0J^PvxO&6lo`UuC znY0!R&5*)jakT*GN%su;l&Ycs20Tl%&k;2U$(1yAblw5$=(+=`<5SdpLQ@jjXsn}! zkZxlm(GijXjd&iL=qV_nk}kN2qTN^cHL0tkxmZibZAc3UT=Jhc(A(vawe(;Ms9S(M zkBy$JzBzCg%jOaB*kE(5%gTY92-MsneKoE(5!8}5pJT1`1-hg!(I?%xJ%%kr2?%0P(T#vh^$=A{-bLuL`d7P-3y6rq8I9EGUxdg zx(9_}9M3W5f@A=EY3-NSM*b4pN+3|}GKE4MVu3s`Z<9dDq&OAt-;VgZ3pAz8Wk zE>_K>RnV(_ESdxp@sX$v+`9SqjS?ufAVg4ngGT9FtdPFP4(SIRlzzl<=_hE?&#^!i}sPz0+HffawE zK}O#Loc_Ztq`kCQ!V8oO5Vrd;fTxM-Aaq-ZTSs$ih!?*w@jHo6(NiC2rtj~4Fd+Q{ D`n1Z@ literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder$2.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder$2.class new file mode 100644 index 0000000000000000000000000000000000000000..6bd7c98654c8280d4695737cadc238e50a0748e5 GIT binary patch literal 1213 zcmbtTU60a06g^Xr?m`82b@5wQMJ+5+!=sRmO4h^#mj})Iuus!6!jRH2?LgLlrHLD( ziNSJ8$Fpye;~q`ry~QYHyQf&X^4&|SleO9cGW;I zlzK7{+tZ0F!k66jX=k;kJnrxCP{w|`nT-o#u$~2!ZrA5gB*@)7MN-uk)mI)0-4CB8 zoqQaI{4GP%uI(7UWf5EWcV3EPCB2&~jUz{q?-_7lz+_=em&+B9%L`7@!k c=HQevgNq635-yX?;tHV%GK)tq)% zVHj9)njQ~3fzUC{(Eljj&R|qMPXu!=@19-WcXp~~`x_Q_ojR{`YkhOWYICnq_g`4N zz{%pr_8zLa&)Rf~nA?Y+zR8su{P_?wekeu@yf?=@cc;Z24qb`DFUUz9G zU-ND5uJFK-<9ISDHDH)NhSjV{AF$+KvHr{K_y~jZ}8L=7JwQ z^&%tFfZ-3d+K2K`={PDJOpNsE--$_vS*3tOab!5L6mt9bMc#_-pYgre5Ta{1@?d%? zipK>njF4Sa>K4Gdw}zz9r+Q@e?DD+u^Y znN0?=7}POuU;%dw+(p&EJuK>YVBjGhQ9!FQMjeKQ3Ci9`rpvvi^{~D!?2uvd2#6w} zlu(^JjMW()t02Ch%)ybtaP#Px41IN(`Z}Iax-P$Lk()oNGoVK@iU#RHSx+j*kI3JY z5JJ|%ZpA7{o|PjdSybY(yHP0VQ<2~eiuj>ow^r{7l}hP3)mm=bbQ2V=-6&Ie-8!Uo z4z90i(uxq0buH#GSuX2XqWs+{XmYZ5q}%gKrgP)p^N=92Uu!5P|dmU>UZ(2=Yl)hw!9 zq3IEfBu*P*7>4g~F+RLXyQPRc8+(N;A*9CMK~G@S{EKF_h*Vb6*9`P&Cy>(y_YlkX zh~;q!mkF~NonkramSDz0?vX_#flY1e8NqRKqQ}Q|4{e4fX1sc!dG3I7QaG%CCB>o3nfEE-0 literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder$4.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder$4.class new file mode 100644 index 0000000000000000000000000000000000000000..973aad962bc18991a164bb940471bcfe4ae8612e GIT binary patch literal 957 zcmb_bU2hUW6g>kA3v_E&v@NY4t-2!k;3mc=ZH!7mNukx!6q7#9?oP_!uuFCqtiQ-- zH8IAR{s4cJ@eaY5rf*G?xpVKiGxsBB?)?7q^Ax~iJS<@at3{Zo6vLuDk~(PRTn~?ie99?*GxSxI$ndx;(m@oM*fep+ z!aX<^iYQsQkE(?Ss4=YT5LfZ=*xikK6MxW>LIuq@j$#XSR2jC26L-#uOPsiKPF&)| z{l|$*oVe%uah@<(?T|QYD4rxDVX*(#+w+FPPZ^$GyZ}S%;=yNMY~jrN<)>UtbiX^b z`cda{YCNNf=(juDjhFk|3~w$ks~N?C47r+(8O>d8zxlfP-rl6KFVHt&c16Fswg@l4 zBE3jxh%8w^?FZQDuhKVUzUr0z4#U{{3}a^o^8|A<_yrlta~-S5p+dt{C7s0;%8=K2 uSQkrVXGm-k3r63>Rdn@6_sX-gYZMO{Sf>3pNty1Oq+u86OD^N?i?zQjZvzwn literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder$BuildingForBehavior.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder$BuildingForBehavior.class new file mode 100644 index 0000000000000000000000000000000000000000..d314b40c812772f687d42b0495a490056adb548a GIT binary patch literal 7892 zcmcgxi(4Gk7608?*x4N>5ebkcF*c^FS(b!N0x>EC0|_K3FIh;srmdOXoxtLMnF!?T%?=ks4 zlOOPeH)Z@###=Jp7LXHH&SbQi85utksO_FjXHx0xcyBImwhE|y*{p6=^cjJH{$y?{ zs%6p%Eulpx=cb}FS~iu)%}2HAbTpHmF?1Rp)#r_9&zzn$E^0<{!bH{cp;GjAVn3}J zhMvy~)b&qlb6PZ`Wyhm2BTqt5xAIKdnCMC-^%>$V`e+n43~PC9N~dX~3)3uA?XU%M zE}xs7?k5?_l(Q6$1i5=co9UTP>eEI#m$li}QCn9wn=>?5qu-cF&xDQ&bd+H!V(9Nk zXVXTfz+2&RfXbM=cDdHBP}2p0sx!HiE^t?WI;#)PP9iTm@EptK3r@3x7 zRinMQs#&VLw7H|JLw;UEjfyQFzqd;LhV8fcx z9g$92x*ah?OFliIP21ywvGjOWGiLMT$rEdJ;z`?~mXgal-pjW9|17GU%bIqR@nZ^g zZr?VW1rpmSh_hsxn~Bv}F$+69s*@S*>Qz$GWmu=LzO>D9jMN&jD!TR#cUt(a?1EXN zKv=mT;lei$V>(!6{G=o>Iz0jv3{MUyZ7y;!vnG(=#BtV@noB2jKF~R-*xGiZc>+7N zA|!!_Hy#;FgrM_|kAHzTH>il21{HL;v@T5RNi4?IeZ1$)@7V=61QS$ z$#NzP%hHw4YYPI=O==)eW1WeiW5$q*gm$HwPT(s} zb5~nCH_XNgK3yqonr=JJW@dBTlCdIics(F<=emN4ia+236}OrEk;xqIBP>gP0$qCBkLxdEvUn@fN zS`o5eD?;>I5pw)3ME(|96YWBF@U%{Q=@OkXigS{gp|hy}rLrtqR+{UQgHoN|GHmBU z;*>2mka5=C6RtT{T1PWS zdPc`a2I*t;{K(M77~Nv~1_pZ0_H~W+^v9oadW#yJk&am?3P zny>Nr4Q_06o^uwhKZk@eGm7XyE;XCcS2@ySpd)nqCKJjn?G^JDP)=AmCgYz1r`Pk0 zjVLQ{a*Gf+K(D{|L*N0(sN-CS-ka+<`=V0f1k9{cN@kXnpP3~kYd~!+=VnxIp#PJ2 zh)^D;uXj+5Dk}RT%}ek{Zb6RtmQWqJjX*qd6Mk_E!6o=g>QYHvL=G=Oi5yu%)%ye{ z;Sr(-=}8;XUIe9j?35aCuhfVZX*W8heK;fCgY(jUw9~i)@UZ~sKqr;_#fnMh7pvwY zQCo1@7WgdHxlfJ6Z=!nN^DOKQs#`o2?vw6=A{{ib8?CVgY!zK(Bzi_hH_q6I?KDOZ z!Vc2c=evWNWdbjSJcJr4Y(lEmU>ou}r<68OHvzF|3IjEJp&UU#YHa6 zymN%YYx9PUcWTj;&A)=3%ebrMUFsqaV3lFY;(YIoG_Rm`1$Qr_?uPlzA2g`ST#ub> zXQ>ro=>*!Ohg@QuDu{6k=gIy8kI^hkQEqvhTKY{KDO`gA`jRk6qEaGFJuIqQb;(op zPE!3*7f&zMTPvaZE=ToUrK+DL)q6?xK9?9J6*A#!o{aU3Rex7Mv_-Ml9ZhboKIp z@)J~JDU|+^P-7$w`{IyGDu&w4P(E`DSW->?52y>cNYbpjeh?S%NouhiK2BeBLA2#P zP9+D800+rse5_R5oXNx5LIGQIfluKnd;Uq#eX+Q_h=Z{ee4>=qg3BhY zg_UYW0!dAOX zl|j**!uorJZv}K~#cExKs78hl3Yt8HtjFZ4Qq{aC=P>Ot*|)LDpY@z9ZESMhbF$dL zWU|SOX&D0%Diaib6SW7ZJVs@RO5T literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder$BuildingForClass.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder$BuildingForClass.class new file mode 100644 index 0000000000000000000000000000000000000000..d9b5c5d31d0cf14d24090e3d0001b57b295d6a9e GIT binary patch literal 6163 zcmcIoU2q#$75=Uyd+qfmb>t>>6CebZRF+#S2}zn(PN?lBsaq#;aGH<=C@XnmuPd+2 zYUL(CY0FPr{(lP;+Va8-KkY++*a__nba;Vb28I`SffsmTnBj?Gh9?-lvs%e(NdZq+ zc*ghc-o59X@BG|z&egB}{pwEv?8CQvu@eOuiZaZ~V9RhxhB+DLWpH%76$=_lI&>^* zaCI11(D|h-!;&n2uooUGIv$0uql#r6kKwYsUXd*ylHtP|KB8j~kL&m-p3v}Q51x|s zkM-c=8a|=nlNz2@(3ULUw>?)OJ+)vhTe*_u&gEu&&vEDS3i@M?KR;G1+Lelenp7BY zDwA%pRGqbFs)dP?RjJtWp3`3(JeSisjB0%9nH2l9MZu#OC&#ec8_)UAA5S zoaGni$E!|h*7nS1?$jbp6l1Pi_ATEjyCICe!liM0-dc9bo`9-pU-g|*PB4+GcgC4> zEx+p7R6F2Kn;a{9bt;8I6VYfK+-)S}j}S(;Kkrn`JqmHS3!hQPb^Id=r!z5N=3Ap= z=&V9&qC878-7@94_Q~pE!S>Erg%VfNQ{|#nI%|23yoZY^QHeH>s2uoSA(rQx*-`0! zrxvWykeqDZr!buvieVG8g(D@O&Rpm?&rLJFRebb>wG`TMOQ>D+D4xztc3f_^6=r~9 z=3*QFciMD4VNPO*478EQbGHsg5IXseE3Fml*)1IfQIn>yZGB)fwS`XE+Om5zE9cm5 z1uY*sj$1FgYZ>a+XlSl2+nN8P8|z}I^QN*p=3c2UD9m*3oYk39ie3v(^WYw4$>})R z&1_B$`61T4#AWiW3%Of_SREG9>Wwvl_lUq3IxVoX1-38rz}`Iqw(-VSg-1FKJ!n&+ zg}Nax@J*)!fUQkKz#&mcpD9?ldqY!`tw7 z118>K;GNiS-~gV{@T|f^9rTEB{WO#3nx)1(&$=Rgje)~>mw|B^K7-F{_?&^y;|m79 zh%amSih-}PJ^#eoMm(g5*VoQ!%)=PjiWp ztbvo5W`mlIXWy}Ry7VILs*pAjgg=9uLt9#$LRW!V$@OYf#mye^;-n`&X zTC=k}ChLk{c)gI%qi_`~Gw+i^i(=5ge?0$70wn!ikr_vN!9vRw;-%DnIhy z7zdg6xK;Dv!@MuCP1`zW`wueh1!v==wP*+VM&XWiZm+dYL(%?d?V=f0kbRP2GwaCe z(bAUgrC8306W+}!A>UfWCBXM>z?Ku`Qi&Oachk_GqhWs**m~`2R75T5uzhUKLkx^K zhiWf>eb~u=g z131Vpck}5*bRo%kGCRD2p6qq>W|J$>WJt)MvadlupS^}2bsc>x=xTaT@!dFo9h+8= z%-*?z?jMp_0*5&6MlYa#j9&F!Y*ydHfcicL)en$SFXNDU1rzET9#AW|hkLh?h9Gb+ zMmfuqD4QTi*2oa*f#4kkml9l8xveHh7h?4jbg5SZW(EnkEo8%{!?2(G>cu0Cld$YhL6l2E;TWc?1guLGE90r(37{AF8! zyKf5cmR5kjCcxhi;BRjNP@-ZTKob)o!25|=)Hkx{uR+`Kq&T|SjK71fejj0NG;}v` zKLbzUDQQDOj^pGf9Cb!W*YGO(TloEfk@Lq0KfS?E$1xla__3pD!!OmA-=E0u&;Ntp z5FQ{Z3Ge4Ze20I8EfT~xkY2^W$jki1_>=&m%OlU*v%@!V>kVvO#kQ-#vpjG^DiR`p zVF>>f`_4ObJ4F+eN z4IxhB-63a>e8nFJ+xTl2*X#bOKX1>b-?WN1U(Kf9A`^E+&T=AwOd^F`LJQ>AoN+Le zKgPY{jPCv(%-~EYUlOLs@1kbfD}g{sWi>Uv6JgVZhb2{!_$h81Y5Cw~gfF#)#jC_qQQVY|LPfv?XRisOR&WTAS|wK(NcgFz0brMfs&Y o%k@FddpYmqoaelY^O5de?BINg^QX99{yZ7zwJO)Ybl>g&0Vc#-jsO4v literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder$BuildingForWatching.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder$BuildingForWatching.class new file mode 100644 index 0000000000000000000000000000000000000000..5c80aaa158de7423795134cced879da56b1de9ee GIT binary patch literal 4293 zcmcIo-*XdH6#njQ*=^Eo8w#!RL#!GlO_3A?5mE|mX=ycWF)36)!A-KZTheUYY)VlP z5%odG7nK=D9mgMoPd=z41C`P7*+0th+?!;Rw3#Js$IkTbJ$LW<&Uel|d(LkD`S*{% z035^ze(c0cJ{n?v?82mqDLc+HPXxU51KDoGV1LQbhjt1wi&!JrvSM%J0RmNOED!_X01(3kW`!7(!t zT8J|E66Rc1cM7(_&@A?m&O|nA*drM|pEvRhCu(&DVkv7eqG!ycp41}?ON)`bo=qpM z<%pg$Bhp-CR2U5kwCEt&@aJr6&Nhm0fhxF|nRlWp<{4Vfl(sO;tlHphkYKHXoiZYm zR=SWeq~%%NNzEH}u#725D9*f@5B4*7<7J4FLGDM4WvA$eL>n%cnY3Y(Gs=LOHJw3< zOUN@44*}{uNAVu9(iHEGn3*-E3X4g@p3##TTIq~gDLr#ew@o3J7Mq0w4BI3XGdnkC z*^(Mf8P05iORx?iIjUVXo%wPI8MaT<*~W0&I|>aQPw!^P*P})3Tgo}dFzgB65JQHx zgrldfOzOGPX|#ywjOdvRLn8FQI3Ns&%wSNhtUPH3+dJAdIX9GEGE;_l#6&(vH^fn9 ze7jzQ#BkIzpk5>xzG=_{`5?RGFM3*BQ*<`&Yn#L>+hsW9Y1nnOmMufOgb@XB$hP%s z43Twupu%Lh-e9cim#W5?*VPRkh>H5em#JLxSCMK$#R(%~8X< zxS`=a++>*YQmkRJCV2JgH$yFasJUTWVA7$9@ncu6=joM3F z#hQGvD#FD_XU@i_%HT8O@#)zFwfWe@6xmS9#+33lrMzQc9S{2IvQDla+j#uw$<$LR zdNm6k?(bJ|i##j0{L{8o$T57m4sL5wGrH5G z8<_e{swPp&=8w}S7{`+&Q*UtPy@7yeGIUR+yVP^&&OVajq{->p z6YjeU9=?aB@B=iTzlSY%q0m&NY0F*sewC=t(%4QK;J4u8A7VTI2>WSGBQ(N51PAEK z=o9b|jRJp`&;@=c>$`*Y@bB>Tt-#MQ8~%k>n@~ag7+d%!2=GrOVs}xigh={0jOPjS zh}2>Mn!bReB_o$AMvCGqmx~v6Fv+z5I5S zN4>5`$6RB_OU62i_#JB?{en9GiXgwPg6eRgq8KRg{uW!rUc`$~foiH-tA$Qi;196v zeBV86ClyZrzWeAB+D(6=dj*eh{EbKNV@JioJ#^sU-w~Vd$-y7U!5iEDxaMF%gf@xChS`)bT7;vo3X61JzP;KFv{B!=bN953Ptx*nwUZoH13 hlRNM<=J1RneuB7!e%i5{uFsKtiuQ@Ww@7{){6APH<%JhoH4-E!QuzV>5mnV+QAG%PXYEi@EFMB1ymR;7nS0MY_sq(_ z?>*ZAFn}2kyhwZDL!TEJ=o+%p)98ZI;VE5f#os&%zm6{`%V zKg}(PWuX^^wV==0RnuA+VQ|}vW-XRw7|j*RC0!KFyvPfEX}P4=gf*Wpujry;>P53= z8yMW!$Kj z@<#Qh$QQ}enJX7W@s_BX^1bO)WKRt0OtoCE5D(WaLOxj(wVFZhi4)+9IVq{#wmDlA zKARO4r=-L9kcKt}pRiVEB{f7ZLp76Urs|91)l+<<|8FNMg^P?Rd zegrVAVZ@J7Tww_O7qK6Hv}qXfV+>dQn82hT5k&pChAD>eS65nN054ViAirc3Y=+@i z&&t5#Qf7U}rKsCxQJ)dc2tFp8_}0wYRH?64!K-TH0&IWHgWwzg*5UEr5rRW-$>o)+Zj~&pc+(z$|Lml1=WFJcgUSiZh~#Y zy$x**sr5)PzfrLM~J3_ z%D}LiOoh}ZIJE}%I;gR`3IYC0`4{jxd79rxH~#^>`~hP8M_i!yG=J!TJx}?&X_gX> zteiOjn`wfT)OSJIgU>;@i?bTudJfh=df@=+&y-2(L9*=mg#!nIzAB%*EDHsVyc70Yg1M1rCX mmfNB1qLb}{vG8+h)rBOTa*?XKY3(FS{wt9Bdym%f@z6go4h~)b literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder$IBuildingForBehavior.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder$IBuildingForBehavior.class new file mode 100644 index 0000000000000000000000000000000000000000..1bdea7189dfff0df6c82685861a56d34af99533c GIT binary patch literal 2297 zcmchZ-)<5?6vn@)$O_gXSX=9#Rx8?Vt=+^+F-B@=LPF9eH1VQW!!p8>WtQv?2$y{i zpTr9vz=txPoh~hZ%%(PrH+2&IIrGi_`u*c4fOj}B@Y=u*L-w1a+GX1oLBOzD zJ?uMf(~+$s&p#AxK5#srVYw=$@ISje2n3BfHLJTd+v{4~bsD_Eta=KtAz!;^Z)4VVo1$$r#fhQ=ZjxhOURpM)gb0b@pUj*)1^ z#~7+&S&sA*!%1?-bz*&OA#@rI?9Ld~_@6|LV!S9B6LpJzV(`uD`(C*@aBNYFtng-s zO!y@OZx~YH31awuO}w_;OY&K4&LXtu3zIH}lp7~XS4rLL`?ff8T*`HA&i4;OUp27L zaGdbv!Epb|vyU4cVJn8%xBiD4Dr)Maavt}Ufwv6%aT_sP8HV?9!{c9xVJB|#1S`$J zutXmTKrY2_3u%DVz#Ycn3hK@hRGp(E0B0a|@wl(vm{w?A*={8a{_Z3p<3?7iKl0G4QO8Ojoc=2iD50;Sc AlmGw# literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder$IBuildingForClass.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder$IBuildingForClass.class new file mode 100644 index 0000000000000000000000000000000000000000..154836082af56ca5a7494232d312798b830e3d70 GIT binary patch literal 1434 zcmb_cO-~y!5Pb%kB>`HpPzwD%^pJAEQjevolpv5IApzP-mD-cnaT7<29qoEkIQDOG z=nv?RsygdtAtkrU7mwapGjC@6JimV5`~>h0uOmE<@Pc7e8<~{@)w9+WE*BGqcE4BZ zY@p5X#O6ntC<=!4zA@@APz29AZ%?JYdMb>;Z+ zR2lbKI63lpRsLpy;E*BKMSr1`i_VweMD1C}NtycQs(!X^$>+VT@7j&JQmSeK7oC3i zQbvNBb}IiSr22F{sY*#ZUr)zkDtIQ$koyV`gA+FsJv73VxnfX@gdg@lhUb+3@FXrL zfrV#@X{23atP@UKGn?s#HC=PvQzJ3eHjnUrJBIiFpRvKfutZxB zSX*IOMgt%lVb$B_47X-@4eR9pfek#QxJMMVgiVjz-XGud$Ef_YQn2Ig6YTn!J%2vM U1F|vYV0ea=Mibj)A2*tR0BESpYXATM literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder$IBuildingForUnWatching.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder$IBuildingForUnWatching.class new file mode 100644 index 0000000000000000000000000000000000000000..6ad723e082ffbf35c1b6b2968b708c4eac020a09 GIT binary patch literal 654 zcmbV~!Ab)$5QhJ$b+_AAtyO#i5ADT(7r|bNVxgd@hC5V>{lQ7?WGvxi_^$ox=_Csuk*dcVEWjVVkOjZbML+lb->&!h)wHC#>;?@dF zIGCO-q)MgECZ@R8kGxD~E+M=OE)z3nT*;WnoaNP=S+3LAEE#{2%%RPqNCdkw=|YK% zO6amK7RBMZ*=XoRC}~UKT$osv>>E(~ILhy0BSOdMFHw;aHU`57Li?_^nMftvOg~^p zIj?w#KH=6k)W3`fy%n7)t}}KW=OQUX>=DMkPJdY+;naul%Mwm}#h(5FfzWV23TQOl fe$fJ4jL=@)pi`e+1TOYn-b4?ZLF8(-5C+jF0}RjS literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder$IBuildingForWatching.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder$IBuildingForWatching.class new file mode 100644 index 0000000000000000000000000000000000000000..90d5fb001769ebcb5227b7de7d4050a7e523f3ab GIT binary patch literal 1156 zcmcIkO-lkn7=GSTN6X5}EUj)q1<^p4ATO3A1V({Dhfd=<*vPaiyQ|r;AJMH}(xD&F zkBY|4KFk;-=(6t)Gw<^?FZ1&H^bBAR>kL_jB|`dEh1ci4*Ysr&Ff0?2A1kwY;=0l= zYY_x8AY@ODI!ZT`+pKv0r3jsC^GkTxsyf~c7h2UtUGP@-h6loJ)V&@TZN&|+*YO?6 zPrXJ*%j2$e!>C#M8y{4~Z7YOUK`4z9E_)&W0*KTYl;30(jgh{!ve24P+xjy}vU1qyDo0ia?*0~n^otC6LhRzMZG=3INgt*7$$VvvU-qx;J@<`1%b$f3 zrfShFRFpPab0b%|+Y(*DP#~PyMrtU;5s+W!fspBAb1mE^KdZN-6Edt4N;aNxMwelY zuwz5{86V-mcHC}`uy1R&C?;&$I=`t*5C{|IodDu7!X%P_sVPiFb$U?Km@(^nq>(Wv eComs<7mzTuV7g++A)ZJXtVJ+WXR(60QvMCt8hT0q literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder$PatternGroupList.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder$PatternGroupList.class new file mode 100644 index 0000000000000000000000000000000000000000..9067052b3d6205c93b0fc73e5c6290404df4c1da GIT binary patch literal 2351 zcmbtW-%}e^6#i~DWSg+il$M}aD=JDz+HSGdR)VyJLcxYm8zimO(VJuk7L!ff-7xsz zjQ@tuKKRlXXKWeljN^0vjs6#oqki`${1|Lsx-fI^p1bFs^PO|Pb2iWZ`TY+7AK-op zX`WE!Wj@qaQahrW)9IT@+^NIT3EU z!T2SCDE5?{8P{{eS%K@>2*3)H>jLrlR-Jh`S#&+8)M-{7e@#{!JQ*ssYO=8|eOJl7 z!?+57Nxdt>(D6MTnaZlbN(3O|$IUTBL)Pm8ne4-EB^uJ(u*;$EdK((H)$Ss=>HG3~ zfzvNg6X@?LRorm%WwyQ`2Q*g%=AwkqEi!!u8e|XGKsl7PZ&zen=g-8FK&l67Nd_jC z1%8NB!YGiZbS7gvRVP{)#Tyo0!|UqlQEUeXuVuqYNF!yUZSvVaw+{h~Sl#GqS3cr(fNOz`aN`d_nsuM1zO1cBjN} z_DDN-Gg6pj3z}}Q&}@h7WQIcdgnN*hOm_0fFy2oYCxp2vgAyk$XPBqAGy9rH@=ZOf zsfIBJM|TYL?~80ejPdhwiXWgDcTx@lXS6huPAiJ?xsUJ2SiU(+X&we;U^th5j96|L zM(!!%4|dV_7>Qr?)i=4Ol#;QCq_Ko^lr3K8CA@{Vx&KHizS}dnsvQ6$x!;g@3iAQ? zSbi5L_K=LBa@=GI8DmwO%xD}VJ(DzmalEJ9ypM^V@t>&^r^9Jwd=DvspU@Y7)Rp=< zv(N9rQir2_7!ddqX6Zuy2?n*=FaJI_9`UvT71B9=U13yU8TT=0JVf635|@pyaK-o< z*Nks8rZMW~8GII#e4^h2bkoRbba|c*AU^mvk|xfd{YwXNAu`~TF9qxp@D>3#3D_gx z76E@p!2T-(PJ?`~dl|mP092%j9BU>HtCdidAOTeIRaU5Rkc$K^ky(lm2~6>)PmKSU aDaG(1GTcY0Z!&koJV|pO<9?Cn{QD2$Z&=s> literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder$PatternType.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder$PatternType.class new file mode 100644 index 0000000000000000000000000000000000000000..eb055ef1445206a125dcf9c6d244a486cc812822 GIT binary patch literal 1357 zcmb_b?@tp!5PjRb_S)n4RS+qlf`YbyoJIU%2?3#KV*`d_5%tUVdX{UhTXMZN_+M#B z#Aq~p_Kz~o9*vaXC)2&;CbRQ)-kaIkU%$Wo1h9;i7*yQX@c>B;BO2y)7+8?M#VGo9 z3NA{-!zhNOUD9AOL=STLt<8M#F9}yvSSin#o*!h2am%(h+m$%O5Z=o^&%R;M zW{Vs7*VzI??p^P)M_Sx%O2sdesUD_PH|u5U%3$6R_D-`_vb}v?a%o2k_;x=qyiew< zyv0qIi;7wBJx5eBsooV9&(|&P7P;q0;tsnic#TBFuQM}5RvqE^YYb!m5SB|78C3ts zp-#mLPDOCP=}{&nDFe|}%k3O~+m$*inzhwlRkTK*&$722*~zhMgR><2X&^4A zdBngYq%|xvZ1-jq4UFTlfm^t3pdUj9hB3r2aCwKaTpCx)tqYPjnoM=IVz*SaEuTtw z`u}1Wo^;<#@YXV29Dir%s-(<%nx3ygZ(dnXNaX-o5)TYb$YxPQMGT|30qQDwcgf17 zx52(3bPnYcc?>t{ACWOON%(OjI`|cYf)jdNo&SpPIaG-cUBOS#j&Xs)B&LEmwUSVh zF%5-2K$~BfIz!}h5bmbCJg(u6l#b~DGlM9}o#_bKp+e+Z`VRFlt|@1To+1`Fx*9lr z;U5%I+BC$6Y8!opQ!vSPQQUwO!KTsA<}g7;Djk-4m?caIa~LG66Iw+I1M7)DXsuWb literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder$ProgressGroup.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchBuilder$ProgressGroup.class new file mode 100644 index 0000000000000000000000000000000000000000..5a1c133c3b7ad8db07ff10044276299e69bc5dbc GIT binary patch literal 2309 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 literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchCondition.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatchCondition.class new file mode 100644 index 0000000000000000000000000000000000000000..8049cd702b3039906819d3b54027c329edf97d82 GIT binary patch literal 236 zcmaKny$%6U5QWe9TU1JqKw}aujR=)Qp-`x1cL#T~?v?A>@M;PV;Gx8#70t<+a z9?#nyz!0qnQG_O;v(vEjbCU=46Yu3p81(v^MdA)Dxrrqf&WZz{#HO*kupA9Xyo@tV WLW4l4lzRZG5vr)Y9qOf4(0BnOR7L9m literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatcher.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/listener/ext/EventWatcher.class new file mode 100644 index 0000000000000000000000000000000000000000..d1dee2474c479f6c7455d528ba933ee71f251195 GIT binary patch literal 382 zcmbVIJ5Iwu5Pg#bZ(_o)$q6W+VI?FQN)VA;A%qb1*dCd+HfyxIv2r#F4#1%zHl|5K zlVWDxeBS(iwqM@>ZgHkCRhTIp6Y@slJICsys0rh%>mr3-yS1-mX{-<~o_cYA72ayEt{xsT}5XFhtvWa@1OgP`swPn}n=dzV5Dx4Bt4(Rr< zHntXjSq#9qX4&~SH{6jN!s5Tgyl`o^N6R5dAlx55J0lQANyh1?G$BlIl+Xy-pcPJ% L&4+xBc{ck6koa*Q literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/resource/EventMonitor$EventPoolInfo.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/resource/EventMonitor$EventPoolInfo.class new file mode 100644 index 0000000000000000000000000000000000000000..f569e7bbb7d4ab30cf84b03d19ad76afa5cec9df GIT binary patch literal 486 zcmaJ;%SyvQ6g^jC#>7c)M+7Q{ifU8smcz!&HbOwzGTNM=fs2K_Y`et;h(&ZJ#P zk!gcl3_XSeLNu54@V~xu_~x z5zfc=sVTU~RU#6>v!>vc(6hw6bFoldHd5F8*3FUgPbV=UTs6eA+~$QZW?824PB}7Y zl@CU%+LULRXavKMaM@K+%BoFRwXD6PHt5-yJl1c9(A(gBm(6pb=lm(jWLh&E5>C5% zX3R*Z8qa3o0X&o#U14W&e-__4 z_vAjFw>y9_+CD-bO&={ndtOMLZ;eq)eK3U9Qfryb6k97Tp>ve^4>9WxR~Ti(EUV*DHlu_{e8oweM^O6 qeH5E0m2pm({%!Le)gurp?ri|o2p)X5RnRDVfV!KZBdV@yUho3`fodcG literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/resource/LoadedClassDataSource.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/resource/LoadedClassDataSource.class new file mode 100644 index 0000000000000000000000000000000000000000..bcfed26e6f1c7bdd058c8b9bc74ad44b296341c3 GIT binary patch literal 543 zcmbtR%Sr<=6g_Fjj;*hDBjOKOMGUxfhHjLCFd#TzaAzhh8PbU)Y4O`!_yPSWF{V;{ zv~FA_hjZ>d_ny0adwB(LjX{i~7=4CFN$VH}!}F}B1@XC)is!;54BcE#8*+0a7|wq3 z=}NAsnetmj)}|MuWaO)&iEJu{beNTT#!1P73gY!*#w|5fp`STDNj{Ov3B$+XNq&1j z{-b>BXeZKplGA3aO{S?5RhV2@hU0Jh-GA!*I+q)Xtropp&rK=(UOu$bFD7^7XvJN9 zP~ucU(1okveVKQE zTyFp-=*DQpXbVK7a#Lu5>R`ALXwA<`A9Lef7Nf)RF8GUfEUf)0D7`S2z5S)%o~)jE zmj`dH4&#&x5|}D~kYr6l3CXlL$c)@J@n=a#BZJOf74kPM&@1E8lH1Ewl4_L;jQ&-< g8$Pc_0sJV`Cx?MW&;S4c literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/resource/ModuleEventWatcher$Progress.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/resource/ModuleEventWatcher$Progress.class new file mode 100644 index 0000000000000000000000000000000000000000..40c9c1bbd699da62f69f4ca0f5124682870da105 GIT binary patch literal 438 zcmbVIO-sW-6r5LM(#EQ(BK`pn(Sr+KJoF-ng@96_qUX(KO;WbIC13j6Jop3rQQ~$H zBIwD>n>oyzH}gI|-`)XS;4r{mfC*tcm3gTNUYwjh5+>`)ao$*r1jBxgc^vCi;QJEK>DmmTU@}Emx)`iUwC(bZjn6?sfX1xf< zcP49KFo_He)S)FfU1UMjE3A18cl_^g-TXri}bDgE;mGO1SY<%a#emk7pf7c@n zdpb_EmX&KJZQrPGJ5QHVG=$54-t!5Bf&Dn(d4w%^me|7Z9R?UW93ixd0e0LRBeEFU KO~Nkr{m~b@Ie5JQ literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/resource/ModuleEventWatcher$WatchCallback.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/resource/ModuleEventWatcher$WatchCallback.class new file mode 100644 index 0000000000000000000000000000000000000000..1e56d4f7640f561751577459b70055548763dadb GIT binary patch literal 355 zcmbVIF;2rk5S$IcCMF4yDEI&cG@L}k11uv^APNxFd*>CgIp0}6$I06$cmR(=oYNpd zM>RXM+S$>3e!YJHxW+0)mSRCzZn-z>+&8V2UP{8j#pN?0D|SZOzVa@lSVsQnH=U8& z$_nA^-j^FI#UQSK8PBD=s(IiPCxpWIMzO6lYgYBpsKBn&ey6ytR3~BYqy9Ra@11hC zR5p>&|akk6~~AnI|C-Cb2Alrm+@G ZBR`C6#3XLgI8ShddBiMggc**L**8}WV@Ci0 literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/resource/ModuleEventWatcher.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/resource/ModuleEventWatcher.class new file mode 100644 index 0000000000000000000000000000000000000000..13891554d9472af136e0c2322227d6e7dd536b5b GIT binary patch literal 1862 zcmd5-%TC)s6g`)QIMDDaZBxRdEFv{XRY&TEMK(w%NS1LZ6_EC+4sa(Psb`02Prg+uWB!f71tNdf%4;4c4v;^zJs&SRpKycpJ|mwrY)f z@76)xHjZwh>F*r#uGZ}YO6m4`euwD9Eao(b%7 literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/resource/ModuleManager.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/resource/ModuleManager.class new file mode 100644 index 0000000000000000000000000000000000000000..2c34f2d35f24a49c2d1c2e3e73b4e730e471d47c GIT binary patch literal 803 zcma)4%SyvQ6ur||`ciAPTHoR-MR1@ip;C~dptQIsxae-0j&aI#rsPqIpXS03@T0_= zq^Klqah1%u=bU@*nfd&B{{Vm{oEvarz$t<3i}c-B0vU7AcqUN1n_GP939VcM&amuo zmwN=#W>C%fN@_MDP&2z@He*yWWz)Xr2xYfI0<%0Z`D}{^ty4i>nz9%H@ zXel`|wQ3P4^o6aM=Q}8Cub|y@Ej^)3iXj^^I-X6a%hYJ7=afwa?dg#(d8>_PX*-zq zdf9mYvA}t)jzWi}3qD|Z5|&HCy$v>H9$%HlfIwcjU5qQB6mhOc=G+U3TV5<3FAP*@ z8gOuvVqg1?#Un*ETCv9zv$=B>Pzf~GWrFt>>KEZGlmsfj_x3a#<0TNdT;~%t{&^KS z0t8a{gaFDJj2kj|&f+Qf<`6L;A43XIj3K22QcfTnu!*WIbWTA9eYc^CO$hA3Zp^Kg WK=xoi#;GTe133K4!T+PM*YP(H3b@+< literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/util/BehaviorDescriptor$Type.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/util/BehaviorDescriptor$Type.class new file mode 100644 index 0000000000000000000000000000000000000000..b92dbd78487984ba5be6f2e3c6ebd3fa1efc66c0 GIT binary patch literal 5826 zcmbtY3wTt;75-;mH`#1p-6RMJC?e8ilMo6tY7&sVfY6X2iHRXCa+55{;$}B)HWU;U z6{$}YD^^-mib@n;fF?w#_AlgW5W$kRfe5%R2%=Y%{jBhgkKQyqLA;)Hhv)FC1-;haISz` zIm_Wu&NAWZpebh+pqvXG4&_{;l*3u!bUHNrP{GwuTUDW;suWVoW6|z}9!)gpk)Du~ zrb9t1tF5iBEUgi!C|j@?}l+mBKp}+;xjVtg}Fmgj@6$yRvgX8OL9u{m3x)L2>dO~XtB}^C9WLK}z*XjikJ=$JSmxza> z?Zr9A;-_&5`fJ#IV#lZtC^XwY8xO6Hgjy2?Mv%pOTIuy;vq7~goM`*(SRYWBFw#LZ z+j7#h|Gl&%IG^#5To-PS>WQ8>UA^)%b|Wi}$*B!vePC%Q(GhDqHpQw_A#;rFTDld^ z$Y!7&lkKT>3BC2)rFxg;-BiY&JwDR2b8H4!A*e8E)L>apIMNo1)Ay6@?l4yjPD)Bl zT6uDN4tYZPV}*4KFLq`v27#o1@00lGcb-_?+4D32$AjC*B%b7?wJB{OFoJQ+DFR zYHasGM~M$DX!W5@xDZNch7YgcRUaZa--nI3M7T~LuEDiFoQ1P}XcDqQNVAZy2>Ggz zl|s%DvI=KwcunE7&wHnceeE>=Xs=t5?863J?8EE0(1)MmXF}d!VEFJR-jccNct7Mc z$nej3Og{VqZ_~v-{1WeI_>~X8#$_6Qqv5w2-qr9s4Zqj$2MzD}@JGDk!~1yKhd+t( z5AbIn{(=t`{KKZywya@AR+ut8G)A^C)ke>o;lvwhc*@9=5&F$IQb3E#YKVpD0h?@DEEWmrd`8%W%GM{SHf?y7oQB?NR65%M)^!-q5?g>& z#CnWZhD~T;B&IWDv~ag|oPMJYcXq|1p{VuTkcUT&Q4u_R(X=Nzj6Ly%>1mZP;Br@X zRZcmk@+n-zcikjpq8KH7ZO$WdU_S8~HoSni)P~E5%Wb%VxYC9f5-+mh#l%%MyoC76 zHe5}-)P`$_Yi)QL@tHQfoVd=0>xo%WXnUp<6{BZeF?yC3qi1z7dKMU?XN@s>mKmdG zrC}eCN@nydW=79?X7ns+>{I9+78H7_gJ>fW-}}f69)JpF^}!L$>w_~mr4O!PhN}NyN7d!*~-|O*)CzbkZl{Aj9+W@!e7a@)xxja#%0dlF1KN^-##a{Y~PQR zz5C%~OJy6!HlEGTb{t!PEp4xBUNCF&s=5B=ok-r~P`yV!HgWY%OdvKv@oj^X2a(?7 zPv)p=)d6G-tv*V?8_aU8n(S&55o1M4Fe`W{%fK|uJf4*}p3a$ub!s{`s2SL(vav}8 zafQmmHEJfVSF>=VnvI*)T}R;)Wagk=59XGdSY#dw1fLTz|C; ziHK9g*xdb?+?eYxHbv7%O-YKI$1n{^bV4itx?YV;)sB-@2ZAb$Vzma9DuMD6RJR~pWz?A4h6HPi^C|-87~*mcT4hZr*!?-k4|ehQ#HtH%zI~KG-tK2VQw| zaxKr@v4tL$bAK&&DGfh)J9_f=WBP6+`>W>nLMJ#yKm$QN!3+T_2o@21K|mQn5kariUk%^_^)N0~k1)UvVyk+T)$b5)QIFwv^*HWRPoPgdiRa0`q@KpB>KWslcd;&| z(eKyu+HkUl4RZNIT+tA>Xo#yH;`AXdI>aS-il)9k>K4v}-N?obtd(xug46L0Ud2w_ z&U`X&b)LBqOLP&r^O%8B(O$ugz>SQ9-7M2bo17}} zMHers2azJsr2?}}=o9ExfjK5j73ficxh5PZP*Z^~nQ*+oBo!z$p8vy{@FRe1AmM!jA!Y#Z&A*H QZ=;dDm#fpUmu~d_2c~RAd;kCd literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/util/BehaviorDescriptor.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/util/BehaviorDescriptor.class new file mode 100644 index 0000000000000000000000000000000000000000..2b2125293aa634c48721659dbdbc81345a75b881 GIT binary patch literal 1265 zcmbVLO>fgc5Pj=}IB}h}KuMvcl!l}vDb!LC5~5WP1R+%la7dL)PitpMHgfD}?L_de zK;lar_yPPV#H`~g6atkZOS?1UnR#z#-~Rad?K^-2JhWh9$3hrNI zK9Qk%E+S9KQ5>p@?s&+MJCcEnj~U9f)__mAUppKeWUyO`fL-~@Kn%e^9Fc9bc<-`T-%*_-OsOQ@y6JpcWTn(CE4pCla(R6 zh-Da9A@7WKgZ5(M3s__CD~wObd`Qw(X#7Z&Xn<>e{60P7e2d_=AQ literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/util/CacheGet$CacheLoadUnCaughtException.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/util/CacheGet$CacheLoadUnCaughtException.class new file mode 100644 index 0000000000000000000000000000000000000000..1c01ff2a66a95b38b544821f1f00ab0e2a566120 GIT binary patch literal 554 zcmb_ZO;5r=5Pe&LY6VdgVmNycOUD+!B{v=^fx4%Sy3VJ*N(RN9K*NgziiVWvf`24SS*TNiwo5^%yqHFJ#-)55X6K7Q z%`zPuf$EhpDsdx9Q^mCxUJy?uMcOByo^V|ktIS*PRairn8P}tR4c4$wXJ%m&>x|Aa I(_n1B0oP}eOaK4? literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/util/CacheGet.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/util/CacheGet.class new file mode 100644 index 0000000000000000000000000000000000000000..38e2271003acd102768d1df31f977506d11ea579 GIT binary patch literal 1418 zcma)6T~8B16g|@}EG=6Bk*|tC5s|h?6%>)y`hlXRpe7&&-=@okF0{K%yG8gb{t8S~ zf+YHG;$JeJ+450BA9%TY=iW1S&OLW#|NQ&;3&1phEEx998HP0@lmSs6D5L&S}9qH97%=VqnW>$0Q)wOh%sMd__*j`p3I1yhH z&=%Ycznbk>Z)>HzRauq!A|qFqTvHa;WW`qN%Eo)W9D#FUs2Vrt~*%J(VY|o=cFIPmA$E zNBHFVNR+<*7ku;G2-4>$XnUD|@2`Q*!~sO&2!Ztj1iwT3%3KhAwCYa*T!F?q{qzj( zBpw5Z@_YSUWRNR?8yMmqRsAn_1^Jy#e1n!eL`wi)5c3y_Pt>Is#J1?GU9@5>9BEx~23ITx$fion%<9j!9zD R$KF8)zhPq3zxE2E{{j5?M}`0Z literal 0 HcmV?d00001 diff --git a/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/util/GaArrayUtils.class b/sandbox-api/target/classes/com/alibaba/jvm/sandbox/api/util/GaArrayUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..957c5bade486993d9101e5c50b7c2062a178a2df GIT binary patch literal 909 zcmb7>%}(1u5Xb);+c7at2!zs43fzLFvJ%IFP^+q~D!KF!gQ{{`8!K$;*pa`f(0m6Kf7EJaS-SS&PRuR&1;?)VF0S z)eeKvUEgOgUu1_d!<;YEcy~Mu<2(>yLY@Ubi$t<7a;fj7(^N;YVBmg~4Y^2UC_=#p z$3tF-^f1gmaWRs7tYpGpi|2VRCVONTTMV`=UJgfU!m!jm@CV{p@I<72{w^HEk=k1S zz+efTz|grNPHETMnT)PlItT&+G9aloJLvR4xUakce*-LlO0*? zW~%J3(T|lMr+syFTd!~aQIXRpJ5tb$Y)mSbSib)m_wW5^K>pNYtI7RI&|tV9OD_oBH1&#IZ7kRpe4wOJSXmEJ{xXB|>Z`Unj)Ne#0Tm zR;A~h_1c!xsR_&F$U@b(gF zy+FF=sVMud>)3(xy-N;s3;d#JGzi6=YD?UUC~cTjh@!6Wn&!FH;>tpPG(^zt0hf>+ zk0MYwLHN#3qN?~c*5lpxXt}YdVy#jrsn*#NCNE^u6G5-T^rK?sc(lLL_~9Z9Gx8xv zzwmn<+c}YH(bsC6m zX_Zo8&|xvV__z752+Z@?vE@~#C(lYpDwg9Es-Dq57|(!UYyRI&n~{8P_IM%3nnb4Y+-VSCXX_KhSAZz;c6M2%a>?eM z_ikrC?$uhZwgNW2RET%T3lM%rpD9q+<& zK4Z;%_rOPtEk%TD3$-M_f?v)20^$+{A6n~9KoC*NVb1|=Xr~sGMW&Yw?yCp4nd9&c zBgBs~3Y{PIBDYmHRg_;aD8R4?7BHpJkhYDMh1_4nzXv2Oi>ckkzYgELE*%|MLdA!r zM86x$>gXRcu|j*yybNs^nz(3Q`5OLi<=sIHJ z9~R6b9w&^61j{AMwvP#A&7;D+;1(?~3|$?Cs*KSpVZjc`qitZfQq(szR4j`7v6_1l z%nv23Y~|z2d6%7(*)5hu5?(A47cgH!w3-P;xs2d{p`?kno5xAJD6+YXuA@k4E%Ahl zr@^<7a3OiUJUE|(3p3#Ql9bw!(h}ncrTm6pJ%>m_8Anr#c@CO7#+eAEbR`uqG(#Uj z%uo&gd9)`CweAxni!qu>*N} zKFgh69EDA-$hCwD%BXQYf#-3G(kpQA8V2w>EpK5E@6dV{L--Ic;1j%vPw^5i;$?h} zS20enZ}0|wz?=Ay@=rK}pYb++!Mpg4QGeh)T*dpihGDnOLu7fDOx9sN`}q|I^+8U0 z6SxUJ_%v8Pi*aJ@bR(w3^}>{szHC5^d%#UqsbJp1?Pq@=R~ y-(eFTmul=0kd6BlSC*rfNIdwTD4&w0*s`}5cL9{`?WdjbV4tHIPUfyV_r(XoO`0jmX6 zHLPh^XDIf#XT~9S#r_V%T;r7YxaD#G#M+NT>7VR$rPmap&5(~N5} zI1WNOb346E#gjK=$P)c{NSdu`$n%6ihFWSOY1OAD9xZc|BvSl#tqFNkQ{I}x{nriM)e7Pbr+m^7fH zXkZE?6K%kNt)XU+9G}tF@id5~L1LpkC}3Y(T4s&mdD`w2sz&l;m^s&dlFdLbFVgV- zDRhP{brno=oJ-RT{GCJ?jPI4k?E?ZHZpFK}y>a_%c`9G!#d3BV#{bpJ2F;vc{w?qZGr z=LsN3c7euwDbV@LpqB`G`O46XDbU(w&?^L8xgvCy>Qe+hpgyQd9$^W$$kVB&0$F-~ E1F#=v1poj5 literal 0 HcmV?d00001 diff --git a/sandbox-api/target/test-classes/com/alibaba/jvm/sandbox/qatest/api/AdviceListenerTestCase.class b/sandbox-api/target/test-classes/com/alibaba/jvm/sandbox/qatest/api/AdviceListenerTestCase.class new file mode 100644 index 0000000000000000000000000000000000000000..00f6b5d18a09b956e66eb3a76abc6157a7d8ef98 GIT binary patch literal 3138 zcmb_e-B%k$6#q@2*|2O|2wx?&LN%68*_LW84Ymb@mNtL_f=H`wk^z=3yRg{+TD4F9 z2mTSh_~1(-a`X@AgD;-roBk;t@62wRq%nMWnv*kk_Rh@x_}x2q?(=_s`3=A@o~dZV zO$8$=LW15>Q7>phMHr(B-WT+C1a}&77h?*>RcM%K#0QuZC#DqK6B6#Ln8t$$9!8K< zFr%UgvyGU;hYCJYaRKuYEC|VqDn7=Nm@SLp69p>@K2_0;n<~1n8o?t4j~TRS+ve_s zWn{BF%MczlZPUBWP}keH#85xsWH`h5q-pcn+*XRai$=;KPBiJH4Qt78P4OKt>%9$= zWF(SlXG=FMGi9UZfu+SSZ3Eu^Q4*eIO$&`_Jon;35Kg; zOFUk=9*;ZrIA3#IPLp}=Qob;0^#~sg^R))JXP9|sZ$z5)H%Z8WU z;4Z_1lh`E0=rhO2A`=zQHPU=xoS`$hY3v%hW!UTbg6Ep{dSC7x5NCT-WS1zUlmVH-Pv-9sYKL%y91 zt-XC!;itfrc{rEac1 zEu+0PFRO@@%d_%k&`o{$o+m`jQXE^BGlu4AnR{d>6^DRl^p?d;@)CVVsyjNX<5emM zl24h%cq+s8<;*q3d(4$E2PxV26iRAC~PEVIbM~Vm*%h*9)os#1h!Nh9Wv4ADQK74vS zWMqT7HF$Jnxvc7PudEFnm424l(NubX$EX!@J!*|aPvm-&J2}ImE~BUXiUlYC+o!O_ z?R9TMHc`{mQ)RftJ$l72k@o5*qtr3PDy@4_63KL2Mx44o@e6@bMed=om%enOjOdyE z0@zP-xsS%MWS&Jo%{6}m1~5op^fu7pI&qj~&`2}j??Z%E3aCpSqMqoPnL~tE1`1H3 zkvtlr>H!)!kc#eD^IN_I3hn8(GR@!DV=O)ll}`Y9!L1riU@O(tJ1;0<5yn^kg4sLY~;ylp`Q z?bJ7SAVv*y7di=%7_JjKH zk6?gq1b<>k2BitVleB9Tu3^$yPq<&lJ2VrKd6#GiH{|#p-Xa7nyGwhFa07Mz IVeoLnzbO8qvH$=8 literal 0 HcmV?d00001 diff --git a/sandbox-api/target/test-classes/com/alibaba/jvm/sandbox/qatest/api/EventWatchBuilderTestCase.class b/sandbox-api/target/test-classes/com/alibaba/jvm/sandbox/qatest/api/EventWatchBuilderTestCase.class new file mode 100644 index 0000000000000000000000000000000000000000..7f0e59fe249c17387343c3de2aa2d6a65b4f5c3e GIT binary patch literal 6115 zcmcIoZFm${6@F*4$!s=L2r0z|C zhE^@LVAa}Mt!OJ%i=RbBEw+RdLF>2GR;}M!|NG0I{`B#^GqYd$Skg3RpWHj=%$;-3 zdGCA9y)&==_vNbqHshaR>_D%K{b2+|e;|yY==;K`K);Lu(GP}junLE8xC-|{t-=rz zqDhKIlW`=BYV-;rRZgSgPZs8e!_YBOiK8&W7=>n?GnnOb-faT%~n#Aur#il zT1RGdNV9v?A%mKlxRp?iUe(rx>??!Lu%4E%J)W>eW2&JKsY7aPWPCK1R?Xy)H4!_e zI$GL^sbhMqWn43z{i>4~-kH&jBn|UUvzpc#B}BxiNMy#4NW`@4QPqex zN`&|-OM(b-utCH)*pLtM*9>y#xT6gY3?5YQ8@xs~G;HV`*KAu)Y6@N#nyQ8kEfWcC zOfX)-Z-uI%RIon3ni2^nV5^~~(lUOh;P-e##vc^?5r2}fEDw2`>5#r;ZD3%hf9dO>UyHC?vMW5Rl5l## z+>d09EZ#zABOy3UDp!(Vm-etIKZ?ur!W`3VPQNUrIqt67b9_u|vTc?7eo$OX*c7cB zD4AiJIEi^1S42EQbJh6+M^iej*(^E=D+VuGj%8GXb)h`Edv_gA%m0wDu@uLr8|Mk4 ztEFdOR|gCHTlH$r?XRGcW*ps!HI3lU@+P*>SjgHJzbsqyLqv*rM0uGg}YXBQ#^jSSjrCa?qy>Q#@jmhz>4fLxm;>@50_gbfL;at(6QRY^|ku zQIrNV&V!LXs>4&J=`pyfNGk7Y+0}A@=fjfpnZJGdeX?}QmfBDk%LzfSp+bHx_NL_R z-8`ka)m63CQH=--fSDObqJ?>|*i&aWFCtyTM9jb2__HsgGIz4_bxWt6I#^*z&<=Xd zU609ynlWh(}!s9nrR#CTD79L1`A1C?F!8npM*>b-pHhZZAn% z?V2-eC9{)u&Nk^R_U5Om<2Q>pSxHKvP=d+1?NP$|QYH!t`ZZoiN=$}zct5|sh`(}3 z;(d>8Go=`NNoY4rLVAH00o={D!c|tIh1ZHV0Ik?XiFJSv2gJkDE`Go%qwdOO1o|dX z7Qc)j`||e7sOYPogj^H4h{~Gq6siK4f+DfGPBcrniA`Z?fUiE)d|=rWY69559M{)h z#0^(ZUBZeBc!#*Ygc~oR_5xNG3abi*)rG=Mg~FOb;pV&$=H=Qctdro*ln=TK%NfiH zgm5FjGOgrq6>i3AL~s-8um%m3ZpB*SxQ<}F3thZ(7`MQ{yKx-r`K2d{r#SLCY`}Tc z^ObI+3*cH0Bp<*KUP2po6Ub_gx)*VR+0J>-5v2-$v)I6x5l2x31$93Y5;1o0q2JVX%hTM&qQb0EHsO2J}jb)Jb# z@e5c#iD*sTMQo_4ce6Zr1);vOnvLC4cuxSn)Iceglio{dQ$gx)X6jGN$y|n(ZEoKf z6jkI_Ns^{;TLnLx)KYVMktRY-y+7BMi@2k^-1Fj2j_U3U)@&8Mf4@;&Phnfu(p|1$ zS1dHMU6>J5&bZ@F;2RTebms=;*X;pT3qa$#rEmj=xo$dZ!w6I0C@F1l6-UtvlOrq~ z!x%EK@gVz0Fo8$;+4*tyr*Q&jsX336cm=2U{pSQ;*jC&L)er+)tKc{3O*y-V|4y09hmo|2{m;elsi4A^v}^qLQqsz_aX! c*gwbq>-ZbK!Tu;-z_)kQ($fn3Vn^-&0Fc}KfB*mh literal 0 HcmV?d00001 diff --git a/sandbox-api/target/test-classes/com/alibaba/jvm/sandbox/qatest/api/mock/MockForBuilderModuleEventWatcher.class b/sandbox-api/target/test-classes/com/alibaba/jvm/sandbox/qatest/api/mock/MockForBuilderModuleEventWatcher.class new file mode 100644 index 0000000000000000000000000000000000000000..df83b55f8abafef00ea98ea6146ff6c1a16864f1 GIT binary patch literal 4851 zcmd5=TXz#x7~LmHGfk5U2qY*K+ynt1tcne}>C_&dlV}rqe`WEgpLAXYcQJzWLHW{`uuM0LNkVVGHIp zT$3S=HaBFmAU75@e4*i{hFcm=$%QX9+}7}whC2d-)?=&U-!gpj!Hioe z+rI5qZdmsP4$nO_9vgbiw;kPdD`w5}cu+Tdcf~gKY1Q$d#Z}Xq6v!;tOBKVfd6vLR zH+QGzOm{^$9J^$c4E^Eb6}@Uy$|d)yZmin6V^@8vVtKmt)YmVrmv!& zeDe*6py(qOMVwvr+$GPdRuyOO^>8MTD^@7yw6TZp||-{i<88Iab3Y zmNyddE7=B=Q5K)ATGO6qJfnmfz7|Ny6@hzQNpvUHM~WzL&WJ=;^yw+PV*6(Vl7-Qm zq@8igq}?)SSFHKkO3CsTjgrHaZF8<^I5!Q?mh*5iuz zBLyyO0@G1A2n<95*5g6oSYfnFzY6p`k(ol^&qA!p?%R&fH+xBSld(sg=z+J|A@)v3 zN_VN-Xi*>?$Sp7)OW&%UKyRdjz=_z4(YfHQH2J(Y$|C~jV-Y&ioXJ={$>62yT^d5* z`#0^}E+vw#`8!^wx@9-|OvGBXe)}zm!3;mP!Dm?DOlMMWq%#A$Y&n+CEPJU?jK%6G zu4Eq1s03hn#j=2)Us8plT<%rNc4bM!J%Rq9o-iDzWSGlB+>Li$>wAio^No2bmNm{g zEvm++x;U69<4<<`Hk41I+X9+$#7s%x@@rCwJ})=$`z}5;tyNhiRyBMh@Yh@G+E&N> z2ebAqs6vY$F+QOEn^hP`WVxKfhuF){M;E1Y4g=Vh!%o?}E1UOZ^DPX4ssB?L3mot0 zdP~Y{52rC_ouH+L4+@5!8dFix;0 zJuu8)f?GgCB86=-+&JFOACL*`;FytDpAT}(Ags@aIA%Q7=X;Rjm@&?FmAas(V3 zdj&D}D-yR~A^9^>jbTq?m~ITU7m9u#+d=fO%~G^}3b_?S6m36O^IVl=1jh(h!0`bb z42dV$%f0N_Pe{E)@9)U`$Y}x+GOf0Tnjo@uhyq62K=dexzO@j0+Cq$BybVNJL1foL z>}v~g2#4E1XbK{?7UDn~i03#0J%m_fFKw7e{;(D zR*p_!g3gqqlQ>0hNQRF?hFSJ0xwnqtsA3okb~j;=xJiY3I>h~sY*O;P^y2tS^t10d z6!huCL9gwmfBTz=gMgVpF9qF7$Xyh37^j<5&DRCV;}c9ORr7UK^L178p{mTZ_%syh zEX9##5RC{8!s)Cc*c)ut30R}ytRi6TPYWhEp2E2hY(mSWpnZiQfvJS*$zbXS4LsG(HRI z7r3fUtu@DdlfA_z^paHBG_-evDuFo?BybhG*$?qlmOkB;&ftCA#Runh<2>gx>CC@W C_)8H0 literal 0 HcmV?d00001 diff --git a/sandbox-api/target/test-classes/com/alibaba/jvm/sandbox/qatest/api/mock/MockForBuilderProgress.class b/sandbox-api/target/test-classes/com/alibaba/jvm/sandbox/qatest/api/mock/MockForBuilderProgress.class new file mode 100644 index 0000000000000000000000000000000000000000..e1736ce732f80f61377a943ade7481f113fefc01 GIT binary patch literal 1518 zcmbtTZBG+H5Pr7rEhmL42%-oIQi^hlA}R(&BBrs35rp`0yItDD>mFY3kno%QVxp30 z;t%jg8E5aVl!R)Gewo>~=b4#jW`F$r`W?U=9^{b4Od8j7h+!s+3~p#MtGA{$H`BP4 z##|bA81jzV@P&}A){638$sLB7$}ZpMrtev{DI6ty*OkgMx#u)3VJ-)*tUOtl?jl34 zqgJ_P%UT3#DKvb)h@Ku-R~(_qy!GAUDDN7AZ2&^#wy}hZJo!C}6Q1B$W^(HkH;4oFSBV zq7sswYU~LP+v(&s9N!gkmHNam(p|Gz-E{-K$TLj;^#mB`fnnf`HVc?Ca1T=qOaIqC zk~BylXvTVVR|+qU`!p86qt)X;eGiJHk*N8$e7a9VyUjh(knTi#E*LVMrBPN&xj=`%Ys4wxPq36K4(EIMLtdEq%_$++N~i@D`2E_ z1XlWn*qbB7KO@muCO^`34E9HnA5P6=+3$!yrIL_i6?P!uP7*WsDKBmt)1gYS0 zJ^&7eml04y&tr%z!!Rz8)!98KuR~@_pOE;1)OLqTmj(i7D6Y<9EPQxOm&FJ!5}d%e zM8q*#kK!^}P5hdCLf;W_vK#Rb5f2B%rSRb&h;@iD(p)Qf1y`dGkBDC9eyaS@6Zx`Z zT84?Bd@aOelX=MScJHw>hI-M!gJ4E(w zd<3^{+>jVInz-Nrd=Q_(6?*QVBv4k~#rgftIo~UN10-_O)^M@#?B zjvQwDIw&zrc2qBtI!)*%wXN>PIFnX`YE8XiTj<1T;s?)_xuJV){YPetB5dS~s9~Am z$$#FFVea}t=pMmQDnmMM`G(^*_pl6$K7x5UFhhc*L!KbbNZYI5z`kVZ36draDw!l% zya1qpDe~TvKTSdHp!Q~5jmElU&tNt~)iFnwd3D@EiO9@fLAjSG_YzemRE4}5 ZSm&5 + + + + + %d{yyyy-MM-dd HH:mm:ss} %5level %msg%n   + + + + + + + + \ No newline at end of file diff --git a/sandbox-common-api/pom.xml b/sandbox-common-api/pom.xml index b9672233..d823e237 100644 --- a/sandbox-common-api/pom.xml +++ b/sandbox-common-api/pom.xml @@ -6,7 +6,7 @@ sandbox com.alibaba.jvm.sandbox - 1.1.1 + 1.1.2-SNAPSHOT sandbox-common-api sandbox-common-api ${sandbox.version} diff --git a/sandbox-common-api/target/classes/com/alibaba/jvm/sandbox/api/Information$Mode.class b/sandbox-common-api/target/classes/com/alibaba/jvm/sandbox/api/Information$Mode.class new file mode 100644 index 0000000000000000000000000000000000000000..7e211bf85a93b1e35f47343ffd36155598816841 GIT binary patch literal 1167 zcmb7DZEw<06n-ug3SGA`Hg(|CP0;~EDsz5-DCj(>1#YxBc zVDR^rQ4^<*JK!VB5ea!b&k!uNTBY(!1~t(x)!$T_4944qlT5fhmh`z~YT?65*(+qV zZV9t79&}8%#XB~Yrg~YAP8psj>wP}qhRsFKXpUS<^zx}iMMmpRm)mXbS~C5NLlJyH zRMEflQ)>#AuttXrH~&FjOSNeRqjwfn9d24Z!AE14GWnA-5Gr)-+2P_`>WUZ-3XADJ zq#0>VXY6*(7nbZwWNwIA*%cj8xjgGSo*<`UpCPlz4(Qm#Qyq73SI06UI@SHqYI$Zt??IQQYJu_ zlmd~ste+wZ!q~tK(7edIPgXwK6zns67w~^1kKq=5gI=sk_)WxS_yhR7zgkpDe?i~^ zip2Y_;p6m2zeM3Sw!Ap?jZl&?2S2@ln%>(wNAQyuo~OGyuHv4Qj%^RKgAmExnF(o7 zA@a$7gK`{I{pSdsA?!Jt;yFu!?-cS+Y447eDVCaNV3O^!xD`)CotpF-aa76MrkD>8 Sknrq7tdi9TtssS!V(d55#|>`) literal 0 HcmV?d00001 diff --git a/sandbox-common-api/target/classes/com/alibaba/jvm/sandbox/api/Information.class b/sandbox-common-api/target/classes/com/alibaba/jvm/sandbox/api/Information.class new file mode 100644 index 0000000000000000000000000000000000000000..8b255194dee088bcb016f86fc6934849e1dcb779 GIT binary patch literal 903 zcmb7CU2hUW6g>k=7on|ftshuxYg;KKrW<|r#SNk*QfQV1V|i!>nBtJ#nPzv`*uUn3 zKfoVlyo-(SKw^EEk9+6Lz2}~LfByRZ1Hcb4Pp$Un%U<2%O$+zGfEI~@~AHGa#mR?{jrT$vsZrXmlUT(=+Hu7BG0 z@+dN7L?{l z$v0i4w3)fyiz_}248zI)2FbY}>n)#Q#r1u+c1nfI*c}>~h_-5KPQP41>V+?j8 zqL>&EoKMYH9WfL-dKwMI2N{rt8w)H?Qn?sP-c%VGik^(+AP{rPr19>8ApCDFj?bg9 zFjQbJNmXSySdOa)A{5H_H`l2emjC6v&al56>j^_pqE5*2KOpBiki#1S+FrNiH_j;P z@f}-363nNhJ(!3g^<;1ETBvfa1jDO4hM#r5%s?YWD@%I`Hu7}8M-9rLKz4D#UPaEL ziNrcU=Y4Dta+8p2ePjf-@F3l`>FFUJ-9BY6@R%G==+7T)Hik`((xRhCxu4E5?%)}n gJCu8u@Xz~T0(;oUi_{W0z#&!$P$1Kym3vqE4LQ5%*#H0l literal 0 HcmV?d00001 diff --git a/sandbox-common-api/target/classes/com/alibaba/jvm/sandbox/api/Module.class b/sandbox-common-api/target/classes/com/alibaba/jvm/sandbox/api/Module.class new file mode 100644 index 0000000000000000000000000000000000000000..1630ef51f33af5cf1b6a711d05dc80a3f2132fd1 GIT binary patch literal 121 zcmX^0Z`VEs1_mPrc6J6-|1OfSlaGW|kEjOir_%K{>s`ubK@+s^5QZS8HwC}`^f!kX`U{+hRA z2~abxYx!%Axxa7i3s}fjyjs$9?6O%lle-7C7ID_efSEITwpiKo{;2zV3E?wSW?(lOm?(y05kTU}0c zOgobGDyCC3eVf&37ZY8xMl~b<77`Fj*{)q*5iooWk4&N{K&*eXX%1n-uDWKu;Zvqy zoCV}m#c3bTTu80CjasV123BY(6vJ!y6>Gz0a~is`J~M1qDsHkRA5)RSO9@1NzM~CP zF@aYq9^j#hK@6)HVPcetC=)RZ3+O%nI;=ART@}Z38MS!gLf3kE*Q(Ts{`7xPA>tRO z&TrK6g`{WeaGAq$dX_G0gl>K)9c9b`(nOwX;?Fg;z%_LN^vBrD=!A$cZs9fr+#%~O zY4#{h2wxF6LGUwK0>(*(cq~o$365jk z4MpTeH#gKSZuD@YH^hxTZuCps7?6KbhG3KSyCgQzZIrs2=rKy6Ci;w$)Wm>s1cA|P tO(jM|0S!HPP5Yr!Uj>><39Cp`UoEPS@R%?G%-{xTg-(j}j~+@#{{m+`RqFr% literal 0 HcmV?d00001 diff --git a/sandbox-common-api/target/classes/com/alibaba/jvm/sandbox/api/ModuleException.class b/sandbox-common-api/target/classes/com/alibaba/jvm/sandbox/api/ModuleException.class new file mode 100644 index 0000000000000000000000000000000000000000..5bc9e0652537d98442f3be3f621a1586fce3ddf9 GIT binary patch literal 1207 zcmb_bTWi!n6#gdJOLrUHHQnmgYj3u@sWm8wXhnolp|JI(wcz6<8MafhNzJA9XDL_; zKKKLtQR10o$%a}Vw)iqL=WxzGJ zL{S)Rhn`?Cc7s4f+dhwD5i`uBf&83`U5~*W9P?9d`#c!h`$;5&;TE-uN$bmj8;)%5 zONTq$K0Y1UF%LW^JhSl6e0AG?&aD97W+5C2mU@sk%Ik zN%#Df6%4aOk$fy}s?+P2>WaHEsHm7a!z-$~?u9k?!!&Zmd#Q%mxpcKp)jKh86ORov zF>AoU4Hd32Y)nDOFgJN{#k*m6F$Kotl`-f&HOX%Iw#q}s5`B#t{TB_Ul1(R5DW|;x zM)F&jKQ$IEQ9EIfwp@QW|d2YElDmht@6{SfJLslmiy?Hq4wJiB8gEsPlF*GA%_b8*LQf}5SH^083S;PH|;sMPFq>!ObPG;UM F`~hM>7#9El literal 0 HcmV?d00001 diff --git a/sandbox-common-api/target/classes/com/alibaba/jvm/sandbox/api/resource/ConfigInfo.class b/sandbox-common-api/target/classes/com/alibaba/jvm/sandbox/api/resource/ConfigInfo.class new file mode 100644 index 0000000000000000000000000000000000000000..7b9235a78922b6ec98d239e333740911eeade067 GIT binary patch literal 1084 zcma)5O>@&Q5M7lJLnv+2CZVCFd=;9^Fqq-Wg-$6$h6XaE?Ey}*y$K4ol#!H7`qwz{ z1Nc!4Yt?n)PU&#b^J@3Kx02Ss|NQ&~0I#9#!LA3-7%UIbe&Pw5F%OYJt<^pn@hSIX zE{A^KY9WVj7VudYgNDH?VumX5c`O1RaDOySe8XiFsF}~l z!tcm|(h0Xh$=y_dR9A#Klst&>L>fLI$s4Wq*K@NEDxrAo+;$SVQYM82|DAH)?&^s5SBhk`pQ(lEX z&}MnM_zH1OQ5%{73i@iILwqk{dgs*xB?n@dj>yY&`WX1vjS~4evOlNMtjx#ub1=ft zdeCC<;yRtnBgtUzKg-Ju7%b7B1h7$}=YkRd;Z3;humX1+E@%693725S)vwZ8Cia@E zsAd)G8E*WuvIcd>Xk^;=V3SmwCOJ0?(fvZSMN!(_c7_i!+{y4EJaYNRX%E!r6SqEv PTZ9$zD8qB`-ZuXN>xUgJ literal 0 HcmV?d00001 diff --git a/sandbox-core/pom.xml b/sandbox-core/pom.xml index 4adce4fe..23b3c037 100755 --- a/sandbox-core/pom.xml +++ b/sandbox-core/pom.xml @@ -6,7 +6,7 @@ com.alibaba.jvm.sandbox sandbox - 1.1.1 + 1.1.2-SNAPSHOT sandbox-core sandbox-core ${sandbox.version} @@ -18,6 +18,7 @@ src/main/resources **/version + **/logo true @@ -52,10 +53,25 @@ true + + org.apache.maven.plugins + maven-surefire-plugin + + once + -Xbootclasspath/p:./src/test/resources/lib/sandbox-spy-1.1.0-for-qatest.jar + + + + + junit + junit + test + + com.sun tools @@ -152,12 +168,13 @@ 2.4.2 - + diff --git a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/CoreConfigure.java b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/CoreConfigure.java index e6a74aa0..a16011a2 100755 --- a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/CoreConfigure.java +++ b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/CoreConfigure.java @@ -9,13 +9,10 @@ import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; -import org.apache.tools.ant.DirectoryScanner; import java.io.File; import java.io.InputStream; -import java.util.HashMap; -import java.util.Map; -import java.util.Properties; +import java.util.*; /** * 内核启动配置 @@ -23,8 +20,8 @@ */ public class CoreConfigure { - private static final String KEY_NAMESPACE="namespace"; - private static final String DEFAULT_VAL_NAMESPACE="default"; + private static final String KEY_NAMESPACE = "namespace"; + private static final String DEFAULT_VAL_NAMESPACE = "default"; private static final String KEY_SANDBOX_HOME = "sandbox_home"; private static final String KEY_LAUNCH_MODE = "mode"; @@ -109,6 +106,7 @@ public static CoreConfigure getInstance() { /** * 获取容器的命名空间 + * * @return 容器的命名空间 */ public String getNamespace() { @@ -165,16 +163,30 @@ private static String[] replaceWithSysPropUserHome(final String[] pathArray) { * @return 用户模块加载文件/目录(集合) */ public synchronized File[] getUserModuleLibFiles() { - final DirectoryScanner scanner = new DirectoryScanner(); - scanner.setIncludes(getUserModuleLibPaths()); - scanner.setCaseSensitive(false); - scanner.scan(); - final String[] filePaths = scanner.getIncludedDirectories(); - final File[] files = new File[filePaths.length]; - for (int index = 0; index < filePaths.length; index++) { - files[index] = new File(filePaths[index]); + + final Collection foundModuleJarFiles = new LinkedHashSet(); + for (final String path : getUserModuleLibPaths()) { + final File fileOfPath = new File(path); + if(fileOfPath.isDirectory()) { + foundModuleJarFiles.addAll(FileUtils.listFiles(new File(path), new String[]{"jar"}, false)); + } else { + if(StringUtils.endsWithIgnoreCase(fileOfPath.getPath(), ".jar")) { + foundModuleJarFiles.add(fileOfPath); + } + } } - return GET_USER_MODULE_LIB_FILES_CACHE = files; + +// final DirectoryScanner scanner = new DirectoryScanner(); +// scanner.setIncludes(getUserModuleLibPaths()); +// scanner.setCaseSensitive(false); +// scanner.scan(); +// final String[] filePaths = scanner.getIncludedDirectories(); +// final File[] files = new File[filePaths.length]; +// for (int index = 0; index < filePaths.length; index++) { +// files[index] = new File(filePaths[index]); +// } + + return GET_USER_MODULE_LIB_FILES_CACHE = foundModuleJarFiles.toArray(new File[]{}); } // 用户模块加载文件/目录缓存集合 diff --git a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/CoreLauncher.java b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/CoreLauncher.java index 201130eb..8847a7bf 100755 --- a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/CoreLauncher.java +++ b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/CoreLauncher.java @@ -16,6 +16,11 @@ public CoreLauncher(final String targetJvmPid, final String agentJarPath, final String token) throws Exception { + System.out.println(String.format("attaching to JVM(%s), agent-jar=%s;", + targetJvmPid, + agentJarPath + )); + // 加载agent attachAgent(targetJvmPid, agentJarPath, token); @@ -40,7 +45,7 @@ public static void main(String[] args) { throw new IllegalArgumentException("illegal args"); } - new CoreLauncher(args[0],args[1],args[2]); + new CoreLauncher(args[0], args[1], args[2]); } catch (Throwable t) { t.printStackTrace(System.err); System.err.println("sandbox load jvm failed : " + getCauseMessage(t)); @@ -57,8 +62,8 @@ private void attachAgent(final String targetJvmPid, try { vmObj = VirtualMachine.attach(targetJvmPid); - if(vmObj!=null){ - vmObj.loadAgent(agentJarPath,cfg); + if (vmObj != null) { + vmObj.loadAgent(agentJarPath, cfg); } } finally { diff --git a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/enhance/EventEnhancer.java b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/enhance/EventEnhancer.java index b035cc16..84343980 100755 --- a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/enhance/EventEnhancer.java +++ b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/enhance/EventEnhancer.java @@ -6,7 +6,6 @@ import com.alibaba.jvm.sandbox.core.util.SpyUtils; import org.objectweb.asm.ClassReader; import org.objectweb.asm.ClassWriter; -import org.objectweb.asm.Opcodes; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/enhance/weaver/EventListenerHandlers.java b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/enhance/weaver/EventListenerHandlers.java index 5de9bf0f..f9121a79 100755 --- a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/enhance/weaver/EventListenerHandlers.java +++ b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/enhance/weaver/EventListenerHandlers.java @@ -22,6 +22,7 @@ import java.util.concurrent.ConcurrentHashMap; import static com.alibaba.jvm.sandbox.core.util.SandboxReflectUtils.unCaughtGetClassDeclaredJavaMethod; +import static org.apache.commons.lang3.StringUtils.join; /** * 事件处理 @@ -61,9 +62,13 @@ public EventPool getEventPool() { public void active(final int listenerId, final EventListener listener, final Event.Type[] eventTypeArray) { - final EventListenerWrap wrap = new EventListenerWrap(listener, eventTypeArray); + final EventListenerWrap wrap = new EventListenerWrap(listenerId, listener, eventTypeArray); globalEventListenerMap.put(listenerId, wrap); - logger.info("active listener success. listener-id={};listener={};", listenerId, listener); + logger.info("activated listener[id={};target={};] event={}", + listenerId, + listener, + join(eventTypeArray, ",") + ); } /** @@ -74,10 +79,14 @@ public void active(final int listenerId, public void frozen(int listenerId) { final EventListenerWrap wrap = globalEventListenerMap.remove(listenerId); if (null == wrap) { + logger.debug("ignore frozen listener[id={};], because not found."); return; } - logger.info("frozen listener success. listener-id={};listener={};", listenerId, wrap.listener); + logger.info("frozen listener[id={};target={};]", + listenerId, + wrap.listener + ); } /** @@ -103,8 +112,11 @@ private Spy.Ret handleEvent(final int listenerId, // 调用事件处理 listener.onEvent(event); if (logger.isDebugEnabled()) { - logger.debug("listener onEvent success, listener-id={};process-id={};invoke-id={};type={}", - listenerId, processId, invokeId, event.type + logger.debug("on-event: event|{}|{}|{}@listener|{}", + event.type, + processId, + invokeId, + listenerId ); } @@ -114,8 +126,13 @@ private Spy.Ret handleEvent(final int listenerId, catch (ProcessControlException pce) { final ProcessControlException.State state = pce.getState(); - logger.debug("listener onEvent change process, listener-id={};process-id={};invoke-id={};type={};state={};isIgnoreProcessEvent={};", - listenerId, processId, invokeId, event.type, state, pce.isIgnoreProcessEvent() + logger.debug("on-event: event|{}|{}|{};listener|{}, process-changed: {}. isIgnoreProcessEvent={};", + event.type, + processId, + invokeId, + listenerId, + state, + pce.isIgnoreProcessEvent() ); final EventListenerWrap.EventProcess eventProcess = wrap.eventProcessRef.get(); @@ -130,15 +147,21 @@ private Spy.Ret handleEvent(final int listenerId, // 立即返回对象 case RETURN_IMMEDIATELY: { - logger.debug("enter process control flow, return immediately " - + "listener-id={};" - + "process-id={};" - + "invoke-id={};" - + "type={};" - + "return={};" - + "isIgnoreProcessEvent={};", - listenerId, processId, invokeId, event.type, pce.getRespond(), pce.isIgnoreProcessEvent() - ); + + // 将BEFORE压入的堆栈弹出 + if (event instanceof BeforeEvent) { + final GaStack stack = wrap.eventProcessRef.get().processStack; + stack.pop(); + wrap.cleanIfLast(); + if (logger.isDebugEnabled()) { + logger.debug("invoke-stack mock pop, IMMEDIATELY-RETURN deep={};listener={};pid={};iid={}", + stack.deep(), + listenerId, + processId, + invokeId + ); + } + } // 如果已经禁止后续返回任何事件了,则不进行后续的操作 if (pce.isIgnoreProcessEvent()) { @@ -171,16 +194,22 @@ private Spy.Ret handleEvent(final int listenerId, // 立即抛出异常 case THROWS_IMMEDIATELY: { + // 将BEFORE压入的堆栈弹出 + if (event instanceof BeforeEvent) { + final GaStack stack = wrap.eventProcessRef.get().processStack; + stack.pop(); + wrap.cleanIfLast(); + if (logger.isDebugEnabled()) { + logger.debug("invoke-stack mock pop, IMMEDIATELY-THROWS deep={};listener={};pid={};iid={}", + stack.deep(), + listenerId, + processId, + invokeId + ); + } + } + final Throwable throwable = (Throwable) pce.getRespond(); - logger.debug("enter process control flow, throws immediately " - + "listener-id={};" - + "process-id={};" - + "invoke-id={};" - + "type={};" - + "throws={};" - + "isIgnoreProcessEvent={}", - listenerId, processId, invokeId, event.type, throwable, pce.isIgnoreProcessEvent() - ); // 如果已经禁止后续返回任何事件了,则不进行后续的操作 if (pce.isIgnoreProcessEvent()) { @@ -216,23 +245,8 @@ private Spy.Ret handleEvent(final int listenerId, } // 什么都不操作,立即返回 - case NONE_IMMEDIATELY: { - logger.debug("enter process control flow, none immediately " - + "listener-id={};" - + "process-id={};" - + "invoke-id={};" - + "type={};" - + "isIgnoreProcessEvent={}", - listenerId, processId, invokeId, event.type, pce.isIgnoreProcessEvent() - ); - return Spy.Ret.newInstanceForNone(); - } - - // 未知的流程变更状态,基本上而言,不可能到达这里 + case NONE_IMMEDIATELY: default: { - logger.warn("unknow process control, listener-id={};process-id={};invoke-id={};state={};type={};", - listenerId, processId, invokeId, state, event.type - ); return Spy.Ret.newInstanceForNone(); } } @@ -245,16 +259,17 @@ private Spy.Ret handleEvent(final int listenerId, // 如果当前事件处理器是可中断的事件处理器,则对外抛出UnCaughtException // 中断当前方法 if (isInterruptEventHandler(listener.getClass())) { - logger.warn("occur error on event-listener, invoke will be interrupted. listener-id={};process-id={};invoke-id={};type={};", - listenerId, processId, invokeId, event.type, throwable - ); throw throwable; } // 普通事件处理器则可以打个日志后,直接放行 else { - logger.warn("occur error on event-listener, listener-id={};process-id={};invoke-id={};type={};", - listenerId, processId, invokeId, event.type, throwable + logger.debug("on-event: event|{}|{}|{};listener|{} occur an error.", + event.type, + processId, + invokeId, + listenerId, + throwable ); } } @@ -338,7 +353,7 @@ private Spy.Ret handleOnBefore(final int listenerId, // 如果尚未注册,则直接返回,不做任何处理 if (null == wrap) { - logger.debug("listener was not active yet, ignore this process. id={};", listenerId); + logger.debug("listener={} is not activated, ignore processing before-event.", listenerId); return Spy.Ret.newInstanceForNone(); } @@ -357,6 +372,15 @@ private Spy.Ret handleOnBefore(final int listenerId, // 将当前调用压栈 stack.push(invokeId); + if (logger.isDebugEnabled()) { + logger.debug("invoke-stack push, deep={};listener={};pid={};iid={}", + stack.deep(), + listenerId, + processId, + invokeId + ); + } + // 如果当前处理ID被忽略,则立即返回 // 放在stack.push后边是为了对齐执行栈 if (eventProcess.isIgnoreProcessEvent(processId)) { @@ -365,10 +389,6 @@ private Spy.Ret handleOnBefore(final int listenerId, eventProcess.cleanIgnoreProcessEvent(); } - if (logger.isDebugEnabled()) { - logger.debug("push invoke stack, process-id={};invoke-id={};", processId, invokeId); - } - final BeforeEvent event = eventPool.borrowBeforeEvent( processId, invokeId, @@ -386,6 +406,16 @@ private Spy.Ret handleOnBefore(final int listenerId, } } + /* + * 判断堆栈是否错位 + */ + private boolean isStackErrorPosition(final int processId, + final int invokeId, + final GaStack stack) { + return (processId == invokeId && !stack.isEmpty()) + || (processId != invokeId && stack.isEmpty()); + } + private Spy.Ret handleOnEnd(final int listenerId, final Object object, final boolean isReturn) throws Throwable { @@ -394,7 +424,7 @@ private Spy.Ret handleOnEnd(final int listenerId, // 如果尚未注册,则直接返回,不做任何处理 if (null == wrap) { - logger.debug("listener-id={} was not active yet, ignore this process.", listenerId); + logger.debug("listener={} is not activated, ignore processing return-event|throws-event.", listenerId); return Spy.Ret.newInstanceForNone(); } @@ -411,6 +441,22 @@ private Spy.Ret handleOnEnd(final int listenerId, final int processId = stack.peekLast(); final int invokeId = stack.pop(); + wrap.cleanIfLast(); + + if (logger.isDebugEnabled()) { + logger.debug("invoke-stack pop, deep={};listener={};pid={};iid={}", + stack.deep(), + listenerId, + processId, + invokeId + ); + } + + // 如果PID==IID说明已经到栈顶,此时需要核对堆栈是否为空 + // 如果不为空需要输出日志进行告警 + if (isStackErrorPosition(processId, invokeId, stack)) { + logger.warn("stack error position. deep={};listener={};", stack.deep(), listenerId); + } // 忽略事件处理 // 放在stack.pop()后边是为了对齐执行栈 @@ -469,7 +515,7 @@ private void handleOnLine(final int listenerId, final int lineNumber) throws Throwable { final EventListenerWrap wrap = globalEventListenerMap.get(listenerId); if (null == wrap) { - logger.debug("listener-id={} was not active yet, ignore this process.", listenerId); + logger.debug("listener={} is not activated, ignore processing line-event.", listenerId); return; } @@ -505,7 +551,7 @@ private void handleOnCallBefore(final int listenerId, final String desc) throws Throwable { final EventListenerWrap wrap = globalEventListenerMap.get(listenerId); if (null == wrap) { - logger.debug("listener-id={} was not active yet, ignore this process.", listenerId); + logger.debug("listener={} is not activated, ignore processing call-before-event.", listenerId); return; } @@ -543,7 +589,7 @@ private void handleOnCallReturn(final int listenerId) throws Throwable { final EventListenerWrap wrap = globalEventListenerMap.get(listenerId); if (null == wrap) { - logger.debug("listener-id={} was not active yet, ignore this process.", listenerId); + logger.debug("listener={} is not activated, ignore processing call-return-event.", listenerId); return; } @@ -574,7 +620,7 @@ private void handleOnCallThrows(final int listenerId, final String throwException) throws Throwable { final EventListenerWrap wrap = globalEventListenerMap.get(listenerId); if (null == wrap) { - logger.debug("listener-id={} was not active yet, ignore this process.", listenerId); + logger.debug("listener={} is not activated, ignore processing call-throws-event.", listenerId); return; } @@ -625,6 +671,7 @@ void cleanIgnoreProcessEvent() { } + private final int listenerId; private final EventListener listener; private final ThreadLocal eventProcessRef = new ThreadLocal() { @Override @@ -633,17 +680,29 @@ protected EventProcess initialValue() { } }; - private EventListenerWrap(final EventListener listener, + private EventListenerWrap(final int listenerId, + final EventListener listener, final Event.Type[] eventTypeArray) { - if(isInterruptEventHandler(listener.getClass())) { + this.listenerId = listenerId; + + if (isInterruptEventHandler(listener.getClass())) { this.listener = new InterruptedEventListenerImpl( - new SeparateImmediatelyEventListener(eventTypeArray, listener, eventPool) + new SeparateImmediatelyEventListener(listener, eventTypeArray, eventPool) ); } else { - this.listener = new SeparateImmediatelyEventListener(eventTypeArray, listener, eventPool); + this.listener = new SeparateImmediatelyEventListener(listener, eventTypeArray, eventPool); } } + + void cleanIfLast() { + final EventProcess eventProcess = eventProcessRef.get(); + if (eventProcess.processStack.isEmpty()) { + eventProcessRef.remove(); + logger.debug("clean TLS: listener-wrap, listener={};", listenerId); + } + } + } @Interrupted diff --git a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/enhance/weaver/SeparateImmediatelyEventListener.java b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/enhance/weaver/SeparateImmediatelyEventListener.java index cafc8068..f294be5b 100755 --- a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/enhance/weaver/SeparateImmediatelyEventListener.java +++ b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/enhance/weaver/SeparateImmediatelyEventListener.java @@ -6,6 +6,8 @@ import com.alibaba.jvm.sandbox.core.util.EventPool; import org.apache.commons.lang3.ArrayUtils; +import static com.alibaba.jvm.sandbox.core.enhance.weaver.SeparateImmediatelyEventListener.Step.*; + /** * 用于分离"立即返回"/"返回"和"立即异常抛出事件"/"异常抛出事件" * Created by luanjia@taobao.com on 2017/2/26. @@ -21,16 +23,17 @@ enum Step { private final ThreadLocal stepRef = new ThreadLocal() { @Override protected Step initialValue() { - return Step.STEP_ORIGINAL_EVENT; + return STEP_ORIGINAL_EVENT; } }; + private final EventListener listener; private final EventPool eventPool; private final Event.Type[] eventTypeArray; - public SeparateImmediatelyEventListener(final Event.Type[] eventTypeArray, - final EventListener listener, + public SeparateImmediatelyEventListener(final EventListener listener, + final Event.Type[] eventTypeArray, final EventPool eventPool) { this.listener = listener; this.eventPool = eventPool; @@ -40,6 +43,17 @@ public SeparateImmediatelyEventListener(final Event.Type[] eventTypeArray, @Override public void onEvent(final Event event) throws Throwable { + // 只有BEFORE/RETURN/THROWS事件才需要进行分离 + if (!(event instanceof BeforeEvent) + && !(event instanceof ReturnEvent) + && !(event instanceof ThrowsEvent)) { + if(!ArrayUtils.contains(eventTypeArray, event.type)) { + return; + } + listener.onEvent(event); + return; + } + // 分离Immediately事件 final Event replaceEvent; final Step step = stepRef.get(); @@ -61,10 +75,11 @@ public void onEvent(final Event event) throws Throwable { } } + // 驱动分离后的事件 try { - stepRef.set(Step.STEP_ORIGINAL_EVENT); + stepRef.set(STEP_ORIGINAL_EVENT); - // 如果当前事件不在事件监听范围,则直接忽略什么都不用处理 + // 如果当前事件(分离之后)不在事件监听范围,则直接忽略什么都不用处理 if (!ArrayUtils.contains(eventTypeArray, replaceEvent.type)) { return; } @@ -76,16 +91,16 @@ public void onEvent(final Event event) throws Throwable { switch (pce.getState()) { case RETURN_IMMEDIATELY: { - stepRef.set(Step.STEP_IMMEDIATELY_RETURN_EVENT); + stepRef.set(STEP_IMMEDIATELY_RETURN_EVENT); break; } case THROWS_IMMEDIATELY: { - stepRef.set(Step.STEP_IMMEDIATELY_THROWS_EVENT); + stepRef.set(STEP_IMMEDIATELY_THROWS_EVENT); break; } case NONE_IMMEDIATELY: default: { - stepRef.set(Step.STEP_ORIGINAL_EVENT); + stepRef.set(STEP_ORIGINAL_EVENT); break; } } @@ -93,10 +108,13 @@ public void onEvent(final Event event) throws Throwable { throw pce; } finally { - if (replaceEvent instanceof ImmediatelyReturnEvent - || replaceEvent instanceof ImmediatelyThrowsEvent) { + + // 发生了事件分离才需要归还 + if (replaceEvent != event + && (replaceEvent instanceof ImmediatelyReturnEvent || replaceEvent instanceof ImmediatelyThrowsEvent)) { eventPool.returnEvent(replaceEvent); } + } } diff --git a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/EventWeaver.java b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/EventWeaver.java index 10d9fca5..e3f11522 100755 --- a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/EventWeaver.java +++ b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/EventWeaver.java @@ -125,23 +125,25 @@ private String getBehaviorSignCode(final String name, return signCode; } - @Override public MethodVisitor visitMethod(final int access, final String name, final String desc, final String signature, final String[] exceptions) { final MethodVisitor mv = super.visitMethod(access, name, desc, signature, exceptions); final String signCode = getBehaviorSignCode(name, desc); if (!isMatchedBehavior(signCode)) { - logger.debug("rewrite method listener[id:{};ns:{};] {} was not matched.", listenerId, namespace, signCode); + logger.debug("non-rewrite method {} for listener[id={}];", + signCode, + listenerId + ); return mv; } - logger.info("rewrite method listener[id:{};ns:{};event:{}] {} was matched. ;", + logger.info("rewrite method {} for listener[id={}];event={};", + signCode, listenerId, - namespace, - join(eventTypeArray, ","), - signCode + join(eventTypeArray, ",") ); + return new ReWriteMethod(api, new JSRInlinerAdapter(mv, access, name, desc, signature, exceptions), access, name, desc) { private final Label beginLabel = new Label(); diff --git a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/manager/CoreModuleManager.java b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/manager/CoreModuleManager.java index 9086a962..68b2a09b 100755 --- a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/manager/CoreModuleManager.java +++ b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/manager/CoreModuleManager.java @@ -38,12 +38,12 @@ public interface CoreModuleManager { * 冻结模块 * 模块冻结时候将会失去所有事件的监听 * - * @param coreModule 模块业务对象 - * @param isForce 是否强制冻结 - * 强制冻结模块将会主动忽略冻结失败情况,强行将模块所有的事件监听行为关闭 + * @param coreModule 模块业务对象 + * @param isIgnoreModuleException 是否忽略模块异常 + * 强制冻结模块将会主动忽略冻结失败情况,强行将模块所有的事件监听行为关闭 * @throws ModuleException 冻结模块失败 */ - void frozen(CoreModule coreModule, boolean isForce) throws ModuleException; + void frozen(CoreModule coreModule, boolean isIgnoreModuleException) throws ModuleException; /** * 列出所有的模块 @@ -72,12 +72,12 @@ public interface CoreModuleManager { /** * 卸载模块 * - * @param coreModule 模块 - * @param isForce 是否强制卸载 + * @param coreModule 模块 + * @param isIgnoreModuleException 是否忽略模块异常 * @return 返回被卸载的模块 * @throws ModuleException 卸载模块失败 */ - CoreModule unload(CoreModule coreModule, boolean isForce) throws ModuleException; + CoreModule unload(CoreModule coreModule, boolean isIgnoreModuleException) throws ModuleException; } diff --git a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/manager/impl/DefaultCoreModuleManager.java b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/manager/impl/DefaultCoreModuleManager.java index 695d0b1c..7fd8dfeb 100755 --- a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/manager/impl/DefaultCoreModuleManager.java +++ b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/manager/impl/DefaultCoreModuleManager.java @@ -11,7 +11,6 @@ import com.alibaba.jvm.sandbox.core.manager.ModuleLifeCycleEventBus; import com.alibaba.jvm.sandbox.core.manager.ProviderManager; import org.apache.commons.io.FileUtils; -import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.reflect.FieldUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -19,7 +18,6 @@ import javax.annotation.Resource; import java.io.File; import java.io.IOException; -import java.lang.instrument.ClassFileTransformer; import java.lang.instrument.Instrumentation; import java.lang.reflect.Field; import java.util.*; @@ -27,7 +25,7 @@ import static com.alibaba.jvm.sandbox.api.ModuleException.ErrorCode.*; import static com.alibaba.jvm.sandbox.core.manager.ModuleLifeCycleEventBus.Event.LOAD_COMPLETED; -import static org.apache.commons.io.FileUtils.listFiles; +import static org.apache.commons.lang3.reflect.FieldUtils.writeField; /** * 默认的模块管理实现 @@ -36,10 +34,11 @@ public class DefaultCoreModuleManager implements CoreModuleManager { private final Logger logger = LoggerFactory.getLogger(getClass()); - private final Instrumentation inst; - private final CoreLoadedClassDataSource classDataSource; + private final CoreConfigure cfg; + private final Instrumentation inst; private final ClassLoader sandboxClassLoader; + private final CoreLoadedClassDataSource classDataSource; private final ModuleLifeCycleEventBus moduleLifeCycleEventBus; private final ProviderManager providerManager; @@ -52,23 +51,23 @@ public class DefaultCoreModuleManager implements CoreModuleManager { /** * 模块模块管理 * - * @param inst inst - * @param classDataSource 已加载类数据源 * @param cfg 模块核心配置 + * @param inst inst * @param sandboxClassLoader 沙箱加载ClassLoader + * @param classDataSource 已加载类数据源 * @param moduleLifeCycleEventBus 模块生命周期通知总线 * @param providerManager 服务提供者管理器 */ - public DefaultCoreModuleManager(final Instrumentation inst, - final CoreLoadedClassDataSource classDataSource, - final CoreConfigure cfg, + public DefaultCoreModuleManager(final CoreConfigure cfg, + final Instrumentation inst, final ClassLoader sandboxClassLoader, + final CoreLoadedClassDataSource classDataSource, final ModuleLifeCycleEventBus moduleLifeCycleEventBus, final ProviderManager providerManager) { - this.inst = inst; - this.classDataSource = classDataSource; this.cfg = cfg; + this.inst = inst; this.sandboxClassLoader = sandboxClassLoader; + this.classDataSource = classDataSource; this.moduleLifeCycleEventBus = moduleLifeCycleEventBus; this.providerManager = providerManager; @@ -81,8 +80,8 @@ public DefaultCoreModuleManager(final Instrumentation inst, // 初始化加载所有的模块 try { reset(); - } catch (ModuleException e) { - logger.warn("init module[id={};] occur error={}.", e.getUniqueId(), e.getErrorCode(), e); + } catch (Throwable cause) { + logger.warn("reset occur error when initializing.", cause); } } @@ -96,7 +95,7 @@ private File[] mergeFileArray(File[] aFileArray, File[] bFileArray) { /* * 通知模块生命周期 */ - private void fireModuleLifecycle(final CoreModule coreModule, final ModuleLifeCycleEventBus.Event e) throws ModuleException { + private void callAndFireModuleLifeCycle(final CoreModule coreModule, final ModuleLifeCycleEventBus.Event e) throws ModuleException { if (coreModule.getModule() instanceof ModuleLifecycle) { final ModuleLifecycle moduleLifecycle = (ModuleLifecycle) coreModule.getModule(); final String uniqueId = coreModule.getUniqueId(); @@ -141,14 +140,14 @@ private void fireModuleLifecycle(final CoreModule coreModule, final ModuleLifeCy }// switch } + // 这里要对LOAD_COMPLETED事件做特殊处理 + // 因为这个事件处理失败不会影响模块变更行为,只做简单的日志处理 if (e == LOAD_COMPLETED && coreModule.getModule() instanceof LoadCompleted) { - final String uniqueId = coreModule.getUniqueId(); - final LoadCompleted loadCompleted = (LoadCompleted) coreModule.getModule(); try { - loadCompleted.loadCompleted(); - } catch (Throwable throwable) { - logger.warn("module[id={}] occur error when load completed.", uniqueId, throwable); + ((LoadCompleted) coreModule.getModule()).loadCompleted(); + } catch (Throwable cause) { + logger.warn("loading module occur error when load-completed. module={};", coreModule.getUniqueId(), cause); } } @@ -156,69 +155,6 @@ private void fireModuleLifecycle(final CoreModule coreModule, final ModuleLifeCy moduleLifeCycleEventBus.fire(coreModule, e); } - - private void injectRequiredResource(final CoreModule coreModule) throws IllegalAccessException { - - final Module module = coreModule.getModule(); - final Field[] resourceFieldArray = FieldUtils.getFieldsWithAnnotation(module.getClass(), Resource.class); - if (ArrayUtils.isEmpty(resourceFieldArray)) { - return; - } - - for (final Field resourceField : resourceFieldArray) { - final Class fieldType = resourceField.getType(); - - // LoadedClassDataSource对象注入 - if (LoadedClassDataSource.class.isAssignableFrom(fieldType)) { - FieldUtils.writeField(resourceField, module, classDataSource, true); - } - - // ModuleEventWatcher对象注入 - else if (ModuleEventWatcher.class.isAssignableFrom(fieldType)) { - final ModuleEventWatcher moduleEventWatcher = new DefaultModuleEventWatcher( - inst, - classDataSource, - coreModule, - cfg.isEnableUnsafe(), - cfg.getNamespace() - ); - moduleLifeCycleEventBus.append((DefaultModuleEventWatcher) moduleEventWatcher); - FieldUtils.writeField(resourceField, module, moduleEventWatcher, true); - } - - // ModuleController对象注入 - else if (ModuleController.class.isAssignableFrom(fieldType)) { - final ModuleController moduleController = new DefaultModuleController(coreModule, this); - FieldUtils.writeField(resourceField, module, moduleController, true); - } - - // ModuleManager对象注入 - else if (ModuleManager.class.isAssignableFrom(fieldType)) { - final ModuleManager moduleManager = new DefaultModuleManager(this); - FieldUtils.writeField(resourceField, module, moduleManager, true); - } - - // ConfigInfo注入 - else if (ConfigInfo.class.isAssignableFrom(fieldType)) { - final ConfigInfo configInfo = new DefaultConfigInfo(cfg); - FieldUtils.writeField(resourceField, module, configInfo, true); - } - - // EventMonitor注入 - else if (EventMonitor.class.isAssignableFrom(fieldType)) { - FieldUtils.writeField(resourceField, module, new DefaultEventMonitor(), true); - } - - // 其他情况需要输出日志警告 - else { - logger.warn("inject required @Resource field[name={};] into module[id={};class={};namespace={};] failed, type={}; was not support yet.", - resourceField.getName(), coreModule.getUniqueId(), module.getClass(), cfg.getNamespace(), fieldType); - } - - } - - } - /** * 加载并注册模块 *

1. 如果模块已经存在则返回已经加载过的模块

@@ -237,40 +173,135 @@ private synchronized void load(final String uniqueId, final ModuleClassLoader moduleClassLoader) throws ModuleException { if (loadedModuleBOMap.containsKey(uniqueId)) { - logger.info("module[id={};] already loaded, ignore this load.", uniqueId); + logger.debug("module already loaded. module={};", uniqueId); return; } + logger.info("loading module, module={};class={};module-jar={};", + uniqueId, + module.getClass().getName(), + moduleJarFile + ); + // 初始化模块信息 final CoreModule coreModule = new CoreModule(uniqueId, moduleJarFile, moduleClassLoader, module); // 注入@Resource资源 - try { - injectRequiredResource(coreModule); - } catch (IllegalAccessException iae) { - throw new ModuleException(uniqueId, MODULE_LOAD_ERROR, iae); - } + injectResourceOnLoadIfNecessary(coreModule); // 通知生命周期:模块加载开始 - fireModuleLifecycle(coreModule, ModuleLifeCycleEventBus.Event.LOAD); + callAndFireModuleLifeCycle(coreModule, ModuleLifeCycleEventBus.Event.LOAD); // 设置为已经加载 coreModule.setLoaded(true); - // 如果模块被标记为启动时激活,这里需要主动对模块进行一次激活操作 - final Information info = module.getClass().getAnnotation(Information.class); - if (info.isActiveOnLoad()) { - active(coreModule); - } + // 如果模块标记了加载时自动激活,则需要在加载完成之后激活模块 + markActiveOnLoadIfNecessary(coreModule); // 注册到模块列表中 loadedModuleBOMap.put(uniqueId, coreModule); - // 通知声明周期,模块加载完成 - fireModuleLifecycle(coreModule, LOAD_COMPLETED); + // 通知生命周期,模块加载完成 + callAndFireModuleLifeCycle(coreModule, LOAD_COMPLETED); - logger.info("loaded module[id={};class={};] success, loader={}", uniqueId, module.getClass(), moduleClassLoader); + } + + private void injectResourceOnLoadIfNecessary(final CoreModule coreModule) throws ModuleException { + try { + final Module module = coreModule.getModule(); + for (final Field resourceField : FieldUtils.getFieldsWithAnnotation(module.getClass(), Resource.class)) { + final Class fieldType = resourceField.getType(); + + // LoadedClassDataSource对象注入 + if (LoadedClassDataSource.class.isAssignableFrom(fieldType)) { + writeField( + resourceField, + module, + classDataSource, + true + ); + } + + // ModuleEventWatcher对象注入 + else if (ModuleEventWatcher.class.isAssignableFrom(fieldType)) { + final ModuleEventWatcher moduleEventWatcher = new DefaultModuleEventWatcher( + inst, + classDataSource, + coreModule, + cfg.isEnableUnsafe(), + cfg.getNamespace() + ); + moduleLifeCycleEventBus.append((DefaultModuleEventWatcher) moduleEventWatcher); + writeField( + resourceField, + module, + moduleEventWatcher, + true + ); + } + + // ModuleController对象注入 + else if (ModuleController.class.isAssignableFrom(fieldType)) { + writeField( + resourceField, + module, + new DefaultModuleController(coreModule, this), + true + ); + } + + // ModuleManager对象注入 + else if (ModuleManager.class.isAssignableFrom(fieldType)) { + writeField( + resourceField, + module, + new DefaultModuleManager(this), + true + ); + } + + // ConfigInfo注入 + else if (ConfigInfo.class.isAssignableFrom(fieldType)) { + writeField( + resourceField, + module, + new DefaultConfigInfo(cfg), + true + ); + } + + // EventMonitor注入 + else if (EventMonitor.class.isAssignableFrom(fieldType)) { + writeField( + resourceField, + module, + new DefaultEventMonitor(), + true + ); + } + + // 其他情况需要输出日志警告 + else { + logger.warn("module inject @Resource ignored: field not found. module={};class={};type={};field={};", + coreModule.getUniqueId(), + resourceField.getName(), + coreModule.getModule().getClass().getName(), + fieldType.getName() + ); + } + } + } catch (IllegalAccessException cause) { + throw new ModuleException(coreModule.getUniqueId(), MODULE_LOAD_ERROR, cause); + } + } + + private void markActiveOnLoadIfNecessary(final CoreModule coreModule) throws ModuleException { + logger.info("active module when OnLoad, module={}", coreModule.getUniqueId()); + final Information info = coreModule.getModule().getClass().getAnnotation(Information.class); + if (info.isActiveOnLoad()) { + active(coreModule); + } } /** @@ -279,39 +310,47 @@ private synchronized void load(final String uniqueId, *

2. 如果模块存在则尝试进行卸载

*

3. 卸载模块之前会尝试冻结该模块

* - * @param coreModule 等待被卸载的模块 - * @param isForce 是否强制卸载 + * @param coreModule 等待被卸载的模块 + * @param isIgnoreModuleException 是否忽略模块异常 * @throws ModuleException 卸载模块失败 */ @Override public synchronized CoreModule unload(final CoreModule coreModule, - final boolean isForce) throws ModuleException { + final boolean isIgnoreModuleException) throws ModuleException { + + if (!coreModule.isLoaded()) { + logger.debug("module already unLoaded. module={};", coreModule.getUniqueId()); + return coreModule; + } + + logger.info("unloading module, module={};class={};", + coreModule.getUniqueId(), + coreModule.getModule().getClass().getName() + ); + + // 尝试冻结模块 + frozen(coreModule, isIgnoreModuleException); + // 通知生命周期 try { - // 通知生命周期 - fireModuleLifecycle(coreModule, ModuleLifeCycleEventBus.Event.UNLOAD); + callAndFireModuleLifeCycle(coreModule, ModuleLifeCycleEventBus.Event.UNLOAD); } catch (ModuleException meCause) { - - if (isForce) { - logger.warn("unload module[id={};class={};], occur error={}, but isForce=true, so ignore this failed.", + if (isIgnoreModuleException) { + logger.warn("unload module occur error, ignored. module={};class={};code={};", meCause.getUniqueId(), - coreModule.getModule().getClass(), + coreModule.getModule().getClass().getName(), meCause.getErrorCode(), meCause ); } else { throw meCause; } - } - // 尝试冻结模块 - frozen(coreModule, isForce); - // 从模块注册表中删除 loadedModuleBOMap.remove(coreModule.getUniqueId()); - // 标记模块卸载 + // 标记模块为:已卸载 coreModule.setLoaded(false); // 尝试关闭ClassLoader @@ -325,19 +364,21 @@ public synchronized void active(final CoreModule coreModule) throws ModuleExcept // 如果模块已经被激活,则直接幂等返回 if (coreModule.isActivated()) { + logger.debug("module already activated. module={};", coreModule.getUniqueId()); return; } + logger.info("active module, module={};class={};module-jar={};", + coreModule.getUniqueId(), + coreModule.getModule().getClass().getName(), + coreModule.getJarFile() + ); + // 通知生命周期 - fireModuleLifecycle(coreModule, ModuleLifeCycleEventBus.Event.ACTIVE); + callAndFireModuleLifeCycle(coreModule, ModuleLifeCycleEventBus.Event.ACTIVE); // 激活所有监听器 - for (final ClassFileTransformer classFileTransformer : coreModule.getSandboxClassFileTransformers()) { - if (!(classFileTransformer instanceof SandboxClassFileTransformer)) { - continue; - } - final SandboxClassFileTransformer sandboxClassFileTransformer - = (SandboxClassFileTransformer) classFileTransformer; + for (final SandboxClassFileTransformer sandboxClassFileTransformer : coreModule.getSandboxClassFileTransformers()) { EventListenerHandlers.getSingleton().active( sandboxClassFileTransformer.getListenerId(), sandboxClassFileTransformer.getEventListener(), @@ -345,48 +386,50 @@ public synchronized void active(final CoreModule coreModule) throws ModuleExcept ); } + // 标记模块为:已激活 coreModule.setActivated(true); - logger.info("active module[id={};] finish.", coreModule.getUniqueId()); } @Override public synchronized void frozen(final CoreModule coreModule, - final boolean isForce) throws ModuleException { + final boolean isIgnoreModuleException) throws ModuleException { // 如果模块已经被冻结(尚未被激活),则直接幂等返回 if (!coreModule.isActivated()) { + logger.debug("module already frozen. module={};", coreModule.getUniqueId()); return; } - try { - - // 通知生命周期 - fireModuleLifecycle(coreModule, ModuleLifeCycleEventBus.Event.FROZE); + logger.info("frozen module, module={};class={};module-jar={};", + coreModule.getUniqueId(), + coreModule.getModule().getClass().getName(), + coreModule.getJarFile() + ); + // 通知生命周期 + try { + callAndFireModuleLifeCycle(coreModule, ModuleLifeCycleEventBus.Event.FROZE); } catch (ModuleException meCause) { - - if (isForce) { - logger.warn("frozen module[id={};class={};], occur error, but isForce=true, so ignore this failed.", - coreModule.getUniqueId(), coreModule.getModule().getClass(), meCause); + if (isIgnoreModuleException) { + logger.warn("frozen module occur error, ignored. module={};class={};code={};", + meCause.getUniqueId(), + coreModule.getModule().getClass().getName(), + meCause.getErrorCode(), + meCause + ); } else { throw meCause; } - } // 冻结所有监听器 - for (final ClassFileTransformer classFileTransformer : coreModule.getSandboxClassFileTransformers()) { - if (!(classFileTransformer instanceof SandboxClassFileTransformer)) { - continue; - } - final SandboxClassFileTransformer sandboxClassFileTransformer - = (SandboxClassFileTransformer) classFileTransformer; + for (final SandboxClassFileTransformer sandboxClassFileTransformer : coreModule.getSandboxClassFileTransformers()) { EventListenerHandlers.getSingleton() .frozen(sandboxClassFileTransformer.getListenerId()); } + // 标记模块为:已冻结 coreModule.setActivated(false); - logger.info("frozen module[id={};] finish.", coreModule.getUniqueId()); } @Override @@ -409,14 +452,15 @@ public CoreModule getThrowsExceptionIfNull(String uniqueId) throws ModuleExcepti } - private static boolean isOptimisticDirectoryContainsFile(final File directory, - final File child) { + private boolean isOptimisticDirectoryContainsFile(final File directory, + final File child) { try { return FileUtils.directoryContains(directory, child); - } catch (IOException e) { + } catch (IOException cause) { // 如果这里能抛出异常,则说明directory或者child发生损坏 // 需要返回TRUE以此作乐观推断,出错的情况也属于当前目录 // 这个逻辑没毛病,主要是用来应对USER目录被删除引起IOException的情况 + logger.debug("occur OptimisticDirectoryContainsFile: directory={} or child={} maybe broken.", directory, child, cause); return true; } } @@ -429,12 +473,10 @@ private boolean isSystemModule(final File child) { * 用户模块文件加载回调 */ final private class InnerModuleJarLoadCallback implements ModuleJarLoader.ModuleJarLoadCallback { - @Override public void onLoad(File moduleJarFile) throws Throwable { providerManager.loading(moduleJarFile); } - } /** @@ -451,9 +493,12 @@ public void onLoad(final String uniqueId, // 如果之前已经加载过了相同ID的模块,则放弃当前模块的加载 if (loadedModuleBOMap.containsKey(uniqueId)) { final CoreModule existedCoreModule = get(uniqueId); - logger.info("module[id={};class={};loader={};] already loaded, ignore load this module. existed-module[id={};class={};loader={};]", - uniqueId, moduleClass, moduleClassLoader, - existedCoreModule.getUniqueId(), existedCoreModule.getModule().getClass(), existedCoreModule.getLoader()); + logger.info("IMLCB: module already loaded, ignore load this module. expected:module={};class={};loader={}|existed:class={};loader={};", + uniqueId, + moduleClass, moduleClassLoader, + existedCoreModule.getModule().getClass().getName(), + existedCoreModule.getLoader() + ); return; } @@ -467,25 +512,28 @@ public void onLoad(final String uniqueId, ); // 之前没有加载过,这里进行加载 - logger.debug("found new module[id={};class={};loader={};], prepare to load.", - uniqueId, moduleClass, moduleClassLoader); + logger.info("IMLCB: found new module, prepare to load. module={};class={};loader={};", + uniqueId, + moduleClass, + moduleClassLoader + ); load(uniqueId, module, moduleJarFile, moduleClassLoader); } } @Override public synchronized void flush(final boolean isForce) throws ModuleException { - if (isForce) { forceFlush(); } else { softFlush(); } - } @Override public synchronized void reset() throws ModuleException { + + logger.info("resetting all loaded modules:{}", loadedModuleBOMap.keySet()); // 1. 强制卸载所有模块 for (final CoreModule coreModule : new ArrayList(loadedModuleBOMap.values())) { @@ -501,7 +549,7 @@ public synchronized void reset() throws ModuleException { new ModuleJarLoader(moduleLibDir, cfg.getLaunchMode(), sandboxClassLoader) .load(new InnerModuleJarLoadCallback(), new InnerModuleLoadCallback()); } else { - logger.warn("MODULE-LIB[{}] can not access, ignore flush load this lib.", moduleLibDir); + logger.warn("module-lib not access, ignore flush load this lib. path={}", moduleLibDir); } } @@ -529,8 +577,8 @@ private void closeModuleClassLoaderIfNecessary(final ClassLoader loader) { } if (!hasRef) { + logger.info("module-classloader will be close: all module unloaded.", loader); ((ModuleClassLoader) loader).closeIfPossible(); - logger.info("all module unload, {} was release.", loader); } } @@ -551,67 +599,74 @@ private boolean isChecksumCRC32Existed(long checksumCRC32) { */ private void softFlush() { - final File systemModuleLibDir = new File(cfg.getSystemModuleLibPath()); - final File[] userModuleLibDirArray = cfg.getUserModuleLibFilesWithCache(); - for (final File userModuleLibDir : userModuleLibDirArray) { + logger.info("soft-flushing modules:{}", loadedModuleBOMap.keySet()); - try { - // final File userModuleLibDir = new File(cfg.getUserModuleLibPath()); - final ArrayList appendJarFiles = new ArrayList(); - final ArrayList removeCoreModules = new ArrayList(); - final ArrayList checksumCRC32s = new ArrayList(); - - // 1. 找出所有有变动的文件(add/remove) - for (final File jarFile : listFiles(userModuleLibDir, new String[]{"jar"}, false)) { - final long checksumCRC32; - try { - checksumCRC32 = FileUtils.checksumCRC32(jarFile); - } catch (IOException e) { - logger.warn("soft flush {} failed, ignore this file.", jarFile, e); - continue; - } - checksumCRC32s.add(checksumCRC32); - // 如果CRC32已经在已加载的模块集合中存在,则说明这个文件没有变动,忽略 - if (isChecksumCRC32Existed(checksumCRC32)) { - continue; - } - appendJarFiles.add(jarFile); + final File systemModuleLibDir = new File(cfg.getSystemModuleLibPath()); + try { + final ArrayList appendJarFiles = new ArrayList(); + final ArrayList removeCoreModules = new ArrayList(); + final ArrayList checksumCRC32s = new ArrayList(); + + // 1. 找出所有有变动的文件(add/remove) + for (final File jarFile : cfg.getUserModuleLibFiles()) { + final long checksumCRC32; + try { + checksumCRC32 = FileUtils.checksumCRC32(jarFile); + } catch (IOException cause) { + logger.warn("soft-flushing module: compute module-jar CRC32 occur error. module-jar={};", jarFile, cause); + continue; + } + checksumCRC32s.add(checksumCRC32); + // 如果CRC32已经在已加载的模块集合中存在,则说明这个文件没有变动,忽略 + if (isChecksumCRC32Existed(checksumCRC32)) { + logger.info("soft-flushing module: module-jar is not changed, ignored. module-jar={};CRC32={};", jarFile, checksumCRC32); + continue; } - // 2. 找出所有待卸载的已加载用户模块 - for (final CoreModule coreModule : loadedModuleBOMap.values()) { - final ModuleClassLoader moduleClassLoader = coreModule.getLoader(); + logger.info("soft-flushing module: module-jar is changed, will be flush. module-jar={};CRC32={};", jarFile, checksumCRC32); + appendJarFiles.add(jarFile); + } - // 如果是系统模块目录则跳过 - if (isOptimisticDirectoryContainsFile(systemModuleLibDir, coreModule.getJarFile())) { - continue; - } -// -// // 如果不是用户模块目录,忽略 -// if (!isOptimisticDirectoryContainsFile(userModuleLibDir, coreModule.getJarFile())) { -// continue; -// } - // 如果CRC32已经在这次待加载的集合中,则说明这个文件没有变动,忽略 - if (checksumCRC32s.contains(moduleClassLoader.getChecksumCRC32())) { - continue; - } - removeCoreModules.add(coreModule); + // 2. 找出所有待卸载的已加载用户模块 + for (final CoreModule coreModule : loadedModuleBOMap.values()) { + final ModuleClassLoader moduleClassLoader = coreModule.getLoader(); + + // 如果是系统模块目录则跳过 + if (isOptimisticDirectoryContainsFile(systemModuleLibDir, coreModule.getJarFile())) { + logger.debug("soft-flushing module: module-jar is in system-lib, will be ignored. module-jar={};system-lib={};", + coreModule.getJarFile(), + systemModuleLibDir + ); + continue; } - // 3. 删除remove - for (final CoreModule coreModule : removeCoreModules) { - unload(coreModule, true); + // 如果CRC32已经在这次待加载的集合中,则说明这个文件没有变动,忽略 + if (checksumCRC32s.contains(moduleClassLoader.getChecksumCRC32())) { + logger.info("soft-flushing module: module-jar already loaded, ignored. module-jar={};CRC32={};", + coreModule.getJarFile(), + moduleClassLoader.getChecksumCRC32() + ); + continue; } + logger.info("soft-flushing module: module-jar is changed, module will be reload/remove. module={};module-jar={};", + coreModule.getUniqueId(), + coreModule.getJarFile() + ); + removeCoreModules.add(coreModule); + } - // 4. 加载add - for (final File jarFile : appendJarFiles) { - new ModuleJarLoader(jarFile, cfg.getLaunchMode(), sandboxClassLoader) - .load(new InnerModuleJarLoadCallback(), new InnerModuleLoadCallback()); - } - } catch (Throwable cause) { - logger.warn("flushing USER_LIB_MODULE[{}] failed.", userModuleLibDir, cause); + // 3. 删除remove + for (final CoreModule coreModule : removeCoreModules) { + unload(coreModule, true); } + // 4. 加载add + for (final File jarFile : appendJarFiles) { + new ModuleJarLoader(jarFile, cfg.getLaunchMode(), sandboxClassLoader) + .load(new InnerModuleJarLoadCallback(), new InnerModuleLoadCallback()); + } + } catch (Throwable cause) { + logger.warn("soft-flushing modules: occur error.", cause); } } @@ -624,6 +679,8 @@ private void softFlush() { */ private void forceFlush() throws ModuleException { + logger.info("force-flushing modules:{}", loadedModuleBOMap.keySet()); + // 1. 卸载模块 // 等待卸载的模块集合 final Collection waitingUnloadCoreModules = new ArrayList(); @@ -636,12 +693,20 @@ private void forceFlush() throws ModuleException { } } + // 记录下即将被卸载的模块ID集合 + if (logger.isInfoEnabled()) { + final Set uniqueIds = new LinkedHashSet(); + for (final CoreModule coreModule : waitingUnloadCoreModules) { + uniqueIds.add(coreModule.getUniqueId()); + } + logger.info("force-flush modules: will be unloading modules : {}", uniqueIds); + } + // 强制卸载掉所有等待卸载的模块集合中的模块 for (final CoreModule coreModule : waitingUnloadCoreModules) { unload(coreModule, true); } - // 2. 加载模块 // 用户模块加载目录,加载用户模块目录下的所有模块 // 对模块访问权限进行校验 @@ -650,10 +715,11 @@ private void forceFlush() throws ModuleException { for (final File userModuleLibDir : userModuleLibFileArray) { if (userModuleLibDir.exists() && userModuleLibDir.canRead()) { + logger.info("force-flush modules: module-lib={}", userModuleLibDir); new ModuleJarLoader(userModuleLibDir, cfg.getLaunchMode(), sandboxClassLoader) .load(new InnerModuleJarLoadCallback(), new InnerModuleLoadCallback()); } else { - logger.warn("MODULE-LIB[{}] can not access, ignore flush load this lib.", userModuleLibDir); + logger.warn("force-flush modules: module-lib can not access, will be ignored. module-lib={}", userModuleLibDir); } } diff --git a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/manager/impl/DefaultModuleLifeCycleEventBus.java b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/manager/impl/DefaultModuleLifeCycleEventBus.java index 5b6e2035..bc17b6c0 100755 --- a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/manager/impl/DefaultModuleLifeCycleEventBus.java +++ b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/manager/impl/DefaultModuleLifeCycleEventBus.java @@ -21,12 +21,12 @@ public class DefaultModuleLifeCycleEventBus implements ModuleLifeCycleEventBus { @Override public void append(ModuleLifeCycleEventListener lifeCycleEventListener) { moduleLifeCycleEventListeners.add(lifeCycleEventListener); - logger.info("append ModuleLifeCycleEventListener[listener={};].", lifeCycleEventListener); } @Override public void fire(CoreModule coreModule, Event event) { + logger.info("firing module-event: event={};module={};", event, coreModule.getUniqueId()); final Iterator listenerIt = moduleLifeCycleEventListeners.iterator(); while (listenerIt.hasNext()) { @@ -35,23 +35,23 @@ public void fire(CoreModule coreModule, Event event) { if (!moduleLifeCycleEventListener.onFire(coreModule, event)) { // 监听器返回FALSE,说明监听器主动放弃后续的消息监听 listenerIt.remove(); - logger.debug("{} give up continue listening", moduleLifeCycleEventListener); + logger.debug("fired module-event by once. event={};module={};listener={};", + event, + coreModule.getUniqueId(), + moduleLifeCycleEventListener + ); } } catch (Throwable cause) { - logger.warn("fire ModuleLifeCycleEventListener[listener={};] failed, event={};", - moduleLifeCycleEventListener, event, cause); + logger.warn("fire module-event failed, event={};module={};listener={};", + event, + coreModule.getUniqueId(), + moduleLifeCycleEventListener, + cause + ); } } - for (final ModuleLifeCycleEventListener moduleLifeCycleEventListener : moduleLifeCycleEventListeners) { - try { - moduleLifeCycleEventListener.onFire(coreModule, event); - } catch (Throwable cause) { - logger.warn("fire ModuleLifeCycleEventListener[listener={};] failed, event={};", - moduleLifeCycleEventListener, event, cause); - } - } } } diff --git a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/manager/impl/ModuleJarLoader.java b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/manager/impl/ModuleJarLoader.java index 70b8372a..20dacfa2 100755 --- a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/manager/impl/ModuleJarLoader.java +++ b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/manager/impl/ModuleJarLoader.java @@ -9,9 +9,7 @@ import org.slf4j.LoggerFactory; import java.io.File; -import java.util.Arrays; -import java.util.Iterator; -import java.util.ServiceLoader; +import java.util.*; import static org.apache.commons.io.FileUtils.convertFileCollectionToFileArray; import static org.apache.commons.io.FileUtils.listFiles; @@ -21,7 +19,7 @@ * 用于从${module.lib}中加载所有的沙箱模块 * Created by luanjia@taobao.com on 2016/11/17. */ -public class ModuleJarLoader { +class ModuleJarLoader { private final Logger logger = LoggerFactory.getLogger(getClass()); @@ -34,9 +32,9 @@ public class ModuleJarLoader { // 沙箱加载ClassLoader private final ClassLoader sandboxClassLoader; - public ModuleJarLoader(final File moduleLibDir, - final Information.Mode mode, - final ClassLoader sandboxClassLoader) { + ModuleJarLoader(final File moduleLibDir, + final Information.Mode mode, + final ClassLoader sandboxClassLoader) { this.moduleLibDir = moduleLibDir; this.mode = mode; this.sandboxClassLoader = sandboxClassLoader; @@ -63,26 +61,49 @@ private File[] toModuleJarFileArray() { * @param mjCb 模块文件加载回调 * @param mCb 模块加载回掉 */ - public void load(final ModuleJarLoadCallback mjCb, - final ModuleLoadCallback mCb) { + void load(final ModuleJarLoadCallback mjCb, + final ModuleLoadCallback mCb) { // 查找所有可加载的Jar文件 final File[] moduleJarFileArray = toModuleJarFileArray(); Arrays.sort(moduleJarFileArray); - logger.info("module loaded found {} jar in {}", moduleJarFileArray.length, moduleLibDir); + + // 记录下都有那些模块文件被找到即将被加载 + if (logger.isInfoEnabled()) { + final Set moduleJarFileNameSet = new LinkedHashSet(); + for (final File moduleJarFile : moduleJarFileArray) { + moduleJarFileNameSet.add(moduleJarFile.getName()); + } + logger.info("loading module-lib={}, found {} module-jar files : {}", + moduleLibDir, + moduleJarFileArray.length, + moduleJarFileNameSet + ); + } // 开始逐条加载 for (final File moduleJarFile : moduleJarFileArray) { + logger.info("loading module-jar={} from module-lib={};", moduleJarFile, moduleLibDir); + + // 是否有模块加载成功 + boolean hasModuleLoadedSuccessFlag = false; + + // 已加载的模块ID集合 + final Set loadedModuleUniqueIds = new LinkedHashSet(); + + // MODULE-JAR-CLASSLOADER ModuleClassLoader moduleClassLoader = null; try { - // 是否有模块加载成功 - boolean hasModuleLoadedSuccessFlag = false; - if (null != mjCb) { - mjCb.onLoad(moduleJarFile); + try { + mjCb.onLoad(moduleJarFile); + } catch (Throwable cause) { + logger.warn("loading module-jar failed: JAR-LOADER-PROVIDER denied, will be ignore. module-jar={};", moduleJarFile, cause); + continue; + } } // 模块ClassLoader @@ -101,65 +122,93 @@ public void load(final ModuleJarLoadCallback mjCb, try { module = moduleIt.next(); } catch (Throwable cause) { - logger.warn("module SPI new instance failed, ignore this SPI.", cause); + logger.warn("loading module instance failed: instance occur error, will be ignored. module-jar={}", moduleJarFile, cause); continue; } final Class classOfModule = module.getClass(); + // 判断模块是否实现了@Information标记 if (!classOfModule.isAnnotationPresent(Information.class)) { - logger.info("{} was not implements @Information, ignore this SPI.", classOfModule); + logger.warn("loading module instance failed: not implements @Information, will be ignored. class={};module-jar={};", + classOfModule, + moduleJarFile + ); continue; } final Information info = classOfModule.getAnnotation(Information.class); - if (StringUtils.isBlank(info.id())) { - logger.info("{} was not implements @Information[id], ignore this SPI.", classOfModule); + final String uniqueId = info.id(); + + // 判断模块ID是否合法 + if (StringUtils.isBlank(uniqueId)) { + logger.warn("loading module instance failed: @Information.id is missing, will be ignored. class={};module-jar={};", + classOfModule, + moduleJarFile + ); continue; } - final String uniqueId = info.id(); + // 判断模块要求的启动模式和容器的启动模式是否匹配 if (!ArrayUtils.contains(info.mode(), mode)) { - logger.info("module[id={};class={};mode={};] was not matched sandbox launch mode : {}, ignore this SPI.", - uniqueId, classOfModule, Arrays.asList(info.mode()), mode); + logger.warn("loading module instance failed: launch-mode is not match module required, will be ignored. module={};launch-mode={};required-mode={};class={};module-jar={};", + uniqueId, + mode, + StringUtils.join(info.mode(), ","), + classOfModule, + moduleJarFile + ); continue; } try { if (null != mCb) { - mCb.onLoad( - uniqueId, classOfModule, module, moduleJarFile, - moduleClassLoader - ); + mCb.onLoad(uniqueId, classOfModule, module, moduleJarFile, moduleClassLoader); } - hasModuleLoadedSuccessFlag = true; } catch (Throwable cause) { - logger.warn("load module[id={};class={};] from JAR[file={};] failed, ignore this module.", - uniqueId, classOfModule, moduleJarFile, cause); + logger.warn("loading module instance failed: MODULE-LOADER-PROVIDER denied, will be ignored. module={};class={};module-jar={};", + uniqueId, + classOfModule, + moduleJarFile, + cause + ); + continue; } - }//while + loadedModuleUniqueIds.add(uniqueId); + hasModuleLoadedSuccessFlag = true; - if (!hasModuleLoadedSuccessFlag) { - logger.warn("load sandbox module JAR[file={}], but none module loaded, close this ModuleClassLoader.", moduleJarFile); - moduleClassLoader.closeIfPossible(); - } + }//while } finally { Thread.currentThread().setContextClassLoader(preTCL); - } + }// try-catch for load module from Jar } catch (Throwable cause) { - logger.warn("load sandbox module JAR[file={}] failed.", moduleJarFile, cause); - if (null != moduleClassLoader) { - moduleClassLoader.closeIfPossible(); + logger.info("load module-jar occur error, will be ignored. module-jar={};", + moduleJarFile, + cause + ); + } finally { + if (hasModuleLoadedSuccessFlag) { + logger.info("loaded module-jar completed, loaded {} module in module-jar={}, modules={}", + loadedModuleUniqueIds.size(), + moduleJarFile, + loadedModuleUniqueIds + ); + } else { + logger.warn("loaded module-jar completed, NONE module loaded, will be close ModuleClassLoader. module-jar={};", moduleJarFile, moduleClassLoader); + if (null != moduleClassLoader) { + moduleClassLoader.closeIfPossible(); + } } - } + }// try-catch for load jar from lib } } + /** * 模块文件加载回调 */ @@ -190,8 +239,11 @@ public interface ModuleLoadCallback { * @param moduleClassLoader 负责加载模块的ClassLoader * @throws Throwable 加载回调异常 */ - void onLoad(final String uniqueId, final Class moduleClass, final Module module, final File moduleJarFile, - final ModuleClassLoader moduleClassLoader) throws Throwable; + void onLoad(String uniqueId, + Class moduleClass, + Module module, + File moduleJarFile, + ModuleClassLoader moduleClassLoader) throws Throwable; } diff --git a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/server/jetty/JettyCoreServer.java b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/server/jetty/JettyCoreServer.java index 14f5b705..e30e1c32 100755 --- a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/server/jetty/JettyCoreServer.java +++ b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/server/jetty/JettyCoreServer.java @@ -4,13 +4,16 @@ import ch.qos.logback.classic.joran.JoranConfigurator; import com.alibaba.jvm.sandbox.core.CoreConfigure; import com.alibaba.jvm.sandbox.core.enhance.weaver.EventListenerHandlers; -import com.alibaba.jvm.sandbox.core.manager.*; +import com.alibaba.jvm.sandbox.core.manager.CoreModuleManager; +import com.alibaba.jvm.sandbox.core.manager.ModuleLifeCycleEventBus; +import com.alibaba.jvm.sandbox.core.manager.ModuleResourceManager; +import com.alibaba.jvm.sandbox.core.manager.ProviderManager; import com.alibaba.jvm.sandbox.core.manager.impl.*; import com.alibaba.jvm.sandbox.core.server.CoreServer; import com.alibaba.jvm.sandbox.core.server.jetty.servlet.ModuleHttpServlet; import com.alibaba.jvm.sandbox.core.server.jetty.servlet.WebSocketAcceptorServlet; import com.alibaba.jvm.sandbox.core.util.Initializer; -import com.alibaba.jvm.sandbox.core.util.NetworkUtils; +import com.alibaba.jvm.sandbox.core.util.SandboxStringUtils; import org.apache.commons.io.IOUtils; import org.eclipse.jetty.server.Connector; import org.eclipse.jetty.server.Server; @@ -28,6 +31,9 @@ import java.lang.instrument.Instrumentation; import java.net.InetSocketAddress; +import static com.alibaba.jvm.sandbox.core.util.NamespaceConvert.initNamespaceConvert; +import static com.alibaba.jvm.sandbox.core.util.NetworkUtils.isPortInUsing; +import static java.lang.String.format; import static org.eclipse.jetty.servlet.ServletContextHandler.NO_SESSIONS; /** @@ -76,20 +82,20 @@ public void process() throws Throwable { if (null != httpServer) { // stop http server + logger.info("{} is stopping", JettyCoreServer.this); httpServer.stop(); - logger.info("{} was stop.", JettyCoreServer.this); } } }); // destroy http server + logger.info("{} is destroying", this); httpServer.destroy(); - logger.info("{} was destroyed.", this); // 关闭对象池 + logger.info("{} is closing event-pool", this); EventListenerHandlers.getSingleton().getEventPool().close(); - logger.info("{} was closed the Event-Pool!", this); } catch (Throwable cause) { logger.warn("{} unBind failed.", this, cause); @@ -137,13 +143,13 @@ private void initJettyContextHandler(final CoreConfigure cfg) { // web-socket-servlet final String wsPathSpec = "/module/websocket/*"; + logger.info("initializing ws-http-handler. path={}", contextPath + wsPathSpec); context.addServlet(new ServletHolder(new WebSocketAcceptorServlet(coreModuleManager, moduleResourceManager)), wsPathSpec); - logger.info("init ws-http-handler success. path={}", contextPath + wsPathSpec); // module-http-servlet final String pathSpec = "/module/http/*"; + logger.info("initializing http-handler. path={}", contextPath + pathSpec); context.addServlet(new ServletHolder(new ModuleHttpServlet(coreModuleManager, moduleResourceManager)), pathSpec); - logger.info("init http-handler success. path={}", contextPath + pathSpec); httpServer.setHandler(context); } @@ -158,30 +164,50 @@ private void initLogback(final CoreConfigure cfg) { InputStream is = null; try { is = new FileInputStream(configureFile); + initNamespaceConvert(cfg.getNamespace()); configurator.doConfigure(is); - logger.info("init logback success. configureFile={};", configureFile); + logger.info(SandboxStringUtils.getLogo()); + logger.info("initializing logback success. file={};", configureFile); } catch (Throwable cause) { - logger.warn("init logback failed. configureFile={};", configureFile); + logger.warn("initialize logback failed. file={};", configureFile, cause); } finally { IOUtils.closeQuietly(is); } } + // 关闭Logback日志框架 + private void closeLogback() { + try { + ((LoggerContext) LoggerFactory.getILoggerFactory()).stop(); + } catch (Throwable cause) { + // + } + } + private void initHttpServer(final CoreConfigure cfg) { // 如果IP:PORT已经被占用,则无法继续被绑定 // 这里说明下为什么要这么无聊加个这个判断,让Jetty的Server.bind()抛出异常不是更好么? // 比较郁闷的是,如果这个端口的绑定是"SO_REUSEADDR"端口可重用的模式,那么这个server是能正常启动,但无法正常工作的 // 所以这里必须先主动检查一次端口占用情况,当然了,这里也会存在一定的并发问题,BUT,我认为这种概率事件我可以选择暂时忽略 - if (NetworkUtils.isPortInUsing(cfg.getServerIp(), cfg.getServerPort())) { - throw new IllegalStateException(String.format("address[%s:%s] already in using, server bind failed.", - cfg.getServerIp(), cfg.getServerPort())); + if (isPortInUsing(cfg.getServerIp(), cfg.getServerPort())) { + throw new IllegalStateException(format("address[%s:%s] already in using, server bind failed.", + cfg.getServerIp(), + cfg.getServerPort()) + ); } httpServer = new Server(new InetSocketAddress(cfg.getServerIp(), cfg.getServerPort())); if (httpServer.getThreadPool() instanceof QueuedThreadPool) { final QueuedThreadPool qtp = (QueuedThreadPool) httpServer.getThreadPool(); - qtp.setName("sandbox-jetty-qtp" + qtp.hashCode()); + qtp.setName("sandbox-jetty-qtp-" + qtp.hashCode()); + } + } + + // 关闭HTTP服务器 + private void closeHttpServer() { + if (null != httpServer) { + httpServer.destroy(); } } @@ -191,27 +217,30 @@ private void initManager(final Instrumentation inst, final ClassLoader sandboxClassLoader = getClass().getClassLoader(); - logger.info("init manager success. manager={}", EventListenerHandlers.getSingleton()); + // 初始化事件处理总线 + logger.info("initializing manager : EventListenerHandlers"); + EventListenerHandlers.getSingleton(); + // 初始化模块生命周期事件总线 + logger.info("initializing manager : ModuleLifeCycleEventBus"); final ModuleLifeCycleEventBus moduleLifeCycleEventBus = new DefaultModuleLifeCycleEventBus(); - logger.info("init manager success. manager={}", moduleLifeCycleEventBus); - - final CoreLoadedClassDataSource classDataSource = new DefaultLoadedClassDataSource(inst, cfg); - logger.info("init manager success. manager={}", classDataSource); // 初始化模块资源管理器 + logger.info("initializing manager : ModuleResourceManager"); moduleLifeCycleEventBus.append(moduleResourceManager = new DefaultModuleResourceManager()); - logger.info("init manager success. manager={}", moduleResourceManager); // 初始化服务管理器 + logger.info("initializing manager : ProviderManager"); final ProviderManager providerManager = new DefaultProviderManager(cfg, sandboxClassLoader); - logger.info("init manager success. manager={}", providerManager); // 初始化模块管理器 + logger.info("initializing manager : CoreModuleManager"); coreModuleManager = new DefaultCoreModuleManager( - inst, classDataSource, cfg, sandboxClassLoader, moduleLifeCycleEventBus, providerManager + cfg, inst, + sandboxClassLoader, new DefaultLoadedClassDataSource(inst, cfg), + moduleLifeCycleEventBus, + providerManager ); - logger.info("init manager success. manager={}", coreModuleManager); } @@ -223,7 +252,7 @@ public synchronized void bind(final CoreConfigure cfg, final Instrumentation ins public void process() throws Throwable { JettyCoreServer.this.cfg = cfg; initLogback(cfg); - logger.info("prepare to init jvm-sandbox[{}] server. cfg={}", cfg.getNamespace(), cfg); + logger.info("initializing server. cfg={}", cfg); initManager(inst, cfg); initHttpServer(cfg); initJettyContextHandler(cfg); @@ -231,13 +260,10 @@ public void process() throws Throwable { } }); final InetSocketAddress local = getLocal(); - logger.info("init httpSrv success. bind to {}:{}", local.getHostName(), local.getPort()); + logger.info("initialized server. actual bind to {}:{}", local.getHostName(), local.getPort()); } catch (Throwable cause) { - logger.warn("{} bind failed.", this); - throw new IOException( - String.format("server bind to %s:%s failed.", cfg.getServerIp(), cfg.getServerPort()), - cause - ); + logger.warn("initialize server failed.", cause); + throw new IOException("server bind failed.", cause); } logger.info("{} bind success.", this); @@ -252,13 +278,16 @@ public void destroy() { logger.warn("{} unBind failed when destroy.", this, e); } } - if (null != httpServer) { - httpServer.destroy(); - } + + // STOP HTTP-SERVER + closeHttpServer(); + + // STOP LOGBACK + closeLogback(); } @Override public String toString() { - return String.format("server[%s:%s]", cfg.getServerIp(), cfg.getServerPort()); + return format("server[%s:%s]", cfg.getServerIp(), cfg.getServerPort()); } } diff --git a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/server/jetty/servlet/ModuleHttpServlet.java b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/server/jetty/servlet/ModuleHttpServlet.java index 7f19c311..1cf8ef57 100755 --- a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/server/jetty/servlet/ModuleHttpServlet.java +++ b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/server/jetty/servlet/ModuleHttpServlet.java @@ -82,7 +82,7 @@ private void doMethod(final HttpServletRequest req, if (null == method) { logger.warn("module[id={};class={};] request method not found, value={};", uniqueId, - coreModule.getModule().getClass(), + coreModule.getModule().getClass().getName(), path ); resp.sendError(HttpServletResponse.SC_NOT_FOUND); @@ -92,7 +92,7 @@ private void doMethod(final HttpServletRequest req, method.getDeclaringClass().getName(), method.getName(), uniqueId, - coreModule.getModule().getClass() + coreModule.getModule().getClass().getName() ); } @@ -118,14 +118,14 @@ public void release() { Thread.currentThread().setContextClassLoader(coreModule.getLoader()); method.invoke(coreModule.getModule(), parameterObjectArray); logger.debug("http request value={} invoke module[id={};] {}#{} success.", - path, uniqueId, coreModule.getModule().getClass(), method.getName()); + path, uniqueId, coreModule.getModule().getClass().getName(), method.getName()); } catch (IllegalAccessException iae) { - logger.warn("impossible, http request value={} invoke module[id={};] {}#{} occur access denied.", - path, uniqueId, coreModule.getModule().getClass(), method.getName(), iae); + logger.warn("http request value={} invoke module[id={};] {}#{} occur access denied.", + path, uniqueId, coreModule.getModule().getClass().getName(), method.getName(), iae); throw new ServletException(iae); } catch (InvocationTargetException ite) { logger.warn("http request value={} invoke module[id={};] {}#{} failed.", - path, uniqueId, coreModule.getModule().getClass(), method.getName(), ite.getTargetException()); + path, uniqueId, coreModule.getModule().getClass().getName(), method.getName(), ite.getTargetException()); final Throwable targetCause = ite.getTargetException(); if (targetCause instanceof ServletException) { throw (ServletException) targetCause; diff --git a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/server/jetty/servlet/WebSocketAcceptorServlet.java b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/server/jetty/servlet/WebSocketAcceptorServlet.java index 46bca6e6..2b2c3e68 100755 --- a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/server/jetty/servlet/WebSocketAcceptorServlet.java +++ b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/server/jetty/servlet/WebSocketAcceptorServlet.java @@ -64,14 +64,14 @@ public WebSocket doWebSocketConnect(final HttpServletRequest req, if (!(coreModule.getModule() instanceof WebSocketAcceptor)) { logger.warn("module[id={};class={};] is not implements WebSocketAcceptor.", - uniqueId, coreModule.getModule().getClass()); + uniqueId, coreModule.getModule().getClass().getName()); return null; } final WebSocketConnectionListener listener = ((WebSocketAcceptor) coreModule.getModule()).onAccept(req, protocol); logger.info("accept websocket connection, module[id={};class={};], value={};", - uniqueId, coreModule.getModule().getClass(), req.getPathInfo()); + uniqueId, coreModule.getModule().getClass().getName(), req.getPathInfo()); if (listener instanceof TextMessageListener) { return new InnerOnTextMessage(uniqueId, (TextMessageListener) listener); diff --git a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/util/NamespaceConvert.java b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/util/NamespaceConvert.java new file mode 100644 index 00000000..57e68d37 --- /dev/null +++ b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/util/NamespaceConvert.java @@ -0,0 +1,31 @@ +package com.alibaba.jvm.sandbox.core.util; + +import ch.qos.logback.classic.PatternLayout; +import ch.qos.logback.classic.pattern.ClassicConverter; +import ch.qos.logback.classic.spi.ILoggingEvent; + +/** + * Sandbox的命名空间注册到logback + */ +public class NamespaceConvert extends ClassicConverter { + + private static volatile String namespace; + + @Override + public String convert(ILoggingEvent event) { + return null == namespace + ? "NULL" + : namespace; + } + + /** + * 注册命名空间到Logback + * + * @param namespace 命名空间 + */ + public static void initNamespaceConvert(final String namespace) { + NamespaceConvert.namespace = namespace; + PatternLayout.defaultConverterMap.put("SANDBOX_NAMESPACE", NamespaceConvert.class.getName()); + } + +} diff --git a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/util/SandboxStringUtils.java b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/util/SandboxStringUtils.java index 42c3d424..5eb06502 100644 --- a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/util/SandboxStringUtils.java +++ b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/util/SandboxStringUtils.java @@ -1,7 +1,11 @@ package com.alibaba.jvm.sandbox.core.util; +import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; +import java.io.IOException; +import java.io.InputStream; + /** * 字符串工具类 * Created by luanjia@taobao.com on 15/5/18. @@ -53,5 +57,22 @@ public static String getCauseMessage(Throwable t) { return t.getMessage(); } + /** + * 获取LOGO + * + * @return LOGO + */ + public static String getLogo() { + try { + final InputStream logoIs = SandboxStringUtils.class.getResourceAsStream("/com/alibaba/jvm/sandbox/logo"); + final String logo = IOUtils.toString(logoIs); + IOUtils.closeQuietly(logoIs); + return logo; + } catch (IOException ioe) { + // ignore... + return StringUtils.EMPTY; + } + } + } diff --git a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/util/collection/GaStack.java b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/util/collection/GaStack.java index 9ae9de25..0094d30d 100755 --- a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/util/collection/GaStack.java +++ b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/util/collection/GaStack.java @@ -20,4 +20,6 @@ public interface GaStack { E peekLast(); + int deep(); + } diff --git a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/util/collection/ThreadUnsafeGaStack.java b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/util/collection/ThreadUnsafeGaStack.java index e5140bcd..9fc5fa78 100755 --- a/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/util/collection/ThreadUnsafeGaStack.java +++ b/sandbox-core/src/main/java/com/alibaba/jvm/sandbox/core/util/collection/ThreadUnsafeGaStack.java @@ -86,4 +86,9 @@ public E peekLast() { return (E) elementArray[0]; } + @Override + public int deep() { + return current + 1; + } + } diff --git a/sandbox-core/src/main/resources/com/alibaba/jvm/sandbox/logo b/sandbox-core/src/main/resources/com/alibaba/jvm/sandbox/logo new file mode 100644 index 00000000..b4a26f05 --- /dev/null +++ b/sandbox-core/src/main/resources/com/alibaba/jvm/sandbox/logo @@ -0,0 +1,5 @@ + ___ ____ __ ____ _ _ _ ____ ____ _____ __ + | \ \ / / \/ | / ___| / \ | \ | | _ \| __ ) / _ \ \/ / + _ | |\ \ / /| |\/| |____\___ \ / _ \ | \| | | | | _ \| | | \ / +| |_| | \ V / | | | |_____|__) / ___ \| |\ | |_| | |_) | |_| / \ + \___/ \_/ |_| |_| |____/_/ \_\_| \_|____/|____/ \___/_/\_\ \ No newline at end of file diff --git a/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/AdviceTestCase.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/AdviceTestCase.java new file mode 100644 index 00000000..77a6402a --- /dev/null +++ b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/AdviceTestCase.java @@ -0,0 +1,176 @@ +package com.alibaba.jvm.sandbox.qatest.core.enhance; + +import com.alibaba.jvm.sandbox.api.ProcessController; +import com.alibaba.jvm.sandbox.api.listener.ext.Advice; +import com.alibaba.jvm.sandbox.api.listener.ext.AdviceAdapterListener; +import com.alibaba.jvm.sandbox.api.listener.ext.AdviceListener; +import com.alibaba.jvm.sandbox.qatest.core.enhance.listener.InterruptedAdviceAdapterListener; +import com.alibaba.jvm.sandbox.qatest.core.enhance.target.Calculator; +import org.junit.Test; + +import static com.alibaba.jvm.sandbox.api.event.Event.Type.*; +import static org.junit.Assert.*; + +public class AdviceTestCase extends CalculatorTestCase { + + @Test + public void test$$advice$$aroundWithError() throws Throwable { + final StringBuilder traceSB = new StringBuilder(); + final Class computerClass = watching( + Calculator.class, + CALCULATOR_SUM_FILTER, + new AdviceAdapterListener(new AdviceListener() { + + @Override + protected void before(Advice advice) throws Throwable { + traceSB.append("before;"); + throw new RuntimeException("TEST"); + } + + @Override + protected void afterReturning(Advice advice) throws Throwable { + traceSB.append("return;"); + throw new RuntimeException("TEST"); + } + }), + BEFORE, RETURN, THROWS + ); + assertEquals(30, calculatorSum(computerClass.newInstance(), 10, 20)); + assertEquals("before;return;", traceSB.toString()); + } + + @Test + public void test$$advice$$around() throws Throwable { + final Class computerClass = watching( + Calculator.class, + CALCULATOR_SUM_FILTER, + new InterruptedAdviceAdapterListener(new AdviceListener() { + + @Override + protected void before(Advice advice) throws Throwable { + assertEquals(10, ((int[])advice.getParameterArray()[0])[0]); + assertEquals(20, ((int[])advice.getParameterArray()[0])[1]); + assertTrue(advice.isProcessTop()); + assertFalse(advice.isReturn()); + assertFalse(advice.isThrows()); + } + + @Override + protected void afterReturning(Advice advice) throws Throwable { + assertEquals(30, advice.getReturnObj()); + assertTrue(advice.isProcessTop()); + assertTrue(advice.isReturn()); + assertFalse(advice.isThrows()); + } + }), + BEFORE, RETURN, THROWS + ); + assertEquals(30, calculatorSum(computerClass.newInstance(), 10, 20)); + assertEquals(30, calculatorSum(computerClass.newInstance(), 10, 20)); + } + + + @Test + public void test$$advice$$changeParameters() throws Throwable { + final Class computerClass = watching( + Calculator.class, + CALCULATOR_SUM_FILTER, + new InterruptedAdviceAdapterListener(new AdviceListener() { + + @Override + protected void before(Advice advice) throws Throwable { + assertEquals(10, ((int[])advice.getParameterArray()[0])[0]); + assertEquals(20, ((int[])advice.getParameterArray()[0])[1]); + advice.changeParameter(0, new int[]{40,60}); + } + + @Override + protected void afterReturning(Advice advice) throws Throwable { + assertEquals(40, ((int[])advice.getParameterArray()[0])[0]); + assertEquals(60, ((int[])advice.getParameterArray()[0])[1]); + assertEquals(100, advice.getReturnObj());; + } + }), + BEFORE, RETURN, THROWS + ); + assertEquals(100, calculatorSum(computerClass.newInstance(), 10, 20)); + assertEquals(100, calculatorSum(computerClass.newInstance(), 10, 20)); + } + + @Test + public void test$$advice$$changeReturnOnBefore() throws Throwable { + final Class computerClass = watching( + Calculator.class, + CALCULATOR_SUM_FILTER, + new InterruptedAdviceAdapterListener(new AdviceListener() { + + @Override + protected void before(Advice advice) throws Throwable { + assertTrue(advice.isProcessTop()); + assertEquals(10, ((int[])advice.getParameterArray()[0])[0]); + assertEquals(20, ((int[])advice.getParameterArray()[0])[1]); + ProcessController.returnImmediately(100); + } + + }), + BEFORE, RETURN, THROWS, IMMEDIATELY_RETURN, IMMEDIATELY_THROWS + ); + assertEquals(100, calculatorSum(computerClass.newInstance(), 10, 20)); + assertEquals(100, calculatorSum(computerClass.newInstance(), 10, 20)); + } + + @Test + public void test$$advice$$changeReturnOnReturn() throws Throwable { + final Class computerClass = watching( + Calculator.class, + CALCULATOR_SUM_FILTER, + new InterruptedAdviceAdapterListener(new AdviceListener() { + + @Override + protected void before(Advice advice) throws Throwable { + assertTrue(advice.isProcessTop()); + } + + @Override + protected void afterReturning(Advice advice) throws Throwable { + assertTrue(advice.isProcessTop()); + assertEquals(10, ((int[])advice.getParameterArray()[0])[0]); + assertEquals(20, ((int[])advice.getParameterArray()[0])[1]); + ProcessController.returnImmediately(100); + } + + }), + BEFORE, RETURN, THROWS, IMMEDIATELY_RETURN, IMMEDIATELY_THROWS + ); + assertEquals(100, calculatorSum(computerClass.newInstance(), 10, 20)); + assertEquals(100, calculatorSum(computerClass.newInstance(), 10, 20)); + } + + @Test + public void test$$advice$$changeReturnOnThrows() throws Throwable { + final Class computerClass = watching( + Calculator.class, + CALCULATOR_ERROR_SUM_FILTER, + new InterruptedAdviceAdapterListener(new AdviceListener() { + + @Override + protected void before(Advice advice) throws Throwable { + assertTrue(advice.isProcessTop()); + } + + @Override + protected void afterThrowing(Advice advice) throws Throwable { + assertTrue(advice.isProcessTop()); + assertEquals(10, ((int[])advice.getParameterArray()[0])[0]); + assertEquals(20, ((int[])advice.getParameterArray()[0])[1]); + ProcessController.returnImmediately(100); + } + + }), + BEFORE, RETURN, THROWS, IMMEDIATELY_RETURN, IMMEDIATELY_THROWS + ); + assertEquals(100, calculatorErrorSum(computerClass.newInstance(), 10, 20)); + assertEquals(100, calculatorErrorSum(computerClass.newInstance(), 10, 20)); + } + +} diff --git a/sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/CalculatorTestCase.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/CalculatorTestCase.java similarity index 89% rename from sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/CalculatorTestCase.java rename to sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/CalculatorTestCase.java index beab6d89..69a577c5 100644 --- a/sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/CalculatorTestCase.java +++ b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/CalculatorTestCase.java @@ -17,6 +17,12 @@ public class CalculatorTestCase extends CoreEnhanceBaseTestCase { "^sum$" ); + public static final Filter CALCULATOR_SUM_and_ADD_FILTER + = new NameRegexFilter( + "^com\\.alibaba\\.jvm.sandbox\\.qatest\\.core\\.enhance\\.target\\.Calculator$", + "^(sum|add)$" + ); + public static final Filter CALCULATOR_ERROR_SUM_FILTER = new NameRegexFilter( "^com\\.alibaba\\.jvm.sandbox\\.qatest\\.core\\.enhance\\.target\\.Calculator$", diff --git a/sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/CoreEnhanceBaseTestCase.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/CoreEnhanceBaseTestCase.java similarity index 96% rename from sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/CoreEnhanceBaseTestCase.java rename to sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/CoreEnhanceBaseTestCase.java index 382a3f34..94f6870f 100644 --- a/sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/CoreEnhanceBaseTestCase.java +++ b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/CoreEnhanceBaseTestCase.java @@ -20,8 +20,8 @@ import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; -import static com.alibaba.jvm.sandbox.qatest.util.QaClassUtils.toByteArray; -import static com.alibaba.jvm.sandbox.qatest.util.QaClassUtils.toResourceName; +import static com.alibaba.jvm.sandbox.qatest.core.util.QaClassUtils.toByteArray; +import static com.alibaba.jvm.sandbox.qatest.core.util.QaClassUtils.toResourceName; public class CoreEnhanceBaseTestCase { diff --git a/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/EventStackTestCase.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/EventStackTestCase.java new file mode 100644 index 00000000..7f8deee8 --- /dev/null +++ b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/EventStackTestCase.java @@ -0,0 +1,138 @@ +package com.alibaba.jvm.sandbox.qatest.core.enhance; + +import com.alibaba.jvm.sandbox.api.ProcessController; +import com.alibaba.jvm.sandbox.api.event.BeforeEvent; +import com.alibaba.jvm.sandbox.api.event.Event; +import com.alibaba.jvm.sandbox.api.event.InvokeEvent; +import com.alibaba.jvm.sandbox.qatest.core.enhance.listener.InterruptedEventListener; +import com.alibaba.jvm.sandbox.qatest.core.enhance.target.Calculator; +import org.junit.Test; + +import java.util.Stack; + +import static com.alibaba.jvm.sandbox.api.event.Event.Type.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +public class EventStackTestCase extends CalculatorTestCase { + + @Test + public void test$$stack$$around() throws Throwable { + final Stack processStack = new Stack(); + final Stack invokeStack = new Stack(); + + final Class computerClass = watching( + Calculator.class, + CALCULATOR_SUM_and_ADD_FILTER, + new InterruptedEventListener() { + @Override + public void onEvent(Event event) throws Throwable { + switch (event.type) { + case BEFORE: + final BeforeEvent beforeEvent = (BeforeEvent) event; + processStack.push(beforeEvent.processId); + invokeStack.push(beforeEvent.invokeId); + break; + default: + InvokeEvent invokeEvent = (InvokeEvent) event; + assertEquals(processStack.pop().intValue(), invokeEvent.processId); + assertEquals(invokeStack.pop().intValue(), invokeEvent.invokeId); + } + + } + + }, + BEFORE, RETURN, THROWS + ); + assertEquals(30, calculatorSum(computerClass.newInstance(), 10, 20)); + assertTrue(processStack.isEmpty()); + assertTrue(invokeStack.isEmpty()); + assertEquals(30, calculatorSum(computerClass.newInstance(), 10, 20)); + assertTrue(processStack.isEmpty()); + assertTrue(invokeStack.isEmpty()); + } + + @Test + public void test$$stack$$returnImmediatelyOnBefore() throws Throwable { + final Stack processStack = new Stack(); + final Stack invokeStack = new Stack(); + + final Class computerClass = watching( + Calculator.class, + CALCULATOR_SUM_and_ADD_FILTER, + new InterruptedEventListener() { + @Override + public void onEvent(Event event) throws Throwable { + switch (event.type) { + case BEFORE: + final BeforeEvent beforeEvent = (BeforeEvent) event; + processStack.push(beforeEvent.processId); + invokeStack.push(beforeEvent.invokeId); + if (beforeEvent.javaMethodName.equals("add")) { + ProcessController.returnImmediately(30); + } + break; + default: + InvokeEvent invokeEvent = (InvokeEvent) event; + assertEquals(processStack.pop().intValue(), invokeEvent.processId); + assertEquals(invokeStack.pop().intValue(), invokeEvent.invokeId); + } + + } + + }, + BEFORE, RETURN, THROWS, IMMEDIATELY_THROWS, IMMEDIATELY_RETURN + ); + assertEquals(30, calculatorSum(computerClass.newInstance(), 10, 20)); + assertTrue(processStack.isEmpty()); + assertTrue(invokeStack.isEmpty()); + assertEquals(30, calculatorSum(computerClass.newInstance(), 10, 20)); + assertTrue(processStack.isEmpty()); + assertTrue(invokeStack.isEmpty()); + } + + @Test + public void test$$stack$$returnImmediatelyOnReturn() throws Throwable { + final Stack processStack = new Stack(); + final Stack invokeStack = new Stack(); + + final Class computerClass = watching( + Calculator.class, + CALCULATOR_SUM_and_ADD_FILTER, + new InterruptedEventListener() { + boolean isIReturn = false; + + @Override + public void onEvent(Event event) throws Throwable { + switch (event.type) { + case BEFORE: + final BeforeEvent beforeEvent = (BeforeEvent) event; + processStack.push(beforeEvent.processId); + invokeStack.push(beforeEvent.invokeId); + if (beforeEvent.javaMethodName.equals("add")) { + isIReturn = true; + } + break; + default: + InvokeEvent invokeEvent = (InvokeEvent) event; + assertEquals(processStack.pop().intValue(), invokeEvent.processId); + assertEquals(invokeStack.pop().intValue(), invokeEvent.invokeId); + if (isIReturn) { + ProcessController.returnImmediately(100); + } + } + + } + + }, + BEFORE, RETURN, THROWS + ); + assertEquals(100, calculatorSum(computerClass.newInstance(), 10, 20)); + assertTrue(processStack.isEmpty()); + assertTrue(invokeStack.isEmpty()); +// assertEquals(100, calculatorSum(computerClass.newInstance(), 10, 20)); +// assertTrue(processStack.isEmpty()); +// assertTrue(invokeStack.isEmpty()); + } + +} diff --git a/sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/EventStreamTestCase.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/EventStreamTestCase.java similarity index 100% rename from sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/EventStreamTestCase.java rename to sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/EventStreamTestCase.java diff --git a/sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/EventTestCase.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/EventTestCase.java similarity index 100% rename from sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/EventTestCase.java rename to sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/EventTestCase.java diff --git a/sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/NamespaceTestCase.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/NamespaceTestCase.java similarity index 100% rename from sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/NamespaceTestCase.java rename to sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/NamespaceTestCase.java diff --git a/sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/ProcessControllerTestCase.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/ProcessControllerTestCase.java similarity index 100% rename from sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/ProcessControllerTestCase.java rename to sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/ProcessControllerTestCase.java diff --git a/sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/listener/EventStreamCheckerListener.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/listener/EventStreamCheckerListener.java similarity index 100% rename from sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/listener/EventStreamCheckerListener.java rename to sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/listener/EventStreamCheckerListener.java diff --git a/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/listener/InterruptedAdviceAdapterListener.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/listener/InterruptedAdviceAdapterListener.java new file mode 100644 index 00000000..ea5d0814 --- /dev/null +++ b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/listener/InterruptedAdviceAdapterListener.java @@ -0,0 +1,14 @@ +package com.alibaba.jvm.sandbox.qatest.core.enhance.listener; + +import com.alibaba.jvm.sandbox.api.listener.ext.AdviceAdapterListener; +import com.alibaba.jvm.sandbox.api.listener.ext.AdviceListener; +import com.alibaba.jvm.sandbox.core.enhance.annotation.Interrupted; + +@Interrupted +public class InterruptedAdviceAdapterListener extends AdviceAdapterListener { + + public InterruptedAdviceAdapterListener(AdviceListener adviceListener) { + super(adviceListener); + } + +} diff --git a/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/listener/InterruptedEventListener.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/listener/InterruptedEventListener.java new file mode 100644 index 00000000..a07d15cd --- /dev/null +++ b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/listener/InterruptedEventListener.java @@ -0,0 +1,13 @@ +package com.alibaba.jvm.sandbox.qatest.core.enhance.listener; + +import com.alibaba.jvm.sandbox.api.event.Event; +import com.alibaba.jvm.sandbox.api.listener.EventListener; +import com.alibaba.jvm.sandbox.core.enhance.annotation.Interrupted; + +@Interrupted +public class InterruptedEventListener implements EventListener { + @Override + public void onEvent(Event event) throws Throwable { + + } +} diff --git a/sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/target/Calculator.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/target/Calculator.java similarity index 100% rename from sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/target/Calculator.java rename to sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/enhance/target/Calculator.java diff --git a/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/manager/CoreLoadedClassDataSourceTestCase.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/manager/CoreLoadedClassDataSourceTestCase.java new file mode 100644 index 00000000..467650da --- /dev/null +++ b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/manager/CoreLoadedClassDataSourceTestCase.java @@ -0,0 +1,359 @@ +package com.alibaba.jvm.sandbox.qatest.core.manager; + +import com.alibaba.jvm.sandbox.api.filter.ExtFilter; +import com.alibaba.jvm.sandbox.api.filter.NameRegexFilter; +import com.alibaba.jvm.sandbox.core.CoreConfigure; +import com.alibaba.jvm.sandbox.core.manager.CoreLoadedClassDataSource; +import com.alibaba.jvm.sandbox.core.manager.impl.DefaultLoadedClassDataSource; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; + +import java.lang.instrument.ClassDefinition; +import java.lang.instrument.ClassFileTransformer; +import java.lang.instrument.Instrumentation; +import java.lang.instrument.UnmodifiableClassException; +import java.util.LinkedHashSet; +import java.util.Set; +import java.util.jar.JarFile; + +class MockLoadedClassesOnlyInstrumentation implements Instrumentation { + + final Set> loadedClasses = new LinkedHashSet>(); + + void regLoadedClass(Class clazz) { + loadedClasses.add(clazz); + } + + @Override + public void addTransformer(ClassFileTransformer transformer, boolean canRetransform) { + + } + + @Override + public void addTransformer(ClassFileTransformer transformer) { + + } + + @Override + public boolean removeTransformer(ClassFileTransformer transformer) { + return false; + } + + @Override + public boolean isRetransformClassesSupported() { + return false; + } + + @Override + public void retransformClasses(Class... classes) throws UnmodifiableClassException { + + } + + @Override + public boolean isRedefineClassesSupported() { + return false; + } + + @Override + public void redefineClasses(ClassDefinition... definitions) throws ClassNotFoundException, UnmodifiableClassException { + + } + + @Override + public boolean isModifiableClass(Class theClass) { + return false; + } + + @Override + public Class[] getAllLoadedClasses() { + return loadedClasses.toArray(new Class[]{}); + } + + @Override + public Class[] getInitiatedClasses(ClassLoader loader) { + return new Class[0]; + } + + @Override + public long getObjectSize(Object objectToSize) { + return 0; + } + + @Override + public void appendToBootstrapClassLoaderSearch(JarFile jarfile) { + + } + + @Override + public void appendToSystemClassLoaderSearch(JarFile jarfile) { + + } + + @Override + public boolean isNativeMethodPrefixSupported() { + return false; + } + + @Override + public void setNativeMethodPrefix(ClassFileTransformer transformer, String prefix) { + + } +} + +public class CoreLoadedClassDataSourceTestCase { + + public interface Human { + void methodOfHuman(); + } + + public interface Man extends Human { + void methodOfMan(); + } + + public interface Woman extends Human { + void methodOfWoman(); + } + + public interface Worker extends Man, Woman { + void methodOfWorker(); + } + + private class InnerWorker implements Worker { + + @Override + public void methodOfHuman() { + + } + + @Override + public void methodOfMan() { + + } + + @Override + public void methodOfWoman() { + + } + + @Override + public void methodOfWorker() { + + } + } + + private static final MockLoadedClassesOnlyInstrumentation mockInstrumentation + = new MockLoadedClassesOnlyInstrumentation(); + + @BeforeClass + public static void initStaticClasses() { + mockInstrumentation.regLoadedClass(Human.class); + mockInstrumentation.regLoadedClass(Man.class); + mockInstrumentation.regLoadedClass(Woman.class); + mockInstrumentation.regLoadedClass(Worker.class); + mockInstrumentation.regLoadedClass(InnerWorker.class); + + // 干扰项 + { + mockInstrumentation.regLoadedClass(String.class); + mockInstrumentation.regLoadedClass(Integer.class); + mockInstrumentation.regLoadedClass(int.class); + mockInstrumentation.regLoadedClass(void.class); + } + + // init AnonymousInnerClassClasses + { + final Woman anonymousInnerWoman = new Woman() { + @Override + public void methodOfWoman() { + + } + + @Override + public void methodOfHuman() { + + } + + { + mockInstrumentation.regLoadedClass(getClass()); + } + }; + final Worker anonymousInnerWorker = new Worker() { + @Override + public void methodOfWorker() { + + } + + @Override + public void methodOfWoman() { + + } + + @Override + public void methodOfMan() { + + } + + @Override + public void methodOfHuman() { + + } + + { + mockInstrumentation.regLoadedClass(getClass()); + } + }; + } + + } + + private final CoreLoadedClassDataSource coreLoadedClassDataSource + = new DefaultLoadedClassDataSource(mockInstrumentation, CoreConfigure.toConfigure("", null)); + + + @Test + public void test$$CoreLoadedClassDataSource$$list() { + final Set> foundClasses = coreLoadedClassDataSource.list(); + Assert.assertEquals(11, foundClasses.size()); + + final Set uniqueClassNameSet = new LinkedHashSet(); + for(final Class foundClass : foundClasses) { + uniqueClassNameSet.add(foundClass.getName()); + } + + Assert.assertTrue(uniqueClassNameSet.contains(String.class.getName())); + Assert.assertTrue(uniqueClassNameSet.contains(Integer.class.getName())); + Assert.assertTrue(uniqueClassNameSet.contains(int.class.getName())); + Assert.assertTrue(uniqueClassNameSet.contains(void.class.getName())); + + Assert.assertTrue(uniqueClassNameSet.contains(Human.class.getName())); + Assert.assertTrue(uniqueClassNameSet.contains(Man.class.getName())); + Assert.assertTrue(uniqueClassNameSet.contains(Woman.class.getName())); + Assert.assertTrue(uniqueClassNameSet.contains(Worker.class.getName())); + Assert.assertTrue(uniqueClassNameSet.contains(InnerWorker.class.getName())); + Assert.assertTrue(uniqueClassNameSet.contains("com.alibaba.jvm.sandbox.qatest.core.manager.CoreLoadedClassDataSourceTestCase$1")); + Assert.assertTrue(uniqueClassNameSet.contains("com.alibaba.jvm.sandbox.qatest.core.manager.CoreLoadedClassDataSourceTestCase$2")); + + } + + @Test + public void test$$CoreLoadedClassDataSource$$findSingleByRegex() { + final Set> foundClasses = coreLoadedClassDataSource.find(new NameRegexFilter( + "com\\.alibaba\\.jvm\\.sandbox\\.qatest\\.core\\.manager\\.CoreLoadedClassDataSourceTestCase\\$Human", + ".*" + )); + Assert.assertEquals(1, foundClasses.size()); + Assert.assertEquals( + Human.class.getName(), + foundClasses.iterator().next().getName() + ); + } + + @Test + public void test$$CoreLoadedClassDataSource$$findMultiByRegex() { + final Set> foundClasses = coreLoadedClassDataSource.find(new NameRegexFilter( + "com\\.alibaba\\.jvm\\.sandbox\\.qatest\\.core\\.manager\\.CoreLoadedClassDataSourceTestCase\\$.*[M|m]an", + ".*" + )); + Assert.assertEquals(3, foundClasses.size()); + Assert.assertTrue(foundClasses.contains(Human.class)); + Assert.assertTrue(foundClasses.contains(Man.class)); + Assert.assertTrue(foundClasses.contains(Woman.class)); + } + + + class NameRegexWithSubClassesExtFilter extends NameRegexFilter implements ExtFilter { + + /** + * 构造名称正则表达式过滤器 + * + * @param javaNameRegex 类名正则表达式 + * @param javaMethodRegex 方法名正则表达式 + */ + public NameRegexWithSubClassesExtFilter(String javaNameRegex, String javaMethodRegex) { + super(javaNameRegex, javaMethodRegex); + } + + @Override + public boolean isIncludeSubClasses() { + return true; + } + + @Override + public boolean isIncludeBootstrap() { + return false; + } + + } + + @Test + public void test$$CoreLoadedClassDataSource$$findSubClasses$$Human() { + final Set> foundClasses = coreLoadedClassDataSource.find( + new NameRegexWithSubClassesExtFilter( + "com\\.alibaba\\.jvm\\.sandbox\\.qatest\\.core\\.manager\\.CoreLoadedClassDataSourceTestCase\\$Human", + ".*" + ) + ); + Assert.assertEquals(7, foundClasses.size()); + + final Set uniqueClassNameSet = new LinkedHashSet(); + for(final Class foundClass : foundClasses) { + uniqueClassNameSet.add(foundClass.getName()); + } + + Assert.assertTrue(uniqueClassNameSet.contains(Human.class.getName())); + Assert.assertTrue(uniqueClassNameSet.contains(Man.class.getName())); + Assert.assertTrue(uniqueClassNameSet.contains(Woman.class.getName())); + Assert.assertTrue(uniqueClassNameSet.contains(Worker.class.getName())); + Assert.assertTrue(uniqueClassNameSet.contains(InnerWorker.class.getName())); + Assert.assertTrue(uniqueClassNameSet.contains("com.alibaba.jvm.sandbox.qatest.core.manager.CoreLoadedClassDataSourceTestCase$1")); + Assert.assertTrue(uniqueClassNameSet.contains("com.alibaba.jvm.sandbox.qatest.core.manager.CoreLoadedClassDataSourceTestCase$2")); + + } + + @Test + public void test$$CoreLoadedClassDataSource$$findSubClasses$$Woman() { + final Set> foundClasses = coreLoadedClassDataSource.find( + new NameRegexWithSubClassesExtFilter( + "com\\.alibaba\\.jvm\\.sandbox\\.qatest\\.core\\.manager\\.CoreLoadedClassDataSourceTestCase\\$Woman", + ".*" + ) + ); + Assert.assertEquals(5, foundClasses.size()); + + final Set uniqueClassNameSet = new LinkedHashSet(); + for(final Class foundClass : foundClasses) { + uniqueClassNameSet.add(foundClass.getName()); + } + + Assert.assertTrue(uniqueClassNameSet.contains(Woman.class.getName())); + Assert.assertTrue(uniqueClassNameSet.contains(Worker.class.getName())); + Assert.assertTrue(uniqueClassNameSet.contains(InnerWorker.class.getName())); + Assert.assertTrue(uniqueClassNameSet.contains("com.alibaba.jvm.sandbox.qatest.core.manager.CoreLoadedClassDataSourceTestCase$1")); + Assert.assertTrue(uniqueClassNameSet.contains("com.alibaba.jvm.sandbox.qatest.core.manager.CoreLoadedClassDataSourceTestCase$2")); + + } + + @Test + public void test$$CoreLoadedClassDataSource$$findSubClasses$$Man() { + final Set> foundClasses = coreLoadedClassDataSource.find( + new NameRegexWithSubClassesExtFilter( + "com\\.alibaba\\.jvm\\.sandbox\\.qatest\\.core\\.manager\\.CoreLoadedClassDataSourceTestCase\\$Man", + ".*" + ) + ); + Assert.assertEquals(4, foundClasses.size()); + + final Set uniqueClassNameSet = new LinkedHashSet(); + for(final Class foundClass : foundClasses) { + uniqueClassNameSet.add(foundClass.getName()); + } + + Assert.assertTrue(uniqueClassNameSet.contains(Man.class.getName())); + Assert.assertTrue(uniqueClassNameSet.contains(Worker.class.getName())); + Assert.assertTrue(uniqueClassNameSet.contains(InnerWorker.class.getName())); + Assert.assertTrue(uniqueClassNameSet.contains("com.alibaba.jvm.sandbox.qatest.core.manager.CoreLoadedClassDataSourceTestCase$2")); + + } + +} diff --git a/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase.java new file mode 100644 index 00000000..c4213683 --- /dev/null +++ b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase.java @@ -0,0 +1,660 @@ +package com.alibaba.jvm.sandbox.qatest.core.manager; + +import com.alibaba.jvm.sandbox.api.Information; +import com.alibaba.jvm.sandbox.api.Module; +import com.alibaba.jvm.sandbox.api.ModuleException; +import com.alibaba.jvm.sandbox.api.filter.Filter; +import com.alibaba.jvm.sandbox.core.CoreConfigure; +import com.alibaba.jvm.sandbox.core.domain.CoreModule; +import com.alibaba.jvm.sandbox.core.manager.CoreLoadedClassDataSource; +import com.alibaba.jvm.sandbox.core.manager.CoreModuleManager; +import com.alibaba.jvm.sandbox.core.manager.ModuleLifeCycleEventBus; +import com.alibaba.jvm.sandbox.core.manager.ModuleLifeCycleEventBus.Event; +import com.alibaba.jvm.sandbox.core.manager.ProviderManager; +import com.alibaba.jvm.sandbox.core.manager.impl.DefaultCoreModuleManager; +import com.alibaba.jvm.sandbox.core.manager.impl.DefaultModuleLifeCycleEventBus; +import com.alibaba.jvm.sandbox.core.util.FeatureCodec; +import com.alibaba.jvm.sandbox.core.util.matcher.Matcher; +import com.alibaba.jvm.sandbox.qatest.core.util.SandboxModuleJarBuilder; +import org.apache.commons.lang3.StringUtils; +import org.junit.Assert; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.File; +import java.io.IOException; +import java.lang.instrument.ClassDefinition; +import java.lang.instrument.ClassFileTransformer; +import java.lang.instrument.Instrumentation; +import java.lang.instrument.UnmodifiableClassException; +import java.util.*; +import java.util.jar.JarFile; + +import static com.alibaba.jvm.sandbox.api.ModuleException.ErrorCode.MODULE_ACTIVE_ERROR; +import static java.io.File.createTempFile; + +public class CoreModuleManagerTestCase { + + private final Logger logger = LoggerFactory.getLogger(getClass()); + + @Information(id = "broken-on-cinit") + public static class BrokenOnCInitModule implements Module { + static { + if (true) { + throw new RuntimeException("BROKEN-ON-CINIT"); + } + } + } + + @Information(id = "broken-on-load") + public static class BrokenOnLoadModule extends ModuleLifeCycleAdapter implements Module { + @Override + public void onLoad() throws Throwable { + throw new IllegalAccessException("BROKEN-ON-LOAD"); + } + } + + @Information(id = "broken-on-unload") + public static class BrokenOnUnLoadModule extends ModuleLifeCycleAdapter implements Module { + @Override + public void onUnload() { + throw new RuntimeException("BROKEN-ON-UNLOAD"); + } + } + + @Information(id = "broken-on-active") + public static class BrokenOnActiveModule extends ModuleLifeCycleAdapter implements Module { + @Override + public void onActive() { + throw new RuntimeException("BROKEN-ON-ACTIVE"); + } + } + + @Information(id = "broken-on-lazy-active", isActiveOnLoad = false) + public static class BrokenOnLazyActiveModule extends ModuleLifeCycleAdapter implements Module { + @Override + public void onActive() { + throw new RuntimeException("BROKEN-ON-LAZY-ACTIVE"); + } + } + + @Information(id = "broken-on-frozen") + public static class BrokenOnFrozenModule extends ModuleLifeCycleAdapter implements Module { + @Override + public void onFrozen() { + throw new RuntimeException("BROKEN-ON-FROZEN"); + } + } + + @Information(id = "broken-on-load-completed") + public static class BrokenOnLoadCompletedModule extends ModuleLifeCycleAdapter implements Module { + @Override + public void loadCompleted() { + throw new RuntimeException("BROKEN-ON-LOAD-COMPLETED"); + } + } + + @Information(id = "normal-module") + public static class NormalModule extends ModuleLifeCycleAdapter implements Module { + + } + + @Information(id = "normal-no-lazy-active-module", isActiveOnLoad = false) + public static class NormalOnLazyActiveModule extends ModuleLifeCycleAdapter implements Module { + + } + + final class EmptyInstrumentation implements Instrumentation { + + @Override + public void addTransformer(ClassFileTransformer transformer, boolean canRetransform) { + + } + + @Override + public void addTransformer(ClassFileTransformer transformer) { + + } + + @Override + public boolean removeTransformer(ClassFileTransformer transformer) { + return false; + } + + @Override + public boolean isRetransformClassesSupported() { + return false; + } + + @Override + public void retransformClasses(Class... classes) throws UnmodifiableClassException { + + } + + @Override + public boolean isRedefineClassesSupported() { + return false; + } + + @Override + public void redefineClasses(ClassDefinition... definitions) throws ClassNotFoundException, UnmodifiableClassException { + + } + + @Override + public boolean isModifiableClass(Class theClass) { + return false; + } + + @Override + public Class[] getAllLoadedClasses() { + return new Class[0]; + } + + @Override + public Class[] getInitiatedClasses(ClassLoader loader) { + return new Class[0]; + } + + @Override + public long getObjectSize(Object objectToSize) { + return 0; + } + + @Override + public void appendToBootstrapClassLoaderSearch(JarFile jarfile) { + + } + + @Override + public void appendToSystemClassLoaderSearch(JarFile jarfile) { + + } + + @Override + public boolean isNativeMethodPrefixSupported() { + return false; + } + + @Override + public void setNativeMethodPrefix(ClassFileTransformer transformer, String prefix) { + + } + } + + final class EmptyCoreLoadedClassDataSource implements CoreLoadedClassDataSource { + + @Override + public List> findForReTransform(Matcher matcher) { + return null; + } + + @Override + public Set> list() { + return null; + } + + @Override + public Set> find(Filter filter) { + return null; + } + + @Override + public Iterator> iteratorForLoadedClasses() { + return null; + } + } + + final class EmptyProviderManager implements ProviderManager { + + @Override + public void loading(File moduleJarFile) throws Throwable { + + } + + @Override + public void loading(String uniqueId, Class moduleClass, Module module, File moduleJarFile, ClassLoader moduleClassLoader) throws Throwable { + + } + } + + private CoreConfigure buildingCoreConfigureWithUserModuleLib(final File... moduleJarFileArray) { + + final Set moduleJarFilePathSet = new LinkedHashSet(); + for (final File moduleJarFile : moduleJarFileArray) { + moduleJarFilePathSet.add(moduleJarFile.getPath()); + } + + final Map featureMap = new HashMap(); + featureMap.put("user_module", StringUtils.join(moduleJarFilePathSet, ";")); + featureMap.put("system_module", System.getProperty("user.home")); + return CoreConfigure.toConfigure( + new FeatureCodec(';', '=').toString(featureMap), + null + ); + } + + private File buildingModuleJarFileWithModuleClass(final File targetModuleJarFile, + final Class... classOfModules) throws IOException { + final SandboxModuleJarBuilder sandboxModuleJarBuilder = SandboxModuleJarBuilder.building(targetModuleJarFile); + for (final Class classOfModule : classOfModules) { + sandboxModuleJarBuilder.putModuleClass(classOfModule); + } + return sandboxModuleJarBuilder.build(); + } + + + @Test + public void test$$CoreModuleManager$$ModuleLifeCycle() throws IOException, ModuleException { + final File moduleJarFile = buildingModuleJarFileWithModuleClass( + createTempFile("test-", ".jar"), + NormalModule.class + ); + + final Queue eventQueue = new LinkedList(); + eventQueue.offer(Event.LOAD); + eventQueue.offer(Event.ACTIVE); + eventQueue.offer(Event.LOAD_COMPLETED); + + final ModuleLifeCycleEventBus moduleLifeCycleEventBus = new DefaultModuleLifeCycleEventBus(); + moduleLifeCycleEventBus.append(new ModuleLifeCycleEventBus.ModuleLifeCycleEventListener() { + @Override + public boolean onFire(CoreModule coreModule, Event event) { + Assert.assertEquals("normal-module", coreModule.getUniqueId()); + Assert.assertTrue(coreModule.getModule() instanceof Module); + Assert.assertEquals(moduleJarFile, coreModule.getJarFile()); + if (eventQueue.peek() == event) { + eventQueue.poll(); + } else { + logger.warn("expect-event={} but actual-event={}", eventQueue.peek(), event); + } + return true; + } + }); + + final CoreModuleManager coreModuleManager = new DefaultCoreModuleManager( + buildingCoreConfigureWithUserModuleLib(moduleJarFile), + new EmptyInstrumentation(), + this.getClass().getClassLoader(), + new EmptyCoreLoadedClassDataSource(), + moduleLifeCycleEventBus, + new EmptyProviderManager() + ); + + + // 刚完成初始化,注册好的事件应该消化完成 + { + Assert.assertEquals(1, coreModuleManager.list().size()); + Assert.assertEquals("normal-module", coreModuleManager.list().iterator().next().getUniqueId()); + Assert.assertTrue(eventQueue.isEmpty()); + } + + + // 卸载模块 + { + eventQueue.offer(Event.FROZE); + eventQueue.offer(Event.UNLOAD); + coreModuleManager.unload(coreModuleManager.get("normal-module"), false); + Assert.assertEquals(0, coreModuleManager.list().size()); + Assert.assertTrue(eventQueue.isEmpty()); + } + + // 重新刷新 + { + eventQueue.offer(Event.LOAD); + eventQueue.offer(Event.ACTIVE); + eventQueue.offer(Event.LOAD_COMPLETED); + coreModuleManager.flush(false); + Assert.assertEquals(1, coreModuleManager.list().size()); + Assert.assertEquals("normal-module", coreModuleManager.list().iterator().next().getUniqueId()); + Assert.assertTrue(eventQueue.isEmpty()); + } + + // 冻结-激活-冻结 + { + eventQueue.offer(Event.FROZE); + eventQueue.offer(Event.ACTIVE); + eventQueue.offer(Event.FROZE); + coreModuleManager.frozen(coreModuleManager.get("normal-module"), false); + coreModuleManager.active(coreModuleManager.get("normal-module")); + coreModuleManager.frozen(coreModuleManager.get("normal-module"), false); + Assert.assertEquals(1, coreModuleManager.list().size()); + Assert.assertEquals("normal-module", coreModuleManager.list().iterator().next().getUniqueId()); + Assert.assertTrue(eventQueue.isEmpty()); + } + + + } + + @Test + public void test$$CoreModuleManager$$loading() throws IOException { + + final File moduleJarFile = buildingModuleJarFileWithModuleClass( + createTempFile("test-", ".jar"), + NormalModule.class, + BrokenOnCInitModule.class, + BrokenOnLazyActiveModule.class, + BrokenOnActiveModule.class, + BrokenOnFrozenModule.class, + BrokenOnLoadModule.class, + BrokenOnUnLoadModule.class, + BrokenOnLoadCompletedModule.class + ); + + final CoreModuleManager coreModuleManager = new DefaultCoreModuleManager( + buildingCoreConfigureWithUserModuleLib(moduleJarFile), + new EmptyInstrumentation(), + this.getClass().getClassLoader(), + new EmptyCoreLoadedClassDataSource(), + new DefaultModuleLifeCycleEventBus(), + new EmptyProviderManager() + ); + + final Set uniqueIds = new LinkedHashSet(); + for (final CoreModule coreModule : coreModuleManager.list()) { + uniqueIds.add(coreModule.getUniqueId()); + } + + Assert.assertTrue(uniqueIds.contains("normal-module")); + Assert.assertTrue(uniqueIds.contains("broken-on-unload")); + Assert.assertTrue(uniqueIds.contains("broken-on-lazy-active")); + Assert.assertTrue(uniqueIds.contains("broken-on-frozen")); + Assert.assertTrue(uniqueIds.contains("broken-on-load-completed")); + Assert.assertEquals(5, uniqueIds.size()); + + } + + + @Information(id = "another-normal-module") + public static class AnotherNormalModule implements Module { + + } + + @Information(id = "another-normal-module") + public static class ModifyAnotherNormalModule implements Module { + + } + + @Test + public void test$$CoreModuleManager$$forceFlush() throws IOException, ModuleException { + + final File normalModuleJarFile = buildingModuleJarFileWithModuleClass( + createTempFile("test-", ".jar"), + NormalModule.class + ); + + final File anotherNormalModuleJarFile = buildingModuleJarFileWithModuleClass( + createTempFile("test-", ".jar"), + AnotherNormalModule.class + ); + + final CoreModuleManager coreModuleManager = new DefaultCoreModuleManager( + buildingCoreConfigureWithUserModuleLib( + normalModuleJarFile, + anotherNormalModuleJarFile + ), + new EmptyInstrumentation(), + this.getClass().getClassLoader(), + new EmptyCoreLoadedClassDataSource(), + new DefaultModuleLifeCycleEventBus(), + new EmptyProviderManager() + ); + + final Set uniqueIds = new LinkedHashSet(); + for (final CoreModule coreModule : coreModuleManager.list()) { + uniqueIds.add(coreModule.getUniqueId()); + } + + Assert.assertTrue(uniqueIds.contains("normal-module")); + Assert.assertTrue(uniqueIds.contains("another-normal-module")); + Assert.assertEquals(2, uniqueIds.size()); + + Assert.assertTrue(anotherNormalModuleJarFile.delete()); + coreModuleManager.flush(true); + Assert.assertEquals(1, coreModuleManager.list().size()); + Assert.assertEquals("normal-module", coreModuleManager.list().iterator().next().getUniqueId()); + + } + + @Test + public void test$$CoreModuleManager$$softFlush$$delete() throws IOException, ModuleException { + + final File normalModuleJarFile = buildingModuleJarFileWithModuleClass( + createTempFile("test-", ".jar"), + NormalModule.class + ); + + final File anotherNormalModuleJarFile = buildingModuleJarFileWithModuleClass( + createTempFile("test-", ".jar"), + AnotherNormalModule.class + ); + + final CoreModuleManager coreModuleManager = new DefaultCoreModuleManager( + buildingCoreConfigureWithUserModuleLib( + normalModuleJarFile, + anotherNormalModuleJarFile + ), + new EmptyInstrumentation(), + this.getClass().getClassLoader(), + new EmptyCoreLoadedClassDataSource(), + new DefaultModuleLifeCycleEventBus(), + new EmptyProviderManager() + ); + + final Set uniqueIds = new LinkedHashSet(); + for (final CoreModule coreModule : coreModuleManager.list()) { + uniqueIds.add(coreModule.getUniqueId()); + } + + Assert.assertTrue(uniqueIds.contains("normal-module")); + Assert.assertTrue(uniqueIds.contains("another-normal-module")); + Assert.assertEquals(2, uniqueIds.size()); + + Assert.assertTrue(anotherNormalModuleJarFile.delete()); + coreModuleManager.flush(false); + Assert.assertEquals(1, coreModuleManager.list().size()); + Assert.assertEquals("normal-module", coreModuleManager.list().iterator().next().getUniqueId()); + + } + + + @Test + public void test$$CoreModuleManager$$softFlush$$modify() throws IOException, ModuleException { + + final File normalModuleJarFile = buildingModuleJarFileWithModuleClass( + createTempFile("test-", ".jar"), + NormalModule.class + ); + + final File anotherNormalModuleJarFile = buildingModuleJarFileWithModuleClass( + createTempFile("test-", ".jar"), + AnotherNormalModule.class + ); + + final CoreModuleManager coreModuleManager = new DefaultCoreModuleManager( + buildingCoreConfigureWithUserModuleLib( + normalModuleJarFile, + anotherNormalModuleJarFile + ), + new EmptyInstrumentation(), + this.getClass().getClassLoader(), + new EmptyCoreLoadedClassDataSource(), + new DefaultModuleLifeCycleEventBus(), + new EmptyProviderManager() + ); + + { + final Set uniqueIds = new LinkedHashSet(); + for (final CoreModule coreModule : coreModuleManager.list()) { + uniqueIds.add(coreModule.getUniqueId()); + } + + Assert.assertTrue(uniqueIds.contains("normal-module")); + Assert.assertTrue(uniqueIds.contains("another-normal-module")); + Assert.assertEquals(2, uniqueIds.size()); + } + + { + buildingModuleJarFileWithModuleClass( + anotherNormalModuleJarFile, + ModifyAnotherNormalModule.class + ); + coreModuleManager.flush(false); + + final Set uniqueIds = new LinkedHashSet(); + for (final CoreModule coreModule : coreModuleManager.list()) { + uniqueIds.add(coreModule.getUniqueId()); + } + + Assert.assertTrue(uniqueIds.contains("normal-module")); + Assert.assertTrue(uniqueIds.contains("another-normal-module")); + Assert.assertEquals(2, coreModuleManager.list().size()); + Assert.assertEquals( + ModifyAnotherNormalModule.class.getName(), + coreModuleManager.get("another-normal-module").getModule().getClass().getName() + ); + } + + } + + + @Test(expected = ModuleException.class) + public void test$$CoreModuleManager$$getThrowsExceptionIfNull() throws IOException, ModuleException { + + final File moduleJarFile = buildingModuleJarFileWithModuleClass( + createTempFile("test-", ".jar"), + NormalModule.class, + BrokenOnCInitModule.class, + BrokenOnLazyActiveModule.class, + BrokenOnActiveModule.class, + BrokenOnFrozenModule.class, + BrokenOnLoadModule.class, + BrokenOnUnLoadModule.class, + BrokenOnLoadCompletedModule.class + ); + + final CoreModuleManager coreModuleManager = new DefaultCoreModuleManager( + buildingCoreConfigureWithUserModuleLib(moduleJarFile), + new EmptyInstrumentation(), + this.getClass().getClassLoader(), + new EmptyCoreLoadedClassDataSource(), + new DefaultModuleLifeCycleEventBus(), + new EmptyProviderManager() + ); + + coreModuleManager.getThrowsExceptionIfNull("not-existed-module"); + } + + @Test + public void test$$CoreModuleManager$$activeOnSuccess() throws IOException, ModuleException { + + final File moduleJarFile = buildingModuleJarFileWithModuleClass( + createTempFile("test-", ".jar"), + NormalOnLazyActiveModule.class + ); + + + final Queue eventQueue = new LinkedList(); + eventQueue.offer(Event.LOAD); + eventQueue.offer(Event.LOAD_COMPLETED); + + final ModuleLifeCycleEventBus moduleLifeCycleEventBus = new DefaultModuleLifeCycleEventBus(); + moduleLifeCycleEventBus.append(new ModuleLifeCycleEventBus.ModuleLifeCycleEventListener() { + @Override + public boolean onFire(CoreModule coreModule, Event event) { + Assert.assertEquals("normal-no-lazy-active-module", coreModule.getUniqueId()); + Assert.assertTrue(coreModule.getModule() instanceof Module); + Assert.assertEquals(moduleJarFile, coreModule.getJarFile()); + if (eventQueue.peek() == event) { + eventQueue.poll(); + } else { + logger.warn("expect-event={} but actual-event={}", eventQueue.peek(), event); + } + return true; + } + }); + + final CoreModuleManager coreModuleManager = new DefaultCoreModuleManager( + buildingCoreConfigureWithUserModuleLib(moduleJarFile), + new EmptyInstrumentation(), + this.getClass().getClassLoader(), + new EmptyCoreLoadedClassDataSource(), + moduleLifeCycleEventBus, + new EmptyProviderManager() + ); + + final CoreModule normalNoLazyActiveCoreModule = coreModuleManager + .getThrowsExceptionIfNull("normal-no-lazy-active-module"); + + { + eventQueue.offer(Event.ACTIVE); + coreModuleManager.active(normalNoLazyActiveCoreModule); + Assert.assertTrue(eventQueue.isEmpty()); + } + + { + eventQueue.offer(Event.FROZE); + coreModuleManager.frozen(normalNoLazyActiveCoreModule, false); + Assert.assertTrue(eventQueue.isEmpty()); + } + + } + + @Test + public void test$$CoreModuleManager$$activeOnFailed() throws IOException, ModuleException { + + final File moduleJarFile = buildingModuleJarFileWithModuleClass( + createTempFile("test-", ".jar"), + BrokenOnLazyActiveModule.class + ); + + + final Queue eventQueue = new LinkedList(); + eventQueue.offer(Event.LOAD); + eventQueue.offer(Event.LOAD_COMPLETED); + + final ModuleLifeCycleEventBus moduleLifeCycleEventBus = new DefaultModuleLifeCycleEventBus(); + moduleLifeCycleEventBus.append(new ModuleLifeCycleEventBus.ModuleLifeCycleEventListener() { + @Override + public boolean onFire(CoreModule coreModule, Event event) { + Assert.assertEquals("broken-on-lazy-active", coreModule.getUniqueId()); + Assert.assertTrue(coreModule.getModule() instanceof Module); + Assert.assertEquals(moduleJarFile, coreModule.getJarFile()); + if (eventQueue.peek() == event) { + eventQueue.poll(); + } else { + logger.warn("expect-event={} but actual-event={}", eventQueue.peek(), event); + } + return true; + } + }); + + final CoreModuleManager coreModuleManager = new DefaultCoreModuleManager( + buildingCoreConfigureWithUserModuleLib(moduleJarFile), + new EmptyInstrumentation(), + this.getClass().getClassLoader(), + new EmptyCoreLoadedClassDataSource(), + moduleLifeCycleEventBus, + new EmptyProviderManager() + ); + + final CoreModule brokenOnLazyActiveCoreModule = coreModuleManager + .getThrowsExceptionIfNull("broken-on-lazy-active"); + + { + eventQueue.offer(Event.ACTIVE); + try { + coreModuleManager.active(brokenOnLazyActiveCoreModule); + }catch (ModuleException me) { + Assert.assertEquals("broken-on-lazy-active", me.getUniqueId()); + Assert.assertEquals(MODULE_ACTIVE_ERROR, me.getErrorCode()); + } + + Assert.assertFalse(eventQueue.isEmpty()); + } + + } + + +} diff --git a/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/manager/ModuleLifeCycleAdapter.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/manager/ModuleLifeCycleAdapter.java new file mode 100644 index 00000000..accff653 --- /dev/null +++ b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/manager/ModuleLifeCycleAdapter.java @@ -0,0 +1,30 @@ +package com.alibaba.jvm.sandbox.qatest.core.manager; + +import com.alibaba.jvm.sandbox.api.ModuleLifecycle; + +public class ModuleLifeCycleAdapter implements ModuleLifecycle { + @Override + public void onLoad() throws Throwable { + + } + + @Override + public void onUnload() throws Throwable { + + } + + @Override + public void onActive() throws Throwable { + + } + + @Override + public void onFrozen() throws Throwable { + + } + + @Override + public void loadCompleted() { + + } +} diff --git a/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/JarBuilder.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/JarBuilder.java new file mode 100644 index 00000000..d5bf5157 --- /dev/null +++ b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/JarBuilder.java @@ -0,0 +1,85 @@ +package com.alibaba.jvm.sandbox.qatest.core.util; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.nio.charset.Charset; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.jar.JarEntry; +import java.util.jar.JarOutputStream; +import java.util.jar.Manifest; + +import static com.alibaba.jvm.sandbox.qatest.core.util.QaClassUtils.toByteArray; +import static org.apache.commons.io.IOUtils.closeQuietly; +import static org.apache.commons.lang3.StringUtils.replace; + +public class JarBuilder { + + private final File targetJarFile; + private final Manifest manifest = new Manifest(); + private final Map entryDataMap = new LinkedHashMap(); + + public JarBuilder(File targetJarFile) { + this.targetJarFile = targetJarFile; + } + + public JarBuilder manifest(String name, String value) { + manifest.getMainAttributes().putValue(name, value); + return this; + } + + public JarBuilder putEntry(Class clazz) throws IOException { + entryDataMap.put( + replace(clazz.getName(), ".", "/") + ".class", + toByteArray(clazz) + ); + return this; + } + + public JarBuilder putEntry(String name, byte[] dataArray) { + entryDataMap.put(name, dataArray); + return this; + } + + public JarBuilder putEntry(String name, String text, Charset charset) { + entryDataMap.put(name, text.getBytes(charset)); + return this; + } + + public JarBuilder putEntry(String name, String text) { + entryDataMap.put(name, text.getBytes()); + return this; + } + + private static Manifest mergeJarManifest(final Manifest targetJarManifest) { + Manifest mergeManifest = new Manifest(); + if (null != targetJarManifest) { + mergeManifest.getEntries().putAll(targetJarManifest.getEntries()); + } + mergeManifest.getMainAttributes().putValue("Manifest-Version", "1.0"); + mergeManifest.getMainAttributes().putValue("Created-By", "QaJarUtils"); + mergeManifest.getMainAttributes().putValue("Author", "oldmanpushcart@gmail.com"); + return mergeManifest; + } + + public File build() throws IOException { + JarOutputStream jos = null; + try { + jos = new JarOutputStream(new FileOutputStream(targetJarFile), mergeJarManifest(manifest)); + for (Map.Entry entry : entryDataMap.entrySet()) { + jos.putNextEntry(new JarEntry(entry.getKey())); + jos.write(entry.getValue()); + } + } finally { + closeQuietly(jos); + } + return targetJarFile; + } + + + public static JarBuilder building(final File targetJarFile) { + return new JarBuilder(targetJarFile); + } + +} diff --git a/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/ModuleTests.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/ModuleTests.java new file mode 100644 index 00000000..ed5186b3 --- /dev/null +++ b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/ModuleTests.java @@ -0,0 +1,25 @@ +package com.alibaba.jvm.sandbox.qatest.core.util; + +import com.alibaba.jvm.sandbox.api.Information; +import com.alibaba.jvm.sandbox.api.Module; + +import java.io.File; +import java.io.IOException; + +public class ModuleTests { + + @Information(id="test-module") + public static final class TestModule implements Module { + + } + + public static void main(String... args) throws IOException { + + System.out.println(TestModule.class.getName()); + + SandboxModuleJarBuilder.building(new File("/Users/vlinux/test-module.jar")) + .putModuleClass(TestModule.class) + .build(); + } + +} diff --git a/sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/util/QaClassUtils.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/QaClassUtils.java similarity index 98% rename from sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/util/QaClassUtils.java rename to sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/QaClassUtils.java index 63556190..076e06df 100644 --- a/sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/util/QaClassUtils.java +++ b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/QaClassUtils.java @@ -1,4 +1,4 @@ -package com.alibaba.jvm.sandbox.qatest.util; +package com.alibaba.jvm.sandbox.qatest.core.util; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.ArrayUtils; diff --git a/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/SandboxModuleJarBuilder.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/SandboxModuleJarBuilder.java new file mode 100644 index 00000000..23b301a1 --- /dev/null +++ b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/SandboxModuleJarBuilder.java @@ -0,0 +1,43 @@ +package com.alibaba.jvm.sandbox.qatest.core.util; + +import com.alibaba.jvm.sandbox.api.Module; +import org.apache.commons.lang3.StringUtils; + +import java.io.File; +import java.io.IOException; +import java.util.LinkedHashSet; +import java.util.Set; + +public class SandboxModuleJarBuilder extends JarBuilder { + + private final Set moduleSpiSet = new LinkedHashSet(); + + public SandboxModuleJarBuilder(File targetJarFile) { + super(targetJarFile); + } + + public SandboxModuleJarBuilder putModuleClass(final Class classOfModule) throws IOException { + super.putEntry(classOfModule); + moduleSpiSet.add(classOfModule.getName()); + return this; + } + + private void putModuleSpi() { + putEntry( + "META-INF/services/com.alibaba.jvm.sandbox.api.Module", + StringUtils.join(moduleSpiSet, "\n") + ); + } + + @Override + public File build() throws IOException { + putModuleSpi(); + return super.build(); + } + + + public static SandboxModuleJarBuilder building(final File targetJarFile) { + return new SandboxModuleJarBuilder(targetJarFile); + } + +} diff --git a/sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/ClassStructureTestCaseByChildClass.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/ClassStructureTestCaseByChildClass.java similarity index 99% rename from sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/ClassStructureTestCaseByChildClass.java rename to sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/ClassStructureTestCaseByChildClass.java index c58425ba..8a2918cd 100644 --- a/sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/ClassStructureTestCaseByChildClass.java +++ b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/ClassStructureTestCaseByChildClass.java @@ -14,12 +14,12 @@ import java.io.IOException; import java.util.Collection; +import static com.alibaba.jvm.sandbox.qatest.core.util.QaClassUtils.toByteArray; import static com.alibaba.jvm.sandbox.qatest.core.util.matcher.asserts.AccessAsserter.AccessIsEnum.*; import static com.alibaba.jvm.sandbox.qatest.core.util.matcher.asserts.BehaviorStructureCollectionAsserter.buildBehaviorSignCodeArrayAsserter; import static com.alibaba.jvm.sandbox.qatest.core.util.matcher.asserts.ClassStructureCollectionAsserter.buildEmptyJavaClassNameArrayAsserter; import static com.alibaba.jvm.sandbox.qatest.core.util.matcher.asserts.ClassStructureCollectionAsserter.buildJavaClassNameArrayAsserter; import static com.alibaba.jvm.sandbox.qatest.core.util.matcher.asserts.MappingAsserter.Mode.ALL; -import static com.alibaba.jvm.sandbox.qatest.util.QaClassUtils.toByteArray; import static java.util.Arrays.asList; @RunWith(Parameterized.class) diff --git a/sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/AccessAsserter.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/AccessAsserter.java similarity index 100% rename from sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/AccessAsserter.java rename to sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/AccessAsserter.java diff --git a/sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/Asserter.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/Asserter.java similarity index 100% rename from sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/Asserter.java rename to sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/Asserter.java diff --git a/sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/BehaviorStructureAsserter.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/BehaviorStructureAsserter.java similarity index 100% rename from sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/BehaviorStructureAsserter.java rename to sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/BehaviorStructureAsserter.java diff --git a/sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/BehaviorStructureCollectionAsserter.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/BehaviorStructureCollectionAsserter.java similarity index 100% rename from sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/BehaviorStructureCollectionAsserter.java rename to sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/BehaviorStructureCollectionAsserter.java diff --git a/sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/ClassStructureAsserter.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/ClassStructureAsserter.java similarity index 100% rename from sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/ClassStructureAsserter.java rename to sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/ClassStructureAsserter.java diff --git a/sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/ClassStructureCollectionAsserter.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/ClassStructureCollectionAsserter.java similarity index 100% rename from sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/ClassStructureCollectionAsserter.java rename to sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/ClassStructureCollectionAsserter.java diff --git a/sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/MappingAsserter.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/MappingAsserter.java similarity index 100% rename from sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/MappingAsserter.java rename to sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/MappingAsserter.java diff --git a/sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ChildClass.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ChildClass.java similarity index 100% rename from sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ChildClass.java rename to sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ChildClass.java diff --git a/sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/GrandpaClass.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/GrandpaClass.java similarity index 100% rename from sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/GrandpaClass.java rename to sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/GrandpaClass.java diff --git a/sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IGrandpaInterfaceFirst.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IGrandpaInterfaceFirst.java similarity index 100% rename from sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IGrandpaInterfaceFirst.java rename to sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IGrandpaInterfaceFirst.java diff --git a/sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IGrandpaInterfaceFirstFirst.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IGrandpaInterfaceFirstFirst.java similarity index 100% rename from sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IGrandpaInterfaceFirstFirst.java rename to sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IGrandpaInterfaceFirstFirst.java diff --git a/sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IParentInterfaceFirst.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IParentInterfaceFirst.java similarity index 100% rename from sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IParentInterfaceFirst.java rename to sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IParentInterfaceFirst.java diff --git a/sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IParentInterfaceFirstFirst.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IParentInterfaceFirstFirst.java similarity index 100% rename from sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IParentInterfaceFirstFirst.java rename to sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IParentInterfaceFirstFirst.java diff --git a/sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IParentInterfaceFirstSecond.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IParentInterfaceFirstSecond.java similarity index 100% rename from sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IParentInterfaceFirstSecond.java rename to sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IParentInterfaceFirstSecond.java diff --git a/sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IParentInterfaceSecond.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IParentInterfaceSecond.java similarity index 100% rename from sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IParentInterfaceSecond.java rename to sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IParentInterfaceSecond.java diff --git a/sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IllInheritedAnnotation.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IllInheritedAnnotation.java similarity index 100% rename from sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IllInheritedAnnotation.java rename to sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IllInheritedAnnotation.java diff --git a/sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/InheritedAnnotation.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/InheritedAnnotation.java similarity index 100% rename from sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/InheritedAnnotation.java rename to sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/InheritedAnnotation.java diff --git a/sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ParentClass.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ParentClass.java similarity index 100% rename from sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ParentClass.java rename to sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ParentClass.java diff --git a/sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/package-info.java b/sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/package-info.java similarity index 100% rename from sandbox-qatest/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/package-info.java rename to sandbox-core/src/test/java/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/package-info.java diff --git a/sandbox-qatest/lib/sandbox-spy-1.1.0-for-qatest.jar b/sandbox-core/src/test/resources/lib/sandbox-spy-1.1.0-for-qatest.jar similarity index 100% rename from sandbox-qatest/lib/sandbox-spy-1.1.0-for-qatest.jar rename to sandbox-core/src/test/resources/lib/sandbox-spy-1.1.0-for-qatest.jar diff --git a/sandbox-core/src/test/resources/logback.xml b/sandbox-core/src/test/resources/logback.xml new file mode 100755 index 00000000..c7f37818 --- /dev/null +++ b/sandbox-core/src/test/resources/logback.xml @@ -0,0 +1,14 @@ + + + + + + %d{yyyy-MM-dd HH:mm:ss} %5level %msg%n   + + + + + + + + \ No newline at end of file diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/CoreConfigure.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/CoreConfigure.class new file mode 100644 index 0000000000000000000000000000000000000000..463b15616b5f98408aa70a2065496ce221d58f32 GIT binary patch literal 9146 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 literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/CoreLauncher.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/CoreLauncher.class new file mode 100644 index 0000000000000000000000000000000000000000..89eb92712b1f2d1ce631af059cb3fe792ae1c07b GIT binary patch literal 2290 zcma)7T~`xF7=D&)ShB7~f>EPZqlhK}T#Knz;s+lUD}vGnQM6x^WJwk_*|@tw`%~Jh z-t>5l7r?2fde@8I^%wMi^muyu%qBuOa9VRtW@cyJnR%Y){g^-g`SlHeQLO1uaW#g| zaIFVp8uB`>J_sPcy_&#|B#u?q5^fw zEn5nDXYIOmzga6<-hwDPoQco6CE+Xz&z9fqNj0e2zJj6Il3O!{V;4nHm@8{F(--w} z(S2c-T+cG6*vyJ%y;QZlyaFQ-Ud0M#)@t*1SsuIxENw)^ss}T|n-@VsS>YQkV zMCld<2SmWR>VyQQAW~Yc5Z7AmL2*UFU?_m!teb)BI=Z%wSjN&t%mOmd=H*_2`4oa4U|C1&+gdYbsVcAoC&YetdZEZzI1`zT1rWs zBrKsI^TB?W8%|Q)otw6`H(=qZfn`v@qdV)ZK%H#bPTBGl9B+qE%5g? z#6DRs37m7iiYXe5L5t~Ft1)-N%5b?|8Xg9=!#vPzf06}bRl$kQgQlv&D_GB(R=s59 zGfzm~^5~u3@Y*m*7Ccd6C?9L@+6^!-5p;`2!>TjxMmkS!6WhzR9Ridx_n+a`Byh9P zDm1Ob+EjX3U8Y3Sx8^M0XR0u6J1^c2#Qk;d3EcO7JDlE&j<8hgg-vIw>ANjiCX`p` zibtZqL0yUr6_(WD!WN<%=*|uek8DC)r+F7nv5kjY`q=jKs3gv^JnNmno%{`O zWq{Yo(K-IR!qFf{5uE2(<=O>4ZfRsVl5qYa9BEa}zUlrMr?QdJE%f|^L{@DLjBHd6 ze#F7oh%LqSO&oap8paY0X~M-#9DMYWug%aa^lsn~+t=t@+C)6wzk$O;TS&0mz!B2w z+QQNG5Z!g$;%gcSxs6gN5KoM3;us>cVX_(F=n^03PigrH#`%8V!DUv;94fdHaz8@c z<7AVirDR;?z7h5p`Hw+86Dw#iFVKi(maQcFC$H>gpHs$EB0DywCe`1eC)MGR4J4JM z`U_4Z)eRhfiT<%@_}vqJC!=rIc}4^YN-4#al1k4?=bYztzzu$lb2LF>leC*Akvp`S zCOirKUI;peC~b4w4$EyjEVu2j90^N@Mc9vWry5d9Kz)aVhTI%!y@SE_Z$jGfszR+~ Hyj=MgtnV}> literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/classloader/ModuleClassLoader.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/classloader/ModuleClassLoader.class new file mode 100644 index 0000000000000000000000000000000000000000..8381dab95cfb8c36537ebccbea01998275e5e3d2 GIT binary patch literal 6595 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 v$S8rx*)!o`%63b>tLMQy=A1n~dP!2Uc?9S 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 P$@P3kc^YG(>Ja%4V9;lihZ+;c)N0 zUi%BY@j}nBAbRw8?ceZUc#a>>%qC5mrUB85%*@Wr`@YZn%ro!gx4(Y;1;82jNep1d zz>Op#nCZqKK2%LsHM6RjQ_W4)+)~X)J@^>89?avmYVH{LB#A!UO=1Cys=1fIeFG1a z+fS4D3=a)Rfkf4HHmdeaQ6QCFm5-!VlJ2sV3w+029uqKDrGL#S*#dpxvg29mn@e3K zPZn)oU_4v!%9boSd6}2i>Z7t%k!~^XJ+=y-Z(D_utW?6i)~r{omh34tlhxMBPgze2 z4DISit~)hT?mtxXuDvKM^S*Q|OP*i0{fa<;h_f0vB`aqKH0aJb%dQNnKC`&Hef2re z%hHw0wr@G*bvg@^Y8Q5FLWPlqz2U^7hrN% z+a~r#?g+%Dyds(C&pNI>S1sple_rO*38%7NL6+`F-%;PS$yl)Bkk!+>de_K`URgS> zHO2D|kC=S)IF&06Mxw(bOOv;vu!&^rwZyadO!XZq(JfXLw{g zv)s$|P;>$lT>ej@RnEdp1&()c*2KNQ5gK(+5oz9AhutLK#n!q1Q?xyVbbG4=?5l^` zUIb!=DK`+{5zYvtJ6u13>CUvi@P*y0mFhDf>0McwJUjSRG6p!BG?Y@v4afIA|h`LndCsVH0m+ z$iy)W87P{tvBc;mmN9B#1&+Ygj`DfYJWZ@(%|OY-1SU;f#U!zY_3)lkymYKGrmLqK zJP_E^D9|_at9F6#%Ww^NCf2bbFxnB*jyuX5-=JkCuzeYLEayCCR*Bxm5_#f7;cRUf ztgA%xSvTa3H&$e2&VJ0@F;{on^%P>}z7$1wWod~C@O%TO5;#1f%kMre6#R6AMOD@_Xbi* zgB+!l40TT>>YifMJ%tKE3-JHI8~jn9dQ6G3@8#NYyv25yUtc1MIQwInrx2N+5LtMN z=q6&B6Pt)75MB-x5&sx6W;?U5vR zAeknT>$@OPN2ZXRC7WSd&75>Kk_tJ=wncKDhqBYyXf?jo*7yS6ZDX8hHJ)#4d=ZyO zt~!lo*s)gQyKRg^`HnI6I4-wA5N~yIzl{?<-#p|n_b-SfMkJ%ramp$73_Sv~C!fI- z_zDL(=oR=CeRJtkPtgAadmfH|{rB%_b=Fa>xQU}Ff+XI< z6)on`nwTQoF@g7qV2XZBME+zr10Vds-Fz5c7TezT*j9+mq32a%TVv$XbFp3B72CBf z(r1~sx`gReD*iJD7NTS?o?D2qOFY58+z)uAaTI+z{SB6?fVX|4=}6LBS9F@rBDnq! D_Z{Tg literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/Enhancer.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/Enhancer.class new file mode 100644 index 0000000000000000000000000000000000000000..2fecd266950bf2ac2385e364eebacf94b987cfba GIT binary patch literal 559 zcmb_Z!A=4(5PgHl3WDI#yNQ~pO}wr#3c-YA6A$Z+)9f-?mn<#m79v+a%Yz@_M;Qym zXrd$>JapRWyy<)M`u_3y2H*;Z0h$3?gtjx?g_E8c$(^;l2+$@}9~V<0GzVIX?G;>> zQWErOH0C+0f_0`=w~^tI*l^fg7iKOmR4gw1fs38ZbrueWQEDcNi#*|k)p$NpCF@aQ zo)u4XC3DeE^_TH@$sL{zyM%h2XPVv2dMz*8l3)KOzxgjgjo8d=D))Ke6}9^MiFGRW za_I`;V$*=Bv7%%RR$ono&bOHl$yibsphGy{^vYj05l*&**9e4)|9XI`gdGGv-}6}o Vb-x;`(>`i`Z}>_T2iUzm`UKcDtLgv% literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/EventEnhancer$1.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/EventEnhancer$1.class new file mode 100644 index 0000000000000000000000000000000000000000..dfc9bee379334c666da8f121429cfbdc97392ed8 GIT binary patch literal 2131 zcmbVOZBr9h6n<{r7MF#D09K@ETcb@va0LaG0AexN*brNSQ0cVOo6R*@n(Q*04bq=t z|3JUenOYe;(|+&&>BqjDyBot&p^j#<_vM`Dyxw!}?jL`@{0+bizB+?AX5}!aB7vJK zZsE3ydE^x=C|FdXU`g)p$YHq;cjf$v99AUuo`QmcRff?$-b}gNsS9_d$=mIc&1=G8 zc(1g>_qg8VR$UJ;@(eMzVYXA(7;cmdyQTA{S>;u(@9eeoHn(b3dtWzfN9e+8aLW*S zVNY0Y!QVJie!;X%cZtDDzl(yB?bLO$C0Vi!-rVGlDfeAsM8?UW6)j6RUJ3+l=ib5R)HH=1+NYFVe1rEA zHqF3_48!t7>{iRRDxKY~0}Qv)f%qz}V_Nn6>y*svBvNWH3|`KJ>~@!zQ*ge2K>zwo#^r zc>8`xQDP@fspu`obY&~Xj|_VmWSDt-Lv;3rBe*L(6|Yop1)_EluI8T!q3 z(V|m+!VQWdoR+i!>U^)~4S69`>84LIuMo-)WaJpX*P6qw?WwkSvzI7*KyQo$y+J~W zglraoX6hVCp=T6lL03Pmwh=~@=45vAIaqcq@*JUTZsG;PKY7@5G{y)ET*erUSwv_| z;ym7`S+1m3$xmVe7d-7rTqOHpLVk#kd^_xG+Q$ghm^?%zoc$T0LqyBDz-B)3BjWSX zU!go6i@reL?^9!uUvTCbqLT+>ktu(fJD`R71NtRTeTG=FUsAMk7yQqkv>Q0Y;DP7U zIC&H!KV%g17^LwA1~7|pdNW?Y9C>+@BD#(1#GS#y%9SrWNgm0J`g(Ic zy*Z-!cuDi|k~T&7VZ^>saP=?rE70k$s)Hc{T_aWq)AY#z0$!&;$7!XK3vrt1_b)si BCq4iG literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/EventEnhancer.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/EventEnhancer.class new file mode 100644 index 0000000000000000000000000000000000000000..a03507bd2d298375fad71c88b2ec3b59dd77bedc GIT binary patch literal 3269 zcmbVOZF3V<6n<`-c9ZQwOG~K>B0&mCo0b(sl%^nr7YPPXQd&w?yxDBiE$MFD-L_Oj z9Y6WS@ny!};8(;MiZbI5@T0%PU*LG|-EEqr1d5r-?%n%x&Uv15?sM;7|NikOfaCaD zL0-WX1@EiSQBZJIMHjBAV7RVg2p=TyA#SMjC@PrhgaU}Mn<{!REm|`wI&n+IEN&~9 zOVE;!;`q1+pWu#I|EU75q6AYxS%Jl%M(<9RivGZ=3O!O9P$GWz>RI|ntQhRjyhw(f=wPy z6ij!?;8nZCOWasoSu%X?luPbC!*o5%u$%?%n3i#I#d3m+;fF`AcbT5W14{-vWyQM|T3|6g@!TqIh_=Y8iN7{{thK09)dlf5au*opg z#u-D0Nx>XwXEbt3RIgfm#dazZnt}=uIJH(Ix}0`6=5nFW<-o2QMJvcQgis7TvX#xx zwdIr7Y{L>XhGY&4XW5at9K(R`E_=>=Ep5wwtVH+S+RWeZ&P*@e4*h1zGUdz3@O|P4CC9g7m2QduNcPKEqRu> zNF{5x;5q940_Ds%lyn1cS#bn)rRQ?uoq4WXsh=BaK*AQc9X}Aq3~|y{K4rkoD`_9a z?J_B<9gtoQHY!1AJv%~@r)``Z*GMcGcBe-g0MwQ8+jPDi?rGb%1DB4m%@l5^eIpl9 zUpT9NM7*TD3i7(SX>d*z=rfi8Mo)FzdqXOg}QdNa{Gx{lbd)aal^K)3AF@jA7& zZ~_itSdNppQBRWES7=_RnDG={v!i3(nRRqOlyf$19F{hc;k?L(u$e+y+SM?EQS#a$ zbcde8?mu*+ROy|23N|~o4rM|a&FIQH;uG;lNMs&EJ(&WB#>QReDV=7^{_ zC_0J>$LOvsQ0MR_P9P>*Z{Z{nEBfBXJH(1gPk~DzUk3S@K%6`tL6+tv$lnI5!rE!F zc7}R7@GdcOw$8%ev^q}xDLwWCyMDp$3FQ$6`gao(zhf|lv4^9Xv2g)jfZp>kN>d#D z6qHE7UJ3;Gjsp9M41G^Q{Xq5bBUQxD67CJ^Rnd!c6t*BIRR^A`15e?61Uyv-o~i>+ zVFP$70=@}N%oorukYxoOmla&>tK*F0QoRHZ%D{m{|Iib>@*4(38M1~l+(*>BM|~Z* TjD7U(rh*) z8AygA2HWSmM`zvR&#(6n0M|GTa2%i?;6$MJ=&B;6i8dtA53Q%7sFt2)SDC7nz*$sT zuXB3VrA`dpSnIs<+SyXz{C3SqqwHL&--3))F(*F~=+??q-1c%aH#U@$_3>&+40qy} z=~&=mGaHd-l%HjC_zyC5MyD$VgXrl#4)6Z%8rlUFnule0l)79hqZ5@Vnbo;0m7OK- zO{T6ONp_)ZO6@UQuGm~-;vvZ>^#X$?)soW)90~|*@!IB30Y{ymy^9?_2b>MKw)+Y} Q*h3Hd>l@(!hd2Vh0e1a~MF0Q* literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/CodeLock$Block.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/CodeLock$Block.class new file mode 100644 index 0000000000000000000000000000000000000000..2257ca5c250b593dd49219fcf23655c43d85e232 GIT binary patch literal 265 zcmbVHyNUuq5UkdH=&ImH7@Ua>VsxPk2ZCTAnD>s&={nB9?z!H#U2q@ZM~S28513RH z)!o(9<@)yzV2VMCPKq8OGJdOs_Q!Zb$kzT;8U5PZU=8vxS$cDrl+s9wKH<~&Ba7V^ zQV5sLk!x|=!vC`Im9n~>IHP=4X|&?k`DkuK2qAuQf8m@~xs|%snlQYlvlaKvtD;o% hLzunuCLs`7p&UR_D1<1e7UBmc$O30!gOH+|bZ-FXMVkNs literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/CodeLock.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/CodeLock.class new file mode 100644 index 0000000000000000000000000000000000000000..a16495c464e7353b24a8e4ea0a9774faa59677b2 GIT binary patch literal 370 zcmbV|!AiqG5QhJ4(!|Er)_3rbUK|ildJrrKg@OmcgSW|c(8TR7WHtJ19(({FN}Qzl z0zJ(9Ff;!*!~FbyeFM0_X^xW|^BfC<@vRH?)nK~zUfPx87$q8{Hf%+uTrVFDvN~>t zsia&!X?1V8DK|Fkh+SQA#nf~=itM*l_#_)zA@MKltrN9v6#j-@wylfQiVAoEWfkg$jT&PNhDgd18hbHqg&2OA>2yLDml-mURRn9?*?Qk)wJNj zCO3YJN5*mD67MLH1XH#Qg|;3TA=mxbX~r8$71jJOl1iElN-mHlT-xPBPBA> z)x#at!=-w-qk6bP8|g~b=SoQTK=Pq9?q73r9x~WfMcGyY9)>bxC?3adc6X(S7*@|5 z$HEfBvwzW0``rJuFEeUmcF2Q4oaV}6dAoLM!e#1k%j>*uHQrY1b#JY@+VN^{7?#gO zX=&5*6%Uf>qH!yAHd@WC_Q?>%Mzi6aG(A4W|0vGU?&N8gSaB*IpI9S{jd7Ca3B5;( zG~nqsu%jP^FBtnA|59I(PB%Xy{W5`Bf|+Az5zHp=6S?OxNt>9#6y|A6GgzR-eL^yY z2_nuW^dC?peT>e9nZ{+h=jfEkDMu2;90i%j?HAL(0kwG= AVE_OC literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/EventListenerHandlers$EventListenerWrap$1.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/EventListenerHandlers$EventListenerWrap$1.class new file mode 100644 index 0000000000000000000000000000000000000000..c72e30df594f8d563a6310ac944cef6182380e3c GIT binary patch literal 1450 zcmcIkU5nE|6g|_Xjjd6;b$8YJwQALF1w(!C#ibzYibB*ePcscN+smnv@agV!``P7ZM z3cTp8>qlC+LXEldh5JVExzO$s-V<^Rg^t@xR>SguWNb+#lRm>?rx1qCeFkeg3IxNM zfmGu8Z0ZTU$Gwm&%|YbzaGz^w*16F#fnhi(LQcC!M|RAKrQr={B*ICfA8Eaa z_8~=cGQSM1@rW?ayK-Q{*6Uw)z+ zWk={$&$MV}S;FwlvaMg|^>dR9TGlMu+^af*;pVPDrZOwM#&wI^MLlhMq9~lnX+rKI zVB)^h(3vhU^lTH!5b~BycaSc2fuZ|qP1s(>bUk4U=dQymbknp=^Er#Vu5cL^cNQt^ zWo{cne=K-SIC=}-4YI@%jyu@0D_KZxXv(xrZ<^s=a!(kBa}2?`a)EsA%9yseT`lE> zv%vEf?Zh%=gIhW7m~!oJ2Bk4{|GHY=Muz-esB1XlbC4OmrkifgUR?s|Po{?-kbaLl zMd3ANmZcf?)l2FYulVxgCGM>L4Ta3mDqEG&XIO&U+XV-b(ztN8Ty+d_&6H;Kx1{fP zQb%PKM$nD@5yUaXF!N6xv9Rn2URbnUz9jtah@b5qWnN z*pdN;=vGh7=U1p}RZv>8dq7N0x5ef6FGIU&dpT}Z$!^L3Wmm1q)%+4eoQh!EMxOm| zbvQ~tyDvt1H6#vckvFUb!w$Rqr%F6(4N?F=Q6ap2j1)||0DTRU}n`D}9+3d#6rnDly z#Rq=#6W=|@b3Di6i_#*BeD)vk&+s4csCPCgO`w}oPSX$O!|a_qcjo@?ow;}J|Hi&InFi!6?qk7?W{ckmCweTu{)6iwa)H z8!|36pc!vA;xcr>NeHQA04W6=6OBk?QidU8ilKRAnp*|p2%s(PVyXe6|*QDO);=2Ltv4?5RN77jHa7LLQm-0)O1G6=~gOX&uDtq&=%#i zGMy2I4P1aIYB<9u7}{e~`n0Z@x|P;OCmpV*Vs=tDNwy(wq%GaeJDlO#@=^zVQ6z1L zYuuXDtt8j3a($XRQW=mI9}UF)~C*>fK2r7u?G*yn20Nxr2sfxI;2b zhT75DEZO&McNJES`mRx7PcBxRsE9krsrISnr>mgT6%~X5^G^u`5~k@mtiyf^?x}gRd7kach;mC3Oi}0Uo^BG z(#)V}!VDu-Q9(&gPl{|8?B7d@ZdSp+k0+E!k1y5=fw=^2KtQwB3YuT~RpNHuN%EtH zi0sa?EV-CF_lUVFw&Ph9Td_?=H+og<#4bVYrfv)QSlZW85tEh zP;_2ey}GF7a>vPMU7jklIGV{)vhJ!p?7Pd$nH%R>-O*hh&187WAi|t2)2JekX<_PB z(agx0Rq-~iF<9+B~}icfGu#-}Pi!{-d~HGs^}v~+S$C8l`NmGK3`Za-Zj)VQcVO0F}8 zBYxt`?OB=M7K4Ccz;6xz=%!M_Z_E1kACtNZ9eC9F8Ms6gNb*avzT98g>y~8v1G~JMk(Xg*-(a;mK zowSxSC&E)&%uc7dL$I5dd?qd7LpbJ-)Q6?^IZ+DUKSTC|93ny400A9!CX7QhfBTEdQ|CQ&UA zT}M4C9%y7Y_5MTyae%Qxd4r~jCBmWGV0X~;0L`)9+i1CqjSRQ2rNG`qpV|eqwzLruSU~$-JXM1w6WWBM zB=UgtE83;suvxlK@E>@v+Y0L!VK<@&2M{6c0%8E{Zw$&f*aUL?P!ZDvtyWK?N~pJs zoH>sgp-J+bRZlXIzVuceDo8zah=Lbs8)+O04%3DUyA&KLx<P Y6ZVT=53V3|xC4hohmvrE zvW15hmKnx96-H9afZ<8a^&5`xR9)1Cv)^twq0qZ^zvGCea!&1>^|sVe?Zm6Xkc#$H zn194jjrDi^Ksr+I3GGVfK#H~uhGAY(AWsINfqSa7ik>rkC|m$uEW|k_6?YhtRex79 zOxKi_uUd_|47NqxBh5_BcZIhj0%i6m%A}!yVR1u8G6-7DNbU}?w9#mK4A~7$JXbvt zhLWt`#pX6LUHS6@5|@^*yLm8_?d*H}3>g_y34^%*&Aex*wU?@$@MvtoX$4C@yHOkBP3TY)QIDAQ64L%ni3 z3d{SVEg0rsw{)Z$az}-V8g5N%KN4M%8J>-njX3jh2KuFv#U!S($RKN0D_Kk+oy8ok zTA)hb#=QljGdK`zsKVYfTA%sL|7> zJ5LnMFs%JI7MAGgwLq^eIA#pdKrUyfr-wR0I=Truou=I;?GhxX?b0E*eT0NvK1A{( zsW@`BHbLFkqbdzA!$}71Sd$kPLc+=O43+m>`zFRK4Xld4{D6T ze<96(4*+J)05iCTd4gLYfF#N5l*uG+oaDSkDJAK|vPx48Xs4A?=>Y8Ki}q sR6d;(F}J$en$;3+6IcRwNY8N>d6EX@9?8q}&5$;Q5@ty*(jK|-ziwFjGynhq literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/EventListenerHandlers.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/EventListenerHandlers.class new file mode 100644 index 0000000000000000000000000000000000000000..0d019495cc268518758a1f9a00661fbe429d1337 GIT binary patch literal 20038 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 literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/SeparateImmediatelyEventListener$1.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/SeparateImmediatelyEventListener$1.class new file mode 100644 index 0000000000000000000000000000000000000000..43225d9dc3478223cfedf20b66b4ebacdaa49959 GIT binary patch literal 1374 zcmcIk&2G~`5dJp5Bp4dfmX`8Yz=bqOHRVbbfl5G;LRxUhwOTu)WFu!?*-n7B0wh4< zzyt75h}k$25f?7T*6!@g&U`aFGrK>3eg6UAF&<15^kp!Rkuv;J zSTKhausWJUI}T(V6SJq8hGie}nJsfLzq9@V2p^tv3V94mTKgBInWx zq#ijZ-h}*w#T8eLv`l6ZXCzor=#L|k!$pdY{zE)1c3pMDS>)3TWva3FuRb|2!E+tk z+7H55>Cr1n#^JDxdlt&LV4(ur!XEBhxPlGt(kz?QJ`~velf9MXaMNb$C~bmFGcJ&C zn47Tf_S>gtCvQ40JH2P!v-Y6f>kGJ<`mz_@hFyL*O8lgVTFn%PS9u;4R3UJYS1siD z2dd47Um%*_ko&}34i?WP)&aI~iRY`S7A~X49P2O8_^y~5FR>1o8jHebQhUy}n@d|~X1s7HD8^j I>rc0T11vRz2><{9 literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/SeparateImmediatelyEventListener$2.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/SeparateImmediatelyEventListener$2.class new file mode 100644 index 0000000000000000000000000000000000000000..db3364f0b24ec7447f157a070a4a6adb9cc9e566 GIT binary patch literal 1705 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 Aod5s; literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/AsmCodeLock.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/AsmCodeLock.class new file mode 100644 index 0000000000000000000000000000000000000000..d0a0a949749336e7e19cac468a1bea7af1310dec GIT binary patch literal 2215 zcmbtUTT>iW5dO~WW!PbXa7iKoG{g{KS(u0x%#2qp38n}o1VtyalkReEIkj@UJ4w6g333S&7EF|Cr5xAK;`vQahz%Pr=;EfVx?({`6F zw_ux_wzXmVA@NL5mW!Bkm2?~CDpp~2%32H4hP9j3(M~jl5KXi%#1<2a*TsB0uqz6Y zK0zE|A<5ZWtHqX>lQr_z=v;T@hFU#k!6OSg9x%s5H7=QTUE7~5SwSGFZ}pvs$}0{R z!)&7hCzh`!zWFwZbbO{@%z5j6!M^86`A;3I*wBi#VI|RpbP^rtRJb4xvt+qTX0}wa zm#k98Us^BQZsqP)!CtF4o|{A)PABmW+LJgZVi+GLF(4_<;H-|>B<9ec#GnXM+MdF0VFNq4kK&{Ic(D zR^LWq!wH;9)(u>A^Yu4FLkn6Fqh!_jYtf|0)GgA0P_qZ2pZ%k*gJL`1rF@UpGsZ`$ zhf{k{smLxgm41pQHTV=pdVg^L3F?1C}6sFQq`Nd_dYH82?}Brt^}(Vt^{oa7r8zI?SRRmI(l?m z($UKg(0QVdH&pTe!Pp36AEut8?pqkCpP_FM_me z7Yk&Z-v1tFQ`|PbgC5;Rlw~l&GfZ5iID~qxudvY9Sj3M=`#LGzK$!b&$fF|#)mLbDPiA|7ntm8TA|D9xxEu9aOun7`) z$Rfdp3JXnMZY^DfR*X^IOc&1$?2kppyE=bF+d$XQ)oAK;bPvgIB5M2K&!d@X31?w} z6R^k@FA)Fdhu5_s&VqJ^5#6l<4$} z9R@_%;ARF@C-NMN1bFm*MSp-sRJa@P(XSuUV8X+`wR38(Gm8{bhxS0n4VkJ@ni>cB PDz(Aw5&k!>#1sDjL?W$& literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/AsmMethods$InnerHelper.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/AsmMethods$InnerHelper.class new file mode 100644 index 0000000000000000000000000000000000000000..fab7d3912de33d3c5ae8ae7aff12200b614086f0 GIT binary patch literal 1319 zcmb_cT~8B16g@+MwM&(6#BW4YDCi^_Uo2@tFo>pNv`S)pFtginyJUBk%}BtJ99tg+|zS!=jX5QKL9+yJr@JG?&1b!T-?O0gEtxrqH3W51sv4J4_jdo+%~ux{S7^ zW~f+eH4`2W;8uOJjej&4V z(n{yLfNO*t$m}@C@NT}bC3XalgbKK=SL<>#Gaag+_P)zi$_>tJ(XBh1{&fvzD-G+#*E*%bsB^k!Ig{EjGwJo`#wb&yGd$}-7{i*BT z_K~&|Co3;k>qKm_2c+&8c1CRGUt`Enrhz}AQ17O2 z0_;pZdwi-ur~VJ=!sw^#!#sWTQhUL0j;x2YGFk_!-@v}waGAbcN&?2{&^YaZN|A&i zTp;T+hA~1J2B3u!y>z0wxO9NN1C+jyRf0how5O&m!c38cQ9?D3OUM&8?qU*Cgm#g< kW;L-x`1!)=6{PCHB8II2tyx=&iV2)!(!92$W1&bVCDp=yUEaR1o*Alvx zZJW7E%-UhD1XV;C%k(_vNf??navQmY!cu;I!`RtRc{}?#R^M_q^Y$Ej=eSJ5aMp1v zx>MR_<$8mabknQpWv5niY)|)V)2F`Y4Xf|E_NgU>E!Sy~n!%IRWUDr5Nu6AfF)gbl z`HZrbqBF``s`>((iovBStiEE_NKb!&%8LncP83N{rps2s8fn{DTO&E#LAoiplg)vn0Ms>osG5apMv$YWK-RSX^8 z(;usfYyT3hLH4va5h;Fn6~nwd9?;ImqvASG_Xg5!gH@!CBU}65IF9r+s2Jg-+%!d;N?Zcl63uCofiz2QP} zb%CZHuu#}a4ytsB1052Iqep523E$&%@Kf;LGj{f6k4W@)k?B7cMUsC6^pxbD3nViI zl6wNlD1qdOKpMY5n!7-nHz8SoG29}&O~D!>l!KJiB&{Q%d_$-h(!xeDtaTd2&QFLK z#fVsCo>2Ibh=^6zWaA5z&xlfMEaG>{!A`+;5vw-Yb4S?o#KwJA?9$#=G$)AeP8{L+ z{z8N=ig$`~jmmpEeI-;9J|Hd-(c2Wk3H}0cIMH@d3u%`^)Fz@nP1ceJQU6CVvOBbn wkO?3Y()8gLF@Xj>eZV|^(AE8gb^HdCVyK}5cd4!e;}|52(Vz#CvY1t<@&-T(jq literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/AsmTryCatchBlock.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/AsmTryCatchBlock.class new file mode 100644 index 0000000000000000000000000000000000000000..381f86333c237a0526758d044976854a2a7be47f GIT binary patch literal 696 zcmbtRO-~y!5PjZk*b)K(nii4*

L{fzlHQ@gaIz(E})4>)lw%hTS#tngBQcQV&t3 z9{L0LQHZfyi9^K&4t_J^8P9v;xqtZm2f!9S)(~KB9AlWb(6Z3B@FBoLfJKICX@oWm ztw`w}SMfk5=32&FlsS(?EVCVkiY&SeL0=TzOlk(-++IqC*=Qh!f@h-W@l&JIqDQr3 zyJ?Y{J%%4E&vtx4;yyLm58h(bZX;&m%izzCBtEq zsGN%|jYTZ@V3_lg=8Dw~Pn4Ei7Bpre`Lz^7soggml=+#yJrXAAA7(1Kpebvo>Pjc_ zTWZ;+kB71_=kCF0E3}R&EY?B~ELh*?X+ZZy4-%x))i3G9+x3i7km z8{>sPz#nBiGl^i-Cho;PGiT1%yl1}u`1%dNE}mMrTEI12&tnxgEZo%G%HtMp>s7_V z9nGqRn&y2A+nNt7JY?W?_f6M3I&5~`!y|?bCr)}I_WLRrPn9oZIuzb)r1lt!bIt@6IJ+^f~+tS>DQgu5`GTC#J_o~x=SKoJ<46Acv!>PM2L+*Jn2%~WPf?>H@d&`h% z#K(#%I$@*^PKUlqJn0X}QgGwbBv3Cyy;-TJL)}}t)0Y#;P|*-UJQQ*e`qG!8KN*Tt zM#p~qL8POZa7Qx>I~)R!IEpAy&n9Ldqn>D+OLLS_vhbLbuunK_?Nt4r#FdU3Q~&1A zTT!Hv#z3a2N;%ealC?!8?<9$*`a&ER^igqfWMVijYV)(Rt`fwF5-K{8QJ}S8UGFUw|)|xSFSDin~?$yp7etF^BipHv^5}J~JHVoyz@?>eo$k5x&VpGdZ zt4%GdAt`D|q8O3_hIC~jJqE1f5^;le?}_@`wb>Ueea5n#F+BGPS+lV0oMGNB7@oJe q;mSvfVpJ8lOkIHb$(c?{rjsq2YmLUTM5mzt72G2hOm&94$o~Ym{lwG& literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/CallAsmCodeLock.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/CallAsmCodeLock.class new file mode 100644 index 0000000000000000000000000000000000000000..9bd70eb864d5d0745965eaef7cf9644660cf4536 GIT binary patch literal 617 zcmbtRO-sW-5Ph4bO^wyY`T=@S!HZRK#cM?gMWGPvL1`&HZIZ>N=A$HO>fiDti1-8i zQQ{=^Ab6>`usidH+4tTsAD^%90M4%O+!P&Iz#2c3%&G`;pEVY;s+ktW9g(b zX>*YT+=+r93KMR+ndeB;6_ZrPt!9rwZAY$Ts9RnrZ>NDR<9lKIRB2d|BmAC-y&QiR z)pX<~45medT=674uYjBXhfiW+5odKHR$N5|zieNd`)2ddHU7P(QGgBK{z)S{qDuU@q8 bU>65iBD^*KPW5F%M1&evh@4@Skb?RbEw`*p literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/EventWeaver$1$1.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/EventWeaver$1$1.class new file mode 100644 index 0000000000000000000000000000000000000000..2581278571aed39b7f06660beab3e0c86bf54013 GIT binary patch literal 2127 zcmbtVTUQ%Z6#foLnI=vPR!bFI#2PeE?Es~=mO>k7YNLTr6RCK^lgS|&n9O9&452*v z=9_Q&L+olJ%Lkub-tU)R;+xC8XOdO0yksS7<=bcPvuEGWIp6&I`162r?0g7Zljm}GW}SJS+@z%aw?MOJx*;S$R(C-5q+BruDs%+4{)GhAc1&XCct zpkYx%R-iwqS$=9t!)pS1&T*8tXiMK$zQDD->DCQtTV+|6#%8l__|mDA-MfbAddg5v zO**DBc9d)?&yarI$TpP|+zI*A)GQglYB^RgFR+mA(bo8?Kzz}yD1m{z<*4QDdRciT zS++@XBJY~gUX`B3d|Mdj!~`ysTr| zu5UTjB^A`%ijG?t)A2M;>o~)!9K-7jZy>K>Nyjn@I#zI7$D1hfs-)vBjObY9jXQW- z#~Q;s7}M~sj`#4sh7WYC<3k-1WgRA)t1u{r4UACxdg@+kin8O33|l%?qfp*dW}u-e zaHSi&+%oFUR%*c}6gbkRbKMwuWV8g1xlUBxtP?1YM%Q*_CF4~yo+oz&VwLSiXSOE= z=6V?dn&a6XqNRzErm1{7WRn!i?Ve7;?0EiRPl|y@Q%2#%8{2+O;AHyI&2VDd{-@dh z^&b7_$Xz$7+xTYeRvURqH%h=$MFoUhN&RKMEN%q5o*N^-0V;M E2U);IumAu6 literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/EventWeaver$1$2.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/EventWeaver$1$2.class new file mode 100644 index 0000000000000000000000000000000000000000..3594c4eb390da55e6c5ceca3fbae0fe1bc866817 GIT binary patch literal 1890 zcmbtV+foxj5IqBdHDM&&MMObdH3VTH3L*hDgdk|R848OhYO+khLb99MU821COHzQ8 z4}O3jW!bX{B?>R8q$)GrbLl?aeYWS~cn1)yc!-y+& zL`lz-G#bVjj4;MAq11#Lo@;oaVN%0OhDccybf;uGyOMz|Gc^1AmZwi>c*Ve%ZCkqO zg77@)F}%r|PSFqrD=+fGI4BnlPuRP8=Zj%Ft~8{*FKkm9pQR{E*AQOO$dsk+e+qPc zB1y()E!*;6Go)j6+FBmoVhE)J*wL(I%hjV|Ub>qiU!XubvW_VVTf()JUR?~S$QV-f zdDasYN2rpo#+X78$vH=^DHko}x$R2GV+W!v7@`^5EI6KJ@2yCG-`VAuL6V~rJsj=m z;JAYUj#>0_%;B|$Hym$~;+RL8V*wc@B{eK^yu*@)Wsdjwz>&oY$12vSE_IbfPY`N_ z)F=ph&sfVJNYmG_&M;GpT~!Lo`k_8wppl`eI?vT&Yl^Gr*q%{2OCY#qmz_hI z^M!AjM5EXZmjb*utp8{1Y9S_7A?E8U1a(bi@kK4Axcm|^NKZr*^mU`5txdHWfM)7D z^o%sn{|@x#z)S;;{9i6h<``px8PtOjm>lrtOfT-?g=hO(U1G2(WSs7 zy&iagfvUl;WR7lNK7LB}PSJ3IP*r57Xu3f2IkbNkZk;2n7ETa3LCZO~QZ8`&FNQus z0oIBZM!s1aMp-*%SO-$9Gr+|w9;>(-DSQ>?Lk!UzqG#_Bx=HFIWL-3?Uu$Ke1WjSO GIs6AMx(WLL literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/EventWeaver$1$3.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/EventWeaver$1$3.class new file mode 100644 index 0000000000000000000000000000000000000000..99780efbc6c4a994e5ea626930f2db394291048d GIT binary patch literal 1781 zcmbtVQB%`E5dMyq#@0g%Qbj~XjM5e*fTBn(Sg=a96`Xc-d}6NQh6dWClY{~@{wWuB7V*Cbdu*8c)_-%yIL2XCq0JcqUkgYQMan1 zDvX_0!|;T?Rdo&w({ZIC?V7MnY3xhUlCB}VhLLYc+kYSE`fP@RKecSjUt(BE_82Sm zjv>72Y)OWTMa!0N_8L{`Rz$TF2Xu_E832cpibbsK z?760VVJYPJsS{7{h?XFFdE2Zzo@H;Bq+fHkI3D3KM;w1!x5EOrxD zRe=(|tFP2)W$5qh*=~aT*DVaumgQM~NgPns`jdr1kZfU^()0AkGczZxNP8 zJusyP=x~}e)|q!8t+2j7*WIHFuD;7qX$nyG&~LC8RBX? zs#b{*#_&9ZaZD(i7Q|!_Q$f67xLFfs%rq?d{I6CasdNbg7+4QIl0oIAtwcla~9@+sCF- z6nx&W40n+s6K^xt#^?@%KV$DphDh#D4h2y($-VsF)y?daM??CODLdrVJc(Gyrs6s4K+ zv`{&AN>rJ+r;NIaCm9ynsWw$Q)kY#D4WaAOq1S1WsC;Nk^QqC?Rk`wRmE=V9dgIrv zo+cZ>(+YUGO<)q+Osm(BcFKj*is~9Xo!{Im>~3fG^4q%%{Y|Q{d{B=fFt4V}~zZ*s_E z+r<7~FjaUBW|Z>fNCJ3|};=S_D8d^$TkJKKl2fkDlJ8RfhH*G)EF+7hs9O z3-}UW(DB)G?58n6j$pI6N9#WCa0COmPdhr~g`}>JK@2ql9#c3vfmGt0;+?~H34deB z&e8c5flCDcG2Cc)oFR0E@Flvg!28fi;PdEW3m9aJ7-vhEW6K^HUWaLr>A*07`tX2q c2mJJ%dW74w8X!77G^-!4PjoBONCrZ`04PNB+yDRo literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/EventWeaver$1$5.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/EventWeaver$1$5.class new file mode 100644 index 0000000000000000000000000000000000000000..da6152c127f127b7891c4f35ac1a3dd5ee02acbd GIT binary patch literal 2242 zcmbtWds7ov6#rckvLxP0q}3`u+UizAd@N9Dtq~Pstg+!?6S3Oq(7T%}EN<>H*(Jy~ z@?RZ6#y|W3{ZO5rySoe>lA$um%%0cYd*0`4{{H9VCjgW9Ba1u=8jNXB)Zl6kCvYu? z)3~m|jT|hDYic4(U^0gva8rY+EPljKS=_?U`t5B4B?EU1+-1miglGDjO12qBYHOk+ zEKjHvs~)ypwNhdj(g&1i$%Jgmz+uRQt8QRU7`V^CtBS6dJrM*lV7OOv{FWs=*A}+0 z);cXK5UOeWuPw)KOG~O%p&V&#O3{&RO9U;e(vd2B7V+i;natdAl^c?CuM2(Z>JI30 zBx6eq>9XIXkcVrolJgraTecg*_DC{P^Bv(WiMFfxM3~m;V3_I8U2}?pPdky}R6%=@ ztNR;mM?Q45<@|s0bVFB)+^Z2XoD5g}CdUkBIljgy$Cvnu?sG&qY(9A!M< zsNkW2UpOA2s+q?ezoKSfj$w| zbV36!7;Ya$udWM~;FUS+5o8!l@bpoXbafr2vf~DB7^ktS0>w}&R6nO%y3f4Or8_1Z zM+P(_6XW9yv;B7RSe061eIr;URH$kLHxCVXBXm8h9uHnT%TGx{JvtovkEwT}ah;FG z`f{N=gt2ZB!^vI;$&+{)P?XdC^gs1}>Cli4-yAe7dl}aWf6`aNOFiS?Gcc(Q-0#x> z)$`U-!<`9QjjeUPWcf^eZn^P%v9erWq{%#8^V=(yAC1(ew4<%6Pf|{gG+cTv$VfZ| zWX9BH<|>Ux3lEm->sw~9z7@Y)P-WqHv+^aabcTyP%u{SFUj>iDl@Jrto! zUy$iSk4uryJ>&=V>kgTp@eR?ZB0ZyI`8(q1 zzTVFCp0b8ZiS9Q@=^L<%?@2X1yU6UoNVtJr4DBGBaH)MVy-%|D$nE0TK><&+yu%mo zaC`^D`#xU85c&8Qjx&LC%*GYwV3IXaW)cnd5`wKn{`1(g#Qzjb@^b*+<1*ni{h7Fe TGf`A2qT^pa!6TT)y-fCBR(^RJ literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/EventWeaver$1$6.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/EventWeaver$1$6.class new file mode 100644 index 0000000000000000000000000000000000000000..2fb3c0c80c68b7af3022667d5fd7b96990d1bbbb GIT binary patch literal 1777 zcmbtVZBx@g5Ppu9#+E3h3L?HCMlD4NARHbN~&WD9xHgFKxc^f71Pru6-+XydD|9l*5aNgJcgx$;Z${QnPpz)`hKIT zd)(eFJ0Eq!afL4I3bzfR9}3`-85NoDH zj{i~d_&#rNN-t*{mgAZB-n#HB&aO%$daB|I`cxz^q+%M+6wIi2j#(8iFsCAoc_}R@ zSX8luWd#`(E6A!?MULjs(HOKDN>iq$Tio8$H_H3M@D;2v%(W9&_MX~&psiT+Waw_K z3+)6s#}R5*!}LtQ*{Zzl*$nAqzHpXr(RZnp>Ho33m*Z*jd4ge~lfl!_(;XB>Ea8SB zJo>OED3v!Iu|GX}zIftft?pGA`jh831D3Y%rzHMzhxmDdOXg+R*>;F-BPj><~9*S~sd`M5~d|SMflp>HOfe1#EFzdO}tBuv2V(m!t zYDdkz4Li#%>#gwXE|F~H0(h#e>e!y%^ru8r({4BiqUdwqG>B2j3tkFxzQF!ZFxkB6 zcAEG5d&4lD?kX5AgT>?W7@r&G|6#kZ$#+E3h3L@SRtCpgqAPQ1$r4;Q<5wsl~{KIU+N&{)aBx#XHaK_8C z$RIlY@Bw@%$Fpf2FYv=oGn4E&XHU*|E?+j^e|-H0U>uLb=)&~~R1AjEjT;dR;bw%S zxRh>5>2?@*kO*TKNvVz~xU1lv0*xW$RSY*ireKUg&0CgmvL<(3;WEq@bi1l?(3uDN%2OOWIGJ?7f97xD4B1OCA z=wjKB$k9J49^K(}PU+<=-Lzf9+FlV}#okhBME6ykLyw9W22@Pofr5uBCNZVr5vEn7 zF(ai}1#>Fqv7jKMVi8#tOUTh2+8RTAlG2o^X(qR}wbk;D&^-mq4AZT|mA$7n@5UER zdNOo2*V$HroZtwxt8Tc4*JxGVaxI2*B47BOZ_#t8mFfSnyp-c<@HxdW+s@!==;<~J zBbIPo7cPBRDN5y8TkKB{pDdm@xmR;5484hyn?6gM_~R0Pp-uce!6ouC>{P2w$+*?h z!Ja%#)J$<@v$V06+bphaF!UE}XIryU>MQl$0Wn27w4BE@4)3r6;RP zo5j6@xVv}I*ju%-+%%sHujUZRhE9Q}+N!qYY7Ku%L^Z6sy(@|y_Y9pFl{n=kKj%~I z{{)lGn`otZzrHsN(&?^(;Vf7*DvuF5^gHN|;XGL{kTgfSv_z64pTLrz(ecsu>7{3g ze8AqIkL13F7cQcoH1hYOG4i;Cfo7~%2*@{(N*+-tx{na}g5WVa|1yM*p-96a&Kx3q zjL2`q7=ncO7Cr18hS+=h$9(Y7WepU!i5|dZ(mHSjS7{B>Pw5(>Bn=RLH?8vOYAjUw IC{m&DPh24P9RL6T literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/EventWeaver$1$8.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/EventWeaver$1$8.class new file mode 100644 index 0000000000000000000000000000000000000000..a2c55400f112d5d0e0ad5b81ae4f871e227a3c61 GIT binary patch literal 1995 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 Jx1}{${WHjaKyUy6 literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/EventWeaver.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/EventWeaver.class new file mode 100644 index 0000000000000000000000000000000000000000..3108e02e2cd672c3b05992e0597ba981de3411ae GIT binary patch literal 6247 zcmcIod3+RC9skbmW@odRa0CKuX=x~-O_qd(KoJtahBU}xNNf_o5PD2DL$YDB8+SJe zh^Vm?v5IZ2SFv8zidqj^34~(twzb}8J*(EM-naH2#qaOUZrHFBNJ}Lj-h1=r{jTrt zc)!`l|NHP605y1~5XP!BYsrl zj2}zzDIK5I@fjVT)$utUpVwf7<8dq55HnLLE2Y63OZ4NEt>X0pdhtJ6&hv)f9xboE)0bohD=T3AD2-0Zhf17^e$27Ts`8H$UWvARSPamGi`@r5J2I=-aiaUEaQP&6dDvqg#4&`%%dRi&xybmkwbbTHhO zlTBAvQ!^5=QcMn2)G}quZ|#X#17a0l%yQt&Ea+zzEWD@y9bX}?wv6&+%a&=luHuri zu#z?0wTFDNOqUDO8!nM)K6d8>)QEtrw3WFJtDg^hm<(CwYlL4>1}xf@`=qoOf44%Z z(UurYMy!odsq-^(O4U*cAOoB6A_JRb2+Qzd88*tW4s{0BVvT`XS*?~;6TWKTYxug3 zZy5L{zGYw)UZCUK2EK#u8d#4P8rXnF1K-0FI=*k<2l%0ZAK?iDKbGMqvi+EBKgrlO z@KgMZp`#*M-Hj@Dns~K}sGl2n3coP$OZBT zW_F}GDQc*1YPxwtXSW#{h5yg8Zp13@&Zw3WP`)&P7$-B&-3Zc5s}DeZ$cznIExVYz72#Z} z%n63cjPuh&LqWIIHQ3{eI-6G>gJmyd2-EUMeDrMfrb37VL9CV{bU7J!a#}iIQ%`O zL|PyQD1d7IBjG{PLS}=;jVD%_`!BWpC^kBd{hH0bl1_SyirUwJQ zQOw}@5N3{{WE2HzJxi_KYCT)6HMK5PYgaIM9PT5S$w@mxdB@?p2fF7dJnm6=9;7B7 zv~aA&G>)C{($<;SiMhBDm*XZ}#pY@WZXt3e(Tea#p>CeHcybqd_;(w6@e)$*w5`Go zXyp^_leUJI%c>n)X}zojVYgZd#vZj2^b6E#8{c}>N)Xr8O0f1}JJ&{r+j{yy$4j}> z2=`g+N1=`mO~(!$of_v(9XoYu&t*pg|DWZ_NshRLGUM2rs3QAF3Za`Q-lbG7B4E>( zoWdLzf3_0;3szpG$!=x$9Q)X~-9^Nyj_+O4ncB>>ASuM>y;WnF+k6`HI!+=`>(Q!D z;IjKsBU5cbpy13ZuX~kVs+W52!xe#oQoW|u7w`mpCoumME_Y%30bM(K_NkI9ypLc( zhnt#t+d4c;+BymXo{}raP}Vkvg~I3p@qHQno5UQX82@RSmm+$@^x8g} zJWPM?SJrGIvNep@ZtnO*<8ixs>2I-1_IkK-k!OT!i~gL39f+cjGUZ9^FBtcj{cbnk ziO0&|I*W4nh`VwWeHGKuuOqIJ^)r00Nn4-6Z7F>&T8uDPs)}M{pT|C@xtX&^ha4xcU^X@gU$mrnW0=tO7cb%Dg9DT+I-~D%(yW=*DR*>5x3B zI*sa%fOlNjQm(3*r6B>-tz2J2m4I6b(E*e)_!ls!gE+*WFAoy9+i@)p^ULcFY{Q)d zXT~(*jV}y=M6V76egBW5Ul_I7fwo{-8 z+JA7Zj$y(%!-qZCYh#BHXYrQUT6liwu2VYM2~~iXOUjaXA70@=>=Wa2zEn&c5jV$alwU*kyZo*MD3j>N915g%|Q)}}yASKg)^dXTXy Sm!FH}-Tv2rFW~y?0{;V(ws=SY literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/ReWriteMethod.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/enhance/weaver/asm/ReWriteMethod.class new file mode 100644 index 0000000000000000000000000000000000000000..fd7202c4790ff3fb2968a5ced38fa13b7b0e2a8f GIT binary patch literal 2621 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 literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/ModuleLifeCycleEventBus$ModuleLifeCycleEventListener.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/ModuleLifeCycleEventBus$ModuleLifeCycleEventListener.class new file mode 100644 index 0000000000000000000000000000000000000000..a9f8bc28ad34629f408a55b5b75311865b32f659 GIT binary patch literal 548 zcmbtRF;2rk5S$H(O-z7@4vCTi8cw1O1&T!^BqItc=+^cUoprvGd~txUQSbmBg*Xfn z4GBe>-C6BuXSDPF@%jef9OD=}F?I=&voqaDj6K5OYAJR>7+qT{O={SC@r0+7tZ=nr zqjSz#Rm)m=wq@>~RpA;@rK?$6l?Hs{%GStaJ-=qlb7|B!In$4lz7$3}@oDRiJ1{wY zAS8FLZ3>xbBZQ+B{IiOe9Alqwzt-k|vVWb=v|mX0#R~P`_4vz#GHmDSHm{@zUz~2_ q<|m4aO^!qaLNDYEP@k}cIG`T3yE;S^`azicNHDlO4BP~xX!r?&Rjqyi literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/ModuleLifeCycleEventBus.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/ModuleLifeCycleEventBus.class new file mode 100644 index 0000000000000000000000000000000000000000..801aa88c3fdfdc15426eba8de764ad158aaf3df7 GIT binary patch literal 660 zcmbtS!AiqG5PehA#MY{{H^HL^y}01D9;87*hMtp`8Aj}o^L zZ$S^a%wvY(y*H2f{Mvi~xWp{LL4d;mQ^Lu;N$Z>=wdC+U$@!*XT}8@Pthppi?zF=& zm)5cka6}lk8w6jj*Q`^*%UP6|LdaajGL|B13Sp&AWAi2wQ?e+emMbnrm(ZfNr(N@3 z1M~AIg11y96JGz(NlhV@7NOJpp`7>g)!x|}7(bf2O!!vi&PHco?v9I0Hj;4FCkw)K z%OY~ASK=YgIH?HFeHi~tm$2x?-6rG{2m|+5z`!HyVgxuGV{bdbq^8vj12)6t z2f^PTic=v)=n00^R*#=^C*Wb%k>b>OI~uMtl#l#w$diGj+|7UGHrnlalM0FrKlGC( z!=g2k{>JSIFR53L8T8$#L(QgJekcwGeOJgfcLPG^T9Lbau(~;I>FyDyfm8q^CuT(#?<}5Im;cYnJl0u1FXb ztm;iHC#-5(Z8h3EzCr&&poVGsPtgk4lvu+Iw&??wvLei4fjlb5B4G@7uf^_N#qM7bSk_5ptWboW zDb{itFUezsmF%z3zhmMv+1d1BioZywnpsXhRm~bAYF4(zhg6wa>)0T)fKAM&QMz}q IFsGOQ0;gvXUH||9 literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/ModuleResourceManager.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/ModuleResourceManager.class new file mode 100644 index 0000000000000000000000000000000000000000..ffa0e6e4c6ba04c8c21ce49dc63b586a8b611342 GIT binary patch literal 878 zcmcIjO-sW-5S^_xF|}%~UmzX}+DjKaHl+uPiVzWOQ9N$aF{CD&vYQ0Of9Am-;Exig ztskwHVg(Po%bVGm_xA1X%j?rK035=O2_+NOP1rDDi$U=k#oZ<9I8`1JJd+YtD->Fz zW?+bZA7z(8eBks%CU_{M&)bO#q;ET39B~l_u5bnKWf9jxcHQ`%d$B?u2`PM3{55BMHahj6dz$~KsnO}!O}k1nnV>L=Gm^1C zjquBscj?tD2DM)cCWb*lp*_5SlOQCX-Kn0{222dAPAJwi(>a(b5TSvGw4E zc$}e3j#6D2iJgo)fliPf5`(?j>C-u=XT2c?jX63^ilsvs3>f5SEYKgxX)4%ev`uoIo&*-ZnyU9>;>u9$R9)yb`;B8|Y_>eGu>$iy W;7>9X5C~dz&}}C`d-Ylm5Iz9w4pnFX literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/impl/AffectStatistic.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/impl/AffectStatistic.class new file mode 100644 index 0000000000000000000000000000000000000000..7f27c093553a83804d4b66e18ef7beb93441bc94 GIT binary patch literal 2984 zcmbVO*>V#{6g^{08X=Dt8DqyR2Er1rC?O;UWJthl4&I1Z0$H4vG+1LsGeR0UK)xhj zke56psl=2+RVpue$*1HKQkCU&_edVg!lWpdThn)LpL6ck(jWi)@+*MT_&S9{xNhP` z3LUt<2L~}Hmyb-`Od%mH^H@l6S(MwQB$nmpExCMbB9}rBu6N-!?sVZU?#bm76ZeyN zAdR1<2=$pyLwyXU0V9*{ep1simD^`p)nSeoSK2`e8DeggzMx*US!tR z%bA++ih2J@rr=lYOj&qh)vjioa>dPDQW53?5jeHLDNtFOhb#5K)}l23h0#b9DjoB_ zDB9I*#2f}Uw$o%F;VO3nLy@;p90T1lr^>V_$|^vWjgb8nz8Z%)eu zH43Hcrt)QAa(Cir4rNpAYeCUXXkcu2m}WL5#w$9a;oCM2dA_$r1G{#2_Gl2gi5eVP ziI;Y~z^;12jkM6x>mt5Xb*wP!@dDs%&T%%&YLm+O^=iSs=E$)eXql%|vWYDm!*NR7 zx;1WyT8TG@g%KRK@Fos(GFsdHa@}z`VkRD1SVhT#gEb3};F5o(up%GJ7CiWkvnn6F zC?46x5TA`{p@PTkP777kECi@?7Fww!Vu^_B_{zdKCgk$Ag(rAw;T+Ce$YRFAGt3$| z_u5y>Hr}QD8ZXvx>YFzyueGfl&9R;$@T&$UcI8xIYrMHD9NMJgvA4Vet1-3vMY#PW zufC*Hw7tLyo^nQ_y`#~yvgip>sn}l8z`@bEomX90GeS*8&%g9)-11KbzV>1djqU_i z;+hE=Y$8i}HhSrWBH`-yJR2W(MKZMGwZ(Xi;E$Uxdg%CiZ+z2vgnhQm-4*{tun zteoR}*)d5_bDr5a%5Tm?{MPP3zwBrjIHGn(xo2}n_DMc-7`UFG#{xR}1RNND4rBZU zI_^J5=g)|3J;r}fKqtBO&>2W0h5__q2yby`>Ejs1nDS%qhR_vyOaGAy+i{k=LR(f9Lr1BIZAq3mTaLkwg;r5~bAG9A%qAro;ii7CZCf>X#a z^bR>RTxDQ?Ql-ROet{mc_byIuqR+tj*l=tUX#?M2T0Zp~_zio{$ES9R9H7AAxK_D| zeI2;>?Z3ZINxd;hy(2KW9!HXVC;4}pDzEbMCNr=|ZBp|Y#A!K!cc?GU{c= zPadY~ByQkcK6UaGFi4B^Kh4rM-W}z;_h{`w$KU8P@xF=azi=Te^;zbES4Eip9961n zjsL`IPE0<>pblcIobqQKFpWN(jU+hTl$dTxOos{PR|IBwN+#Hj5X2S1&?eqsmLx$Z zqXsm=WfIK3l0fG`My@+59Y%hHmJY^f;37TP)8y~9XA)G3NPQMl*Ei&m^#3hQj%uw{?oZ+XOoRm!PCJq?*PDz!4 dC)AqIA2Dzy{|q-p7f6cs1QZ8{~HsWX$(x`2rL zzW)k8)N>S2&(U-I=#NsLJ4ustI_aq=C-0rRJnwSv`#$&n{m*ZI0O-RHQ9O>9HlrKY zqnO4GDPET16)9ega^j}^^2KZN%a9^1MMlnMr4X{~iy8UFv1#O@n1$JbIowi_S5b(- zilPIyv^XEZ>rpsxqwr9aVnN022o_Z=sdz)hn+h5;GdTrEk{P?88+kKrqz!#;p`g2l zl}+1=dd7ByK1eZWTQg>^=!i24Hk~ys)9Y8D$NvwoXG%fSpq&*8T9c+FQpG}AI1@%X z&ylvIoiXxLhGWWpd9cZwHC+Yg*0)kHEF&iz-7L)K^$TLgDCWJAy9sN?roUQFcqyYG z+<7BIQ|EoVbS~;##xoVi+sd$@y$}b`lmL;6Qyy3cnjvObl-cA|w zrY`L{1;aCKYrj-Lty@iZ$dVyVTCOoem5uS9>5{Qac7gqEC9}o6NSf(U!<$vm!J+Xb z*AoRQsh!wWnHY8K1v4w03Z|V?ldfZ_7!)B7KG)E+IF5tLmidw z6|ppIT7DP_1crk1&mWTJO8aAy&HZMkn`^ZIHE4RxBs2`J%_{6-MEVU(t71-BdSj7oCi_Xv(VU zSW^ziWaeu)fV&!=#C{d;XgGqS8t$P_!wHiuISPNuG;My}nQ8X6lFL9GB&NWOUDPn~jO4O#{#JZMAOFS^0niiMjT~aD41uaycuw2iu zBrW%?L#}=RWi?d|tchbAF*(_7CfRm2{Ye+2Xr&L2`E8eU7oCu87s*++CGQT>FW@b%y2JJNv4d?4cS*VTxc)x& zvF&0jX}FshNy;M_^*111_Bu){S20G9rT>iWU#e(OF|J|)ii$};o(4>DwgK1h6x%3Q K>$H3PeCL0XWHHnL literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/impl/DefaultCoreModuleManager$1.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/impl/DefaultCoreModuleManager$1.class new file mode 100644 index 0000000000000000000000000000000000000000..b9845f24fa74dcfd58307492322ab004a9495aa2 GIT binary patch literal 1114 zcmb_b+iuf95Ivilli<=23cWy~P}3$9YN!M+RERVe6p@QWN|5N&#@Qqe8@qDs0KdZv z&wzvwLj3?f3NhHrY)3SLQAc=(yd&u* zTXQWg+uXAio?R}qd~UraMIk2b4C$5|c$TQxDrvnWdOVPRk#tSv)TiQhhkU|`rtDbK z9otU7F8qPp)nI7Y(vd@6$2sUaZevHs9o%JDQz@q8PTy>}t-u;oY$3a4&vQK;yXu*# z%suQdl&C@GtU)F<$ecCER1Gp`4KnS~u{8gr(74Z_R~<)qMajowF=oij6*N0TVfhRP zXD8A?OsA{!k3Slp{n^BX%RmW!n#&*6PNnd#l^@Yq)S877_4WT$(_F7>J6wiCM^l)1 z(U{gx6pDw{c9|hwdER_Qe*Y}$GaIy9Y1%cGSy9uZA|$bZ^W+x^y+@QHpz;;$!e~1D~^z%2*0tU7{BthGnuh>0~K0MIMAUyHL@@)OaC?(NJq*(>r5kmys?mJI(SV7rufI zW1^{g;RE;zCi*7EGfPv%1Vd78=FB;B_M7wb&Drn2zkUO-iMu9rT#nIl#e{*YCNj7- zkL$Q$AZs9JpunJa_uWpW$WX02vTbqCwYkl$R=;g^xZkklz;a|DtTy*~Qv{aVKJcun zc+GoWw?YToveEOz_V9Fz@b0_5+kL?BI6Di#+#W-;A{&BXvF`ffS+8x2V3*q-S(fY4 z;ocq(T%{iwqbebW^b_9~!7#d~Jg7_FsBq7-x$}l09v)Ua-suSPeKmtfGn4OARgu1m zfMF?HZ}C32Txr!@Pi(3D678^t6s0mTER4G_n2!dIIOw|4?-;mcV1wcPOsYGJyh~vY z+JGpe4N45P*?>~kFJv!p#IPo7lPI^L${EKz;&H@as-0z^7)J@425!euMvCF($+`WX z1~VkXrh43OT03@2I9&sG7DQ#2-Pg0wPe8c8!>_yjF~h{y-hG%V1nlMmPrEYe>2 zlNXX$A<1wWDe_VXwIhUu{6}b?5iNYdDGehOQ{l6pNU&ca(yG!4e~6@Zt2jf5XUQ5R zc`gZx?>y}kdX>B*B=vmZ5Nw3{cWmoJk7Gm~7bsE{uZ}fb4CA{*nuc{OlT4GpPCuz7 Q($b_OIY$-BUzn=Gf&U?=O^v`!c062v8 z1cq=VPCrKzh+{T^EROZ#I8MmX+w$j~7~a)zGJzcCq|B)V=5bn1&-7yfXQj-!e&n$j z!+ANmpkYbF`wY?gs#Qx*G0f#nw_pciF9pFsn!*!&4 zhOb8RYkZv>Hh0QKq3&5uIoq}3$CC|=g;y;@foUmOt}$=fB3Q$(nkiA*j0y@}*s)duGzvA=6_fAf` zL=dsPf0lbP4-C7N&30bMNta6nnBiEU?H#0xd=~0Np+#P8aV>GG zX^Lvya-EuniyAI5e9;ryZy)B4&SHAnuWzVHXFJrKW|;4dQHDgpZFr_oY2P2z3nnGo zb?n1)I`-mOIl8Rj107eetl_GTYq+lCLwuy;V|>EUTv*KKPR^!O)l%H{1TWoA`Q$B4 zq^z<--Nv7$1SD=^>Uz?Poq06md`%9MdVF(4(5g88d=jo zkr!d=C_!jg(NV^#4hw4tbGQKN3z1~m&}*e*XA?FDLwrt8$H ziPp}E+YEcVuLi}y?ATR8Sr$Zwx$fOoLmk_`f?IXyHqJv5=anAebiJ}svsY%;jJ#W> z=K(>T+_orBM8*&&l!`zM2S$UDJ=XnWq|~}hhDfKwwf1!~uxW`wBbD>KLRZBzk7+!* zqhuh8(jnkmOOXe zqBlb4VK?)C^eF4H2h&@J!QBFP7i?9yKwfuMUn#XO`pqU(1^v6PoxZ~|eLwajeO=z# zZ@8em1V)esws&+}{dNWYhx(@OjVbzwh=Wc5STZTEW%|GfBP4HWS{S3FNJh~%v?sdRkgwu<^ratQP~r&tI403gasGlN`xPVXHymNVW1jti zvoyZI{=^dd3uY*c&qFbM8H)RO&k&{&yop!vD&Zq^E#z{P#%q2y?&1Jm_p^5wqZlJ^ za(5gVMEubN4x$f}H0}fY8%r=~7$McEB&Y<3Xe3K8M<%3dbUbq(Z0q!=l*FSTqBu;& plqHE$3Ev+Z literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/impl/DefaultCoreModuleManager.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/impl/DefaultCoreModuleManager.class new file mode 100644 index 0000000000000000000000000000000000000000..0998b2aab34a56a2f76eb9469bc15e7b0b4bb73a GIT binary patch literal 21600 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 AkpKVy literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/impl/DefaultLoadedClassDataSource$1.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/impl/DefaultLoadedClassDataSource$1.class new file mode 100644 index 0000000000000000000000000000000000000000..71173e5f3a047db2ea32a43c432dd4c1d694ec9a GIT binary patch literal 1734 zcmb_dTT|0O6#lliKnYT=;uX;yn_y^OGs`yjYp!7EKI1T{ zO_5K$>Ua!niLm@_)5{JsJS`YbMdy}T{fJ-+ohtjryGtd^a{6mS-84csapEH zc+G2;UkGRfap$?u*PNPb2trRynzrdrF+9&T3N*jYkeG8ybf&g~X^WLwr6}ANyl9c7 zqu?0aTIa4Q*O4(H55}M_*|u;4j)IoY8bl~NLg!Srxwj(re9C7ozsbx%^+s)N|Gv)+XhOinB|{B2YSY*9pJX;*KzUial8e85u)M%{MK5$rmp79k<>q z$bk$Y1&|JlwP?!x_5ZJ)LsDUs^#$9o9M81N%fjDwN(vsTc!Y5ko#;~0jjW0ZOe%P+ zVhYnLT5(QAJ31H!jy3wy_G;Ct!3{%rbO(p&7FHW~W9kHA+Me&$D#G^l zrK4$(e2SkvPSU^q7&^ zM!x`lxtR1SF> S6ZGdah)Xm}6I_}``uzq_hpJrw literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/impl/DefaultLoadedClassDataSource.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/impl/DefaultLoadedClassDataSource.class new file mode 100644 index 0000000000000000000000000000000000000000..dd8258d5130b80220ca091f06073ee0a36ff176c GIT binary patch literal 5545 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

w1r(=NFq2b&EZ`l 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%0A<@$Jgi zWMOeuE(P^u;B)pbwkleZ_3C~>P20Nk2HV%nsP052Ud5n^FCY!%O%zZx@d^&n4Xyf= ziNiQzLZKv(U^?1vd7u&LQ$a+=27>L}mtUnCV0|)BHZc#|z=DZII3_A^sj~?WOD67u zy)^gInw5zvY9{I!6iDd`DsItuAip}`xdk=aO7r!!&{hcS2|N;{`sMtBDv;|kRs?!C z;7?0H;H;LlRa8kbEXCyWB$>FU*9_s2MtSyr`Rj?s&W;Z40H0Mh3No*l8%vcP&=<-8$}!zZts` z$<**ofzh^RZfipV-BjVKYu~M_8M58C#ei&07l+Q8XDwhOx80J*4B4zl6MvH(P0hAL zbpP$No1KY`XG&+K_zPY^O2 z+<`+Qk0C}z9--rBgdQS1@+%^_$A~_J@gN`^;<}s2;4?9dy{@@k%!#^f1qb9+#f!fT*ICaen5iYy+UJ$t*c;p`grh43SW$07kvpV0y*7wwM_@c5F>c})8DMH2x=|kiR4jMT31XBhk(gxoD e3qv|e=lQn-A7FrcoTnb9(6MM2M!8$(`~L+zVU<+? literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/impl/DefaultModuleManager.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/impl/DefaultModuleManager.class new file mode 100644 index 0000000000000000000000000000000000000000..2cc9f91c1254f219c16db889e59655e2ead7cfd6 GIT binary patch literal 3526 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 literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/impl/ModuleJarLoader$ModuleJarLoadCallback.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/impl/ModuleJarLoader$ModuleJarLoadCallback.class new file mode 100644 index 0000000000000000000000000000000000000000..d148e38251ba53bccf6716f3e242dc46342dca79 GIT binary patch literal 378 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 literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/impl/SandboxClassFileTransformer.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/manager/impl/SandboxClassFileTransformer.class new file mode 100644 index 0000000000000000000000000000000000000000..2759fe6a8f35011c975cb3c8d78d3b8cfba5ef78 GIT binary patch literal 7204 zcmb_h`F|VL5&y0&d1YmNM1+76S_Fh*%d!O_1hA7daT17&6Apz0$EC2AR`LdE<*Zf? zE>P$}FG5>dpoQMFgtpK&9Ci{?p!A?EJ?KI2yR?+ji$9*re)MqwEAdhgC*fw%yfcV*;oYrRiub5^ZxDXmEGD;zW}j$o70vrZ^M28M zKs2|B=7X*H5N;2$xkF6v4C2H1h-mH#;O-zkijS%Ico3h!CslkZNQzIZxF>+msQ7FU z_hSDd+=tHv@OjaHL43bo#REZ{iZ6=hON;Pj90=k;JS3Wj19(IbPOF#+A}Vx`;$Q%W zgvN&hcvO5m62MnfJf@%}o6lqnTR~_zZ)f6#YXE@nqgM z;zh^I#y#TrR+owVZN{WwIm2ebF)SfvRb46igc;9zbn(rVTolu87B*Y@Sk}1QD(Gp0 zy6@tml)Zgw!q{Nj`jm<%6!^qcfi`4uyNy}BP%sJ#;-d|>m2%uYR|tM?*lOuHqcEW- zDJ)o0OQ6)Dr_)B#NjSPgWzD35fx5CKFge}QX^pst7F)-jBUl-m|<@hCX;@c)U!Ku+Z1ze(dUet zG|h!|^_`Di!gV-l)(cEZvURJF&f7V|CX$OYh9f`Gd5cM>XmjU@t_oG<$Kkx5B6;=l z!02FiV@>9OT_|l4pSzSrc7HIc@aUr|qEJ4)a3K;-}V%Aa6zW}*1y_9){>Bfw4ebUU^!ly;7 z@M7t3F_dAOFdR~yHg{!>JFU!j>jqRjsp4xYb})OZ__~U3sQ9LWjjtSAFJy!V26;p6 zEM?#3u5RYvPA<(!b_!N^)xU`v+~Evz$|_}Ak*dUYUM5y>P6Mfp61cckrGn)=tKh7z z?gb_c<^am6%62nV%Ct? zqMO4sq>*7Bn=Kg27pa0tuP%&~@1}?p)_>g%5z~seGC3J2mssLUTBi|Hu}DttHEO1~ zcx6O)BC=d9&G(wwY=kk+iZdeWhuJ;)7)!J2Ts*d$DL}<9HT(*{R`DARzs2tqY?;-` zlTuPG<|-LU+xc8%ET4Cn;`NEhSkZ|TWzE@V$O5!Kt!E2HpN8M#4;n7UB?{Iw1aeN@ z!1A>?F_E_&BjrV=aLPYw_!FK}@n;Qx!SlR=H2f7WX!sjmR4~*)Wh);k-F$_Jyitu* zeT;?9#9(DZbq#A=w~~fi4R3ZQwuW*1ogUaw723nfM3Q9BRB6!{sWi2Qf8d`i{APuf zY!G23WERGS8;ng=c|u*!(eN*EstVm^#d$teDQvB9t4d*&sxe7)&pMH5i83$8_lsNQ zRh677{;eQZ4@_}WSHCM14Avu`e+7%ZWffahVk$WA*oDl^luQxwbfuigT4?sP8%0g( zhWDIMV(zD1nNO=o6)=Ob>JRW@m%O|Wc%4^K5z!N>AE6iMNhfblu>>Wn`z}>*`n(J~ z&|T~K+H>^7yTL!SiA6v_*iiVhg5F~&Fv^@%J7A`0c@~sJsZuwWWY(D>e-@kahi{!uAxf*^C)=4&T0?jTXnB) zTMD`=5ASI;T7h@T*z|LM$`~s$4$i2-Qk!FWC1pi;4eSze)6B=Lg7K~eSkX%v3$jm% zhgI9LyNk!fAdvnm+lfcZ6AVQ+#<*%S2QMAgQb*t=Iy2_r_tL$08%APf>>{-Uj zp2e%|S^2UL@^1@!IE$l|JlEN*z*k`dM_Z}uFgY%Bwc>mmXVg!gUXdel{w6sR2sF!)z`!R* z0tLSu2^?DFNFbq-ht(fjaqgSh3;K`}+mA)PJ%-&zwRD!afTye2Uc2)85-}70c5UQ9^vFATvK-&N1breuhP{FroQN<+J$|O)`-D@vJTuT_-TQtsI#J`BPzyln( zmtTuqyhonfy#)NFGvdv-t_JfWar;y<-(QpY`kFg0uHN~Pn#?!QV)NAwR`2{+P39YM sQw`>}YUZbEFe`W~-d2NIt!93v26Gc#Od#_P46+YW%zC=mhV|k90nL;P&Hw-a literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/server/CoreServer.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/server/CoreServer.class new file mode 100644 index 0000000000000000000000000000000000000000..b6f639a51bad99da6c1990d728847a31b3b16ae2 GIT binary patch literal 424 zcmaKoKTpFj5XGNM+LZFAh3?GlQcJ9zpaQ8snO4vCHIq$*#Hfe*lkLR?an zp##f1-%q~h=llNo`~q-`ag0%nD}kN~_r_)dCzI(5x3x_V?X$q(VW;W6GR}q=*8=?w zRf*H85V)C4lU!|;v{cC@%i8HTs_wGPQwVc`Xm9j1Nwh1aDom252_SI}^PxHNHq3lK)8!BIyWE=a#Q8iiSQ;rsA#L#_k$hE7zrbkndz_9UKli!k` zHSq*y|2`kut8I$?l)$L{R-0j!=AepI+J;X62EbK(b(M*t%DDO@X=A z{pqp1;Z!ueY!&sQu5Im9w3=?0iq5WP5L>JH;94_I?k*wQtFE*ALg312odr6kE!*<$ z3S1vPt@FsLKz!CIv5ua+Wt&U&O3`#z^kSJS>AYj;6dYsQ z^zN5RuIb-NJOFz777k=KvyQ!PZSeMTk-M|(n&;LlrY+$Qr@G7~Cs}GU);9#k|G(^` z;G|Z93S2r_7y+eZGO|M%Bs{0!xt7hC{fCwN5)4);m`-vd6V+{lcXf@2PN_O-&d}>M zIuAthTiJA-ALM;AL|4JnjqOFf>fb#ZhIvgJU=5bKa6#>2JB}N!c_i-p81V z3m8%{j1d*1(wu~*;tH;+xP>u+bItY&YMZHB<&x=A9DYmOQSl7lsQ4JSsqmB3*piBh zckv$e-HhY6v5If;oxqvq@^W#@G&}{*ReTR!VDcovn(CI-UKHqS0yel5$TU}<)NRkI zm<_2*zoNj@Nuq6;p7%m~D92{t!h9ego3MlNRh^9i`{>jL+2QKE&wQZ;1U& zD~1m_cB74BFXHq~689roXM@wYgv+$(=c5XuQSc$=4L*h38-0b?YqSacL@U7T@OK7% zEHyY4VhPzTJSDTbeH0-s(9A03XKSM!${g`!tjqxtYx_v1Q+w!?dGA5xY!6+nJY0<+X2PtKn8KY9@kg}#h$9E+ zUi$?-=`(GApmz^x!Drtd`v1njKF+>;bb!G%YU-W8{Nq{5hDZ zIlq7$shVyCA7XJi+Q29LQ8dpL+~psgPa6bfeO&IPGryuo%0u|*fxx7+?r|-K`~LwB CN-E0$ literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/server/jetty/JettyCoreServer$1.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/server/jetty/JettyCoreServer$1.class new file mode 100644 index 0000000000000000000000000000000000000000..a40b7ba0d84f651562c5aa39293c24627db4e80d GIT binary patch literal 1368 zcmbtUT~8B16g@+0mo5v`g7}G4t+o_lTSXD8ybw$<#TttwzL?Bzhcb29X?C}W8h?&I zz{Kwde}F&AcxPLM@K6(I(z|!g+&TBoy(jbQ_m7_dZsC3!!szBJG2=+u^w?!1a zu^(%@N^m1at3>la`Z8K!SSg->XLgGrxvH9iVZ0`N@ua)!h+vaD9wFJ9a=Ev~1F6@2 zFsaLDu-1KF1gjnoLqW@j$FCt@q1zapK)E6$rbJQKG}?%``)Y%C`dQ7jeOGiMsr=Bu zJcHR#-M|%(q^@)FNOu<6e2>$G)_m7fq4ZlDBHB?+0}B>xOj#I#Wnol%WmGI0;BAJn zckgpD%!QHabm)kIMGJRu*T9m6dzhke9eY~&3PVQMWP99i*>$Ha+{nN(!_q*`ZX`W> zou({FByUBKf7)x33K-Id{D}kZ&7DBK?oDrbAon13k+{0PBmE}znY(%{`Er>A`|?Ce ztEr%63)hpKQ1n&ZFXEr3|7NS`Z1t083%%{dwp~-LmIz2>8C}6)jI=NPZN*S1)((2u zhyoHo^$^mVSXB#i=0CR}N-ZIV`GM^}I$GrD1xbS%4wlJifzrb=ME_BY5jsxZ3avF_ zmgYW#mA+!=V;qwqo1z$?j?-kPdQr$?l2#NSvoVS|6YpuR783D^A}f6Y`-a2^%=Elu z_LO$MBb7jZ?+Xl_DFK}+izL}+#QB^axh)j%BF<{{`1)DT#__CxbL1px>pUI5K>iRe Y;!=!F<1!}5%MvzBU;Q&t!p&6r540F@S^xk5 literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/server/jetty/JettyCoreServer$2.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/server/jetty/JettyCoreServer$2.class new file mode 100644 index 0000000000000000000000000000000000000000..1b42182855aeee5ed9059bc53268e53710177b40 GIT binary patch literal 2268 zcmcgt+foxj5IvJb7UC)q@qPo1LL#s+;x*zeqM{Mh;O)h#%`${dExXk025;p*_~NtQ zV3jEP;0O3gR(a`8RugzwRH{r>dU|@MyU+HV>G|^g(`NvAOn0Fh85UU3Mbk-JvsHnilI6`CrejykifPmq z=MCRfh=4xfx>6M#)AuD!$D*M{RVSUN z`e+Nvv!qXv;)9GSIsVj=3w#E?1}a;!?A4VeuiA{OcU65y_$=uI#$C(teA}(wlEIue zqv3*%i@2m?J9g;k!B!o;*rsDA`gL4JQO6aG>$r+*0(}bs>dDW^^bQe>r zZFJtYJL?Gy47PQZa-is{6xu9J;uaeBH-tFK5ZBl9TI7vr)PHky?f6bGzF+k`**?kf zKn}Wa=#8WBmeE^Nr z{u(1SM0%QI^xuhHv}-qM*J+-hu{V2k2_ieRgjjZX3GwU)B;Gc5?;+ViyMeFROLBW7 zLNE5=0L{pg8!fF1%HB_F9Q6(24Ub3JcNFv;V$0a@prv=Px(uzSlh;0?D~@n6&W2?q z!zrm7TdL0LGB&-(<`%Sr=%j?-pyNBi_<;-|JuL)^B8Ev3$3u~5z}B09Lf8k%Cqb4& f1T;;042N-~VH?08_LJ5_wr(2vw*>`^b#(m%amSi} literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/server/jetty/JettyCoreServer.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/server/jetty/JettyCoreServer.class new file mode 100644 index 0000000000000000000000000000000000000000..ce3fe053bacac2b6fe7170db613c3ba816d30830 GIT binary patch literal 12462 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 literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/server/jetty/servlet/ModuleHttpServlet$1.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/server/jetty/servlet/ModuleHttpServlet$1.class new file mode 100644 index 0000000000000000000000000000000000000000..8675497ed3148d4fe14ca39f26d54852c6887e27 GIT binary patch literal 1532 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 literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/server/jetty/servlet/WebSocketAcceptorServlet$InnerWebSocket$1.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/server/jetty/servlet/WebSocketAcceptorServlet$InnerWebSocket$1.class new file mode 100644 index 0000000000000000000000000000000000000000..fd6a4a8f0fd4ba77f030fb86687706a7fae5b9c8 GIT binary patch literal 1923 zcmcIkTTc^F5dKbEy0l%Pa#Oh|YSB`VrHG1xC}}XMDe_Q*QRBnu_N1J;-EDT4i~qnx zAMn8!{R_UBNDMys1N>3OIirZC*D$T&hK8FA9qZgmn2v1=)0d8|VTK`^Y1|p~Ecx7w#XV1W3{yGBEg8bJ zWYrT!S@`}dV?z`?$9yS#Q!%(D3%tOM z@_NPaxLqtbn}+GQ!tjKqzVeSE=WuE&X|ht>g*jIsQ;a zR~SMWrzjXYbJ7-%)+zbn58AB^~n^)NxUrE+e611XqZJC&s}LJ$~s_X3@z*qw?h9R6MxC;~&B0WqGEfPruJwsX*6IIYVXk!PEx2WrP zHDrA^vX0EuCe~4=_oIXvJ`v{LX5Sx*Kx?3yjYF=Kufz literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/server/jetty/servlet/WebSocketAcceptorServlet$InnerWebSocket.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/server/jetty/servlet/WebSocketAcceptorServlet$InnerWebSocket.class new file mode 100644 index 0000000000000000000000000000000000000000..ef4fffa4069f084b18a9a595b44b4e7aa5751f5d GIT binary patch literal 3343 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 XwgCNeu>monw9tDay*JUj4K@D(9bPgg literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/BitUtils.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/BitUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..e8fb4cf7fcc8975c1242f68876c4e10ada7bca16 GIT binary patch literal 627 zcma)4J#W)c6g@AtV-gZlQk+6c3J3|MZIoAm)CE)t5J-_y7z!Qe^z2&cOZ^eqP6Z1S z3qJv|AQqM^Ody8-0DcI+fvIqwft_dRew=&XJ?B38``Ncs0Jm|i4jU_VT*eg_T^FkY z)q6V8#g2g0U*8w7AEt+)Kx?d%@X0*(!|a*zBO>i_8mMSrW!mI_LAyB8xxio?q_I?y z_LZ;X^dy$KN)G+>r3}(6l=DJI@_{a%)8}`|q4QBf=KknlwElv5tny<4F(Ou|Y!Vg% zHG|#HGWANJa==P+uTa79u9}t9F4_Y1y>y-h;bU#|HUAL|r|LvC;GpW_Y6Cs232gko zK7l1OKt?K=$fy1^45;R2noXpdso*H&N^zVfdD(DBmJ-Xw1YDgzif08CJAJbmZouMu zn^OTnRB2sil3vg|8($zkm*sP`rVP~h0gXQmsN+1dx6GSF%;onSR;AzC{EEsuIM!lw zcW}C6ZQGvR`-twqvxnPG*K=Nb&IdU5;*Bjn{rX`oc*la_Su5u((_SK1hflPETl^>b vjE7h)`LDCLNA3$~Q8?MK#K@d2Ttu5%mKnET*UsQ_kPw}pY!vVaSJ3$ly7zwp literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/EventPool$1.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/EventPool$1.class new file mode 100644 index 0000000000000000000000000000000000000000..21fd5c71b22efb868555ec256231b68d56db76bb GIT binary patch literal 1222 zcmb7ETTc@~6#j;mZd(?p73Ja$W#uB56%`@GI6ujUxGTeY0s zjOp*WWeHOfuFKSr8!{3&CF3S$Wz1ooVL*haHg|T_tXrrVd+U~Imo?9GJsG!z+id}N z1S|+x6mVC-l7MB*GE7oa)T5@T)D-ooDXQUmrdsnYTm4m|GR+{T9mn)mZCH*DG5Nw}bOQ2P9IwpU-U-$jEEOhxsg>5Ivox%*k{nqphV=MNNOS(|q>ZWHYj3 zHKpr2&59bT8PHHo&yoLJW@3=;O*h>mmgp0wMp%dLg(gSdD8C;3e@Zyun-I5YEstBVw`aHO`XV vMx&R8isY6=`7?ikteE=)C{=$DK7ez?VVozNppm4MUBpO4>BFO9dZqs-YmFJl literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/EventPool$EventFactory.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/EventPool$EventFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..f27b42d4c91624eecf8fa8dd0e97949f47d8c1bb GIT binary patch literal 4666 zcmcIo`*##q9sk_TW3s~l5hyRKMcG0ikVyjAmZX@5LJdu!CO{iO?PPaI24-j0-Pt^> z^@UbjYo!lstrZ_=t37(8o|?sSj@DoOlRO@epYP0MGYPw4a*pmf_kF*g@ArQ0_kQo4 z{pWu^{2PFNyrGa4)%9hlUR*P)}J!Pa5ml7=ZA z8>Bt0qf^Em9h-1j!xbG{;A$x9*a}aBuc4%42QGHtD^ivvt4J2;*p8}(86CSYyAE@h z*YMRWcH>zc3SX1#IUQfeH>CDW$-X7ow>4Z9o4+I3cO`pX!}m0NU!i@_@tok8LQB`a z^9rrU{erEqan$kb)79dnT|R3~y6o9B>gO%@yj6Cj9e1_{(@sUfI5A^;!AUD0_~m&v zM?B9iA9t-v#pdYI(Y#+YE!UZ}CN1;wOwp`ZUSZOoGxL7gHmiZ-njyfGzVGIePy;kC zU$(7)`diP=msm`6HAS;Zj%kY_5n4_J2KJ?$PF<}*sG=vWNTfkw{di#IuRLLuVpjAM zb9uWIIKEfW@B(pX%T`HYEVb#h+AmL;R>{gw+hnO&B$QbqJ^iMTWEaj%UbgcAZEg!! ztgx1KX2+c=&kCw#^7-8V+^E5{^bH)N{Toa45@&{694$%V>C_fQ{HLT!oV(?UE$%5q zE>ftlHzk0=*5yZl&Ju6*pJ)ub|HCGkajY+9PBsbT@-)utEcU=r`~Kyky{qcv<0KGvOsW zhV4s?=Al**|4}NTv(sgNwo(_mmP%;MX6W+jLa(f{wk7lAKC6qos_@|5S2R*A+69M^ z$(>KAT&rkei3)vp*LvJ?-4$HEmRc}jr)s5Y~T(2M6x#x{1k5q{?BMw(;LnymR$2u`;t|4 zgX9qs!M8R1+`x7Gf^qxqT*e#zFpe4cC4Ob#*SMkKHwJ!-cMQCX8wP$S+3#^f;Xq2f z@MIeJ97YTbZybdqO_^9Nk|=Cm;y>uQPBKy!SO6Nd_S^1+ch$hxGus+;HYoW zEd~Bxo37R*BpAZJXOOezis(oLad!5BhfX-N&rSj>5&Mu}FE$P*8%KJ3`Eh0P<4%4Z$S~~m^Bd|A zTP91zvTc72E$_3E!C~g@(y5-u5!Q`p0zQL>*y7g@204qu%H-EzhJF9|Gg`YB(AM)F z8~j~o63{G@pgqcThUp7THdBe|S*915Ub~IfOj{XH@+dtD9s3VQSdS))uyExQDf^(UfhhZlAb~9TPR|-1PAU+)I-`v4Bt3 zaNpl)NK0sH57yE47a0Iw!l-%~PpNB|RIj3_UdNnz16S3XctyR%c>gxuQP)F)wnikx z1d$FfK9hjY64ih{xKWqi`mBy2_Ox>35hh03h(^wC2@$flv1_8chELt(wB$bANT|uy z)nv)*2?CuAXFtXoBRHXCTmOYNDgyiif5oR2KEm$P+@pgZAh)zl6C9UaYG>NZG{kh8 zN&2N6x`q1>-ohTWfW1+*ORDeU-l(-NYHf&G`=uog)Ee@*M>b#m0lNAlx%?9zQ#UcD z-p4uh0iIERL0;X0r#=i9wm&kpzAzuBLjGtz9>*xD(CId^*cLoN4Ut32*lCUl%j?kk zZwzWUvweM%-E^EAxeZBN33CtkvG9Q zL`?DjtYGb4z`>Opmpnl6#u4Bs#$#ia0niO8mMJf5OhOYA~Vhg+ZFF@2CgJJ~PM;Q_MW&HrNthIa6uA^ti${tMxP2@C)L literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/EventPool.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/EventPool.class new file mode 100644 index 0000000000000000000000000000000000000000..a180b919c9eab1c9e81aaaee17a0bd4bed5ab90d GIT binary patch literal 14235 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 literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/ExceptionUtils.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/ExceptionUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..b19ed27252cd0534babc18887a659415537516b2 GIT binary patch literal 1127 zcmb7DO;giQ6g{s^n>M7h6e##Dg4howz!ruPJ2K-;l|?HHcP}ARUQLruk|ON<8~gyr z4I4M;xbO$~qa5!`Gi@q3qnq51ch9}|o%8bZ*Y_U)wy~ulhX*PiYEZEvgGU-xv8LfM z)>S-FQDw;P3Ri@C4C!j^h(T$3$2LQ;C0zT>uy5Lahno&%$}P|0&Jp*8jN_ydo``^9 zyJdNOgFC|HCO3MgeIwxRvFV)|mgn2XFcgmQ^31Xaq43LSV7Qn#}4Mo9qkaYD3YiOJluJfI_7lp| zG^pzZROK_2sJjv^H%oT_tuaH36i86HWM$MTo}HC>1PBR`7? zA;$0n^l$h(jOT9SWr<%HCha}vIla%h=RQ66{`~X(0Kh#g%D9SaF~o5_M&77^V-ju% zFfImF#!XC!36nAMrUV=lUP{6(33nKZs`1GV%xaN;R84PN<&ItEWvY0_SzG;-wC7mI(k!L8JIjON)$d?XtMi))T zcJ1IPLwG8+&JYm=F!UE}*II6Dmo2}<%ML{b3!cfHb?(~&w}Wvb;N}O~U=x!(46@-h zeACL=f;4b)SJO4V!zs1ynvPeu-L0Y(RK1FXyAq}q%wSf*01^tRKd0b6<{6TLqB-2% z(w04=VODdtZ+;lJ z3TIx01dFZd>Fj3aWqOSv^ItMbo?o$D?ljwr+E;GvptVF_dsi*=yt^HAo{^z{o}3rm z3v@C)DU|I}m5wxtQMxtG(KQoF42zxx$WrH1gdvJS43Rxg=oiA|0q^(04t~hr5ZV<_ zcn^`t$`?dlH(@Wqo?|Ex>}|q*M4PPGF6fc>(09lps1R(izM=;)TJI9sVT@yf>?9q+ zd9u&&3PrNZc#C&r!?-~8$OuuX!*l|F<04@~#0IWFej`zi;?b~vN0TGPQ bc$?lNeTkDrB1+fl2(+an-J&CSyp;S45Ik^G literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/FeatureCodec$ESCAPE_DECODE_STATE.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/FeatureCodec$ESCAPE_DECODE_STATE.class new file mode 100644 index 0000000000000000000000000000000000000000..4c5f26b2d5b2a2f93eee456245e442b55651de64 GIT binary patch literal 1331 zcmb_bZBNrs6n^en)~%Gc4HYK7pi{SjDt#%e}*v|3SC>z}EXc$JIA%-s=Z;)jzbY>@`7449Oj%Qj2(%Y_n3| zGfW2K?Qo*UkGb0yYG3B^LkcO2Y#1i$j%RQ6J1sld*^l#r|Oj^RzNe#DQt?sBiK zo4vsC+NJz(5=zy5i@Qx8ID#}{mOb7f0ja-P8RBb>=k(SYZeAm5Gv8#8d+!~pP||eT zUf3=MDJL9>HOq}IHwQu+Uca+8jBM7a{i^Br1IylUL%?!x$ztOkt8?{IX>tLxvH{^*vHGoy!ko-)J4#R*#ey|4j(P^T7s$ z&!{vI_s^JIl~F1$(IeI9WlQB*p%$Q>1Ot;9Q5^EfNMaf{Ks_ew0qtU`Ct#luJBRd< zEQVY3j|(4rP52qiM)+04!W(KzE_}hrIb?y4UBPGQM7u!YHs(S&Gy1IylYME^#6=Vo3sP{j=~ z(i19{u_EI+gYn5qxCMqu z@*a>COX+}pLF^pyPvkLVXith5dq?;wOh@=-#KIGbCe40D;vAB|$1dS-(;u~q!X4ZV zz21x#=?`KZoI7x{Kp7$s_4_7-F(W;SsWt5St1S%lHndrpfU$q)w3z z9YqSAfzVMCp);8LLAZE_X1FGGFksda9SoYMU_wB*UQMKA9E0o-8TJ7)RC_!ke~cNz R#gM}&S%pqWc!H7j%pXeqNN4~6 literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/FeatureCodec.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/FeatureCodec.class new file mode 100644 index 0000000000000000000000000000000000000000..9d80041f77f64220da36e90dcfc532424906aa2c GIT binary patch literal 6660 zcmbtZ33yc175?vRZ)Wm@BrxDeSi~S9A&H`*CK3rDlxPS@SVUs+F?oi8$xNJ?AZ~Rj zmD<*}DlXKbh)Y~6q9h=0wQ5~zYprdyty-(qTHC5sTSaR6pZ8v7CSv0H)zTK^%oE190Oi4VyIlz>lkg@Zg8iwOJn5Xt*|r0IrnBmI7Rd zt{LDaJz;(f(XgHTks?4zEd9CWZqo`*p998xVr%N z;06sl3NQ}6^61mBGl&Cmr3~*1q6qiOW4BDcPg?f}Far++a5Nqavh|Ss`ePY*Shl-M z9zO}77LSO@qd~T4Qj5pr@l#plaWQ#99#3jWXn0D)&lL2gc-%}j#EewROlf#pp}4WN zp?*Q*iq-|qO^a5vE~;PDsNv@dBb@%(jScf>b65swy=HBz+0kjn)2(Kgku=hYq=ITt zD3F0n&%mM!7BzI`!yuusk9MKFEL`>rkj~*Q}7)VjYrdU3f{7YhAB%F zJPnCG;X$Zcdj&(i;R^q_7pcKB1UY9k&MdkPNyfmDwXZ?0Uzu1}9Z4k3>h5$jRz1fw(%nf@mXFlZo7S`uSu@Y*vQ{E36#VH#YdRT? zcPNyXHLo_-8urYFL@Z`T($Pe`c8c8{GvXc9wk?$AJ)@~-b)u_QBoY6G^M0wtoj~TL5ZCx#?uHhHlvo+cgw=hwt%O7vv z`FSzW(}^rhS^RRbaOPRb$l6LO27}YOZJ)=leECo~V({$GJ+En>2tVhgvsBC5`Vsx2}@rb1#2RqQ@*)_L|8IQ)>&2?O(iDHy;j=wu*#(6*@+@wC4 zG)N5Ba*EurOh=PU(r|8O-`S?UZ(+)oNAb^@8rrwZn#`RkhH1*i>@O%@rFoQ@hnku_ z%xG_4l(4pKj;7MtV`!bZOus|cTpUDs2VBqCDdZl5Ot+j^C!_(n%stu}yF6K~_~ z^S_OU(o6g-uruA-6^k;&vOI}yn39*7fs{h}9=Mx}^X&u8WvmQj`?NrUpvygoqKJ z5Kp8hn5T6cvDAdgZIi2H|6l1i7Bh9!ixZ=>YuX8P>Whx&@N3Gij^E(7I$H3&ju-Gd z77HD}m!3c1Mbc#7*&1Hb@iP9XV;#P==d{U z*YL)mNmLnILv{QGFY0(xb}q^;I@d_8qK%Hf;w>G2!{2rM18?i-###yY9UbrDLLL9a zdph2i(GTR;e@R4*__vH+s^dc${XkkD$>W>2NXH&A{up})#W{cFYSw>VGrm~%N)J`2 z|AJG7-o_MWeYrLExw&P*Yf78W&2411Gh2~)ytCa_O>mdVxeMhvY0~dAy1LAGyFv-o zc*v2>-d(h4sxO)=$qRPB*vL#?R~{%FR%Q3Dnhkp|qRjkd~2wV3Oe5>MQE4PML6 z7wt+D$&PBH%ZRKpc@ymHoAKuHU+Vw3-a5Xi(JbVjwvgv21)DX8L%!xcJ$y z?$boItDCcr%5~7$ASWpUTMq4FB3bo1(yOfeNHw&oonTznG=s)Fc@XENrZw z?cD0;mA0N9O-JN3mJ;Gp=MrAZOL(bs31@%OER`IV=89v!IwpmdTWg7Ado*suDE7{Q zusGfd4LL_<({%y;-Cx7Y!8R4pVQqM<|&Q^=v@oub5MNT!zH|Yuh@;ivOWaM?}65ff_bXq zM(7p0pet;Ge`+uG+s5C9acbo*442LdHVPFULQ#z;?AeLpO$bdb4}1DBq8B5bb(Z$@ zKWk0q79K0EDip9igI?9~Q}$SlrJoZC;0(go$p4xMUn^Z(%BW6aToPwF=gz+y@p2PtcmeZsS zCp&n&MLY!f`MVJ!9;4<}?8N9z@J`)UULi5{VgHuO2c~=6)4d^Y$g>rbD?{FCHNLRV zvh($zkRbT_5Z;9YTv)o^t9tsMpSq1p+VLOE1b|-paU#85#ye?rQ9B#qATPGI7u6j1%a%pZ0=4Hg3CTDSIUD5{bJ=!-`K(sNqPZ_F}Y#Q}#gr zkZHF8Ft|<&R@wllhy%dJPa(vZL4+t#*oCnWKlO+w3aM7gLkqs8OvFW>}<5-9IVFI z5XZT^$ehR4`MeTbfbZZNyt8bu5Uzud_I1Sl1PhO84%V}XbURM9*tRi)`bOqu710{b z6|!s_MdWPzsAJ#3eQn-_a(Guj-hGUdv&>sVqZm3fz8gEv9140+ajRAJj|dK4!I=XXh-=rhl1;nt6^yXS_t}9FDrU zay?Jdx!iLY&&_%4^EgW5?&l&D*Lf5erQv)jHhU=mAJNh!9|$%I>TIs&=PsLV6l@H( zqpZg3p6(0z2*jBcA)f%DZO4=_At|rAjrOPTNAMQ>!%q9~kS0kg*p7-CZx3o6oV3L~ zsJ50Y4^grSz_ucZK9VsUwyalXQG^eQFiHI}W{ zS*G5g2){`xy~VQgHl^bop6hoR@_P*YeSDktm+&h@irGR2KM_$2b`2v5tH3Ul-<*Mc za|ZUS9M}Wch_73)>s)EQ1$&VtWf#&jk@`u{`njBzlK>4HtQ=IUVFlqmDB43)mwXoS zDa=2WZ@HiZE2ysgzjA5z{!wgcSwCD%qZj=MD7WRledh>fTn*w|3{P?rq&p{Y#cTzZ zv5Pro*O~8fjNghj3tVy%MDAV?7Su_#9ovVh8qe7KycQ9*qq;_OPxpuXW4B^sMTm7_ z()7S~91_-gacI@8oJ!zqHb@Ky@TY}8YeKwUZ9!-|rcngFAsrwyBx8Tg^hRnvKVmT%jbjK~&;Gi)8^yz?Bxu zFU90xi+Mgu-u;yIOD!3Zyid?0hVZZ00Jo$NFaLKSrMNcJF+h!;%O8-fJY(rL_ykA zvoovRnceT7&o2NsXcTINGlE*@z9-Pk_U)j{qRfiRF405p`FF%*6*tj9_^O6mblFcz#u JlaM&AM!y_KQ&a!| literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/Initializer$State.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/Initializer$State.class new file mode 100644 index 0000000000000000000000000000000000000000..bf8fb3021738ddc7571e45f7a7587be8c5ef0415 GIT binary patch literal 1275 zcmbVLTTc@~6#j;8yX~^2bwT9jy=n`>a+jopK%kmU8c1BkRG+5Hic7Y;$#zSOzknBC zeDQB+NyKP0Jo}@JXNE>f^u^95bN0;n=A7?b=I5`kKLE^QB?AQ|4U?EsF|1-*!vJQ) zW~PzT$Y=`0Y#M_?&ZRLV&U^-F(|en7z_g!oe+7@ygGgu5S5`~sVm2w`l0K@ zM0fhX!qc30S6NPfxy$XJ=3iz}UZ15`G(b;KSsxXQ0g^;oO5zRV$3$fW0vTMx2pC35 zyF*eetqt}WeP>8~B#mK=_LQ_86Mh^M9sDBt^m;%zcheC&lONofJ@eNANP!p#}pCBU@ zO_55!RP>}&vZ?QcOSEZ9Yf2mab}iXP);<9f1kUp{q|0~6;yvZ_0S|CYOwWVgCr#v8 P#1)bn-B9ol`Sp?Cf0!ID}hq zlx57xsK~f2A#u~LYr5mqZ3#-zvUGdOR2@fmWZaPuopV)J=NrSB+R#irSW1f$V)lBe zuB}MOl^&~4)O^D=%)C~&w1#c#mYX;E(#e-~wKi`Xt}gaoB%tF1o-1kf)x2sNRkf<- zA3s^mJE~Qy)}Io>)_t&|Ww-{nJk#ytUSfV9n=lx?EFqj7Ccns3y+(TbN`|G+Hdd>; zT~VthBR$Ngns-#&5bGcqaUU6ugnVbYnKhDK6xpJNGpnzAxp@Fx|5&9L}#ejm07>?qYf;>J^uppL;7?5#K!F@cC@le4Mh7^1w1{Dt^^m_?S z)mqLMO;cZ1O|M=}X%bF~v(E%)mibmS%+X9$*VKliXB^?{%)q70Y++s~s4CEej5EPe z?Dbi3wpb}%DHRtB(-KZ~bUApCE$TO_k9EzZ$vT2K-t>ip@y@;sOnsn5q4LPCulv_9 z%+sJ}w~0$k7v?JE8w)~ccGn`ewGLh&o2|s}I77TZyL=e58o!?Z-Ijcui0L)3Si|xk z66^0fm4x1`pThIQoNF7_vUg?Vp!^tM=j~&w4x>jHjZZzof1Ixh_i>Ix5?1DToU5}4 z@d=3K!dsAD@F|3kIVL#+hY`gGIKd~y--VONawQOk0|XTjZ|||(7DBnV2ropo5P6Mg z?j>TcA?J>~M!W^wM@W!Lgq=T4a)(IjDB(nsJ|8GZ0@4=}BMWSCg17!LV zN#O^NzPFuRH*qi^`#v)I?uExTkI5$66G-s6LbmhtO6Rru*LIF!A z?wGhMP>4HElQvO&5h!lN^+aafb|j$JYD5aFF>5Of z9d}c}SWmZ@8?DAk^rE{RMD3akT0~0KG?cAP*^X7*1C6W^cLbKIVY=uBv>o}~EN=N#`C(O2q?PPJ9knE7-=EC)Q#4Q!GMmv3fBynn>wss72$jC+}!*|c+POh34AmFUl9uA!D z?YD9k60kPXZaa(~$7+jqZw<@pZfuNU+=hhq zvc6c=e_6mizqH3nVC-c0ktTr|XFye-(TcliEb=`T`BF8kDG~J6lnw}7%+XQk^r?}y zMC2Jy3jQtc5W>?BpnYMaV?trff&C16ll1JPlbAx8(ex=~1~3e@EY@6N#^BkZ-ptGN zujCmu@e{kNzK-`5+D8oYr+@amZ!iv^do)^(RDYoGX6X>-FIL;EpJzWK=QR(L_2aZ9 zW~Rw)hLdM`Vh#(OuDF&tV}YBPr&ao#GprRt*0{>ggl4}ovDhc9^}K7i&a{Rbe*xMd B-EIH? literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/NamespaceConvert.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/NamespaceConvert.class new file mode 100644 index 0000000000000000000000000000000000000000..98ff4bb7784f4915b4e55764fb2c902fac6ce1e9 GIT binary patch literal 1261 zcmb7D-%ry}6#niu)^!vZgW*q96mbmYDxi{JNXA5?DFZV_-^^{fj$+r℘Wc(pSX< zqYuVs|0v^WS7G9o;LE+|o}Tla@0{=S=dW+y0W4rSi$Ppck;YU8msMQBbOu)y%w%y5 z#X-!Xq+l*f->)mU!Js;#A^oN>B|~1{6K%n5;naC8@GPgk!jQgaIaaXBkSxw_Go&i+ z4uy{BmLsdJh9SMD!my)c*A(`)@T~A1J5#}~=3;F*_#1YEd_L`5V{gwp%xZ`I?)y@O{hVe$(QQbhln7w(D)_ z1S_+>x)_k*H-^&5aTtbb0hQVi&8Qm%^9F--RX+3JAk;+@+f zDaUr?E77upLogC5T+9eCS}AhS7L6QLh|1Gm)n%k1$yw~VEkl1{(CRnCg3CR`?2^5Q zys-;Y^t%nx@5%5u)Q_wb*(4{OIeKxr8QlY=FJPa@NMMxCbmYt;Pqx+xz!=8qMLU8C zI>Y2A6rG?u$M%tUk4!%K0ckQnk}uhXlZ$XBIMb2uNv zKO~TlTcPwBiG8H<1Nrm;l&{Dn@%)JEFol8AQj|E3$u7=?PRqG6ah{Ap7h}$9Y3>Kq S17t(8{hC$}o4yc5UHlCxxh>8B literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/NetworkUtils.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/NetworkUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..35720fb1752e39319f5f19f21d29f873075464a3 GIT binary patch literal 1083 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 literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/Sequencer.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/Sequencer.class new file mode 100644 index 0000000000000000000000000000000000000000..aa2b4c6930e2ddc16e9f27d66261749dfa0cb32e GIT binary patch literal 614 zcmb7B+e!m55It$vZd+H|YOVL%TU*fuUllh=wq=bK(T^*gszBES+g=3{va>C#=JFQ!~&f=bAsC1QA`9JE@bH!!W$`rVB=>5_u-_GNbkx$}eJwg|7C<4^l zZ(!{Yv*okyN*g%YcDYJ`Etq==$bLR3y?fhZXkQJ+#DW*8{8pW(b> a=8^Jpu#5$I0ai06FY}92CWfUftMLOuK89`p literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/SpyUtils.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/SpyUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..1ce92dcc174cae3998404bba011d401323ac5883 GIT binary patch literal 1771 zcmd5++fvg|6kUg2lGapf@rqZx(yB!9E{Jjy(0UCrQ++xOM;Z)CCrLs41;4=0Kp$Xq z^ub5{0cV`iKXKeAX=xNuAI-zg+4q&T_sPfaZ{7pw!>ue-6tgJdgo2YQPATZkK*wnX zXB6})IGe>eoL6x{#YF{|R9seZMMb}g0hx7G!C)4hC}yw&*A!f5$XLEnUz&8RfI%;t z?!3-ztIDffpIeyMeeTRu-DkS#dO~jmmaWT3i$b0Yub&}3V39t^kmxB+GbBgc8Nsln zY&qgiW4}3WhWcV}xPokE{u&#vN1Wi-Io*Paj(lPEfY|KsdsiAbM@#$;PfT zES?a{#9kZph|PUp!Kj8Y++fJJJ<%8cWV&0O6DBd!`8dW*Wb9Wku3-X`VWS5kXn0O| zoT_>5BDL>qR}M|l)Y7gaC&{3>&Iq^d7Q&|5s?$`XS{e@GCc~*ea`NjYY1oNf45hy( zwdTNZB!s+ChF@RODV8?W^5x2IurQApwzfZg(h0<@@My=TD)+|76(cen1+CxtjXJik zh!I_y2jYoM0}1z*;ZTDpY|PezaS?>IMull}Pt4q;g}N<*nmfaAKfcsa#~6g>mdD2% z#S~*fUer~ON)q5t@tVyN8^{08p5ipR>A$7YuaKcjt_+;M1& literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/UnCaughtException.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/UnCaughtException.class new file mode 100644 index 0000000000000000000000000000000000000000..b5d2b137e946e6f59afe6eba16283e19eed81535 GIT binary patch literal 422 zcmbVIJx{|h5Pc450%@U8i3+i?@gZS}im9ke1yjTTrMu%=jjO~)NnHB3n2;Fw0sJV$ z84wIGahC4?p}-BcTO?aEA56VEa9QY%F<6_xh*s~I-At{Ki#X-h5&orz5F#j@nJFtg0A zxU`kxuF(a*Gh^ZAd2_jv>b}v|3>jKdxSF(g|Fpx9+*(&jb)~(5{x5}7|A`Jlv=|2e zaKNztvxXaI8eOVydpJNq%k#nL&?A&1LL=%2RHNgQC$LAl1&AppAKf<1b+Asj|2c&X QVthns6XUfu2?f}C2Vs6{y#N3J literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/UnsafeUtils.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/UnsafeUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..136956c098e7d038a176ee2f67e4b59f68df1cd9 GIT binary patch literal 830 zcmb7CO>fgc5Pj=}IB^{kQfMh3rRAd}fwB_UA|zC(Kv?Av+5@-sW|M5Rv60uQ`m^8? zBo2r(KMFCn195x9l4p0`ym|AX{q_6%4*<`x@1c$@7q{xT?comYdf3Lj%b#b4e z_CiNGeaTSi_D&h9hw)G`v;rNe!XLhk0*G_u>W7vQR!9JAHpd$&9J?Kj^n{xPVzDSjli(8BD^z3 zjfHt7rLwj}X{{)SMp)W=o3{8`Nh1<9%mt~}ZfR$OG||!cpjUz}uW@rFdLhKnv??un z(D?(Xc0Xkgq(U_r_R3|7Aup6!LfC~%FEINY(5B&$T_cav$>_Y&{|5Fo5Bp?mIk<)< z-Ti`qt7wteKpWRcBujpqivb%Qr&C#=`o3RXkP=&<_7lz*VmOoy%BLej8z7s;kv@FJ3I&kJ!7xf?DH|7 z*87SNkK?pT=>xS%#1ITSYf~5w*7=tz$+kjnpA+b;bLo~mb9p%OskMh|dFPiS{?qE| zlPQD4-81uz)u&!oI%|Bjr9xdL}w6EBnl%6y0dc%=h!~Wj|hH^f)C)M5bGqO zu&bNd*`1r+pWm-<09UwhF>^5|9OO19%!Idy)keugWh?m{#yYBQ38TQQGF8=uCiI2( z;&aW(>++p27u^Bxl`s(8)c_~gdQEUm>8E-1$v+A2jdfElR9O**jlP4`5EkxivaOsGO7<4r0{l`TX2AtPI8Syv`u zlq9^Tv6K~KUk6vzLa$lOFhP!v6RFab?$)FXt1ka$|u1jEHsHx?|})}-5r9{ot3G#>l_ zekkMHAO@9-ZPM5OYx~~sy?%VYy#qMMfsHC^HVW7_v16jnQ0&M^CS8Vl^Uj%wso;T# z#{Aly_+HX(4H*i3HS!tCj*R@PG<1D^E8KuQRY!Ru7z!;jJ$Dw8dl@raIGzf*2&5}q z!6(y@$08cJ>VbPo`#eo#K)WEIBvM8EMo8UeFjbzG-q)7EFjxaQjzp4b%HEpM=8<|@ zi$_PsN#}0~U5aZDRH{AyQfAmzmh3bu)x>TIduWufihYK&e;2T!PwSi?UJ;FW?iME743vN$1#iB#I_t~ zwEQRV1mb}g9zfbw1Y*4NHzD9VwworTNKA|5>wC|=_k7>^z7zlP*Do)KXo1QyEhb6O zog~F5m%!|(3Of6+yr(_U zvQ5o;oPAK+Gj#8^AX)FYE)EHbFPfI=yj?d0jg(ExSnsrIhFjHYO+?aV zTi2Rfnrrep3`$MLhotQK$Q03l^cTw?-i>iZS*OO!QXSnZB$ z;bpU3Y&jm<0&efXe6wBF+USBaydO-Zx?dm;p!f8};;ljC++gVCJPKVu_9a=d zJFaf5nA~XRPic?KT%n+)S8X$eUZZIq&MP!QBe3z`(kXO~#$_rg^a-sgbd9bHn)VO* zUA%5rI(j4Qi{gQ9INZ?+&2q+fXj;(qm*N--(MP0m*!GMT+En9zux>lBOFhN^(x3|^ z^f$eYZ%GW#5J_}_hG_)zQG6RBG=_D$XMGkilUkcsvJ?| zCrqPAL6pP>;b0s`CoxlkV>Cr?VD)BS2#R1j=Ow2tsYTSjXWbso&1er&nSM9 zKMm>xBnk8qKo~=2#+e9ihB(N9V!6B%#5DF8F~V+yh~GjE&Nr(*rTB|G{y6y^U6_hB z0KCrY=zMhQXVf_#(qQG7Kpf)?##z8*06zyn6_HCm9TjOOpzXWRkiWjOU1GEJo=+@} z^Y3F8>7mG{nBokcIEg=LMqnQu6w>_+D^`6}eNJb-qSUXH*gm4M@OV|0i{Pf0K8Z^X@H=@92)H|5SM(^!2GEY z6`ANVWr4x9p6oGxuy+M}0h6nkEp&@s2M^YFxLY&`4OCkI-<6(fhX<6X8`{SRfIuSoy^ literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/ExtFilterMatcher.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/ExtFilterMatcher.class new file mode 100644 index 0000000000000000000000000000000000000000..b554e5e221295d857997aa53be823ea2cd1b1b13 GIT binary patch literal 6699 zcmcIp349dg75{(9CKEP82mzur;Sdm$&FU)NNk9V<4dy_jSPpF`n;{w4-3hz1A=Fx_ zrPV4{dsnPIu$3OxVm%;Iti7$hYfszS*50h z-^@Po;v%CeuwA z*j+;2C$etR@ctkch?oWVfRGOg*)8O5ng1bK{^20*5li>rBSJnZ6|f6sDLXPP-Lz%%s9;ol!d; zF=AGq(Pu<94aXxXBhlYyk3@_iE3(m@6t zby^9tJ00&clUEphG4|AS+EF96#z^@$k0|DwV|(SlEgCgb%(n}U4LWam zOJfIZGkj6UmSesohInJl7*J3YS?$<8$%~VAddT%b4lAQ!eNor*jw{bOR^(zw+xW8X zt02l{R-)e=QKCnzpNa<+97j#^J3l(PMPFUAg zDUCcxbbJwC((z?HuH!3sLdRF}H635aH&_dGd{er=g>Ne?FQ$3CTe*!mwwmeq4xVI{ zWp=u@4npeuy9GcuGvY0$1wzv9x}IpDLU;aT8rs zv&Bcp)wo8-)8g#U@N*r%z%vRfCoV4M@wn2XW(J@-iWtL>m63<3ISXjxE@x;gF8! zahR9TVlu|Z)K5c}&xx8Rr*&3@3JYofEVc8ybfOM4acUA(gwM7mm2;3+>id9z)e|CdP^e@ z)frZ*BN2_I`_0~TpKp%4l4JF}I=35fE4J+l-V?`e1s)sI8}cu`y`~(2ljy@jdxC`jZNDN$%BTb8oqA zI|R%aVrtVoS8b39tq%~|fM72`dw!^w*vfywMU-=xFq*#S0HX|ruy~8Z@_u7y)eGa#WHVhRu!{!p`9Gy_Y{MlC?a$rZYNR^sbXhF+=6r^ zzhE$DrPOqqi2-M@NVVpr_?%)0j6d)4j~#_`U*;}3eyxApwKT55N&I}Y3_S4oS0nc@ zeq*a(n+GB33Uciz;eQ|)+J}-*(?ck|pIiwpBCSFxX+1x{&A}AR#Y%Fu-fXVBm>k!+ zQh6-OHHlPY-odA=Y&w9z+I=YN3O9|SyaZQ;9z^LVG{qU!(pRA{iYXij@8$G>tF#tn zY%ipli%^Y|seUmU(cmhd?}^PSZ^9~EN=GUJy7vTmL_ib}C~9viyCW0=|;2+t0TqDrivM(g(+ zc{*Hr5Y?lYUc&L3oHKKwQE-^zPh~5DX*eAroPqQBrLzTRx=w}Yc!*ewD*-Vh>s|-e z&?$a&U=**yD`}><=S4uqda`3{IVO%yL#g%xsx++Au>KGc^!(kxVO}vgo&Kr?G({A} zLrwcI!*#MN>^r%R4bRDL2^L+Rsjwfj*r2ctI|iH<&(N5#lBJvGV}xn9lWGg4>*3C=2iP5_+z}E>tmH<|)3&u$#^Kk{l=H zrB4rmagkln9FS$R0}o>%k(KA7kkFF_K4~n@G)`e-6b%C7)bPV-l)(_w?LK$EcyP93 zI&Hg@Io{3v(!*`ui+RlMQ<&e4Sj%);$KLf!pbgA{s|o8hunA(C{nrtd8xh6L^i?31 zRP12E*oXl)Lw05%-kIHLI~WwpPq$eDc8!KjwI1fr<1zs+C@)GrcxB|JzT95g8X85D zY$UBNuw9t2$CSCusUD-b%xS_@)KyowT*T+9UG8+Bo9}XG_}qmqw?w!pbk9l`b3#-9RSk8t zK3NG~sjQU3=U}qYm2tRB{r+d7D>S iHH6uF@azkOPWCgE)t=)3`&?kqz&}qe;gA literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/GroupMatcher$And.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/GroupMatcher$And.class new file mode 100644 index 0000000000000000000000000000000000000000..a2c1d309d7821a17ed93004632e058c82a30fa1a GIT binary patch literal 2078 zcmbtVU2hXd6g^|FJ@&E*fncclDruqENzLLUB*9LAVDdppklG+3pfBU~mMpAy!+u17 zcmN6UAK;M(cm)X&0Tn-hUjz??-dQ_tqAC)bO4fMq-FxqzbLZTdPiyZ#0vN<472P<= zQC5+_Ajgmj1%p|1VR#2lVMMw|(_kjtPeJxaC;E8HUlqjXA?@>cY0_ zqAv7XD^1-OPNVML)eYA(^)Rq(y(t1?$@KL3)_=8ll|iYw4U=K#oaLC8!)D#|u86u# zp51eWO!JJ0mu)$&6OWToNmm>vhOi&(PPq76M`1o)^oJ zwrL7!06Fp;G*9Y+8+wL0ZOKX4wNb4nBpnSqagJdu=E!xVA@e60_HEG`4L?LUH0;L# z4d+qQZ~;>qrZJ;oRxTG&BT0S#_cv0I1IIA3y<~>+_b0X`%kdk-ooyXaF*Le~VmUh8 zk_CChWi7u2gjkb@RGPbK2LBNS9bpFw#jTV_f=P=;W74)s(}fLDHP^OHBd}bjDobZQ zGZ2;&#nEU?HJ1ZA&0;8JGYypKHt43?0(1>LBH8qS1WDFeB*_Et{sFcM_BsmKO{=^w zfCADeqL-fbw!*Ln`^cgMDK09)q_|qem_;!vy?dfed_dybDw3B!K%xIsMPdDKkbZ$w z>6Lt_r1GhcBkAM_&+%OPIcoV-jt^Ec`OLsO@B}K^eD*Ce&t&|;r|8Wq(x#ufn4EZt z?vA}<@iAvFzx|z8-a>nZt`bGbXLYgkijXLfT&5$cB|>+C@ae?oBw;S&5QcCX!>C~t zmoSETRPj5;@h2uAs5Lgd_h@eJQ^aFTMSYkh<~8ccLCVfj_7D!^M`R@HPH&#z2>Pfe z3Cj8jKSy18fTNU=q#8bs;TJ-7oN_dZYIzFeDU#1uKGxp#6fifJLdnAOtljkXVCJpQhUhUD)p8eh_`r#9!ir zzG7k^YJ%_n2mgl;2D!Vf4aAVJyzI=}nK^UL-E;5Hqi=@*rZE>qJH{kjk0OBacC=x_ zo!#ibO{AhoBO@UzA;%E8r|PP`z%ZA3SyGI;%r&*bD_q{%t;-hIs}$4S6=6Q*6^$bClA&;IgPW?mZU#ekO|=*T>n20& zv91eqN#m9!C|2}A;Gtt>O_n%ovmlfPk@y@(u!HV;MBHyPfheDJYs(@|`P z^5n@W|63N*K0rJ@^!5{BIhswHqLx!>ie#AaizM8%bSZ9nTYMOneZZWlii~4=BpK#? z;Qc4Cvutx^dzJ5a?jXZT=qK4_!!Z@HqPi~XJ^8Drw)ifOA&M!6J3j5&O00Wdj-e0z zG2B94!gLG?3`m%XVHUR;?w%j{BsuaSL*Zg~B@`H5U8n|q>cQ&uiG(!eniL| zT{IhL978waw4w{Hg9wDOM|%yh9|R`R-pY3bo*y8%$}(RN`iO9D&z-DI9u`8uLO2ml zgg#(wG7+AhkL30dPDZj{5ea~%`;eZ!53^5yf93WFDF~O#h=-aa3764>A!0C$EJYV+ zT*j!!FM|-p`Y?z~#F;p>n64m6_o%ti`5{~(9mBNWhu|N?C5#-QL&8aD9YnAF zM?F+X9QXnKQK+*?RB}vx@T}kLyf?G6JAdwOZUG!%y9^s^WlZ78H2P}mL}(n=dYPQ z<)rc(C%no@Hgi$f*=^YyJWo^L=gpsIddUN4;iu^@d*&IPF}8Ru*RNsK_kN@BYY?-* zb`}M;E^EwSn$aSoNRVi}k&0(7m3i0w@i1s>6tXIz>F< k3}(NG$EXadT47{il^MVa$2+{jD{(D0=dIuYuP!Qo0YGCV3IG5A literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/Matcher.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/Matcher.class new file mode 100644 index 0000000000000000000000000000000000000000..5726500400fe8357ab6d5b28be8a06beffd044e4 GIT binary patch literal 287 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 literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/Access.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/Access.class new file mode 100644 index 0000000000000000000000000000000000000000..913e26576503258c7df82cef449f6cf829376821 GIT binary patch literal 351 zcmXYsu}%Xq42GRj?%HdC!c)LPBu2IlRAK?7ZfuSlAg5d+CC-UwW8eXJD1@(M@n`+| z{oDTe{rU!gJGg3L)54{Kh08C+ct;9Ou5VryEJa9eM79c6Qyq9Pem1?_-zZQp llh*;dxx5N<0O4t6Q`uH7DwmaA<*IUBc{Wj!&!x`b;t%T?PX7P^ literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/AccessImplByAsm.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/AccessImplByAsm.class new file mode 100644 index 0000000000000000000000000000000000000000..7bacf4426eddea4b454c89a9e16efa224d4120ba GIT binary patch literal 1612 zcmb`GZBNrs6vzK}?bcBW+fYyhVc^p?mHO~TK@Bh=X@X!fC5qw2ZK-gvYf0Np{V4hc zeB&DvpJI$3zz=0S?P^_2GZW*M-ky7U`n&)0zqj9ieEA088m=lhqoRnjLr`!|rQy7a z3#dg=T|q;^MFp1_3f!{nAYfnyO>PNSgm)O^no-}TThrUK8A=<%wKqF$)Ak>5)1l1R zhG%hSoBJY~CrLRx5CmG=u)Ma;9bs~l>xbR89&mTh^j_$e=i7QG6pr5Jp><&UdJy^@ zE9_8uC6-~dkDS$)D?xjSVQAkDdszmlRwsEy5!~;XjC7hN8bq~R#`LfZ=M zy|}a$@-QkLp}=}}j~^v66%nipmpkz*h8x=cQ*IG}=$rILmqJwpD<)~ zX}jrA$RaSvvqH^yV$^p~rBhf0Z6IA^QS)?WwfGvL%qT_c$k88A8=sJCOnrd#j%GQO zXdHz^V-+&yh%k>b%_e%)s1PsusWFvNmRwDkI^7vP%QxObdP_kMSBR4fF-GeZBp8Nq z0`~;nL_U62B0;kJRedbUTc45t6LY-}Q%W%>24M18m>ZdxlLIhH7Up&)W-`U>CQZ#Y zKBDj%<7sc@VuX7IMScT0_DbrrzDb*R7c*$~;b)U(Pm!+$NR!fXWcF0L)MBz!`S%*- zEXhV6vz!`8UqiAFO9`ivaw<7wfj0XImro literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/AccessImplByJDKBehavior.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/AccessImplByJDKBehavior.class new file mode 100644 index 0000000000000000000000000000000000000000..abc325d39f0ae32b9196f834469467d4c9ca1480 GIT binary patch literal 948 zcmb`F&u-H|5XQevLQGvl`CCG1Xz3{h#7bO?kdgpWXu_qaf(j1n&8FGP-bLPZ1nBO!z>TQlRC-_CrV??1kN1Mm<#A#R`*;v8;<*gz}5tpJ-0%}3g3 z|CpiO8J>ul;E6EDJX4cINzX^hPwjYb_mH8{w`0YyHq=JF$kSM5FGZYC+E)pG!Sn!is%AGLd*uLk|W{T%tCp;BiPF2R8&vNN=3U{Sc&JEIc zN$>e>h+I5YwUU+Q{LwI2GOsZ$PP-L^82 zy?>#N>{w5<%I3;5w3e*`4SuZrX*&I3Qe!~N(HRt)w*M?UBO7YS3~)~ayz3fvpQy_?tbZ0L-mhz%)G58#Q;$@Q-RuAW literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/AccessImplByJDKClass.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/AccessImplByJDKClass.class new file mode 100644 index 0000000000000000000000000000000000000000..0d31afb27fb85f7ba6c5868be5fc805b3faa9049 GIT binary patch literal 889 zcmb_aTTc@~6#k}Lx@}p@)#3#eQAt}8CgBxA0ti~D#-yeX#+TXcScdG*lHFM%{3c&a z6cZo(0sbiCnQcpA<;ge?bIyEo&iT&m=dbTS0BmBdihH5@th zbQUo4luDl;g)a$1qNL#KG)DZuXy= N^nY`s|DBxW?r$lx#Lxf$ literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ArrayClassStructure.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ArrayClassStructure.class new file mode 100644 index 0000000000000000000000000000000000000000..2701bcea5d6e5784989b13c58c30f01c31551cde GIT binary patch literal 993 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 N2J587U?Wznd;;0th0Oo} literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ClassStructureFactory.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ClassStructureFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..35280ab14314d9e7c06a0e5f11939b77d6ea08ca GIT binary patch literal 2042 zcmb_d+fox*6kR6?HVHu?Ab3G-uLA+;@h%2YK&S$OK4eNueXvfNHa64gPW45Nmj8q^ z58kT$06)rdo$fG`1hvXC59vNTgFWI%nk%L%BEL0q+?fQRT|sR z>qa2mt*ZCZFg@QgqR@7Xx(v-{mTv^1ADLl9^Rgp@pt8GNm1gMqO)?raeM^Q`=dr+p z$?~>*E)7Szwd8JTst0iyu+Mblt5*WUdjbfIb*9~H?4~~2?L1#xAXc_w*IcRc6L_?T zvGVB=X}<+-d&ZjEh(Zc!$$F`qRoRnUmfx$OeWr{8W_Bxfs+H zB%6OEZmrJ$Gmrf^Ah4XYqaN#`|JT0yQ%ME3^lDR&0^6JaWS&jyKk0o zlAnk{ennWZ>R;umk82hvp9Ss=zJ;e0++{J2L-bOY zSCEd+vY(K8NPzSXjp;Uki8g>N4wD0Ll)nU0SthtU#$O7@W9SnERM0Q@HB0k-_!BY@ zi_`DWx3l>Vv_k*%%m-vM5Iad^P35ik2dio+i(kIK0mD0Vc0gjFf`JDV*k8 ztN5J7)!huyU26;w{ZK(Vpr&sF<_0veu}8R@;Vy;q-vDC7DBb`7 literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ClassStructureImplByAsm$1.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ClassStructureImplByAsm$1.class new file mode 100644 index 0000000000000000000000000000000000000000..b3124e8d1506e5ff4cb434833b8f19df99d2c479 GIT binary patch literal 1527 zcmb_cTTc@~6#k}NT3VKi$f77JYSmtZ<>n<~NRVjK2$)#p!MEu$w2Qm5xI0_xpYYwE zVIpdL@CW##jAy2eVhD*EHraE|%$zyb@67ifU%vrZ#Qg&DxS`2SO>Px2h;k7XREwzL zb{?~N%rQ6}9+Z5kL@ar*9`GdD;-O#|-`M9J?gm`8+=hyM*;-*3*2>)TM3OugdknRn zQmXvG^&;t|aV(^Axr##HbJq;3lkJv>>2^-F{iHO{u({zyq00lm$(!8W?}To`qmn zgS8&*QZYw2d?~iluqong-V986Baa6=JofdvziH_LG1zq}MQqX)w0w4&Ih7WuUYRa6 zfz>Ilj-UAIw>yRh<&$zgiiG1jb(5_$&?!VI!KnwMg0FMw$+;eK2u2OXy;qz3pr3cK z5v8#wp7^>l(*Z4AM-F^a`JmTWBJ zP9Aq{+`}Rv?-YSoT41;w#Vt2#?h8-75lxpTVGpJ|x~@^o@bnZNG8Fdw?wT1thShTA zzkt!ZPbjd;rfDUe0zcq1Z8Uyi7|Fy;{ZfDIU(j$93UlIh%C)d`6d~(v9yjPjNKdRB zLB${Ym6r?^^P2q4L&1_2Z&Er zYlmRf*+XQiQ`RA})#=Z$J{bLRqB+tB%it`@Gsx;2n4n*OlNv+%oTPI&PZk-baDk}y z(CvG0YSoX(e8Iqb*d%2g>l1R?K^EGN^$R}f`&&;pJ{9(=nEciLc8;t%j0XA~J9 z`~m(Z$MM`WK+(bS&~}pCdvfxf^W~iHdDRO$9p<&M55DXnz(-AA7 zofqC3&s${a%DM)(*12cOeQa!y6dAN7#}QtXu%PW~Ewf6F5o1jfHf4A#q+AwL=^BI} z+=L&Ngtz1b!gIJ45m@1N#CDT!bKT-jL8ls+PJz7JasfBqFY{8wUcop+4`p)VxtiY; zMnInG!mc4of$2KFf(eF}oLO+VEGxs-Ia1H^4|^{}Fm(>sYK=2FE%V8_p=XFiQ&zI~ zjLsUCM5y!&j$yezQC=27(cMsRUxS7=4efZK;UOL=c&yUi;cJe6p2V6x307;bN%YfKrj3B$b11iMEwC8vR#cshiLkUMz$}lv{4SxyiW-AQH(A^0NX+<^U%Y5Bv@DxZy=7> zN--|u3dOlfPd0=7LPEi{&UuR7OHm~go$gY;Xv`d-MF#kngjRNlLHo$3fh^bQd?WJj X$Ia+EfLqbMB%OQcP{~WBEB*ceOT6R)P-ad$`$r0sI>#zbF8 z6Gh^M58y)?|7n-RfC?9FGt>EJzJC9Ce*XIY1Hd8{OVDsb$1rAf%;2VuTez)ORhY-FlTmenVcl{9&*ZMOxy{Y(UC)fT-?4*z(+NUh_G9Uq9*>=#2+b%C`%c`a z?G=|tQTte2^LE_F2ah6enTVUxmvM{XWi3?2hT*@JmE`5 zrYd9gcF+$U@l>h|PW_{z=2a*u<*UBq29fl;>mu$29SwB@CFll5&@eEE`x+h?n1^X# z0S^s~VVr6^!_uxUG1SlI8-$HvEUAGc51YL(*h>rb`PmHTZZ?K|O?8FN9Y;je%nQ`c ze#TvA1!30=l0w=Ow#g$e?fqARcSJ~8oc=F>;X+r$Ykn-kx16kGn5fm?q&1bqhVBqb zs;Y*87mLb^Fk3JFqVQCYVwSGQVY)(DxvVOSR(TpDFhEYws)ZcAfZmw<3fB0B+-H(< zxJdI5VZh#Fl-83e3T0GCB7DL|mzSzZI#XOt`qCe$G`c-cnZ_W*$mB> LXy}B}=u6LUvSQPW literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ClassStructureImplByAsm$4$1.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ClassStructureImplByAsm$4$1.class new file mode 100644 index 0000000000000000000000000000000000000000..943249a4731a6a6c4b47be361103ac68baa31e60 GIT binary patch literal 1915 zcmb_dSyK~15dJ0!tb_$3N<4@N8ZZZ83F1ZY;IvXEp)4q@;%&0o3X6MCyBmZ*Vfo-u z`p&ynfuaxo0DqKa&jyf7pLVNurgygI>+Y|+XMX+u@e{xpp0**1lo--cv?J4oE@Yz^ zMotVPQ79N~M;>G1?`;X=67DbzY;YsVEz9<}r`y)j*19%haMxY*oQCQ(9L;5jmDczM zR~nvfC?(zX3Jk5@s_rK967Dj{Ma$A0f0xi+D5&<$j4Zv(5Sg)S8ben}x3o&b ztZL2@uNt({U9wefEOSQ}-}{RZ!34weU_DFbDelnbC<7~!D;v72dsBy5VwgxZJvX>j zS14DyRWGchOSV&2?CP4Pdatyq!d+AOyJ=Zq*bd<){+Dlt*#JTzE0LP!s)97Xc#b;C zAc=r{PT2}W$D+s8mu0@bPib_~ZaAtouM5%>|EP=+0ZY`(S*l^X6n|OsR_&UMd$=#7 z6X#{f=#bHk2Qns5kT5CZAs)$ij3*MNWK3g5!mNxr%**ISf=V~g%1!1O`c7xWk7qv_ z4CO#gQZtHH(M6RS4NREtXGDNwmYAzjeqeRhmpeIk^bWfxM$N>@6dHkei z2=iKvq30;w3;qF7NUxxuE{k@$JVLRUXcmBG>Kw5`Z#OQ0xF)GW-w~Q)nd~lDCbx@F zCh-m7FTQ3Ejjf~!_6Bj1`we zAd=lf%U87SL8`FaHaclJl>3fzA-u?B$#C0e+7N~?97hWoev1fuhd6tWUiJY)?33?E zhJfQ_^cwnnmvV5C$w677 z;O?&J9q5+l+j=V$j^5y*RkM9P2>q57w#XdeY#n#k8%^hNdnIU;33y4kB3x#8nU58@ zP+>@|db>8mkRe?AMXO=j{x&xqvJ4xZ#hnWGh3t2YDd{4^W}Mr|Es~3x^iW7XrzOer z1*6XQcqdkd2tt}O$z9hAc_=)0yWO-;#*229>0L5*(g|ACb)<4??otdMm6vIg16!i% za(SQ(uX?R#mJzHRC}Xy}_wi-a3! zxQHPQ87wf2{8h|~@AI~l4QVyTyO>+d%}KIF4G-{8!xdbm+a46%mNg z^NAl*l-)J@AFxbD>WW%P`ZBl#N=ejOMuJ}Y9~4VpkSHD^`H6Z7j8K`TIbd%wO6{@E zEL^6ReAEbylC4w>jY+IJt&mvRBcyf?(PtDtBXNZEPH|W%9ismm21*}kJQ<;1lsjSX z(9hmuf_?ahCEI1`C)+qCXcyOLl}2^PlBL!pSrWLOc|!a*y8JrXX~*a*euXNDdfkv9 nG@(l{MeP(>Zc^C+yoKA*x*YCAW7AY#pl_J42C0@$x>NlIo;W0g literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ClassStructureImplByAsm$5$1$1.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ClassStructureImplByAsm$5$1$1.class new file mode 100644 index 0000000000000000000000000000000000000000..828f7320f20dfa8b0335f5f78e7a1b885cb83dbe GIT binary patch literal 4888 zcmb_gTW}j!8UBtWYi)VsxNhxKjuW?uQ)D@gY}2G63TbUON!{2^QU|w53S}iPwo*y! zuGX&8(n8zxelHXV&?|(tJTPS@j#C1G;WEQ?$^$U)1azju3_P^Vz!OiD@86YIcBD|o zm1cC#?tjkt|L?ya>Fxjg=sbWve7_DINXsxGgDJxoWSER#6Q&}_;F!GLt|1#i9dh!L z7qV54Y22Z~mbsvzuMXSb)ZuE($ntE28}E!@4##V;J%R?@CFHw>@H!%}M6eDI3eSf$Jgngng-FhHrmTrW$EQt&%ZDv{GGV2TnQ7-vGnFt3 zxrD4F71kN~yyX~9#>xw2Fl!VFV~#zOc4lm|pwKvc%$PM2GfpO(7|s+N9;qA4Oy&() zR~WxwdFOE2$|a0!CS|0I#If02qG04FQr27|ZP}*BCTBS5Dbr3A7R4l%OHJ;gklI-z z+c9Al(h5zUjI5ELOb}WoKe@P`H*&-fk*!8LZ5D`E4JkAT!JJE*)1nrMmmaOeBJ50M z3LSkK9#znX@_EyCahUYaV+seWpvh2fIy-Q@zmV(L+R;nU;hmX$#@VItgILwM4^{B- zh#LdrnL@^~>}0tO$|*w?EY&%#5E`^5XzJC&nY=kVlS`TQAtRL~rD@no8`*Kg&d7U_ z7!u1Wj8$7n*NB0+9)-YMufmldsWRi+VO00qwsHKBbt5C$b@3?U#-%B2i5;!L#Z8XR z3bvpngdvl_=c^FCC=14-q>nF@Mrm1YFfuC|t;6$%pJ_YGy(5XSYRoaxw~rXp?lCvr z_h@)rp?%VH4j497bLgE)x!e@%yg&x|-BL!ZS`M!zqMJ+>iVCGgVGjjYp;$2gZC?f> zbXKCh-!EzkJ7VRAJknXg>7_%98KcnlzsjS+_0`cJ|GInfeRTi4kBaLjGZ?3WF)KGmRDrIj%|@>rjd8&(^;#)O6*k_ z9Z%p%9iPNCIyR$Q#}*k9=+V)OJ{{Zfl!m8uJcDO-T!l}tBA2>~n~2g{WZ$hiV(8TI z9KOP!*6~$5&mQD%UQ+*cd<|dM@eQ2R@lAY7$G7oPY6 z;*^f>iR450jELFR!obcmtj6K`UW@ z5!Xoz>R{1qFTV;bYZD41Rh6o+zpDI12e+t}?j#EJZmxKGDCA;8Y@nl+t;(qrnqZ>~_XDglw*l&|x+-(nOlTde3yGKRZ?#so`A z^HSFP-5X)DlhsCZtYSxuu_KleZgEQm8t*gi4T=ugzoIg9(MTm)k2O2}NHtlLaU+e@ zZ%@wT%)BG^V@qBeW2>+18y?tK#qedB^)9L%eLd98uIe=~xztC+i*kjAA2#opF|t%! zqOR1Q6)2N}BQK8rnGf>s747gXZljS(85Sz)W z@F=xY_eYwC)W1p=k(b`xY9zms%B~azT)`idoA`TILzDDsJ~c^ChC-ar0dzGsN|OgT zv(LLTTfIB8+q*Mw0^A$scRN1ClRNnI7=ozfyd&N<4;7Dw<`IZTYvvJ*H;3mDibu71 z)WqAm7Z8rePa|*^B-F;wq3-YkBJ-&KAx{U8C3W(9g30xhxcM{g!VU*9MD%MpV}+bajn(pWhY=ZmVgoX%4-LwcX7% zeLKRNqv12q-@>W@Zaz_?Ui@-2y57+{Q^CI8?_w%~K6%lY3-^8}PO)cabJcBhS(NGfhrYG$3;S#BfHav@{2oAc|Y7*C} z-$7Tu#~Sqqw5vb5!du9=o#8h|D+!F=A`H==TCE|Gce)~uXGxL>=xIBN*b-r9(dx+? zRo$mtWcA&i2jg9B3s_r%(SjPn_!C0v&xoqOV7+>mx3KqohegqdaokKfl;S(A2e&W_ z1YQpg;|L)a;YrHywpoPt0{;*aGaZaCpzR#i9X^NkhY2&ZfOby75@K$+g5N8bP)?(U zo+6=s0UL^z+}P!5QOb(-636Oq#Q%3}Q19a^^#QI?|GVpOxS#(5&AO0D literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ClassStructureImplByAsm$5$1.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ClassStructureImplByAsm$5$1.class new file mode 100644 index 0000000000000000000000000000000000000000..c308041fa2f7694e643e2613ab8df403353b23a9 GIT binary patch literal 1786 zcmb_cZBG+H5Pp`HUMYvvA}9iiTD2`NcLnhcBvGPClL9el6ZO+}yJ-*arQTgD{uDp> z6EygNfG_a}_@j)oZ6%c#{n94gnVa36XJ+=9`T6VX4*&~T)sP#&AZFAun}CkFIOY>D zV5*P2hJ^?;Ab~g*HQds$q~SJ$UT|IMuh~2ZWWX@irIqqK^R*Ew}MwZ7vJ z4-7?`#SUkm)AS%_#N?X>SIT0hi=S&X?r+hKbcO6D_h0txONLK9o(a@>h5t51SD>f% zU*QDCXG@r-iLBF*?n@>W6#?6*TK8=VviwhVhsWj!2_DQ>l3Gzk#geh8;?+-NiV?4i(G1;%QQDTp|%pcbSDCZeMaH20}QY)7-ipEF|4+I9>!qe5+SP?OkAc2 zRemO}bYeAel{A&1iEBusAJ<8bfQ`~}gVa9UM22J(L&y>!D3J*1?cZQW#@q5Yw&(KV literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ClassStructureImplByAsm$5.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ClassStructureImplByAsm$5.class new file mode 100644 index 0000000000000000000000000000000000000000..cfd550b973fe068feb57a33a75e51bb32747d4e5 GIT binary patch literal 1895 zcmcIlZBNrs6n^eDRwxzbKop#cI&m*bc@h0ELIQ|}Si}TELi}`Fn(Z!KyR;oJe}MnR zL=#O^j3oX5e~=%I=XRSfECym`oA%y&dhYX_bMJFczkdJx1;890D7Zav5H&$snPC>*`UL#tx@dJy^zD{PQC!rAH!*K2iWrMVo`N(8(pToEoYJj?YI zIlse@SoQX7hG9dv_R~hqwEb;vI%G*3p2eLV?h83?8xt}`hRt4vkzJq^HJPE1d`?4> z=ki9C@AKAL86pVDCvDmlzArrg=OR%kscyfqKO=9}JJIi+@Ll|;G*(VVQCgzl2DU`m z<#Hn#o_9sxOQz8dy2IVFzG+r%ORkQ(c4*o4PjV3y(K8Im*ji{@iHT>NkAB3DM; z@*2KnKN3<^nZKxfTJAQ6>+nWE*H0 z!mx%E<{3tQ>1EmXc~gppl-k3Sm|e)uO0s(z7I0s~MO>n@-ctgG{ONe@UF)PA$zZ$U zdk3w9`{ZW{U& zaDjUAQX@1fwNf$kO=4APhQ!JoBe8pgKBMp+v12563u&czg#J$$D88ld@d$lLM#5gB zpS{5Z`}P}4rp?k%wsA~Q6qjk1Ms3TIq23j;#BeqBkod2)`E{~W#ON!0ger-;(~uzK m&?cCqeu6C5>D>anft%61EN(^Lrs#c+o-|<%QY)`ytN8)s-6VYg literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ClassStructureImplByAsm.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ClassStructureImplByAsm.class new file mode 100644 index 0000000000000000000000000000000000000000..66428be7384a8288a588ea2f98b7076330f70711 GIT binary patch literal 10032 zcmcgy33y!BRsPRtMo%6+Es-tTa-3LBylAt>dmPDjEXlF0Saxj7OB7S+(`YP@Gn!Fm zMqUz9pe-e#P?iEAPzWteTp)nbR+3ZEG(cHepd^&7l(3XSDQg>=HWZWapZng-ypcwc zQ1w;*{O)6?%?wl{yL21?%?Gx1b?F& z{#L>Mo%a6T!WVS|7zjiEc|;I zEqJj4|Do-F>f~qSw*Ref z8)0+^NRCJtrzD_{GE0JC2}wEeiKR$iv7|x=OZ0V^(veC_>lxnH5q&AErc(D@4 z-*GY0YvxE^WmMOlj5&k4WQ|#p8n_sXW-rGEB2H#FVgR`dxSr75r7L5Zm_BTgbd;0!pCiQPU{z*x#8YklMX&SF)kCqYpmiQtyu}3d z;QUw5hvRvXzb2l{#?t4VXsnpGOrD2#{C}u22579PH=fBZ5|t|Ebxtyw$~tO5r>>67 zN^HYG?1FPCo=WF+QDEd<-)=^_rqe=$QC`aT#FO#tK0&0(_1JhS(vut+&64PtGu$zY z8#kX31iMp%^pu+3crtcuba)_^KIIG~IKxO1brNTsbX>>YWH5UnPNzRQ560&*mY(5} zMAy~M%rNP%HBrDvv7o*rBZBbVSE8{I)mp}qn+23IgZ4 z7$eTduec#du&=3kLEPj+*b+Aso{XJW_bk|JG?k2wrqi)xHsWMc!|`aO(=D~;=<+eOjjzE&1BQgh*|5#VL@3_^ZkOVzN`~{;HWd= zX=&+DEPFDRNsXqXvCfQZ1A=DHHcT}4KsV1KWjpO{SE4Lg%~N9rt*25s94_S>W{2-b z$>S&)yWEq^WSwM`4BuCB+d>W%BN;O0o-q`gtNi?o;J|`3Jp*ni>WpScx@V(?yHgj^ zsmtmq#2Zi_sZu@q6uV?39UqQoY@Y{$ z>BkwVWO~EI#gbc@tT5&9sg3-tZ#w7myJCCF$7_;MS0o3|3zwGI%ODihJSDF$BB}NH zlg59-TV5QO7`i>HKQnFZBApdX!z?^0cwj#KE)q^JzZ&6ze|ytx>DrliCZ0{DJ2Z+1 zqL&1XbFHL285!;=w##LVe@E5w>3VXKnx)Z&sb(|#9rq|dOrz?H29%C{-y z>BXhIL>TnE(QnB)*=<(}Mi!TX*|g`6E){#C2`|B9!ohG8?lZZ?!MG-htBb{!&+9g8 zR1w^w1?jBSrl4Ww`+G;COiD90uHi#A-iM#F@fd#4#{D>F$r@W4Wvz__F6-lyw%jJS zTe8lU^|HaneduR?`mLuAc{bK;Lw6-)pDlT^K98kdS#c~p_15b%bn6LII{H3!CFq(P&Rpk^CHrmZ#G^KT0FN$^*SuHrwxvtDZ8;!!^RB9( z@O-w<Xof{xV`tyd#`6vX=3ran<#-~|n2zy|D%qGE zO(ZtE+x9;ENJqk4uxZbdgSH%!!#TXh!A$zBiLfm_D#m;8s3k{KoV_e}3XZ5t1RH1J z>|tGK-f88wm$B_v@Qj-5QNbN^>%^zq!p)oD@Z39RYV)8o98XNM;~d9&iE(ef-1pBG zt~Lax7lL*c`!3W@MIN6^qs&p}jOZODZ#RdBc?S_OM4sj?C%w8doATW>G?c!JY1Rvf z3g&4>0pu!|5EgD(>0&FUU*jHhqD=OAfuSj$d$X%Gm@oA)@H*UdY}y6z@x{#?<_(Vx1jDZ~j+$Mw@@ay3;2;b+dqvlmz|ltRM0o$^F1Iiw4gWJU)VR~SoJ zZ#DJw%%p&*4=skoji}ZPlYJt~drH^Ud;C#D3*wpjSXkbj$6>@p3A;Bq1#cv0_b-gI zxk0PlE-$L>-2>i8p^_O*)?su%5~J%C=_t2~Ix4#P%FX+P<4p;6%pI%x+^;9DnR#(# zX*OkQ-{PCXGT!eBcKfy9A)1NWZ!CFg>}VpDiJcgY$Fd1>x6*?&?e19RQ#(Bx(c>>W z>7<~^kKXeQe^HZ@hDHi!kj_+-O--|-=DCHE|8!7%S&`>tbyK&WLzj-6L-JeT0e*!9 zztYuddB9$smJ+6AE^At5vTRprhQiN=1MCM79z>cWeV;*=khP~Y z2QbQhkTaLqvKC@baZGVearC!LVo6KO1j5%*IS#vJ3ROB+J&qdoYqfvVIO^D6s{Li- zsAqq<_E(H!CHvCfI*EpHl()2vV^s@Z+&qre1(I7x3h*@|{4#1}7&pt?uu`Dv(%3(xN2DH_gD&ORpBx6c7DfIMs`o(mj0HHqI?3kPV(EO z+ig6m?G)Dbx76L%Mmle=yKMsNrm()hbpjhEv2l!h15nY{kwQgNBRp0mfHr=qEr@ux zM^6pEQGYic;ldR(n7843xI3V^zei6uM=JhmA?8(2!wOzQu4L`c|q9WZPZo zL4G^egb=XzGws((fG<^3SGZAi-b%qXJ%L;6ny1jxKZ(}5wh3$^7n>%qc><}3JlxZYr1?t;wAxE0?|P6SGWg}`lxEWC?Lm@9i!9Og)=Smq&D zymeb$2+U)~6AYvDUh66WIO)R!w0?e@kl_ zvFr>DPGHw0LX)^-jQ+6usI)x=dkS~<(=*z~rqIzJ`Z${V%ar@R{$Ok0B=#KpF!oX| z`<_6x+q>%p>>q1Uhw7X}*Ce{zgVGRu3WHNP(BBZ$y_2}RJ*2A}LK8T6wjtDB-VnTw zLk;C)?IA9(>w3x!qE=#Yk%byUeb3>ZGUzrjyL87jRJB{~Uh5MwM!R|lkK;)kHtkDf z_(^;U+P;L(n%33U09MjAHc%29VX^Y9l{RW^3oUUgw#qiN%TAn-T{tIq;JmaWD;;=9 z_Tn+whxf`|cw7$ReQckU{dm80;RWGOE;#oYIfR$keqMTwY7SHEk1^=H8$U#gdq0}+ z!*~ySS%$42;gf!Vm-C8y89!=lqYcmE$M6$W;0f;gN&FOTOzmY0ENjgT)LD4^23jrr z^c&cXkcB5K{0!$fp~fT@e)d8B|0Y9MK<{e!RP+73@7*rw-q z1O=Lx4`9Ql`p~xa@|K2jnnF8&;$YDT+8V6qa5R9k?+nScH$K;C;#*XRt}mGVa`mJsfw*IU|i7|_JJtif0o|k+Jc{j zIs@YPbP$i00O5-FBc$V_B|+7f2KB)=1vOq0)XLJJZp;d5f>cfB4=cZbS5IRt5byyh z2$)wxo`Cx(B|TZz=HmYehF_lCC)w0)oIqdgBYf~MC;+aeks)BADo}w&wj0o7Yf`6wOWlS)UUUDdymqbE{y2Xj_TK#s{|Ca}E2{ti literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ClassStructureImplByJDK$1.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ClassStructureImplByJDK$1.class new file mode 100644 index 0000000000000000000000000000000000000000..1d60a17f0791873c4f2c8dccfc9b78980619d9fb GIT binary patch literal 1893 zcmcIlYflqF6g>llwd*34moHSrs%=r0;@dVP@-j#f69_T!i_`7cF4^wlJ`nuMAJRmz z(S#r1k22ob-3o#RKCEqab{=QWJ$LTCvp;@*+XFC(avEt|Q=wv1#R#se$l`|V-IUEO z6*=Tpf)o^tDY(th?Key>JHfD2F`TB(Ewjq2TwmX8>K?aiRcA{#99QUpZ(4ej`$j{! zy63xr;RiH5V{y-0X%82g8`kvp^V!7`5tmKd^rskJ<`QMjuQ8-%oSI_;$Y zis|`;Nw1i7o6DnPcy$C&PC!#>ip&hOsV#2T_2ufiFr;;LZp#oGzUkPWf;$X5C$LxH zAGV(fzkJA-grrKb>WUM%hL|^H1c(2TQRDI`DdcmuVL6^@*O!FfaB2$1HJpZ~p$EE# z2^1AfYPgGg8t&tPhKG2h;IW1$C}|kP5G8tod7dpY^>Wr~?^ly9on)$60EJA{6>CKqJD3Y;;e{ila5jHBa1f$8g~@QN>RSox4c2 z(A7eB3(7}YKghlpvTM=4nEhOcIiHy&?h7%uP6)}}RoKO;!z7W!h@>kfxk%s?ZMj5k ZL^zDgA@LPl4cA7f?Wad2RGQxO`vp^LC1L;o literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ClassStructureImplByJDK$2.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ClassStructureImplByJDK$2.class new file mode 100644 index 0000000000000000000000000000000000000000..c76da0542c445531e1d03478c555e7beb1ae9fec GIT binary patch literal 2750 zcmcImU2_vv7=BK&>9*T#8!7>z)Iw-ANh@1JL8UQB(}JZ5MNa|)uEQKMTrhVUhoE^hEG9#U5{J)bcBx?_jzIWEIk2(Y-l zuDQl-%g}wTun!O{)(yYrR2hzUfR=(WLJe1p8s9P$z;Z3sE1EZo(NP2Z%Qk#U*f+XDn%-JG5p+X<4mxol%0mF8<$Oy`zQY6 zES?cbNQY&?)-A^~?e#EiWL!}(gt&@B_=Mq&{Zzf=x_n#YtBOTjm9eCvh?0tHSe8*x zaUGwk_zYzgEBIW-s)`%9sp1%plZtdvM8>lW=~vrpGR-i!AA<0n;pDBCr!_G+(h0J6 zu0m3RWLT-W&R3zxEWO&N0}CZXG$j;G;ks^kB*fDs#b0(=F%z*!N%{q6?P;(sTVOdsGlwr@zg4$)rlDoJf3 z)v{ny1kzuS%C;~RrU;QU+L@fa6x!uwM(}d)we!+kw|kT%_77FTvBV7}WRPx`hFy26 z=I!934Ub#0$y@NL5Zrfd7a&g3x5prTyRdj%h!54G^c=!4NP?)AM}+=>l9{{@mU)QC z57dg_FqJ)o0e(Y*$|E6)-fvQi@PRe@G7vIEV`PhsknJ8C^L{~e?IEOM=0~s{#2%oh zH1#MSJufAs(eE%em5{O*Vv}O@SZoLKPw0){#y1lC{@L$)Q~F*uMQNQfxr6?Dw5$|3 zokTCy|Df_uOyDn^qxUQx<0hV3c@wSY27!mgmPCZ3jMv5`2B2BmmGVyr=PKJa* xqxpj3Smps#5kfofY6xh$G({MRdfufnGGd6XW7Py_U)-@p1uC-?vW literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ClassStructureImplByJDK.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ClassStructureImplByJDK.class new file mode 100644 index 0000000000000000000000000000000000000000..fa9a0519c1a1b99eeb54436b3f74270e73992382 GIT binary patch literal 8172 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 literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/EmptyClassStructure.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/EmptyClassStructure.class new file mode 100644 index 0000000000000000000000000000000000000000..a434e059a8943a74778fd863c16a6902ff943ea4 GIT binary patch literal 2326 zcmb_eOH&g;5bjArHi?m!JVZc)4@?kQ1)l{)6{JLCrSK36r94eGLo#t6soe=>E?&HN z@#4jcKSEDfQsocuM_KkPVcE??QYj9ZnVsqH>u3OpbXUE?Mf>jc8-%r1dQ)+#XqLwRnp?YdE9_6{xTxHFo! zG^+1Xo6GO!W<*rDLm-#eEJLL_FVZ4as|SYaP_tCD-m98rGqomtL)SXGnMGw=)ZlufLj+LUbc<{A9V@+{PNl%4NZS4M+!W4v3cE*eB%tG1 z+w0c7b5k_qDcWh&+S8fB;|0D+PQV_#dj~T$epTr+V7r!pzO2wJrJg{&G z8_47755^l=2W%pu41o;W`Jm*YlHG5Oq;L&oH0PddJI<&bx|)sv2|T{-5F k<2Iyml=)r3KQJ;k@gs=tg%3e#4eU1`QQRxajGN|#fAjw>1ONa4 literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/FamilyClassStructure$1.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/FamilyClassStructure$1.class new file mode 100644 index 0000000000000000000000000000000000000000..9dbef0456cd579702051da5e988567929d8e4833 GIT binary patch literal 2316 zcmcIlTT>KA6#g1k24)9YkV}+6)Sy`wbwrbx1SBdK!7P|$5uy)P_0Ep$!0gP{%&dVt z=3nF&>9~y>IxXDMFs)%m zpe-sp;mB2idwI*Rn9_BMvM9~3B{wC9s%1KC`1M0;y@gWD9iV9nW5>Rf=}7EQ>BBJ$c`f?urZ? zHLnX(DmVdS!Sn1O25EDeKQ>4s}Y;nK9vb$1v{e3fa67W@I+d6 zGgAUHN5ax1JXE!ao8acifYPc)# z?Hk0Jm)~sNwWG=Zg(bz4Uhr#yWzRV(*-syK?XIY-EMkf58@P|p4Sa!|z@4Migy!tzksA0C1p~_%GVlN^ z23GNvhKB~;#t;k7QG6Umz{t43=e}F%9liRV_B0YTuEKdIRB3v053Z63v^%?~`(A5dLb2ZM1OPb(x!WBQexz-*tJZc$FrUp`l$v zg@g5q^=PmOHf#KbU8-j(u@CGIc;6Dv@nJiAmFXO{^6Nz(1o}CeLJR+Zo*Vla zBKHg}KXTTB0k&<_0Xp#(+x|ogr!mMG^+c$ZcU_K9SKqYIP_AoUmeG+fm1-XF;Q2|XU1r&&eeXl91)atS#wxk=G^BDak$ ph4>)H$^#YZ-p4pjQF1B9sq`=7O1#fxTxxBc?HPVLwKDAa`xlM$g`5BY literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/FamilyClassStructure$2.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/FamilyClassStructure$2.class new file mode 100644 index 0000000000000000000000000000000000000000..d0d7e06c4ee69266c8c24f2ad22e1676ff199900 GIT binary patch literal 2232 zcmcIlZBrXn6n<_0oCZKl=;(Esk%`-A%vt8?p3}71NUSu(y z!2qskct3+KT*=@vt}1G#4jun)7C>q9R-QdB`n#neoO8a~$WiG~{j-BHa6 z$1e%oE?R!wl&({e6=`m4*3D3Q)r!AmT7F=g&B$@hx{R!v9hhMhG_9yf_L8hS?)JPZ z!?4_D&Qj}~<2g}5pp-j4wfP4E>3P3u3-lKq&t7fTD|T>SR$OvU6@5#(4`kq|b&Hu+ z!3pRqo@WQKlQx&dV{>VInz8CCR7cr%n{;F#moIL}O_?B8wj+v+uEj8wn~jzmdsqo9 z9Lbvlh>s;ER=mg#)}&>33J9D|_B+`GqyK=j!<|TOH`-`^-YGhF9F7-=&dG8lttTbf zh_j~QriOWe-mKMY3 zz{q}i@)|v{tIIO1u~2o~!m^GP+-3rF+(A)C35LMUqjZMON@G@atm3YYdl=L4DL&Kj zCdSxyj-vap*vF>@^3PY+$`Y$?9|gwF2C~0i;T@8Z9|#P_%(yo0*8=~`q}MDz-^`13 zN`bDN>S|-_c9g_)NQ>YlJ=3nzxC?hAjdjuE?D;#~A=r+CGFnZBtM(S-q{T<l}v@DU9L_SCo&nF&I@!+@mfr z$T`iut!L=^;wjQa;|GWxoY+BkX=)dmz&AKgqDSBt^sY``*hMCVhidK<*oDr;w}1bZ zoI1IS*Z79L#JS1uXgeKyZqPqq3Oz6}flIi^2Y8k*cmY@O7&BPoJ00R0HgP?U&fvKT zV)7Q=CO(fzosB8R(u%kT4V=R}MC4s+);TAfaZ=~W8A19_3~HFr@ZRq*{(znk$Z<1; ze0G6A83|ByO7H_t7(3`!ULV9;S)f46`XuQzIa3@Hg%=o;I%hIEwRf508~kS|mF3Le EKa*i=0ssI2 literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/FamilyClassStructure$3.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/FamilyClassStructure$3.class new file mode 100644 index 0000000000000000000000000000000000000000..b3af529be903edff92ae99c5da3a292417d87895 GIT binary patch literal 2283 zcmcIle^VP(6g@AbEG*k51w>I)Y-3GA+r?tl7K+jU4K+|Tv>oe=`m%W?i<@0$cT>SX z{T6-#|J507i=FBCr{g#9t2pD2^ERP0!bpcfn7qC3zPsn$d*0dme*5d^#{e$iWPeF=e6$Z)xk|0N%zs19%sg^l;h0^Z-oE=(Q_)ZPw(=?-_XCz??vD+;F4Z zq`>ux6EtnW*`os57qb#4fVBsVNEev6iQry*HSw;lot^Soi=Ho`Z#DtXQ~#yuj7Nbb@ZdS@;lR7Cyqq7OGga@Dj$@V-5qnU;Vi$ zfx^LHos**Sc9|dx>=wK8rC5bB4nl#U#F^-0wGjqiwHr(M;BB6*EeiDHbqgC`Q}F@c z>fnx8ldfBFBQ4d@{8NG}1)fI*Q@7I^bBvg6p7#Cr``jl*j&woq6i;}gA)^(wNphIx z9d=qjnVflod_c~obQ~4&Dw*VEvVMeZ|Ea2VH{IJ^du6>o=Xw9Z&>f8P&dc)d6xpo) zKxp;wH-upbJV$F5DgFayapEV4;sd09;4Fm^j=hWlKE?AKN7_+%0WWgK_ymn?X@PT1 zWBp3(G@s>1==r4hBgB2AAK+M}ZT4=%;JtWu8+`)bB1fZN;1`%H6FT7BHUhhiHY{qInjur3YgidWQ lNg9{|olOh0)ASTMwgD$_HhJ$H&L?X&$5H-FMrHWq-#-GCipc-~ literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/FamilyClassStructure$4.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/FamilyClassStructure$4.class new file mode 100644 index 0000000000000000000000000000000000000000..a2e911edb053f0fc89d44927bb92a3ca74721c02 GIT binary patch literal 2021 zcmcIlTT|0O6#lj?4TJ!d`$ZHLu{Q}KUa2T@5uKtBWnkpR*`|>O(xj85T=Xya7kuCD<1H&?l1h;>yM5y>$qk1b1ge2_XVvkikZIz_oEB2`1gHY)^VD4xh} z@@*bejBsx0g(dD5bGk>$gD?Gp~d>O80JrvO3iWg9xdKp`LKX5 zjzg4bMBo`JNL$Y1+SW2J`$tB!m2i`xC1-3{TriA*A79Xhq3Ax0VRCCjeU{(UHE~+< z!mg&5J;SzK3AY&D{6p4R{%Y@$?q&XS#|^JrtKQm z#WWN?oTMZpaE6x_!H1-)^X<>%}l_e#;RcY-dmbQ;(73eOOZi+8HOo-fUgb;YB^D|o;6LPPt}3n=jUwGq#HoIpH8e}guWN8^nqcq zm>>n1u5ZnOq=2 z2p41X1o=`GvPy~~$)@B!S_Gcj%!OA{sKy?pd4wdFX$%~W;fik;N5bDr(%4OpOjGum&A3^{C literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/FamilyClassStructure.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/FamilyClassStructure.class new file mode 100644 index 0000000000000000000000000000000000000000..caf93490fc94ab9d87081787bab3077b4eabafe0 GIT binary patch literal 4557 zcmb_fTUS#@6#ga&oRAy=QK2XzC@KUrc&imCUdzP>w1QCW^&}kOU`Q}IDA=pEwHIw` zFE8{5)E6GwwF;KHR+oM0Lw`d1PrBOLZ_WuxP6)_iB`jw4%`4zxH zeCxw5T=Jm-mleF?gB!1waOO1yulrDJ58hDlrVl0dKvNL*LA3`FA4Z@nxZ+0@M*SFr zA*pdct|IEk1Y)v@E0|Pp&4&b%a@q7@3fC3f@Sz5m{U}FNYB4RT8A(|THx<04;B5i5 zHx|{!Fj z3C)a*>4{)+N#&r^g7!}S3DntU4$e%jXkox+IT?$^P0cjovDKLCZRUZg$&@eixa{5< z)K9rA+whPPyQ+`$Xvwj{x}dnjh#6+5fV;72NWgPCKEmjf@i@JIY9g#B2DNaMGZmqD zM2ik-2}6!klOA)-AX?6@!KCF8>9Qb}6BmK{QQfqcRzjb^#>OTmCK$`%+_?hbM4%?E zQJ&ZfR2#|O7{O+k`iK)I0^N=4a!rm?nl4ibZ50FxoGHXP0;LgI0n(@y*f3yfk*j^$ zq!n=m?+6@;={JbMVZ$8jGNLRHD_HL|g2~pH6SL(pEOQ=DXqDyc5vVklJDcio!HH1j zbPA;xoiYl93l?O7xg47cBs<451(GVTCyit$P@SQo+qb6~^VKqeZH{Df)F!5)w(@Gh zO!1Df6xzj#m8(~vSid%Kw%{wQqf#kiHB9RV6TGrRJ@N{tay&chKk$xK*5J9 zKEfRpALA1RpQ`u_cUcQn+>?`^%WbFD6ANeF3Djn=nJM?dbbVFug^Dk6U&U9rui$GH z=Wt%2DxCZ&Y1Trvt&|X_M8W<@;2~UrM{r*v;h9Gf>0(JM^YD@`k+g3fe$uL> zH_W5-M@xkRY%5X3)<i`_WVUGA3!n0Id9)5%)x#kc2grWtM zJx2Kt9J(My7F$aVSt9%?5w_(=x&B;UQQrKbj;|uhClj9nrB>fl0XO^Zz#=vZETTf- zI~2L+INl`3n*~D6i`XJCi(Mot1sMS2eAq5=paQU@H{D?lm8pwDgOt41;=;)%|(~I z*Vsy(e`hZvaO@FkE-%vxqtuh95lnt3~?V zV`;gSo(Eon7Z-@S0bU-14BQZoV%X9!K)zkrXzAsVN2a18sZ%&jCweL83@I0_lF*QL z$hEHYS{LV}MP+dRi!ue>w5dVbWQVqgjJ(3wB=qjP*?M(kJ2VAKoswNk3w^kGt zqE@^V*h-HdWG}Jn4J@F30Xt=wvw?djOO7{9(LfaCEs>#T{;AH4BQ2tAe~zTSM3Q=?qv)IQ-`*t4lNEeKZM9N p-Ipb@7#FQ{m3cU1MU_CYOne!;+3&Pcodka+c4y&6k}`St`yUQH~sUgq;ZDEs`$4G3cDxs9FLRl1LKc0+IM}A0tRQ(bD10*6O z7JL97g}5`03b@`dd@j_&dmJ$_5BBc*Lc>0i$`5-;IST_=wZKugANWETp^_@ z3WlSJ%n~l*C={XKi_3%;BAtcV6_;7AcvVI*Peds%RL+YsuVh(K`K>{}VQ^BBD2D!I zAua`vMLOr_Wgew-`Zt&<84I0^V^I`Tuh9%AtwjH2Ap!R&N~7|a;nT1c;c6E*dvC?o zXm2zncgER_+}WH&sXD8YP~{&*7#qJbDdH)aqw`hKDK8>Ak$0`s-z!aj?J>F2nXB^5 zoQ^*n-P|L?E-g6u-w~Y>rp?W0xWLdQmD*^A8Bkv7q9?D>_xgC6eS zsfP}3dFZ0&;Wj*maht6)=oz;DT=Ea$LdlZB9*(9sq?hH=o3qi^!W8wjwwXzuW(SP= zx=Z6GWic$O0DkZdEO@?z6}(u&4qh(de4)C9EgJ6=D=2cXO>BKa@6hK{1_U*psymbs zlhI`+(#n>Jw6;x}KJKlQIn8?2M(`E(X9{X5*Axea+N&3=s2Q~}po(t$Z?Mw@@2v$t Sz{53Qs|ns;3*I&T?fnMM5;y$- literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ModifierAccess.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/ModifierAccess.class new file mode 100644 index 0000000000000000000000000000000000000000..5a1718f785fa958fe9586ad5b65239a73976bcf3 GIT binary patch literal 1243 zcmbu7*>2N76o&svLY=s#4Ph%;+ESJ#q0}@;Tu_A6MUeubAO-cJcVow)6L~@QID&WL z1_=b>f(PKC5NDhKl4ak3t@%B3e7=9qEI)pJ`wpOohdK;wRj`a(I&R~RlDkT_m9&*~ zlysHcQ?jGszJ^^5CPT#w#$qCzFk)Z>hNUOM7xF1XsXgeN(&s1`I}EEs;X5a>XF1_( zZn+ex4Fj9Ir#uvDya<-$xgewCp&fW8cZJ0*Zcb;O8F7DX1@BBd2puz)!ZkfE?QI(?SzpkM(amn`2Da>!cS!t6lmH~!~)M{$&bm=P8s<@OyfIbTJ0($og zShw*Rg^x5U;46Y+R+Ddi2DVt{?5_+QPF(Uq=7R-A^cdMezgm z=Z;HBd@XTOby3d3iP2%?@TD~0%H->L{Dm~XmB}~q_@y+zoyj-zcrDHEWb&;%zMSUw bGWqp9zLMr2W%3(&yq@OwGx^QrlyCk5bQ{Zr literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/PrimitiveClassStructure$Primitive.class b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/core/util/matcher/structure/PrimitiveClassStructure$Primitive.class new file mode 100644 index 0000000000000000000000000000000000000000..45319747b62b45202eba709351f8cfaea22a5ab2 GIT binary patch literal 3120 zcmcImX?GK46n-YlEMcT!s6YV)p-LNsw8-9yO}fxPY_QW70&bJ(&`z1mU^1x`7jWM< z6#WH$!UYDf3hLprf5d;`@xJerHj#>+p3{7ooBO=?-uJoNocZIgTfYO?g>Mvyc%D68 zV2>9QFi?_^l`x(_2Q2nDEny-71(Py5W!MU)a3(><4)Z9>*dxPL;Nc9@&&t><<0S=^ zP_N3^C&O1z3-xIk`(?bW;9RKB$T%S5ynv~wu}prnUl(xV)RH32=X#$Sh|`8sV`VDS%>gKceRhP0hzR^s&UgX&Yu^s>K-EjYZ^JwK+W-J{-<$w>JZI?qT3U$ z!KPb4`y$j9^I}vI;XJl>baV)~+_p?LU0Sc^hdpwR$lYby$(YhWEYIS%*A;4hY2|Ly znQMErjaALAv+8$i<)tn2f3G0xY(n>H71J89*-C6|+}2$AtdpI|RLeWrt476>IHck! z^r*}6`yc6|w7sMyD}cy-dNkbX(Ues1h| z?u3LdRUF{Qryb9rOdhVTp_!-PbjCuNLa zl*lnEX_74ccAIFJBoQ4143>ih744s9oloR{?c^hI;TM^aN01wP! z<#jZ1BpK6I1<*LMnj_6|?ZE(RII@-_>qM<3z3Ka^Gq@kJ2eVlv0?>z1~_m;Q5YywE(nt~wCgdk%; zK?r9>GboyK3eMw#jHry5j5tH+fn(aHYnBWKbt;=RoC%8;3PypJ^8c0|r}dnzam&o` z4A+)RwpQTTg-q_brso_(E4rqo+1%Ba3`Z-tPEmJ@B(8FMoU=Rf!K!?OA#lUYn(ipW ze6&G2Vsi}AL~emRY)zY4W2R_l4Cf)wSR`pr=X7q(amN(%ZK32YnG}HOqcn(I4J{h( zn64WI;vS90>SC|piL8yt?(!1%LOa84@}-kFmr0~qJiDk-xXtV$?d-F8K2O7H)W=tA zfGg4cxcbbi>iExzHwzngncco$IYaZT%k`CMp7)MKMuI_^%@rNpm^8(?_3l+LW#_H& z)vhop)FFy20?M9;QR1 z&hX@EUFmixGv${*Dk@CjUSqha|$L8oX4C|8@XAh%ioW<6n@rCgO>2pedc$yy+i} z^u9qP5lLN_!qNt$_$LHjBM_F>U;5eFpI=O9@OwUYd&n|b^&NfqfdP~e#m}nm9TYhc qM-jz1PNA3j2>mVaZy_Y(G-Ex#iNi-|;dMWbQLm6?;=NXGh5rH}sYna} literal 0 HcmV?d00001 diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/logo b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/logo new file mode 100644 index 00000000..b4a26f05 --- /dev/null +++ b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/logo @@ -0,0 +1,5 @@ + ___ ____ __ ____ _ _ _ ____ ____ _____ __ + | \ \ / / \/ | / ___| / \ | \ | | _ \| __ ) / _ \ \/ / + _ | |\ \ / /| |\/| |____\___ \ / _ \ | \| | | | | _ \| | | \ / +| |_| | \ V / | | | |_____|__) / ___ \| |\ | |_| | |_) | |_| / \ + \___/ \_/ |_| |_| |____/_/ \_\_| \_|____/|____/ \___/_/\_\ \ No newline at end of file diff --git a/sandbox-core/target/classes/com/alibaba/jvm/sandbox/version b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/version new file mode 100644 index 00000000..4fb5f668 --- /dev/null +++ b/sandbox-core/target/classes/com/alibaba/jvm/sandbox/version @@ -0,0 +1 @@ +1.1.2-SNAPSHOT \ No newline at end of file diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/AdviceTestCase$1.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/AdviceTestCase$1.class new file mode 100644 index 0000000000000000000000000000000000000000..18a806b8c3e01245f20c0a7f84b38dcfa9f240e9 GIT binary patch literal 1397 zcmbtUZBG+H5Pr6;y;3TzP(-RIYSmI+&I*dLghZN}m{dQ|2K3|hy3i%py}Ea;{4Eoa zL=*k)k221-gi7$#$R)RPH#hUl%QJJ|e|-K5;1QmVA&I;>?j%WeY17Y=-eZck_Yfj;L=j%+?NgpW7~1`*uChQtfZ`q}vj@%n%RS($7C+*r+*P z$L6kV@+P+r`W@Tns@3!k?RPv7eqcME7Pe4rt{h=MZ}p`k8lIKb(|jVR(NZa)vpx2l@PvK$6<)sn)Ix+EuMR%@8dZf@em7&n%mv zzS|Y5#jspBH|OPrbE?sjPXEq+2lMnd7^lBOB$F|;0VIh-(nRUb;0kCp=&6FpK$9*m z9)T5?ju0sxBl^L(Vv5c<83I?49h?z5)0oB#N%LeNiC$d8EZG~t8o?Q>Z1E!^ld(^@ zwEG3|x0BW}65mKaL`@ECa+KutUy!q>$XVp*3&Rcah>@J5^JYklu|LKzjkx`fF`~FN V$Z(!KOx!!TOO=BVXnRP~^%L8XVb1^n literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/AdviceTestCase$2.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/AdviceTestCase$2.class new file mode 100644 index 0000000000000000000000000000000000000000..ad4bb3611e09b3939bed87831934c51594cf0832 GIT binary patch literal 1669 zcmbtUU31$+6g_J@QE^4MG@cJJQ3d+)h-kM3W8|NaMnGM;>ZY0PCYgZT+6 z%#+RHTYP6>AqyAR-)i$lyJ%EpBi%64l96s^aSO{vx@~lKEZntlPhc|H^W)-mft7|A z9k?>^Te2nH{i6dnmSMXU9lOtEqTlnQla$40fdU&3dTJm;?mudKfCb7RWeOTvpx# zM6qo0X{lW%EU+{_A9?7zfgdM|kzIA146Aa_Brz%b6%tq+i)7q!f$aLRrw$W83S$c^ z0vF_NqV!{xbam*59U44|y4q74zA4Mh*~?himq(K2TMxY;ifR5(C3{iZ!hIVRRBhyO z$wmQH3pE?7_+B9OtZre=#t&Gxv4ICRenj2IrjdR!QUebxJhbr$TQ;`wvoU>4&isGM z6w3n31=qc zllA9a8IaBs&gQ1UVf*p6jyx5|&FHWX?kUMIux;ut$&hiL8pCsbJfMrf`N8%E9dVx< z{fg1))G3sDn5d4@0@jfXx@v1zpy1R?BVdOXL~Ap%fo~?jx;dj}CplenMh*|P?`ldr z_=25nhW$+Ba)z0d(tHc}2m&8dsvyN5``z69ZxC~DkouLY6h7fNNgJ@6UFKLASm9HA z#ue@R-dGS^#pm2JzJB4#_^RcRo_~#rboozA@}FLK)q|DCxlv`NucRj1!+B124(GAacbmhVQS`$Gkz3Q`QwVAb*y0}Pph>8=~xwu-#SjkT?H!{<(^ z=|hn64)b;jD7U6h^MJWtn1u>=WDY%&|0t@ zF;iJD3U7fIZL+i%T$9_2+_U7kW{k)L7__|O2yepXzAtE)Jq1K!Smsj{E0i$9Nb`L7 zhGp269|-!gA$EdVRnjtvDBrIT!(daAX44te$sJQ{1eWXg3LY_B;46Xf=0s5O9Lp(_ z!@OJZOfhB2vUL2t82xK}i&Oa~9n*Gwa(^X)Rkx(zv4%0EHN?@Wp$lmR84XWBYZhA0 zD;U@C6gdsgFrnbNhDl6mc!8JFoF{#pTpo#GhE%iZO{!3+)s@nd`4~2L%ErQ~=WbWE zFxD*I|JBOSEd`xORF^1`FiF#8@tS*lT~M7#K4D$1AxZw>A}+l_RCY5Z4>s>KXRv4U=ouOW~M4 zyA+9KW_O{!J^X$qRCy5fPj8@53vOC?=^QK?-oB8(r^A`Y1cs7bL+|)6STRLtdp(BZzVVY8p zu3WPk?kMlvPj6JmJWL%6Sk$nj;V#2SP__N|0>fIt^6Dmc>=G|=v(~DcK6lF{@5nsl zf$#&<@}w|@Tjj1L%uKmuTcSw*EceAK;jG!N9i$o76DI*m?lOe4URf}V7i?F&Xx2+Y z7J11b&t$=~xUu}!}WTsD$M0{ECDTxCj%&dj{@f#XtlT1}3qh;emmNNNHF#u!ctl(pYC0+Rqz!jEsg216e%L zkTbA}r=*Dg7et(rUKzA}0PjMtlEhF^G9B(#%wkn~ue;q(4Z{1kJ{hhn3CH8zro`hG zskkCuil8aoZFi&B>QF*;j)eZ_b1)!p(w^<_NY4_!U-TLb1hdBw@nprUHR({88PcQ- zsEtaTGAPO>wK1I7Q@c%6M6kmpuZuv)jFkKh!*n9KUpTJ8cBv+;fHY}z*XItK+#!t* zC$_da5XYf;HxLye8MGF6nqvEaA(qG|`@nh;gf{m#o;^NU&kdyKI0|w?cFL8n*G1W; zE5Yex+6UdsGr5babTf_9EyN-bB|jPs(SH(CV2IKvO}6srGqWGSWZYtigNuvsu!shon8UtYQonLZQN$(6^)jsp)AtHO#9J}FhU*>Q P4a9MlMmo)o(U+bdC7*+W literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/AdviceTestCase$5.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/AdviceTestCase$5.class new file mode 100644 index 0000000000000000000000000000000000000000..4d55745d516a6a29252371ef7a8fb23cb3a26e21 GIT binary patch literal 1574 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 literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/CoreEnhanceBaseTestCase$TestClassLoader.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/CoreEnhanceBaseTestCase$TestClassLoader.class new file mode 100644 index 0000000000000000000000000000000000000000..3fd0903609e6a2b6a0c2240187a0d87d8ef8dc59 GIT binary patch literal 3168 zcmb_eYf}?f7=BI?vJw^uC{!!8XuafuMs2OuAPNzMidYR^>1`8MSWGs!yP?qAU+8E5 z1)Zs)b*9sAo#~(HFX-htXE({Jamt6x?3~+sd)~`=&;I$(ufG8}jUN*j!dy3p>j?~F zUc-$9VwjgFpGn$HIoy&%QNx1dxt+ir-0i_V+)v;E7Uk-54PVIlOAQwjNa8EW__chP_m(ZR8#sp6PnIa?LSw zroCd=WiwacX4+p*8LqiNh5~1)aNM#jZ$e-u)e(*9I|8vnZHYeh&snxPU$2%-XTc~{ zcrrLwD;t$NhGWTna2S&=kz0Y1aht0dOQs{B&)T->s8E_@xZMeShhMWI(@>#3Wkuj< z>dnAENQcf8pA4IyVu67+L_t@FLg&*PWpmB5YBmL9woz4)P}LAluz=>6ZmqITvUniS zBXOAxWW%q9ZgZ^>zC9sB3f*`{7D{i?Gs=%xXe!DYmQ;P3ENg*86OgOnp+I^^Ui*4` zmduAtYY?wvZ6p_`+6An)c`fEu0Q$Hkqut*$i^vws~ytHycboJu2}Le zj=ZHOoREpq@g5H7*pCspT4kBHn%9isuCT6jyo0?u9-*S6DhC@if!(dLZWfu2qd2C4 z5|80%aCLa7YgpHj$2U4Qut_vZj;U!j%}|bXe2ecSkneRAa9P6-0>uurzt@{V(7bc% zR;mhbw4(l&TS4U~TPJ>l78q?EDW>_FccoUhmzseP$hKG<^I^p-d#uHEHbvPT77T~A z9O4csoUK&MWur1#E}O0!Vwvtl7+7S{lq|Y_UhO62bEEAXX>%3ZUGHuw8H7d;+E}pN z6IP+lRDqw_33ByX-t>FzZN8j*2Ku~OD#sf^B*#rd6h2h;O ztuiP1P)iL?!U}^Ufw#J#-d<&>=s(K0{A33%OoUCUi1>9Dwi}>s-%NYTHQO^R+r4J; z?hJ+1HSqEQiL#nrd(s-zHysq{O3@gLps{CQC+lXdfB6fcpT~87JS&5EvOem%U=%#^#-0Kvl5Dwu8 z=a_6XR3sJt#kq@fI+J|{ZT|Ql7?rDC=VK#J(4E;Adxq|Pv90s5Om<`&JzK}Os4Afl z$$!F8iXNpIP;s2A1X374nx-cZR})Vvh^dTG6yi`4OyQNl^kp(jr{hwwXjM_1 sbTEZ22jfkJaa?72N_reKn5BjYKIJZgYdFk#kgFjWOk4!h+#|W`KO5XZ4FCWD literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/CoreEnhanceBaseTestCase.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/CoreEnhanceBaseTestCase.class new file mode 100644 index 0000000000000000000000000000000000000000..8ed0a1594a00aa492b069ffe5ce50f980d90b5ed GIT binary patch literal 5169 zcmdT|TX)>l75Dn1T%r;SaUq1SR*-- zW)gF63B5pDT1qeU-U6l2KD2Z#+pAvf6HojS{zSXjN79UCPh{dYFRWQh(mAuw-uv5k z>C^xI^WOjt;;$-HOemOC(Sq~s*ozA)?!r?lJx!^28ih12rtyq|XH{InWfdILDhw3m zMW~oTNkLgf7baAgxT0WIg@uZWZLk$MDt2N{F0QI@;mPy9q^?SVH7Vwrg6mS|yn^Qx zJkOxzY+JY^7WX{iF>IL-o*%5n99|SI?TqE}6QgHF$1mlMU&@c3V;CH}!fRZw`lh8D zj%`$3SJ=MJeWzj?`fzZ|*}fF{VoQlpZbDB?c{YtH(d)zKgJJ~ zFfl(zpg-vgZE114r00E?Xfv^$z!8~5?f9Ij&zP1kT>V6FTc6Z2JztQs_0bynYb;u2 z3hVM0k~TciD|OEFH|fXFZr8y{KL*heN5s(KbGIbIz+%`MBMBi=n1n!NbS3$^87@P* z4vOK>x(DlYYrvE40m9H7`UY*mpw{{3iVQ4AIIJjdCKJ`!K+N7Gs1zCNBQqt2p+pHm zI> z=2DZ=UmnvRF|4R{sClRA8iI-(#n+yM`u>2dI~wlCK8Ac!4f#KEPqO}&hF;vK;Z@ww zupbX7cum8%@f`**bY>c5@aTOWWl+~jB|JNQMHoJ1kcRK#dkS9H@CLrG;0GFhh&MI- z2tQWvmWH3;ZH9wM+6Q@EZ*xHvkNTXe;HMgXhMzMWUiWa&v@5bL$v$x15BtXHa6`d6 z8h(XeOQgSHICblsJm0MvGX3=+F{qP;%Uos7%FaJ={FG$*TMfU%?-l$(!yoakhWGHc zhWGI&4Ikjo8gv|F=)dLBLUR0&VI)b(4S1RcjN8Da_ke|Ry%%G}M1t5rd>VW$6SIchjAr2xZYak6OoD#V&$n6#@Vo`{NJ zAj!?my;qJuPNNeujNe3TOll+|c_?j`K(%IgU47~`K|_@KH2nMVZ%3$Cab6e5s`b+FcK= zKzn+{ofXBC+$-mWlqb`x@fJui8U~I$8U>HtWVP@mJX6Sq5gV|T%$fr@x6ygGkfpj* z6f^W59;L{>xcDe93fXwFgaJ)&uYEb`<$Xy8l#vu`bzjgF!#BT`X#{uEhYFRxm@w>; z;}$(_qGuZH=-Njso$fSoVbj1O*x%`)1^skw3pRIQfS$FG0D~B!RZ7lkv?C86qLnO%mDy z4&x$@;u$=F%NVCmL6u1UitImgKUoy7a=cpM7JKZ#*v>Aw-8480+_9Vc$1w6hs4|G_S% z;KZ1MZxAtvv=up0_7uiw)q>NwfipN88l4nwBT+!d02>_I-$RDKQ(B@m=6NSTb0{Qh zpy>!ONHiS*28pI4z#!3dKw?P6w3PJ63H{AfdXkhp*9gP=1A73S%eZT5YwKr=`0789 zlJQ7$EM3ER+(S^tY1KlWx`*!fkhHt$j;=KA?Zv%xeGo6;z~epiDeo8fCE7m+CVL(< literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/EventStackTestCase$1.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/EventStackTestCase$1.class new file mode 100644 index 0000000000000000000000000000000000000000..4001e3705abec28a70a8ca6fb75b2e7f52bcac46 GIT binary patch literal 2222 zcmbtW-B#RG6#mW(5M~GhEv5Fy+G?P~@DorJE48H{wSxnwAg!%c&ty)S(2z`%46P5) zXYs--T|m3MaP`_3@hx0_CliH=vlc97R!*{i&))m&{Uv|=_1o_N-or)?{diw5Q+oLz zk2Cl%hiQD2!!>-I#|*9;_#}r;+{mK`H}jaqEltiDnAgOo1{SpBb`ITI=QG^VPZXC7 zEDH2)OV6r@fuo{mHI~j}fxhyl+?IADc0D^`%?R{pHP_z`9;;NVBd)oTH6butc7iQi zdTvElq`kSlWk=GlR)S~t6B(;0ww)kUw(@Jzca*)bt^7D~u}0avj1;|hTz7ppz9FCr zCv|ox_Ct)}b%D0|psJWv+4a?OW2>UVHCge8;Dq)pW{i)2RxWCEr)!yeFeb zk(@hWsMaJiHv&JYh`?y;)MeeZm9AT}dNVqMu8MlZx~9f<%UJep=k^V_aaZ#&k6~X* zPCqfAeR~p+!0-`v{>P>}Irk-5PwSdrc;={j>;`^h;B$feYS0KBb=%b^aW=7fty9Kz zU-Hxze8&qS*WXxDaV@ACD4STqvWaszZ(;yvO}wd>3s^R=V&V&YY2YgptN7Z$x{15E zCotBkYyY=mCceRa6A$pMfrlo(!}lhB!2Kh+IZ!wg5*1EZGGLzcH|&xhs|^*JaB$B+ z)r7($&Qz=5jy6)(q`=Z~TzGC2D>io$P8c@ov8pEZFQ)>5)B7>6)xzLub6##7XP3h# zO1By!EGyE`V_7l`8h%wEThKjz(ke^|Ok1l@-PozI=`4n7r7&d?rmPgEEFQR}^mtiG zfY#cNb@pH8K}q0htMvApB(Wi)#EDf~(|G)-Q;}@OaT-11Mrm+H5LR7ZdP$`iXD&tX z5^E<&8-(kIT45&*6iUNQ2t3$s+_C3BAkP%)ji@FtR5+l&QrT2aJaf=R$`a^oLWtfo zTMz02{e@O~@w$$OZ<`?8us0h7d;1nqG>nO=8cxG_;YmY!MAi1f;^Oc+F7s`7hOfYE zZ?7I`fOpPxa_5v&lHqj$7a{N#pYD)u1=@Z|v@db(ptiPp zo9jU0p`SawLyDFfJt!A=7ZzpO>!0+gy~e+yePjn6doad-COyqdd(v0m$SZU%6?c#s z-9hdp@_XpIOEOE+Ov#@xMXl~-t+j_YUZH0Xz0b#X(D(c$PHE-WxTiH&N1cU^dI&kL zmze8iT;YF$5#MB#a~S07dNuY>u(^%qP4X+`3ZKqX($Bm8>GaXt$&Zg~SerffH%9(p1ONa4 literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/EventStackTestCase$2.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/EventStackTestCase$2.class new file mode 100644 index 0000000000000000000000000000000000000000..0ed16c24596e77ae236396e6f8dcaacc33f28a21 GIT binary patch literal 2492 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 VB5;$WN}&ZpREqRsZsX2={TFA7;S>M> literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/EventStackTestCase.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/EventStackTestCase.class new file mode 100644 index 0000000000000000000000000000000000000000..8758ca50d45e3b63f15ad904d8bd604bd9c145d9 GIT binary patch literal 3078 zcmcgu-E!Mh5dM_JmaDo`H%`MO$a)9CHlu94h;~C4*vIE9!P#Wu{SMHKs1F)K!;R z3pM+(`jC0t^;F$)dsHYYB&n%WQ?IP0uh@Uqz1l4Qs`Iz(b1zlt`oLh4r;POlB>re#zua!<`MQ*WBgvz<7qn5EX(O^~e_CeMrX=49NG zFw!j)YZxjQO%=3OvPwrvoh(EgpF@k|wpi|nC^#I!5gI$y`(XH^E-L72*SUXKtW3RvZ2E?dma z7PHk-dA>3`Jx{bTpPihXpDGlqc_ORfuFN71{k~z+RadFMNze`AsjlWbgDTU>09zG; zB;V_HARV1Z?0P*vRVwEtjCRee!^iJlswG;^S7*yJw5i@Gmu?ZA#2ztEUoxyk39G42 z2Fh$3e=|_qnwo~|aT*Z8T`Go8nLFD$b>6hW}SF!W9^~Uox)IoICY&;vozcsj|PaCa*mgO*kmRRsz~bQO>uy- z;pXcN?}u#th$D4d*z^~sr}LAAY&Boh=38g5Ng13F25BUp^hb0bBtfRM zzD>_6Nr_}6{Q}Z&wCTY+v_^g9AtY%Z4-D`w&d?Jz7CH9{XK9eecpvG0d4(SB1$v92 zoKE-mts?RYQ7t_@@&a=7PsFs|RqU&1^g^jg9B@T}SV&|5kj9$NtG!)t&p)`*oLH{+bQoVCHhr2jWe0l+2<05{* zCH#!beyQo8oUqgwy-Q(;N>1P_q-obf5oR%r5sH77BA+H1SdF%=M%z{@y*)=(0`c?o zwE)(OBqjQ03&gV_h|jx$I1qq%B=%Ymwdg92Ry27P$No1!uTaWY36wER5u7#Lf{ps$qIUv7pSJ;h)&}&)5YVaD04l5kK!ue6G_cwZ(911A@lOaS?*{1c z0MHZLb>$m7?8^0CI|Z2vzDFNt1dUDreM8`UOTG3T_1e=7aPT%9ciV8xw)<;%OMeNg t01jal^p~*e4o45(r(AmQ0p9WtA%asRk%-Y92z~>hjD|9X30%8&;y>f)2Jip? literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/EventStreamTestCase.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/EventStreamTestCase.class new file mode 100644 index 0000000000000000000000000000000000000000..9690db2bde643de2ca60706b67b12f8a36cf7950 GIT binary patch literal 3664 zcmcJRZC4XV6vzJyfk0Rg1r@Yb+hXOZY<-}uqA12tgDcS_pb-@|VT8qGgS#6*drm#4 z+7D!2pr^I{0R2LJ*VF&(E)pT(kUr$a&CH#doqK=x-kJI1uU~!#a1K92Z~~)YeA9|g z@NF31MG(ShD=y-aY>mm*A;an6yC{eQl?#h`oV5*|0Zv#}(KWnb1)X})UeZ=d41^|;aCuKP91H+q zR2|AQUJ8y@Tjec^q>3dwCnil9%bqGB7?Cck_!K7#kKN+G0pf~7E)RhU>&@f7(m3MwoVRjlHqif7UYTM9?ccBLpuu_krvvbBNd3a-{N zZJ$-4V7#6$Y)3%mkSr?&UE7JAUbc(tek~u4PUz7YeIlJm&ZlN>&rinnbS$Z0sAg?R zm`}_+OGIM|@sBCGP>*r@2yma5l`=j-g|aYqt2(a7CKJineDr24dP^Fet!Z>M%>Tp= z`r2WM4c9Zqvn`Al3e@esJec0}|38KVFvbS{>(5KKlCktma(Wx)nOZU3QBAxz{5U8W zscF}aHC_dB(`J8DHqtkfiF+v?@9Tz}TQ;pF1?B#o$LZLf-~Tu%_ni81==H7Re{Ro3 zLf%IeCkVr^T~b?j!+{+t1#OmCk6Vr_FFXa^{gtZ{*%gtKXM8))^We-(l?pt)D}4`U z&BX`etb^_QVZw2Q?K1m#Q?U_yRx+?Hn#@Fr) zep|&{y5RM;V&(U?0;cNm>538z$u8r$X5>qP#+>aRsFSLKhqW^AUsZ8XJot={q!Zqw zsR@d_5+%`}z~No7K1w52i}S5up4zuk?F!QoAGHocEz8bgUp zD3sX5!JpsZ(9kBjq%Dn}EuSLHb~ifFgCpq0S++;%OoDEtXp6M*ly661<8i+9zQh^Y zI?C~W4A84V&XS(^njvb2sR>c@6-L;S9&7wp@bw4({tWzkS=GO8&&$J}tZe&!cUE^i z(_F@pREBttrZO#M^wfo71Z_0&G*Ju?#UNukME8g3qI6<}4};Tu7o5WjoX3y2P=V%U zfaW~(0L{WKG`?mpG-tQaC@le+*HzK+OHAPvZdI^)9k7aVwVy^}7b{=07prq0SRD^oz1kHF1yj(1SWA7GglV#Lvl})WY=3}1 z#GjzYBF7Is{pj&Wd3zOM8^M#UEwWMPgWl>st2UV*s-QA-1(At-Qss~od^OdFCigZiL z${#2<*djY8>uR1b3$|+qivo+;|A8~PEfCLnyGmfFV7qF)Q7tNeOBNk+(gm+1oo(sc zdf#NmwfO?(s_QC0=g4|paeL#x+mM;1H-_itDysBAV6MA6vSwRKhrwD__ZgcoB=g#Z z{*WzTbv2{&U4cs{QP)zG%0DcrT3~x_-M|+D$xXZL%AnyhTxKX1x}ki5p9_2PKw6G; z%hpD5PnCk+67JabKrzNq<~IXh$!Zh4&^*etYh38j_eF+1wdpndl3KCDbcblqN^C}3 z&#K6~CC97VZuyo9D&DSvFHPLWris_^x`_+eH1L&)uW`r3H@IWqu8AGoGx06H)71AS zetOTh=yFRQ@HNvG6sWZ?M*c1fw{gDBWq9OfhUVhC4gCZJ@@E=?2{jYzUaydQ@Xq#G@s#oL||vofnunL7BGhvqs}V zh%@Z@Woxg&nP)9==J){{P7fbH$nQ6#!x=P@?a*Ku%M_WR literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/EventTestCase$2.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/EventTestCase$2.class new file mode 100644 index 0000000000000000000000000000000000000000..68d1eeb3f9c680b0ef6b852161ade3172cc0f945 GIT binary patch literal 1897 zcmbtVTT|0O6#f=ULqmiD3WAEaDCHU~0wPesS`??k3{;+c*@m?Zh6Iun@#pvxbi6P= zI6nKM9M6Vmkf9^hbhPZ+|f za>o=#VP7~wiP(AWi#dXsw;U_TG2}A;fitwpkjT4Rf}x{mIbyZ8Qx;x{mu=#76RdF~OL*ddwvCs|SF}y8q^L=jE z+^HCA;Fz}STTbPf2&(Ruf*B3>FstDl+BI}wR>7Qx1>`h5Ku*D;h9x{ykk{}C1r5u1 z%rI83(oao`hF)Bx{-}58ukE2{8PX@Cuiy#8i$*XT%>YApth7}1+}B5aG~0;MKaxO* zauVpekY%syURd`G&6%N11uIm(^`PUxhJbqM%`TN_;^>uJFO;6IuQH6Ep=RRqR4|Dk z#7Vne#n`UV05XVlx#pSfxIYXYwp?ZiXB8_V_@7q8D0ZXT4m(XR= zO#cp~iQ7q34o&m})ZvkjV8fr$^p18-=%O`AGV*firnTot3g?NEj~b#elA!*Gur?yB z-uGx8`GCYBTG9iDND{3O9Rs(AMobaNG{MarQ_%ZcK`;8yPi8NXf=dJ}jh&1Xq=rYn zq4g6|G30Su$y*XmMNpTCP7vn`tph|iQB?wL&6|2xZ;K~N&saL+`%ZuC`$l~r0~U;&d`+%CNntGLH!&*LCdXt zuzdETEN^!r0~RTXW|`@}ef!+?bpQDI^&5aGJWZevqe&dbSOVj?l0Yx6CNTlqz@(a7 zQ)^Q_m`-8{*A3iA(uSJ`ZW*|3;4VX4R^8B=WSA*9e%dE3!W!}T#bjJpy|DT_raQ`Xbj)WRfY3{VXA#Ne9N_k zN`qah2L7v1r({Nja7c?8?6z*~zn9_4LCi&llKIz;*pjaAg$Bs)MA5ByTs8tqm#Nis z7$RVJTiE2=+^%u2Vy~7rg(EvFc+Cx^pd2?VUzCC1^%i)cwPfwKINM?DS#m#F^c#UA z9=p2S8tr$BO(^fFEApOG^F!CGEDKrnHw?_0xQDEX6polkBWvJ+iHFFUc!ZpRyotwn z!Y~*`zt-@iTNgX2Gck_^6N^|P{L=hFafp6%L#2GNbiqUc%M4fBQDfgani#}sB2>Fg zf8~=k&5(*5ZkEfy3d8eGFgq<7!$4$I_jHqZcRDe;r)q?#jt^V9y0!egH zM@Jy@FB`l@C&)-U@!-Z40gGdN3O%#p!!WJozb-7=UM z8~={pPcS3c-M*VTjzkOUJZ+4TWQd*@XxxQiSo(blm-X5RGB`=2LCRGhz1625cW^PT L?&|xPdvNL(aEvQ( literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/EventTestCase$4.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/EventTestCase$4.class new file mode 100644 index 0000000000000000000000000000000000000000..a14ad9db4dc14e9db4398346033561a62624ed44 GIT binary patch literal 2134 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 T#`4#KF~o!N&&WeOdeHR;CEjNY literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/EventTestCase.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/EventTestCase.class new file mode 100644 index 0000000000000000000000000000000000000000..f9328b9304896a470e9eac3e6c76d5dffab568c5 GIT binary patch literal 5991 zcmd5={a4%O6@CN;fl&$}gnYnK(zz`-Bo4IQ)`q7SQF+C>~>N4_vblQ>yF?&%Qj3yMsDpN+W2}^!_2Fqf+BIA-D z2kq%!YsS}cS*ZGkjBon!h%LS%<3&IE@RGRmEg9dI@v?-rSVq?(OPX$m=d|=i&5)o( zbzL*US+!8m3KANJGkV56E}_1+Z%TqMoIkHgXcg-win$rhNUAegO4?)jw3?k#jf@yO zLZ3O8p^l+gI-d)v+02YOqlV^}a-o8%pP$LEgcem(E102l-q1ptKBwwwEo7OKq&Tb= zv>^$*#FRil6IKQSGuj1Cme7>V6ikhlN_eg&^`&+8a}uVZsW}IH%u&gQ?x4jBMbmMF zgq^W@bx93nRed&O`G#{ky^t?0lwfyko;(~p&iVexN?KbmGkLurI0PENE#{J1?QzWsLK{ zvK`dASMY4m*V%M2tD1QuVi6fxD1R*MBvx+7t#>5Jp)f)zcC zaS6?d%&e{wDR0kx`sN6pghhKjA;-ARPM6}YON>rfL1+c4J9%Wh!u)YdB%Hh7J`A|^ zlfdhr>H~(WYF8IBAx-3Dh_U1L$dHKjZ9G_t*lli=!q#$b(u!dVr5o!13sRSP7Sf%b zSjn<3GSd_JqLJ1{Ggf7^P>3WJ1?`BaBMOdUK*F(F%A%Cs7rA2j7)2S&Nc8 zD1I#0wP^H!3k(Qk-&61^UX$^1_<*8_!lz;*$;tS1;?(%`Xf&3L#3dZMZP~q$$+9yEvApoaVtc%{ozauB z)_(VZuC17s*y@BN+^kJwt-y!+s^Z%&g6=>)z3^x?sy5Xc_OvG=qm%K7gdOtde`zO~Y}j#!N)8zQ^Ij4T$_ zEL+ot-mx*!W9_iT(LyA*U|u3A@ksJid_qE(D<>lH_@>NgOrDHSo=)(EqheE~Wo@yQ zj`B%F)9E&ooj!RRdR{!+&z*E!D-_h(Ets8Y3@7(u2cyfQjznl{p~11~QcS&2Ee!86 zvh9i?HpcQRTAQ80ZqY8w2HSE zqBU9XSsNIz>Y6VWorv(oxSucU;@1pGbY46TauniO;<+KX4(TQ@>hKtkjh3(tkMmlw zC*TQujw1=5=i+*6@n6uyD}Khd13Uu8GAhL-UT zD8c?UJkanDf2zLCKbi8ibxf|I_3ACO9a_UqVL-iQz&__~V;Y2z28?eirgsf%FhP0G#57q$$eJ@Xl%U;42KJ zl=yl@CeB)5f}G!jR`L9vstJ>SL)b^Rq-7Sd$5Qu7)+WR zX)9t3OPIiN88OXpa5mHX6C_rm7wlxJ;|e>O>aAqzBoupAoU`nE$LOnSX_Y8LUUi~y z%!70l0phfel|u1wjd^u|eg`h24KI@8m+&yJ`|vVZyh>JHaRus_gS4w$Ec&(-3tO@^ zP%FhESw{7~L*&2)9uY)7Y7<#XGB1g}7Ky?B!=CK2tK6$}>vdA~7Qa(oCsl7V(B5%T zG*G6fmw_xO>SjKQdRNEUcCNW860@c_%f7djB2U&y%m=5QOWia?)bkr2o;J{z3br*$ z>j;uBdn9{CO`g%6-}5``D(oMsk^MoIc;EwW5`U%h{zj**v7E27NZrCY{2f_*$S=Vk z;0ivXOFzcD_?IgpZa9uzEJwtZEfHZ$sz*c}Yl%qm6m@|4)y(MYXLi)l9{YFDId?ke dcIPZMIPsfgIe4~Fe3Dj?erg}>_2GBe_dn*ZHq-zB literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/NamespaceTestCase$1.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/NamespaceTestCase$1.class new file mode 100644 index 0000000000000000000000000000000000000000..2685404386700e8fc9008af193895d227376fba9 GIT binary patch literal 1716 zcmbtUTT|0O6#ll9hQufZ1Qo?=)V5p##XE?D9h~V*1xGsg;>$K&+hDrEB(3;!{0Tm& zj1P{_{wT+@q1ukL4jqz7cK7Vr@7%sUKYxAu4j_+5IyBrcFapcKP24hY8yO8*gTy%v zvl`|!EHI>^x*J-H3{Ogq->|voR(OTmyRC*Da#^kT`}R8?i7>JqKM=N%buJxYZ}Nr+ z_qZd07ROaapss zD!amoR{DC^tN5N9MuPHe$FSQ`Ab6t5)4CD^#jY2e|msrIn)(u z;-w(E$#PxDS3Gj+R27DyjJgG59Y2aP5;es_t;M~j*m^_d%@ng;lx%Ad3I1EE7lH4H zFf8~o3VhE~kYhpYL9x*gRhPP!_km$D(*@mTyK-r3kR%)<^SDZ#bp#ALSURovM}2sR zJ`<-&dWL3eNYD!yx!KQPxvxlkqE!N;^iPovFpV_*rw+9+h6!4cevHOQgSbe03TvHK z3QJE{4={9qWCzNKH)hD0%Uy8#UpSo%oTKCC>3EXH3+Z(No^As#(-;HiW`AJ#3sN26 tZXZoLNY>k+f1wEQBFPh&A>(SiLU~bUuHibyX*NzWjYjq8n8&4*{u}Yt;Zy(s literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/NamespaceTestCase$2.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/NamespaceTestCase$2.class new file mode 100644 index 0000000000000000000000000000000000000000..c41ce4e0acdac93b553020cdbb54548fa20eada7 GIT binary patch literal 1750 zcmbtUTTc@~6#k}^E?u`$K=H1qs}u^X7VlgPlA4fINTk6RU#8ok-Ljp9-EHCT_!CUL z5Fd=s{wU*_Wuc9<3B)$-%$%9|&Uemy=luTj<0pUumeUx5sUwXCX{7K_$0Tw(rZBA` zuhZU)hFJ}B8XhsE!nzZfGs;Ex zTIWp>>~dR_X={}SVu7F*9qEM23~zG(i8ZywkX-euf?>GiNU`2(R)k;X6_+fdCC}#W z7WW;sj*Uqb27|FCrSMl>9t47xEC0vCEKpRMCs*sj-eD;84~y?QmS_tZTJJ^J@?}xY z7gQL7k(t5jOQrW+2EBM-i`~%iWT4?O!^~OScO0iTotorChEirk<|qu|GkhvFc$-@; zmo;mn(hzpI(3f4W$9J6|6qIKxg53;#!J9F7Dc&->Judb|?;ZOxrCs0jTD~pbI_k;C zPswdgML_B(O561UN7mknuoDV}L~Zr}x8YItQ}0gDW?{lwmr zk%7w?rxNLRsaKLtQ8o(<*?$wSVTs}6d2r90e1@@(({kPS_K(VF={!zP1;a3PAa!+ng= RY?StfXjC5^7H*}|e*ud}=w|=` literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/NamespaceTestCase.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/NamespaceTestCase.class new file mode 100644 index 0000000000000000000000000000000000000000..22da2da88c8ad5ec76ccc62d2b56c371fc9b4280 GIT binary patch literal 2595 zcmbtW=~LTA6#p#CJ$M|JwvvV%Fy;HhW4t9{qL`|Usf{_z)pIsB?&1T%dwRD2P^P0Xs8)6jz% z6?ZkLn3snyReT+RhHo{ZxYviIiUke*n3ur&8W!7q+2ny$ww)b@;Z~Gs`+*>P7@l;bM5V!Jqz{A>;<;#_$pQyMsqbMu&ZLj_H7Evvg5b`ucJv3)Ae?Y-5LegkdBt@ zdAH_SV#Sv6961+;8EK7<_b|#3as27fc82?%1UKN`jtGnsQ+0fgM-16cgj^vwlysd) zJZEfdR$7|T@dH*>tT9Zr6UX;#L&zivQzcfQFj1YzO-B}wbv!|i;Tn0Y8R-A5+?3Avw)KO5*S>3*VV+rT$)cl*?}B8D`q5 zafYX!;dIB%W;$=$LHV6`8UBv9bSLVZ)RdDgkgyY8dfDknUrKt~9cH6zC$}zTI$N$3 zf|G1*cIw_-y0D(3${#p`leH`kGmam~aYgec-pZaW?FvhF)2Q`s9;7|b_42hU_4-!d zG)T8H6B+8aVJm*_(TF>Ay%)wZ&0jB|Y?Oo83)1^FUZGjq6VGI1;$9EI89!a!3tloj zZ5Q#2YT>lkE}U+saulD?TVaG=A3ztF909bxPbY(RMte`01v8 z@Bu!g6T?Tu+%1_|A0qVd01gt-u4wmfP~M=Y_!_-$pcYA9-!URZQ~48Gk&xH&$Iw?3 z(d$#Kg#D6mKoYJs2?r(NJ!Nn^F{&J6sOK%QE7_u=WRDU39XBSAF+5Fwscko;wh4L? zfy}!_T76D?0x>KhPR%=p0%lRAN7p{?qK5gpMf0K74U2A5*Zr6r#E8$t9eheIN)uO% zVBN%j2cHp4A<6QNt_IaOeTBGj!o>-vkc0`shTfZ`y$e(Ib(%B-$x-P27XH-6uHh?u NvowkyNh7m2@*nBR{VxCj literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/ProcessControllerTestCase$1.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/ProcessControllerTestCase$1.class new file mode 100644 index 0000000000000000000000000000000000000000..e00433824188850fd7660e80a147bd16911b1d20 GIT binary patch literal 1692 zcmb_cZBG+H5Pr5TJ$jt>g!+bpsHc_|Siz4F60Ox>swIJ7NKDN3Slh$v9^M_u-|;8- zK}?J>e)dNhXOD&w>?JheF1I^7JNwK$bF=g3?~h*qmatSn9`{TbxNjl{$G`)VG!G3t zGEg>9VaUfFFLE9;yll8ZmkZx(iI(8I2VEWswbKd?`6m&}DCTYuN-kALC|C0JFmPoQ z)dCfVf$z(3lT2zNlFJ0S;wdj)Wq4J-Ak5hS9KQb(((-eCimj_bC{F(ef`KxPr zS<@Lw)C@c|q`_wy=Fa1;@5rnlx^ge}0u>pkG88tvwi5AvNU5_DvxJ5W8NM`j#ev|y zP;K69?MgRZPK|C*QTSdIOUgG-U^n7Wif#|Q(c5xPdt6CHAIyD~(r#`9`=Kjec>32* zrLG2p zE<(|ju?*>AX3P3c6whohJTI^PUz4*#mJLI57*6L%Bxb0K8ekX&vu#~V)NZr%jlm-A zC6ZQ=p%*YK)o);x@5p?mRR))7%##f;i6V{Hj;&y0oK|F?pfR$b66;|#=!C{9RkI^M z&F!pRZf@u7mF5w$Z~LfbVlzeOrcWW4PLNBuO5T|Llq{~3t&Z{u%^JB-ss2Xp2qS&C w(?M!dWYmMYL2`~XH))(CIfL7nO6FJt*$INQXF%`3g$Hu z=M*d`SX7W_NC!>ZHuUm8aMYkEz{?+UULu3_dF1OU|OyxOd*?GTEcwg zxt8$#qALT>bsXVslS+~MVvQizZD|J^49~MCggL*%kSe-$!7x#=rFhwH)rgYU9Fj~` zT#Gw9+_S@VPnZhbV$jP{3a{vJ-xstjpNu_5fxJ{)S!@dH9YZ1BO}=lNq9bHrJ`uYV zzfw3~3*8xu#0+MvNyE=FXr%*7><6|heFY}N;&JHv#OjvakUVI66goW;M{Wp@;ZtRg zcev?r*)XfMJz)iFvDOVs3di;XLGd;t*sZ`5ywwA*^tOya#`ReA;l6KB*tIRU?OEcf z9bWxhY#Qc6PbgbT(sEqimW>x8Xu5R;%Q{w2(4pa!4jlyrt2*xDo`U;29^fIvQd}Jj zHA=@>%uw~j9U2y=SgVZ!L+0;0Q1FQ1%_#Vz-UGvQpLDzFxgWZfRT_mf)+vU3*gp(o zzuPn3T1QR8Ff3{(4e?q~KFX@>770T#89+-L?cX5rNf=JsO~b%X3O&f`P$Q< z4EgW<{bME3coBQK)e?1^TAlNeVJ15O-7AIAr0OUUImR{M8nxqbFsNXeOqi6^yp#0l zI8D+sG}}OeUO>w&d;!aSL*g^75}2TWnsk6XGW4JAYGD%7v?BcojgbZ=DD8z1g>B%8n04ZLYnKifhn3z(VjwM_^4RI<+S<-)rI&F literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/ProcessControllerTestCase$3.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/ProcessControllerTestCase$3.class new file mode 100644 index 0000000000000000000000000000000000000000..2b16143e6ea74adf89756189122c3c3d66687581 GIT binary patch literal 1919 zcmb_dS#Q%o5dOADOkC5ZC--e=db&{VmO=?>6%=Sit3Dy2jk8VMI_qLPZTUI;1SBr; zfOzIdA!Z%ZL=dA^YOHv7$FtuzGdnZ;^VhfU0B+$~8fjeDq2opx8b)hMO8@8B$@@3CtOW<)ZD?EbclbUgFl)Zp{j~ESJ1}>n#sO5L&k93rol< zm$tB0ea{v_kn?2dd#)?|byCUkK+F;3yd#}(f#G@fm@vmS7`k#^Supe!9VuScYbB!O zC6^=vMbGB$2KODcj)h&yEe4|?rSNku4+25U!tvN+&XSj!Cv#O{Z!_FVc9ZWome>_C zv|fp@?#sNI&nb7hBQb-OXj1#V40?Xw7CWKi$w0$xhRMUwH;L10PDOGuhC*jV;>Zo* zGrTWu@m+4YTvn`=(w4BpxkT&QC57t*p`dtM5$sy%3to%Ci}5G3m2o~1y}j=X6n1^h ztNXTCa@5gZOiaURMa$~sFW4i7#TXVs$NoFl#r_2o94wy%Fy4G z6=WzXDx0-k?$*W1Cc{X!FxIjw)}Uk>*{V~gvNnBQ6MLS&Z7out@IxvL)iC@p|F+Iu z>KmikmhFEkqe&S{l$rm{mw%!{hWk-pDAa1A>`&B*96K)4U7&-Z z2P~6O6+w4MC;fZTN74+<7SKTtppQ>{0vrE=jt{izKtH`xqys#~0KG>VS{TGItw=vY zW28X^LEjYCDvb(jXyPL}yT79AE4nk~XiPOxdm{_-WYZF%Ew`W#9iR{4G|mwASwicg z@myw+c+ST>voTM4eBuYR&p6QpZ#CJ7%umOl2T%lffnYmuiNd4CE4UibT!V=rnhlUF OO{4nt(3N{JmHrKU5+m^d literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/ProcessControllerTestCase$4.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/ProcessControllerTestCase$4.class new file mode 100644 index 0000000000000000000000000000000000000000..feeb2b4ec03cb26869052a539a4b4398d7c0b3d6 GIT binary patch literal 1769 zcmb_c+iuf95IviwacvAuTUzerW*|*3E@`>8s#HY*1qFg=RSATIHqMf`IO}3Np?nUX zzynb6fOzJk5M#$`B8X8V)t0@xv$N;S%+AcO-`{@#DBz(A1=lrLq^F0rQADEWw2~)@>mzFS} zd#)vXzv#-qa~(%`+oV$DzE~s3bz9oO2E&uwF=5W_FrRr(SS2qNR~DPXddE;mc9ZYfrsxP6nA=Uy z{ot3v`C91CXe4GZ6HOX?mO(4+TVgM;UFj<@85WL0-y>GH?1tn)+oRCwkvMWgcnqH^ zyS&3qhs%apt?ddcSWC2SP*OOy9|(%K8NqG^p5Uz*yb^C2{fz60=!1RVps;IOZriiO zBRjnM*~Bzl3O%80DM`z5eOor3ilFJ%6)fwxje-shCv@m2C|J?4iaQGK>bQsd42wy1 zFwiI+r!h^{lXPfMoD!`zRvEH?-+_V$46ld5ANC#?rh24NqIN5*Gz@8?Qw&RC|1gZb zZqImQ9X1Wau&A9h#0x?BD66ttBn%_DutX+$MwMkC8exhm9qzP6^)16pt~}S5udxPY z$baweA1jH*i`dJpmZ;m*>YR@Z)44wAxD-N@s>4L&2-kos)Q-o%pn_$yVNz1_9-&Xi zNs^wT*#=Vd0$P6l3t0XeQlDv+!Z`giqyy|AOaGa!7A7!7E7Fh97->*~(q4$QNvjY` z&DIYva)5LXN{cpLk}n rIvphT81xW|056a{g-e)?#>*6!kmf3`VUlK(w5QM*J}MS*F{AzgWZC(+ literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/ProcessControllerTestCase.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/ProcessControllerTestCase.class new file mode 100644 index 0000000000000000000000000000000000000000..28ca99a441781cf048eae0e63656eafb9a3cf6a7 GIT binary patch literal 3436 zcmb_fZCle;7`_iJgw`Nfc^NRB+qzj=Mkcx`19_`K>jK5L;5ytO4F?)*lbWP}KWQKJ z1MZsJe!zazu05v#p}j27Yt4t8oTty*{ha6J^q+tK_#40^_QDv&Jqh21FoN$T+z%rt z_7B47!j#zjAYmqi5N5-~F&D->7R1+L7)d-5461~sF#0eh;c*xdObPBMLSIV4(=Y~o z%8x=yldvpdg+WeP7I%^*-F3Ok&^2RPrZ>wFh>fi?1e5kQXXw>Ti?3A61@7eZLWw95 z%{KJXy6%`_e@qN|MU!+q)(pF>=q0nD7j$KBzpS{rwOz0el~=mQT~9G=hb!DF>XyNk zRmV2C>n3f>bL>)yED%dlclk6!T(C!@6`y6(_`nm58YI2TS9M1(bB{Y@w!37y9w#si z&sy@}L{3rnx#eX&hwJ5JksB|$qaCXxUwQ~srAnr1v0}KU?dkivQX)5$8i{xY>!b3z zauS*TM&_CLEb)icLxWd5)3#g*X@=oU)$+_TUpHNo!n$Btwx`#AX6VywXII&)((x!F zL?k|OQFt=kt2$QNTI4$v@)iVq!4?E^MaMp%LkMT>s$=jaQzXgFre`}LVkhGUZZbS< zC0jh*+2x*+)JsOSqmM!%ehS^s1oTlDMqhh#z+6rog;P=RZ)0(|Y z)Kc`Uf$6c9;9NpI#prgk18gWNns1BhQaYnjXKU(4gG{Xu$wv2q?ioeX+GThfYi#G! z=W44z(sNns@oFdIXX9L<#|F z_~ewUmMh+CI+~1{Tg%XuWb{nksF_Sd^>pQ)WYW*GbOkx}Om!UFsk!%}Stfj}R_cTO z(ZOGryZD@LPNQ^P13JOP^rH7?v{Pthf*OAZ_J%$>aEsnuHDZLs0NH227xN>k+Oj_ie|=k05vc8O{fS z>3lGlK0?p$xSBXZuP`2{86P3@zz_z==P0c)GCWUTkMMQPpg9q zn}84$Jb0PzD!Qw>n2*o5cL0}YCfHBV5J-&fj95JjoVU8lOeB>>PC3c(d?Fp`r`#+g zO$*6$)?Q}Iw|({?kY)?TQ(qYE5*!KC`^8X`pIH`&TZ60`y1mY>{;Yb_9n+j-NqQ)I z`Iwb&2b;c`S;con8FWu7`@XkKlj>@=-NJd+Y%i9(362FGe@pQ~o}HJi|s_!vp(YS;<3@~ literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/listener/EventStreamCheckerListener$EventTypeChecker.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/listener/EventStreamCheckerListener$EventTypeChecker.class new file mode 100644 index 0000000000000000000000000000000000000000..c1cbe8b697dbfcedb16792d9589a23a4204c181b GIT binary patch literal 3439 zcmd5*_WxcNI0<$^Otr^m`%Canto!y#Im(F(C{n3#3 zEko@p$2YS4JHel)1o{`VOZh@}E3=%q@o5 z?0iPrcIWPgdOK6#=;-ZCgHUg0E*u@bo%x{WR@U3f&@V?K5ptH(Rsed_mSg$z0&|mH z)$Ny$Al1V%JGDXeI^%9rX*GwN3@D(Axo$EYYb z$17b0ytZ>v$_7;^NBZMMx8a#;$>NPY7ifR!1vtyfbQnnM z7{QppNHBMnuieB$Sx-2wpQuUStd48=Uc(PMws1!SeN%?1VO!u%w~PLjmeO|b>rfbD zjUVeci-eB5Oy6fzVe|o`Dx>p^EJjm|b{I`Fy2t1vB z#sa7gIP5v@D;U6Po1?*&qd|Oyiw7L>7(41i3hAb!p99Ij=0DJG{eiwGi2aFpNR9_Y z56Ovu^oQhRKn6lG7?7cmoC?TWA$dC>!>m~Z0Xj?D39R7+*6F{OJZ;QX(sT_AC{Rz4 mw2aeu1oQYhXfNYkYDcMml*0PXrBN|0a)bQMWK}VZp+ph3^<9SN4R`>rdNad0V(oM8IIL zDkXwtkB6ZMX&Rq6*d29~bF?$n*x`HJiL~^bdy$AlondTEZYi##Krrm~@6R_}zvXaG zHhGgfJ9{lBoC(i%>hR9|%XNZLVD5crw(2m^d+kH5~}vN@+CGt+UWhRw zGB1_XiwxOHb%P~9j2LPIKXCu%iCu+EzvtrQ!+%e@UANHb3tb9!6Sz3vU0Ch__} ziGAH+%kZo+Y?NMOREMpeE@7ptqf>8sGfHHHb3fC9Z5 zuC&_vDebTMQQ(Rj(!AeOF|U733KvaQVmN+3Qd+jeh72V=@g=2v&13Bh3j@8}lY#hw zjI*k=2!g1s#b({chxmx$XeawodU+x?O;)l|!chxLHm+mY#`joZ`0+5ao{bwg$1oGy zqntj_@~%n8Wf_*~(q&=nH)G=_Zdq8h@dIu%+#ND0DkZT!Jg&B!yUiWpYKFN%AjbQ> z`Tc!LXZU%L(ElnDJteNxp}M{u_`f7Iq0n(?T+S$r{l||@Njz3bN?F(C>eWY7UfRCr zQ6yBV|J8rS2(MY}zVk%1{H|Ymk&Q3&?%2|qooT594_Vpm5=$`Jzqac@RtNy6E zff=gr6QF8BU(rMw^~dNxAcJY-XiRZQ?QvRJM3zRtWbHXv?G-W)pCkJRa?j$^A5&|7 z7=S5~E8zroIX5|d6B-GE+=rf#4!EUEuB?I;XBMfg~5$I?J{oGHJ4bF5ymJT3G zIFAactrDcMOO3wS1KTVRgt1MbIF^9q8UDn0zxpbfxz=TxLaIKC3nZMu=eS7y2&r^kzBn@WH>3N|8UO$Q literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/listener/InterruptedAdviceAdapterListener.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/listener/InterruptedAdviceAdapterListener.class new file mode 100644 index 0000000000000000000000000000000000000000..99218cf6b40b9728f32f230c8d4c5ec404bae97f GIT binary patch literal 726 zcmbtS%Sr<=6g{bRs%>qxir~_P-~$Y}lh#5J1YvODqpmYEfu_tPHIpg*EmwjIKfsR? z@3f^_Vd%mHlAM#9+;eX7`Stz*-~xM9tYN2uRt38ZUPo!=x(uCTKQsv!u?j>W_;8%? zROl!$6D~%I$0~JFOUvcN@m@4mq4eie`=rlMzBZ9$X!=UayDSN$eH1}VOv^W+i2K5- z9M8$J8>p1wxiIC6a58l~G*)t{2SSJPN5ZXk(%Nj~WHeLKiv$6?5X8_BOA;9_3sbFf z$54GRnGNNQ%KaRz%6>i+W5IB6pJ}HO*;lC|<2|j76HXaTzOM?!EEyJyGyGT5b{%D` zGdvYN*S~7V&@H;RpiqB`k3*E`gXN7;C#f`ggu29+X!cIe-oRdIRYHZv>XfZfTpb&P b_h(Vqq@BEZsL>81c8gF64K$}L!#3~@&lcNe literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/listener/InterruptedEventListener.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/listener/InterruptedEventListener.class new file mode 100644 index 0000000000000000000000000000000000000000..929ef5f9b3bd81196c8de9945b24ec98a73128de GIT binary patch literal 789 zcmb_aO=}x55PjpXO&zyMoivRTdgv_)r2<1wZUUjCP;eV)jqlp^P|NH}?yl_mZ{-xo zAwQr$DrB^A-48JI(1T`}8ND~7r}=Sra|@u0!zQZOi|{?bZ$IyJG5wVKQ`RcJek-9mlS zo(r!Mm$PC!);3|4n!>Z?Tz#;f^L#e-Ji3^(_5Ed`M~Iv)Q-oJXYsvN0C=NhX-tC3? z>t%v){Ld&t^J0akD((_a?mi#kwh9PxM?9I-h6On~aC1Fe1#kwa)93 zi*UMjh(83;E6neb^jfH+LHPJzwIytaxmBv|S9KXrIPrw;x)wp<)pwO5|NJAu&M%(9 zICtN}THqxrvR|@BvTPOc@&d7uL`pn~ub*6luFCR;*iZ&G@JMXy;R2f2l!zpLEF=N^ oMouN<{sy*6;NC-V2@KFD*b=)fkec|XQg4?OJJ=N;nmz;W0Zb^<`v3p{ literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/target/Calculator.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/enhance/target/Calculator.class new file mode 100644 index 0000000000000000000000000000000000000000..da1c464249d4f59e3f0f56581cd4faf582c27773 GIT binary patch literal 972 zcmbtSO>fgc5PfSqaca^JQtXz7LPH6prK%+m6;ex4RTU8_1&KtJP%o^VRq7JkW$l!5 z=h6#5f(sWeoTxx5cYX@LfD>ib4N3$@EPH2X_Pv=mv;O|;%PD|6Sh7&S4GSi!1>98j zmWi5$92QJ0nz+r7UkjojU1!j13p)(PX51DGbT8R22p2KO~DLBlJHK} z_CEjys~PvCFCGPIFyn(pmKC;$5m-fB#tfac9@m?5^lr?xwwkR<5m#}IVP=r?Z%v9# zhzI{QP=<*?g{R)W@KaRi@(c7+fG(dYiL_oI&n3%Lbn!FTC)#Kz(wfhLI!0+{HfG<$S+b4gm0a1*oj_ZAYp@SzKgu5osAtI? z(x6Icq{$&wvt;KE24CNoqOmta#|BZNaShAHxFXlF#onV4qkqYi#zn%bhV z_qE+8ibhalru;&c9`0)_E9IP@qfBYlW8g|w;Ftvc>F^$9Q{yp9`UwnukjTo&CDJ%K sG$gaH)>0SU7jl<6QYl8hBKMr8oc~77u$rl%1S2$n3Y{}t&rtKf0iFi0SO5S3 literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreLoadedClassDataSourceTestCase$1.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreLoadedClassDataSourceTestCase$1.class new file mode 100644 index 0000000000000000000000000000000000000000..3a0fe1bda0d6a790e2203e9905c1576a0f405e9f GIT binary patch literal 1143 zcmb_c+iuf95IyU-acbO#-nichB`FdPyn>KW08uF+MTx@m+Fo1-dslcj75oqnydXd- zhzCA^k3x*ysEq_tsT520&Kd2QGqXDDU%!9+1aKcM7gd~fv4L|%bl$}UTy${B!DRl>D&*;i=ShL5N!#oun!($aQskYK zYb^-A?1n1yd71<~;Qn|o^EH=Ipx*g!xe?mESk-4E;Gz#&Ejm#80`5{eCbOpqLg=sqoE=A%yPB^!>KfCZA+N7D7srBWkfQr69u^ zDI6VRnWPOnCmHmAL>ZQI5zn;7u-^PjxHUo>3v|^O9J+xOddWkPMVGZlF+Vm?qL%o5r77bcFH5zpTSF4ME0I9GrE&u=k literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreLoadedClassDataSourceTestCase$2.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreLoadedClassDataSourceTestCase$2.class new file mode 100644 index 0000000000000000000000000000000000000000..13fcc60098a7806c760db8d0aedfb97b5512b644 GIT binary patch literal 1290 zcmb_c%Wl&^6g`uqaqGHGo0j*RhLWTbj=BXQp#Y*%LO_kedh86TQ+q~uoC-dR1?92m zh7AI~331159ukp4r7S$Y=X%aPbFa?$=bvvU0CursBabUKF5#+)uGzSb8y0R_xMkrs zL;g`9gXA$owp{5j#JC}5tqCtVz*A9p?Ftx(*jRaTkw^|yxApdoiVsE1urf|iC5Gi8ZW=WD`eKlNwNFbv4@@iDGbJDN z`4OinJd=K?bRc`pRNcZ|2U}QjuxOSN?m5`TeG6p=6;v5ob8ehr&78yyx$L%b;Xw1lpgGt24C}^V`w341e`FDx`@Yb+RIAmfp>pM1j%h0YaKbS{w`BNXPwFHd zL_!)NCCM_2J&~k>3>%~{9%P!N4X@7A=>Le4O=HoUI2yxd`5)m*2Q@6vU1YH6iZ0MY zb|Pd`^aL4-fI{^%*cW7~$H*Qd_mNT=EYrG*EUllA!!L?|!y)9HQm}#oAu`RV+)j!q zH!fgwfv*!px-MtL_1VOesl?)J;`gbQ;1n?QWF_mz(soJ=Q$awS+pt^It4iV%9v%O3gjt`(N`T0-+TK1E>?WK_`4Ibgwr;5-fgc5Pj<;HgViG4IhP;(i|dGT8Tx78;DCP1X9{aC2Cc18rw_aV0%^DsSp<~ zT)6OGI3Oer`~ZFwVr*g*p-8#-vNP}PyqTTZ-Cw_d`~>hA-6m?dZKIAm7IrM$wXiE- zW|JW8JrWoWJRM021D9Nq)2m3P6#K4zFE1%mX(m0LC>c>qW0lB0gMlVr`Tda6^oTNg zt!Ig+MjYCwR6XU?&w@C}o(r7rSDgF7nLxd-eI>9l2x4_Ii(HkA$PJn4475k#86`oE z=VU!^Q=s)Kj#YB5lXof+a0*m3pm_65wWsVY)Z%HZMJk(UfB5$0jE5*t+t0gbmF#iO z{fjx*Ma+7+Tb|hdJLDHZ-st_6m+){(SLDEi<=`4R7WM=#D!t~#CI#AgJsDCwmP2={ zyi8zJZMkv~X6YPPnjc;MBXtNgAlmJGaQt-|FnD@RW^G1K7#VEsgTrqS2j5|QWn`em ztI09I2ROVsg>PdGZAJo{=*%-57MQvJg&!A${21oK>#K#ImI`mI7JgnTyt!KVWr@(h XE$+;~7B<*+*sEb1>ueir@0ra%IjHx7Q-c%2q|xx|%EilEETMmO{Y)6I+^#M3ep@TyGIOmyIVrWw zYVrO~f*kH^^&u0lH=T*FdtbIFCPeZyXCnY(v>lMuyRL@RE@%0^rM*Z1O3 zsl(}`wc2(C)DvdEkz9-2@FK6Y2!z#fvmbV`Ct>)<^P{>a1VS%PKmLOTgaL+e>mljT TU=sPfQ;aZ9(x@BZG)aE|m)wT3 literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreLoadedClassDataSourceTestCase$NameRegexWithSubClassesExtFilter.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreLoadedClassDataSourceTestCase$NameRegexWithSubClassesExtFilter.class new file mode 100644 index 0000000000000000000000000000000000000000..e55a9b27fa04c42720c038fe530ee14cfb07c9b1 GIT binary patch literal 1244 zcmb_bO>Yx15Pg$PlQ!MbGy%#-fgn{S4FRKGi#QNKsQ5iJh9SOzL+g)&WFNF&?v zFzKjcPHo9l?KAaL9clB7Fsd(@+dG#dDMA@_McX7g>h8}XyC;NvD-IN4-P4ge8uopa z97{iBq~gUL8J@^Q+js)ztrdjYk?gBCs;kDQ+Vt8(KU1jEmt*rvhejm?_aKT?GQkOh z#md{BcL4Tw%{nm6vw~(UVcixxRHhdPnI1w_rw36d90ux_E`n3veajTnz2|XkQj^F5 zp>%PpESz22nS1MxZATXc6kROiUJ*4yw9t1o*Brv$Wew#(i?i$s#nif=SK9oCqTgP? zgZixDvxt3zhnErm*SA8AKXD#}B~ZC+jpo1YaJ-Ba9!ng(%Q67B@$eI<(R}n7xsQzJ zu*%~V-UV%7i7Hs7DqO}I%*gpzLz!p0vb>b7Hc;V8i&c4LJ6*-KNv9^yHY=C^V8@KV nU=iBPc-@QL2`}OLY^C#O<14Rc>p|)js2lb$P6{V^d`IL%*{RWSxgmItcMj8vXCw zo6c0!;dpM0G_477gz2xWuGsAKGAkwbXV-r|v`2|LT%2{gm_X=-=!dV+fG|K5svhDt TD_jJ;ZW%+2;w12fxQvq@{jG^= literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreLoadedClassDataSourceTestCase$Worker.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreLoadedClassDataSourceTestCase$Worker.class new file mode 100644 index 0000000000000000000000000000000000000000..c0c8cf4dce9af921a49af410f49bce228f2ade48 GIT binary patch literal 562 zcmb_Z!AiqW5S(peo~gA~y?GYVix2#Th#**swAk||S!-kR9_Gd3w|Vdb{3vma_UxrB z>!m+`?VBcV5FeZ#@X`g&CeO&nFSsFtB{NjNynEBTxmzz~3gtOE) za_6~_BCR-tYi{{>K9|s@9OSa(H5(ie=DDveSF4OOw&l9EfnAaLH~Ye^F56tCY|W0B z(%64>PdBOJ4H@1#CruYa0%81PY%6w4JIzYTTf+Tz6HM6YQMx|cuJXd`9SA#rIN7Rt nOd#~M`iS)J6sZwnWj&a#?_#KUqH{umy*N>p;6O1_JdBfXExoH^ literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreLoadedClassDataSourceTestCase.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreLoadedClassDataSourceTestCase.class new file mode 100644 index 0000000000000000000000000000000000000000..577890d8adad7c549573be9fe9b7afd2f6c81b30 GIT binary patch literal 6721 zcmcgxYjjjs75>g-k~^7PUPAz(4=4l(3Cx5@5krcFgg_txngn7XwA@T?l1papz|0+l z+S+QZ)nZlD(x=t*;;Y%cU-tE?=n2_wt87e60RJzjGgRZy*DK2D6g8 z&pCIWefIwLKKtx*^Meboy$+xr-z!HW(ox(7Q$Z$z15q4AHi{DD3@Zk!41P{x{Q3W53VgVkJ!yl86k4x@PL~tyEPb&CS1fP!J(I}SUxRm^ueEWC= zPk1YoD0ni8Iy~hKC=opEwM!%TjMok;I3bOpqR%LJR$#$4Ev)Kp9Y#g{c2reUq4fz``) z351(6{S-W{%`o+C`E;M2?b7;E9Er7Ml3Hq)mNjJG9SmDTMowURQ8mW1yQnr@gs4f& z>C|e5RH{?rnk+bIre&=X%Qa#LmfGyUKRAguNqgT1HymW#kMRyxuf3j+<%k zoVHAMFtI;R9TOY$0itUw$ytk~o2#mdnpjnpGIEwcbRd&A9lz7qw*A^6Es@g9!GtGB z^%-=oIL%?nTSh9;sasqr#?=qzorPtrb5vmVSSKAh;5n-D;w2hu)=728iftT^OY$u$ z&ev&W4Rdg<?Vk25qv|@`uOR+qc3??`ueIS)+)(15Dq(}mTg3qb= zJiZ_WpH#64n*}jqNS@r$h$&db%Xo!pPsOV^qv9;iF?ahI*x6mh2wqb$im$8qhJ3t^Z#ufi-O?e> z(jo4a4sj>w<8o)k-O?d`#T{GaqA`gQ>zTKUc}zQCBnIrVDp9DryfSMKC-r)I^h(ou zJ==O+<9coDdOh=cuWVnhm#9PW8ksuYQ1LB%TRP`E0(V`X72`E~+V4s4m1Uq=42WyX zPzB72)T+|L?+RQeB;AA~GsAW8lbs@WTn%0mInD&yuSVn*_Y2Duf0u6W+pi~CO-=DP zxm{hw{C+EM5So?YMWLpc9`;cv7jDX!1IA!J%cHi!$^?2H)q#4;t)ng-DP9X)x&mvf zok5{S;f9j9_+nAC!Wc)YyckT)>VttpT%a zOGvx|s|4>lVW)DQ!Q#mGgHsEKbH?37mp7PJI?}Jr*Yn1gr6W~&^~+it59YNLi|Nwp zEnB3j5u@P6*<+-7-X)yMke1t~AEppW-_84xX?H3;e!FOQ0!DHV>XzKh5*=4fo56K1 zg=qc6Vpb43cd`^7NoIJLq|h2Jr5@mt(Yt!Nuv<5RONFk zd)raQ7BIKwEJ8J-DCs#35etiRC_Rg^SD~EZ%MjZ5j3LbD5T8HdSCAj$ZKUlSQ5^x; zMqxlXc2Ic87JiB}#IZe6X5->+u|wJBbb!A-nOzg8Chtbq7a* zPX0+mx=5KaJX6FAG+TaBIbZV%lo8ApXsg7W+7ZkZc<>zNjp7FCb7MP4ZW7qGVgxq} zDsU4U^9A0(f`;(&x#2UoWdsXD=zjjc=apht8AJz^Z_E%p~*;x#3nVcXqX=y2d?jF+Ed4t|08_$5Ch{fe>lYsSxcbmOr46s+NY8u3?Hra%a7t`&Zszq2_y=a;pH%c; zT=m~rg8yJO+wa7iw!yQV)m$@YVXFYj^0S;WiED^#&QGyjBj5VSZO`TC2qw@u^OkunnJj@1j7Bai|1@S?c!OBhb{_thhK)f!zD3xxW-}`wIXMUj|^wepmmy?= z3r;vjmSK*Ckixr2H&8$wtD<#mPa(aXZ&cFtW#z=G5gSOOq)ns|(q__1@`62i5|aK8 D=Uph( literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase$1.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase$1.class new file mode 100644 index 0000000000000000000000000000000000000000..860cef9493e098230d985b8ed5dbe449cb887909 GIT binary patch literal 2407 zcmb_eTT|Os5dMyBENm-a9GWzjQrf7AZ7zZ|ZAnei1ji6klM4{iklv2v6Gx6Lfi5JS zPXA8((wB5fOZw26zV=6Tx<@jB#1#{!VTPl#tJUte-|pGtzyJB;PXOm(WH5v&xlGID zd=>?K*pCZYe1wm)_yjX@cTvHoQm9B_Hit{NESJx+n8cNST+Lw)RRz}+)D$c*3~g~s z>p0E85;wRzZ(4$3px)+NTsIwE$`w*bBe5lH|4twRvKWdi0^hXsP(?;*|B>lwQw$4r z!|CYUG8??X_4Zar_qg3`I8XIW?hDV?4aXIFhugd*T)j%dQW$?J(yWq6m3uO7de*c} z|1yJFd_z88&a5Yk(i%gm>NF|E!MbUSn?a``+*RI?v=r)&!L2p!no{m6Q!;A?bT;OTprczpG$V&UjjA80vue~TJgRqSlt{wd8Zg(6Eh~dbJ&yB}Re4|^A?1~e( zhKTxjB(}FEWrI_VYqnuIo@uw1g#XBCD!8HIbJSJ5jT0({@s^5XIIiL(>J-a%+zz)U zI$^geSWM61@~2~jkPpwi#qE}UtI;L|3K|Ue zZa!lIx7sP4}LxOze0x{%TSARawvWnigIviT2Di1+AB#gB#Uy2OvVKc ziR(ET47rx@@7m^OAQqbp!^KiGoWg>v_%8J*&4Rq+w)A#DLs7py~$VSmtU3m+nitEx*mK?pfJMz20_im5D zu(S5=3i@zEh{vxc*##@#I+i6v8HVuaMwy~Jvg9^H_$Gv z`*j5333qLVi~H&9mZ6uhk8dMUp4djR{5w+5LhE;EO_McPA4X_@Ec7spckv!c^rf78 z^q$5TKInS=g?uLI-EyIC>^G!$pwOfLFJyL*E&qxHNjXx|Hu)SX!}yQLN5Tq>x5pLpZ^mP=sXB9b1HfWgC%-j55I^%hyL3W~-*# zGPrHkd7T@p8!f}PZ%xk@TTyL3JLR3{P|e3L?#vP%ea{d%dvt< z2CMLne7>1kTNVS$4C#v7pcK2RmLqP3t-A1*cwN%cQ*}*lFLTe5^0qQ9vu4od97lK+ zoBO^Xaqiu~)kh@>t}|nKLd6`zp=ntJh9}8fgb3@M* zaUb_3_SUd$aH{dNW7@87In8+yJaQWCNk@UNSw@_khPznSa1URqxUXRa z4>Wuwm#^^+!x`~(O_)I`qV38LKlazdpr0a#1Y}32;#&>hffAZc3U{EBr;jq^qY+?p zr)ezIR|$cNI>Y@W|8Lbr|5ePY#6@0I%;5s=_Dry;)kIi=a{ay^_Q;4 zO|jtALemsJje=A`4wd1gz!7n62Zf=tDT2F>wH}JO219RQAf8oGL27|VElZ;z?|MyR zHKZA7T%*C`(PYr%1oDFEb!rfbey*_RySR|$c8x@srGRk-7|v3-B*43kO8|0lv?Who z3hBa%bd)1UudkB)4)EQ}q$}#I-K&E>TodB)zmwbsE8n`dEki|w>LVj`#XLx!e+Q~$ zd7vsO^zDZiR*kCLqzh?>*1b9c@q~L0!}wl0x69B@XS+u7GLgjS+ngQr)0N)?hNDR3 z^Kvo)^rYbwJ!xFgZv=(@PvR6=ou=IllGF6;Ee>vi6^AyV6ib^(6<;9zOJw~4tr@b0 zavpuOKNflD#fSKaB>Ga0L3&SP44-U!{gr&C=-pz^p~2sg*@8-sjz5vzLaz856p}hg zN!!#*XbeL?As-8e8SedzQzWo09O>!WHF=4A8tLccH3f;O4=Q20h^%r6N0l-3DdQMa zE@MoYz-?tR!rC9Bc#U-tXK_yEf<+WCK$#S2pN2AaoGb@vuV4tJNH+|F_>^3wh}HP- Q3}&ETJwg1=;6^6<4?Oa_{Qv*} literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase$3.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase$3.class new file mode 100644 index 0000000000000000000000000000000000000000..4a92fee8d4bdf6d29e5db8303c8630913798286b GIT binary patch literal 2414 zcmb_e>sJ#;6#va8vLvh$5Vbx^X-y>r!cwsm}i z{g~{=r8GXqCuw|&DS5iA;xkDUB{AKDE4V6`&(j#kwQgMR!3;_&Zm1}$m}Tf|b1U0& z>VYM0akpYxg5g-T$=h5v9bM8zVn`v;7Pfyk5CKW_MG}E;T6)MLp)UWi>18JvW~+wN z(z#{Uc#Z4Lc1!oTU9UM$^$qR|&({sd6?%)?ydhk@M8te(e?HF7Uv&&_t#H?r^fogoqh`?NY+JY` zi+i3Ra_;T8o1K&(ICjN!g^D?bBW0Nch9~iOgy7bl7B}sE*cM|QdMz1IBC6&iQF>-r zBD6LWc-in!99d;ZOZiBQVd7w|onBA`VHq*pIQY|@>NwaThNDY9H`eC)`gS_fOHSY# zBC6xT*xDMG1x`6G+lJ+Mrrnqq{$r=E;+BRlP}T4bPHPyz2@NN4O2Zjc8BWw(XHD1z z$1Yg>`)37i_-32(GOyt_7F68Pa2Jajmaxq5LEIbQ>!uz>rQse{G~CCRDjsN9#X}8W z$>nQ&!*E_aT^EL52=Th|!;eF?z#k%$0k?K}D!$e59Vn97ICF=3a@k3SO!)RKZa4IW zT9Z6bQDb-zr~i%0=fAR8H9cR@n_)P2@b%39G96YfLpe^#q3~fCmJKYM?I^5lHmZgN zyTYkw))^8x*-Xac?1s2?JP?MShVbv%=0+gqNXbBMBv^zpFJC5%Sk>0Sd_C^MMxGu!nzk}R%R^B?6B~2NI@My41&}exW-}erc$l^#< zLg-nKE;aS4)1X1L1M7YsIq`(MHpAupaBioe6V6VK#AP}T(KmTI7@|?%4~FANWHPcN z0kl(73U_K#^xHt8|1&sCQs?M&ljtPv1NqTSu>9C2lzd?miTn#Be+i}ErL~Ksp)@f_ z=aZp^0lbIziJ~uM`=fj6V)$@d>#w9UL3fM&M@D}~*A`UTy8lFK3+eoCP>AXwCLI$m zp)rj8giJ&nWw`${&Jw}4aIC*~Pvj*sNhF_>)&!(agHXw*7E+3h@MTDWSSx literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase$AnotherNormalModule.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase$AnotherNormalModule.class new file mode 100644 index 0000000000000000000000000000000000000000..b8cfa311cc27e66dc5c109c8cbefde88c666327f GIT binary patch literal 716 zcmcIiO-lnY5PfN@tF?Z$ejfzIg9;k(st9FK5ZVeV1@SbyjheEXXm%_9El+|6e}F$q zoV0p#4<00Bl9_pvnU|T5&$o8~2Ux43jD-M80hR--2#g!_ELRK(DN|d&4>r{1hrkPFCaQ&2PYq-vx!aC_e%QJK9NqQ`2E$N=XB8}MZ znIZkXbjZJkF^mUT6}bL4-U4%;k4(ti$@8eM;#^>}D4j3=r#B}>pg;8j8z}KO@zn5a z30_Q@Wx$#o>cH6UE5r*MN|<2j-4G6we6RUChg31mXBjgrOPIwRpHu9c=UvaxU?3R8 Kzl}w9Onw3QUd^!p literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase$BrokenOnActiveModule.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase$BrokenOnActiveModule.class new file mode 100644 index 0000000000000000000000000000000000000000..84fc1f45097bc36e2a85b377e000e02828917adf GIT binary patch literal 929 zcmcIiO>fgc5Ph4EI&}kWLkqM(p%sS~DXfIJ6(J>7Dn+=7)JBm&T-NqBY-{fZdlQwP z#i^Jez#{P_9h8-N$sbFqZ`4z_C8c2U9u2ag==IC#vk z^h#-EUo({V4~7gC&qR`8)mK{fCP^UEfe2#CG<*|^cqmep$Ma;xeoz_1MmseZQulQ$ zv}!7kO*F|%>Rqj6>ct|p-H%iRUiVv&!-8`gpLAp$v+A!Gs{DhN}dQUMl$6d z1v8@KS!O^GPh|4xznUE~)Xcm+gL`TwX(*3WKE=*LrswBkDj2p-Cfce*4ppY;X)Udd z6;>HdGaoFRS&S9$>NArj1(pUVsfb}MD5Pi_-4ulwb=0uTu$}kfvCtzvZ`ZjDCs`nZkoWjuVT~e&^*_ZgQ7-P>uPD83l&?_vPKXk&8IJy9aOVtVGz!!mY>;0ehD|zmGu*=} NC0q)sc!=9r{sqZ}{jdN4 literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase$BrokenOnCInitModule.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase$BrokenOnCInitModule.class new file mode 100644 index 0000000000000000000000000000000000000000..d7d5e19e2f92f89296af4f50726d36c19f49f96c GIT binary patch literal 856 zcmcIi!EO^V5PjYx-E|&m4m|pLp3r($*|s0T6QOSB8$FAGRibNCKcI06w1Z(WYvC9CBx=vVLnRT(@{*d z&dhM)7>!tKSwxvAOG%)2oz&!9WGWGf;N$C@mqHH{bHhIgD@)5$Q%If*Ek?575e2hC zXR}P7Adx8L^S|^uW~iT}*?f@T!c2-(zEMuZ?$Sap#^PEqY@biGRk<9fQqf?qwKi5* zWi&}XTq;>yDIV+hrpTvQ65y#Jtu2`@A~ZTootg&fSY_C8t#~H%h|jyVZ&G>Xx)A5| zy!W=<4SU@%io0>&ai00uXSn=t3uD+=Na`hHnOcU{vUYCR-;cU=&{;4qY@zh%*!`RK zGV(t?F7{EQugc)lzxBw|`p5fgc5Ph4EI&}jrp#@r?(27Hg6jnmqijatvNEL1(B~>JtYG_9BkIG<)Vc94jww#cJPQ{ z>7~*td&N-R+aEGiJQGQVRbOe@ohE^_$0CR+)9_6w;-RoAkLSrs_D-b?>n&^EOWo5Q zYd%SRWTI(aQa{vMS}zu9DhYM!hbG}7R)GivKRZu&Ds&W>3;sc5GR=5stmKK%Vk|B9 zD3}o)%`(RX@kA=0{HxgkL(R@b}CKg}3g*CC&MhOb7_`xuf;k(gxCGVCrQ$rbv& z3LAU=l>mdxDm^~P*R8#%_*yH09aL$<85~;o5_yuGtVBC8(5==;nttx7bq8Z?pKuFHp-W%d?!Q+R}90y7~DBS8I1yU8|&m(h+%`yofLPm ON(q;ODjwh_mVW^%js9Q& literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase$BrokenOnLazyActiveModule.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase$BrokenOnLazyActiveModule.class new file mode 100644 index 0000000000000000000000000000000000000000..689ced10c2e4aff582179ae4de65e5e1409884c2 GIT binary patch literal 978 zcmcIjO>fgc5Ph4EIyI#&fk0cJ(9%PTWL84lijWd3NKxHHYNJT)0kO8XVT-*RY$s~@ zSDY$=1b2QEV(bLUC5Ilk>}Y1+ynTK%{`u?ccK|Q3V`Bju79Q5{$VLf|Ej+RC)WR0S z!fT~f_J*OnyEkB{xF(bgE1uG_JC1#s^o1W$rS6$PL<5niJf9US*$0&}thEyJQR<%d z#OKRqkg170G~qaJTk2>n6E_lRDhc`C3rx&KqvUkH$Jvu^gyW z(I+;wHkrtj(WHBCu5K|>yra)d5*Jt!P*Nd7!!ImxjCLY2#Sw)o49hB=sw150>H`<+2M@7%WVjN#q?^_8J@ zlLw|l^VFGiF9WhN6r)Tg4BPWaau@%sOk>x(cH%folpgNqtJ$8{e52LD7OM0&Fj(Y# zi6VJVr%f5B$S78yUx9rou5ZzqgMkAYQ$DH!fZJH5jN#7T=2s{eclI}wPU__=RDKYm rglmTGKMeMap^SQgx{G@hSBarPJ@->Qz}hL+u|idws#R=a8H>LGQY{Qk literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase$BrokenOnLoadCompletedModule.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase$BrokenOnLoadCompletedModule.class new file mode 100644 index 0000000000000000000000000000000000000000..27dab64e742836c8b25d35c73ed0eae0ef953fba GIT binary patch literal 971 zcmcIjU2D`p6g{&aO`C45u2%b@)fOLGAr6Rd6``B1P|R+mT^2+TCdqW2n#`<8w$z{H zQ$a!B{ZZmgvf93^&<7vpUhbW9&%JYI=I5`k-vKN)9mi;=7|NmJR|2&#j|GPHq9>1q z9`R}0?s+K3MLR0)9Qm)ieaG)Rp1*(KxPI@A*Bx{ZisDBWwiv{J*OQ@hogUSFdFn*E zpF>hF660K^4BN9v3gP~|mX#gvQjg<2ReH2nJk0K_;%mJcY@tbifx)7WQ6o<`K-Q*+ zlV{|cPcFc|l-rAB3o!5wEwZf&fF<0dh~d`X;^(NBd-gZf-nQ!(X#5~V4VMh>uQ1qC fhC13M>Nf6>UnGVVT6Z(t!!jjo3Yxf&8(8=a53&uM literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase$BrokenOnLoadModule.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase$BrokenOnLoadModule.class new file mode 100644 index 0000000000000000000000000000000000000000..0b82fec8f55d94f4d5f64b25fb89da523389b676 GIT binary patch literal 971 zcmcIjO>Yx15PjYx-F6#VNGVW0`bCjiq+kgUmm;Jj1Sw+MNNp4WH}9^Sy6oD)yD8;o zajFCo-1$+6*-arxD2E<6ct$gR?|D2P|M>ak8-T}n;9&;0UEG<)T@McKxma_t?qY*s z=DE@;d%;lJ-sv-xTPBhWi@wrwf0P8$_Cyd5^9$zHO*|AD#uW8MDsk_=Y zBHA<2C?`}qT1(rCMVd;&yz@hoa1pCO1cINOCOj273d|Y*ATpU|JTzAFL})RPmbWMv z3+;_FJ%Y4ED!2YUYL_lyilZ64_E{*0nKC+cu}Sfv8QD<2Qh7zIQ&k_Gh*QC^axl`F zN@QQ9iZ0pE+GL^-W7wHmzZfds(MQH61(wQjRK&0l6iulcU5}|PRm@_JVLd;I$3hQy zCywPn#EmeNY5J#bA~p}YuiN|e?tb0xHeTk$`!2Q^-u$l)GBhtEJ$@Kp9m&?GklGZ9 zVJ0oZ<}{JKL%+vjY0`k+u{9sZ)3vr9^U~uU>IOORm z$a)lU@{D}t;W^mnVtbx!4hEi}O13%%;0mr%#BhzsPCfgc5Ph4EI&}jrp#@r?(27Hg6jnmqf+{s8NEL1(^&?Udm$khOTkPGiwyW~9 zI8_1(?))gk*a?&aIrPB6JDS-y@6A5XkDp(@0eFs07jwAhV6}lY7Zu!h@X*1!gGUT= zFO^o=4nuWod&p4pOe7f=eWhhTPXcL=L=aP@<(p8%Lt#~sPm8tey-FFDyViV=dZ3TB zZ$z|jqP%En?rANp7mGBNgnH+PCgCDhfd~XYJ5P8jbQG8i{!wHy&3I_69^e=)dIhALVm>Nb`sE)c^CeRopa P#Ud44O6quko0$IvIq&^y literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase$EmptyCoreLoadedClassDataSource.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase$EmptyCoreLoadedClassDataSource.class new file mode 100644 index 0000000000000000000000000000000000000000..4fa06809ebb2633688bf04da08be3b33fa0c25ee GIT binary patch literal 1777 zcmb_cU2hUW6g>kJ3ZkW`SikTKEnjgPO?-jyg4EQ2CWZ9Hr-2>lkY%^-E{*;xeK00{ z=!-AL#J^;`vrEj@Iuaux?99D$=iD=A?%Z!bPEG+lK|PH)N*N^ZFoo?D$|+PBlK!Fe zN;?cMx+7<1a7zyPkQ>wEnc;EU96Ilex7-(=Z;TvQ7&C73iExcJ89m3GTcQ_w1{Bif zo@fwcQ`*vRF}y6V2(xm)kZ3!mVA$wNTfCajhQb~2p+%m2*BNo^fV)!J3ui(di=o(= z9r^DS*{;J)VYV&qdC$4e`_9}Q(dO))Z3{PW3yL4FhH&ZcX-T8}SlZ^U1Uavs>xi2lc0e^HzH_!{mMx{ID$J_|ky3+FrJhg~nc&a^*9*`m3mlK=&bC(2q zvkFelkfX)zi4kbsthO30Vw$jsF~ep#dWybKhuHqzrw375GBou}`H?in((*~R-C#JQ zT9_{x1~AmLnw^JX*#D2L+7oR_qRM^8r3#4@uBy<&8CmugaimxMj|SU?x z=dr#7SlMuOffXWLC*KX+T*~IFhRrS9CWH{HNV7Y*yOhm$Et`9^_kM7)2iTx7Lx^!a I!X@N>0z(tvhyVZp literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase$EmptyInstrumentation.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase$EmptyInstrumentation.class new file mode 100644 index 0000000000000000000000000000000000000000..c8d634c2dc681f96f3d36768d52ca314ab3e2048 GIT binary patch literal 3246 zcmb_e%~Kpj6#w-uu;C+t5D77w1S1+gA`_!V<0APWkbnz`*)<3B(!0~ZP_r|enO+KV zu{?P2{G%*i_cS}r&XR;GirSg!*YEw_@4bHSHUIwi*FONR zqSA{lEcKxq%LRN{z)AtD1>9%ok(*vTeud#~sTS59?t4{U<<8c2-HCbNR>K|VF_$8i zPA!atQ|AHS5Ro%ai$D&A(vtHoIIfmtlBf^|~#LzV#x`JV_hD%|M`;U0!skISysjwK{Sg1GT?otrTs96_*(8#UW=Tg2`zdQM5x@PwzOka#;-cbJsO_ENa8`lg^#0=5ZR{1uNJe{hYK{)8Z(*k<8mdg<0v<5*mc5OD z%VtECb|%X~87UfPRb;MMr{c_pH5l#RVwl>8)LsI26pp7jXzYHCtJhSlmu%uMu`J*# zIyEn*F7?)RYiMHB6ZX-YL{ip|$<2g1S!FU!R_(GRU85N=oe{!2wISp!-!FyS6|TvN zaz1JEPuwTUODbd#f}&~zH&wFHQG+qSTP(YPWP)@q9)7U6FSfl+d;BX zoLr{)5Nf4Ln5Yd~fJTeqB5yQA;8w!hVJK<7@P-a1@l_T)s%=tP7za)1`OX%PoMj%V z22VYIBj$nRb}tUkCO5P1l+!3}dN1z%-`UCo=rk{gNy+H06t#TNk zCt18-Mm z#rRHR3?#b-<9nRLc?wfy_OAA60?1nl{lRi>2XFyn1ojS@C7{&*xJZ(BNzz5{alEG? z->2_OuR-v~jszz#Nl8%z56tjS2N0aXw4u{O5SNJ%!v~l#aQA4HX4?+o!LX&ZsxEDSrsB4#zl7u077l>?Lhy9Hra#SPrl5Vu|p x@$?lCw_l@Zo@tEzRn0JuJBI&(J^n%)zO2U=u&5K5G{!wWh}0PBLJ5Ny`XBY#<~aZW literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase$EmptyProviderManager.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase$EmptyProviderManager.class new file mode 100644 index 0000000000000000000000000000000000000000..5e65619d390a0460aa829c3a7f0bb25219564faf GIT binary patch literal 1381 zcmb`HOK;Oa5Xb+Ugg8ypHhs|YEUy4*D&Y#jDJYjHpjIg$HR=JuVePEajcjkac0&1B z91s!*J^(i^T=*`CvDYYRNFu+o-+cscYPp*!61$g=Hj#% zHd_85`tVw-k?abcN@XbR2Z7K{kB6ZkueTQ?vob3f)x+`>@5-RZuv%^R`H0(6+0UgX z>TzC6ep1E*u45C!@_84AV(ZKmgGj0%v`}SGDa7MJ&pwJYk?UqnVo9>9&&`Mrq-{1X zUGzuGG@?zSg-#?EhJidCiv4a}>?DE7*bIv%g(Na1IpJc&P)isOhRVMPBgO>L2w~Wo z=B5g%LPu(-U193CJ-0O<#nMa2!z!VG9Sb#vHy6_MGk2b$Jg(I%r!U-y;mN#s=T6sO z4ZA)jbxyQ;Z#q9)jT@*n5BXo`7JKw}$bsP!Sh*Y*iGCVcx(iq!YmvSh$j}88YrCJo zYM+t$NTUoE>6s@V;5$n6+%#TTLYYS7pU@b2tYVGkV%Af-V-}l6{Fp${;Ybk->)0T` zWm*!8+)Q9wDeN6t^Rr+-6IjDcPQb34<2OMN#@NDNsDuMyD47`GdobK%s8CN?@_6 zjcSh~U&VLihm2I4HlVOWv3C9sSV#vt5!hPox(JDGQ!3~5YU{LRRuI#L~-XjWD;tb$T)4Oe@ZSuH(i*)TmP)p0p%PIm>? zXxf8gGikzcH0eSGGbno461e|o^#V&yl?=)B<+VRlK`OA9mDGv&eW%MT(x2W1yU6i? z@f`8A3I13(TaP_C@qwA6H;7jTa+qc7!Vpg=@xJ2re58zdUh`OBo5LcOc%9?eGXK>C OD@+8FxaU~oK7gJYvw1TwGxK)l^XvTsz!`SS$YaC7mV<2vI|2(A+UWFBAb-^83lv-%D1nuh zHmWmHnu*?%Xd<|R zA{HFf1-kz)RN#7^q|=*g>49=ze3lu|FjcX@!K@^i!r!^w%p%P-C+s7~JI1TT3n%#D z+hOZ4k`oLRkKZ6(*^$E{+bj(DD6y?fzKbZM$|#RzwmGa|mCq%Pt?^q+u+Bseyb&B72v5H&NkV zaYEwIAJ89#7$@n`ha4(PW52VnXLg_2zmE@p0DMBXjSw3VwjyjtcqK5ur;YYs1i}wH z1A)2N=1O2G(MFvP%T!f;N(;`cCN`sDK$WibG&$!lwG-GnwN**QnMvsOW6bYAm`;+y9pcyWhoDNAn2fl`3SECzW-k`0td4+ zm|#!zg^F)7=91I3SCzoKrXn?xe?vcPGR-t(yhXs5mG2~T68tbJju9(4)g-^;wV!fMrF4KKf8o!ww3j}e=Aj)f<2!|!?k literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/CoreModuleManagerTestCase.class new file mode 100644 index 0000000000000000000000000000000000000000..19d9690d97637dd008771724b8393fd2b1a3eb19 GIT binary patch literal 13712 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 literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/MockLoadedClassesOnlyInstrumentation.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/MockLoadedClassesOnlyInstrumentation.class new file mode 100644 index 0000000000000000000000000000000000000000..67afe948e6344f75c7b73e15fad6b866f916c6b4 GIT binary patch literal 3380 zcmb_e{Zku77=AWDQqu5QK3cSbiZwvXX{*#4iltCmX!t0h)E2dFatjOxCjnr)2P=mFIbG?CqBfkK1P6IWT_UzVLjb;JCslahvZ5 z*I0H6FS5ERt9J2l(e`||QWCb$eao?lSf?v?G%<$0bfXO!$+)dh5&5XO; z`Ynd>I;6(%%u5_grKyUm!c}vsg^zWzr<_dS8w!Z!Ejy;Qt!hdUJ3h_Hq38VFfclA9 zNYGorEMPGVMCl&ZT5MGpaP>n`iWkOFXC92Te%&{2pqAX-8hr!0chNq}) z5vSGso+$V^>xddjzpfzI$c!y9q#Px*;RIs68ek~J@BuHEg>7y)cOA#4hQZ4k!<^u5 zVV7YjRG=E;9(Ro;?#hA;QjHe2X;Nd{B*idX)sj2(d{H_^1=YX`^{IWaEc{)^TyrTS z4zwER_k`apz;H*my)ii&n}+6qobOupjxr!#R?1{UR_$MP^l+acnR6;`K}aZuD|6I# zwOp9zJ`eUcs435JPfSXP6uQwv{)lc9YW^>T`G9-7bg!h4LPrAMrtlq})6EcRRgOvF zdvJ!e|N91D=#Df63BWKKEot6ctaV>?cTjIWR_w7|s;{+L`(PM}PAIEZ9Dl*7*rq1Z zp+u^;E%iCN5l+Zvs>Fov%(^Z=WJuTbl4`>11sSekggyY0po@b3-O}qccG8DJ3|;7< zk-|hPz4SJN7J8$V@mFBue<1es6#s`s0zKsy1<;394A2vVrsUC2bNL&@MUs$M zn>0$<)c8xZPP|523{NCZ3nH9L#A!(33(>d>$PA0ef*Sp%oI;C;1ErH>CuwFDcbrv&?){*rhT*r>*|8H_%Sa3zG8 zqESM`T7FVs(&B(nTEmFd2*pA|)aH>6F|N`mecOz2O<@FHsbc(yF^rR$(t!I)XJ|m+ z?m+nsO}TEs1f;Ua)$|pCYqT;+K&>L1_fOw|;LT$RUdIh`%Bdc{eFDMHC@2A) zI6+JiA%>gyB7}QDv&h@J!Lu4()l)LKw;FOwu0*-@CE;Z-O;1TSL-H~XJu;75{zUvW z5;6RZbH6AzN12HhAeP=Bfu1Xj`V41yh-}FJ V#CjL%;A!=~j1?8oRpq?3{{WcM;vE10 literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/ModuleLifeCycleAdapter.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/manager/ModuleLifeCycleAdapter.class new file mode 100644 index 0000000000000000000000000000000000000000..aeff4415ce5ec4fc5c0de6c3adc6d8de4d5e53ca GIT binary patch literal 851 zcmbu6OHTqZ5XYyy7Lb?V12rDJsU$Y>sxd*7)2auNd$(JmWVglLg6OyMWa7aO;D<8K z0*S;x_TZtNM`wPW{O9ZY;}ZZ*VK)y+*tB5Ff^7@x1TyDRNpnFUd3e+%kZNgH5GdPH ziQAFyh@it94>MI;bLMqfAftGmOqsq630&D+`;>XoVGg5%u}?#$Tt`pn6Eh+-l1F6s;HTiKfejMg(U#idME}E`j{@go~k(T7?$u5XfrvpuFi5x=n86 z7$-uv9q3n~2o$5omiC99Fd_on>ruc(TSk-bE&uRjz{acqX~+<`{Qvv}DiM%+O!erU zGZ5SmXsqJ0p-Iw{Q^4uKtD%9!vQ34W4IVxUj{ACi?@XlMN818kKcj3p_72@ zya@^Rn**=#+dutm|JK>A*YQ+EKXs22~Rm5QHnuS;t{nN#CklU X9)qYNVkYEDE%uina80O20ycgCUayv7 literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/JarBuilder.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/JarBuilder.class new file mode 100644 index 0000000000000000000000000000000000000000..82cfff67e704fba2005084f1f82f2d1a5a332731 GIT binary patch literal 4530 zcmbVQ2Ui@|75-*fm|+;&3Ly!r+L8mig0+P0C`M5zmLepCjF52kyT-Z9}GaWb}smazqKP9&XtQmzLy7+H~X9<+;|hRyz2$#XKv1>q)7 z1Sh1j?40LbyjytUgeYie4N-D~1dWr z2c4Yb9n#R=?UR(X>Y36I9m&sLQv&T!>l%%fM)SnZX5)X|+$vZ54tl?-_nURbr76;ZVxjvl{moCx4A!B@w8aiwJ zc(G9SWyk*$AB@XrnTIc=?Skjzb44AOH5^~1rlec1rZwCuS+ZVkjkCPV%}$PKn4TAI(e{!f{L%B7K(NRS04cWG<#8AgD%nz`Kk`9x42D406;O&E;%Y zrIJnDZ4Bu`mb(=dbEa+~&(j^DQ(0GN;K`E5gs0nWktJOsL{Yhaow}ha=94xA1Kp-?8vre6M^VR2G7|q~nT(r|`4}t&jgn9pAU`46a&O#1gA# zAHiKLTDXR%bu3$W7Arb_VBv>&&cgF}K|X$D;m7!ig`eVQjB7diy;HVZB#;@PeSNnP z+9QmEXV3Ny6EEh3pxO7b2{3dGLnUuM@3J@KGqYKdE0l`!Y2kWY^xf) zMs#^qod^)q=lF88wsEVZcix>#ih@Yb+w8vC zEZav?QuGJ!0zsnbu3gB8G&|w38&c0N7-3OsD%>Cn1v|%@*1HDR)iCFK#>jf$j;PU%?oBW5y`r!p(aLtVhw~$4tBx@1Y3+W zBO>K8UA6}@*XlM(c(hv$Ca*~3IPy|^IgTois1xJfK&6H<8D??7v2rFebziW_ln=u@ zP*{=5!ceY01M-ex%a@%=o3_>p2ZnNIi1SWV9kQ!RFS+Y|lMZ-;D%P%>FH?DQE|6zRorj8XUro>@vE zxiik$N$x~B-V=Czg7ZT8CcTp%UZ;y z>xk-StZok((_RtPUJ=zEh%#l@4~%)70%SA?gUlS$;!mKB@!TBe|1!2jz(r%MD|VC2 zA~oL{+g6!xkL^%%nO%N>w?pUr01SeonXg@44AHHG#eRZ9!lD}JLCh!s8KizaXBytX zn+CLhp-ad8Tt9#}QoBJw>tNPNSe)0!R!e)YwupU~|N9ctcK>BqcSYr7 zOZ0gu=L*$`AO(jiI5?}usLJO!;RHH6!kBHPs}C`nrwE$|7{wH`^+9H^!_j3HOVcIT z4l(D2sthzJ2o!(lfKBRZw)<3bq?c~lfat%G&@r#W`6uo?qGQ1b!Jv^!Wq5gzr2V`i s(c8F!{%Mw-+pExTPzR@!CO)DXgK8E*mRBOkAX>3x%|x+U4wWK;ZGo&*p60DqJ? z8x_6Oi!3{vnR$8hX6Ehv%{FA|PWm`XtN5p?^@-&oZ%JDaU!S=>tA{g3Nxwa~i zBb6x<*VWosVU^KTzcaPIxL3TdZ%mpLSgPZxh@s|G?IuMxbyP6pqs?&o&n`%})5>F^ zZ~0{~mZ4?XoJQ)Teb4i78tAY2VILkXn)XRsXLP6!vOamd@PW$CGuRUaJj{}HX`qg| k!n*GYs+gy@gaxu58fem6Bith0R)!^lgFrMmtWcu;0ZYH7!~g&Q literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/ModuleTests.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/ModuleTests.class new file mode 100644 index 0000000000000000000000000000000000000000..1bdd70fddb0c372f6f187a027988c1f5d160894c GIT binary patch literal 1253 zcmb_cYflqF6g@*93(HEOJQM|`irS(uJ`lwsphOc)1!DnY_%z#2>X3clJ_!B$Oq#fk8wPH6 zqi77bWeJhxb-YdeGtJHj#3rE?)7JO&V<)QHEw!hCm zh=@w_njc6WN6O(%7Mf33rfRNG9>Yj+yRswp1b2kj;MFKlUZb3_5kZ6S2mf+RT|M8g z$=yi#UTEMB?W=wq)Z`1L>GpRNn$g%6`Y~YOu0=}TXIMH5tH677i3>iQp{jwMzyX{U#gn(R+smi!z1n Dif2sS literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/QaClassUtils.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/QaClassUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..89bca32ec816b19daa6f91a75cf5a1f1b7052180 GIT binary patch literal 3971 zcmbVPYf~H78GaT7E5rgpAdHAF!PqI{V#W6qFbQ@|Ln?4=uyb*o_#mxeZApuz#WrbE zw~3SVmbB?DbuUTkwDrfPUodWG+9jwgUo)9D^f~89t6fYxnT|%gXW#Rl z_q@;ZKIdKO&!7DE9)NxLRSes4I)*JcBQH5%Tb{jMY!^^Wa6?km*n!YT;$2Um*wb+iK`~A z8E71HijFsKpuRtK#z5qlo3jnHWt^ftvs{?BOLJmAPfI-GW<~ytC^_=EVvKl;PT9cW zOx7)=Mc$bg^CErmN+Deq#oWAmEqz&dcG*j3-IASN_MCkBq&Sur9>0BDZA`0m$LSZDA4!epfA&OiVLHuKrR&%Gm&&C*m_}nGpBA+ z^JMPQq$oJ~mD%MbyQEgwWMpS>qY9xqgeu0Y?GbLQ?5{DhKfAqU#B%5AD<~d_y=mNv};A=nc?T zv!`p}Sf%#bgrDDa6JKGdStYGWM;_Dm-~rnss*Y1pEUrP2%=!zDZSgeWgkJr=%$w^>~a z-^KSVd>=nB@k0ym;71llFlyl@er(~G9Q_18C7~96hIcKzhxgfIHk@?}pO=n1@N)~d z@PUP2;B5=P#JdI#{$KrtVyJC#V*a9?^$c_R^hoN9><_(t)AgR@2KUxsS7nvwW)nFuE^Ppo9qvEkH8cY zG3l(EM`y^(?=gwmeu0&wgbS-}Yoe^1sex4R6o*?^m{V@O%`GjY#gfP_+I#~P3T&Hc z>2yMMf0?!>Zo@*=Gp%giE!!uT9ox(E%~0*G8(sOvI`H4LQG4mk>bH?jx3YPM=c+SV z6nO<(a}*Ga_U2*8y2Y$uom)tVYOh&&I7m>4PZflq>qRcN;Z3HcH=24*$M9Q$Y#jZm zpeCw8`Zi%sigSNjy(udYVorI+^^O;oJTlbP9}E=OvXKc*Y%-}*H~R?(0dTtnkDFXqsPGx9e4dxmI3Cwk}{Q5$rjf#Ysk zduZRvQ4c>`)rMUR%b@5-iuX3eF@Qlv7~+#oM$QfMX%D|~80%bGXCiIl5f~=+@;9X1 z$H0CZ;HVA4p5$rz(u63~Yuihw8{#5f*f%94PZ*Rby;snA}J(@T=lin@QJ#l!?z`4}A)8jcbK zUo{mF|KMF_G#LQVwuT38;vnI)O%L50uRjz?M7G_+uAxL^-$=t?vO%NcU=8he5hv0c z5##py-vT(d!(`MnGkS!@*-H%j_}Nbkd+|Azp^7zy1fNq%2$Me6aU2g})n3ECm&Pi+ zs#v$6Zk_6GPy!&}NrT1xh$QRUOVE66RzUxWcPZH;KIk=c+(oB>X;v;_@O|9JL6?C) zV9U(la0TzM@{(|Gum3fGRo8TcSVvjeF^cjCjHP&FVNiVn&rPBYd^!`CW1AF-25qO>&I7hv|KpI|TZO*f9^SoyHCp3r49AD+! z%WxEF1FX_{c7SPmH}N~e&k3dR>%Ky+;whg#-4f-T)`gs_lJ+PXL;61{_5UyIG;!(^ aw5#*5eVwuW1EL&0qNS=JgJqR%a_&F5pPGFD literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/SandboxModuleJarBuilder.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/SandboxModuleJarBuilder.class new file mode 100644 index 0000000000000000000000000000000000000000..2e13844bbf8893c7b44fd567de8695fd26459a33 GIT binary patch literal 2064 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 literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/AccessAsserter$AccessIsEnum.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/AccessAsserter$AccessIsEnum.class new file mode 100644 index 0000000000000000000000000000000000000000..66df3546df8d63c4698c430aab9a1f4b1e435f42 GIT binary patch literal 1924 zcmcIkZExFD6n<{w#?DKdG<_NEI@r2yOIoPcu>m8ctDB}HkU67vgCdZSN%W{t@Dwn~0@i9~WCXkDv2$&&$2nfBo~@p8)Q`PC>zb8joH2M_?dYA0o*p^D zvv&Wv{(}>HQLMZD(9;L8-_?6g?4Em}&XHjp>7#WG$-HoLGEG?^%_W@FnucBFq)Zxi zwPII~M&((yVRLyJnT~6wQ6G8LOuKq=Y*Z+Sn=r|#N#7azHV!TO#HiQ;DzU10`b1!k z^`_b2#Tq7AHk(HMv}y@_{mryGOI|qL0ne^gEKMzmQt3bQ1afsh@XSH4?S;0}?vh58 z*&E*rbc*$kbK&S+CpgosIP`sj1jvBBadi%k}{SlniDheeS^ z3D*VYUmuCleV=u^{eU`JDwZZ@*=Tn>H>R#1zoixg9!&1D{J)eZ68?8SFV|N-*rlJ= zI{hg#2dmsJKu8@+q^2cO-x8^HiPXJB8h}KafkYaEM4AMUU*r7(X#Eu4#|IGDA+|xt zPkIRP3uay+@e?rton%tlGUR_3yJP?Rn339aLD~8hv#+4A|I8)-d!)&Zyzn9JOFQi! zd2z;FBN8 zl2#@~R{Yk`y#a7A0BAkNlP;TNyiEk?fuP$a7V)wR}p(UCpQe zpgIymy1y-Dh>X>m9b(REC5OmaEp>YQ2Eqag3(F zgA9Go(L0Yd}upJ&K#bXLye=O{*ys^X|dw EzeW$wB>(^b literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/AccessAsserter.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/AccessAsserter.class new file mode 100644 index 0000000000000000000000000000000000000000..9395f3e200a7635dcce95212f8be1413a91e46cb GIT binary patch literal 3073 zcmcIm`*Raj6#i~nyPNF-r67oaydiCYRlx@ok!?sZ8d7M|0!4+J?b2>dcFXRjf)5nM zH$L(4Z>XbCbjI;#{|5gS$8&bmWIIg+u@5IT6fvUV6i%xc<+T#K%PPj$7-!>*inDB- zV`D*Tv9Q`#xxs_iWxRuVWX;`rqNbi1)hRg z1(y~00=j8gb`a!)oLjGvnRi{=&sJp+*nz-mnOHS_UtSeBbG~4CHA7aNimXUuX0B!g z(w(e$SB%Rtw1d#FJl{6zp;I+#GPI^`-(WgF42(FK8CkZ!GZ}kOpzDa^I^j`)iOl~L zqiv+YZvRaitU$WrAnUOf@jIsDB&e8;&Q#cYrl^NR#qYb4?&Xg;8n*z5I=WRfi-NwE3)KJoWo#ZIjq~z6o%N}-E2x}J0 zbU&X-r+yD~Jc`Ez*0&BBS8S;6R3~j;M~J#W`mht6s#mIxrDG1S>bQcd3SQIkI^NLn zCax)XOUK)|uHYRV@8Sl9=U04Zj`~N(d$_9OeO#k%jND#Gd9){We83AI@&bn_g)-z2 zAF=mi_NwF^c3fH2@d-O`E^y@C(DpA$i^xCah0hi^ibOF--p|?l1$(=R!>o|3q!sG; zlKo$?Um-t_2pzZB_ci-gFxGWF-iYVw_=Z=$<(0$BO^ACdSjQn87C5mS!@V^TjjV+k zBhb^TR;)Jx^WT#<1Se4b_Z*8hxM&CpbY!@LyX5Sw?M@2pYtv(Wi4Iz%Khm)pda+Aj zZDuKu5ewpsVolJDZ{=sm^QyLVsoHb0TDM0o39QRZBxxE5;z{RA7fy{074lhu@%!lD z<&!}{c6k1jA!j9BB6O?NYMvWJlk$KOT}ESc$Ix(AEzb?5j*-5jm+EXBcc)u~5IolR0;}E}8dGo8A#l;BmE}o zz;&9F2gq}ftYM_+577GWK=cp%jMNWgrSJrOt|Tn55uMnCG&bW&vew0DJcXypqW2>*TWn7gyE=jGZHryg#I8+XA8d|CW-O$87oWO2ui`~@3ZcbnyX^Y*` z#BNPsx3$G?Z(?^OushpgcQvuQ6WBdXY)b~S_ z(I+mVU);oim?soVWNTdf1&N5e7{n2h1_=Vs;3!f(CW+F%8?8#N literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/Asserter.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/Asserter.class new file mode 100644 index 0000000000000000000000000000000000000000..7f773607225d6a856f054121a4d689beac8ade75 GIT binary patch literal 315 zcmZut%Sr=55UfsOHi-s2<_{7tHh455g9qyNE(O zG;|f!MOA-(y?+3>!9{{af^)(`La<)5y(nS5c`W51TuD=Ks@^rl_7C%vm)7X^>X|T4 zUD1ek-V#>-TxD4=+uUWhrv~?@R1A`~oj3NuRnc;}>r+{Oeau7HnYL!BTrRnAd8j!^ z^OCo3{3>dLvT42LPF=;dsM%Z3L#@C+Muf}XYD1AJfiQ~i0BAxOV-oRML?cY&3|oR( H&&HdVj5^{Ajm@SOZ;1B` zUdBfs9A6xtoDoL?BQp-q{slhyrhkRQ_r$vOKwzw_O{-Tra!x8DKm z!`Bh)z_^5o2%0b%#&*2K!)YGQ@bEGZQ#_oNa4v!f#(6j&!i5Mr@k$7<^7^$9R9+{U zCl$hU1R5@ekmk*q5OkhrBe;Z22w7g_BFLivPx0SO(*m7%4OBmil&mv8=6uw^^B5L&D4x$D5`b1 zs3cre{Q@1@d_hZ@+VnAPMxE31#+aJb1lmVu)j3tksJXNC@&@TEW!w9ybr>Ga1r|p4DVHw^TAT zl9M!h)m$!bs{db{;9)(dn*#!Y?w->E&9*I9kLo#Xtdvb^#-y6eSYF7d)XZts(0N_i zY&K`~qQK7sTnfdOm}07EtAe2wiHg*Iuf+n z+vC*?7WlDy@mBXq*5%b{sJ;%6Rc|br0v?&ZOscG{q@1gWkS-B>e{x1O1wnRy%Zd|=)#UHz5+r4*!>DPhIc>>GBd7udjxW(o0>OfzUDTO)-7qn9Lg%U8G-NW(x?LQmG;5yvC?A?`%*ldX$PpHMkewlBc%=N zT+z2Sm_JduaxZHtL&4)@?_wlz`kIN!<<#kq zmGsQCX2^IGZ&8biA3Z1IZM-8OF37mbKcu)_s%5;3YchuLo3F=L-6-cufeJ_;k3 z-qyU4R%T1|La5jtuD*mhjrx$+tqUWozs_EDrE&$S?3! zLm=j*uH|t{g4z*Ffldx_SA|@l0lMguat8!rEDJAd3-MuMZi=1d~zEq>-E|zDI!E3ej>0k*Ql)5i3J(Ur9r6 z8LRmBY8uLD9TU-C(fk9tc&cFg_<5WCoZ#(ctYK6Oq3RJGHiDlp>20iKRB!=mT@@81 z)cOiavTu~?`8HH<+*rnA%oVaxp?cJ&Dr$2XTNo9#QQ>;j)+%Znp*SM~RxA&rjehT^ zzv&#H$T&#mI)pLGgbc;5Ndfl_#mTqi;9tlqx9RC!9LJw{4u9bV{DV>4!wJ!h7cDnL zZ38=@D_RK4(MCq66C)J=o%kEi(_Vm111k~y7sC=pck#d01bOR(?Jc4R(0@v`Xsq`x mI?L!{k?r(rOyWr8$^ePZsFNfR&!Hw(gRLtiO+r1|ZqTK4OS5(xOIo0N(HJ1zq*m%Su`|c1 z=y$##@dx+_65=Z$(N0X7_{@*k@7Sk}a~(Uhd0{lP$dc`QbN!s>Jm=hVPyT%I`%?hZ z_(VlNK2V`yPP|=Fkc!|G=2b{y`a>)zxT@j=u8CV(OfM?Pi05?$OA3}5!tI&Wf@MU#H&@K%J69{Td>PIFPV9s=lbS$S+8m_a#b@GZ-CI`YUcZ!C~aHFFOhqJ5Dc`EXXvXd7jR+7bWbJ#p@57WOy`|S zkka4&clh~^5QmHL0`ZKjnMI3>jluBZSfYD$Y>z!n#_~0@wBAT5Qbts(wBzudAhZnC z*u&O5I(BN&d{D@IRt&?;F<8n(8t+^JDjfn!x5;^PnU4;diFGX4jm8v22RdG1f@R z&e59^=YobPhBVy7Ee+=|%kX*EXZXJ`so^7>QE*#B7CGt|j?PxF--JIa8dmYK@aH_k zQYRaSQdq+qILi=iK1vyGcEW#Ux;AA8L++@cy!MHqmri(5uInw-P^@hyAT8g`W@)?I zPEqF-PF)$bY2~tQRlSyBM)#`3U258>u~NFqR)N9wEa8b)a(P+rFw!jMER_*irF6j*X%7d=1IOC3rW1p4;D$PE}7Z{jWb zor(OU^@7qD2+;*Z;)&!QLighWDzuN)AQa*+Se>gcY`{e@h6|p#2*&X?0Zz~=tugZs z&BSP?2b1^)aU|#$Ve&Eg5vFJQ38V+VLf%6-8-EPtJ6w$Cl1~>xm!)Cp><<`A4olNl z8r*9c9(&#jLUeZUhg7*|m)18r~&oLgoPWsRIUd)hRLVptO z4`{nM*&KtgXEBh&3uQD-BF_2%v%d1G0O(7SU;l)l`m%?7NiPv&A?^F*jYuHsf+^(& Hu8sZ$^zsi! literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/ClassStructureAsserter.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/ClassStructureAsserter.class new file mode 100644 index 0000000000000000000000000000000000000000..86ceb83ca9dcf1de53c68031953df69e99f1af7e GIT binary patch literal 6245 zcmcIo>v!D575|OxSh6fTwjrj86Y_-E>m+JJ+LCoJu}z#fHA#crP$vYcT`RVnU9F?l z8k=X6wm|6<3VlGIJWE<0A%wJWPESui@@Mdok9_Xw>Ajj=tz@n8aP0kXN1FM~Z|>Z= zkI{bizfb-JU^gynFfgTHT0MqNHN3 z89VW)ig|utQ1KYQKhE4wsCZJtQ+Qg%_qp?&M$^x$_yNECP{WV#jEZOZkN9KTb}X>@ppv;F-MS_`>XUsMCAe%-gwzvAD_N z`~rqVk6izDQ*y@jDYHj{2X1f=TQkDv5W?riX;?V^A#LqG$zt za7uZ49dVqpb6bSJ(0vpB6b-X&;f4BomTs+R3{*Uy4AgG=aV@tp;JW65z=JEKzrb2) z%1FjIaJFRT$ZS@3JaMeVj+>dw76T7=gROeKG#kauGWq5t^UUm- z`^{ND;VSr@!1h`@t6nIMW@e~(`+7Ew*;9_m7YTt^L#d+-NmTXPH=XizXgw~o88N5|Lk4ISUa-8%NN zNVDi;v5&<)Ec$V;z-?87)9KRH#Cm-s zFqm{q*Y6$zN0Ugd>87>)h%8k-JQ)fC14~|{;+_KIOXrAuIYh2B5pAWb37lB5`x9li zMss%7awY|K)<`rxp)?Y4dWDa(tvv%sz0@d<=fy+UOxO*Bcyg+M={lWcf3kCF3< z_gD>$Z-$YReOtkuGGgb92iM)owQO&#RTsNhU&wHw6x~VNuSPlGmH|BH6iE_yU&BIyurFyi93CV}2WWBD3Xr}!0Y6MM&1zN=^l z8wj#E!3B2Yo6n*hI%llOLuPS$%;K$X4rV9Ys6E0U=dBOs#lI10(L00TYiPfQfR)4< z*7~6(A3=<*YSK!o!e;s_#el$9!T+>S^`pOb>bL;QmHB^j<;zWi+Hdpq@G~3o8$-BZe-YsZ*lMOf(PQ!YFYG+>aw=&U*>Nvy@ct zWzuRf*+#6wrVyDDkSV@>nCvLNU5l(SMz)Q}?noeGBQx1CJWz{FiIMdXSt@~yPm0OL zYLlrkvRy=GB#`lOGue1;vZff>T|~AgfsB2I$-YyYOpB4-O=No$$k_3i?09Xm<`~&M zMAn}`#@@?h57s8rV`PIwHk3fdA;4tc#RN(A-H4yH#K;a3*`Wk7jw2?c3!fybJCAw_ z1&B+ZqIKd5R`-64wvKiZJN}6d0e-uM#K*Yxh)8{ehBvX5n=*PQkFSyAG@+9x+{U<7 zgbQQ7A~8H7iT{DMjBAv9jbZG%fUk@B)-z6#I3#SCxSjylB5^HYTq?lzGHwUw zym~)d&0zyQAH^1m`4lDi+EC8z*FKwob#P5CEcfz%)}); zL?KIwnVwG3nswMBUZ8dNkgne&E!&~}7l##?+bh4e0a7s|{n3Zj6HH6>?)W#zzt&$Z dwQJ>N>uE!rx+h`z?P-iK2XP*x-b4G>{vW6b1+)MF literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/ClassStructureCollectionAsserter.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/ClassStructureCollectionAsserter.class new file mode 100644 index 0000000000000000000000000000000000000000..52d5319236837f6aab6cdfb779946fafc416a7d8 GIT binary patch literal 2719 zcmcIm%TgOh6g{oipkXi=1CHW2U<_DD#A8EDVvAt&j2{B3j2|JcELy{qJa``R%*Yk? z+2j+lj5paPSpcysuB`JB`HrmO+-^pcBqJ*(SgPvR^xS*y>2q(-pZ~mg1z-|I72UYp zi7rekm`dX$K2;INWffO2t>7~i3O*OjRk3_cK|%C03ce8itb*$dsTs?)LK@#-NUV69 zCWCg%bxnW4=0RWv40p3d!*g_QTP0rN`qnc?54gKo^1jud^3V)I-SB)D5*|uqfmgm-x6$p|eA*~(V$)V9QC?S7h-Z8fszG_Y7 zn;Zr;w0a}>!gz6uKjXU1-Lg(05x;~!6>`69h75}>@xOx$hQU(RvNvy&Bk6sWJLa74 z^X(d843+GoH-U_|^xjr0jZq$YL|r2A13W@3hcMCGut|buICThCh9N_U{4KIz=voiC z@q|uRN>RZmWg5eXWM|2#gxhbU=$q{O69VE~L-!{OCv2 zB=DI!?~xE&+I|P|&61qeb+76h=CUPf!e~2bTogyHp$B~$<}lB&apa2C&XtA*oKdi- zVF}9&YsciMmR2H&FE!l6Ee*GEhoPrg;Tnc;j$yu)yhL3QT;btpKZ8Nq>4h$>D zWlCNY6g*Y5hWujaqm*iWQCvK zmRHG-^}Zw2Et9Y9Ngg=+AMl&hP{29*$mpgI6(9*ZOY~9OPqSIX=ntfF`CYJIXcWT$ zwW?fA({2@~X+E&O3m+guGun?2afWOpgl;2S1?q(@CI1^@3_sIw-&l$s04M4UDF=oW ze2hVQ{=G=0$j}~{P0<^3FA?AP6^UIWi@80de!!*N%EYVL_;jK_arQZeC;AhU*OK{6 z@+FjwU36rUJ4o+9efV91{q*{;ynqmw@eHGb#=YpoDQf#LM$u0apexj0rTKM=M#MQp z`^RX{FwRr#1OX!$rM?r>w4Nb=7ie}GvDZXEQbAV1IJJxd{F}C>kwZR;Vu*V2>xlo3 z&OK-X3`v~YeLeuv$QA;Tq+`Yj3GvfgsZi3j*mcC8r6Uoe z(eT+HWxVgP$WTAFP5N@*J@1`!&%3Wbe|`M{U=8aTsCca735psfHI#K2SQej^G)8qw zt_Z}_G$zEjs=;JX>XyZzHi9FE!PxbEC*1OQx9fBnnwA}OOzydD-sa}%dB^N>|EL{& zFyHgY=|-j+Z5uG!#cXRd!-m!T6biT$g@v$HSgw55Z(wZGkB zc=a}Rj?_8#dP4r|Vk!RJ)h+2%)^dGkuh(fi;Tzue$U9BaHs3MWMeCHGbJOGgvDu13 z@}XLaz08~y*xWndp)2?YB2=GuNK5Wt0Su`P*LR~$hCBb!w_7@((}_-8@-5SHk9{8X zLfT0wibQ(D_6Cdj(AL|2ud@+zVVl$?dMoIKwzK03U#I?RrB&grft={@NdwPN(XhtQ zh_zJ>%;33!d$@046ypXaFwQV`bF89thNSHUzR*}K4cXFcpE`C#b-avA6T^$)Gm{sz zI>h*=$!-g*)+%(*4f;7KwY;bUppi-e#tXth%BaX-3e%vrpy&aO;?etHpOLtN@{uBj zyYx-TT$b=N$Pe)ANXS_|rg_ zGCfRpvs}Zxkd6h3Swx!TE)In3Q6b`4{RZ_grzw|6Umzm`U6sK|@;jxJKDGCu+Q&%i n0!*-77dIwFOp{5oC?HGG0_75Th$T5bqB*jK&?-t8tL1+K6xC=Y literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/MappingAsserter.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/asserts/MappingAsserter.class new file mode 100644 index 0000000000000000000000000000000000000000..278322b8416db4212c4f8ada3e1984b2ada2ade6 GIT binary patch literal 4263 zcmb_fYjfPx8Gg>*w3daPY#mb<2u|X_+8eVeloo8`#4(s8b{rBr2}z)-yjIq-cO^&C zrZM+$Ddk#9DJ}P=6b$`T7zi;L7(O%n5x(<*=|J7*NUL2X-pq7dk3HI>_q^wM-}7Fc zbM*CpKK~NH&G@H^3{EKcjfxmfG~ov5@-fwn0;UxhDioY(Mi)*tqlg*#FjXqdN`*NE zB^50=As^*5ECsfd&nr0939FpY^1Uidcrzx0zjw_X z;r`k$HMB4v8audVR%A;2crv{~`X_a#Xn4C8MvVo5bJ-w+CEY6K_fO3l1#b;9*x$Wo z{xeGPIq7L;rK18Zp1+x}as-A~Z#V>z78x{w-TyyUP|5=DWY@4W)-Je_;!r$&&hSg( zh6W|k-6;6!EDNjK50zRitr^`D$VCArJcmrvAK{5%yHsMCnYPt0yRa!pp>H}Bj0KvF zGxO9jrhTzeHe6RP`km>skzcJz~Ckh2mEBL)n;HOCEJRt{LHzcI)m8H8pHQ zuZAAv6g;cpIXo|LbzO_JJ!ecyT_!`r3wV)%*YF3tq~VWvS;H<2Yxomh30Fm`W>>{5 zO&gAeKjT$_jeVQ9x|=&K+v_aYmZzJR+i6;z>T$JctE=8Gu&!Qp0Y_^13;ueEJg7!y zU&Cv7ofNW7ZBp=thBxt+hPUyKhQHyQhQG_*ysP0Kcu&Loctyh^h6RRJeU^u`rQt3d z7q~Xqi|KZjP1j}XMR%g%18MO?yvJPBBU#Uz1Q{Xot=gN*5-hN9t)To%3cIcDw%^K` z`uiTwaCFah82qg4jEE}TqIAB(-oGu{S>cIyd473-tq=*M&6a1Lj%_&MvB)m!^XE4SO-Kqk;-JH@;{uk$*|`(?RoTW(%%>6Uz8`w*|2 z@`^fZo0h=sjesMjuDAv1`$^m3y;Xv&T+zU{m2n_Q+Oq>2toJYk5gMRIV&u@+7&}?+ zYqrAMWr<|a7PM)Z

R&gVW#Ue<>{UjOUNRla&MEX%~1VwP+2l!Fq z&9tDR8^Oh7?&F+u@12{s_m@`y``DzTu&}?YP=SrsxUMEeZIgUk^Ny43X1D$XYD_{76-`*uW6KUw{0Z(*T#FB^7FCt#5 z^@@I9n_Pz5ziS^bxQWa%5!v2;%tGl%=EGqstsR=Z*3*Rv1Cyh=X+?WvrAEQgMZ35raTbxD4O?y2_fGgy1= z3C@EB)#y88Q;S4wpoS)4CZmj(X=bj9Qgg||i a!4)g$4FMxT2a6WfpyD7bqjJlbhW7zuB&nYO literal 0 HcmV?d00001 diff --git a/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/HttpSupported.class b/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/HttpSupported.class new file mode 100644 index 0000000000000000000000000000000000000000..89e61f2999f84a08a0bbde94d43c8457026b0525 GIT binary patch literal 6724 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 literal 0 HcmV?d00001 diff --git a/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/JdbcLoggerModule$1.class b/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/JdbcLoggerModule$1.class new file mode 100644 index 0000000000000000000000000000000000000000..a184c08be0d841f70311519327cd58e5a332a0dc GIT binary patch literal 2117 zcmbVNZBrXn6n<_JSXei_gqPY{wOX_xC`(eXmejT>4VI7vBq<_QnVZceEZyw3yBlnO zhcnLjGn^61_`&hBKg#jkC0!OZ9f!m5I_kxPga7#rRpDVbnVi868xFa85D7Y(6?n&XkiV_~E(6J=NhYHFJlSXNCb+=Y8 z)yqbCt-f2{E-yW<(?O-Yh8f-P=$1VjJEW_fvKn-;;o z-H9JY0zJI#jsLT|gxjxF@2Xmnb7rP(m6ZmT6cBittJ{yUaq z1$P-1vlqme-eO2CxlJNAT(umr)@e6{SLY3zb~07hGnfdeIPju1EIfdwap3S-Nfcfgq#0coFEO=AmVZqU7Jt!!<*`Cy8F_3`2Y` z5Z@l3I7$)HXA zGf%U!C@8#T$FyCa6bupUyG;el8otCM4R7PJhAVP4jtNRft!~scT*8Ec6%7@vYN*1X zI=N7pOyw1i*sfQh(AA#X6#qc9g%eOlvNGi(XY^|?sVdqGqh`nR=t|vc3&XOh zSi;McMCDL+-ufQHShg}9>rv@B)t}yrWDoab#RXIm`wTa-F}U@{fiQz&Y^OT}Bx7Zt z`v&)(Qh~&EUfh$i-H&3Y;oi6gfcPcxvy|Az3zzLgMBQK*J zDvWb+i4KamMq_=9#(okR*+!r-O;RG1sg)wRZ)8L^9G#`;e+BQ*$yHiy(%l5TCv!7L zV7XUFV^G(qqou6Oav zq$lyyGbd0^Fpx<`~)^ zNFQTJlxRJiEF5EGF_rrjEYo*6buGnCFe>dPLw6=agnQ)9eIi{V><7r>VaOpzA(D>V zK$h5DC)cMbkTPtAh*zP@D;FZNJW-s92>#S1xbT|b?EfH`B-WY#;P{9*t`MIJ!LMQ- rMvUXth~sF)aUtTkaGv8lx&8^!P2f|^(mO?8_c^K`KqdBr^rqk6emejb literal 0 HcmV?d00001 diff --git a/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/JdbcLoggerModule$2.class b/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/JdbcLoggerModule$2.class new file mode 100644 index 0000000000000000000000000000000000000000..c55c6f2be6d5e11880836d3da9db523a53d4cd25 GIT binary patch literal 3624 zcmcInZBtW66n>TjE~Hn$D5&^`f*JyPl`4u@E5+D~i2{jKv2D7!S;EES-f(k+(AN6W z*4K9Iw+{USe(9Gw1)X-rv0wY6Iz4+6Vi1GCOr0@z&+gfCp0nrKbC!Sp{qrS&Zv0e- zW}Nq74+d+oR|*$u5tiSGf{S(Nz$G6P49S^cA4U*W5R=oF<@BhW`P7FixGKdl1=r-- zXFhz6FMMc0T)~%8hx=%MLXLC=Nx35A1`@`7_!udAYa5Aq(fu zU!g%xn2tTma4@V}8I7ln1W#~nayp~sxS32?GaAntTH44t!W6a^b=ApYUDQaK+{xQQ z!F7hVh-Dg%We<|?=u~>h7FlkKWYpn~$k3jsBeD$Yd6SF`qR- zftYc${^Ycwi#`dshPz{iBNahZ+D^A5W zDTbEPj%77T#ka^RxTWGY?x?tn@96SZLb-C0>6YHUS8)dYDt?ei>s`NY6%JcwO2s|g zVQ73kTd2({?&E=qhj^soF@9VDK!qz5E>>oStLuZliu%ZKY+bggU1e5o3v{CcvV^qV z;D$qlioZ^4JX`1?r53_)tsWwMk#JEkr z44VTT%gr+ESqyj?E8}8D=y`|kpVy>9%W&W=xR#rgb!j7c9O5?52r8ldw#})pHw8Mb zE!SSc#6qkLwT@LF<(sHW&xjiCP_>?52)q-1yik*uIEv2FDQU+w{U(LeIrO z$Iwd8$3665^};WUE*RQLs)C1Ps=Fn*nq(@aBnRB}uEs`Lu4!CN|1}(@l_NAtlBFv8 zwg)@s!Gh0G74&=N;SKt$=TQ^<3(D1JsC|yQdH8-Oy()StgKT^0m!l3k8puWyQh1+c znhUmY6vs#+tFBM#<>ZvxNtsp~JlzXu zT)@VHrhg8*3z{3AVUw%b(D?$JU!ckFS-=(v&*Q?|MK5Z=#AfO%EyyAW2dAlRoTaWY zgxNBv!zHN0IDuY*c#?L~kp%bAxUU5I7qTc1t|#bXdycJh=px^QY}+feEMU9nmn#d{ z@d`UndTGr3)!V$SUiJdJUL$LEt=xp{McZ+U5_Fr6>aL3@NPf2y-c$I14(I^t33Ho! z&^;xTJ!L38V8;mLhb54|7D4uwfz(z5(nDeFehbcfg!4XOdO&C%lIO=|ICqwCZY<&K zE#d54it_{oM7@%JCFgEYnmqK~(IxZNI!DJy2_*u!IaRz*;r0CHra^M8-qn4AM*K`r zp12TN3;Rp%b`-fzHeJV6_=t9@bUJcoKe~#EtwvSLnZ+wHKt|4zLKQ+dM_(`f{q+et SY2>H54w8arwi2b?fByl>Zrkwy literal 0 HcmV?d00001 diff --git a/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/JdbcLoggerModule$MonitorJavaSqlPreparedStatementStep.class b/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/JdbcLoggerModule$MonitorJavaSqlPreparedStatementStep.class new file mode 100644 index 0000000000000000000000000000000000000000..1d6e2d31ae6a98ece7f3364f6352ac4d27071340 GIT binary patch literal 1631 zcmcJPYflqF6o%iS+iqKyi{&CWFG$rElm!GeDIpMo38aW&fuzycOt(W>vKQQLk)Nd{ z5u?%Y*&k&*v#n6nL}Sw3WKPb^J2THYb7sDM|MV5W9G)hiAe+P_rc?~7c$h>tre&kY z(UYV>T`Fec=#zFfj(%z9R6Jssc+0K8ax2AE&vk_vSe{!v^2HJNg%R*TIKmA`wduK5 z;Q1T;m>X~G7Y#xALSY2rh(TMYCHz&JSF57R@G@_Dj?QhX#7kU1Ja+UdcgrR3M0dP$ z%@%rDlxh`yqg*ocUZo=Z&9FQD4}0Yp#(#qU22&I#!mI^?A@f&Fao=*S>H&kA-doA< zt{Duk+RGg~=5|e{=XECA-kp?HuS`kk$y=^?UUN#q-{B>jdejhMYoEc(;o?@M^v(o>?;A1HYE|v`o5&0eM>oHOyl{ z#bbs-+wO~oQ9RLb8{-;!kkZg6n|`Dix-SbrCWawu+MY|){h4e_(zZ&6^g2*v3;zX4 z^IDHDd?Ru#%U{&qRhr!L482s{^vo&C!;%~zOYos3exP?m=20q;z;z6PVVJx-WaXEv zgMC29IU?`KV;G?}7LIL`eiUO({X9Ct-egLd{D|l|6shmHqQ5~sT0@1KxD}35N=YSm zoJE9wK%JZ#J45V!INZA3<#d(s2ptolCXG1mBHaWL6o~v*K0_&_)W{j)r$~fOQVE^T z(9xoy(-r$dx=5YMzo697X%wP$bQz~$5}*-pDqPY)7j`I~UEIeukv2BJN1lu`gKK1y MG(*7y^ezwm0FKqYcmMzZ literal 0 HcmV?d00001 diff --git a/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/JdbcLoggerModule.class b/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/JdbcLoggerModule.class new file mode 100644 index 0000000000000000000000000000000000000000..9a2c74c222e789fa7a857758d6fc30f6b44f0189 GIT binary patch literal 4064 zcmb_fdw(0n6+J6U8cErNSm1;}AqfdVc4EtklctG-o7i!Jjf~yMI8{=hD`_mRS?!wL zmE$x`DYQ^ZpFkf#Q~IR*-TqpF$uIo?{V4qqz?s!rk{@!5f5~Ha=kDyCd(J)g&geg% zefn8O+1EdB#pJ z4P*9F=!{>+&zQtFq@g3zJ) zoNOC;9cQ*Ii?vF2yj(2RDX3%M>f0^HD33VR1xxy}tYLR`726G#HSAseW?deL#BwUk zkcOd5fH-Rzb|stlUDK`%uD6U|X|YYuxz05OY*3L9UvTBDxuifV>Q*@-QJz{PUUEEt zg5b4r4N23>*GeVnsqqyJv64~qNLp9R_st~;o4`shP8bUTkAdJEfgcOJDew~wDI@T8 zu)n`wLoKsKc3alo3JH-VE*@DrsxHUWWk6kytIG+7m=Dx=!BpDlTASHEMVp51wvj7E zkJ+=1TMbl7B}7c7zcUa@?>vRl%WMV(Bo?LXQORVrzpuZK@x+aqKj*00vTBAsZyINP z!zmh0AL~cQAkOGG3WnTyesuWRi@oFLhevvIlNT?JUK04Jj-TP@Iu7HAj#D_MZ` zr~>c@9e>21=(&Mn#9>=2sXoHESQM)DHIQj|s4;Paa@=AhOvbJoHwRU9oxX9i>J4&0 zLixOkn#tlk0~7eOj=$iq8icn}fALv^qU5&mrj8HsHw`DYM2UvS+I^?QTkl|$_-2!G ztD9S)-Q3M{^M7qX^_&GAuhD2o*xJ2kjcn>Hvif$fop`}0anrlb)>e^zy=iMWv_WI- z-e`Y2)4pf@uf0t5U*XtcF?5avRmKi}!KrVr8jRK`f_a0RH=51s_u#rE$j7FQ>&yCM zCo=7lRV&MUt=KptOl9tQ)G5avmUG6UshZ;ht+<+I*~(tHFWj?0R+b@ylkLQ=1n?yo zTye?fdd>9brVQ7p@~q%aUtdrsEtzR;gZEesD{B)@XR|Ah*}e>Rrs#BGYLu^9`fxn} z?kDXFVAEm`jvthNa46K^ws*6R#&hLGvm|rjUbVH7kS?L_XhO|7c7^4*XjnBlIm_me z8SidEt6uYisL7pNLuLbIwI(NQHr+GW&-45~L~saC@S0YeF@Fq1)J6&oSw6>k?+@?X z%Q+h0=nUs*yzl6_jYvpVc9Yxf^fuF08?jjaA^6nr}==mp-w~Mt-WjQ1&#SJQP4lKfH{u zM9_-v4jxfaJ-TsJR~Xe*?8LVi*>iXl&*K1N>fsN)lQ8fkPesj44KFNi&H(si%{ilB}_7->QS zZlMz&kfK|J{9&-{5QRq9;j-%KNel%f4B+d0QgRx=S)2^JN)NGTD6a0a4|3`HpIza7p0)B;Jjq|z3H&ym`~olvQBVK? literal 0 HcmV?d00001 diff --git a/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/ProgressPrinter.class b/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/ProgressPrinter.class new file mode 100644 index 0000000000000000000000000000000000000000..bb02de2e07b6da337bfb85c2636d2d2c178a9e7f GIT binary patch literal 2719 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 h&>I=2eebk(>Z$5=Rc6GZ599k literal 0 HcmV?d00001 diff --git a/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/SpringLoggerModule.class b/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/SpringLoggerModule.class new file mode 100644 index 0000000000000000000000000000000000000000..c1d2caf9692a3fd7020c5ecd0c0223bc7d8796a9 GIT binary patch literal 3294 zcmcIn{ZkW17=AV+xezW2D5X)WXsHdc^T4(xW zr~gf7+M;#rAJ9Ll(|7NJ2_Ru~EW_;HzPJ0l@B8fgarx)pzy1br0Z-$2AG2``U@nF) z;+V%mH%Y!!;;e?-YH=qH4U1~HtKnV@OFhV8Sq=ANSn0t7e5D~DM<2dci-$3Mqv6{) zzQgxD_yJr)K|@hPi9w&YZQ)E?+;xS^5OZr;SuP8Qp+75~vf)~*m)49xHcrB-EY&SB z(-5}zfP2M?+IcNolvRUUW`P&DvDT;>F1Jesxnb~{X*j}_b*Ctd+k1`@U~;K$duCOv zn66o{#H4LYk9(%H$(ZBWHQwNa@=9ndHNog)^oD7h-ULHeYGj2WJS|It;c(Wp#hrS! zAe?1RfW99^Zmn>~RO_ZN>{U$Cu)pPjpGHX(>SZHWb41DqNSBiJ)$88;W6|?QBZ}L!1|jw10SPY>eTT z)V>#f5N&Pn@5JxW2H6wZIIo5aYPhI|OKP}GR_FZ4n>AG&4DP+fj3SC*WM6kw{Lb5} z(y96}Nw*#{iQyxDSd0dokJ82Z38OWH<5J`@M8+~>8L}zL>t02wT(auiUNiYkkIMp= z8Oj$O=kSS+Gx(73Zp}>HpBv5HU7Ei$H=13Xo10nEAatyvtm6be(2-XAu6N2a%XB?K zxon6H&uAs+l!{8>=s1Z}N?k>ViAM~*yMu(`3MG6daB9`zRk1FeN11g|$P`SwlxbyQ zW@l_`uyj;m>yUW-MktT#lq9!#twsr;fo!ZoCFOoz9uQo^=aqk+jyf8Yo==`$fAX~I z(m?+^{9P=piK3@rUB?DCHTGCaxDCm$`oEI4t%pqS5VQwW0>33{()Pbl7@W@0zk`LzQo}5YY_pb*zf~{@ zhpa!;s;^mTm#N`4xK$U6t5oh&3nOiDr(V;6-rXrrP1~g2!;pGSnzsjTP|wI|oTiV% z0fdmmF&g_->!6RykgEM)7^3GW&8KOO&`iCD#$j6BpgoM{L+LGq(*0e}5dH&^-$)X| zM>NK11|f$rh_m#h2fOhxQnaGd_6q4DtrSv(kfOT*P7=VWHh@SIAf(zG9aE5qQhR435*QV7Bxp`w{gCT}wH z{k=Z`jz|+E36_Mk5m!iKTuIpO_P0uPimh@bXJJgwgjMF-CYP(RLRdd8zJ7WqE*wUd zaLRqn${MY-;;O6prCgzX&$TaFD_n?fOAgY9*6`FOY^JTdt|Si&0wEgy0TdHvh)0L{ Hpb-{-<_t4u literal 0 HcmV?d00001 diff --git a/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/textui/TTree$1.class b/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/textui/TTree$1.class new file mode 100644 index 0000000000000000000000000000000000000000..4be6c3d2026bbf9ef03dd45e41e7e66dc39c88e1 GIT binary patch literal 3077 zcmbVOTXz#x6#h<|W+u}qw1E}^qEv#0mJ&)KLJJ5~3Wd-DEthgpCdtqYB$<$zl$(MV zyn{EqP`oZ*`pjBfsw^)rzW4`x(g)vs_DvN0&ZIR_@S&xPbN1QioPEB%_qX@t$GcyD z3t$DlP_R?Mt^gKcw;TpE)MGHfojtYKi+w8gs~FNCa6rRB98z&uLlvIZc;XoqM-&)R zOh{!?N+}H{j%pZ2T7jkDn6!0VTFq#fgRF)oA+O?uG+t2QsBopKs9;3FNdaxd z$b{X3X%1`>2*r;XBSti1QrZ5`id|(_Im-k+bi@5^~8S5FrZy-piWcbd!~GRHOZC9Vk6mlts}H|(aVDkGm% zDNfRm!55fS@}%fmndm@CNmuFyTn2Q9k@qsD;EYG{vmRqlD|nWV4%o#)((JKhmNk!J z%VbPQg3Y;P#&*cu9j2SMQ#zi*If1ZU7>*iwBbhd%WN+5aIUdV9CTPBg2*`r=DKlHg zUaqkn1&;5ZEc)dIq7&AuP8XH<5j%I)U@h&9dGD(QyvT) zT|~w8j959l{fT2{($#Shmvp>^w{^UOOA6lA@g6QSFgo7H2LcV=jmjtr%=UDa zJ>lSP(_k6v_z)lIxPo&M?Wi2C>i8HJbbKPiBs3kL;xh^iGIV^7^Q`wN2PNDt&^h&6 z-4mrmewD@8)a{gtup*3;^qfW#q~eY4v{4u^PZZ5ul1)HX zvXRddkU(4Iv63fU_oFMfZp}z0O~(nhFK7FXO{f2QC@p8VZ4>^axfRk}*EGz9OMPuy z*;I!#m7Rtu`aL~@FfWsStdx(JlH`5);_19!M7C8%S8nsR|EOKa8Vtvp z2V~=5MIK8<{D1_}h%aTh>{^u_ed0Jt<=T_PZG6BJl6P||^|HhzZ@mvjEjx4{zrgaF zNK?6gM1R4|n-X?Yq`SA$tqC3p)W`;EVj+L0)bmF}7*+N4vcUnI+3om?ri%ZUpoP1w zl)AaD<~*~d^#-b2mfnD`0c zviU$P4f(Fa{}mL0t5AGn@KwiZ9vX!jRL4*g40QTK{&8qArR6$&Z8uRH@^jc%9a9@? zMo}lVL0xJnRga@?6n!DzP0YB8p5V-yZ%{u}9rBH%p|l+w$1HOkvj>KJo>mSe#W)%} z1EGL?N|i=K0crF$nucy;&X5E-_a;KOFz*)TcLsbhO&%c5Lyg)f=1<;Oz)Qi0O8~X8 zd%sA%1YN(dQ5nZ0lq703xKR4mT-s1e8`56+`q;fMrQ*>s)OFT+QmFR3YmDm+5faUe zTeDasXC_5Pe*_CSc3?K++l*CAV2ppOv4(%^(TS~Ci$Scz0j@6MNnFMTegwL41Di39 z9(<22_<^T>LN9*CcKnJse!~vjL7%8XztFH#1hGqmutz+My?l9(XvKan+h>@^i)i4h zF$8GMz!Q8~lewK_0HrlVL55K3;x5TWX)SM%RFu{cmk+bWTw+^|8Z?VqB8-t$5#hr| z-c@MfcWk1h67@-9e~Pbdrq_L_YuF(EgeEpB=(&psMb z6@t48w#iA#TLh}O&D9@RutmZ401?G$wTj;NarRN_N0ib$?kwUg|E-|5gFdowaLTX! E4MBw*p8x;= literal 0 HcmV?d00001 diff --git a/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/textui/TTree$Callback.class b/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/textui/TTree$Callback.class new file mode 100644 index 0000000000000000000000000000000000000000..f8e0a91090430cb45ed571b9baf33a4dcf47060c GIT binary patch literal 417 zcmb7AyH3ME5S$Gr7fgUC-#`HkCnzXL83`#;M2bWd>GsYm%jSG1`4Q#YDEI(A3ULWY zsa@<#qn+8E@1M^v08f}GTq;}sIz{SLn^A7P&pJ&+gv|={j_^ zmDj>Wwe$!+90U|@2rvDK=l@T{e@^Y>bn?oSVq3yY}j6g|&h6T4H#O-X@3AwUB5ICPRU{h$t^ZJI)ZlRy&{!2;>o9@0teaWpe7 z$(A1jLIMe-MrlD}OWP%1OSUXv0e=8-?$|gcNhNAazMl7W&bjBlJAU~0H{Su6#`O%c zIG1KPFX1&AUdUh&B?Ge=q)?LS*CotJc;g5z;*x~R8O-B~fvX1IR7h=V-|<3)#B#Id zD45qg&++H$ItZLV;e5H;Y}mT)R&+(%8@C&FpuJk9xn(z+wN~A+Yfh!LZimiR*mCW) zHQ#Z@1gJ#7nhv$XP-I`z!>NW`8>rrN>opQ95LH;~ozs=My# zu;o+F;=bkCeg(}DI9qYnU2n~8I6u>TlZo)AOCOi={pvnkM9K}WH=8V5JYV=g;pl3p ztGAZ)W`~u_Wk-KRD;wIsby>1jxR5XOD?-5#parjH;4K#A5NrB?o+^o-v8_o7QwnGL z!cfTQYSjsXvFS-7mHKwNz{~J2)QmuV(l^w>qV<(p+n#C4T5Y!cs&mzqdzOjX?3A>X ziIaHA#0Z`-@vMZCcuvAKh2v4%MQwG-_w}~)mWdO1(nJo&O+0~N1B)i!M%ly?#tkf+ zSiw66-c>l;U)Qsn_cy!3>Bq<7UEsau-N^1GA^JJ3YqdwTCfmSpgN4Rsxcwg;tJ^{7 zG!%|iTfV&Nq}P|+dR^L*EG+ueV=KfcU#Ww95hrOT?c@{0QO2Bj427ro9K+N6vO3W- z3&h_HXILffc%GvV5$6~fv38NPzD4T&T^KtUu+$FHR&fWJucNc0j3>wje2)a~lKVdS z9uWT_UWnEr6uj8cG7_m_U&#gOaD7a!IQNe4=ORtonjly44w>)aNDS}o(T?!X1o)vt z`y+vWBJIx@!!Hr_XdARkJsugNgeVdr!p8XAPI#V@WG$<#J4k;DBk>s$@h>P*9 zto|Ayo9&$)8(!%G&Tx~=WQaF#52k{E#d^Sg>jBGjW#&=fIjO-pQVT-b zx{ISbh*@8C0i;;K?=bL34@kNTVm%5ZegNc8g8X$5BnMV#qNC&r>7+s_tGJ8AUJ2T! zd>)-{+nwr4Na0o9JJFxQDcFeR1~7@K4kE|VT9WR>zwGAK3)pr!Nf=&Z9-cn*aP0pa zmRwGEm{*udf`o=uoY;jrJQ=IKrJIZqsgPt0CNmtlZ(xRLNt>LB^q<8Le}_2EVgbk4 JP(_aU`3LI?^@9Ka literal 0 HcmV?d00001 diff --git a/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/textui/TTree.class b/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/textui/TTree.class new file mode 100644 index 0000000000000000000000000000000000000000..b81c08c7b4c9083dcec82e914c9f9b2d72282e0c GIT binary patch literal 4028 zcmb_fTX!4P75+vVX-4uS1Q9tEHi-kK*fNgdB&5_16x%q&pv11_I(6ETjHIzViEh=5 zQa7aqQUZmzTnfDeR=a?gyztPjmDnrIT5X^Ei~7*pw`WF*aLj|;+H0LNXV2_!@BQt4 z_Bs0dzyJIf07vji3`v+W8Z)w`Kh_d zh38wJ&77WJTyBYaY-gUh?sUy@6)5NEOruugE0Y;@Ykt$LL$p5;7I+9U8vh zFZ%5=oZOUx)O~NKns%Am#3K#^b?nQ;ygoF$O@Q6I=~K7^y;f~a2&r+~$(oLPvTQQM zT|qYH8`g@wMjC8J&smuz`;L8u-m68+sxxX|jSuzUTea$CM`tF2%02PF_(o@PE;qnw zv+gBS!<*udvsk0`@X#=;FOs)Pc2&U(LmkY|0VDWNrLx1f#+RAom{-J5T1 z>3FWzY!s}Mwrrrdx7!a%Yceo~BL*@!Y~UE)VvJqW>6sAiUl@2B?-;l)!%-Yjuy1Sk z3pSquunBZ;X-v$l8+ZfgBbMd@SVbxd-HzUbo~=*DCc|)$7yaU57f@YB&t`!szHIrx9=JaLYfjyq(Ra z^x`%|9DPBw9?ur&dik*zwnlP%TJr2J@G$Ah$C-L17KnESt; z4+1XD+A>#YrLf8qiDw#1!gr_X+T~2vc3gI<-CmWnC0;Vv_@idM?lq{<&a4DijQfwo zR#Ys`q1n#Y?WRX}7QB1I)g90noO)XedSb`rk=!mSA+2u8#RLa=UpvSi@+dSsj3+R} z=V4wSLr8Ny(y@M$>(P$&KCTaStb37=?nm8(v_cPqy^C`XF^}OXj>oxj5J8yp03~4Lr?eJM(9r-%r`jpQVqO~su;vRJdOkSI-j1v)07VQ zfcPfHxgxaZ2zw)+Cg@^_rcdCRz=4-}e+}{7qjwQo-b6f`4y%bCv3eKAa(ZMFyEd_V zWCIWUkza)%)^~drMxit0NAP{mYOjwHSk+0#v-lQmgruwbwv-&Ah*N((73u3AO{sUV zCxVo^fd@avm6Uo5i92|RyhOvtwWOAeevYC{YVlKO>P@KO<9h!MqykSzH?TL+%YnY# zL~o~bpD!JcrTf$iNj(+wz?0e?d@Y2(K}|&%(;J#{^FN;mr(rLuLre`&;FZ6Ky|BpR z3e#R9i>t8tzlI8~a=u3Sb>8!Z>lMZ`&eLLwsn+?fAJb$w#>}kZdCahk25^aI#|$H9 z-0hsK;|0njC+j#xUCF>YW~nR1u#Oj5DysMN60*$oX+9?r{TCinl!u;E{)s+iLBpAU z&=5Nm=6!;x#QPgR)tNti1F0|g?58a1$(x?jhW}0Aj3Va`B~p!N>87~S=T)MBjIbIX zmiqGmqi54wtKd~Uh}V$9>m60l*N(GK4km(&k?#aXBwBGYnpQT@cMs2Z@mhzA(YA|A zbgkuL*wgM0LcD=pchSF`cw`g%|0=RuI3SpQPW?)Kn^}5?IbH9-?hmkqSt9Nw=y%&Z zlqeD&_J5U;k=r=nQQ@0Oc*%O7Wq4_O8ubS|%i`HF1P^&oTtKx$j2t|;VzE9Gj9Z3_(qWvrdMexB7@T0_= zG-zF3#Fv@7oO|w>d*}7-`31lp77b)Eoks>UI%ajuG3c^??aLrwDAupUjo^-OJG>G4 z%I)kkj2tLeg@+8aji2eENVDsEx59Gd{$`6Id+fC(!(?5#@*?V4(r?DOxQAy8rzLz9 z`)M#6b`|w6oDP(n_HB6`D$ivw&s|sg$BqaBNr;oW?e(~DlqD>|uWoug5N_M@`n>10 zBS-SKw4x4=Lgnz3Z0$QKy(wplC?GMFU-dH>9T}!&4CRf@A=t-UjD{EawmehutIQO= z6A#dYj(HO~jObWkIQqY2hSKL|hNe>;Udh)5?EbkcR_Rw{>6g%wV)0~YWa}8EGf&wXH{J_X)_Lb0SGCQsEK|EMtsfD+4%8Op-^12`x*k0;UrBB1$Per#sH& kY7fxv$k2!gq$3WlCxqqzkP>PrC#VWF2Vohtt707acd-k%$N&HU literal 0 HcmV?d00001 diff --git a/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/util/Express$ExpressFactory$1.class b/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/util/Express$ExpressFactory$1.class new file mode 100644 index 0000000000000000000000000000000000000000..d47dc88a0338471252db0fb7d5fb00f28fc8df60 GIT binary patch literal 1000 zcmbtSTT2`<7(LmY-C4)+uC3aOt@xmQFjeT2R>T_=w)H^~1VJ)0VKz%PDRU9~uk@ut z3;uxqsM2rN0Y~v=?L+ci$T{E1N&fu(bqin}iyoSobMeYU4RanEc;n)&iv@<}rZOtq zVyG{#oG>`MHj)fuZDr)QycfviSOl6nlWiLceIgQ7)MeAjIx2PXj$w5F@_QoF^gx7} zO@1)=UyPB-t`=!3Q--~EXnR~}6^KCa?nRHM!bE|+9*6&HeQVPbw5bY+-Pd+12TMr3(H)a}ZF<4z())Hh)B z8S}P?+B>p&63PQrc8aMKQBqf2^*;Y#IW z0+S3ogHt|!2Zot@^D5pjZ2vDg!`i?U_(=b`N&g(E(<1LcPe~c4$S5{G+<;wEQiDf( zv)??!Fy;Q;0gB^PIfX^kDZuM=x&XI+qjq|O`W59>{CNf6y2Fp}5q_$~-w*!@=P~%{ n;nV#QGkDRDFELBe!3gbRwC3q{Beai_yav@IjRei(HHQ8HqUQd{ literal 0 HcmV?d00001 diff --git a/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/util/Express$ExpressFactory.class b/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/util/Express$ExpressFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..49194afe5c41d4fff32d5e10c1670164afa02a22 GIT binary patch literal 1115 zcmbtT%Wl&^6g}fOaqO73l!j7X1sWg;&{2_CB`S!DA|wkWT2%tE8QVkZ$gzhlcKMy7MrJE0Uo&_N< zNcA=ey4DY(Alqc9v^#qY`c~}IA@fcU$>;gVmC3GfLy9bpx$KD~P<|2Av;BakcwGMM z*1y6K5i64Kiy*_(_RN$o+@bWcUZ?yiYQA{ftp=E?TOcyj`(9YgZ|%f+;>qnmO=}lS z)>V&1Rr&#?OS7V%q`N`n(_=E}X#orumDse-lc!+;724B3AbXA?oK{9_ zwR;5iXgj8{jfe}Sg>kWOSLeBMyW74kG(C03wTjrizjkTu9B Fz(2lIAFTiY literal 0 HcmV?d00001 diff --git a/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/util/Express$OgnlExpress.class b/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/util/Express$OgnlExpress.class new file mode 100644 index 0000000000000000000000000000000000000000..3472e9afac2c635df180ce9f8a637a1caf3ba8c7 GIT binary patch literal 2251 zcmbtVOLN;)7(Lf^qF7P$Y7;`rBZa1QY*W!fXu)mLCQVDhPJo0Ihw_je;VLLn#*YwS zN2hcJ8`zXR!!XlDnV|_oW_WD*O$=~8SvYdqVF--JlJ2K_&v(A>oO|`#A3y#C;1o(a z4q-~ec^xrKC2GvLN@P~YC0y3SX9tUj<+&jTD8k{g@OF4wPBgAHeI-CVEQ zHI9rco@ZBQT&q^IIh@Lu{Wa5aosw0u%+-xGvu1fKC4bXg^H&CDm zFIekAebj;tZY^gmF{yU&K}42Gvnn(d|IzG=*Q@>q(z0A28HIbDTC&k1oWkWOSXjdN z{yQc@`k@PoQOK~gNIU*ll7wfivArD|mfMg!6_=tXQvZ#!zTh{iW&4sN4l_daPl$;P zjNq_B-(JTW7{jhhUdZApV{bb#efvb4Kzz`nNP&BZNHx&-!E(ziDxB(52F5=RyKck@pBzH3{afw%B>8=;m*47`JP4Omk8x&2d%Y#X+2 zH*r&Pg_HY+Y=dcfiPlXm%Tduw>7%Vz7)s>>U82#POii|AROsSvUTWH>&HQan4Ne2@ z!`y?6ySFf!KmE_1Z#6hzW0aagge-XQ$?jcm(8y<^IN?tDmlQh66t{{aJhcyjX8;fC zm{^b>fB`Wr@12a(*1SH#(In!00{YV1Q0X1Sira|aL*hHeVtABSIqZRTBv8X+d@`Ez z@i?B~NQuEXL$GdgPMr7S>F<%)K}RvMjm|A-85#56^#hW33p?m8X0qEbehz>RbE(c{ zl4^hez$SX}A)_BL_HmGMGhDLYB}1bZE0GzJq-^U8!RvSSglBZ&WwQ4J^0t3Np@rs0%^XP`7Z z+g88?o+B6O?iA4kPfKU+p(}k?Rz(E*jNkFk11dw!X|1#xPLmWr3Yfr|5NwWRNjD6U zCX?Ml|JC~tzo0H(w)!u^Hzk*+=Yy`x(+fet3OSq&u}=rNfTUn=Vc&eUVn-8C#KdU8n2>Pbq_>`#&ZNoELuMiPYaaXnKgw9( z1VOz(I_a0H>UvdO^*%n|-T_?W%)*g{V+$vQ^1w5GcQy%C6cH*<#;EYYmr= z^z$lH+T-6Ax8u(96z6leX>FHZ8U{(|sGjx}?;`E_az0YR)yALYMg45!duD{&jcLx; z6mqwD{5HZf*4EV<^e6~*w87uJEePn!mU-7 zTU{Bo$`9}h{1jKl`yP#S1~;L{&EnK&_9I{lrw$*BEF-f4}SSLndS4@vE6DHZ0 zBrZcLgrLHyq;xNcrs}CzF~ASfRegqmPquyaWs;-(fxuBjYxQ_lFJ+;D72AarF(PhdFV3|BQi6#%`o|opWY0TjAV5DGuS8P-b>GzGN!PPbQwwkNMV3v0{byYAe785kxYH~Dmy{_hLsDu7aY(heObDaYQe0siMTAg*ajM_J zI8L5U<_VHgJB*Wm<4;liX|f)Lwn>nj;|#}Hjx5I*DU61A>KCGe1SppRRmLYpF+g*a+%1c6x zB*teyl<~}Tt)y08bRW*#&iS1=|1nBX_n=I zk;Nkoc|4XoD_N|{aWRWEhMe$PA@>?K!%nT?y9RfJ$xUvYox4VhdzR^67_M(cj%`@B z88wY46pm3B?iyrwL~q9caEUT21K<)Cjwvgw8l?0{kTr%DR> z$~?0hAt7^H4JR%%Ul&b}hfzQ&);lSb@6l;sb4y9J^*5on38&TlC}`NbLdrYdzk|!N zSqx);?is_-Tl$s`50@-!dT(#TbvIfq9k;M9&21e67}PO}F&$4ZqhlNs3`GU(N+>;_ z>bQv#!}EV_7AdUgy@E*PuSpemNkqouu7vOq!-#qz3&EV1OZ`E6!Hs@ zjsbb8U<{a0;XvvG(lR+c7_yz@qqHK0W6vF8N^0>FGMC7H1zWsCuJ^*TD&I)QGtNgb zxPwXJNZwS;+eezp2g+UE74j!jZD@V4%h#~wF1Czm(wGfaNz<7aYp66*kxLYMZ&&D} mMh>%GIcL?qfx;E^lQwRAL|Te^U6c~J%+X!~_i$g04}JhS!xT3F literal 0 HcmV?d00001 diff --git a/sandbox-debug-module/target/classes/logback.xml b/sandbox-debug-module/target/classes/logback.xml new file mode 100755 index 00000000..d80c27bd --- /dev/null +++ b/sandbox-debug-module/target/classes/logback.xml @@ -0,0 +1,79 @@ + + + + + + + ${user.home}/logs/sandbox/debug/servlet-monitor.log + + ${user.home}/logs/sandbox/debug/servlet-monitor.log.%d{yyyy-MM-dd} + 30 + + + %d{yyyy-MM-dd HH:mm:ss} %-5level %msg%n + UTF-8 + + + + + + + + ${user.home}/logs/sandbox/debug/exception-monitor.log + + ${user.home}/logs/sandbox/debug/exception-monitor.log.%d{yyyy-MM-dd} + 30 + + + %d{yyyy-MM-dd HH:mm:ss} %-5level %msg%n + UTF-8 + + + + + + + + ${user.home}/logs/sandbox/debug/jdbc-monitor.log + + ${user.home}/logs/sandbox/debug/jdbc-monitor.log.%d{yyyy-MM-dd} + 30 + + + %d{yyyy-MM-dd HH:mm:ss} %-5level %msg%n + UTF-8 + + + + + + + + ${user.home}/logs/sandbox/debug/spring-monitor.log + + ${user.home}/logs/sandbox/debug/spring-monitor.log.%d{yyyy-MM-dd} + 30 + + + %d{yyyy-MM-dd HH:mm:ss} %-5level %msg%n + UTF-8 + + + + + + + + ${user.home}/logs/sandbox/debug/debug.log + + ${user.home}/logs/sandbox/debug/debug.log.%d{yyyy-MM-dd} + 30 + + + %d{yyyy-MM-dd HH:mm:ss} %-5level %msg%n + UTF-8 + + + + + \ No newline at end of file diff --git a/sandbox-mgr-module/pom.xml b/sandbox-mgr-module/pom.xml index 29b196bc..0d17e5f7 100755 --- a/sandbox-mgr-module/pom.xml +++ b/sandbox-mgr-module/pom.xml @@ -6,7 +6,7 @@ com.alibaba.jvm.sandbox sandbox-module-starter - 1.1.1 + 1.1.2-SNAPSHOT ../sandbox-module-starter/pom.xml sandbox-mgr-module diff --git a/sandbox-mgr-module/src/main/java/com/alibaba/jvm/sandbox/module/mgr/ModuleMgrModule.java b/sandbox-mgr-module/src/main/java/com/alibaba/jvm/sandbox/module/mgr/ModuleMgrModule.java index 18a6bc80..728bb987 100755 --- a/sandbox-mgr-module/src/main/java/com/alibaba/jvm/sandbox/module/mgr/ModuleMgrModule.java +++ b/sandbox-mgr-module/src/main/java/com/alibaba/jvm/sandbox/module/mgr/ModuleMgrModule.java @@ -209,7 +209,7 @@ public void detail(final HttpServletRequest req, "JAR_FILE : " + jarFile.getPath() + "\n" + " STATE : " + (isActivated ? "ACTIVE" : "FROZEN") + "\n" + " MODE : " + ArrayUtils.toString(info.mode()) + "\n" + - " CLASS : " + module.getClass() + "\n" + + " CLASS : " + module.getClass().getName() + "\n" + " LOADER : " + module.getClass().getClassLoader() + "\n" + " cCnt : " + cCnt + "\n" + " mCnt : " + mCnt; diff --git a/sandbox-mgr-module/target/classes/META-INF/services/com.alibaba.jvm.sandbox.api.Module b/sandbox-mgr-module/target/classes/META-INF/services/com.alibaba.jvm.sandbox.api.Module new file mode 100755 index 00000000..b90a60e6 --- /dev/null +++ b/sandbox-mgr-module/target/classes/META-INF/services/com.alibaba.jvm.sandbox.api.Module @@ -0,0 +1,3 @@ +com.alibaba.jvm.sandbox.module.mgr.ModuleMgrModule +com.alibaba.jvm.sandbox.module.mgr.InfoModule +com.alibaba.jvm.sandbox.module.mgr.ControlModule \ No newline at end of file diff --git a/sandbox-mgr-module/target/classes/com/alibaba/jvm/sandbox/module/mgr/ControlModule$1.class b/sandbox-mgr-module/target/classes/com/alibaba/jvm/sandbox/module/mgr/ControlModule$1.class new file mode 100644 index 0000000000000000000000000000000000000000..edd6258234e0e7116ce8bd8cd5b061b1a8dc4263 GIT binary patch literal 1822 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 Y@nxJiyaC_BKk)>|2l;;-ziny#KeQ#gZU6uP literal 0 HcmV?d00001 diff --git a/sandbox-mgr-module/target/classes/com/alibaba/jvm/sandbox/module/mgr/ModuleMgrModule.class b/sandbox-mgr-module/target/classes/com/alibaba/jvm/sandbox/module/mgr/ModuleMgrModule.class new file mode 100644 index 0000000000000000000000000000000000000000..40240d565389246aaec3870b93abae99033da96b GIT binary patch literal 9307 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 literal 0 HcmV?d00001 diff --git a/sandbox-mgr-module/target/classes/logback.xml b/sandbox-mgr-module/target/classes/logback.xml new file mode 100755 index 00000000..e5836cd2 --- /dev/null +++ b/sandbox-mgr-module/target/classes/logback.xml @@ -0,0 +1,19 @@ + + + + + + + ${user.home}/logs/sandbox/sandbox-mgr.log + + ${user.home}/logs/sandbox/sandbox-mgr.log.%d{yyyy-MM-dd} + 30 + + + %d{yyyy-MM-dd HH:mm:ss} %-5level %msg%n + UTF-8 + + + + + \ No newline at end of file diff --git a/sandbox-mgr-provider/pom.xml b/sandbox-mgr-provider/pom.xml index 64d1500c..a69e579b 100644 --- a/sandbox-mgr-provider/pom.xml +++ b/sandbox-mgr-provider/pom.xml @@ -6,7 +6,7 @@ sandbox com.alibaba.jvm.sandbox - 1.1.1 + 1.1.2-SNAPSHOT sandbox-mgr-provider sandbox-mgr-provider ${sandbox.version} diff --git a/sandbox-mgr-provider/target/classes/META-INF/services/com.alibaba.jvm.sandbox.provider.api.ModuleJarLoadingChain b/sandbox-mgr-provider/target/classes/META-INF/services/com.alibaba.jvm.sandbox.provider.api.ModuleJarLoadingChain new file mode 100644 index 00000000..8a1bd53c --- /dev/null +++ b/sandbox-mgr-provider/target/classes/META-INF/services/com.alibaba.jvm.sandbox.provider.api.ModuleJarLoadingChain @@ -0,0 +1 @@ +com.alibaba.jvm.sandbox.provider.mgr.EmptyModuleJarLoadingChain \ No newline at end of file diff --git a/sandbox-mgr-provider/target/classes/META-INF/services/com.alibaba.jvm.sandbox.provider.api.ModuleLoadingChain b/sandbox-mgr-provider/target/classes/META-INF/services/com.alibaba.jvm.sandbox.provider.api.ModuleLoadingChain new file mode 100644 index 00000000..7457548b --- /dev/null +++ b/sandbox-mgr-provider/target/classes/META-INF/services/com.alibaba.jvm.sandbox.provider.api.ModuleLoadingChain @@ -0,0 +1 @@ +com.alibaba.jvm.sandbox.provider.mgr.EmptyModuleLoadingChain \ No newline at end of file diff --git a/sandbox-mgr-provider/target/classes/com/alibaba/jvm/sandbox/provider/mgr/EmptyModuleJarLoadingChain.class b/sandbox-mgr-provider/target/classes/com/alibaba/jvm/sandbox/provider/mgr/EmptyModuleJarLoadingChain.class new file mode 100644 index 0000000000000000000000000000000000000000..ddc309fb587023bfb4845be5a623497a0005e57b GIT binary patch literal 621 zcmbtRJx>Bb5Pi$nDS~_{YGv%u!c9zU#Apn`!kk)2==bh6u;lKREC=GxvNEyo2l%6m zvj@g#G!_;+llNxc%8t1zFT%bs%Hk!NONMH~aN+to;v!U@@B|;tB0dpu;ORLZ8$DBjG&~v@ z-i^k|!?g~kp}Z2t)gn;wpfeOIZZkOH0yETF?nul8SDIg{P`2$@<>*6ZDTej0DGbH# z+?V4->3HH`oA8~U8ecB5cYp7EXj_$#M}gt|pTA(Jrh|tf9`IXlB>jZpkW;*x2wka6&*A~o@OWO5aQ$+`TW5X*kc-AA#1}x39G416Hvq&Ax3PO jidgY6y^Q6)3u~#cxd<+WR=SP~*(ynLq zFA2@QNfco%)VcapWs$NMGD-0m(ptIPlL^Js0%_bj7=tFsv{XmF`8teka-fB zD>1faq7!9BHn8G28<*cdnxslqXk?=EL4PQ9-X#R7_X*}89Lb3ksmurBytJIuos0BS zSrpxS>Eu`oPcSXgMx5wW-GOlY%647HOI5DFR_ZiyJ>KCaEN8XinwhXZm*U0n6Z#Co zoBt6;Sn>I1(mHK~RgZb2l}Y9(y;8#VZQ^MQg!b`Otj47_c@bcb{c}^$HPKv com.alibaba.jvm.sandbox sandbox - 1.1.1 + 1.1.2-SNAPSHOT sandbox-module-starter sandbox-module-starter ${sandbox.version} diff --git a/sandbox-provider-api/pom.xml b/sandbox-provider-api/pom.xml index b02e9561..12f0344f 100644 --- a/sandbox-provider-api/pom.xml +++ b/sandbox-provider-api/pom.xml @@ -6,7 +6,7 @@ sandbox com.alibaba.jvm.sandbox - 1.1.1 + 1.1.2-SNAPSHOT sandbox-provider-api sandbox-provider-api ${sandbox.version} diff --git a/sandbox-provider-api/target/classes/com/alibaba/jvm/sandbox/provider/api/ModuleJarLoadingChain.class b/sandbox-provider-api/target/classes/com/alibaba/jvm/sandbox/provider/api/ModuleJarLoadingChain.class new file mode 100644 index 0000000000000000000000000000000000000000..e3805afbc6296f0b6b12fa77cfef3077895a3926 GIT binary patch literal 246 zcmZvXu}%U(5QhIjWCblWc0K_#Ok$~}(SkrMF!r-|n`1A_&SimWiZalB0752(+KDg(}Ct>uuFI=lnU}gt zh3oEwhlQ5A;AWEMXUEG*e4KU?!c(DZmf)>e;ksS(Mq+7o&rQ9RWO71Z literal 0 HcmV?d00001 diff --git a/sandbox-provider-api/target/classes/com/alibaba/jvm/sandbox/provider/api/ModuleLoadingChain.class b/sandbox-provider-api/target/classes/com/alibaba/jvm/sandbox/provider/api/ModuleLoadingChain.class new file mode 100644 index 0000000000000000000000000000000000000000..6d578adb32cdece79ef8e27723a0a2b8de4fdba3 GIT binary patch literal 334 zcmZ`#F;2rk5S$Gm2Y~{Kf-gYBNi-BLBdClhg6Q|`Q*zej*0LRww^8r_9)(y3MBGrE zc4xFRJA0pB?;il}aBgsFFejKOT!yqF$aP+E&o**e*=5%#nT?o5PON+&zZb+AuTZlnJd1+kCe5A99&7P;>8O?LB2m_O_aUw1)LYjCD`Dch#-gN$(X z<2H - - 4.0.0 - - com.alibaba.jvm.sandbox - sandbox - 1.1.1 - - com.alibaba.jvm.sandbox - sandbox-qatest - sandbox-qatest ${sandbox.version} - - - - - org.apache.maven.plugins - maven-surefire-plugin - - once - -Xbootclasspath/p:./lib/sandbox-spy-1.1.0-for-qatest.jar - - - - org.codehaus.mojo - cobertura-maven-plugin - - true - - - - - - cobertura - - - - - - - - - - junit - junit - 4.9 - test - - - com.alibaba.jvm.sandbox - sandbox-core - test - - - diff --git a/sandbox-spy/pom.xml b/sandbox-spy/pom.xml index 2798367d..df4cfc43 100755 --- a/sandbox-spy/pom.xml +++ b/sandbox-spy/pom.xml @@ -6,7 +6,7 @@ com.alibaba.jvm.sandbox sandbox - 1.1.1 + 1.1.2-SNAPSHOT sandbox-spy sandbox-spy ${sandbox.version} diff --git a/sandbox-spy/target/classes/java/com/alibaba/jvm/sandbox/spy/Spy$MethodHook.class b/sandbox-spy/target/classes/java/com/alibaba/jvm/sandbox/spy/Spy$MethodHook.class new file mode 100644 index 0000000000000000000000000000000000000000..e23ee6824caa45d2df8d80563bee37a4b0722308 GIT binary patch literal 1787 zcmd5+ZBNrs6n^g3t=pUfLDb<3q61lZ=>P$F5kwq;WNgWp_;Kk*kzv=8b|CyKO>B(D z_yhb=#&d6>%w;6?n_r%D&eQvx``n)1{`&p>Cx96&#}UUA2bDvP!!(B(4znDdCy>CL zj0G7l7g)VwshqFw9cv9u9pR zZgJ@4(2qqKOAM;GX~EA(GrGE)rP>i)O@{Co|EMxST49)e015h2$mEFJQP#(;ib%di zB*P+-QxVCwh;#;uF)*@!n{a@t9|#cxOekLwQ^s9{l?fLiWzq#x(vk~FNk?4BN;>Ky zs-$HXkHi->HPvZ%i&0Lp ztgzs17r_X(K;qG^;%G4Ov##PuF!5Mdu@p?4?J5oj6DwWCp^9^U+^_K7IzUh?<5p9^{clh2I|Xv5-YIPxqrN z76nF|>+PLZd$qm3)7WgR3y8YF$eQnkk@TW1>Gtd-Q9)qr6iIK-nho}gGye9|=H~Mj z`x62=#>bq=rX30BbE>>it~ z?s17imju!zC$a^yfgN^zZ&#oghr7~yVQzNzZHr-(0fWJke8NahheE! ztG%vi literal 0 HcmV?d00001 diff --git a/sandbox-spy/target/classes/java/com/alibaba/jvm/sandbox/spy/Spy$SelfCallBarrier$Node.class b/sandbox-spy/target/classes/java/com/alibaba/jvm/sandbox/spy/Spy$SelfCallBarrier$Node.class new file mode 100644 index 0000000000000000000000000000000000000000..60269c1a07eec91da168a21f39bae6c1bce62e22 GIT binary patch literal 1518 zcmbu9%Wl&^6o&uF&50A55NON&8Xy;_)2fSBK`e+=2`Oq9sk&e{b_VLmaUwgd(zgOZ zRfz=;zzeVf0S|&W$2KH|L_*2tobmXaf4+Za>`y;Gd<3w8wG2`yad^Ptp-$nE4h>}u z6%AE^)bP+#vLjGzb>*=%9O=F`_Jg^GKz!gS4UYx#ZRNabO2>IFJDzE8C z-&ejsVz=K>0*z3`>h}!k*rqh4(LL@NzH~cge`NTB6QeyiDgC8Z;$~Vd;i}P)n4a3M zJ$y#Xmn#P}+YF@hE!$PQM?F({`_go1v0|%lN#{U%Ha|y`iQ%D5Jj>;O{jiuWElc@+ zX{%lr7)3>M;Z_#18XM92zhSoP8v^eZfmwiMQ6KA*J|;|Uv8imd-RpJU@4ZDVMx5s_ zsNU`$d6wF-`97rSYOV1t&LNFV4h7_M&^cVhDu<%Lc5ut*IdFl(_zT%HyUH4Bcp|Vl zkD@^7f7)=DK3I)D#9JE0aG9b`8Tf)E zzG9h1xv&Z=fd(tAMhZJr$+dd*49RNk6k@EhL>$03B=DVBegsM@Vf7y+J>V3DG_K%k zq-juQs$}&&;%{gWLZyPq&l5mNTw@?=zK$DFbAuLTAgx+^d5YNd_K-pg+qoDwNr)+K zO{JJ26K>0x;`R)R875{^+@X^UPiS&4#B?*~D9HQ0V8`y`0_7q-XHlaAfl7=FHN$da&}O2eTX3N@0D1d>v$93q+qde9ImARY9AS;8v8kT6N8aO-&E z-*Be(#tS=DV06@(dgs0W!8&6vbUaMQ0iSPo6N1yuIK-Lc{SLd|`##U}zVGh-aP-x; z07mha2P(#;nUH2unkf&O5mPa(;#D_Xcuj7`mZj%& z$$VPRF6)JiT-%$@(nf|VTs>1z;&w_21g6e(zD&Mxv81QppVPN(P_9g_XcS5Ud$ovB z10<=VQp#^LFR@H6Q<~;7AU8#ZIyKzJn;I6dD3L5_cmX~QUAQ37 za*~+&wM`>UsoGAqn9KYJR^wFNXl0lJ=;^dkEc(WyQGwlBs&uG^RGi?LkT}YqCZeMP z4{HHc1E&9n&$y)E`!A_y{cY&Q4eO!DCgrob!A{QQs8prgT4#DN+ia@4_c=Yki~+uM zn)&i_pc8F4&-a7ZT(zS`RwCyv{#kmw(#_c}6y6JjLWdCiI}V}TF(>!XEZ1`X5Y9WH z5C=uh9`JSrJ+$qpqx}gQ9y8R>=*KSz;t6`qYo=TD;UZTIz^elcdWmxdqMrl1z((;Q zG4OQ;za3eVk;5`rxQt0oh=Q9+6@m*UonKLp-_VNRN$U^B`IBAtmx-d^a$7;+$BQNk zhBEOu%6M8Coev2c&&PbTn(%`Ms0+3_@eR~3QLn_hIsXLh!7otX{Wa8;1GpDI65{^x z;}caZOh{Ay`EmgF>k&(?X;HGd)rnOCzaF3mnJNs2Jjjr%V*j@eV6lKa!11 zUrfdi?ZZPf+oN;gRCs05`A7^?w0rQ%Ar+!+`1JURv&;GYXNokFb+lb|-_eH`BN(Hf z2(Fmp7$(fo%IYB8fN&AJiWX51uW+MRcyLKHkb{PZXvUamF}VcEl6Wfm#t_CZ(Ka!H zRN6r@VN+?vRJsky5xgo!%wMEyMn#kkF7so{qWH+BIC`3*)H-wk&0-o15AUOqbnc^} zOl$aa2J2za0R06BLXH+8Ga=$U33-`}cJzo2lIcWLbXAcUt&kY4knq_gI@l|+d@T}v zGD!i{F-a<}RLFpOMW6EX4;1qyo6kd=kN*^()UZrgFuaeZ(<~m4L>q(k(Mca0M2=Ox zCVEMt4{hQiIz>MQ#XuDSe}#bGCU8>aO{^rDk17Iv&nMu(RmOGTW%d+sjx!ftVJ6)q I=i=J^57hmYK>z>% literal 0 HcmV?d00001 diff --git a/sandbox-spy/target/classes/java/com/alibaba/jvm/sandbox/spy/Spy.class b/sandbox-spy/target/classes/java/com/alibaba/jvm/sandbox/spy/Spy.class new file mode 100644 index 0000000000000000000000000000000000000000..4303988a50976aedb5011c25678e010eeca753b6 GIT binary patch literal 5958 zcmd5=`F9i775>JSG?qLVLogs40&yHLTjUT-z;`5clC_9kU_S;-rwj zAxFQd<69wo8{Y}xyLd$?ugd2&`Me&&_wYuDe5XTb!uMr%MmF9Qfj`jkL!tagC}-vK zV;$#0ScQ{1-jW@TZ)*tkS=l4@=w91Croo7&QdYV`kPs{;7!(D?Mb6BuQD^Ysbyx0W+PDwM+D6k0cnFH5DlrWr<9b+B7t@IxJo! z);-BE<)Iagg)q8c(LS+O!#~RKdyc2Av7{BxMjY5&jFqm>-Hw1>KhS@8SI?e-!Jfl? zJwtm3c57(7y*JKz=KB+a{rU4EVrcK+z``cKsoMmR?)Vd_QENtn7M0q}n(<>S1~+3GSWHe-22!e&tub3_vadDj@wliqyg5?I znW#V-O6C)o2HD5iN0>a4T^vTOOk5qwWG!w)N4e;kiCdG|gq_Oh_z8V0v6Hnwm8Q>2 z%OsvsSjsSTByAsOZM2qQxYY|KqAn{uc|%x*9wVe6H7qL!lVV=vIlIdR^<3*y9#sP) zM_CizVsK%O-aYiL>~)U1N*XCs!%UA)O<1Yy&UD&5q2Zn~#%c&>dCbbHKHh7aqgL9{ z6=jhukOrZ4`c+`-WbI_vEri`F<^e}qadUBvXM17*ER)&bZ9NPmX>4A;lxmH>el@r_ z-pSRHhT9^{ojTsp@wASg@;c=ms}jx|zg)8I_vX&+!}pm`57;UVcuRT`CYP*3UWJM% z&Awd9d?uYi;%Xmv?vVyhMiw+^sOgHcWYtX+irG`?xV0xC_fAc0^2CD@R|5}Wvw@A+ zq~pAScX2^OMBNZ~ib3J>6d6A=@N@jazcZ$;kk zaFOje20p-L9aju|h~FEyii-xW$!881nGOc#@sWY+_=ACual^nTxM|>z za-bFK*hMNbjCo_=Px!NezX<1F#h5jUQ$0!Ib}BxVPP5`7-TCQWGjl{eUba-EqQrL% zEtRmbxYaR*Nj~aDNRg^a&jX&*p4>8zB6R3S|H04Qs~ZRwmQZ*48H1ePuUAp>#XFR+m7=W>!eA zXew)s%Wbbuo5?9_U`#IUsF&M4L8q4&*osBUQ#CbhA0vX>%OF_hrt&JthauBC>c#hwwl@B5c|U*g1**{~-4q(ub5(^6 zT=P1~uOH-^cLDbd(sfP z-aC@)CA`63!D~ocDH5*3H@sovrm!#U z4+p~fHTdTdsK&v9Ss@As)vrL05_Y?gqZxyY!hS+}KzXv1dX`}|_9Ck6-{$)CB}xdQ z>fczV{fmE42;y<{@~EKyCPj+j?KCOuo5zAG+=Ooqbz05GSU6nW;GaW%Y}nVR2LFcG zaA0F>Sl<-8ibc0z`V6f!l_fhIq3EL}^3#rfhE2lUjseaDk9K;|sW5F-C)lVC z7A4nE^Em${n72}O8>Q-&=s5Z*nL|2`=}2lCKe_)C+|!W)X?9T_OyXHL41Q|TDQkpb z=qDtbih{t^@(y2d3|49ZZ-Of9{dtuAA|vb*ko}iB0)6xev7@yxujRF{hGP@QwH#|nIfCGS0p-rzD*ylh literal 0 HcmV?d00001

S}M`#W7iBaebPZiSq!WxiFmq;fd%}jKn71=`$eD@S7te z`HY_;8A)!G-NbPWc_caBj-T^+GbKgDDFrt4d2A+`?xD z2|hRT*@;$c;a5i&enClluo$=EmwY3PZ&ct{9BVWoCAZ=>{xZDiqqa19ny7L9w)A|0 zL~h#>QgIyV`4=UDHTlT|WQox2Tj>n6YgSs&j{zUO1$SVO+R|QKOWGqkwRY6Bc2X+{ z!B8S08Jjb~`<)z-i~`?cMShnlbXU6wg|SGF)4e8vzC=f2392CHzAQ)06eW8)lINlI zrQ|j`QcJihhSzc6B3ihxHFqBCGV7CHAagX{k(xM~kXlRl2~+q5+Lo|^DQdrft0ykt zr&K+U4k{!+#?Rh|l2}9{egW4kE<=GnU5;`w& zbhPGZ)TK>Tmy&d;_e!qxO8Ct&T)>va<&R_?B>Xx!#*BmIlV$;JVJ>r&-p(8yVvbGb z=PbuhGB-~%D=#tnuVN?8VTk9?E*=JV;Ty*JTkOSmxSPc>CXze^(ij)b*zae0H)Ef} zgSeX*DOz{}yE#g7-2nFZBW5P71CI7$RA!i?G3;Xo(;|U!V#WQ67$io3wxfo2PYrDc zM**5&FFwYB8pc6lOmMG9p!|q+3MLgCT80fp!C?hQ6xOF~-H<#^xe3`ABQz=-L+#0J`wCs>v9;cUDY;Roewc#RQmcWeH=C5m a&BUwd_u+oN#qeu3l3dH{9vLFLv*W*@z=vA^ literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ChildClass$InnerClass.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ChildClass$InnerClass.class new file mode 100644 index 0000000000000000000000000000000000000000..708b7161569046626db79505b08f19d37c9ea596 GIT binary patch literal 692 zcmb_aO-lnY5PjLMUAwM!ty=Y_(1TVm;#KLviXv2dPL(E;#58(&ERuoH%HluLwGA=&cUdNN>53tk14(cFB{*x%C8=xw zF`w#K-Y9FUJ|D>GM9f5h6;uOw*!8f-aKHGR{}pElZ4I7?Y{dJ~M8<}pa%AUrwRj;M z(1&s9@31hmUD$}WhgG_36m{Ux0{r&L8(8}t&MP4YKAqJv_Yi9oH-EDbpiYSLOEpGp QNXWq^HcFPfV;k$h56wfr%K!iX literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ChildClass$ProtectedEnum.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ChildClass$ProtectedEnum.class new file mode 100644 index 0000000000000000000000000000000000000000..567ebe96214078b81a22e0dc09313f11c4e72fc5 GIT binary patch literal 1308 zcmcJPU2oGc6oy~7S<_}2D`gBA1qKvoI*Diqu3AllYDkkRHm$5TTsf)Ny2^)0or<5u zhXe=-v}=A8;y9~lE4X7zBs=yw_WStwoc#Rt?FWD-*eb!m9SfVdYhu~NeG4XPx_MyY zA%j`#J?|Xvbs1I;lUNB~iT+-ch79(86p5rA@bOrT8M<#eejK_ykRJEAJDP;`+^$MwG-x^(ao9>H_Ic3biPQ*F4kO|r z;Z*)+py;$@B-IYX`acl&ogRashLWOpbP>3vt{g;Mr3vBX>sqbY@`EW+e~wq@OY8gz zb|^orZk#5*cq#RjtiHXfmF!eKZ(?-aFBM#IKctTSAiWyx8EEcrnk z5!YJXnTy7OH=-&c_80#T!|-hW=Cc}V&T0M0)SbI8Ap%TxcS$Yrxu#b|uR(kTq>pIh*+(2RZNg)3Og z>=Zci(u&*2(+il5t?CyPK4j*3x!H0P*KnQeH!>f6fScHuf^232Kr#Ov#wRen&mwky Wx~_^_+4|eCsJF<=pktSItG@w1_Fky~ literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ChildClass$ProtectedInterface.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ChildClass$ProtectedInterface.class new file mode 100644 index 0000000000000000000000000000000000000000..f69754ceeb0e93eeb81b88d560d40a14ae95e607 GIT binary patch literal 300 zcmbu5L23d)5Ji8RIFpP*#51@~L5`phaHSwQKuu4nGxT(0cPTkr7CC^25?eRfWanR0 z!7upr_~*;dFMtn>N)#nt4XRBzMk}AK6N9(KzIDyQaZ2wUpSVP2@MS|!?An@ZrtZ{J zV&Bx^n+~j!lx&DXM{OPTtadMvl;cj6{=#PK7*woEv-B!)%Qioo{%4Mt-b=g_NHUn* mD9Ewj(W>rpg2DW8oWj6hkbAgkfT#O>#!KE+z8DNq7UL^hNm>X1 literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ChildClass$ProtectedStaticClass.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ChildClass$ProtectedStaticClass.class new file mode 100644 index 0000000000000000000000000000000000000000..40e75edcc73197ff6b41d8ee2dbc9a16bc292eff GIT binary patch literal 535 zcmcIh%}N6?5dP9`yINOUYp)&z59+~ySH*(`L0D9%R6NdRLz|M_U^XqjmM6i358y+I zv#a36o0!9VKQm+|nfH&^HvlIX_0UE?#&(RMK=;g)CY%ej4-TgS(b(l$pr4vjUoVSH z`#Z`kJHyl|vQzS=*576n=B5%D-Fg?a3Ob(z3Pz1BRct3$WvP85G|Punxk8dP8D%6F zt3p;(=9znvj}&wjq;g)%WiVD26x3XM8OYCckmI?rd2`SHZ=FsBdK0(wN?)3K)c#NX z@q$*AAVMd`j==ptO&~C+8%ay$Ox|P*{tJPNzc<4kTD+|K@M`L3Fm_o& literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ChildClass$PublicEnum.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ChildClass$PublicEnum.class new file mode 100644 index 0000000000000000000000000000000000000000..0c2612472cc41aa43e5195d89620259a3a1f50f9 GIT binary patch literal 1287 zcmb_bO>fgc5PciFapD>pLMgNqS|Eial~@(QDN$93ic~3(ia;)$){aRwve&|~BYqYi z5+Ec{&-^IFtQ(O;a3i*~U-Nd}o7tJ4zrOtd@BsTonAowgi(3{}E!?qTp`wR93wIf; zO7C&|)p3`>K26;~ddDga8JrWP{J0f}@z@_ToW5>*QOHFgUEvBonuL5TRNsx>@wX!J z#|ihM*ym{?10IUR8~QO%L_F{l-WtlFpE;_`2pSCei3n2d`$e_3eD7u}>iZ09ZK?d{ zY3Ta#OW_7|Vr8_QHw<32JrWba1EB`Io5WHL8nvZ|S#C$32znxxntv+7R3aoT<-Y|` zUYb(LJXE*@?E2FbBibN~PV literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ChildClass$PublicInterface.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ChildClass$PublicInterface.class new file mode 100644 index 0000000000000000000000000000000000000000..17b9fe6f0d935709d33fbfa303827fb5a831432b GIT binary patch literal 294 zcmbu5L2kk@5JkU3Ng%BRhv>Q^^#~wU%8H7fVC+o6k>d#4L7a^R2k4 zzSiA^PMjnrGF=erlXcW`GDiuNI23l1I2mTse!^nVa!3^BDDveUr+imw literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ChildClass$PublicStaticClass.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ChildClass$PublicStaticClass.class new file mode 100644 index 0000000000000000000000000000000000000000..0d2363d7e10adcbcf18e5fa4c33568689e2e8792 GIT binary patch literal 683 zcmcIhJxc>Y6r8;zo;joWGKnb#i)i73ZPdbm5C|$Hq)GMevLqWWcevRE?fgqtf`vc8 zA0@s!g%m0X;ubs1?Av+sc&~5IF91%^^pHW-Ma@NBVB=Ir+MWyKTBGjaP$1ih$4a2s z(~-Jb&V6MD|Fr<^ZG{- n@+dIla%^LVzb012-&i%cu=%4^DNRvkV+R#%F?y-8%b0%$J~F1h literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ChildClass.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ChildClass.class new file mode 100644 index 0000000000000000000000000000000000000000..14cbb20206e0280d7b2ce1ea696575940a11b52f GIT binary patch literal 6030 zcmcIoZFAd15Pr^iaT-$6q-ompg+d#^X-fnF3M3`XOA~O(i)*`1)4(vYa!sxy%c&%1 z%18bYd}4+V`~ZFw!|G(6WJwv%ghL+dq|@#5?B4CJZuR#+fBpqv0Y8mm0MCl37Evpr z&Tz5fwta5-{BXnRv>3+9j>Fw`+w?r{74e*5w9;wX!U`T2(V+WyL=k%oQwpKxo4&B5 zY!NRQCPK-c?tO+yB~W&J?!GcDUc^g=@o>26WEg%V9N{lB43y@Gd2qdb$Z6b`aQIHA z)#Ps7Y}(W_xz)BzyJ5N_xbJoj`p3d!c(P@+TZUpZD^ttC7 zR@>!9#}~HIGJWfqyM}MNN8C5okA;0GtyyBY+~WRm`*8PFtQ*`=Oosj;e{sl zG%}IjNs&hi_V6EQ;?Dsm6|SXJP?5v%OcSw!%+keysf{j%B)S_Z>!LXbGe=#Mfk{*% zy&93$gmYx`RrjdV;*RgJ!glHZh#@VQkqs*BmbAcToL&oRq--Kiw5Xf#9W8psp05Qi zGCT0zr67rqpGXF^W(;*LM7^lw(vv3xTzXrON}ub&O?egV z9`)cx`o@mMu%`z)<68_b^&m$|C*6yoq6IwRVY(m_PR3BvqGdX(sbVLt)b@mbyy`gZ zpb~96l)N|ITKpuqregM>h#whdsvXA{E#45GplUH5O~vB&xszepp~_KE86D%%tLaLV zcPp+qrE)V|yKMgsse4L=tg0U>rc0aLvbWmweAl#m217xGkD}6fQ@EZlPZ`^5?T%~l zO%asHOKftx^PW}Ii1TWuj_z~6js@np{fJ7_iaHRBLY7+Y|}Y1%C^mqOgjiat}+6{ z^>{=#DX53|00sI~795vApMNk#=PPt)P|K(ty7vdz?{rbXG@XZK=K!wK^;kFn*DynO zzv4P>P){KICH)KZ&j^l4!Rhc}SCEF`CT`K0;XT~$LOhW71jBxlU@`f8g1pehpf5sX zNl1RS<79aMNT+EgH2p{*AT+Wp&VXm*_TCU_h-0v&7nJf7KpL8YP z&{~Y-Eo@B+R>Oyhg`Jm<6fE(l_^i9^3;0~R9K#pnDT4tV9^xwu$*ZsN4S8A6w}>Sa zseOcR=^Xggne;!ONxw{@A^l@TzoO_@75$o`Usv=`B>e`(#DJu~FOdi>9S=M)ZS;1N z@vupQhl%n#e2=ocW_U{ND1J~u7Q{_(NI;edFu@AgqG7?Yt%je;f0Dz`u+v|#lOtHb zF0mF+k@K)fb1+DELn}Aws(_J|8C;-tl*YV6?HK(oQu{9Tj#GPScnlNNP7YuA7rwnE A$^ZZW literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/GrandpaClass.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/GrandpaClass.class new file mode 100644 index 0000000000000000000000000000000000000000..b1028e206c437e20e6a81e40399a75a086c59025 GIT binary patch literal 459 zcmb_Y%Sr<=6g_D>9UZHE{DC`lVZg28rcx;kb)j^BCyi}}%tSM3@wZ$FUHAchlz3CR za4ixzd%J&v3`fia I^O$w~14XiZKL7v# literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IGrandpaInterfaceFirst.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IGrandpaInterfaceFirst.class new file mode 100644 index 0000000000000000000000000000000000000000..8dca7ca080b046e8c26b1a2abb74c1b32cd2b7ab GIT binary patch literal 272 zcmb_XF%H5o5OWGNz{JiUIEhDqy1>vETtg_W(gxCN#oHKo0FOeX%!~|YOO|E(Uhl^f zz!nRQR6}db6_&a0gR#5HS%r1B58R%voV8-ZnMXZzvZ;Asg@f@8v8xI$nChXSE_w@p zryGmygp3cCdZ`>WEaqYZ35U`O{Z3U_jk)BwE$LX))`&v>-;VG6R6!w$H;LaP@-$+C F*$3dBR=xlL literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IGrandpaInterfaceFirstFirst.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IGrandpaInterfaceFirstFirst.class new file mode 100644 index 0000000000000000000000000000000000000000..66d0191003ea2ac58382631df0349937dae3b35c GIT binary patch literal 191 zcmaKm%MHRX5JcDEV~Gq^mgw7KsHczj`}5f&c&j literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IParentInterfaceFirst.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IParentInterfaceFirst.class new file mode 100644 index 0000000000000000000000000000000000000000..6651214e21304c629abc23ad9e78fce688f8807e GIT binary patch literal 398 zcmb`DO-jT-5QSgOUyq}L;La21#sY8PM#w@&47iz9rBgGLkaT0GGU(E4x$poUN=#h4 z914oZ`9Ua8)BNaGTN!L+gc7nc=WMlX{tgB;rh^WC!s9j8^4NaXY6BA?yYLL74v&d zY?5|r{4bPnF=Dxqu;X=6t2e^)QBVApC*((k=IUc87X-p&m?>t%&uR97IToXW8}v7YQ(M_BB!t(OCOBeiYOb03wWGwot-~jMuu4*DLKGU*SaPgQCy|un zN|Y*}g;8mDyhnuD@jPqyBg?li#EnZU2shP1^Y=Zk8DW03p@U?Es|}kh`xQ;=UK*Vs fAdK>V0C1cS4dbj&vnq3Ul53G;1ZUfP{(tfZiX@dQ literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IParentInterfaceFirstSecond.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IParentInterfaceFirstSecond.class new file mode 100644 index 0000000000000000000000000000000000000000..988d9d6b753a754709f04bfb20a54d3e23c4ff70 GIT binary patch literal 191 zcmaKm%MHRX5Czxa6NwWgPys7Z1X4~Qxq`K`ghY-l)|-ghI8XpZA)E$yhdI2%Xg=T9 z8vssF*RZK!YhY*7B%aTGU;~HdO2Sc_s4O>HZpmudr`R3`n#q9mX+#RWBS$#QBW8-N xOHX`|a#r+77$@xmj->w1f=be{;vcnv{UXOevBQfS*lQ^>P?gkW23Ca?tbcwAI)nfK literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IParentInterfaceSecond.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IParentInterfaceSecond.class new file mode 100644 index 0000000000000000000000000000000000000000..bbabb4f19fb56525320042179bc2b8883bd5df25 GIT binary patch literal 181 zcmZvWyA8rH5J1o26N!qR9XN?0kkSBBCOBV?;K;ER=Mpg+1p_b?!s&U%E1%xy`+5Vw z3Ca>SC2S4s>Nq8qv-4u$P~9j=&?=~;JF(QlF*L`HW-@T$*duvo$r5&Rk0XV~#wQM> tGAeRRf|ELrJt;pVp;Br^@qg98e(9p8(Bjp0!kT{!6nSvLz$&|d^$*F#HfjI> literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IllInheritedAnnotation.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/IllInheritedAnnotation.class new file mode 100644 index 0000000000000000000000000000000000000000..2d63669fd5cfbd399ca8548114f153d8cead6e45 GIT binary patch literal 484 zcmah`%TB{E5M0wopyg5Egb)HD(Ib|)azdquN;Iib7YT84(p7Qg*pN68{WT7J03U_e z^guX7;^47&cRafue|>*^0>Bj!81Ixu2FD|$f0GU~$77o!&z;gdkuD~SxLd!C*IUM*R~ZsSONf=-VYqLj?(}D literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/InheritedAnnotation.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/InheritedAnnotation.class new file mode 100644 index 0000000000000000000000000000000000000000..72fe85a11d1ae9361c388e210ec7ce735f522267 GIT binary patch literal 517 zcmah`yH3L}6g{SoK+B^%1{e^Cp%M$0SeZ}>qJlP6nj#@4C%r1J90wAoqQAz#2k=n{ zr$fU~#NgwrbI(1tkH5Y@J^@_fz`?GAJqP;?jbW0f5#35f42NC)La8(~zScT1!pKBl zOvOwv9QnC6GNwnF$xu<*&lrv$3Jq66PqnNYd4KU=MH6~&}YFn=X0 zt_Dv7m!aNsgFEkrq1o~J!@wVP0?%hSU2Wl$u@3gO)}Z~5WRNHs&8^V!NByANvxoiR zx=h20@1rE>t8b)dkj2xBIze9ot)fMuo6}Mgh$NHnCOkgl+7g1^fUf C5Sa7; literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ParentClass.class b/sandbox-core/target/test-classes/com/alibaba/jvm/sandbox/qatest/core/util/matcher/target/ParentClass.class new file mode 100644 index 0000000000000000000000000000000000000000..1e1d7054b8c5b52eaf9eb1b1f6628554463fc624 GIT binary patch literal 628 zcmb_a%T5A85UhcPRYXD5#H%;;;3Qr(CT4wv1knV;y?1wzA-g*|GZ25vlZgjEz>hLE z3kT1HOFwG5D_xWN`ThC^aE^lps%VGU4bcg)7h+$aeyI!XuLP>cCqscCGN}@1^>m^7 z(>zx8nc|F*PR}Hi4aw?xzXSt6)=uEImzZ2qrelgpPG-4uRHU(amv7{i^D;43$*I?w z%*iKXWu+(kqP%<}s|p`wrNo+;!Kn^Oh1X&={DhP1K#9-_riKb~d3I zHBm<>5Ut@1ftyuX?k%f+rBaQ+!>TmhrTW4vJEFN}>-Y!y>*5=z#1v_8gbKT%f&eu( uM+IyJgd8`xlbi+T+UY06NBO+Tv0j2zG`Maq2C&5yb6}g7!PrhY-TDKPg}6@u literal 0 HcmV?d00001 diff --git a/sandbox-core/target/test-classes/lib/sandbox-spy-1.1.0-for-qatest.jar b/sandbox-core/target/test-classes/lib/sandbox-spy-1.1.0-for-qatest.jar new file mode 100644 index 0000000000000000000000000000000000000000..46fd103d2ced1dad44ad2ed767534b9d0f03a652 GIT binary patch literal 7002 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 + + + + + %d{yyyy-MM-dd HH:mm:ss} %5level %msg%n   + + + + + + + + \ No newline at end of file diff --git a/sandbox-debug-module/pom.xml b/sandbox-debug-module/pom.xml index 42a86e9c..20022526 100755 --- a/sandbox-debug-module/pom.xml +++ b/sandbox-debug-module/pom.xml @@ -6,7 +6,7 @@ com.alibaba.jvm.sandbox sandbox-module-starter - 1.1.1 + 1.1.2-SNAPSHOT ../sandbox-module-starter/pom.xml sandbox-debug-module diff --git a/sandbox-debug-module/target/classes/META-INF/services/com.alibaba.jvm.sandbox.api.Module b/sandbox-debug-module/target/classes/META-INF/services/com.alibaba.jvm.sandbox.api.Module new file mode 100644 index 00000000..19000a60 --- /dev/null +++ b/sandbox-debug-module/target/classes/META-INF/services/com.alibaba.jvm.sandbox.api.Module @@ -0,0 +1,7 @@ +com.alibaba.jvm.sandbox.module.debug.DebugRalphModule +com.alibaba.jvm.sandbox.module.debug.DebugTraceModule +com.alibaba.jvm.sandbox.module.debug.DebugWatchModule +com.alibaba.jvm.sandbox.module.debug.ExceptionLoggerModule +com.alibaba.jvm.sandbox.module.debug.HttpHttpAccessLoggerModule +com.alibaba.jvm.sandbox.module.debug.JdbcLoggerModule +com.alibaba.jvm.sandbox.module.debug.SpringLoggerModule diff --git a/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugRalphModule$1.class b/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugRalphModule$1.class new file mode 100644 index 0000000000000000000000000000000000000000..776be39b5e72b3eeaf437f6b06d3a263854016ff GIT binary patch literal 3179 zcmbVP>2nih82`OV+HJ!2q(2*@j8MDVJZk`jg@1Q`xv1fyY`!&n3V^D}2No=j zX{P2LXD~XRkVm2_T~*CHFEE4#tSo0}Oll?{E*fcWkE>~&AT3ENqv{t_TNCFJFeEHx zkQ1iK?EzhN98Sl+s-o95J9dB!mo;b9wldst#;pSRzqNikOu! zCu1IONqAevJ9u|P%qqMo<2_ts=xTR*+nwl~rt8r(kLsGCxzY4Ow4C}!qx9V}X=Z5h zjMP;#r;Mbhd4^PZAJ=7kfa?-Il<^ThmT*JHC-_vxXZT#g7c#!YO$lGg_!_quTFV^9 zil(a>eD!J=c9o^}tZL#Ve_LCd@Zh3^Z)ALn?__*0oPMO5{~nV}lswfaMfmHQ<8sPc z#fzY1>BO+Pto(T1w&wioKU9s?x=K)dm90$*w=;}&c!hahakxFJbJs7TXQ`5=e83pL zTI7z~|5!AqK%vh2Mb!#+c(tn|A(n8#FCd95L!IW;2C;oYKOQE^SZYplGkK~D)Gmxz zsU5_q9mGoQAVw~YdBGg>{23cxC{Wr3CaI(BtLD3M74m4P__`id$S3aIXd&=~QSI#B zprDd+l4WN#Q>9Wt?jt=TuDx(FbG4}1q&b18lGcl0@ap=oYIsec933f_8eWdXHVBws zK76d^GE#!tXihXziP~zBk4!Oaqg(QOvzKEf4B}IfcocbDr8}!Hwe5%JEghAlK9ne> z9Cv-u|3_F=v4XV^qY6zm*H9@S`}}}ZJZ(x8lNAd3MWDY@@G9T^>v?>w*8%D3y%%(o z;mjI>*DwBSaU}D%uEmHFVcp7G>aqit>DrdAi#uv|MZ!A?!{Av>b-BL4u)UHuIovM@ zUeZZ6*SYF&MCnP_0(x>GgeFn`fu<(WJG_jmK)h!O!T2&l@dv1xh~GnC8MRB0?h;x6-84sN1%|Mh-j6-B+vc73q8Iz=M9f6* zA^`!>N=kx8=_II{yY8WmM)*fap*si#e+v}{RD)Cga!U~6ikb_Lt+5DGc@be`*WnG zi5qZnlX~zi>bt_paWb%voc;pMLjA>6-z<`Ej*?k5)CBv9XTbAPJwpGWLBg^2zi}>% s7l|Z9NXLozCE5pY0w+D#DH5;Hu9d#*p;i1w#MD$re+|xI;lz&r0BH?(ssI20 literal 0 HcmV?d00001 diff --git a/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugRalphModule$2.class b/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugRalphModule$2.class new file mode 100644 index 0000000000000000000000000000000000000000..70f31989b547c3201f6bd3018a896591e989ba9f GIT binary patch literal 2786 zcmbVO>sK2^6#q>USXh>40l{ampdmaK(W))Aw&h`?;UPiVw7xdUkSy#Y>~2! z%>~iCETa_{Wn98#Ax<}A2D74>lkkd6nk!;1)r40iyw;3nq(w6?V*!gYmhif0mStqH z(t@R>pPQknpC2w-_WtH+7FY3~D-Wn`+Uviw0L|Xxf%q@pOa6R=(mm z-15|A&Ex67V2Yussu_b0sTkM{LyHj0j&AvIlRlhg=s7K?sq0l!bv3Jyv$s^Otg9u@ zE337&>QZ1sh>c!JcLygJUI?`|?LvhdEbv^VsLqIXSu@I|d0#Cc&g+)$U0^U1{}W>- z)GpNX;Z=s%v|XT+Xiw`FU#OTl?yP7zgEU=fJFgk5nxhN3ri_V58I+V|acA1lT$hu0 zHgxM_!ycTZz!lwHa_l^J-4(mcFc}`c2!mI}eWt9cy}@V2cxw1MLxZnA$c3=W`>!oS zYsS;^8}nMZ7N2BWJ}krNNgS!UK*u;7dIU#q2dn9>bG1E!+&$jk%Y4mtYOzucG03x9 zd0zH(+j1qmO>)MrIC(y&i%aYIcWRBVYgLV|ch<@qwyRskdG3|$f`oSzybDdi0G?Fv z7#>&f1mX%#BPSuRpa8Dm5j-kkO+gVQ1v*L$W1`qj?686nj4D{i2E)*hJ3i#bZ|a5- z&+)ilzwz95TomHDIL+7=wG17?Vb##AqPmz{=XpK~=&{ z1zXsb@ScMA@d3lbM+nOm%hOGMcw!8_V!yG&-TfjQ7#I+Ne<$mJ?}#y`{R`sT$l1 z80-qsSSC;`^UVr(y{QK-bIX))d`eJ8G$C3)6;8~%l=XRs`=mRWmA1+R&hu^oh@jl&wWQXlJSV=i{wI^ z&;{iatg1`Z8N1?>rbLfPg)gpAC5kAIP=W=7QfEYW%{6kUwf0UO$lZy0%Roz(QjvSX z#{XP!=wKamprb=4@-Q`zC^|@lps;EdH|qQgYHg~1<3rquutW@dSjboZku)rZx%+H< zJXwZ3vOV_$I>^H?N~%3A)3)U~wqb}5hE7kEn42<9UeGBajcta$dTcuIpadz|5vOmK zRuHKmh7Li9Ku3q*OTQ<|^m`&v`WlMT|1<_^^$?A&k=#IiJUOxpmQ3s-lI)M|BAVPo zEScOvWFHN?XuM5pB6x~gnR?($bmJ>LO`~34jw692NrWWGn$RPHR%^Q~ktD1-M|L35 zzv(kbvCk2UenHBp58FsffxSA&&O^vfjA5MSRa()2Nc%;q7EIt7!W1$53dxTuJ8~Dz z^U2XY$hQ!?P0lyoLCY;n({$x{8p$-< IPd)wq2DX(BjsO4v literal 0 HcmV?d00001 diff --git a/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugRalphModule$3.class b/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugRalphModule$3.class new file mode 100644 index 0000000000000000000000000000000000000000..ae606de1ca2a9dc508cd8ccc1dfb3e3fa382b298 GIT binary patch literal 1584 zcmbVMT~8B16g@+0mzG5;3L<`E#nK8>X^hblqNxx~iY63Ee4K74?UL>8x;xw8FY#~a zgCFt1`0S4|-q}T=RZP=uc0O+JoO|w_bN9#3uipTyqnbqqH*+wsWZ+f~1>DY&W!b~?h426?!@LA zL2THrtu`4R701L_*=I=Cy|!eSY1poO5%pR!*b^;>EVB*I63)H|Y`s4+rZsH_^SSHF zpzeq;l(c;~Ui?CpvM?;q?aM$hOm7`p(pR?U?!EPi!0Te;K=cK7gxldw71(a4wlZd< z0cc&jFvina{uP5^`Ja)G9bdK%q@@TZ+q65bP*Fg1v-Knq88Ey%fqLXT8u4dJ`OV1p zy+Fx!;Sb`*Xs3roQW#8olNjfkUKChz+tyb+H+*1C=SX7MaxKRTso*SM`vkdXmyqJn!S&SQ>RVLZqxLw@*f46HM3jD&Ye$rTU3@@NjC6Z z`Xw?G2<=Qe{ktEk(>;k8lR<8SX0&&=x4XZ+z1_XP|M~q-0E^H@5XUEiEDG{z3=)8^1n0_|c{RVIc2x>v-mDpxqnnK~cbisS!dEgL zp(Nuyye}hxD>AO)T^ZL=W|$jPCf;e4KA#ve)6V>~libw}BdPJ^uFY#dC$;?~e_biJ zleBG_L>b0~M~b1E4dt=6!)vaLbv%}_A;=SKN~p-#!c!UBV)0DI*QiSPM#gh|%aHJ_ z&*`oJ@Cs;ha#F^3_+G*fGJXV|b~(uZ!AZD89U@3mT%n;mE~i@e@4j@rV#oz44TkI8 zqu)m^pTuRWX=`ywC1HC{ak$+zxa)ViHEMSipRvh*>2Sx*{->DJ zwoHe6SszY`+#eH$z23L3w!GpzIYq^#9@?PFx*&Ld-uY4y(-Tgl(jKCp3_bC_1ff81 zwN5a#j%`!by^M!=IKxgtS|be8m)CQt65mtz#2fmOX>TQ%-DIm>iy%P_=idC5a@ zimeu}>#EC*eTIpCJc_%Yrj!s!(xWYb;WEPGnxcErKEo8IX-`=F zl{CUM7H0lJw48Z~P<%-G15!0S`x3*IYJ`T7N;OJ5;X`Vk)uAJd9zw1hVeB_t2;rI7 ziC;X#_z^Ch_;G_y2bM#Wt>PwILz)$_K=Tz=LY|d9|B^m(&%Xjb!pG!Y6c3O>nmo*q iXA$DekmM}QLzu(7$5XI?cW4$T-ZdzgxIaO2@B0_#CZx>( literal 0 HcmV?d00001 diff --git a/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugRalphModule$5.class b/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugRalphModule$5.class new file mode 100644 index 0000000000000000000000000000000000000000..482f742a3d3af3f992d772dc252d838e1885b906 GIT binary patch literal 2801 zcmbVOTXPge6#hDU8M2u`3^$`9izIP(6PSo1#vlT@NaAh+y8%q_);rtmPMDopW@eM% zjRzm}L949Nvcx~&GZsOx%FDCA#2;ZP`2j_7i zg(6BREaIY^UFybVywigvENi%;;a!HFRc;S9Jj)4$$8aofx^;uwR+*Q%v9ek>eC|}r z?z+JnmQf3WhS8EW&WAb^EfW=C^BV=9fz2`WN~4OCcg<@Ix%>)W8#EJw{Drn8AZ;zt}VDj`u*+0Ctasv z1(xeD40kpWdeD|5?PO51{J}AX6Oo~)yOpLbjEX2XtHzWZi`;J13W_aFoFvzSQw)D+ z{-=#dwa6^YZFj#%BivcCV=z05ZVg)Y5<`5_tq96p-g3lzvtAb7A}`y->8Gr6`x5so zxo$DzGRO@2tm6o8(&oM|XgMBv?QJ7Ic${Lcxz6+|)e*yJbkJq=gp@Lr?1XeYp%@I= z$iug4QG&~@vy3NDIxDWao(K=5&L{=kyjI{16$$EO4ev3erq@l;kd^9(>yq2_Ofh50 z2=3ilVn<~&QLLvO({_E!sTM>~b1NF&*YN>9)NvStItK8Jj%V?ljstjJ$3diZ9Ks7a zhCs?kw(D~h5@VC&4Cx{N=#ZaYvurzE7HQSn#LLwEY}$2b#?YsF+~!WzSSYUuGtg0n zsiOi@gV1pmRSh*A7FKjzgRP;i!-1=zq2oF{4Ze;5TtidGD%NzY%f$^HAK_ySpXm4$ zpHW{%dH$FpA#jV*lo_@yKM+)nVQJ)BD~8<)(NUM6*z`sMzz+u z;R|oo7C{KD=Lla*A)_d+H-#TeJXXwaP|*lg%CU?r=w9it>Zy5NR}J{^2Bm;NyGre{ zQ}V*H38fUnP|3@?PL&#pP_!u)2z_^F=CUCWw71E^rfgGO1h3G^EnI)F-jms^7jk8* zRz(mV`lvwLxlN`+9(5e`P@PkEkB5N^J#A@R+2mbVc@vutZrdG;N?H`ElCSEuv*`hu z>2UD&m=W<>W>h+!;3*_fl}Jm_)KQ}oU^B!hxHM+6%M`Sx6B;TFA{;Kv z=JT_q>B)upsS?A%FrHgod>~IL9PDUt%ez3;&eyoKe>fBIJhe?`myxFLn-mzHMzXI@ zq8C7v08CNBFhvQ*6eT26l%S5jo4V*fgkjQtk!H(?(Kit=oEzBy%Z+ZJD|cuEvD`pn z1M%EIas!FnfVP2T?iXmcm41fCB!vu|*keTzBv11_-dP-Nf3r1=WFg*wqS_M^Ienj%Q|YTtex z2FB>_3HW%4zEZpJGVS*w_7930UZIc43NVB^F4f4<@7 zzrr&hA%svrfR93qO+*nA5=HV{&g{<3GyCoPmtz3;VHR-_l>+iuE0DIHz)Kn~C*VrL zu4=fZ;X1>P(SPMd&Zy0&h7(K-Ep0yeDG!}7&1qD z4EaZn^n5RR%#f|s4;Yl)z@@|GmgkF3Jh4SM;I<@7xfM8E9`Mjh@WQy%kGS)aa;KOI zWGME7ICMnQOPp4p2|FJ4xSWpKfg4NF81p%&@Rsk$VCMP5wunZ7tKo(QL&q&tbrf+% zM-6oyw{eGIJ#jH5_lIUD=*P~e=?UptVHkuuwvuaiQKuh4-J6T~yPp3h~v4743;&l%EUdX%wm}Wt7&+S66qPDb1A8Z8p>$@Vs!a@dSL~tBo$mBzClzb Qr#wlN@|0u~H=nHi00W}v5dZ)H literal 0 HcmV?d00001 diff --git a/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugRalphModule$ExceptionFactory.class b/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugRalphModule$ExceptionFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..289712bad699cd91da09a6010d08a8c35fc28f4f GIT binary patch literal 342 zcmbVIK}rKb5Uh@IH*O+$@dqBv#R0)nj_N`{5zGsEW`}i`*`Ba78{^kJ_y8XzPI6Gu zo0qPpsOl>E{p0lwz$K1zOma*KQ?buW36aHE!utubAJpyE*mZ2Y zEC|KQ552KvPmeRMpO@ ze*4e9qDnT=_b-H#ztn6gV*6{yA=r=<-{l{4YfU6v{VP2K2&43=gk!=1#%UYja6dB? M35%p4wu_bq(Mn-WD-}SqCqR$Y9RFD+jL~ykW?1 zDXrp94B6G{Aw#Zae9180Qd)lPhpvncgc}et*)pC84n?FA`yR~29c3LXGL-A5p6tcS z=!3H!g_oLI%cvFzYo%rQ((+8mMW9^a3f?^qxfR-X%_$F!-w!1BrQ2`wokV^UL9er$ z!YhwhSJpQf#{Wwy(y;=PQ8s<}`6H04EJDuf^B!=R? z=|`SysASs8@13kA8T2l7?FGhCnOzxoj9-F-0>f0wrwniI4J#(DC5HNc8JuC_q2)cd zE4|pkGDG8u>J(lOMHZDbei}2Rb10J>r!z;MGUoB@^DLpsSD=RGv5+s^0eP_WjsO4v literal 0 HcmV?d00001 diff --git a/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugRalphModule$ExceptionType$2.class b/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugRalphModule$ExceptionType$2.class new file mode 100644 index 0000000000000000000000000000000000000000..34134ac66c118068ce6366181e9b4e04546c3283 GIT binary patch literal 933 zcmb_a+invv5Is)PY?>yt6jDl|<<^G=B#bKYR6s}}L6y>iXjO?v@2-_N^4ihbTiU;Z zr%E940sInD#q6d^xIIxUdB#4Tb7pMMxAV_m0c_(z9dlR>aI=mQ)&krLa67;TL-m<5 z%D-SJZ?%sYDjge3hQ+=zaz9H#nI4Kz6SCa5k6pSByT-`0qlI(QF}&_aHsM06P=tbyjuY;Li9>tB6B}n*@>qu1fWOM^JE6zJy#n6+ zMRjv~hhf3U54*;BVIoS?-s+FUvEW*m0YC7mGJ~D=PtcT4%pj4@i9vCfKS&Jq1DmCh z?5X^=t=}tooHOWMx+c=rQJOvJhc<2?K#gHzrnjGI{njeuWjalsN8MxS{+BmkSej*f z6OLr$1KelmT~fU#B5%`ElAqQ+g*unip7ccPZ=Xdy_w=9C@dOp>Y3g8V@Dfe>3EIum zij!yL=N_JceJYOYWUB@E9SgK>OajO+(T?FNmdWPi=O`C)^IuSU|L6?mj|7%56F4sf uRwh9g0wC%&TqlV#T1ET{Zji5_Np_Lu8l5z;jw>%$3C%~13R=gVYV8M{i}_Um literal 0 HcmV?d00001 diff --git a/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugRalphModule$ExceptionType$3.class b/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugRalphModule$ExceptionType$3.class new file mode 100644 index 0000000000000000000000000000000000000000..ee0e1c1a32fe7062c9a7d3e6ed6d2f9a225e19f6 GIT binary patch literal 929 zcmb_a+invv5Is(|*)$~d0x2a>T4)~{kT3%AR6s}}L6uUF+Nx3?y}MT8XxEO`-qQXR zJXNAnKY))y%xVIxLZRBEg$!M-1qT-q4G*; z<=!xqx7$YyUdKd|VWF?I{E#JqOb^xRNc9~%sf?rA8;P8of8 zHm3CYuGTW`#KKx>8Q%9plW-BMKm>x1P7-c~jskPa6BA{zk9fliPe%jU62^~_I_I7_HP6UsI9`FN~Dm~a~{{&6>#Pkzstr!${`GdqzJ1|)q z%AU$^+x)$gr#XZEOIL@nu~cSHx}k~c@KI%G&Ghy&?NlPCh4YMu4Bh{7e}=_brH{c# zhR(+$hTb*Rdm?luJtO&P-&3e_P3_4%H2?NcG;c5eNgdDN(LB@i(r}k((JN3iPdiSY zk)L~f4)&!uu92I(~AF@@E1|m$wxW;jv;|4?hnX$&d zV5n|)4j5`(7ios&fwB5co`gCb$}lEmb>NhY4`gbJ_!O-9vB@}YF|>L|N>9CUc6dCc z^yaR$I_<_X%XG%@dZ1h)WNbniN-;T1L?&$%x+9UeD37&>beNCCtHQpM@pQab!dt(n zZavvyShD)VuFbr(ijL`Q4<_x`y@0C0(81ybZt74bYF?-sNUDO0egW+DOmwOWn<*drnR9i2GCebeU^BRie+YG(` z@)Qg!XP0;zPPFnIcNqHTRPRgWU3yIN^Sb9y_ng|Z)@c9jjD{*yW$p+>DujZA%B zp-CS?(ITw`c}9NW{t4KpayuYfFF?kzMC;}(f&2UFVwje)8wUk@@g39{`C#ZfT zu!1vzpcGh}C7lX@sF!e=B&uka`D?gBzJ?arWttnb)50b$yj&-=7!4|D6F2LPAB0`{ Aa{vGU literal 0 HcmV?d00001 diff --git a/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugRalphModule$ExceptionType.class b/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugRalphModule$ExceptionType.class new file mode 100644 index 0000000000000000000000000000000000000000..48f8bb3443606c6019638fe5302d765531c5d7be GIT binary patch literal 2484 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 b67B`Ujo^MZnl$W1Hrfc^;tZ&dPyYKK9q5ND literal 0 HcmV?d00001 diff --git a/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugTraceModule.class b/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugTraceModule.class new file mode 100644 index 0000000000000000000000000000000000000000..1a4b653af9278dab951de7e693511b813123c5af GIT binary patch literal 4829 zcmcIo`&%2w6+I&)7D?-pU^_8!n&KGS7z}GWcHDrQ8WY^mfK3oFRoygRNfWeq*_C%! zfS$qi3XOO~&)!+*nu4a&isfvPnR@6{R^NGx07hY7w zd=_O`s#wV48f*=V8SH_Rg^P+Ru50iz*au&Af(}$Q)G}DYauy%KM^*8$EIy7;X!xXt zmo$7zK%a0N>5bW@?@M2xYtb!LZ8=_(PB3Q%#j^ASo|r7Ui-u`i1+!op3$;bVH=Roxoa@mo48a*mBfy+`tSh*WqUSCl}0`NhxcC#!N#P zSGJ$E94mNIpsnxdWr5_FTap5ula?bdRu>D>n>8trkSE=uX5nSF>ecl!KsRJk25(4a~^vRp|#KJ5KW} zR9cQGUD8Eo+6)5eISRfa!LUtd-pB=><;-*U^y2yit-?Xh6*$>a8)b(OSYxg+9j&3L zWLYXb9#D|SJ|jAo=>uquu1~ikdeU#KUz(Ce&{!;<3q=XPLMjY z8kAjnXO~?yodwH07np9rbcbjI9Y@hmmWwL9=y(;MUj)F zJp9*W>Dj8R%7%w)_`HrU;EQUjFXq4T0fSqGN1z zzG~Se>FGFx!wTj%b$kmqG`yzcJ9u5kckz7rs|_|_pZ45&o*chHf|B|Z z4L{ZKGyGD=uauxOcO+=Dm-L=cvTo}5HGU(|udL39)Z;omR}T3H5BbjzWv11}J!7*o zlP`?*m<0xe9xFH?aNl|yyHr?^#X!T$I)01a(M5Iq9)HmBNBoJ-s^ibfD^9;HfQ*87 zv~EMZ5_q)LB4xKI=nL!)HLzS`;?i0~*`QYxp9PM`Nekmk({&pLiqSU4aa7EYFooG+ zw(Pk}QO?unWiV}eCeMh-XK)1~h@giil;Sb;^sPG4m90%z0J_;=#U# zED{*19X((i+1H4pn;wK=kOHE_&MZH{7{>k-{mYzZ4BOL`xG6dM(kX?hjA^ZJVygm5 z@Y%lDKt~^Ld1(o8xlVW|61aaNJij~z7nnO$AQLETlNjOyYl|@62o1ek_8@Dq`0rL8 z^{||xT`kF6wXk;En;N9+j2`&|D|PA>g&%cuNu(E!C`|oNQeF z-X0~=qvGw+g^n+A+Z?(px5dsVXLG0ZG`{va61{@hd|SA%jg)wMZA%QZ>XK;%QBXba zxz{9RpW5Nzw2+i_o#!HoWl6(d1o=zQ95L66(Uo`UpP( zw6pGG-Nu@CVwMB!8LS2CRR1c(3L6O=W2q(s`!UE;k0xMDbD2m zo*k+$4pMog{?aY%%J;v4cdVjw;7#0D$Nd7-zbk<{b_?9Xp8Vh{_SW%$8hKES?92Ca zsJo7b5*SVncI{979S`T*26Fl2vD{mDXC03uFgIAoy9DOClXdh6+(hSas?qLF{d0w2 zMsXDjgs=cRtRo7CkmcA(TJACIB_$7$jA7C-%GZcIZ~j+t1M_%|D{i2M*F!2#ku0jR zM$uA8s-kEqBsCGX6sc{L^Elo|@{=KL4mRZHIactC H_VoV%5ec~K literal 0 HcmV?d00001 diff --git a/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugWatchModule$1.class b/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugWatchModule$1.class new file mode 100644 index 0000000000000000000000000000000000000000..ee410901a806b8c7d7a827af82607f9cbc5bc9b7 GIT binary patch literal 1556 zcmbVM+iuf95Ix(Zagzob3N5AFODJgq-KGU0NU1=j2&5FGrj+NkvvOQHcCgo>zrmlt z0~hgtc;=%Jvvx|0xhRSw?`1N3=FHg{fB*62D}Yt3<&neH0t_q|xK=G;qT} z#XyxIr#enpUSYV~wEQj?u44*Q@cn+5hr(-{{sHg$?Z}n9EzQX0kM;OUD66v_n;QhN z?s$&cV7Oly5o2kOA-n0fCBszH@#OQUYsz3(m@ZkSo4zI7JrOv1KQLxBZHD4A&y&HX zE5cCH_TFgm%XP}auzasC14XOdz_D!^FtjSoebE=(6`svoDsVizu{2_g0jSn1jFEI^ zf1oog{x#;2;|p_NT8d!uEywnRiUQIoznPHNq~9Jx9XJn1`KeO9R@CeHfs*a=FU0lX zPNxf_e3agPGg2jel)N;Ln(b9238r?hr;`Z%nWyiI-VAfVf>A5M~0oGat?SX zgT5;j@6d(vI9y`bk*^~eszzKO|8om_z8A`dZp%zXj|+ZabI}u4M{;7>rN85*SmRq> z)P1QOm%7ierP5o<HpHPVrY`WThT>QD;&CLpfR2h9M(1X!u0D}}y%8G0vC zB#PAVe%?+?t=$z)2tJXeZJdKlZ(m80B38yU1#nH~=LOfr@C7QFi bOe&nB)jVaMqgg*0vYvT3N4hLwJ~#0bFd?v? literal 0 HcmV?d00001 diff --git a/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugWatchModule$2.class b/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugWatchModule$2.class new file mode 100644 index 0000000000000000000000000000000000000000..415404f8ac0b576bac34f42682a19a0a57459566 GIT binary patch literal 4246 zcmbVQ`Ck)P5dXdq*br7kyscH#U?HeMDz&0kjeC)nu1$mP4(*>}gwj z-}hX{8fByaBZvZX$xe_t-$j4#% zI3gdtQPiWa68$(@g<}|qlJ}T=3`*Yd2u?)tI8H{f08dEHsR*8w98Ez=GSd-cm7#7;l)!0H_1A}Y;QNyIjg{p?9!bfE2H3P6&LZ0iVfJPVm%&E z(SSx3aWtvegl82zr{V=%Qt+aRm+-QRo!F&fH}e%^J2#IR;-dH(zXKIF{N z?5ysn_z0I3e5~SAe5T-Y6<^>>6<^_N1>dOn7T*aZX9aA=eH2)wd&Rh|uD(z=rtxcA zW_C?ozL0IJFKl84xrN*<(Ozb$_#Qtf_)*1G{KOJFD-=_=HP$l2%7Ei9`-m(k0tCgJf|5qL?=YYfu1X@E?VKBaN<^`egNGxdB03fI)g77uV_ zmv=`tdUs_1r$hz6n~(s5MyeYjlyh7WZ<>IJZP{%cN%4$RQz{@enrJCC?PiK@U?in=>{Sl+Cf$ws=s^vRU^#jN>^zKZ)ZgZ=6g4Eb7Y&Y6iG;PzGZ>v>u(qn{I@If!H_7rU zC|q)kmIr8g5DRgf)=%)YZ4hg5vINDtqPOdC7m6K0D5|HTm`@Zn)1%OcB1IG#qR@%r zG*M)TVrX_KLh|P32mhiU{MJ9QV36?;H&9!h$qMKy9*$@koPn9LpvTX41nQ)@9Yt$t)e^8V;U`Hects4>}e6Za8H*)6OL zp^H>_!%f_O3#&pHxQcq0Q(IU57uF1xNx8nk@P_MH+jkS|JfUmU2;x}HkC!(dK8N^5 z$R8(vlxJa#w$Hox;!KHZev;TrkLs`n`_SPgNwSDJ$qVfPYL+>rAaqK>!8KHW$PL1y r=;RpYi+wkp25-&fJZj$G0&*WAxtalKhy33`7oOj}jA63y2`c{s*4?8Y literal 0 HcmV?d00001 diff --git a/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugWatchModule$Bind.class b/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugWatchModule$Bind.class new file mode 100644 index 0000000000000000000000000000000000000000..e9df0ea20a3db865380665b18a2bb6015cb07165 GIT binary patch literal 1025 zcmbtT%Wl&^6g?B?Q5!?kLU}(z8>BQv7$G4ZiL#&wfk?|Ds9lfkQ8JM|uKbAj7bN%v zSO5|WK7fxx+?hndDq<64c|7;dopaAQGyeJO`wsvQaK}a!*BsPv-J#iy25vRbVyNd6 znYHgTJQ@Z`?D0tY+~?kO7JC_2p`X0-;v_60;f2C4#@=&19`ihy9GG;EAo^0te8BLu zvm(as5kqx92?fLYP%3d)#J))1azCQX<}e9(bi`As<3+NnY15`>QiTleE2TubAMq>` zl!{f5^3&kZpOXvT1wzTEpO1#jbU!q3; z32QdBSejMnU4spBh-L$db;jxLeF5u!L*=unIYVQeYJm4}X}mbE!dWyaqI!d-*Eg`a zzDJI-TeydxciBM3N(~swtpZ39}QeXr~lf`vFh@Wn|I!d}W=~m(&LH!vz z5-}PLpZ!tBbIT$_{p8x@o_p?j?s=Yb?!7;Le)$ey0gqFVkX0~^85yH8?kniWtQhnp z1{4bF0x_4wkg)Sf3=6v;;{iirt*}ul7Z~J9;M8h%z@Tn=o*k^aywR{53{Q)eU)Q+-FGn2ZLS?(WMU%?&a%tBf zvh>bsal1gX{HyNMA96PoO4l;k?z2hje${3eC_0|K71m8VsBqJz6*;0Qy=E{n#RGoG zb(ecJ-Dn1mSIcF)E<-E&7I$}e;0V4pspRoGach4QQa6_!&uOkOjQ&H>$ss}0Gf&+F$_av=s!O!Q6NLya($1K4QH|)#h1(j+iH^f zrT-E_`#O&ydOo?1^uO=PMK!tn9KFSUddO0KTqp;~lK9AyeqeAy^hzL*!exwsVVu01 zWW}enz&@ep6tNHFF-*{yh+;>CpTtxfzlfe_RnesB&xoHw68N4A_$#!co}q9R*P=MJ zlu&|k9x?g>d3t8*1c{GPxRdUDyG-&(I&MXnG?KWDbX$l`g@|wUE2KS5j-4QRj8x<( zQsneTjv9}gzQi}e#aeWY_oNnjjlFmaea11E5O7wn7NvZPKD?uP-s3KgNa-2*9r8q- Q8C)W(&<+XrFqj|v1*w5Zo&W#< literal 0 HcmV?d00001 diff --git a/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugWatchModule.class b/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/DebugWatchModule.class new file mode 100644 index 0000000000000000000000000000000000000000..264ae81dcd3a177d148f802ed4ecb084c871a5e3 GIT binary patch literal 6374 zcmcIp`Ck<09e!rn-C1@=QIzN=wn0UMT#Ht7fH53_NCSvqw8W%#*qy-WGJ~_TK$D|QMjcKZ)G3kAz_kFj2Mt^JjyzlHTEHH~7O8LP1&b;%!-}iew-{XCG z?cbMQ0k8-EjG_*wqo{`yK}Ni|5o9CSAHk%GsVE|tR`FmtqIj$L`jCpZ#qf4K9K{+u zB1Yb!;?XG9V@5RZ6yM&Z;<0jmd3O|5I3t?JV|Wjq5Y2mIcpuKHcruDDcq)dc@qQH_ zh~h?kP`rF7f@f5GIEs(pqcMC89~aFhVt5vxjNnsIY{#cnd`87*ReVmx=M@AyOe>{8 z>#;1u=}haHjFC~G9&yakQNvMCIc}%2X`^e>u-s$1n;a8^xAi9N@r0f>NAwXradL7z zkaJ;9-1dgvllr7i zDuuzsV2&79hWDG6=^ju}R=evcIq$SnhJuP-(=z(A<0FQ1L?=PA+-oQG^ikb0#d~fr z=#H7(;TB)cJvkF8V9-0!;D;TWJF_|%($+Y1n#$0zIagfcBH!x_N z&KeoFb=hf|2?}kr3R%jN)`0H1hGPl#g%T2J-5N~{xsGX#a`*D_xe1!&q-%PDil#^r z&Jnia<2r9?)-}_KUXwh~k`tsr!V32IiY|;MrO3@q40vm}JUC_~snY9&d|i%XJ3{GQ z(@A4Om`uUlzC?@kDb2IBSMnJ$b56pO6@&n=6PGbeB=_1tDuGPm)Fv+9I*g zq@K>w6yZb;h*1eu2~q_Qc{(UU&0-w+jm!aNd3F|JM8H>-ED4bL`B%JBzoxmlSwUc$O>{^`-ELFFz^aA7Y!X35!LE}0_gD|u z&bW-mL|njRVu(qUHRdp&Tkvl;LRDjXi?Rs~TRxw^e*c!*}sL4d2HPRs2Z9kMWv< zy?z@M@jl?#qaq*Wlpv`7RK?FU{2aepv56&fzt->@{8qt!i9x2rYTK$lz9X}JN9O*9 zYTd2gk!h%w-&%HLnxX@Oi|WoJgS{s@tMw6PoNCkE%G@}YRXrzC@tlU=;rEO<8vcMk zYWNfW%-EyhF9NVZE1OOW1YcIL@0wJw5TQ)D*R-z4>RUeb&nw1?vg495x24uMK9*FhEaJi)UEPNUyA<59G9rcAftAC2Fg5)QOskGDP`JJ zo3jXUDT9djf#f#lGUkF0vhW}Q?-;-{K@W2v-}~tQ`Y3bY#yrIZrF6!yQnHq1Iau2> zPoiA4EeP-T2ZF#YV~p<+NAhJ`@+_rbeUA*b3|rkSo<$B+FfzXc$ZzUvm=b=Hi{mwm z_Mp~Ql^*3Vtz_C4xQ^OZhcTv4nxdrGIA5;0VdMX)zWg@S z;GtELEl-m0w5?;}6iGBJkZx{xX!VquCrVlNmB#Z@pCac`yx>Kbx!|}s+LYwh*Dh)fNeUc)))qyM z_SB@AG{nt-IEAfDQ(VUa-a9AoCTIy?^iLASf!Mp6Nb?q%(m|FoYmktWxpS!imZQ7TmlttISN@*#Xl6Z`B7LVofL3gqKICG z1h(=nu^tK<_!kg0Kl?ZE_A<wA>qf9JT8ldvV6VU4`%Pt|I3Bu)*UjSf0lwWhTo(^EijnGBYz?3#91m4)Q?FwCa9RD( zaIj%$I1~>K4Tl?Pf|^e@I`|vDoQgBY#BKI6uUp-Hb+Hne5GM>eh?B{F0 zoATbp`|5+Zp4w=kKHBjxl6Z`3&cMOrTyX}E;t8q!gOm%HDQIv;+Cji7?B_V zuJd}HcNJ8=@PK}f2rep=y5|w8tUU*{?gDnbz@ah;wY8F=vjp5zSc|h#7|$mvkb=Q^ zVtW;VXeW1F7r_Gs+H>A@35uZT?_HykQW?hNEK_2nij1A)?x!+HV>|;3b_NslSr9}~ zqP~u(2cPQD+_stj74Uw9ONyWM^pCq}qZinp4@da_getrmF6X}#s_+B$PqY6C`(NO1 I_+_~Kzor(E!~g&Q literal 0 HcmV?d00001 diff --git a/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/ExceptionLoggerModule$1.class b/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/ExceptionLoggerModule$1.class new file mode 100644 index 0000000000000000000000000000000000000000..811cea7bf2dc2029b3adff47f4a28418677623d9 GIT binary patch literal 1424 zcmbtUZBNud5PlYpE0h8!AS!Zt$|?7vET<^KA;b_&ObQwyeBZW9>7~~tZI6%`f0T*h z%LjjeKgu{Qr@UxGBA48DcJ`T>XLg?U$Ioxy0X)L<0Sw@l4js33Org||J38)ST1Of8 zblk_xAS$S8sA;G(_1aBR*c_aeIQir^)oQ^NKBdw0h*AH#E zAA2e=mFvoIBRy+Uo@Foa;uVI~%4HH&cNlVO%8?8srWeS~PTP{k_H%zS3w}dHD5%Lr0vQjNR%7Y&#>5yW%yRcoiOkMmtj7;FR|}&--}{N47fau z`3vX3vt=`BCNEN(p^?cbE1W^!Qk~G2FTJGu$$wt`Y)c#nx~%oU_EkhoH)Oo091RZ) zJjASlK^O*x5{rYzJfUp66P83!lD{XpRC@PbL&G5PJk~I8;0c~;STOJmiyD>;G_g$j z_A4nuDx8Hz4!TSg@NIl7TI*@L~f zLbGbB(B+Z8JKy5RuLOyQXHm{*mSMn^@wNzQWf-qi&19GDN>1>&;I3)2TWzP3QFQgajDu%_%DOz3pDNmQ^-=69Y zO7uGQ-2g+!2K_0WF^!yt}itYPW`WhB{S z{uRssC3J=#z>i|slakn_u`>hl2kmLS+UMEb=T7?T??3(o@F|`qF#{`wS>zK~Pm$*{ z1NXG^^AzIv!oZi>el?8^+)rRh+k$~&3Tb>jjR$yW;E{n%10@4x2D9qA!Ye!6_l3`p z5dE5JwS>noS5scg@|_p=+E(N%kh7zjT}M=U!VRABz&_HE8#P;XEbhn#Z*Z&K>sUT_ zn+?^s__4G+;j6A^3+u@nk5a<7_quK%JK|9Kvf+qL*Hr-zq;iSOQmxHYNOYBq0<>GLP!C znxfHdS(Uymjy0*M4^bgRA?+yMEUV73BLdN6NO9X1zMskG^9;Mo|0ns%Mct3}DQ{{& zZ0DBL#VuY)EvNg&uriW>o=eqzp}bDmYbqrsiT`|9ZdRO?n{`gLVDyCNQ~eC_d@i3` zr|$D^aHO8pbo$G%XX~;9CRVnW*83 zi5=|H#7DthKJd)C#`@mCo{4=NjG=ycE{2%_;d-Mj?116UC~kUOk?3fsv7@V zJ9vxRf%1N2NVY_9w$bk{hx;sQ-hSXow^g`Me#Oy>zHFoG9cm~yJZBhYtKkF*XiG(B z4+9@&5ylaTakY-uM&=C&68V+pqY+BicDhYbQY!ERk00wzf90f8$}Nc_-jjN_-5f4! z;1NDTZ!|lt&({RA+3ZPM)K1Tr|0Xrz z74QMQd1n#B9BzbHI{D~59n&Wh=Mxjj31cqt8$6-lUL4a;M4a-v)83P9^D^ JC64-3@*g5ln)Cnw literal 0 HcmV?d00001 diff --git a/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/HttpHttpAccessLoggerModule$1.class b/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/HttpHttpAccessLoggerModule$1.class new file mode 100644 index 0000000000000000000000000000000000000000..fac0693235a74542f201680dbd737347968bf160 GIT binary patch literal 1991 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 literal 0 HcmV?d00001 diff --git a/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/HttpHttpAccessLoggerModule$HttpAccess.class b/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/HttpHttpAccessLoggerModule$HttpAccess.class new file mode 100644 index 0000000000000000000000000000000000000000..7b05be13473ed4fb9fe07a1d41345fac3e51f04c GIT binary patch literal 948 zcmbtSO>fgc5Pjo>q%olhp_Ff0AfQqt7IEMJRZvufXl3A#suxacdvQ0i*U@@i@wYf2 zBo6!leiULhjTBJDDTkfedGq#pW<0-s|M&^uIUaS;z*dMRw%fSh#sfn0vn>n4Aezck zDROBtF>zL#>=mI^D0fn(ghp*Op*xdSGNkN#IV1GWp43j~f&u1tCOR|H)m9N+{F~i7 zum9;hH1Z;KrR+FU#&H3aW4Vez2ZZ%lW!fC+LNQu!0d&X=ccQD|Gr~AZ%0kFo$1;{; zdRmA|nlvuIh@wpET!~c0btc|9H}hwlB&w>SGRwG|Il=e4r;TBQ zN70M4Q6K6eR`y87IU|FpOk{p6t@iN(Z2DFR;j%m)`GGOY?&q?q6z8H<%Nj1lx!-V7 z);3XZwXbRG|D$>8ccY5|u5_`1VH*z#hbxZzuSy903KzrfW7QTZJgo~UB&}DmRfv=FDD!o4)U#BjU4xtL!)VHsUt{`*8Qk vH_+~P1YbD{aE)zi&V7mNeBV4{;RbGV#QeD$F?xri0C#a~j&kF;hnv73`Dp&O literal 0 HcmV?d00001 diff --git a/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/HttpHttpAccessLoggerModule$HttpProcessStep.class b/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/HttpHttpAccessLoggerModule$HttpProcessStep.class new file mode 100644 index 0000000000000000000000000000000000000000..505e43b4ca4382984306471b837816af3506378b GIT binary patch literal 1555 zcmcIkYflqF6g@+?-F8_X7DQfxkE$&w%TrBC5F`*uswj&j#81=hSe9&e$?mrLv$P~) zG#Wnpql|ZkMvLGlVVlm)oqOiqbMD;TA3wi*2QZ7r8E7aNn82it0UZwvbYn^`RvJA9 z1ucn~PNPrSnKb&Poz*eNF!qkSvFlf##qohH!iFbeX`;vSV?; zU~c%n2vh!{(PaWRh#8~;l!lu$$wH~SZKdK^}-k13jLnA z)4Yny)AV)ercaZ$JR~&$WJ!jyqy*?4mVJ~6WN;0GU>G9r7FqciO|VbsI7Z?Fc?`p} zrc`W(@FN&);pfqzc8#ny@fpcuXcFIX3V)q;%o7yGFs|a%Ttdl;Gf2=6&?hEGkC6JP z!tLe$9M_2+QO9kC$svt9$hC+F5+a|Kuh4e0dg2J_Lu8a=Xv*nSj+sTt0tUiiHiWL$wzHcdnXuW3GqVAT zwzk^KYVX_H!?x1a9*PHvRD0K}TJ7DcwYIhQeb-j$|IN%Exe$c%3-jK*`QG>b-~WB@ zd*6Hez;k!q1E57LiD3=iFCW)O`S?H#&A1_g5618zd|0-8M8S$q1w?o)7oIhNxA z1=$E5RPYV?_D~FS@vxNqW(1GK@F>0&!MCGWkMGFGcVmR~Jz4vH3_rjRW$j1u@tCyg zaant!96!dB3Vx#CDFr`O@H2tfg^n|{CY{!8TR`o|W_4>_Mzd|*R`7Fy>GJb-%aq>} zjy@z1v7Jt{uTQrGsya=pFK%acoiz~m+S=GSX!hnZdi$`Rb#`h_x?f73+nF{8<66c@ zX(=r}FgzHywQO(7+#A=1jJT!SX3k3M@hua&QejP3F6$VBdXHfnsf@lRn>8KHG0ZFh z&+8n}hBay_G{(DpW$YQYiNV?@(0J70GluQxv^$<~#n~~MF#58Zle2VzE03q|swss% zR^q*SD%Tg6q!xMisPk-JJdW?S)zXetM%Hjv3zXF@>k$a9GkXbadZ&@qx8?>@y49_b z7TBb*{4EgRi2AzI`OszRlWW-UCF}2=x=HO69cl2I?xv89y={2%_5_E!-lCw7$ znao-(y?gve-5O@61Pdcgq^gk}Hh1e=bf@2>qRn;gJjOFxwlBUdHK3=Rwvv{FV{wqS zOG=u2p=A@BNSEnqkbFq*7^9UAKj;p+RU32}D@ypIkYCN}BV(sbG9J6P?@jANuKOu? zTEQXTv!$(+f`SR5 zVJ(xReKEIOV_6zk!5D*zqW&5QwR>x&+Os3Cf3e$4H0sb89Mi{&Q9#)}yj?RaGFSR7 zp*#FGtJ5s?%zZ<7?_4!jjW?R#=z7B>bMH6Fm9cVc_haw4sH7tyPSR1Tub@+>cavpz zEh+ewf?qQ>EBKATrg0N7iHcGODuAAJzM>hkFCT>Ux)WWhZV>U*wQceYb-C>Bx6C~< zG_=Vu66n_iI#1?UTzYBKcDB$3#3q4ITFcpVLf@mtL7;PL?zXeIxw%rAz(0A&v5s!#(u{9M!Kz=2`Iz5WmATe-rUsOL>9wZj2=qmn#zbW{;ihtmr%qwi}f$l!3;$L`%k+Qh`xLKEi z|ETyco>lOiiX&V`vP-tN-LfQ=l|^YUoN!y8%A8~Ms}(dz2vr0`nZW#`TcwJiv_g?q zyW9AZqsw>cm*sTZk(Pu`0@M~ogau~1B)HoX6QJFC?}eJ(&k)X_tO`X$7^PJa6)}ct zRg?==6%}F{H@{*x#&d6&8CrEFEs7rCl3L z?-VMKDjl>y$y9zM$17~~lLqm{6ULxrQUFbJkD20**0Ex*0iFf_q~kU`?%X0z+$h z!LUp_aKue_uPIa zFNeH{>;?86Joa*8BkrNq4ZkzEu!<3wO|&Fp6aw+AF`x4RnlehiW^W}6?ybtjJoRVY zmzjBacTe%795pgZ_jqUOFsqw&M((he8uNB*l0{bPc==davJiYKIk?u#oO;sGN>GcZ zq{UO<(-9mnWzcUe#o?MN&w3L_o%9GA++~@AG|G1KQ|3Ayo>H-R1nRj#tz{MVojRy}3kD)K?UcM;LaOAP*wsD(XFqie&xmn05%$t19or zj8RlE5S}uMnE?dvMs>36AZ8^-F*|^&IiskV&>AWTC4*ISJ;}qEmn6DVM{!yJJBt|W zNfk&{1#wgo$87ZQ`g$iCiEtH--A+?4CCW58)$;;(h_ z6WZKlS=H$YBC8~_g#jGKB8hDAcx3aT5ZM5c?IyAekqx3AS)9!@`#g-6pjqvsxkjEn zIeC)Jc9wD)mHLL|BUo|^s{xwkc?@_tFK4yZ6T!>ya=uX*8dB~gD6YW)=xmKpY8U#@ z?|YX)%9!L+9|scM^uZ{lt~!jR$wN4!vwjqHg7}uvLzj=DUf_L5vC<&;`@r(8jiYFk zwWijfs0rSL@PQ+b*92QbHKBV}hRaqe)k<~vMl{ugs+E@3NJCYelr<;I*p0_;(pD2m zjG$!{XL1^^R>XlLj~+O3eM8k*BY2TCGUyuV&FZ~`ejm=j{b<1hI0p}+4G$6Y!?0QI z!y~wyKQ~As&f?tdzp`6em!r1lh~ z_7BpF$kL3X~~$rS}P9__ivMjIcOw1gjIt z$}p?vvs7w=^uG(r`14BMHRf_EfyXchPjC%9Nl$xd6R)_q|QlUW2O$ zPS&o*YYA4?UWeBsSQ)_^@J1haoTZcs5qQ~nPpmC*Yx15PeQIyG>YV8lZer4uH~D!lgpJG^&Im5J&+ILA`r-t<=%Rj=bKeKMO7( zao`8=qY&fGsswsK9(54lZU;@=i*P@}g9r~9!hzDtoiH@} zyQd7n&}5QfbELFb?E!MRPb+_56M)fj&5#`)kF(dT2k5`F1wJHAzNXslh+Yx+*F8-$JhPu{Ln_N&V6%Jt8Ud?epQO^BR($@)MJaHH^Plyh-u^m literal 0 HcmV?d00001 diff --git a/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/HttpSupported$2.class b/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/HttpSupported$2.class new file mode 100644 index 0000000000000000000000000000000000000000..8fde122deccf27c3cbf4c6389efeadb392379968 GIT binary patch literal 969 zcmbVK+iuf95IvhXc4JIy0+c)D5>PLQts;bk8dX9O2qZ%vg8II;m(-E78`{~ zJn#X06k_aHt$_zb9(K>n?9ACYv-{)cx9NSC`~U1X7bnN(B$Z77dRQS=xuRFvwRX7EOu6CFFa=fT06gZm!( z@I7q6XLz#8)EWG<$t^W93|C+}70EF8|8j=)vo^}n&}UePw2(*du}?p?1A1)w%57St zoV+esoRATAcE5mqBBKSDcDo8b!a1_NWdh+kc{EG-w3o%t2wQ}my{~9}B%@i(tK!XN zLS0O$xPTs*|D0$p)-?N+Q_|SGd!Nz%lc(8)UGrGDRNc0TD-~YFH9`y5X+KY^M|>6` LNT*HF%l6tYP>Jjq literal 0 HcmV?d00001 diff --git a/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/HttpSupported$3.class b/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/HttpSupported$3.class new file mode 100644 index 0000000000000000000000000000000000000000..baa1cf63d2a1a8a38d802bca92a31c7af2b0bc77 GIT binary patch literal 975 zcmbVK+iuf95IvhXc4G`R0m}W>7SxNxRxPT88dX981X5@pg8II;m(-E78`{~ zJn#X06k>c)ap3`xhut$XJ9Boa6;NT&H-H%ml z4jI}Tn%nS8+M%bAx$O$f5^%slr5OG>5m+oa)HIss{&44%R%Z z!}qWZpW*2ulV|XM&#qF*&|iS*OeVwb|CgU@qZ$rypI@8DVGZ3)m+zT5xH%%ita^knL3ogqO&pX~L(yD1JuRBJ6B`Me8FO&EoyCc%@3H zizyYC(F60J6U~*HW`}YL8hdN|GunUhG@Gz%9t&5?+g5PB#2dItXyF#^7isl~&msir Kv?+ScUit-_E$)^8 literal 0 HcmV?d00001 diff --git a/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/HttpSupported$4.class b/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/HttpSupported$4.class new file mode 100644 index 0000000000000000000000000000000000000000..29c8380e25c3385f79bcf9a932e6529fe2fd5add GIT binary patch literal 978 zcmbVK+iuf95IvhXc4G{61C;x{Kra%mstO4jDxnBOr9dBo`o6Xo*O9Xut=AEs1uuYj z-~;$5#Mm*dfd@n$cF)Z0%-K1!`~An)Zvb|1-$e)4TwKQu7Zz?hxaHusgF6g%Kb5K3 zXK1f)95Gk}6$^&tVJgL&ViF4dmWLTddP5cQ?1<~M^y{Eyj?OBfn)Pp^c~t76CwU>GOyx9**TNjD*uh;74wf9; z^RNcr!!mq^-9={4;GYg}E|a0Z0Mm(1hMoT}XIMFHqn-}^iW$!earh3~^mRL+C#OH% zrbXh(>yi}^GQ!U0XRwcCwBXWiSHY(^L$)_hAUsDNjT1iYW$_cj7GY=W3tAt@Xcj-K zidW|ebup!41wAnTInkW2X|^e+q_H=*KB4_5PqPWT=CN?0x@{GgD!hyhK8w literal 0 HcmV?d00001 diff --git a/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/HttpSupported$Converter.class b/sandbox-debug-module/target/classes/com/alibaba/jvm/sandbox/module/debug/HttpSupported$Converter.class new file mode 100644 index 0000000000000000000000000000000000000000..559059ade67cf9696b43c479c52ab52be1ea9608 GIT binary patch literal 409 zcmb7AK~BRk5FD2hx1~VEg%2Q9E?DZ3R$MAoAR%!`K42$Sl*q9o$BuX#2Ohwq5DPg_ zR4$x$XSB0Bv+p0TZva+UaGY?QG4R~kUi-jsy?m-=FNKk|6lw64E!Q`D)U&E}9@Y%g zv?{F((QAgwzeHI^Q_D?ucc{KUq!?zYi$2%8%FxD(hY;E{wypC)7q?%QIL;Y1xod