Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 2065C200C44 for ; Mon, 27 Mar 2017 11:41:22 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 1F00D160B85; Mon, 27 Mar 2017 09:41:22 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id E228F160B5D for ; Mon, 27 Mar 2017 11:41:20 +0200 (CEST) Received: (qmail 33238 invoked by uid 500); 27 Mar 2017 09:41:19 -0000 Mailing-List: contact user-help@flink.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@flink.apache.org Delivered-To: mailing list user@flink.apache.org Received: (qmail 33228 invoked by uid 99); 27 Mar 2017 09:41:19 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd4-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 27 Mar 2017 09:41:19 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd4-us-west.apache.org (ASF Mail Server at spamd4-us-west.apache.org) with ESMTP id 7C1C1C022F for ; Mon, 27 Mar 2017 09:41:19 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd4-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 1.998 X-Spam-Level: * X-Spam-Status: No, score=1.998 tagged_above=-999 required=6.31 tests=[HTML_MESSAGE=2, RP_MATCHES_RCVD=-0.001, SPF_PASS=-0.001] autolearn=disabled Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd4-us-west.apache.org [10.40.0.11]) (amavisd-new, port 10024) with ESMTP id jn8P8b5ee65v for ; Mon, 27 Mar 2017 09:41:16 +0000 (UTC) Received: from proxy.tng.vnc.biz (zimbra-vnc.tngtech.com [83.144.240.98]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with ESMTPS id 0AB045F253 for ; Mon, 27 Mar 2017 09:41:14 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by proxy.tng.vnc.biz (Postfix) with ESMTP id AD8861E2C30 for ; Mon, 27 Mar 2017 11:41:05 +0200 (CEST) Received: from proxy.tng.vnc.biz ([127.0.0.1]) by localhost (proxy.tng.vnc.biz [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id c7k9monSLGjo for ; Mon, 27 Mar 2017 11:41:03 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by proxy.tng.vnc.biz (Postfix) with ESMTP id 764581E3241 for ; Mon, 27 Mar 2017 11:41:02 +0200 (CEST) X-Virus-Scanned: amavisd-new at Received: from proxy.tng.vnc.biz ([127.0.0.1]) by localhost (proxy.tng.vnc.biz [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id jIkKJj2kEtbu for ; Mon, 27 Mar 2017 11:41:02 +0200 (CEST) Received: from [172.31.244.123] (unknown [82.113.113.81]) by proxy.tng.vnc.biz (Postfix) with ESMTPSA id 7A4CB1E3224 for ; Mon, 27 Mar 2017 11:41:01 +0200 (CEST) From: Konstantin Gregor X-Enigmail-Draft-Status: N1110 To: user@flink.apache.org Subject: ClassNotFoundException upon Savepoint Disposal Message-ID: <20d8ee00-ed72-a75d-54f7-e98563affc8e@tngtech.com> Date: Mon, 27 Mar 2017 11:41:01 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="87gFkN0t6GP5Pusll1Cu3hc6LA57a6x2U" archived-at: Mon, 27 Mar 2017 09:41:22 -0000 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --87gFkN0t6GP5Pusll1Cu3hc6LA57a6x2U Content-Type: multipart/alternative; boundary="------------392A06A28B38D53A58C53C77" This is a multi-part message in MIME format. --------------392A06A28B38D53A58C53C77 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hey everyone, we are experiencing an issue in the disposal of savepoints in Flink-1.1.3. We have a streaming job that has custom state (user objects are part of the state). We create a savepoint: $ flink savepoint [...] Savepoint completed. Path: hdfs:/bigdata/flink/savepoints/savepoint-20f064fb9f50 [...] Then we want to simply dispose of that savepoint where we also provide the jar to the job from which the savepoint was made: $ flink savepoint -d hdfs:/bigdata/flink/savepoints/savepoint-20f064fb9f50 -j /path/to/jar/application.jar This gives us a ClassNotFoundException of our custom objects [1]. Adding our jar to the flink/lib directory is not an option for us, things will break because of this. Does anyone have an idea on how to proceed here? Thanks and best regards, Konstantin [1] java.io.IOException: Failed to dispose savepoint hdfs:///bigdata/flink/sa= vepoints/savepoint-20f064fb9f50. at org.apache.flink.runtime.checkpoint.savepoint.FsSavepointStore= =2EdisposeSavepoint(FsSavepointStore.java:163) at org.apache.flink.runtime.jobmanager.JobManager$$anonfun$handle= Message$1$$anonfun$applyOrElse$7.apply$mcV$sp(JobManager.scala:745) at org.apache.flink.runtime.jobmanager.JobManager$$anonfun$handle= Message$1$$anonfun$applyOrElse$7.apply(JobManager.scala:727) at org.apache.flink.runtime.jobmanager.JobManager$$anonfun$handle= Message$1$$anonfun$applyOrElse$7.apply(JobManager.scala:727) at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedT= ree1$1(Future.scala:24) at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Fut= ure.scala:24) at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41) at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.ex= ec(AbstractDispatcher.scala:401) at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.jav= a:260) at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.pollAndExecAl= l(ForkJoinPool.java:1253) at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJ= oinPool.java:1346) at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.= java:1979) at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWor= kerThread.java:107) Caused by: java.lang.ClassNotFoundException: our.company.application.even= tdata.EventDataRecord at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:270) at org.apache.flink.util.InstantiationUtil$ClassLoaderObjectInput= Stream.resolveClass(InstantiationUtil.java:65) at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.j= ava:1612) at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java= :1517) at java.io.ObjectInputStream.readClass(ObjectInputStream.java:148= 3) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1= 333) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.= java:1990) at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.= java:500) at org.apache.flink.api.java.typeutils.runtime.PojoSerializer.rea= dObject(PojoSerializer.java:131) at sun.reflect.GeneratedMethodAccessor33.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMeth= odAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.j= ava:1017) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.jav= a:1893) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream= =2Ejava:1798) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1= 350) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.= java:1990) at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.= java:500) at org.apache.flink.api.common.state.StateDescriptor.readObject(S= tateDescriptor.java:268) at sun.reflect.GeneratedMethodAccessor32.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMeth= odAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.j= ava:1017) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.jav= a:1893) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream= =2Ejava:1798) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1= 350) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.= java:1990) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.jav= a:1915) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream= =2Ejava:1798) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1= 350) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:37= 0) at java.util.HashMap.readObject(HashMap.java:1184) at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMeth= odAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.j= ava:1017) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.jav= a:1893) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream= =2Ejava:1798) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1= 350) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.= java:1990) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.jav= a:1915) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream= =2Ejava:1798) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1= 350) at java.io.ObjectInputStream.readArray(ObjectInputStream.java:170= 6) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1= 344) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.= java:1990) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.jav= a:1915) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream= =2Ejava:1798) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1= 350) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:37= 0) at org.apache.flink.util.InstantiationUtil.deserializeObject(Inst= antiationUtil.java:291) at org.apache.flink.util.SerializedValue.deserializeValue(Seriali= zedValue.java:58) at org.apache.flink.runtime.checkpoint.SubtaskState.discard(Subta= skState.java:85) at org.apache.flink.runtime.checkpoint.TaskState.discard(TaskStat= e.java:147) at org.apache.flink.runtime.checkpoint.savepoint.SavepointV0.disp= ose(SavepointV0.java:66) at org.apache.flink.runtime.checkpoint.savepoint.FsSavepointStore= =2EdisposeSavepoint(FsSavepointStore.java:151) --=20 Konstantin Gregor * konstantin.gregor@tngtech.com TNG Technology Consulting GmbH, Betastr. 13a, 85774 Unterf=C3=B6hring Gesch=C3=A4ftsf=C3=BChrer: Henrik Klagges, Christoph Stock, Dr. Robert Da= hlke Sitz: Unterf=C3=B6hring * Amtsgericht M=C3=BCnchen * HRB 135082 --------------392A06A28B38D53A58C53C77 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable
Hey everyone,

we are experiencing an issue in the disposal of savepoints in
Flink-1.1.3. We have a streaming job that has custom state (user objects
are part of the state). We create a savepoint:

$ flink savepoint <JOBID>
[...]
Savepoint completed. Path:
hdfs:/bigdata/flink/savepoints/savepoint-20f064fb9f50
[...]

Then we want to simply dispose of that savepoint where we also provide
the jar to the job from which the savepoint was made:
$ flink savepoint -d
hdfs:/bigdata/flink/savepoints/savepoint-20f064fb9f50 -j
/path/to/jar/application.jar

This gives us a ClassNotFoundException of our custom objects [1].

Adding our jar to the flink/lib directory is not an option for us,
things will break because of this.
Does anyone have an idea on how to proceed here?

Thanks and best regards,

Konstantin

[1]
java.io.IOException: Failed to dispose savepoint hdfs:///bigdata/flink/sa=
vepoints/savepoint-20f064fb9f50.
        at org.apache.flink.runtime.checkpoint.savepoint.FsSavepointStore=
=2EdisposeSavepoint(FsSavepointStore.java:163)
        at org.apache.flink.runtime.jobmanager.JobManager$$anonfun$handle=
Message$1$$anonfun$applyOrElse$7.apply$mcV$sp(JobManager.scala:745)
        at org.apache.flink.runtime.jobmanager.JobManager$$anonfun$handle=
Message$1$$anonfun$applyOrElse$7.apply(JobManager.scala:727)
        at org.apache.flink.runtime.jobmanager.JobManager$$anonfun$handle=
Message$1$$anonfun$applyOrElse$7.apply(JobManager.scala:727)
        at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedT=
ree1$1(Future.scala:24)
        at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Fut=
ure.scala:24)
        at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
        at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.ex=
ec(AbstractDispatcher.scala:401)
        at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.jav=
a:260)
        at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.pollAndExecAl=
l(ForkJoinPool.java:1253)
        at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJ=
oinPool.java:1346)
        at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.=
java:1979)
        at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWor=
kerThread.java:107)
Caused by: java.lang.ClassNotFoundException: our.company.application.even=
tdata.EventDataRecord
        at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:270)
        at org.apache.flink.util.InstantiationUtil$ClassLoaderObjectInput=
Stream.resolveClass(InstantiationUtil.java:65)
        at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.j=
ava:1612)
        at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java=
:1517)
        at java.io.ObjectInputStream.readClass(ObjectInputStream.java:148=
3)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1=
333)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.=
java:1990)
        at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.=
java:500)
        at org.apache.flink.api.java.typeutils.runtime.PojoSerializer.rea=
dObject(PojoSerializer.java:131)
        at sun.reflect.GeneratedMethodAccessor33.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMeth=
odAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.j=
ava:1017)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.jav=
a:1893)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream=
=2Ejava:1798)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1=
350)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.=
java:1990)
        at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.=
java:500)
        at org.apache.flink.api.common.state.StateDescriptor.readObject(S=
tateDescriptor.java:268)
        at sun.reflect.GeneratedMethodAccessor32.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMeth=
odAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.j=
ava:1017)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.jav=
a:1893)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream=
=2Ejava:1798)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1=
350)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.=
java:1990)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.jav=
a:1915)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream=
=2Ejava:1798)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1=
350)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:37=
0)
        at java.util.HashMap.readObject(HashMap.java:1184)
        at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMeth=
odAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.j=
ava:1017)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.jav=
a:1893)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream=
=2Ejava:1798)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1=
350)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.=
java:1990)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.jav=
a:1915)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream=
=2Ejava:1798)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1=
350)
        at java.io.ObjectInputStream.readArray(ObjectInputStream.java:170=
6)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1=
344)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.=
java:1990)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.jav=
a:1915)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream=
=2Ejava:1798)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1=
350)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:37=
0)
        at org.apache.flink.util.InstantiationUtil.deserializeObject(Inst=
antiationUtil.java:291)
        at org.apache.flink.util.SerializedValue.deserializeValue(Seriali=
zedValue.java:58)
        at org.apache.flink.runtime.checkpoint.SubtaskState.discard(Subta=
skState.java:85)
        at org.apache.flink.runtime.checkpoint.TaskState.discard(TaskStat=
e.java:147)
        at org.apache.flink.runtime.checkpoint.savepoint.SavepointV0.disp=
ose(SavepointV0.java:66)
        at org.apache.flink.runtime.checkpoint.savepoint.FsSavepointStore=
=2EdisposeSavepoint(FsSavepointStore.java:151)

--=20
Konstantin Gregor * konstantin.gregor@tngtech.com
TNG Technology Consulting GmbH, Betastr. 13a, 85774 Unterf=C3=B6hring
Gesch=C3=A4ftsf=C3=BChrer: Henrik Klagges, Christoph Stock, Dr. Robert Da=
hlke
Sitz: Unterf=C3=B6hring * Amtsgericht M=C3=BCnchen * HRB 135082
--------------392A06A28B38D53A58C53C77-- --87gFkN0t6GP5Pusll1Cu3hc6LA57a6x2U Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBCAAGBQJY2N4tAAoJEABOK+I6Ro2XiT0P/0+C0zJPKGEYmwlt4vgycreW O4WWVJJj8qOAj0mBZCw696s6KYZfPL46096B8I7Im04cHCdwZCANEDeQJp5MpKKO xTuBSQ5xYNN1vRJI6SZV7At2aC/ZCdJ6IxB6rZtetmxM9OLz/17cHNIPElJvJZtf pTiB1MQ3iZ/BBHOC1DTfNkG6Rseqrk/hafZfqWfYcjl4povFoBtuabWV3l9U5uNE 1FHU/tQ/OhLS1GxlL/l+6jL8cfF5WuQhyvkYsiL13qij4fgZHaBzMls0TIDV0cTQ bHGXvcbkbHvpBDmM9t9PtKOPMWVQkayCmZO1V+h4UF6PJMls8W05921yezr1pGYK JpYVP7uzUIjkTnnZkuWgFux5nruZiutFxeqviZCK2Fg52mw9Fvb8/Rp/Usb7naV7 UaaJZI+QkZbNVXhYmmQ6YMh0OLcoYMWK2HJGqt7YsOM+dyFGAe7x82EVV8LI8rMN QzS4A144vOtast71jOlFYYPe5TAZA+RchX+3laxTyTUuCwkFxKfwfKgIAOiYhsjV fjHQM3D5BnQALJEoGp6vB48Dm6g6jRTN7Oyi6BpIYqTi1Ovg2fauKn2ESeXTIEEI nejxBHnrWNlZMu1eM/kKxB/1mGkWfsI/VbsF0tw0+Cn00H02nEjiHLCHBbyiznVI 3gIFMWxyNbMNT1oDRyfV =N8Vg -----END PGP SIGNATURE----- --87gFkN0t6GP5Pusll1Cu3hc6LA57a6x2U--