Received: by 2002:a05:7412:8d10:b0:f3:1519:9f41 with SMTP id bj16csp6123588rdb; Thu, 14 Dec 2023 08:55:17 -0800 (PST) X-Google-Smtp-Source: AGHT+IEpiKkKZkrZQKuwmE8qTz2ce2SegD5lq0zXgHaehvCxsSlT3EZz8ElNxKrq1zAJawgoqrjp X-Received: by 2002:a05:6a20:8f15:b0:18f:b899:21dd with SMTP id b21-20020a056a208f1500b0018fb89921ddmr13618803pzk.47.1702572917088; Thu, 14 Dec 2023 08:55:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702572917; cv=none; d=google.com; s=arc-20160816; b=aKK+11Vw1MGodzhqYV8cdwYnLKv0E7UIxQM9d53OuFLSfABCK0SEC5t5JTIEi+2jml 9HLcqkcsMkHfXuTSq9zz1pg8U9PqlgvgvUQebjvbT5D3FtiCa6+vZ24oyrbFHzfpw52O kfLYc1TrZYlKGVfYpf+k5IpzX0TdFOqqxazrfPGdpt67z+Th446lnFg7vXpNkQGsxKXu d6joxlCkV1N4uFb9ixNzSD4FQcv1spIBzZzCBmWqN2nOJyrai5XXpSIPcdylmDLXKuxB WzXxrgviIYaitGUToHFGraR+2XnhjedO00kKeYS/xpkTbLWk6DyWAjIE0WiVPKnL3A0H jCHg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:user-agent:date:cc:to:from:subject :message-id:dkim-signature; bh=ErI+okW83s/UYJAfbFxrtgC1DQTlCHApQ7Kig1YV3aE=; fh=N8LD42xAtlqI6/RbkMeMSq63Ds8oBwFrZBTHra+YZQk=; b=x4GYgmFxeqXl6T6jz10Kg0wMurgJxfKomOOjmG/N/K/X/85ONqdisxDW9VXTh5uxAq BVrKnelMkPVHJWhduFZbSRcmJVydEeeGlWoMjQH8RCn3QrLk71PaJwogFhO3R12TMEPH 2GGmwnlL7cH0h72BBKaOszT4/ll5fB+Emt0GRXoMM2czChEkFfbtHenJdAF5s6/oyW0Q qlpR3AdKNwSXE1NHBfAXYT4sXCzAwJs2AjcJKICgI+nyYa28o4esyl8DtdE1DDzlO5xD zZo35v3wc9hPbPgAveHNQ9RPKqgw3RpkLnsrAskyEEGpWcDl+M2O2IU75mHB4DMYVCtn IjVA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=casper.20170209 header.b=sxeR5bmH; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from agentk.vger.email (agentk.vger.email. [2620:137:e000::3:2]) by mx.google.com with ESMTPS id u12-20020a056a00124c00b006cd8454cbb4si11651515pfi.337.2023.12.14.08.55.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 14 Dec 2023 08:55:16 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) client-ip=2620:137:e000::3:2; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=casper.20170209 header.b=sxeR5bmH; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id 7FD1680E9EA0; Thu, 14 Dec 2023 08:55:12 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229532AbjLNQyu (ORCPT + 99 others); Thu, 14 Dec 2023 11:54:50 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49918 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229451AbjLNQyt (ORCPT ); Thu, 14 Dec 2023 11:54:49 -0500 Received: from casper.infradead.org (casper.infradead.org [IPv6:2001:8b0:10b:1236::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 50C00B7; Thu, 14 Dec 2023 08:54:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=MIME-Version:Content-Type:Date:Cc:To: From:Subject:Message-ID:Sender:Reply-To:Content-Transfer-Encoding:Content-ID: Content-Description:In-Reply-To:References; bh=ErI+okW83s/UYJAfbFxrtgC1DQTlCHApQ7Kig1YV3aE=; b=sxeR5bmHwCxTqL4Y8v1tWqwQpP muxS4etO6RmCJEB69n7V2e9KEimI7vX9TEQ4/znMgEOUsKkU9VL87fsGreYOtabWhnscxXmwb1bon ADlWQC4ojpOBPGaWjPqeyXhSTrXVxUBEonZkCAOH/V/4t0X4Sl0o0XsQaRJdtjsJiv0uFfmWRGCM9 8smuDig3hx7mImN9YNMG1i5sEkG+02qIA8e//J9WJEWvlZnvZhkZXGoq7evaI2i459mNqBXW/k9Xq qoUHiSHt3B5Tfs6UbY0rIlNlazdXjwk4epi13pzLnP0f+8N2R1MoQCROaTvADcnIz/tR1f7b983M+ +6/4Z6gg==; Received: from [2001:8b0:10b:5:2ca7:40ab:31e1:2312] (helo=u3832b3a9db3152.ant.amazon.com) by casper.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux)) id 1rDoz2-008jZt-Aq; Thu, 14 Dec 2023 16:54:49 +0000 Message-ID: Subject: [PATCH v3] KVM: x86/xen: improve accuracy of Xen timers From: David Woodhouse To: kvm@vger.kernel.org, linux-kernel Cc: Paul Durrant , Sean Christopherson , Paolo Bonzini , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H. Peter Anvin" Date: Thu, 14 Dec 2023 16:54:48 +0000 Content-Type: multipart/signed; micalg="sha-256"; protocol="application/pkcs7-signature"; boundary="=-utPJPSMsR2OJl8pPyeiC" User-Agent: Evolution 3.44.4-0ubuntu2 MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by casper.infradead.org. See http://www.infradead.org/rpr.html X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (agentk.vger.email [0.0.0.0]); Thu, 14 Dec 2023 08:55:12 -0800 (PST) --=-utPJPSMsR2OJl8pPyeiC Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbTogRGF2aWQgV29vZGhvdXNlIDxkd213QGFtYXpvbi5jby51az4KCkEgdGVzdCBwcm9ncmFt IHN1Y2ggYXMgaHR0cDovL2RhdmlkLndvb2Rob3Uuc2UvdGltZXJsYXQuY8KgY29uZmlybXMgdXNl cgpyZXBvcnRzIHRoYXQgdGltZXJzIGFyZSBpbmNyZWFzaW5nbHkgaW5hY2N1cmF0ZSBhcyB0aGUg bGlmZXRpbWUgb2YgYQpndWVzdCBpbmNyZWFzZXMuIFJlcG9ydGluZyB0aGUgYWN0dWFsIGRlbGF5 IG9ic2VydmVkIHdoZW4gYXNraW5nIGZvcgoxMDDCtXMgb2Ygc2xlZXAsIGl0IHN0YXJ0cyBvZmYg T0sgb24gYSBuZXdseS1sYXVuY2hlZCBndWVzdCBidXQgZ2V0cwp3b3JzZSBvdmVyIHRpbWUsIGdp dmluZyBpbmNvcnJlY3Qgc2xlZXAgdGltZXM6Cgpyb290QGlwLTEwLTAtMTkzLTIxOn4jIC4vdGlt ZXJsYXQgLWMgLW4gNQowMDAwMDAwMCBsYXRlbmN5IDEwMzI0My8xMDAwMDAgKDMuMjQzMCUpCjAw MDAwMDAxIGxhdGVuY3kgMTAzMjQzLzEwMDAwMCAoMy4yNDMwJSkKMDAwMDAwMDIgbGF0ZW5jeSAx MDMyNDIvMTAwMDAwICgzLjI0MjAlKQowMDAwMDAwMyBsYXRlbmN5IDEwMzI0NS8xMDAwMDAgKDMu MjQ1MCUpCjAwMDAwMDA0IGxhdGVuY3kgMTAzMjQ1LzEwMDAwMCAoMy4yNDUwJSkKClRoZSBiaWdn ZXN0IHByb2JsZW0gaXMgdGhhdCBnZXRfa3ZtY2xvY2tfbnMoKSByZXR1cm5zIGluYWNjdXJhdGUg dmFsdWVzCndoZW4gdGhlIGd1ZXN0IFRTQyBpcyBzY2FsZWQuIFRoZSBndWVzdCBzZWVzIGEgVFND IHZhbHVlIHNjYWxlZCBmcm9tIHRoZQpob3N0IFRTQyBieSBhIG11bC9zaGlmdCBjb252ZXJzaW9u IChob3BlZnVsbHkgZG9uZSBpbiBoYXJkd2FyZSkuIFRoZQpndWVzdCB0aGVuIGNvbnZlcnRzIHRo YXQgZ3Vlc3QgVFNDIHZhbHVlIGludG8gbmFub3NlY29uZHMgdXNpbmcgdGhlCm11bC9zaGlmdCBj b252ZXJzaW9uIGdpdmVuIHRvIGl0IGJ5IHRoZSBLVk0gcHZjbG9jayBpbmZvcm1hdGlvbi4KCkJ1 dCBnZXRfa3ZtY2xvY2tfbnMoKSBwZXJmb3JtcyBvbmx5IGEgc2luZ2xlIGNvbnZlcnNpb24gZGly ZWN0bHkgZnJvbQpob3N0IFRTQyB0byBuYW5vc2Vjb25kcywgZ2l2aW5nIGEgZGlmZmVyZW50IHJl c3VsdC4gQSB0ZXN0IHByb2dyYW0gYXQKaHR0cDovL2RhdmlkLndvb2Rob3Uuc2UvdHNkcmlmdC5j wqBkZW1vbnN0cmF0ZXMgdGhlIGN1bXVsYXRpdmUgZXJyb3IKb3ZlciBhIGRheS4KCkl0J3Mgbm9u LXRyaXZpYWwgdG8gZml4IGdldF9rdm1jbG9ja19ucygpLCBhbHRob3VnaCBJJ2xsIGNvbWUgYmFj ayB0bwp0aGF0LiBUaGUgYWN0dWFsIGd1ZXN0IGh2X2Nsb2NrIGlzIHBlci1DUFUsIGFuZCAqdGhl b3JldGljYWxseSogZWFjaAp2Q1BVIGNvdWxkIGJlIHJ1bm5pbmcgYXQgYSAqZGlmZmVyZW50KiBm cmVxdWVuY3kuIEJ1dCB0aGlzIHBhdGNoIGlzCm5lZWRlZCBhbnl3YXkgYmVjYXVzZS4uLgoKVGhl IG90aGVyIGlzc3VlIHdpdGggWGVuIHRpbWVycyB3YXMgdGhhdCB0aGUgY29kZSB3b3VsZCBzbmFw c2hvdCB0aGUKaG9zdCBDTE9DS19NT05PVE9OSUMgYXQgc29tZSBwb2ludCBpbiB0aW1lLCBhbmQg dGhlbi4uLiBhZnRlciBhIGZldwppbnRlcnJ1cHRzIG1heSBoYXZlIG9jY3VycmVkLCBzb21lIHBy ZWVtcHRpb24gcGVyaGFwcy4uLiB3b3VsZCBhbHNvIHJlYWQKdGhlIGd1ZXN0J3Mga3ZtY2xvY2su IFRoZW4gaXQgd291bGQgcHJvY2VlZCB1bmRlciB0aGUgZmFsc2UgYXNzdW1wdGlvbgp0aGF0IHRo b3NlIHR3byBoYXBwZW5lZCBhdCB0aGUgKnNhbWUqIHRpbWUuIEFueSB0aW1lIHdoaWNoICphY3R1 YWxseSoKZWxhcHNlZCBiZXR3ZWVuIHJlYWRpbmcgdGhlIHR3byBjbG9ja3Mgd2FzIGludHJvZHVj ZWQgYXMgaW5hY2N1cmFjaWVzCmluIHRoZSB0aW1lIGF0IHdoaWNoIHRoZSB0aW1lciBmaXJlZC4K CkZpeCBpdCB0byB1c2UgYSB2YXJpYW50IG9mIGt2bV9nZXRfdGltZV9hbmRfY2xvY2tyZWFkKCks IHdoaWNoIHJlYWRzIHRoZQpob3N0IFRTQyBqdXN0ICpvbmNlKiwgdGhlbiB1c2UgdGhlIHJldHVy bmVkIFRTQyB2YWx1ZSB0byBjYWxjdWxhdGUgdGhlCmt2bWNsb2NrIChtYWtpbmcgc3VyZSB0byBk byB0aGF0IHRoZSB3YXkgdGhlIGd1ZXN0IHdvdWxkIGluc3RlYWQgb2YKbWFraW5nIHRoZSBzYW1l IG1pc3Rha2UgZ2V0X2t2bWNsb2NrX25zKCkgZG9lcykuCgpTYWRseSwgaHJ0aW1lcnMgYmFzZWQg b24gQ0xPQ0tfTU9OT1RPTklDX1JBVyBhcmUgbm90IHN1cHBvcnRlZCwgc28gWGVuCnRpbWVycyBz dGlsbCBoYXZlIHRvIHVzZSBDTE9DS19NT05PVE9OSUMuIEluIHByYWN0aWNlIHRoZSBkaWZmZXJl bmNlCmJldHdlZW4gdGhlIHR3byB3b24ndCBtYXR0ZXIgb3ZlciB0aGUgdGltZXNjYWxlcyBpbnZv bHZlZCwgYXMgdGhlCiphYnNvbHV0ZSogdmFsdWVzIGRvbid0IG1hdHRlcjsganVzdCB0aGUgZGVs dGEuCgpUaGlzIGRvZXMgbWVhbiBhIG5ldyB2YXJpYW50IG9mIGt2bV9nZXRfdGltZV9hbmRfY2xv Y2tyZWFkKCkgaXMgbmVlZGVkOwpjYWxsZWQga3ZtX2dldF9tb25vdG9uaWNfYW5kX2Nsb2NrcmVh ZCgpIGJlY2F1c2UgdGhhdCdzIHdoYXQgaXQgZG9lcy4KCkZpeGVzOiA1MzYzOTUyNjA1ODIgKCJL Vk06IHg4Ni94ZW46IGhhbmRsZSBQViB0aW1lcnMgb25lc2hvdCBtb2RlIikKU2lnbmVkLW9mZi1i eTogRGF2aWQgV29vZGhvdXNlIDxkd213QGFtYXpvbi5jby51az4KLS0tCnYzOgogIOKAoiBSZWJh c2UgYW5kIHJlcG9zdC4KCnYyOiAKICDigKIgRmFsbCBiYWNrIHRvIGdldF9rdm1jbG9ja19ucygp IGlmIHZjcHUtYXJjaC5odl9jbG9jayBpc24ndCBzZXQgdXAKICAgIHlldCwgd2l0aCBhIGJpZyBj b21tZW50IGV4cGxhaW5pbmcgd2h5IHRoYXQncyBhY3R1YWxseSBPSy4KICDigKIgRml4IGRvX21v bm90b25pYygpICpub3QqIHRvIGFkZCB0aGUgYm9vdCB0aW1lIG9mZnNldC4KICDigKIgUmVuYW1l IGRvX21vbm90b25pY19yYXcoKSDihpIgZG9fa3ZtY2xvY2tfYmFzZSgpIGFuZCBhZGQgYSBjb21t ZW50CiAgICB0byBtYWtlIGl0IGNsZWFyIHRoYXQgaXQgKmRvZXMqIGFkZCB0aGUgYm9vdCB0aW1l IG9mZnNldC4gVGhhdAogICAgd2FzIGp1c3QgbGVmdCBhcyBhIGJlYXIgdHJhcCBmb3IgdGhlIHVu d2FyeSBkZXZlbG9wZXIsIHdhc24ndCBpdD8KCsKgYXJjaC94ODYva3ZtL3g4Ni5jIHzCoCA2MSAr KysrKysrKysrKysrKysrKysrKystLQrCoGFyY2gveDg2L2t2bS94ODYuaCB8wqDCoCAxICsKwqBh cmNoL3g4Ni9rdm0veGVuLmMgfCAxMjEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0tLS0tLS0tLS0tCsKgMyBmaWxlcyBjaGFuZ2VkLCAxNDkgaW5zZXJ0aW9ucygrKSwgMzQgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5jIGIvYXJjaC94ODYva3Zt L3g4Ni5jCmluZGV4IDZiZWI2Y2ViMjhjMS4uOGZhZjFiZjllOGUzIDEwMDY0NAotLS0gYS9hcmNo L3g4Ni9rdm0veDg2LmMKKysrIGIvYXJjaC94ODYva3ZtL3g4Ni5jCkBAIC0yODUyLDcgKzI4NTIs MTEgQEAgc3RhdGljIGlubGluZSB1NjQgdmdldHRzYyhzdHJ1Y3QgcHZjbG9ja19jbG9jayAqY2xv Y2ssIHU2NCAqdHNjX3RpbWVzdGFtcCwKwqDCoMKgwqDCoMKgwqDCoHJldHVybiB2ICogY2xvY2st Pm11bHQ7CsKgfQrCoAotc3RhdGljIGludCBkb19tb25vdG9uaWNfcmF3KHM2NCAqdCwgdTY0ICp0 c2NfdGltZXN0YW1wKQorLyoKKyAqIEFzIHdpdGggZ2V0X2t2bWNsb2NrX2Jhc2VfbnMoKSwgdGhp cyBjb3VudHMgZnJvbSBib290IHRpbWUsIGF0IHRoZQorICogZnJlcXVlbmN5IG9mIENMT0NLX01P Tk9UT05JQ19SQVcgKGhlbmNlIGFkZGluZyBndG9zLT5vZmZzX2Jvb3QpLgorICovCitzdGF0aWMg aW50IGRvX2t2bWNsb2NrX2Jhc2UoczY0ICp0LCB1NjQgKnRzY190aW1lc3RhbXApCsKgewrCoMKg wqDCoMKgwqDCoMKgc3RydWN0IHB2Y2xvY2tfZ3RvZF9kYXRhICpndG9kID0gJnB2Y2xvY2tfZ3Rv ZF9kYXRhOwrCoMKgwqDCoMKgwqDCoMKgdW5zaWduZWQgbG9uZyBzZXE7CkBAIC0yODcxLDYgKzI4 NzUsMjkgQEAgc3RhdGljIGludCBkb19tb25vdG9uaWNfcmF3KHM2NCAqdCwgdTY0ICp0c2NfdGlt ZXN0YW1wKQrCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIG1vZGU7CsKgfQrCoAorLyoKKyAqIFRoaXMg Y2FsY3VsYXRlcyBDTE9DS19NT05PVE9OSUMgYXQgdGhlIHRpbWUgb2YgdGhlIFRTQyBzbmFwc2hv dCwgd2l0aAorICogbm8gYm9vdCB0aW1lIG9mZnNldC4KKyAqLworc3RhdGljIGludCBkb19tb25v dG9uaWMoczY0ICp0LCB1NjQgKnRzY190aW1lc3RhbXApCit7CivCoMKgwqDCoMKgwqDCoHN0cnVj dCBwdmNsb2NrX2d0b2RfZGF0YSAqZ3RvZCA9ICZwdmNsb2NrX2d0b2RfZGF0YTsKK8KgwqDCoMKg wqDCoMKgdW5zaWduZWQgbG9uZyBzZXE7CivCoMKgwqDCoMKgwqDCoGludCBtb2RlOworwqDCoMKg wqDCoMKgwqB1NjQgbnM7CisKK8KgwqDCoMKgwqDCoMKgZG8geworwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgc2VxID0gcmVhZF9zZXFjb3VudF9iZWdpbigmZ3RvZC0+c2VxKTsKK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG5zID0gZ3RvZC0+Y2xvY2suYmFzZV9jeWNsZXM7CivC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBucyArPSB2Z2V0dHNjKCZndG9kLT5jbG9jaywg dHNjX3RpbWVzdGFtcCwgJm1vZGUpOworwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbnMg Pj49IGd0b2QtPmNsb2NrLnNoaWZ0OworwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbnMg Kz0ga3RpbWVfdG9fbnMoZ3RvZC0+Y2xvY2sub2Zmc2V0KTsKK8KgwqDCoMKgwqDCoMKgfSB3aGls ZSAodW5saWtlbHkocmVhZF9zZXFjb3VudF9yZXRyeSgmZ3RvZC0+c2VxLCBzZXEpKSk7CivCoMKg wqDCoMKgwqDCoCp0ID0gbnM7CisKK8KgwqDCoMKgwqDCoMKgcmV0dXJuIG1vZGU7Cit9CisKwqBz dGF0aWMgaW50IGRvX3JlYWx0aW1lKHN0cnVjdCB0aW1lc3BlYzY0ICp0cywgdTY0ICp0c2NfdGlt ZXN0YW1wKQrCoHsKwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBwdmNsb2NrX2d0b2RfZGF0YSAqZ3Rv ZCA9ICZwdmNsb2NrX2d0b2RfZGF0YTsKQEAgLTI4OTIsMTggKzI5MTksNDIgQEAgc3RhdGljIGlu dCBkb19yZWFsdGltZShzdHJ1Y3QgdGltZXNwZWM2NCAqdHMsIHU2NCAqdHNjX3RpbWVzdGFtcCkK wqDCoMKgwqDCoMKgwqDCoHJldHVybiBtb2RlOwrCoH0KwqAKLS8qIHJldHVybnMgdHJ1ZSBpZiBo b3N0IGlzIHVzaW5nIFRTQyBiYXNlZCBjbG9ja3NvdXJjZSAqLworLyoKKyAqIENhbGN1bGF0ZXMg dGhlIGt2bWNsb2NrX2Jhc2VfbnMgKENMT0NLX01PTk9UT05JQ19SQVcgKyBib290IHRpbWUpIGFu ZAorICogcmVwb3J0cyB0aGUgVFNDIHZhbHVlIGZyb20gd2hpY2ggaXQgZG8gc28uIFJldHVybnMg dHJ1ZSBpZiBob3N0IGlzCisgKiB1c2luZyBUU0MgYmFzZWQgY2xvY2tzb3VyY2UuCisgKi8KwqBz dGF0aWMgYm9vbCBrdm1fZ2V0X3RpbWVfYW5kX2Nsb2NrcmVhZChzNjQgKmtlcm5lbF9ucywgdTY0 ICp0c2NfdGltZXN0YW1wKQrCoHsKwqDCoMKgwqDCoMKgwqDCoC8qIGNoZWNrZWQgYWdhaW4gdW5k ZXIgc2VxbG9jayBiZWxvdyAqLwrCoMKgwqDCoMKgwqDCoMKgaWYgKCFndG9kX2lzX2Jhc2VkX29u X3RzYyhwdmNsb2NrX2d0b2RfZGF0YS5jbG9jay52Y2xvY2tfbW9kZSkpCsKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGZhbHNlOwrCoAotwqDCoMKgwqDCoMKgwqByZXR1cm4g Z3RvZF9pc19iYXNlZF9vbl90c2MoZG9fbW9ub3RvbmljX3JhdyhrZXJuZWxfbnMsCi3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0c2NfdGltZXN0YW1wKSk7 CivCoMKgwqDCoMKgwqDCoHJldHVybiBndG9kX2lzX2Jhc2VkX29uX3RzYyhkb19rdm1jbG9ja19i YXNlKGtlcm5lbF9ucywKK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB0c2NfdGltZXN0YW1wKSk7CsKgfQrCoAotLyogcmV0dXJucyB0cnVlIGlmIGhvc3QgaXMg dXNpbmcgVFNDIGJhc2VkIGNsb2Nrc291cmNlICovCisvKgorICogQ2FsY3VsYXRlcyBDTE9DS19N T05PVE9OSUMgYW5kIHJlcG9ydHMgdGhlIFRTQyB2YWx1ZSBmcm9tIHdoaWNoIGl0IGRpZAorICog c28uIFJldHVybnMgdHJ1ZSBpZiBob3N0IGlzIHVzaW5nIFRTQyBiYXNlZCBjbG9ja3NvdXJjZS4K KyAqLworYm9vbCBrdm1fZ2V0X21vbm90b25pY19hbmRfY2xvY2tyZWFkKHM2NCAqa2VybmVsX25z LCB1NjQgKnRzY190aW1lc3RhbXApCit7CivCoMKgwqDCoMKgwqDCoC8qIGNoZWNrZWQgYWdhaW4g dW5kZXIgc2VxbG9jayBiZWxvdyAqLworwqDCoMKgwqDCoMKgwqBpZiAoIWd0b2RfaXNfYmFzZWRf b25fdHNjKHB2Y2xvY2tfZ3RvZF9kYXRhLmNsb2NrLnZjbG9ja19tb2RlKSkKK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBmYWxzZTsKKworwqDCoMKgwqDCoMKgwqByZXR1cm4g Z3RvZF9pc19iYXNlZF9vbl90c2MoZG9fbW9ub3RvbmljKGtlcm5lbF9ucywKK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdHNjX3RpbWVzdGFtcCkpOworfQorCisvKgorICog Q2FsY3VsYXRlcyBDTE9DS19SRUFMVElNRSBhbmQgcmVwb3J0cyB0aGUgVFNDIHZhbHVlIGZyb20g d2hpY2ggaXQgZGlkCisgKiBzby4gUmV0dXJucyB0cnVlIGlmIGhvc3QgaXMgdXNpbmcgVFNDIGJh c2VkIGNsb2Nrc291cmNlLgorICoKKyAqIERPIE5PVCBVU0UgdGhpcyBmb3IgYW55dGhpbmcgcmVs YXRlZCB0byBtaWdyYXRpb24uIFlvdSB3YW50IENMT0NLX1RBSQorICogZm9yIHRoYXQuCisgKi8K wqBzdGF0aWMgYm9vbCBrdm1fZ2V0X3dhbGx0aW1lX2FuZF9jbG9ja3JlYWQoc3RydWN0IHRpbWVz cGVjNjQgKnRzLArCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTY0ICp0c2NfdGltZXN0YW1w KQrCoHsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ODYuaCBiL2FyY2gveDg2L2t2bS94ODYu aAppbmRleCA1MTg0ZmRlMWRjNTQuLjBkNmFmMmE1N2FmNyAxMDA2NDQKLS0tIGEvYXJjaC94ODYv a3ZtL3g4Ni5oCisrKyBiL2FyY2gveDg2L2t2bS94ODYuaApAQCAtMjk0LDYgKzI5NCw3IEBAIHZv aWQga3ZtX2luamVjdF9yZWFsbW9kZV9pbnRlcnJ1cHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBp bnQgaXJxLCBpbnQgaW5jX2VpcCk7CsKgCsKgdTY0IGdldF9rdm1jbG9ja19ucyhzdHJ1Y3Qga3Zt ICprdm0pOwrCoHVpbnQ2NF90IGt2bV9nZXRfd2FsbF9jbG9ja19lcG9jaChzdHJ1Y3Qga3ZtICpr dm0pOworYm9vbCBrdm1fZ2V0X21vbm90b25pY19hbmRfY2xvY2tyZWFkKHM2NCAqa2VybmVsX25z LCB1NjQgKnRzY190aW1lc3RhbXApOwrCoArCoGludCBrdm1fcmVhZF9ndWVzdF92aXJ0KHN0cnVj dCBrdm1fdmNwdSAqdmNwdSwKwqDCoMKgwqDCoMKgwqDCoGd2YV90IGFkZHIsIHZvaWQgKnZhbCwg dW5zaWduZWQgaW50IGJ5dGVzLApkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3hlbi5jIGIvYXJj aC94ODYva3ZtL3hlbi5jCmluZGV4IDY2NjdmMDExNzBmOS4uYTI4ZjYwYWE5MWZiIDEwMDY0NAot LS0gYS9hcmNoL3g4Ni9rdm0veGVuLmMKKysrIGIvYXJjaC94ODYva3ZtL3hlbi5jCkBAIC0yNCw2 ICsyNCw3IEBACsKgI2luY2x1ZGUgPHhlbi9pbnRlcmZhY2Uvc2NoZWQuaD4KwqAKwqAjaW5jbHVk ZSA8YXNtL3hlbi9jcHVpZC5oPgorI2luY2x1ZGUgPGFzbS9wdmNsb2NrLmg+CsKgCsKgI2luY2x1 ZGUgImNwdWlkLmgiCsKgI2luY2x1ZGUgInRyYWNlLmgiCkBAIC0xNDksOCArMTUwLDkzIEBAIHN0 YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCB4ZW5fdGltZXJfY2FsbGJhY2soc3RydWN0IGhydGlt ZXIgKnRpbWVyKQrCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIEhSVElNRVJfTk9SRVNUQVJUOwrCoH0K wqAKLXN0YXRpYyB2b2lkIGt2bV94ZW5fc3RhcnRfdGltZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1 LCB1NjQgZ3Vlc3RfYWJzLCBzNjQgZGVsdGFfbnMpCitzdGF0aWMgdm9pZCBrdm1feGVuX3N0YXJ0 X3RpbWVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGd1ZXN0X2FicywKK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYm9vbCBs aW51eF93YSkKwqB7CivCoMKgwqDCoMKgwqDCoHVpbnQ2NF90IGd1ZXN0X25vdzsKK8KgwqDCoMKg wqDCoMKgaW50NjRfdCBrZXJuZWxfbm93LCBkZWx0YTsKKworwqDCoMKgwqDCoMKgwqAvKgorwqDC oMKgwqDCoMKgwqAgKiBUaGUgZ3Vlc3QgcHJvdmlkZXMgdGhlIHJlcXVlc3RlZCB0aW1lb3V0IGlu IGFic29sdXRlIG5hbm9zZWNvbmRzCivCoMKgwqDCoMKgwqDCoCAqIG9mIHRoZSBLVk0gY2xvY2sg 4oCUIGFzICppdCogc2VlcyBpdCwgYmFzZWQgb24gdGhlIHNjYWxlZCBUU0MgYW5kCivCoMKgwqDC oMKgwqDCoCAqIHRoZSBwdmNsb2NrIGluZm9ybWF0aW9uIHByb3ZpZGVkIGJ5IEtWTS4KK8KgwqDC oMKgwqDCoMKgICoKK8KgwqDCoMKgwqDCoMKgICogVGhlIGtlcm5lbCBkb2Vzbid0IHN1cHBvcnQg aHJ0aW1lcnMgYmFzZWQgb24gQ0xPQ0tfTU9OT1RPTklDX1JBVworwqDCoMKgwqDCoMKgwqAgKiBz byB1c2UgQ0xPQ0tfTU9OT1RPTklDLiBJbiB0aGUgdGltZXNjYWxlcyBjb3ZlcmVkIGJ5IHRpbWVy cywgdGhlCivCoMKgwqDCoMKgwqDCoCAqIGRpZmZlcmVuY2Ugd29uJ3QgbWF0dGVyIG11Y2ggYXMg dGhlcmUgaXMgbm8gY3VtdWxhdGl2ZSBlZmZlY3QuCivCoMKgwqDCoMKgwqDCoCAqCivCoMKgwqDC oMKgwqDCoCAqIENhbGN1bGF0ZSB0aGUgdGltZSBmb3Igc29tZSBhcmJpdHJhcnkgcG9pbnQgaW4g dGltZSBhcm91bmQgIm5vdyIKK8KgwqDCoMKgwqDCoMKgICogaW4gdGVybXMgb2YgYm90aCBrdm1j bG9jayBhbmQgQ0xPQ0tfTU9OT1RPTklDLiBDYWxjdWxhdGUgdGhlCivCoMKgwqDCoMKgwqDCoCAq IGRlbHRhIGJldHdlZW4gdGhlIGt2bWNsb2NrICJub3ciIHZhbHVlIGFuZCB0aGUgZ3Vlc3QncyBy ZXF1ZXN0ZWQKK8KgwqDCoMKgwqDCoMKgICogdGltZW91dCwgYXBwbHkgdGhlICJMaW51eCB3b3Jr YXJvdW5kIiBkZXNjcmliZWQgYmVsb3csIGFuZCBhZGQKK8KgwqDCoMKgwqDCoMKgICogdGhlIHJl c3VsdGluZyBkZWx0YSB0byB0aGUgQ0xPQ0tfTU9OT1RPTklDICJub3ciIHZhbHVlLCB0byBnZXQK K8KgwqDCoMKgwqDCoMKgICogdGhlIGFic29sdXRlIENMT0NLX01PTk9UT05JQyB0aW1lIGF0IHdo aWNoIHRoZSB0aW1lciBzaG91bGQKK8KgwqDCoMKgwqDCoMKgICogZmlyZS4KK8KgwqDCoMKgwqDC oMKgICovCivCoMKgwqDCoMKgwqDCoGlmICh2Y3B1LT5hcmNoLmh2X2Nsb2NrLnZlcnNpb24gJiYg dmNwdS0+a3ZtLT5hcmNoLnVzZV9tYXN0ZXJfY2xvY2sgJiYKK8KgwqDCoMKgwqDCoMKgwqDCoMKg IHN0YXRpY19jcHVfaGFzKFg4Nl9GRUFUVVJFX0NPTlNUQU5UX1RTQykpIHsKK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHVpbnQ2NF90IGhvc3RfdHNjLCBndWVzdF90c2M7CisKK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICghSVNfRU5BQkxFRChDT05GSUdfNjRCSVQpIHx8 CivCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIWt2bV9nZXRfbW9ub3Rvbmlj X2FuZF9jbG9ja3JlYWQoJmtlcm5lbF9ub3csICZob3N0X3RzYykpIHsKK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKgorwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIERvbid0IGZhbGwgYmFjayB0byBnZXRfa3ZtY2xv Y2tfbnMoKSBiZWNhdXNlIGl0J3MKK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgKiBicm9rZW47IGl0IGhhcyBhIHN5c3RlbWljIGVycm9yIGluIGl0cyByZXN1 bHRzCivCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogYmVj YXVzZSBpdCBzY2FsZXMgZGlyZWN0bHkgZnJvbSBob3N0IFRTQyB0bworwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIG5hbm9zZWNvbmRzLCBhbmQgZG9lc24n dCBzY2FsZSBmaXJzdCB0byBndWVzdCBUU0MKK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgKiBhbmQgdGhlbiogdG8gbmFub3NlY29uZHMgYXMgdGhlIGd1ZXN0 IGRvZXMuCivCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICoK K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBUaGVyZSBp cyBhIHNtYWxsIGVycm9yIGludHJvZHVjZWQgaGVyZSBiZWNhdXNlIHRpbWUKK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBjb250aW51ZXMgdG8gZWxhcHNl IGJldHdlZW4gdGhlIGt0aW1lX2dldCgpIGFuZCB0aGUKK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBzdWJzZXF1ZW50IHJkdHNjKCkuIEJ1dCBub3QgdGhl IHN5c3RlbWljIGRyaWZ0IGR1ZQorwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAqIHRvIGdldF9rdm1jbG9ja19ucygpLgorwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLworwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGtlcm5lbF9ub3cgPSBrdGltZV9nZXQoKTsgLyogVGhpcyBpcyBD TE9DS19NT05PVE9OSUMgKi8KK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBob3N0X3RzYyA9IHJkdHNjKCk7CivCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB9CisKK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIENhbGN1bGF0ZSB0aGUgZ3Vl c3Qga3ZtY2xvY2sgYXMgdGhlIGd1ZXN0IHdvdWxkIGRvIGl0LiAqLworwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZ3Vlc3RfdHNjID0ga3ZtX3JlYWRfbDFfdHNjKHZjcHUsIGhvc3RfdHNj KTsKK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGd1ZXN0X25vdyA9IF9fcHZjbG9ja19y ZWFkX2N5Y2xlcygmdmNwdS0+YXJjaC5odl9jbG9jaywKK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBndWVzdF90c2MpOworwqDCoMKgwqDCoMKgwqB9IGVsc2UgeworwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyoKK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAqIFdpdGhvdXQgQ09OU1RBTlRfVFNDLCBnZXRfa3ZtY2xvY2tfbnMoKSBpcyB0aGUgb25s eSBvcHRpb24uCivCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKgorwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgICogQWxzbyBpZiB0aGUgZ3Vlc3QgUFYgY2xvY2sgaGFzbid0IGJl ZW4gc2V0IHVwIHlldCwgYXMgaXMKK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIGxp a2VseSB0byBiZSB0aGUgY2FzZSBkdXJpbmcgbWlncmF0aW9uIHdoZW4gdGhlIHZDUFUgaGFzCivC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBub3QgYmVlbiBydW4geWV0LiBJdCB3b3Vs ZCBiZSBwb3NzaWJsZSB0byBjYWxjdWxhdGUgdGhlCivCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgKiBzY2FsaW5nIGZhY3RvcnMgcHJvcGVybHkgaW4gdGhhdCBjYXNlIGJ1dCB0aGVyZSdz IG5vdCBtdWNoCivCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBwb2ludCBpbiBkb2lu ZyBzby4gVGhlIGdldF9rdm1jbG9ja19ucygpIGRyaWZ0IGFjY3VtdWxhdGVzCivCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBvdmVyIHRpbWUsIHNvIGl0J3MgT0sgdG8gdXNlIGl0IGF0 IHN0YXJ0dXAuIEJlc2lkZXMsIG9uCivCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBt aWdyYXRpb24gdGhlcmUncyBnb2luZyB0byBiZSBhIGxpdHRsZSBiaXQgb2Ygc2tldyBpbiB0aGUK K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIHByZWNpc2UgbW9tZW50IGF0IHdoaWNo IHRpbWVycyBmaXJlIGFueXdheS4gT2Z0ZW4gdGhleSdsbAorwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICogYmUgaW4gdGhlICJwYXN0IiBieSB0aGUgdGltZSB0aGUgVk0gaXMgcnVubmlu ZyBhZ2FpbiBhZnRlcgorwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogbWlncmF0aW9u LgorwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovCivCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBndWVzdF9ub3cgPSBnZXRfa3ZtY2xvY2tfbnModmNwdS0+a3ZtKTsKK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGtlcm5lbF9ub3cgPSBrdGltZV9nZXQoKTsKK8KgwqDC oMKgwqDCoMKgfQorCivCoMKgwqDCoMKgwqDCoGRlbHRhID0gZ3Vlc3RfYWJzIC0gZ3Vlc3Rfbm93 OworCivCoMKgwqDCoMKgwqDCoC8qIFhlbiBoYXMgYSAnTGludXggd29ya2Fyb3VuZCcgaW4gZG9f c2V0X3RpbWVyX29wKCkgd2hpY2gKK8KgwqDCoMKgwqDCoMKgICogY2hlY2tzIGZvciBuZWdhdGl2 ZSBhYnNvbHV0ZSB0aW1lb3V0IHZhbHVlcyAoY2F1c2VkIGJ5CivCoMKgwqDCoMKgwqDCoCAqIGlu dGVnZXIgb3ZlcmZsb3cpLCBhbmQgZm9yIHZhbHVlcyBhYm91dCAxMyBkYXlzIGluIHRoZQorwqDC oMKgwqDCoMKgwqAgKiBmdXR1cmUgKDJeNTBucykgd2hpY2ggd291bGQgYmUgY2F1c2VkIGJ5IGpp ZmZpZXMKK8KgwqDCoMKgwqDCoMKgICogb3ZlcmZsb3cuIEZvciB0aG9zZSBjYXNlcywgaXQgc2V0 cyB0aGUgdGltZW91dCAxMDBtcyBpbgorwqDCoMKgwqDCoMKgwqAgKiB0aGUgZnV0dXJlIChub3Qg KnRvbyogc29vbiwgc2luY2UgaWYgYSBndWVzdCByZWFsbHkgZGlkCivCoMKgwqDCoMKgwqDCoCAq IHNldCBhIGxvbmcgdGltZW91dCBvbiBwdXJwb3NlIHdlIGRvbid0IHdhbnQgdG8ga2VlcAorwqDC oMKgwqDCoMKgwqAgKiBjaHVybmluZyBDUFUgdGltZSBieSB3YWtpbmcgaXQgdXApLgorwqDCoMKg wqDCoMKgwqAgKi8KK8KgwqDCoMKgwqDCoMKgaWYgKGxpbnV4X3dhKSB7CivCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBpZiAoKHVubGlrZWx5KChpbnQ2NF90KWd1ZXN0X2FicyA8IDAgfHwK K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IChkZWx0YSA+IDAgJiYgKHVpbnQzMl90KSAoZGVsdGEgPj4gNTApICE9IDApKSkpIHsKK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWx0YSA9IDEwMCAqIE5T RUNfUEVSX01TRUM7CivCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgZ3Vlc3RfYWJzID0gZ3Vlc3Rfbm93ICsgZGVsdGE7CivCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB9CivCoMKgwqDCoMKgwqDCoH0KKwrCoMKgwqDCoMKgwqDCoMKgLyoKwqDCoMKgwqDC oMKgwqDCoCAqIEF2b2lkIHJhY2VzIHdpdGggdGhlIG9sZCB0aW1lciBmaXJpbmcuIENoZWNraW5n IHRpbWVyX2V4cGlyZXMKwqDCoMKgwqDCoMKgwqDCoCAqIHRvIGF2b2lkIGNhbGxpbmcgaHJ0aW1l cl9jYW5jZWwoKSB3aWxsIG9ubHkgaGF2ZSBmYWxzZSBwb3NpdGl2ZXMKQEAgLTE2MiwxMiArMjQ4 LDExIEBAIHN0YXRpYyB2b2lkIGt2bV94ZW5fc3RhcnRfdGltZXIoc3RydWN0IGt2bV92Y3B1ICp2 Y3B1LCB1NjQgZ3Vlc3RfYWJzLCBzNjQgZGVsdGFfCsKgwqDCoMKgwqDCoMKgwqBhdG9taWNfc2V0 KCZ2Y3B1LT5hcmNoLnhlbi50aW1lcl9wZW5kaW5nLCAwKTsKwqDCoMKgwqDCoMKgwqDCoHZjcHUt PmFyY2gueGVuLnRpbWVyX2V4cGlyZXMgPSBndWVzdF9hYnM7CsKgCi3CoMKgwqDCoMKgwqDCoGlm IChkZWx0YV9ucyA8PSAwKSB7CivCoMKgwqDCoMKgwqDCoGlmIChkZWx0YSA8PSAwKSB7CsKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVuX3RpbWVyX2NhbGxiYWNrKCZ2Y3B1LT5hcmNo Lnhlbi50aW1lcik7CsKgwqDCoMKgwqDCoMKgwqB9IGVsc2UgewotwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKga3RpbWVfdCBrdGltZV9ub3cgPSBrdGltZV9nZXQoKTsKwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBocnRpbWVyX3N0YXJ0KCZ2Y3B1LT5hcmNoLnhlbi50aW1lciwK LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGt0aW1lX2FkZF9ucyhrdGltZV9ub3csIGRlbHRhX25zKSwKK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGt0aW1lX2FkZF9ucyhrZXJuZWxf bm93LCBkZWx0YSksCsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgSFJUSU1FUl9NT0RFX0FCU19IQVJEKTsKwqDCoMKgwqDCoMKgwqDCoH0K wqB9CkBAIC05OTEsOCArMTA3Niw3IEBAIGludCBrdm1feGVuX3ZjcHVfc2V0X2F0dHIoc3RydWN0 IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3hlbl92Y3B1X2F0dHIgKmRhdGEpCsKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogU3RhcnQgdGhlIHRpbWVyIGlmIHRoZSBuZXcgdmFs dWUgaGFzIGEgdmFsaWQgdmVjdG9yK2V4cGlyeS4gKi8KwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBpZiAoZGF0YS0+dS50aW1lci5wb3J0ICYmIGRhdGEtPnUudGltZXIuZXhwaXJlc19u cykKwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKga3ZtX3hl bl9zdGFydF90aW1lcih2Y3B1LCBkYXRhLT51LnRpbWVyLmV4cGlyZXNfbnMsCi3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZGF0YS0+dS50aW1lci5leHBpcmVzX25zIC0KLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBnZXRfa3ZtY2xvY2tfbnModmNwdS0+a3ZtKSk7CivCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZmFsc2UpOwrCoArCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHIgPSAwOwrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOwpAQCAtMTQ0 OCw3ICsxNTMyLDYgQEAgc3RhdGljIGJvb2wga3ZtX3hlbl9oY2FsbF92Y3B1X29wKHN0cnVjdCBr dm1fdmNwdSAqdmNwdSwgYm9vbCBsb25nbW9kZSwgaW50IGNtZCwKwqB7CsKgwqDCoMKgwqDCoMKg wqBzdHJ1Y3QgdmNwdV9zZXRfc2luZ2xlc2hvdF90aW1lciBvbmVzaG90OwrCoMKgwqDCoMKgwqDC oMKgc3RydWN0IHg4Nl9leGNlcHRpb24gZTsKLcKgwqDCoMKgwqDCoMKgczY0IGRlbHRhOwrCoArC oMKgwqDCoMKgwqDCoMKgaWYgKCFrdm1feGVuX3RpbWVyX2VuYWJsZWQodmNwdSkpCsKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGZhbHNlOwpAQCAtMTQ4Miw5ICsxNTY1LDcg QEAgc3RhdGljIGJvb2wga3ZtX3hlbl9oY2FsbF92Y3B1X29wKHN0cnVjdCBrdm1fdmNwdSAqdmNw dSwgYm9vbCBsb25nbW9kZSwgaW50IGNtZCwKwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHRydWU7CsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgfQrCoAotwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogQSBkZWx0YSA8PSAw IHJlc3VsdHMgaW4gYW4gaW1tZWRpYXRlIGNhbGxiYWNrLCB3aGljaCBpcyB3aGF0IHdlIHdhbnQg Ki8KLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlbHRhID0gb25lc2hvdC50aW1lb3V0 X2Fic19ucyAtIGdldF9rdm1jbG9ja19ucyh2Y3B1LT5rdm0pOwotwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKga3ZtX3hlbl9zdGFydF90aW1lcih2Y3B1LCBvbmVzaG90LnRpbWVvdXRfYWJz X25zLCBkZWx0YSk7CivCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBrdm1feGVuX3N0YXJ0 X3RpbWVyKHZjcHUsIG9uZXNob3QudGltZW91dF9hYnNfbnMsIGZhbHNlKTsKwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAqciA9IDA7CsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgcmV0dXJuIHRydWU7CsKgCkBAIC0xNTA4LDI1ICsxNTg5LDcgQEAgc3RhdGljIGJvb2wga3Zt X3hlbl9oY2FsbF9zZXRfdGltZXJfb3Aoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1aW50NjRfdCB0 aW1lb3V0LArCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBmYWxzZTsKwqAK wqDCoMKgwqDCoMKgwqDCoGlmICh0aW1lb3V0KSB7Ci3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB1aW50NjRfdCBndWVzdF9ub3cgPSBnZXRfa3ZtY2xvY2tfbnModmNwdS0+a3ZtKTsKLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGludDY0X3QgZGVsdGEgPSB0aW1lb3V0IC0gZ3Vl c3Rfbm93OwotCi3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBYZW4gaGFzIGEgJ0xp bnV4IHdvcmthcm91bmQnIGluIGRvX3NldF90aW1lcl9vcCgpIHdoaWNoCi3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgKiBjaGVja3MgZm9yIG5lZ2F0aXZlIGFic29sdXRlIHRpbWVvdXQg dmFsdWVzIChjYXVzZWQgYnkKLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIGludGVn ZXIgb3ZlcmZsb3cpLCBhbmQgZm9yIHZhbHVlcyBhYm91dCAxMyBkYXlzIGluIHRoZQotwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogZnV0dXJlICgyXjUwbnMpIHdoaWNoIHdvdWxkIGJl IGNhdXNlZCBieSBqaWZmaWVzCi3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBvdmVy Zmxvdy4gRm9yIHRob3NlIGNhc2VzLCBpdCBzZXRzIHRoZSB0aW1lb3V0IDEwMG1zIGluCi3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiB0aGUgZnV0dXJlIChub3QgKnRvbyogc29vbiwg c2luY2UgaWYgYSBndWVzdCByZWFsbHkgZGlkCi3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgKiBzZXQgYSBsb25nIHRpbWVvdXQgb24gcHVycG9zZSB3ZSBkb24ndCB3YW50IHRvIGtlZXAK LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIGNodXJuaW5nIENQVSB0aW1lIGJ5IHdh a2luZyBpdCB1cCkuCi3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICh1bmxpa2VseSgoaW50NjRfdCl0aW1lb3V0IDwgMCB8 fAotwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IChkZWx0YSA+IDAgJiYgKHVpbnQzMl90KSAoZGVsdGEgPj4gNTApICE9IDApKSkgewotwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlbHRhID0gMTAwICogTlNF Q19QRVJfTVNFQzsKLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB0aW1lb3V0ID0gZ3Vlc3Rfbm93ICsgZGVsdGE7Ci3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB9Ci0KLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGt2bV94ZW5fc3RhcnRfdGlt ZXIodmNwdSwgdGltZW91dCwgZGVsdGEpOworwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg a3ZtX3hlbl9zdGFydF90aW1lcih2Y3B1LCB0aW1lb3V0LCB0cnVlKTsKwqDCoMKgwqDCoMKgwqDC oH0gZWxzZSB7CsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKga3ZtX3hlbl9zdG9wX3Rp bWVyKHZjcHUpOwrCoMKgwqDCoMKgwqDCoMKgfQotLSAKMi40MS4wCgoK --=-utPJPSMsR2OJl8pPyeiC Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Disposition: attachment; filename="smime.p7s" Content-Transfer-Encoding: base64 MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCCEkQw ggYQMIID+KADAgECAhBNlCwQ1DvglAnFgS06KwZPMA0GCSqGSIb3DQEBDAUAMIGIMQswCQYDVQQG EwJVUzETMBEGA1UECBMKTmV3IEplcnNleTEUMBIGA1UEBxMLSmVyc2V5IENpdHkxHjAcBgNVBAoT FVRoZSBVU0VSVFJVU1QgTmV0d29yazEuMCwGA1UEAxMlVVNFUlRydXN0IFJTQSBDZXJ0aWZpY2F0 aW9uIEF1dGhvcml0eTAeFw0xODExMDIwMDAwMDBaFw0zMDEyMzEyMzU5NTlaMIGWMQswCQYDVQQG EwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYD VQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50 aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC AQEAyjztlApB/975Rrno1jvm2pK/KxBOqhq8gr2+JhwpKirSzZxQgT9tlC7zl6hn1fXjSo5MqXUf ItMltrMaXqcESJuK8dtK56NCSrq4iDKaKq9NxOXFmqXX2zN8HHGjQ2b2Xv0v1L5Nk1MQPKA19xeW QcpGEGFUUd0kN+oHox+L9aV1rjfNiCj3bJk6kJaOPabPi2503nn/ITX5e8WfPnGw4VuZ79Khj1YB rf24k5Ee1sLTHsLtpiK9OjG4iQRBdq6Z/TlVx/hGAez5h36bBJMxqdHLpdwIUkTqT8se3ed0PewD ch/8kHPo5fZl5u1B0ecpq/sDN/5sCG52Ds+QU5O5EwIDAQABo4IBZDCCAWAwHwYDVR0jBBgwFoAU U3m/WqorSs9UgOHYm8Cd8rIDZsswHQYDVR0OBBYEFAnA8vwL2pTbX/4r36iZQs/J4K0AMA4GA1Ud DwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEF BQcDBDARBgNVHSAECjAIMAYGBFUdIAAwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybC51c2Vy dHJ1c3QuY29tL1VTRVJUcnVzdFJTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3JsMHYGCCsGAQUF BwEBBGowaDA/BggrBgEFBQcwAoYzaHR0cDovL2NydC51c2VydHJ1c3QuY29tL1VTRVJUcnVzdFJT QUFkZFRydXN0Q0EuY3J0MCUGCCsGAQUFBzABhhlodHRwOi8vb2NzcC51c2VydHJ1c3QuY29tMA0G CSqGSIb3DQEBDAUAA4ICAQBBRHUAqznCFfXejpVtMnFojADdF9d6HBA4kMjjsb0XMZHztuOCtKF+ xswhh2GqkW5JQrM8zVlU+A2VP72Ky2nlRA1GwmIPgou74TZ/XTarHG8zdMSgaDrkVYzz1g3nIVO9 IHk96VwsacIvBF8JfqIs+8aWH2PfSUrNxP6Ys7U0sZYx4rXD6+cqFq/ZW5BUfClN/rhk2ddQXyn7 kkmka2RQb9d90nmNHdgKrwfQ49mQ2hWQNDkJJIXwKjYA6VUR/fZUFeCUisdDe/0ABLTI+jheXUV1 eoYV7lNwNBKpeHdNuO6Aacb533JlfeUHxvBz9OfYWUiXu09sMAviM11Q0DuMZ5760CdO2VnpsXP4 KxaYIhvqPqUMWqRdWyn7crItNkZeroXaecG03i3mM7dkiPaCkgocBg0EBYsbZDZ8bsG3a08LwEsL 1Ygz3SBsyECa0waq4hOf/Z85F2w2ZpXfP+w8q4ifwO90SGZZV+HR/Jh6rEaVPDRF/CEGVqR1hiuQ OZ1YL5ezMTX0ZSLwrymUE0pwi/KDaiYB15uswgeIAcA6JzPFf9pLkAFFWs1QNyN++niFhsM47qod x/PL+5jR87myx5uYdBEQkkDc+lKB1Wct6ucXqm2EmsaQ0M95QjTmy+rDWjkDYdw3Ms6mSWE3Bn7i 5ZgtwCLXgAIe5W8mybM2JzCCBhQwggT8oAMCAQICEQDGvhmWZ0DEAx0oURL6O6l+MA0GCSqGSIb3 DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD VQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28g UlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMB4XDTIyMDEwNzAw MDAwMFoXDTI1MDEwNjIzNTk1OVowJDEiMCAGCSqGSIb3DQEJARYTZHdtdzJAaW5mcmFkZWFkLm9y ZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALQ3GpC2bomUqk+91wLYBzDMcCj5C9m6 oZaHwvmIdXftOgTbCJXADo6G9T7BBAebw2JV38EINgKpy/ZHh7htyAkWYVoFsFPrwHounto8xTsy SSePMiPlmIdQ10BcVSXMUJ3Juu16GlWOnAMJY2oYfEzmE7uT9YgcBqKCo65pTFmOnR/VVbjJk4K2 xE34GC2nAdUQkPFuyaFisicc6HRMOYXPuF0DuwITEKnjxgNjP+qDrh0db7PAjO1D4d5ftfrsf+kd RR4gKVGSk8Tz2WwvtLAroJM4nXjNPIBJNT4w/FWWc/5qPHJy2U+eITZ5LLE5s45mX2oPFknWqxBo bQZ8a9dsZ3dSPZBvE9ZrmtFLrVrN4eo1jsXgAp1+p7bkfqd3BgBEmfsYWlBXO8rVXfvPgLs32VdV NZxb/CDWPqBsiYv0Hv3HPsz07j5b+/cVoWqyHDKzkaVbxfq/7auNVRmPB3v5SWEsH8xi4Bez2V9U KxfYCnqsjp8RaC2/khxKt0A552Eaxnz/4ly/2C7wkwTQnBmdlFYhAflWKQ03Ufiu8t3iBE3VJbc2 5oMrglj7TRZrmKq3CkbFnX0fyulB+kHimrt6PIWn7kgyl9aelIl6vtbhMA+l0nfrsORMa4kobqQ5 C5rveVgmcIad67EDa+UqEKy/GltUwlSh6xy+TrK1tzDvAgMBAAGjggHMMIIByDAfBgNVHSMEGDAW gBQJwPL8C9qU21/+K9+omULPyeCtADAdBgNVHQ4EFgQUzMeDMcimo0oz8o1R1Nver3ZVpSkwDgYD VR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwQGCCsGAQUFBwMC MEAGA1UdIAQ5MDcwNQYMKwYBBAGyMQECAQEBMCUwIwYIKwYBBQUHAgEWF2h0dHBzOi8vc2VjdGln by5jb20vQ1BTMFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9jcmwuc2VjdGlnby5jb20vU2VjdGln b1JTQUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1haWxDQS5jcmwwgYoGCCsGAQUFBwEB BH4wfDBVBggrBgEFBQcwAoZJaHR0cDovL2NydC5zZWN0aWdvLmNvbS9TZWN0aWdvUlNBQ2xpZW50 QXV0aGVudGljYXRpb25hbmRTZWN1cmVFbWFpbENBLmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29j c3Auc2VjdGlnby5jb20wHgYDVR0RBBcwFYETZHdtdzJAaW5mcmFkZWFkLm9yZzANBgkqhkiG9w0B AQsFAAOCAQEAyW6MUir5dm495teKqAQjDJwuFCi35h4xgnQvQ/fzPXmtR9t54rpmI2TfyvcKgOXp qa7BGXNFfh1JsqexVkIqZP9uWB2J+uVMD+XZEs/KYNNX2PvIlSPrzIB4Z2wyIGQpaPLlYflrrVFK v9CjT2zdqvy2maK7HKOQRt3BiJbVG5lRiwbbygldcALEV9ChWFfgSXvrWDZspnU3Gjw/rMHrGnql Htlyebp3pf3fSS9kzQ1FVtVIDrL6eqhTwJxe+pXSMMqFiN0whpBtXdyDjzBtQTaZJ7zTT/vlehc/ tDuqZwGHm/YJy883Ll+GP3NvOkgaRGWEuYWJJ6hFCkXYjyR9IzCCBhQwggT8oAMCAQICEQDGvhmW Z0DEAx0oURL6O6l+MA0GCSqGSIb3DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0 ZWQxPjA8BgNVBAMTNVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJl IEVtYWlsIENBMB4XDTIyMDEwNzAwMDAwMFoXDTI1MDEwNjIzNTk1OVowJDEiMCAGCSqGSIb3DQEJ ARYTZHdtdzJAaW5mcmFkZWFkLm9yZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALQ3 GpC2bomUqk+91wLYBzDMcCj5C9m6oZaHwvmIdXftOgTbCJXADo6G9T7BBAebw2JV38EINgKpy/ZH h7htyAkWYVoFsFPrwHounto8xTsySSePMiPlmIdQ10BcVSXMUJ3Juu16GlWOnAMJY2oYfEzmE7uT 9YgcBqKCo65pTFmOnR/VVbjJk4K2xE34GC2nAdUQkPFuyaFisicc6HRMOYXPuF0DuwITEKnjxgNj P+qDrh0db7PAjO1D4d5ftfrsf+kdRR4gKVGSk8Tz2WwvtLAroJM4nXjNPIBJNT4w/FWWc/5qPHJy 2U+eITZ5LLE5s45mX2oPFknWqxBobQZ8a9dsZ3dSPZBvE9ZrmtFLrVrN4eo1jsXgAp1+p7bkfqd3 BgBEmfsYWlBXO8rVXfvPgLs32VdVNZxb/CDWPqBsiYv0Hv3HPsz07j5b+/cVoWqyHDKzkaVbxfq/ 7auNVRmPB3v5SWEsH8xi4Bez2V9UKxfYCnqsjp8RaC2/khxKt0A552Eaxnz/4ly/2C7wkwTQnBmd lFYhAflWKQ03Ufiu8t3iBE3VJbc25oMrglj7TRZrmKq3CkbFnX0fyulB+kHimrt6PIWn7kgyl9ae lIl6vtbhMA+l0nfrsORMa4kobqQ5C5rveVgmcIad67EDa+UqEKy/GltUwlSh6xy+TrK1tzDvAgMB AAGjggHMMIIByDAfBgNVHSMEGDAWgBQJwPL8C9qU21/+K9+omULPyeCtADAdBgNVHQ4EFgQUzMeD Mcimo0oz8o1R1Nver3ZVpSkwDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYw FAYIKwYBBQUHAwQGCCsGAQUFBwMCMEAGA1UdIAQ5MDcwNQYMKwYBBAGyMQECAQEBMCUwIwYIKwYB BQUHAgEWF2h0dHBzOi8vc2VjdGlnby5jb20vQ1BTMFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9j cmwuc2VjdGlnby5jb20vU2VjdGlnb1JTQUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1h aWxDQS5jcmwwgYoGCCsGAQUFBwEBBH4wfDBVBggrBgEFBQcwAoZJaHR0cDovL2NydC5zZWN0aWdv LmNvbS9TZWN0aWdvUlNBQ2xpZW50QXV0aGVudGljYXRpb25hbmRTZWN1cmVFbWFpbENBLmNydDAj BggrBgEFBQcwAYYXaHR0cDovL29jc3Auc2VjdGlnby5jb20wHgYDVR0RBBcwFYETZHdtdzJAaW5m cmFkZWFkLm9yZzANBgkqhkiG9w0BAQsFAAOCAQEAyW6MUir5dm495teKqAQjDJwuFCi35h4xgnQv Q/fzPXmtR9t54rpmI2TfyvcKgOXpqa7BGXNFfh1JsqexVkIqZP9uWB2J+uVMD+XZEs/KYNNX2PvI lSPrzIB4Z2wyIGQpaPLlYflrrVFKv9CjT2zdqvy2maK7HKOQRt3BiJbVG5lRiwbbygldcALEV9Ch WFfgSXvrWDZspnU3Gjw/rMHrGnqlHtlyebp3pf3fSS9kzQ1FVtVIDrL6eqhTwJxe+pXSMMqFiN0w hpBtXdyDjzBtQTaZJ7zTT/vlehc/tDuqZwGHm/YJy883Ll+GP3NvOkgaRGWEuYWJJ6hFCkXYjyR9 IzGCBMcwggTDAgEBMIGsMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVz dGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMT NVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhEA xr4ZlmdAxAMdKFES+jupfjANBglghkgBZQMEAgEFAKCCAeswGAYJKoZIhvcNAQkDMQsGCSqGSIb3 DQEHATAcBgkqhkiG9w0BCQUxDxcNMjMxMjE0MTY1NDQ4WjAvBgkqhkiG9w0BCQQxIgQgqLnv+vLA xK4NXr6YDpbwqpy0sMjzUnzHD8PfPvfnyPEwgb0GCSsGAQQBgjcQBDGBrzCBrDCBljELMAkGA1UE BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYG A1UEChMPU2VjdGlnbyBMaW1pdGVkMT4wPAYDVQQDEzVTZWN0aWdvIFJTQSBDbGllbnQgQXV0aGVu dGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQQIRAMa+GZZnQMQDHShREvo7qX4wgb8GCyqGSIb3 DQEJEAILMYGvoIGsMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVy MRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNl Y3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhEAxr4Z lmdAxAMdKFES+jupfjANBgkqhkiG9w0BAQEFAASCAgCehFHh/ub9MuPadLwoiIKCLn9ZOtRoDfp/ lBbGh63JBwHOk6m/0bNP4/i4esne4Z12m50jDdgnqqFTtSNxeoFXdcddfrbg6GmF3gqTv8DlfQxs PCCfgBVWN2yN4/sdX08oigGIaNSsOzOww/ogQtGCSPJY3PFQOdHd3XiKjREjWz5UuiucN7jqV9hP vY3kIwK4jIaFz//OPcV0Id6bEi167FRmwXNLMn3ODFLG6ItpclXRCNr5BgnMCGh/o+lmnG6/EEzs 5ZKcOZFCjAaNQgTTfbT68n1+G8WBiez441iOs/3VE8LbtBlKe6dafS7AkCkk6HXIrZtfVtXLO86d cfvOGCebEmGaTyDNhzjGWS8xlFPsy7lJ6gqvbAdkk/6YBsZOjXrVSGkT7RyI1liwCM/AcuXo0Ekh bDia6XY+cb4lv/U+0nwUFgRN4MWskbEe3O1WMeY3SIiKRvbIQCBehi6ErNYBaOulD+Ilwq84OvGZ xL7H9G1W9YTjjoeKg8UuC8F11BQaF5m7TYwOHFpL1typWtHc5FLcfQePzSafH6QhOqRDTbGvElWT rDzomo6opb/DT9awy5iiVKWlFFTYhp2O6Emvt0tFbn77X8OL8Mgigaxx9tzyEyAw1qXa+lclJ67p fsr0CFuIEXKHrO3f3u8L413gM/f1r44Pr4B8L+gwRwAAAAAAAA== --=-utPJPSMsR2OJl8pPyeiC--