From matzew at apache.org Tue Oct 28 08:30:31 2014 Content-Type: multipart/mixed; boundary="===============2515645562883176874==" MIME-Version: 1.0 From: Matthias Wessendorf To: keycloak-dev at lists.jboss.org Subject: Re: [keycloak-dev] Keycloak 1.0.3 branch problem Date: Tue, 28 Oct 2014 13:30:30 +0100 Message-ID: In-Reply-To: CAAg5f2T4hwmN0oq23BYE8H=qLd3P0ZT9VubCn7VcVX8hngAQzA@mail.gmail.com --===============2515645562883176874== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi, I tested the branch again, with our recent changes, where we are introducing an new role, besides the previous admin The Branch_1_0 (1.0.3) works perfectly fine with our stuff (tested WildFly8.1 and EAP 6.3) On Mon, Oct 27, 2014 at 10:00 AM, Matthias Wessendorf wrote: > > > On Mon, Oct 27, 2014 at 8:21 AM, Stian Thorgersen > wrote: > >> >> >> ----- Original Message ----- >> > From: "Bill Burke" >> > To: "Stian Thorgersen" >> > Cc: keycloak-dev(a)lists.jboss.org >> > Sent: Friday, 24 October, 2014 4:09:57 PM >> > Subject: Re: [keycloak-dev] Keycloak 1.0.3 branch problem >> > >> > What you're describing isn't CSRF, it is an injection attack. So CSRF >> > doesn't apply. >> >> Yep, I know. It was a moment of brain malfunctioning! >> >> > >> > In 1.1 you can't post directly to processLogin or processRegister as y= ou >> > have to have a client session set up and the client session's state mu= st >> > be AUTHENTICATE >> >> I'll remove it - as you say it's being added in 1.1 in any case, and >> 1.0.x shouldn't change how things functions any ways. >> > > Hi all, > > I tested the 'new' 1.0.x branch -> works all fine now > > >> >> > >> > >> > >> > >> > On 10/24/2014 9:47 AM, Stian Thorgersen wrote: >> > > Not sure TBH >> > > >> > > I was thinking that someone could post from an external page and >> inject a >> > > JS script to capture the username/password. Basically post an invalid >> > > username () where the script also removes the >> invalid >> > > user/password warning. Then when the user enters username/password t= he >> > > script could capture the username/password and send it somewhere. >> > > >> > > But, then once I'd done that I realised that we should escape any ht= ml >> > > entered in input fields any ways so I fixed that, which kinda made t= he >> > > other fix pointless. >> > > >> > > I reckon I'll remove it! Unless for some reason we want to prevent >> folks >> > > from posting directly to login/registration endpoints? >> > > >> > > ----- Original Message ----- >> > >> From: "Bill Burke" >> > >> To: keycloak-dev(a)lists.jboss.org >> > >> Sent: Friday, 24 October, 2014 2:41:05 PM >> > >> Subject: Re: [keycloak-dev] Keycloak 1.0.3 branch problem >> > >> >> > >> Why is there a CSRF check in processLogin? The user isn't even >> logged >> > >> in yet and no credentials have been processed. >> > >> >> > >> On 10/24/2014 6:54 AM, Matthias Wessendorf wrote: >> > >>> Hi, >> > >>> >> > >>> I tried picking up KC 1.0.3.Final on our 1.0.x branch: >> > >>> >> > >>> * deployment of both WARs went fine >> > >>> * accessing the `http://localhost:8080/ag-push` >> offers me the initial >> > >>> login for admin:123 >> > >>> * clicking login did _NOT_ redirect me to the form where I am >> supposed to >> > >>> update the default password. >> > >>> >> > >>> >> > >>> On WildFly, I got a blank page and this stack-trace: >> > >>> ``` >> > >>> 12:47:35,859 WARN [org.jboss.resteasy.core.ExceptionHandler] >> (default >> > >>> task-10) Failed executing POST >> > >>> /realms/aerogear/tokens/auth/request/login: >> > >>> org.keycloak.services.ForbiddenException >> > >>> at >> org.keycloak.services.util.CsrfHelper.csrfCheck(CsrfHelper.java:39) >> > >>> [keycloak-services-1.0.3.Final.jar:] >> > >>> at >> > >>> >> org.keycloak.services.resources.TokenService.processLogin(TokenService.= java:479) >> > >>> [keycloak-services-1.0.3.Final.jar:] >> > >>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> > >>> [rt.jar:1.7.0_65] >> > >>> at >> > >>> >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.ja= va:57) >> > >>> [rt.jar:1.7.0_65] >> > >>> at >> > >>> >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccesso= rImpl.java:43) >> > >>> [rt.jar:1.7.0_65] >> > >>> at java.lang.reflect.Method.invoke(Method.java:606) >> [rt.jar:1.7.0_65] >> > >>> at >> > >>> >> org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.ja= va:137) >> > >>> [resteasy-jaxrs-3.0.8.Final.jar:] >> > >>> at >> > >>> >> org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMe= thodInvoker.java:296) >> > >>> [resteasy-jaxrs-3.0.8.Final.jar:] >> > >>> at >> > >>> >> org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvo= ker.java:250) >> > >>> [resteasy-jaxrs-3.0.8.Final.jar:] >> > >>> at >> > >>> >> org.jboss.resteasy.core.ResourceLocatorInvoker.invokeOnTargetObject(Res= ourceLocatorInvoker.java:140) >> > >>> [resteasy-jaxrs-3.0.8.Final.jar:] >> > >>> at >> > >>> >> org.jboss.resteasy.core.ResourceLocatorInvoker.invoke(ResourceLocatorIn= voker.java:103) >> > >>> [resteasy-jaxrs-3.0.8.Final.jar:] >> > >>> at >> > >>> >> org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatc= her.java:356) >> > >>> [resteasy-jaxrs-3.0.8.Final.jar:] >> > >>> at >> > >>> >> org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatc= her.java:179) >> > >>> [resteasy-jaxrs-3.0.8.Final.jar:] >> > >>> at >> > >>> >> org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.se= rvice(ServletContainerDispatcher.java:220) >> > >>> [resteasy-jaxrs-3.0.8.Final.jar:] >> > >>> at >> > >>> >> org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service= (HttpServletDispatcher.java:56) >> > >>> [resteasy-jaxrs-3.0.8.Final.jar:] >> > >>> at >> > >>> >> org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service= (HttpServletDispatcher.java:51) >> > >>> [resteasy-jaxrs-3.0.8.Final.jar:] >> > >>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) >> > >>> [jboss-servlet-api_3.1_spec-1.0.0.Final.jar:1.0.0.Final] >> > >>> at >> > >>> >> io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandle= r.java:85) >> > >>> [undertow-servlet-1.0.15.Final.jar:1.0.15.Final] >> > >>> at >> > >>> >> io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(Fil= terHandler.java:130) >> > >>> [undertow-servlet-1.0.15.Final.jar:1.0.15.Final] >> > >>> at >> > >>> >> org.keycloak.services.filters.ClientConnectionFilter.doFilter(ClientCon= nectionFilter.java:41) >> > >>> [keycloak-services-1.0.3.Final.jar:] >> > >>> at >> > >>> >> io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60) >> > >>> [undertow-servlet-1.0.15.Final.jar:1.0.15.Final] >> > >>> at >> > >>> >> io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(Fil= terHandler.java:132) >> > >>> [undertow-servlet-1.0.15.Final.jar:1.0.15.Final] >> > >>> at >> > >>> >> org.keycloak.services.filters.KeycloakSessionServletFilter.doFilter(Key= cloakSessionServletFilter.java:40) >> > >>> [keycloak-services-1.0.3.Final.jar:] >> > >>> at >> > >>> >> io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60) >> > >>> [undertow-servlet-1.0.15.Final.jar:1.0.15.Final] >> > >>> at >> > >>> >> io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(Fil= terHandler.java:132) >> > >>> [undertow-servlet-1.0.15.Final.jar:1.0.15.Final] >> > >>> at >> > >>> >> io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.= java:85) >> > >>> [undertow-servlet-1.0.15.Final.jar:1.0.15.Final] >> > >>> at >> > >>> >> io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handle= Request(ServletSecurityRoleHandler.java:61) >> > >>> [undertow-servlet-1.0.15.Final.jar:1.0.15.Final] >> > >>> at >> > >>> >> io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(Se= rvletDispatchingHandler.java:36) >> > >>> [undertow-servlet-1.0.15.Final.jar:1.0.15.Final] >> > >>> at >> > >>> >> org.wildfly.extension.undertow.security.SecurityContextAssociationHandl= er.handleRequest(SecurityContextAssociationHandler.java:78) >> > >>> at >> > >>> >> io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHan= dler.java:25) >> > >>> [undertow-core-1.0.15.Final.jar:1.0.15.Final] >> > >>> at >> > >>> >> io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.= handleRequest(SSLInformationAssociationHandler.java:113) >> > >>> [undertow-servlet-1.0.15.Final.jar:1.0.15.Final] >> > >>> at >> > >>> >> io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.= handleRequest(ServletAuthenticationCallHandler.java:56) >> > >>> [undertow-servlet-1.0.15.Final.jar:1.0.15.Final] >> > >>> at >> > >>> >> io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHan= dler.java:25) >> > >>> [undertow-core-1.0.15.Final.jar:1.0.15.Final] >> > >>> at >> > >>> >> io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequ= est(AbstractConfidentialityHandler.java:45) >> > >>> [undertow-core-1.0.15.Final.jar:1.0.15.Final] >> > >>> at >> > >>> >> io.undertow.servlet.handlers.security.ServletConfidentialityConstraintH= andler.handleRequest(ServletConfidentialityConstraintHandler.java:61) >> > >>> [undertow-servlet-1.0.15.Final.jar:1.0.15.Final] >> > >>> at >> > >>> >> io.undertow.security.handlers.AuthenticationMechanismsHandler.handleReq= uest(AuthenticationMechanismsHandler.java:58) >> > >>> [undertow-core-1.0.15.Final.jar:1.0.15.Final] >> > >>> at >> > >>> >> io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler= .handleRequest(CachedAuthenticatedSessionHandler.java:70) >> > >>> [undertow-servlet-1.0.15.Final.jar:1.0.15.Final] >> > >>> at >> > >>> >> io.undertow.security.handlers.SecurityInitialHandler.handleRequest(Secu= rityInitialHandler.java:76) >> > >>> [undertow-core-1.0.15.Final.jar:1.0.15.Final] >> > >>> at >> > >>> >> io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHan= dler.java:25) >> > >>> [undertow-core-1.0.15.Final.jar:1.0.15.Final] >> > >>> at >> > >>> >> org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handl= eRequest(JACCContextIdHandler.java:61) >> > >>> at >> > >>> >> io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHan= dler.java:25) >> > >>> [undertow-core-1.0.15.Final.jar:1.0.15.Final] >> > >>> at >> > >>> >> io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHan= dler.java:25) >> > >>> [undertow-core-1.0.15.Final.jar:1.0.15.Final] >> > >>> at >> > >>> >> io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(S= ervletInitialHandler.java:240) >> > >>> [undertow-servlet-1.0.15.Final.jar:1.0.15.Final] >> > >>> at >> > >>> >> io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(Serv= letInitialHandler.java:227) >> > >>> [undertow-servlet-1.0.15.Final.jar:1.0.15.Final] >> > >>> at >> > >>> >> io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletIn= itialHandler.java:73) >> > >>> [undertow-servlet-1.0.15.Final.jar:1.0.15.Final] >> > >>> at >> > >>> >> io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(Serv= letInitialHandler.java:146) >> > >>> [undertow-servlet-1.0.15.Final.jar:1.0.15.Final] >> > >>> at >> io.undertow.server.Connectors.executeRootHandler(Connectors.java:177) >> > >>> [undertow-core-1.0.15.Final.jar:1.0.15.Final] >> > >>> at >> > >>> >> io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:727) >> > >>> [undertow-core-1.0.15.Final.jar:1.0.15.Final] >> > >>> at >> > >>> >> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.ja= va:1145) >> > >>> [rt.jar:1.7.0_65] >> > >>> at >> > >>> >> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.j= ava:615) >> > >>> [rt.jar:1.7.0_65] >> > >>> at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_65] >> > >>> ``` >> > >>> >> > >>> On EAP 6.3. I got a 403, with this stack-trace: >> > >>> ``` >> > >>> 12:50:06,377 WARN [org.jboss.resteasy.core.SynchronousDispatcher] >> > >>> (http-/0.0.0.0:8080-3) Failed executing POST >> > >>> /realms/aerogear/tokens/auth/request/login: >> > >>> org.keycloak.services.ForbiddenException >> > >>> at >> org.keycloak.services.util.CsrfHelper.csrfCheck(CsrfHelper.java:39) >> > >>> [keycloak-services-1.0.3.Final.jar:] >> > >>> at >> > >>> >> org.keycloak.services.resources.TokenService.processLogin(TokenService.= java:479) >> > >>> [keycloak-services-1.0.3.Final.jar:] >> > >>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> > >>> [rt.jar:1.7.0_65] >> > >>> at >> > >>> >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.ja= va:57) >> > >>> [rt.jar:1.7.0_65] >> > >>> at >> > >>> >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccesso= rImpl.java:43) >> > >>> [rt.jar:1.7.0_65] >> > >>> at java.lang.reflect.Method.invoke(Method.java:606) >> [rt.jar:1.7.0_65] >> > >>> at >> > >>> >> org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.ja= va:167) >> > >>> [resteasy-jaxrs-2.3.8.Final-redhat-3.jar:] >> > >>> at >> > >>> >> org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.ja= va:269) >> > >>> [resteasy-jaxrs-2.3.8.Final-redhat-3.jar:] >> > >>> at >> > >>> >> org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:227) >> > >>> [resteasy-jaxrs-2.3.8.Final-redhat-3.jar:] >> > >>> at >> > >>> >> org.jboss.resteasy.core.ResourceLocator.invokeOnTargetObject(ResourceLo= cator.java:159) >> > >>> [resteasy-jaxrs-2.3.8.Final-redhat-3.jar:] >> > >>> at >> > >>> >> org.jboss.resteasy.core.ResourceLocator.invoke(ResourceLocator.java:92) >> > >>> [resteasy-jaxrs-2.3.8.Final-redhat-3.jar:] >> > >>> at >> > >>> >> org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDi= spatcher.java:542) >> > >>> [resteasy-jaxrs-2.3.8.Final-redhat-3.jar:] >> > >>> at >> > >>> >> org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatc= her.java:524) >> > >>> [resteasy-jaxrs-2.3.8.Final-redhat-3.jar:] >> > >>> at >> > >>> >> org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatc= her.java:126) >> > >>> [resteasy-jaxrs-2.3.8.Final-redhat-3.jar:] >> > >>> at >> > >>> >> org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.se= rvice(ServletContainerDispatcher.java:208) >> > >>> [resteasy-jaxrs-2.3.8.Final-redhat-3.jar:] >> > >>> at >> > >>> >> org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service= (HttpServletDispatcher.java:55) >> > >>> [resteasy-jaxrs-2.3.8.Final-redhat-3.jar:] >> > >>> at >> > >>> >> org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service= (HttpServletDispatcher.java:50) >> > >>> [resteasy-jaxrs-2.3.8.Final-redhat-3.jar:] >> > >>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) >> > >>> >> [jboss-servlet-api_3.0_spec-1.0.2.Final-redhat-1.jar:1.0.2.Final-redhat= -1] >> > >>> at >> > >>> >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applic= ationFilterChain.java:295) >> > >>> [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] >> > >>> at >> > >>> >> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFil= terChain.java:214) >> > >>> [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] >> > >>> at >> > >>> >> org.keycloak.services.filters.ClientConnectionFilter.doFilter(ClientCon= nectionFilter.java:41) >> > >>> [keycloak-services-1.0.3.Final.jar:] >> > >>> at >> > >>> >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applic= ationFilterChain.java:246) >> > >>> [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] >> > >>> at >> > >>> >> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFil= terChain.java:214) >> > >>> [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] >> > >>> at >> > >>> >> org.keycloak.services.filters.KeycloakSessionServletFilter.doFilter(Key= cloakSessionServletFilter.java:40) >> > >>> [keycloak-services-1.0.3.Final.jar:] >> > >>> at >> > >>> >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applic= ationFilterChain.java:246) >> > >>> [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] >> > >>> at >> > >>> >> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFil= terChain.java:214) >> > >>> [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] >> > >>> at >> > >>> >> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperVal= ve.java:231) >> > >>> [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] >> > >>> at >> > >>> >> org.apache.catalina.core.StandardContextValve.invoke(StandardContextVal= ve.java:149) >> > >>> [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] >> > >>> at >> > >>> >> org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmClo= serValve.java:50) >> > >>> [jboss-as-jpa-7.4.0.Final-redhat-19.jar:7.4.0.Final-redhat-19] >> > >>> at >> > >>> >> org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmClo= serValve.java:50) >> > >>> [jboss-as-jpa-7.4.0.Final-redhat-19.jar:7.4.0.Final-redhat-19] >> > >>> at >> > >>> >> org.jboss.as.web.security.SecurityContextAssociationValve.invoke(Securi= tyContextAssociationValve.java:169) >> > >>> [jboss-as-web-7.4.0.Final-redhat-19.jar:7.4.0.Final-redhat-19] >> > >>> at >> > >>> >> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.jav= a:145) >> > >>> [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] >> > >>> at >> > >>> >> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.jav= a:97) >> > >>> [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] >> > >>> at >> > >>> >> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve= .java:102) >> > >>> [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] >> > >>> at >> > >>> >> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:= 344) >> > >>> [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] >> > >>> at >> > >>> >> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:8= 56) >> > >>> [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] >> > >>> at >> > >>> >> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process= (Http11Protocol.java:653) >> > >>> [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] >> > >>> at >> > >>> >> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:926) >> > >>> [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] >> > >>> at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_65] >> > >>> ``` >> > >>> >> > >>> >> > >>> >> > >>> -- >> > >>> Matthias Wessendorf >> > >>> >> > >>> blog: http://matthiaswessendorf.wordpress.com/ >> > >>> sessions: http://www.slideshare.net/mwessendorf >> > >>> twitter: http://twitter.com/mwessendorf >> > >>> >> > >>> >> > >>> _______________________________________________ >> > >>> keycloak-dev mailing list >> > >>> keycloak-dev(a)lists.jboss.org >> > >>> https://lists.jboss.org/mailman/listinfo/keycloak-dev >> > >>> >> > >> >> > >> -- >> > >> Bill Burke >> > >> JBoss, a division of Red Hat >> > >> http://bill.burkecentral.com >> > >> _______________________________________________ >> > >> keycloak-dev mailing list >> > >> keycloak-dev(a)lists.jboss.org >> > >> https://lists.jboss.org/mailman/listinfo/keycloak-dev >> > >> >> > >> > -- >> > Bill Burke >> > JBoss, a division of Red Hat >> > http://bill.burkecentral.com >> > >> _______________________________________________ >> keycloak-dev mailing list >> keycloak-dev(a)lists.jboss.org >> https://lists.jboss.org/mailman/listinfo/keycloak-dev >> > > > > -- > Matthias Wessendorf > > blog: http://matthiaswessendorf.wordpress.com/ > sessions: http://www.slideshare.net/mwessendorf > twitter: http://twitter.com/mwessendorf > -- = Matthias Wessendorf blog: http://matthiaswessendorf.wordpress.com/ sessions: http://www.slideshare.net/mwessendorf twitter: http://twitter.com/mwessendorf --===============2515645562883176874== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PGRpdiBkaXI9Imx0ciI+SGksPGRpdj48YnI+PC9kaXY+PGRpdj5JIHRlc3RlZCB0aGUgYnJhbmNo IGFnYWluLCB3aXRoIG91ciByZWNlbnQgY2hhbmdlcywgd2hlcmUgd2UgYXJlIGludHJvZHVjaW5n IGFuIG5ldyByb2xlLCBiZXNpZGVzIHRoZSBwcmV2aW91cyBhZG1pbjwvZGl2PjxkaXY+PGJyPjwv ZGl2PjxkaXY+VGhlIEJyYW5jaF8xXzAgKDEuMC4zKSB3b3JrcyBwZXJmZWN0bHkgZmluZSB3aXRo IG91ciBzdHVmZiAodGVzdGVkIFdpbGRGbHk4LjEgYW5kIEVBUCA2LjMpPC9kaXY+PC9kaXY+PGRp diBjbGFzcz0iZ21haWxfZXh0cmEiPjxicj48ZGl2IGNsYXNzPSJnbWFpbF9xdW90ZSI+T24gTW9u LCBPY3QgMjcsIDIwMTQgYXQgMTA6MDAgQU0sIE1hdHRoaWFzIFdlc3NlbmRvcmYgPHNwYW4gZGly PSJsdHIiPiZsdDs8YSBocmVmPSJtYWlsdG86bWF0emV3QGFwYWNoZS5vcmciIHRhcmdldD0iX2Js YW5rIj5tYXR6ZXdAYXBhY2hlLm9yZzwvYT4mZ3Q7PC9zcGFuPiB3cm90ZTo8YnI+PGJsb2NrcXVv dGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVyLWxl ZnQ6MXB4ICNjY2Mgc29saWQ7cGFkZGluZy1sZWZ0OjFleCI+PGRpdiBkaXI9Imx0ciI+PGJyPjxk aXYgY2xhc3M9ImdtYWlsX2V4dHJhIj48YnI+PGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPjxzcGFu IGNsYXNzPSIiPk9uIE1vbiwgT2N0IDI3LCAyMDE0IGF0IDg6MjEgQU0sIFN0aWFuIFRob3JnZXJz ZW4gPHNwYW4gZGlyPSJsdHIiPiZsdDs8YSBocmVmPSJtYWlsdG86c3RpYW5AcmVkaGF0LmNvbSIg dGFyZ2V0PSJfYmxhbmsiPnN0aWFuQHJlZGhhdC5jb208L2E+Jmd0Ozwvc3Bhbj4gd3JvdGU6PGJy PjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdpbjowIDAgMCAuOGV4 O2JvcmRlci1sZWZ0OjFweCAjY2NjIHNvbGlkO3BhZGRpbmctbGVmdDoxZXgiPjxzcGFuPjxicj4K PGJyPgotLS0tLSBPcmlnaW5hbCBNZXNzYWdlIC0tLS0tPGJyPgomZ3Q7IEZyb206ICZxdW90O0Jp bGwgQnVya2UmcXVvdDsgJmx0OzxhIGhyZWY9Im1haWx0bzpiYnVya2VAcmVkaGF0LmNvbSIgdGFy Z2V0PSJfYmxhbmsiPmJidXJrZUByZWRoYXQuY29tPC9hPiZndDs8YnI+Cjwvc3Bhbj48c3Bhbj4m Z3Q7IFRvOiAmcXVvdDtTdGlhbiBUaG9yZ2Vyc2VuJnF1b3Q7ICZsdDs8YSBocmVmPSJtYWlsdG86 c3RpYW5AcmVkaGF0LmNvbSIgdGFyZ2V0PSJfYmxhbmsiPnN0aWFuQHJlZGhhdC5jb208L2E+Jmd0 Ozxicj4KJmd0OyBDYzogPGEgaHJlZj0ibWFpbHRvOmtleWNsb2FrLWRldkBsaXN0cy5qYm9zcy5v cmciIHRhcmdldD0iX2JsYW5rIj5rZXljbG9hay1kZXZAbGlzdHMuamJvc3Mub3JnPC9hPjxicj4K Jmd0OyBTZW50OiBGcmlkYXksIDI0IE9jdG9iZXIsIDIwMTQgNDowOTo1NyBQTTxicj4KJmd0OyBT dWJqZWN0OiBSZTogW2tleWNsb2FrLWRldl0gS2V5Y2xvYWsgMS4wLjMgYnJhbmNoIHByb2JsZW08 YnI+CiZndDs8YnI+Cjwvc3Bhbj48c3Bhbj4mZ3Q7IFdoYXQgeW91JiMzOTtyZSBkZXNjcmliaW5n IGlzbiYjMzk7dCBDU1JGLCBpdCBpcyBhbiBpbmplY3Rpb24gYXR0YWNrLsKgIFNvIENTUkY8YnI+ CiZndDsgZG9lc24mIzM5O3QgYXBwbHkuPGJyPgo8YnI+Cjwvc3Bhbj5ZZXAsIEkga25vdy4gSXQg d2FzIGEgbW9tZW50IG9mIGJyYWluIG1hbGZ1bmN0aW9uaW5nITxicj4KPHNwYW4+PGJyPgomZ3Q7 PGJyPgomZ3Q7IEluIDEuMSB5b3UgY2FuJiMzOTt0IHBvc3QgZGlyZWN0bHkgdG8gcHJvY2Vzc0xv Z2luIG9yIHByb2Nlc3NSZWdpc3RlciBhcyB5b3U8YnI+CiZndDsgaGF2ZSB0byBoYXZlIGEgY2xp ZW50IHNlc3Npb24gc2V0IHVwIGFuZCB0aGUgY2xpZW50IHNlc3Npb24mIzM5O3Mgc3RhdGUgbXVz dDxicj4KJmd0OyBiZSBBVVRIRU5USUNBVEU8YnI+Cjxicj4KPC9zcGFuPkkmIzM5O2xsIHJlbW92 ZSBpdCAtIGFzIHlvdSBzYXkgaXQmIzM5O3MgYmVpbmcgYWRkZWQgaW4gMS4xIGluIGFueSBjYXNl LCBhbmQgMS4wLnggc2hvdWxkbiYjMzk7dCBjaGFuZ2UgaG93IHRoaW5ncyBmdW5jdGlvbnMgYW55 IHdheXMuPGJyPjwvYmxvY2txdW90ZT48ZGl2Pjxicj48L2Rpdj48L3NwYW4+PGRpdj5IaSBhbGws PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5JIHRlc3RlZCB0aGUgJiMzOTtuZXcmIzM5OyAxLjAu eCBicmFuY2ggLSZndDsgd29ya3MgYWxsIGZpbmUgbm93PC9kaXY+PGRpdj48ZGl2IGNsYXNzPSJo NSI+PGRpdj7CoDwvZGl2PjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1h cmdpbjowIDAgMCAuOGV4O2JvcmRlci1sZWZ0OjFweCAjY2NjIHNvbGlkO3BhZGRpbmctbGVmdDox ZXgiPgo8ZGl2PjxkaXY+PGJyPgomZ3Q7PGJyPgomZ3Q7PGJyPgomZ3Q7PGJyPgomZ3Q7PGJyPgom Z3Q7IE9uIDEwLzI0LzIwMTQgOTo0NyBBTSwgU3RpYW4gVGhvcmdlcnNlbiB3cm90ZTo8YnI+CiZn dDsgJmd0OyBOb3Qgc3VyZSBUQkg8YnI+CiZndDsgJmd0Ozxicj4KJmd0OyAmZ3Q7IEkgd2FzIHRo aW5raW5nIHRoYXQgc29tZW9uZSBjb3VsZCBwb3N0IGZyb20gYW4gZXh0ZXJuYWwgcGFnZSBhbmQg aW5qZWN0IGE8YnI+CiZndDsgJmd0OyBKUyBzY3JpcHQgdG8gY2FwdHVyZSB0aGUgdXNlcm5hbWUv cGFzc3dvcmQuIEJhc2ljYWxseSBwb3N0IGFuIGludmFsaWQ8YnI+CiZndDsgJmd0OyB1c2VybmFt ZSAoJmx0O3NjcmlwdCZndDsuLi4mbHQ7L3NjcmlwdCZndDspIHdoZXJlIHRoZSBzY3JpcHQgYWxz byByZW1vdmVzIHRoZSBpbnZhbGlkPGJyPgomZ3Q7ICZndDsgdXNlci9wYXNzd29yZCB3YXJuaW5n LiBUaGVuIHdoZW4gdGhlIHVzZXIgZW50ZXJzIHVzZXJuYW1lL3Bhc3N3b3JkIHRoZTxicj4KJmd0 OyAmZ3Q7IHNjcmlwdCBjb3VsZCBjYXB0dXJlIHRoZSB1c2VybmFtZS9wYXNzd29yZCBhbmQgc2Vu ZCBpdCBzb21ld2hlcmUuPGJyPgomZ3Q7ICZndDs8YnI+CiZndDsgJmd0OyBCdXQsIHRoZW4gb25j ZSBJJiMzOTtkIGRvbmUgdGhhdCBJIHJlYWxpc2VkIHRoYXQgd2Ugc2hvdWxkIGVzY2FwZSBhbnkg aHRtbDxicj4KJmd0OyAmZ3Q7IGVudGVyZWQgaW4gaW5wdXQgZmllbGRzIGFueSB3YXlzIHNvIEkg Zml4ZWQgdGhhdCwgd2hpY2gga2luZGEgbWFkZSB0aGU8YnI+CiZndDsgJmd0OyBvdGhlciBmaXgg cG9pbnRsZXNzLjxicj4KJmd0OyAmZ3Q7PGJyPgomZ3Q7ICZndDsgSSByZWNrb24gSSYjMzk7bGwg cmVtb3ZlIGl0ISBVbmxlc3MgZm9yIHNvbWUgcmVhc29uIHdlIHdhbnQgdG8gcHJldmVudCBmb2xr czxicj4KJmd0OyAmZ3Q7IGZyb20gcG9zdGluZyBkaXJlY3RseSB0byBsb2dpbi9yZWdpc3RyYXRp b24gZW5kcG9pbnRzPzxicj4KJmd0OyAmZ3Q7PGJyPgomZ3Q7ICZndDsgLS0tLS0gT3JpZ2luYWwg TWVzc2FnZSAtLS0tLTxicj4KJmd0OyAmZ3Q7Jmd0OyBGcm9tOiAmcXVvdDtCaWxsIEJ1cmtlJnF1 b3Q7ICZsdDs8YSBocmVmPSJtYWlsdG86YmJ1cmtlQHJlZGhhdC5jb20iIHRhcmdldD0iX2JsYW5r Ij5iYnVya2VAcmVkaGF0LmNvbTwvYT4mZ3Q7PGJyPgomZ3Q7ICZndDsmZ3Q7IFRvOiA8YSBocmVm PSJtYWlsdG86a2V5Y2xvYWstZGV2QGxpc3RzLmpib3NzLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPmtl eWNsb2FrLWRldkBsaXN0cy5qYm9zcy5vcmc8L2E+PGJyPgomZ3Q7ICZndDsmZ3Q7IFNlbnQ6IEZy aWRheSwgMjQgT2N0b2JlciwgMjAxNCAyOjQxOjA1IFBNPGJyPgomZ3Q7ICZndDsmZ3Q7IFN1Ympl Y3Q6IFJlOiBba2V5Y2xvYWstZGV2XSBLZXljbG9hayAxLjAuMyBicmFuY2ggcHJvYmxlbTxicj4K Jmd0OyAmZ3Q7Jmd0Ozxicj4KJmd0OyAmZ3Q7Jmd0OyBXaHkgaXMgdGhlcmUgYSBDU1JGIGNoZWNr IGluIHByb2Nlc3NMb2dpbj/CoCBUaGUgdXNlciBpc24mIzM5O3QgZXZlbiBsb2dnZWQ8YnI+CiZn dDsgJmd0OyZndDsgaW4geWV0IGFuZCBubyBjcmVkZW50aWFscyBoYXZlIGJlZW4gcHJvY2Vzc2Vk Ljxicj4KJmd0OyAmZ3Q7Jmd0Ozxicj4KJmd0OyAmZ3Q7Jmd0OyBPbiAxMC8yNC8yMDE0IDY6NTQg QU0sIE1hdHRoaWFzIFdlc3NlbmRvcmYgd3JvdGU6PGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0OyBIaSw8 YnI+CiZndDsgJmd0OyZndDsmZ3Q7PGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0OyBJIHRyaWVkIHBpY2tp bmcgdXAgS0MgMS4wLjMuRmluYWwgb24gb3VyIDEuMC54IGJyYW5jaDo8YnI+CiZndDsgJmd0OyZn dDsmZ3Q7PGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0OyAqIGRlcGxveW1lbnQgb2YgYm90aCBXQVJzIHdl bnQgZmluZTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDsgKiBhY2Nlc3NpbmcgdGhlIGA8YSBocmVmPSJo dHRwOi8vbG9jYWxob3N0OjgwODAvYWctcHVzaCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly9sb2Nh bGhvc3Q6ODA4MC9hZy1wdXNoYDwvYT7CoCBvZmZlcnMgbWUgdGhlIGluaXRpYWw8YnI+CiZndDsg Jmd0OyZndDsmZ3Q7IGxvZ2luIGZvciBhZG1pbjoxMjM8YnI+CiZndDsgJmd0OyZndDsmZ3Q7ICog Y2xpY2tpbmcgbG9naW4gZGlkIF9OT1RfIHJlZGlyZWN0IG1lIHRvIHRoZSBmb3JtIHdoZXJlIEkg YW0gc3VwcG9zZWQgdG88YnI+CiZndDsgJmd0OyZndDsmZ3Q7IHVwZGF0ZSB0aGUgZGVmYXVsdCBw YXNzd29yZC48YnI+CiZndDsgJmd0OyZndDsmZ3Q7PGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0Ozxicj4K Jmd0OyAmZ3Q7Jmd0OyZndDsgT24gV2lsZEZseSwgSSBnb3QgYSBibGFuayBwYWdlIGFuZCB0aGlz IHN0YWNrLXRyYWNlOjxicj4KJmd0OyAmZ3Q7Jmd0OyZndDsgYGBgPGJyPgomZ3Q7ICZndDsmZ3Q7 Jmd0OyAxMjo0NzozNSw4NTkgV0FSTsKgIFtvcmcuamJvc3MucmVzdGVhc3kuY29yZS5FeGNlcHRp b25IYW5kbGVyXSAoZGVmYXVsdDxicj4KJmd0OyAmZ3Q7Jmd0OyZndDsgdGFzay0xMCkgRmFpbGVk IGV4ZWN1dGluZyBQT1NUPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0OyAvcmVhbG1zL2Flcm9nZWFyL3Rv a2Vucy9hdXRoL3JlcXVlc3QvbG9naW46PGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0OyBvcmcua2V5Y2xv YWsuc2VydmljZXMuRm9yYmlkZGVuRXhjZXB0aW9uPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKg YXQgb3JnLmtleWNsb2FrLnNlcnZpY2VzLnV0aWwuQ3NyZkhlbHBlci5jc3JmQ2hlY2soQ3NyZkhl bHBlci5qYXZhOjM5KTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoFtrZXljbG9hay1zZXJ2aWNl cy0xLjAuMy5GaW5hbC5qYXI6XTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoGF0PGJyPgomZ3Q7 ICZndDsmZ3Q7Jmd0O8KgIMKgb3JnLmtleWNsb2FrLnNlcnZpY2VzLnJlc291cmNlcy5Ub2tlblNl cnZpY2UucHJvY2Vzc0xvZ2luKFRva2VuU2VydmljZS5qYXZhOjQ3OSk8YnI+CiZndDsgJmd0OyZn dDsmZ3Q7wqAgwqBba2V5Y2xvYWstc2VydmljZXMtMS4wLjMuRmluYWwuamFyOl08YnI+CiZndDsg Jmd0OyZndDsmZ3Q7wqAgwqBhdCBzdW4ucmVmbGVjdC5OYXRpdmVNZXRob2RBY2Nlc3NvckltcGwu aW52b2tlMChOYXRpdmUgTWV0aG9kKTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoFtydC5qYXI6 MS43LjBfNjVdPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgYXQ8YnI+CiZndDsgJmd0OyZndDsm Z3Q7wqAgwqBzdW4ucmVmbGVjdC5OYXRpdmVNZXRob2RBY2Nlc3NvckltcGwuaW52b2tlKE5hdGl2 ZU1ldGhvZEFjY2Vzc29ySW1wbC5qYXZhOjU3KTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoFty dC5qYXI6MS43LjBfNjVdPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgYXQ8YnI+CiZndDsgJmd0 OyZndDsmZ3Q7wqAgwqBzdW4ucmVmbGVjdC5EZWxlZ2F0aW5nTWV0aG9kQWNjZXNzb3JJbXBsLmlu dm9rZShEZWxlZ2F0aW5nTWV0aG9kQWNjZXNzb3JJbXBsLmphdmE6NDMpPGJyPgomZ3Q7ICZndDsm Z3Q7Jmd0O8KgIMKgW3J0LmphcjoxLjcuMF82NV08YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBh dCBqYXZhLmxhbmcucmVmbGVjdC5NZXRob2QuaW52b2tlKE1ldGhvZC5qYXZhOjYwNikgW3J0Lmph cjoxLjcuMF82NV08YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBhdDxicj4KJmd0OyAmZ3Q7Jmd0 OyZndDvCoCDCoG9yZy5qYm9zcy5yZXN0ZWFzeS5jb3JlLk1ldGhvZEluamVjdG9ySW1wbC5pbnZv a2UoTWV0aG9kSW5qZWN0b3JJbXBsLmphdmE6MTM3KTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDC oFtyZXN0ZWFzeS1qYXhycy0zLjAuOC5GaW5hbC5qYXI6XTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvC oCDCoGF0PGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgb3JnLmpib3NzLnJlc3RlYXN5LmNvcmUu UmVzb3VyY2VNZXRob2RJbnZva2VyLmludm9rZU9uVGFyZ2V0KFJlc291cmNlTWV0aG9kSW52b2tl ci5qYXZhOjI5Nik8YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBbcmVzdGVhc3ktamF4cnMtMy4w LjguRmluYWwuamFyOl08YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBhdDxicj4KJmd0OyAmZ3Q7 Jmd0OyZndDvCoCDCoG9yZy5qYm9zcy5yZXN0ZWFzeS5jb3JlLlJlc291cmNlTWV0aG9kSW52b2tl ci5pbnZva2UoUmVzb3VyY2VNZXRob2RJbnZva2VyLmphdmE6MjUwKTxicj4KJmd0OyAmZ3Q7Jmd0 OyZndDvCoCDCoFtyZXN0ZWFzeS1qYXhycy0zLjAuOC5GaW5hbC5qYXI6XTxicj4KJmd0OyAmZ3Q7 Jmd0OyZndDvCoCDCoGF0PGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgb3JnLmpib3NzLnJlc3Rl YXN5LmNvcmUuUmVzb3VyY2VMb2NhdG9ySW52b2tlci5pbnZva2VPblRhcmdldE9iamVjdChSZXNv dXJjZUxvY2F0b3JJbnZva2VyLmphdmE6MTQwKTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoFty ZXN0ZWFzeS1qYXhycy0zLjAuOC5GaW5hbC5qYXI6XTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDC oGF0PGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgb3JnLmpib3NzLnJlc3RlYXN5LmNvcmUuUmVz b3VyY2VMb2NhdG9ySW52b2tlci5pbnZva2UoUmVzb3VyY2VMb2NhdG9ySW52b2tlci5qYXZhOjEw Myk8YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBbcmVzdGVhc3ktamF4cnMtMy4wLjguRmluYWwu amFyOl08YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBhdDxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvC oCDCoG9yZy5qYm9zcy5yZXN0ZWFzeS5jb3JlLlN5bmNocm9ub3VzRGlzcGF0Y2hlci5pbnZva2Uo U3luY2hyb25vdXNEaXNwYXRjaGVyLmphdmE6MzU2KTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDC oFtyZXN0ZWFzeS1qYXhycy0zLjAuOC5GaW5hbC5qYXI6XTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvC oCDCoGF0PGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgb3JnLmpib3NzLnJlc3RlYXN5LmNvcmUu U3luY2hyb25vdXNEaXNwYXRjaGVyLmludm9rZShTeW5jaHJvbm91c0Rpc3BhdGNoZXIuamF2YTox NzkpPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgW3Jlc3RlYXN5LWpheHJzLTMuMC44LkZpbmFs LmphcjpdPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgYXQ8YnI+CiZndDsgJmd0OyZndDsmZ3Q7 wqAgwqBvcmcuamJvc3MucmVzdGVhc3kucGx1Z2lucy5zZXJ2ZXIuc2VydmxldC5TZXJ2bGV0Q29u dGFpbmVyRGlzcGF0Y2hlci5zZXJ2aWNlKFNlcnZsZXRDb250YWluZXJEaXNwYXRjaGVyLmphdmE6 MjIwKTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoFtyZXN0ZWFzeS1qYXhycy0zLjAuOC5GaW5h bC5qYXI6XTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoGF0PGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0 O8KgIMKgb3JnLmpib3NzLnJlc3RlYXN5LnBsdWdpbnMuc2VydmVyLnNlcnZsZXQuSHR0cFNlcnZs ZXREaXNwYXRjaGVyLnNlcnZpY2UoSHR0cFNlcnZsZXREaXNwYXRjaGVyLmphdmE6NTYpPGJyPgom Z3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgW3Jlc3RlYXN5LWpheHJzLTMuMC44LkZpbmFsLmphcjpdPGJy PgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgYXQ8YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBvcmcu amJvc3MucmVzdGVhc3kucGx1Z2lucy5zZXJ2ZXIuc2VydmxldC5IdHRwU2VydmxldERpc3BhdGNo ZXIuc2VydmljZShIdHRwU2VydmxldERpc3BhdGNoZXIuamF2YTo1MSk8YnI+CiZndDsgJmd0OyZn dDsmZ3Q7wqAgwqBbcmVzdGVhc3ktamF4cnMtMy4wLjguRmluYWwuamFyOl08YnI+CiZndDsgJmd0 OyZndDsmZ3Q7wqAgwqBhdCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXQuc2VydmljZShI dHRwU2VydmxldC5qYXZhOjc5MCk8YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBbamJvc3Mtc2Vy dmxldC1hcGlfMy4xX3NwZWMtMS4wLjAuRmluYWwuamFyOjEuMC4wLkZpbmFsXTxicj4KJmd0OyAm Z3Q7Jmd0OyZndDvCoCDCoGF0PGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgaW8udW5kZXJ0b3cu c2VydmxldC5oYW5kbGVycy5TZXJ2bGV0SGFuZGxlci5oYW5kbGVSZXF1ZXN0KFNlcnZsZXRIYW5k bGVyLmphdmE6ODUpPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgW3VuZGVydG93LXNlcnZsZXQt MS4wLjE1LkZpbmFsLmphcjoxLjAuMTUuRmluYWxdPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKg YXQ8YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBpby51bmRlcnRvdy5zZXJ2bGV0LmhhbmRsZXJz LkZpbHRlckhhbmRsZXIkRmlsdGVyQ2hhaW5JbXBsLmRvRmlsdGVyKEZpbHRlckhhbmRsZXIuamF2 YToxMzApPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgW3VuZGVydG93LXNlcnZsZXQtMS4wLjE1 LkZpbmFsLmphcjoxLjAuMTUuRmluYWxdPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgYXQ8YnI+ CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBvcmcua2V5Y2xvYWsuc2VydmljZXMuZmlsdGVycy5DbGll bnRDb25uZWN0aW9uRmlsdGVyLmRvRmlsdGVyKENsaWVudENvbm5lY3Rpb25GaWx0ZXIuamF2YTo0 MSk8YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBba2V5Y2xvYWstc2VydmljZXMtMS4wLjMuRmlu YWwuamFyOl08YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBhdDxicj4KJmd0OyAmZ3Q7Jmd0OyZn dDvCoCDCoGlvLnVuZGVydG93LnNlcnZsZXQuY29yZS5NYW5hZ2VkRmlsdGVyLmRvRmlsdGVyKE1h bmFnZWRGaWx0ZXIuamF2YTo2MCk8YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBbdW5kZXJ0b3ct c2VydmxldC0xLjAuMTUuRmluYWwuamFyOjEuMC4xNS5GaW5hbF08YnI+CiZndDsgJmd0OyZndDsm Z3Q7wqAgwqBhdDxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoGlvLnVuZGVydG93LnNlcnZsZXQu aGFuZGxlcnMuRmlsdGVySGFuZGxlciRGaWx0ZXJDaGFpbkltcGwuZG9GaWx0ZXIoRmlsdGVySGFu ZGxlci5qYXZhOjEzMik8YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBbdW5kZXJ0b3ctc2Vydmxl dC0xLjAuMTUuRmluYWwuamFyOjEuMC4xNS5GaW5hbF08YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAg wqBhdDxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoG9yZy5rZXljbG9hay5zZXJ2aWNlcy5maWx0 ZXJzLktleWNsb2FrU2Vzc2lvblNlcnZsZXRGaWx0ZXIuZG9GaWx0ZXIoS2V5Y2xvYWtTZXNzaW9u U2VydmxldEZpbHRlci5qYXZhOjQwKTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoFtrZXljbG9h ay1zZXJ2aWNlcy0xLjAuMy5GaW5hbC5qYXI6XTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoGF0 PGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgaW8udW5kZXJ0b3cuc2VydmxldC5jb3JlLk1hbmFn ZWRGaWx0ZXIuZG9GaWx0ZXIoTWFuYWdlZEZpbHRlci5qYXZhOjYwKTxicj4KJmd0OyAmZ3Q7Jmd0 OyZndDvCoCDCoFt1bmRlcnRvdy1zZXJ2bGV0LTEuMC4xNS5GaW5hbC5qYXI6MS4wLjE1LkZpbmFs XTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoGF0PGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKg aW8udW5kZXJ0b3cuc2VydmxldC5oYW5kbGVycy5GaWx0ZXJIYW5kbGVyJEZpbHRlckNoYWluSW1w bC5kb0ZpbHRlcihGaWx0ZXJIYW5kbGVyLmphdmE6MTMyKTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvC oCDCoFt1bmRlcnRvdy1zZXJ2bGV0LTEuMC4xNS5GaW5hbC5qYXI6MS4wLjE1LkZpbmFsXTxicj4K Jmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoGF0PGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgaW8udW5k ZXJ0b3cuc2VydmxldC5oYW5kbGVycy5GaWx0ZXJIYW5kbGVyLmhhbmRsZVJlcXVlc3QoRmlsdGVy SGFuZGxlci5qYXZhOjg1KTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoFt1bmRlcnRvdy1zZXJ2 bGV0LTEuMC4xNS5GaW5hbC5qYXI6MS4wLjE1LkZpbmFsXTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvC oCDCoGF0PGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgaW8udW5kZXJ0b3cuc2VydmxldC5oYW5k bGVycy5zZWN1cml0eS5TZXJ2bGV0U2VjdXJpdHlSb2xlSGFuZGxlci5oYW5kbGVSZXF1ZXN0KFNl cnZsZXRTZWN1cml0eVJvbGVIYW5kbGVyLmphdmE6NjEpPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8Kg IMKgW3VuZGVydG93LXNlcnZsZXQtMS4wLjE1LkZpbmFsLmphcjoxLjAuMTUuRmluYWxdPGJyPgom Z3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgYXQ8YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBpby51bmRl cnRvdy5zZXJ2bGV0LmhhbmRsZXJzLlNlcnZsZXREaXNwYXRjaGluZ0hhbmRsZXIuaGFuZGxlUmVx dWVzdChTZXJ2bGV0RGlzcGF0Y2hpbmdIYW5kbGVyLmphdmE6MzYpPGJyPgomZ3Q7ICZndDsmZ3Q7 Jmd0O8KgIMKgW3VuZGVydG93LXNlcnZsZXQtMS4wLjE1LkZpbmFsLmphcjoxLjAuMTUuRmluYWxd PGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgYXQ8YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBv cmcud2lsZGZseS5leHRlbnNpb24udW5kZXJ0b3cuc2VjdXJpdHkuU2VjdXJpdHlDb250ZXh0QXNz b2NpYXRpb25IYW5kbGVyLmhhbmRsZVJlcXVlc3QoU2VjdXJpdHlDb250ZXh0QXNzb2NpYXRpb25I YW5kbGVyLmphdmE6NzgpPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgYXQ8YnI+CiZndDsgJmd0 OyZndDsmZ3Q7wqAgwqBpby51bmRlcnRvdy5zZXJ2ZXIuaGFuZGxlcnMuUHJlZGljYXRlSGFuZGxl ci5oYW5kbGVSZXF1ZXN0KFByZWRpY2F0ZUhhbmRsZXIuamF2YToyNSk8YnI+CiZndDsgJmd0OyZn dDsmZ3Q7wqAgwqBbdW5kZXJ0b3ctY29yZS0xLjAuMTUuRmluYWwuamFyOjEuMC4xNS5GaW5hbF08 YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBhdDxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoGlv LnVuZGVydG93LnNlcnZsZXQuaGFuZGxlcnMuc2VjdXJpdHkuU1NMSW5mb3JtYXRpb25Bc3NvY2lh dGlvbkhhbmRsZXIuaGFuZGxlUmVxdWVzdChTU0xJbmZvcm1hdGlvbkFzc29jaWF0aW9uSGFuZGxl ci5qYXZhOjExMyk8YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBbdW5kZXJ0b3ctc2VydmxldC0x LjAuMTUuRmluYWwuamFyOjEuMC4xNS5GaW5hbF08YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBh dDxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoGlvLnVuZGVydG93LnNlcnZsZXQuaGFuZGxlcnMu c2VjdXJpdHkuU2VydmxldEF1dGhlbnRpY2F0aW9uQ2FsbEhhbmRsZXIuaGFuZGxlUmVxdWVzdChT ZXJ2bGV0QXV0aGVudGljYXRpb25DYWxsSGFuZGxlci5qYXZhOjU2KTxicj4KJmd0OyAmZ3Q7Jmd0 OyZndDvCoCDCoFt1bmRlcnRvdy1zZXJ2bGV0LTEuMC4xNS5GaW5hbC5qYXI6MS4wLjE1LkZpbmFs XTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoGF0PGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKg aW8udW5kZXJ0b3cuc2VydmVyLmhhbmRsZXJzLlByZWRpY2F0ZUhhbmRsZXIuaGFuZGxlUmVxdWVz dChQcmVkaWNhdGVIYW5kbGVyLmphdmE6MjUpPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgW3Vu ZGVydG93LWNvcmUtMS4wLjE1LkZpbmFsLmphcjoxLjAuMTUuRmluYWxdPGJyPgomZ3Q7ICZndDsm Z3Q7Jmd0O8KgIMKgYXQ8YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBpby51bmRlcnRvdy5zZWN1 cml0eS5oYW5kbGVycy5BYnN0cmFjdENvbmZpZGVudGlhbGl0eUhhbmRsZXIuaGFuZGxlUmVxdWVz dChBYnN0cmFjdENvbmZpZGVudGlhbGl0eUhhbmRsZXIuamF2YTo0NSk8YnI+CiZndDsgJmd0OyZn dDsmZ3Q7wqAgwqBbdW5kZXJ0b3ctY29yZS0xLjAuMTUuRmluYWwuamFyOjEuMC4xNS5GaW5hbF08 YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBhdDxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoGlv LnVuZGVydG93LnNlcnZsZXQuaGFuZGxlcnMuc2VjdXJpdHkuU2VydmxldENvbmZpZGVudGlhbGl0 eUNvbnN0cmFpbnRIYW5kbGVyLmhhbmRsZVJlcXVlc3QoU2VydmxldENvbmZpZGVudGlhbGl0eUNv bnN0cmFpbnRIYW5kbGVyLmphdmE6NjEpPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgW3VuZGVy dG93LXNlcnZsZXQtMS4wLjE1LkZpbmFsLmphcjoxLjAuMTUuRmluYWxdPGJyPgomZ3Q7ICZndDsm Z3Q7Jmd0O8KgIMKgYXQ8YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBpby51bmRlcnRvdy5zZWN1 cml0eS5oYW5kbGVycy5BdXRoZW50aWNhdGlvbk1lY2hhbmlzbXNIYW5kbGVyLmhhbmRsZVJlcXVl c3QoQXV0aGVudGljYXRpb25NZWNoYW5pc21zSGFuZGxlci5qYXZhOjU4KTxicj4KJmd0OyAmZ3Q7 Jmd0OyZndDvCoCDCoFt1bmRlcnRvdy1jb3JlLTEuMC4xNS5GaW5hbC5qYXI6MS4wLjE1LkZpbmFs XTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoGF0PGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKg aW8udW5kZXJ0b3cuc2VydmxldC5oYW5kbGVycy5zZWN1cml0eS5DYWNoZWRBdXRoZW50aWNhdGVk U2Vzc2lvbkhhbmRsZXIuaGFuZGxlUmVxdWVzdChDYWNoZWRBdXRoZW50aWNhdGVkU2Vzc2lvbkhh bmRsZXIuamF2YTo3MCk8YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBbdW5kZXJ0b3ctc2Vydmxl dC0xLjAuMTUuRmluYWwuamFyOjEuMC4xNS5GaW5hbF08YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAg wqBhdDxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoGlvLnVuZGVydG93LnNlY3VyaXR5LmhhbmRs ZXJzLlNlY3VyaXR5SW5pdGlhbEhhbmRsZXIuaGFuZGxlUmVxdWVzdChTZWN1cml0eUluaXRpYWxI YW5kbGVyLmphdmE6NzYpPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgW3VuZGVydG93LWNvcmUt MS4wLjE1LkZpbmFsLmphcjoxLjAuMTUuRmluYWxdPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKg YXQ8YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBpby51bmRlcnRvdy5zZXJ2ZXIuaGFuZGxlcnMu UHJlZGljYXRlSGFuZGxlci5oYW5kbGVSZXF1ZXN0KFByZWRpY2F0ZUhhbmRsZXIuamF2YToyNSk8 YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBbdW5kZXJ0b3ctY29yZS0xLjAuMTUuRmluYWwuamFy OjEuMC4xNS5GaW5hbF08YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBhdDxicj4KJmd0OyAmZ3Q7 Jmd0OyZndDvCoCDCoG9yZy53aWxkZmx5LmV4dGVuc2lvbi51bmRlcnRvdy5zZWN1cml0eS5qYWNj LkpBQ0NDb250ZXh0SWRIYW5kbGVyLmhhbmRsZVJlcXVlc3QoSkFDQ0NvbnRleHRJZEhhbmRsZXIu amF2YTo2MSk8YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBhdDxicj4KJmd0OyAmZ3Q7Jmd0OyZn dDvCoCDCoGlvLnVuZGVydG93LnNlcnZlci5oYW5kbGVycy5QcmVkaWNhdGVIYW5kbGVyLmhhbmRs ZVJlcXVlc3QoUHJlZGljYXRlSGFuZGxlci5qYXZhOjI1KTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvC oCDCoFt1bmRlcnRvdy1jb3JlLTEuMC4xNS5GaW5hbC5qYXI6MS4wLjE1LkZpbmFsXTxicj4KJmd0 OyAmZ3Q7Jmd0OyZndDvCoCDCoGF0PGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgaW8udW5kZXJ0 b3cuc2VydmVyLmhhbmRsZXJzLlByZWRpY2F0ZUhhbmRsZXIuaGFuZGxlUmVxdWVzdChQcmVkaWNh dGVIYW5kbGVyLmphdmE6MjUpPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgW3VuZGVydG93LWNv cmUtMS4wLjE1LkZpbmFsLmphcjoxLjAuMTUuRmluYWxdPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8Kg IMKgYXQ8YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBpby51bmRlcnRvdy5zZXJ2bGV0LmhhbmRs ZXJzLlNlcnZsZXRJbml0aWFsSGFuZGxlci5oYW5kbGVGaXJzdFJlcXVlc3QoU2VydmxldEluaXRp YWxIYW5kbGVyLmphdmE6MjQwKTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoFt1bmRlcnRvdy1z ZXJ2bGV0LTEuMC4xNS5GaW5hbC5qYXI6MS4wLjE1LkZpbmFsXTxicj4KJmd0OyAmZ3Q7Jmd0OyZn dDvCoCDCoGF0PGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgaW8udW5kZXJ0b3cuc2VydmxldC5o YW5kbGVycy5TZXJ2bGV0SW5pdGlhbEhhbmRsZXIuZGlzcGF0Y2hSZXF1ZXN0KFNlcnZsZXRJbml0 aWFsSGFuZGxlci5qYXZhOjIyNyk8YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBbdW5kZXJ0b3ct c2VydmxldC0xLjAuMTUuRmluYWwuamFyOjEuMC4xNS5GaW5hbF08YnI+CiZndDsgJmd0OyZndDsm Z3Q7wqAgwqBhdDxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoGlvLnVuZGVydG93LnNlcnZsZXQu aGFuZGxlcnMuU2VydmxldEluaXRpYWxIYW5kbGVyLmFjY2VzcyQwMDAoU2VydmxldEluaXRpYWxI YW5kbGVyLmphdmE6NzMpPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgW3VuZGVydG93LXNlcnZs ZXQtMS4wLjE1LkZpbmFsLmphcjoxLjAuMTUuRmluYWxdPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8Kg IMKgYXQ8YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBpby51bmRlcnRvdy5zZXJ2bGV0LmhhbmRs ZXJzLlNlcnZsZXRJbml0aWFsSGFuZGxlciQxLmhhbmRsZVJlcXVlc3QoU2VydmxldEluaXRpYWxI YW5kbGVyLmphdmE6MTQ2KTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoFt1bmRlcnRvdy1zZXJ2 bGV0LTEuMC4xNS5GaW5hbC5qYXI6MS4wLjE1LkZpbmFsXTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvC oCDCoGF0IGlvLnVuZGVydG93LnNlcnZlci5Db25uZWN0b3JzLmV4ZWN1dGVSb290SGFuZGxlcihD b25uZWN0b3JzLmphdmE6MTc3KTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoFt1bmRlcnRvdy1j b3JlLTEuMC4xNS5GaW5hbC5qYXI6MS4wLjE1LkZpbmFsXTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvC oCDCoGF0PGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgaW8udW5kZXJ0b3cuc2VydmVyLkh0dHBT ZXJ2ZXJFeGNoYW5nZSQxLnJ1bihIdHRwU2VydmVyRXhjaGFuZ2UuamF2YTo3MjcpPGJyPgomZ3Q7 ICZndDsmZ3Q7Jmd0O8KgIMKgW3VuZGVydG93LWNvcmUtMS4wLjE1LkZpbmFsLmphcjoxLjAuMTUu RmluYWxdPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgYXQ8YnI+CiZndDsgJmd0OyZndDsmZ3Q7 wqAgwqBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRo cmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDUpPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgW3J0 LmphcjoxLjcuMF82NV08YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBhdDxicj4KJmd0OyAmZ3Q7 Jmd0OyZndDvCoCDCoGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3Jr ZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYxNSk8YnI+CiZndDsgJmd0OyZndDsmZ3Q7 wqAgwqBbcnQuamFyOjEuNy4wXzY1XTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoGF0IGphdmEu bGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0NSkgW3J0LmphcjoxLjcuMF82NV08YnI+CiZn dDsgJmd0OyZndDsmZ3Q7IGBgYDxicj4KJmd0OyAmZ3Q7Jmd0OyZndDs8YnI+CiZndDsgJmd0OyZn dDsmZ3Q7IE9uIEVBUCA2LjMuIEkgZ290IGEgNDAzLCB3aXRoIHRoaXMgc3RhY2stdHJhY2U6PGJy PgomZ3Q7ICZndDsmZ3Q7Jmd0OyBgYGA8YnI+CiZndDsgJmd0OyZndDsmZ3Q7IDEyOjUwOjA2LDM3 NyBXQVJOwqAgW29yZy5qYm9zcy5yZXN0ZWFzeS5jb3JlLlN5bmNocm9ub3VzRGlzcGF0Y2hlcl08 YnI+CiZndDsgJmd0OyZndDsmZ3Q7IChodHRwLS8wLjAuMC4wOjgwODAtMykgRmFpbGVkIGV4ZWN1 dGluZyBQT1NUPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0OyAvcmVhbG1zL2Flcm9nZWFyL3Rva2Vucy9h dXRoL3JlcXVlc3QvbG9naW46PGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0OyBvcmcua2V5Y2xvYWsuc2Vy dmljZXMuRm9yYmlkZGVuRXhjZXB0aW9uPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgYXQgb3Jn LmtleWNsb2FrLnNlcnZpY2VzLnV0aWwuQ3NyZkhlbHBlci5jc3JmQ2hlY2soQ3NyZkhlbHBlci5q YXZhOjM5KTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoFtrZXljbG9hay1zZXJ2aWNlcy0xLjAu My5GaW5hbC5qYXI6XTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoGF0PGJyPgomZ3Q7ICZndDsm Z3Q7Jmd0O8KgIMKgb3JnLmtleWNsb2FrLnNlcnZpY2VzLnJlc291cmNlcy5Ub2tlblNlcnZpY2Uu cHJvY2Vzc0xvZ2luKFRva2VuU2VydmljZS5qYXZhOjQ3OSk8YnI+CiZndDsgJmd0OyZndDsmZ3Q7 wqAgwqBba2V5Y2xvYWstc2VydmljZXMtMS4wLjMuRmluYWwuamFyOl08YnI+CiZndDsgJmd0OyZn dDsmZ3Q7wqAgwqBhdCBzdW4ucmVmbGVjdC5OYXRpdmVNZXRob2RBY2Nlc3NvckltcGwuaW52b2tl MChOYXRpdmUgTWV0aG9kKTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoFtydC5qYXI6MS43LjBf NjVdPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgYXQ8YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAg wqBzdW4ucmVmbGVjdC5OYXRpdmVNZXRob2RBY2Nlc3NvckltcGwuaW52b2tlKE5hdGl2ZU1ldGhv ZEFjY2Vzc29ySW1wbC5qYXZhOjU3KTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoFtydC5qYXI6 MS43LjBfNjVdPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgYXQ8YnI+CiZndDsgJmd0OyZndDsm Z3Q7wqAgwqBzdW4ucmVmbGVjdC5EZWxlZ2F0aW5nTWV0aG9kQWNjZXNzb3JJbXBsLmludm9rZShE ZWxlZ2F0aW5nTWV0aG9kQWNjZXNzb3JJbXBsLmphdmE6NDMpPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0 O8KgIMKgW3J0LmphcjoxLjcuMF82NV08YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBhdCBqYXZh LmxhbmcucmVmbGVjdC5NZXRob2QuaW52b2tlKE1ldGhvZC5qYXZhOjYwNikgW3J0LmphcjoxLjcu MF82NV08YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBhdDxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvC oCDCoG9yZy5qYm9zcy5yZXN0ZWFzeS5jb3JlLk1ldGhvZEluamVjdG9ySW1wbC5pbnZva2UoTWV0 aG9kSW5qZWN0b3JJbXBsLmphdmE6MTY3KTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoFtyZXN0 ZWFzeS1qYXhycy0yLjMuOC5GaW5hbC1yZWRoYXQtMy5qYXI6XTxicj4KJmd0OyAmZ3Q7Jmd0OyZn dDvCoCDCoGF0PGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgb3JnLmpib3NzLnJlc3RlYXN5LmNv cmUuUmVzb3VyY2VNZXRob2QuaW52b2tlT25UYXJnZXQoUmVzb3VyY2VNZXRob2QuamF2YToyNjkp PGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgW3Jlc3RlYXN5LWpheHJzLTIuMy44LkZpbmFsLXJl ZGhhdC0zLmphcjpdPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgYXQ8YnI+CiZndDsgJmd0OyZn dDsmZ3Q7wqAgwqBvcmcuamJvc3MucmVzdGVhc3kuY29yZS5SZXNvdXJjZU1ldGhvZC5pbnZva2Uo UmVzb3VyY2VNZXRob2QuamF2YToyMjcpPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgW3Jlc3Rl YXN5LWpheHJzLTIuMy44LkZpbmFsLXJlZGhhdC0zLmphcjpdPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0 O8KgIMKgYXQ8YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBvcmcuamJvc3MucmVzdGVhc3kuY29y ZS5SZXNvdXJjZUxvY2F0b3IuaW52b2tlT25UYXJnZXRPYmplY3QoUmVzb3VyY2VMb2NhdG9yLmph dmE6MTU5KTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoFtyZXN0ZWFzeS1qYXhycy0yLjMuOC5G aW5hbC1yZWRoYXQtMy5qYXI6XTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoGF0PGJyPgomZ3Q7 ICZndDsmZ3Q7Jmd0O8KgIMKgb3JnLmpib3NzLnJlc3RlYXN5LmNvcmUuUmVzb3VyY2VMb2NhdG9y Lmludm9rZShSZXNvdXJjZUxvY2F0b3IuamF2YTo5Mik8YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAg wqBbcmVzdGVhc3ktamF4cnMtMi4zLjguRmluYWwtcmVkaGF0LTMuamFyOl08YnI+CiZndDsgJmd0 OyZndDsmZ3Q7wqAgwqBhdDxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoG9yZy5qYm9zcy5yZXN0 ZWFzeS5jb3JlLlN5bmNocm9ub3VzRGlzcGF0Y2hlci5nZXRSZXNwb25zZShTeW5jaHJvbm91c0Rp c3BhdGNoZXIuamF2YTo1NDIpPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgW3Jlc3RlYXN5LWph eHJzLTIuMy44LkZpbmFsLXJlZGhhdC0zLmphcjpdPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKg YXQ8YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBvcmcuamJvc3MucmVzdGVhc3kuY29yZS5TeW5j aHJvbm91c0Rpc3BhdGNoZXIuaW52b2tlKFN5bmNocm9ub3VzRGlzcGF0Y2hlci5qYXZhOjUyNCk8 YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBbcmVzdGVhc3ktamF4cnMtMi4zLjguRmluYWwtcmVk aGF0LTMuamFyOl08YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBhdDxicj4KJmd0OyAmZ3Q7Jmd0 OyZndDvCoCDCoG9yZy5qYm9zcy5yZXN0ZWFzeS5jb3JlLlN5bmNocm9ub3VzRGlzcGF0Y2hlci5p bnZva2UoU3luY2hyb25vdXNEaXNwYXRjaGVyLmphdmE6MTI2KTxicj4KJmd0OyAmZ3Q7Jmd0OyZn dDvCoCDCoFtyZXN0ZWFzeS1qYXhycy0yLjMuOC5GaW5hbC1yZWRoYXQtMy5qYXI6XTxicj4KJmd0 OyAmZ3Q7Jmd0OyZndDvCoCDCoGF0PGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgb3JnLmpib3Nz LnJlc3RlYXN5LnBsdWdpbnMuc2VydmVyLnNlcnZsZXQuU2VydmxldENvbnRhaW5lckRpc3BhdGNo ZXIuc2VydmljZShTZXJ2bGV0Q29udGFpbmVyRGlzcGF0Y2hlci5qYXZhOjIwOCk8YnI+CiZndDsg Jmd0OyZndDsmZ3Q7wqAgwqBbcmVzdGVhc3ktamF4cnMtMi4zLjguRmluYWwtcmVkaGF0LTMuamFy Ol08YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBhdDxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDC oG9yZy5qYm9zcy5yZXN0ZWFzeS5wbHVnaW5zLnNlcnZlci5zZXJ2bGV0Lkh0dHBTZXJ2bGV0RGlz cGF0Y2hlci5zZXJ2aWNlKEh0dHBTZXJ2bGV0RGlzcGF0Y2hlci5qYXZhOjU1KTxicj4KJmd0OyAm Z3Q7Jmd0OyZndDvCoCDCoFtyZXN0ZWFzeS1qYXhycy0yLjMuOC5GaW5hbC1yZWRoYXQtMy5qYXI6 XTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoGF0PGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKg b3JnLmpib3NzLnJlc3RlYXN5LnBsdWdpbnMuc2VydmVyLnNlcnZsZXQuSHR0cFNlcnZsZXREaXNw YXRjaGVyLnNlcnZpY2UoSHR0cFNlcnZsZXREaXNwYXRjaGVyLmphdmE6NTApPGJyPgomZ3Q7ICZn dDsmZ3Q7Jmd0O8KgIMKgW3Jlc3RlYXN5LWpheHJzLTIuMy44LkZpbmFsLXJlZGhhdC0zLmphcjpd PGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgYXQgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2 bGV0LnNlcnZpY2UoSHR0cFNlcnZsZXQuamF2YTo4NDcpPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8Kg IMKgW2pib3NzLXNlcnZsZXQtYXBpXzMuMF9zcGVjLTEuMC4yLkZpbmFsLXJlZGhhdC0xLmphcjox LjAuMi5GaW5hbC1yZWRoYXQtMV08YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBhdDxicj4KJmd0 OyAmZ3Q7Jmd0OyZndDvCoCDCoG9yZy5hcGFjaGUuY2F0YWxpbmEuY29yZS5BcHBsaWNhdGlvbkZp bHRlckNoYWluLmludGVybmFsRG9GaWx0ZXIoQXBwbGljYXRpb25GaWx0ZXJDaGFpbi5qYXZhOjI5 NSk8YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBbamJvc3N3ZWItNy40LjguRmluYWwtcmVkaGF0 LTQuamFyOjcuNC44LkZpbmFsLXJlZGhhdC00XTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoGF0 PGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgb3JnLmFwYWNoZS5jYXRhbGluYS5jb3JlLkFwcGxp Y2F0aW9uRmlsdGVyQ2hhaW4uZG9GaWx0ZXIoQXBwbGljYXRpb25GaWx0ZXJDaGFpbi5qYXZhOjIx NCk8YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBbamJvc3N3ZWItNy40LjguRmluYWwtcmVkaGF0 LTQuamFyOjcuNC44LkZpbmFsLXJlZGhhdC00XTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoGF0 PGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgb3JnLmtleWNsb2FrLnNlcnZpY2VzLmZpbHRlcnMu Q2xpZW50Q29ubmVjdGlvbkZpbHRlci5kb0ZpbHRlcihDbGllbnRDb25uZWN0aW9uRmlsdGVyLmph dmE6NDEpPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgW2tleWNsb2FrLXNlcnZpY2VzLTEuMC4z LkZpbmFsLmphcjpdPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgYXQ8YnI+CiZndDsgJmd0OyZn dDsmZ3Q7wqAgwqBvcmcuYXBhY2hlLmNhdGFsaW5hLmNvcmUuQXBwbGljYXRpb25GaWx0ZXJDaGFp bi5pbnRlcm5hbERvRmlsdGVyKEFwcGxpY2F0aW9uRmlsdGVyQ2hhaW4uamF2YToyNDYpPGJyPgom Z3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgW2pib3Nzd2ViLTcuNC44LkZpbmFsLXJlZGhhdC00Lmphcjo3 LjQuOC5GaW5hbC1yZWRoYXQtNF08YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBhdDxicj4KJmd0 OyAmZ3Q7Jmd0OyZndDvCoCDCoG9yZy5hcGFjaGUuY2F0YWxpbmEuY29yZS5BcHBsaWNhdGlvbkZp bHRlckNoYWluLmRvRmlsdGVyKEFwcGxpY2F0aW9uRmlsdGVyQ2hhaW4uamF2YToyMTQpPGJyPgom Z3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgW2pib3Nzd2ViLTcuNC44LkZpbmFsLXJlZGhhdC00Lmphcjo3 LjQuOC5GaW5hbC1yZWRoYXQtNF08YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBhdDxicj4KJmd0 OyAmZ3Q7Jmd0OyZndDvCoCDCoG9yZy5rZXljbG9hay5zZXJ2aWNlcy5maWx0ZXJzLktleWNsb2Fr U2Vzc2lvblNlcnZsZXRGaWx0ZXIuZG9GaWx0ZXIoS2V5Y2xvYWtTZXNzaW9uU2VydmxldEZpbHRl ci5qYXZhOjQwKTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoFtrZXljbG9hay1zZXJ2aWNlcy0x LjAuMy5GaW5hbC5qYXI6XTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoGF0PGJyPgomZ3Q7ICZn dDsmZ3Q7Jmd0O8KgIMKgb3JnLmFwYWNoZS5jYXRhbGluYS5jb3JlLkFwcGxpY2F0aW9uRmlsdGVy Q2hhaW4uaW50ZXJuYWxEb0ZpbHRlcihBcHBsaWNhdGlvbkZpbHRlckNoYWluLmphdmE6MjQ2KTxi cj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoFtqYm9zc3dlYi03LjQuOC5GaW5hbC1yZWRoYXQtNC5q YXI6Ny40LjguRmluYWwtcmVkaGF0LTRdPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgYXQ8YnI+ CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBvcmcuYXBhY2hlLmNhdGFsaW5hLmNvcmUuQXBwbGljYXRp b25GaWx0ZXJDaGFpbi5kb0ZpbHRlcihBcHBsaWNhdGlvbkZpbHRlckNoYWluLmphdmE6MjE0KTxi cj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoFtqYm9zc3dlYi03LjQuOC5GaW5hbC1yZWRoYXQtNC5q YXI6Ny40LjguRmluYWwtcmVkaGF0LTRdPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgYXQ8YnI+ CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBvcmcuYXBhY2hlLmNhdGFsaW5hLmNvcmUuU3RhbmRhcmRX cmFwcGVyVmFsdmUuaW52b2tlKFN0YW5kYXJkV3JhcHBlclZhbHZlLmphdmE6MjMxKTxicj4KJmd0 OyAmZ3Q7Jmd0OyZndDvCoCDCoFtqYm9zc3dlYi03LjQuOC5GaW5hbC1yZWRoYXQtNC5qYXI6Ny40 LjguRmluYWwtcmVkaGF0LTRdPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgYXQ8YnI+CiZndDsg Jmd0OyZndDsmZ3Q7wqAgwqBvcmcuYXBhY2hlLmNhdGFsaW5hLmNvcmUuU3RhbmRhcmRDb250ZXh0 VmFsdmUuaW52b2tlKFN0YW5kYXJkQ29udGV4dFZhbHZlLmphdmE6MTQ5KTxicj4KJmd0OyAmZ3Q7 Jmd0OyZndDvCoCDCoFtqYm9zc3dlYi03LjQuOC5GaW5hbC1yZWRoYXQtNC5qYXI6Ny40LjguRmlu YWwtcmVkaGF0LTRdPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgYXQ8YnI+CiZndDsgJmd0OyZn dDsmZ3Q7wqAgwqBvcmcuamJvc3MuYXMuanBhLmludGVyY2VwdG9yLldlYk5vblR4RW1DbG9zZXJW YWx2ZS5pbnZva2UoV2ViTm9uVHhFbUNsb3NlclZhbHZlLmphdmE6NTApPGJyPgomZ3Q7ICZndDsm Z3Q7Jmd0O8KgIMKgW2pib3NzLWFzLWpwYS03LjQuMC5GaW5hbC1yZWRoYXQtMTkuamFyOjcuNC4w LkZpbmFsLXJlZGhhdC0xOV08YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBhdDxicj4KJmd0OyAm Z3Q7Jmd0OyZndDvCoCDCoG9yZy5qYm9zcy5hcy5qcGEuaW50ZXJjZXB0b3IuV2ViTm9uVHhFbUNs b3NlclZhbHZlLmludm9rZShXZWJOb25UeEVtQ2xvc2VyVmFsdmUuamF2YTo1MCk8YnI+CiZndDsg Jmd0OyZndDsmZ3Q7wqAgwqBbamJvc3MtYXMtanBhLTcuNC4wLkZpbmFsLXJlZGhhdC0xOS5qYXI6 Ny40LjAuRmluYWwtcmVkaGF0LTE5XTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoGF0PGJyPgom Z3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgb3JnLmpib3NzLmFzLndlYi5zZWN1cml0eS5TZWN1cml0eUNv bnRleHRBc3NvY2lhdGlvblZhbHZlLmludm9rZShTZWN1cml0eUNvbnRleHRBc3NvY2lhdGlvblZh bHZlLmphdmE6MTY5KTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoFtqYm9zcy1hcy13ZWItNy40 LjAuRmluYWwtcmVkaGF0LTE5Lmphcjo3LjQuMC5GaW5hbC1yZWRoYXQtMTldPGJyPgomZ3Q7ICZn dDsmZ3Q7Jmd0O8KgIMKgYXQ8YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBvcmcuYXBhY2hlLmNh dGFsaW5hLmNvcmUuU3RhbmRhcmRIb3N0VmFsdmUuaW52b2tlKFN0YW5kYXJkSG9zdFZhbHZlLmph dmE6MTQ1KTxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoFtqYm9zc3dlYi03LjQuOC5GaW5hbC1y ZWRoYXQtNC5qYXI6Ny40LjguRmluYWwtcmVkaGF0LTRdPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8Kg IMKgYXQ8YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBvcmcuYXBhY2hlLmNhdGFsaW5hLnZhbHZl cy5FcnJvclJlcG9ydFZhbHZlLmludm9rZShFcnJvclJlcG9ydFZhbHZlLmphdmE6OTcpPGJyPgom Z3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgW2pib3Nzd2ViLTcuNC44LkZpbmFsLXJlZGhhdC00Lmphcjo3 LjQuOC5GaW5hbC1yZWRoYXQtNF08YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBhdDxicj4KJmd0 OyAmZ3Q7Jmd0OyZndDvCoCDCoG9yZy5hcGFjaGUuY2F0YWxpbmEuY29yZS5TdGFuZGFyZEVuZ2lu ZVZhbHZlLmludm9rZShTdGFuZGFyZEVuZ2luZVZhbHZlLmphdmE6MTAyKTxicj4KJmd0OyAmZ3Q7 Jmd0OyZndDvCoCDCoFtqYm9zc3dlYi03LjQuOC5GaW5hbC1yZWRoYXQtNC5qYXI6Ny40LjguRmlu YWwtcmVkaGF0LTRdPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgYXQ8YnI+CiZndDsgJmd0OyZn dDsmZ3Q7wqAgwqBvcmcuYXBhY2hlLmNhdGFsaW5hLmNvbm5lY3Rvci5Db3lvdGVBZGFwdGVyLnNl cnZpY2UoQ295b3RlQWRhcHRlci5qYXZhOjM0NCk8YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBb amJvc3N3ZWItNy40LjguRmluYWwtcmVkaGF0LTQuamFyOjcuNC44LkZpbmFsLXJlZGhhdC00XTxi cj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoGF0PGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgb3Jn LmFwYWNoZS5jb3lvdGUuaHR0cDExLkh0dHAxMVByb2Nlc3Nvci5wcm9jZXNzKEh0dHAxMVByb2Nl c3Nvci5qYXZhOjg1Nik8YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBbamJvc3N3ZWItNy40Ljgu RmluYWwtcmVkaGF0LTQuamFyOjcuNC44LkZpbmFsLXJlZGhhdC00XTxicj4KJmd0OyAmZ3Q7Jmd0 OyZndDvCoCDCoGF0PGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgb3JnLmFwYWNoZS5jb3lvdGUu aHR0cDExLkh0dHAxMVByb3RvY29sJEh0dHAxMUNvbm5lY3Rpb25IYW5kbGVyLnByb2Nlc3MoSHR0 cDExUHJvdG9jb2wuamF2YTo2NTMpPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgW2pib3Nzd2Vi LTcuNC44LkZpbmFsLXJlZGhhdC00Lmphcjo3LjQuOC5GaW5hbC1yZWRoYXQtNF08YnI+CiZndDsg Jmd0OyZndDsmZ3Q7wqAgwqBhdDxicj4KJmd0OyAmZ3Q7Jmd0OyZndDvCoCDCoG9yZy5hcGFjaGUu dG9tY2F0LnV0aWwubmV0LkpJb0VuZHBvaW50JFdvcmtlci5ydW4oSklvRW5kcG9pbnQuamF2YTo5 MjYpPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0O8KgIMKgW2pib3Nzd2ViLTcuNC44LkZpbmFsLXJlZGhh dC00Lmphcjo3LjQuOC5GaW5hbC1yZWRoYXQtNF08YnI+CiZndDsgJmd0OyZndDsmZ3Q7wqAgwqBh dCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDUpIFtydC5qYXI6MS43LjBfNjVd PGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0OyBgYGA8YnI+CiZndDsgJmd0OyZndDsmZ3Q7PGJyPgomZ3Q7 ICZndDsmZ3Q7Jmd0Ozxicj4KJmd0OyAmZ3Q7Jmd0OyZndDs8YnI+CiZndDsgJmd0OyZndDsmZ3Q7 IC0tPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0OyBNYXR0aGlhcyBXZXNzZW5kb3JmPGJyPgomZ3Q7ICZn dDsmZ3Q7Jmd0Ozxicj4KJmd0OyAmZ3Q7Jmd0OyZndDsgYmxvZzogPGEgaHJlZj0iaHR0cDovL21h dHRoaWFzd2Vzc2VuZG9yZi53b3JkcHJlc3MuY29tLyIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly9t YXR0aGlhc3dlc3NlbmRvcmYud29yZHByZXNzLmNvbS88L2E+PGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0 OyBzZXNzaW9uczogPGEgaHJlZj0iaHR0cDovL3d3dy5zbGlkZXNoYXJlLm5ldC9td2Vzc2VuZG9y ZiIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cuc2xpZGVzaGFyZS5uZXQvbXdlc3NlbmRvcmY8 L2E+PGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0OyB0d2l0dGVyOiA8YSBocmVmPSJodHRwOi8vdHdpdHRl ci5jb20vbXdlc3NlbmRvcmYiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vdHdpdHRlci5jb20vbXdl c3NlbmRvcmY8L2E+PGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0Ozxicj4KJmd0OyAmZ3Q7Jmd0OyZndDs8 YnI+CiZndDsgJmd0OyZndDsmZ3Q7IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fPGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0OyBrZXljbG9hay1kZXYgbWFpbGluZyBs aXN0PGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0OyA8YSBocmVmPSJtYWlsdG86a2V5Y2xvYWstZGV2QGxp c3RzLmpib3NzLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPmtleWNsb2FrLWRldkBsaXN0cy5qYm9zcy5v cmc8L2E+PGJyPgomZ3Q7ICZndDsmZ3Q7Jmd0OyA8YSBocmVmPSJodHRwczovL2xpc3RzLmpib3Nz Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2tleWNsb2FrLWRldiIgdGFyZ2V0PSJfYmxhbmsiPmh0dHBz Oi8vbGlzdHMuamJvc3Mub3JnL21haWxtYW4vbGlzdGluZm8va2V5Y2xvYWstZGV2PC9hPjxicj4K Jmd0OyAmZ3Q7Jmd0OyZndDs8YnI+CiZndDsgJmd0OyZndDs8YnI+CiZndDsgJmd0OyZndDsgLS08 YnI+CiZndDsgJmd0OyZndDsgQmlsbCBCdXJrZTxicj4KJmd0OyAmZ3Q7Jmd0OyBKQm9zcywgYSBk aXZpc2lvbiBvZiBSZWQgSGF0PGJyPgomZ3Q7ICZndDsmZ3Q7IDxhIGhyZWY9Imh0dHA6Ly9iaWxs LmJ1cmtlY2VudHJhbC5jb20iIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vYmlsbC5idXJrZWNlbnRy YWwuY29tPC9hPjxicj4KJmd0OyAmZ3Q7Jmd0OyBfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXzxicj4KJmd0OyAmZ3Q7Jmd0OyBrZXljbG9hay1kZXYgbWFpbGlu ZyBsaXN0PGJyPgomZ3Q7ICZndDsmZ3Q7IDxhIGhyZWY9Im1haWx0bzprZXljbG9hay1kZXZAbGlz dHMuamJvc3Mub3JnIiB0YXJnZXQ9Il9ibGFuayI+a2V5Y2xvYWstZGV2QGxpc3RzLmpib3NzLm9y ZzwvYT48YnI+CiZndDsgJmd0OyZndDsgPGEgaHJlZj0iaHR0cHM6Ly9saXN0cy5qYm9zcy5vcmcv bWFpbG1hbi9saXN0aW5mby9rZXljbG9hay1kZXYiIHRhcmdldD0iX2JsYW5rIj5odHRwczovL2xp c3RzLmpib3NzLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2tleWNsb2FrLWRldjwvYT48YnI+CiZndDsg Jmd0OyZndDs8YnI+CiZndDs8YnI+CiZndDsgLS08YnI+CiZndDsgQmlsbCBCdXJrZTxicj4KJmd0 OyBKQm9zcywgYSBkaXZpc2lvbiBvZiBSZWQgSGF0PGJyPgomZ3Q7IDxhIGhyZWY9Imh0dHA6Ly9i aWxsLmJ1cmtlY2VudHJhbC5jb20iIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vYmlsbC5idXJrZWNl bnRyYWwuY29tPC9hPjxicj4KJmd0Ozxicj4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX188YnI+CmtleWNsb2FrLWRldiBtYWlsaW5nIGxpc3Q8YnI+CjxhIGhy ZWY9Im1haWx0bzprZXljbG9hay1kZXZAbGlzdHMuamJvc3Mub3JnIiB0YXJnZXQ9Il9ibGFuayI+ a2V5Y2xvYWstZGV2QGxpc3RzLmpib3NzLm9yZzwvYT48YnI+CjxhIGhyZWY9Imh0dHBzOi8vbGlz dHMuamJvc3Mub3JnL21haWxtYW4vbGlzdGluZm8va2V5Y2xvYWstZGV2IiB0YXJnZXQ9Il9ibGFu ayI+aHR0cHM6Ly9saXN0cy5qYm9zcy5vcmcvbWFpbG1hbi9saXN0aW5mby9rZXljbG9hay1kZXY8 L2E+PGJyPgo8L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdj48 ZGl2IGNsYXNzPSJoNSI+PGJyPjxiciBjbGVhcj0iYWxsIj48ZGl2Pjxicj48L2Rpdj4tLSA8YnI+ TWF0dGhpYXMgV2Vzc2VuZG9yZiA8YnI+PGJyPmJsb2c6IDxhIGhyZWY9Imh0dHA6Ly9tYXR0aGlh c3dlc3NlbmRvcmYud29yZHByZXNzLmNvbS8iIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vbWF0dGhp YXN3ZXNzZW5kb3JmLndvcmRwcmVzcy5jb20vPC9hPjxicj5zZXNzaW9uczogPGEgaHJlZj0iaHR0 cDovL3d3dy5zbGlkZXNoYXJlLm5ldC9td2Vzc2VuZG9yZiIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6 Ly93d3cuc2xpZGVzaGFyZS5uZXQvbXdlc3NlbmRvcmY8L2E+PGJyPnR3aXR0ZXI6IDxhIGhyZWY9 Imh0dHA6Ly90d2l0dGVyLmNvbS9td2Vzc2VuZG9yZiIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly90 d2l0dGVyLmNvbS9td2Vzc2VuZG9yZjwvYT4KPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+CjwvYmxv Y2txdW90ZT48L2Rpdj48YnI+PGJyIGNsZWFyPSJhbGwiPjxkaXY+PGJyPjwvZGl2Pi0tIDxicj5N YXR0aGlhcyBXZXNzZW5kb3JmIDxicj48YnI+YmxvZzogPGEgaHJlZj0iaHR0cDovL21hdHRoaWFz d2Vzc2VuZG9yZi53b3JkcHJlc3MuY29tLyIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly9tYXR0aGlh c3dlc3NlbmRvcmYud29yZHByZXNzLmNvbS88L2E+PGJyPnNlc3Npb25zOiA8YSBocmVmPSJodHRw Oi8vd3d3LnNsaWRlc2hhcmUubmV0L213ZXNzZW5kb3JmIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDov L3d3dy5zbGlkZXNoYXJlLm5ldC9td2Vzc2VuZG9yZjwvYT48YnI+dHdpdHRlcjogPGEgaHJlZj0i aHR0cDovL3R3aXR0ZXIuY29tL213ZXNzZW5kb3JmIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3R3 aXR0ZXIuY29tL213ZXNzZW5kb3JmPC9hPgo8L2Rpdj4K --===============2515645562883176874==--