Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rQSYy-001PaI-0h for pgsql-hackers@arkaria.postgresql.org; Thu, 18 Jan 2024 13:36:09 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rQSYx-002ih5-6S for pgsql-hackers@arkaria.postgresql.org; Thu, 18 Jan 2024 13:36:07 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rQSYw-002igI-E1 for pgsql-hackers@lists.postgresql.org; Thu, 18 Jan 2024 13:36:06 +0000 Received: from mail-pj1-x102f.google.com ([2607:f8b0:4864:20::102f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rQSYr-002T2Z-U7 for pgsql-hackers@postgresql.org; Thu, 18 Jan 2024 13:36:05 +0000 Received: by mail-pj1-x102f.google.com with SMTP id 98e67ed59e1d1-29026523507so382356a91.0 for ; Thu, 18 Jan 2024 05:36:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1705584960; x=1706189760; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=JG6pajOzp4DNGzMGTyvBjeXVROSCzZO42y9lQT2r4rw=; b=X9gAeZ8o4SP4IykR+/D9DMNvImdQghueG9/U5sZoioFCsEWg0/hGWEdmpY5zEGerm7 gs8a/YjahiC2SBdhkK3iphT3odjhh3AKCx0VTBoKWflBeLS2xsakv0X8WrrFUe0tDUSC nY/cTeKE5ysz9uYUVUUDTYPGzKJKbNgaLQx4uF9qSSwuq/aFR5bi1l953fXE7Mn/KkI/ ir4ymVk5WEjY1DX4eYHCrfrH150GQWPsVF4RslDnqjP3emcEKddZSjsalKRrvjsUrd7f IPE8a4cwuOKQmujLUe4nYDSiKruUa604Toh1qzRoPpuRSR/vGq0l5x9y7nuYHFeWp0sd 0Mxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1705584960; x=1706189760; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=JG6pajOzp4DNGzMGTyvBjeXVROSCzZO42y9lQT2r4rw=; b=SaWALiq98xgwWEo7vbN8DuIat0quhpE0em4T8d4+bdpmsRmE6vwwg3isC7taxxMkqa J5JC6dmkFHuYhDyQ1fUAtUZjVno4HxO/C3jzWZuXrk00c4Kfl8U+wn+gzTVBJpUYtx5S ZlExq84GlhgtuS+cRGjpjrKvfDqH1Xca8LD8UQXXpa1t0+9XLCHjCfwSUlTB3laaRJPq J5+0Czixj1hiEMacP2a4fKVbq59LMbfXpT5jJA23KvYmaV+U/5EO4I2TndvgiydabcZ6 zOcFdhq9kKeVn6y30oaQYogEIoZF2CUzQgMeZ3pvUERbSjlwfYfSdWghFQkWwFBK1o1h HJJg== X-Gm-Message-State: AOJu0YyOiUrYroH4B4wVWyxDjM6oo5+D/e8PCA5+UuPyyQ87fu81xpo+ r9sqmew3O3AY0pfjGqHqnuwMCAhXfFop/bDw80sPpwMHl008CoxR3Z3MuRtFA46xyBolduDeRtp aiFYVjO9C69LCrbCyVxqoq+lBjfg= X-Google-Smtp-Source: AGHT+IG4DdZfE169riLAkMb/NF8wqHOhfL1YaJrqHVxCzCufqHhCnrg6Lcui1h47q6xQHUKyvSi0q50TudtulXlQI3k= X-Received: by 2002:a17:90a:72cc:b0:28b:db65:7789 with SMTP id l12-20020a17090a72cc00b0028bdb657789mr767894pjk.55.1705584959841; Thu, 18 Jan 2024 05:35:59 -0800 (PST) MIME-Version: 1.0 References: <202312071051.cpxujwos4tlj@alvherre.pgsql> <20231208173014.2qycwc6kjqf6zlck@awork3.anarazel.de> In-Reply-To: From: Amit Langote Date: Thu, 18 Jan 2024 22:35:41 +0900 Message-ID: Subject: Re: remaining sql/json patches To: jian he Cc: Andres Freund , Alvaro Herrera , Erik Rijkers , Andrew Dunstan , PostgreSQL-development Content-Type: multipart/mixed; boundary="000000000000aae962060f3871e9" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000aae962060f3871e9 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Jan 18, 2024 at 10:12=E2=80=AFPM Amit Langote wrote: > Attached v34 of all of the patches. 0008 may be considered to be WIP > given the points I mentioned above -- need to add a bit more > commentary about JSON_TABLE plan implementation and other > miscellaneous fixes. Oops, I had forgotten to update the ECPG test's expected output in 0008. Fixed in the attached. --=20 Thanks, Amit Langote EDB: http://www.enterprisedb.com --000000000000aae962060f3871e9 Content-Type: application/octet-stream; name="v35-0003-Refactor-code-used-by-jsonpath-executor-to-fetch.patch" Content-Disposition: attachment; filename="v35-0003-Refactor-code-used-by-jsonpath-executor-to-fetch.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lrj915p02 RnJvbSBjY2I3ZGJjOGE3OGVlN2IwMDI4OTc0Nzc0NGI1Mjk1YjRmZjlhZmYyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMTggSmFuIDIwMjQgMTY6MzA6NTYgKzA5MDAKU3ViamVjdDogW1BBVENIIHYz NSAzLzhdIFJlZmFjdG9yIGNvZGUgdXNlZCBieSBqc29ucGF0aCBleGVjdXRvciB0byBmZXRjaAog dmFyaWFibGVzCgpDdXJyZW50bHksIGdldEpzb25QYXRoVmFyaWFibGUoKSBkaXJlY3RseSBleHRy YWN0cyBhIG5hbWVkCnZhcmlhYmxlL2tleSBmcm9tIHRoZSBzb3VyY2UgSnNvbmIgdmFsdWUuICBU aGlzIGNvbW1pdCBwdXRzIHRoYXQKbG9naWMgaW50byBhIGNhbGxiYWNrIGZ1bmN0aW9uIGNhbGxl ZCBieSBnZXRKc29uUGF0aFZhcmlhYmxlKCkuCk90aGVyIGltcGxlbWVudGF0aW9ucyBvZiB0aGUg Y2FsbGJhY2sgbWF5IGFjY2VwdCBkaWZmZXJlbnQgZm9ybXMKb2YgdGhlIHNvdXJjZSB2YWx1ZShz KSwgZm9yIGV4YW1wbGUsIGEgTGlzdCBvZiB2YWx1ZXMgcGFzc2VkIGZyb20Kb3V0c2lkZSBqc29u cGF0aF9leGVjLmMuCgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBK0hpd3FFNFhU ZGZiMW5XPU9qb3lfdFFTUmhZdC1xX2tiNmk1ZDR4Y0t5ckxDMU5iZ0BtYWlsLmdtYWlsLmNvbQot LS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9leGVjLmMgfCAxMzYgKysrKysrKysr KysrKysrKysrKy0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA5OSBpbnNlcnRpb25zKCspLCAzNyBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGhf ZXhlYy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2V4ZWMuYwppbmRleCBhYzE2 ZjVjODVkLi5jMTYyODIxZTY1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNv bnBhdGhfZXhlYy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9leGVjLmMK QEAgLTg3LDEyICs4NywxOSBAQCB0eXBlZGVmIHN0cnVjdCBKc29uQmFzZU9iamVjdEluZm8KIAlp bnQJCQlpZDsKIH0gSnNvbkJhc2VPYmplY3RJbmZvOwogCisvKiBDYWxsYmFja3MgZm9yIGV4ZWN1 dGVKc29uUGF0aCgpICovCit0eXBlZGVmIEpzb25iVmFsdWUgKigqSnNvblBhdGhHZXRWYXJDYWxs YmFjaykgKHZvaWQgKnZhcnMsIGNoYXIgKnZhck5hbWUsIGludCB2YXJOYW1lTGVuLAorCQkJCQkJ CQkJCQkgICBKc29uYlZhbHVlICpiYXNlT2JqZWN0LCBpbnQgKmJhc2VPYmplY3RJZCk7Cit0eXBl ZGVmIGludCAoKkpzb25QYXRoQ291bnRWYXJzQ2FsbGJhY2spICh2b2lkICp2YXJzKTsKKwogLyoK ICAqIENvbnRleHQgb2YganNvbnBhdGggZXhlY3V0aW9uLgogICovCiB0eXBlZGVmIHN0cnVjdCBK c29uUGF0aEV4ZWNDb250ZXh0CiB7Ci0JSnNvbmIJICAgKnZhcnM7CQkJLyogdmFyaWFibGVzIHRv IHN1YnN0aXR1dGUgaW50byBqc29ucGF0aCAqLworCXZvaWQJICAgKnZhcnM7CQkJLyogdmFyaWFi bGVzIHRvIHN1YnN0aXR1dGUgaW50byBqc29ucGF0aCAqLworCUpzb25QYXRoR2V0VmFyQ2FsbGJh Y2sgZ2V0VmFyOwkvKiBjYWxsYmFjayB0byBleHRyYWN0IGEgZ2l2ZW4gdmFyaWFibGUKKwkJCQkJ CQkJCSAqIGZyb20gJ3ZhcnMnICovCiAJSnNvbmJWYWx1ZSAqcm9vdDsJCQkvKiBmb3IgJCBldmFs dWF0aW9uICovCiAJSnNvbmJWYWx1ZSAqY3VycmVudDsJCS8qIGZvciBAIGV2YWx1YXRpb24gKi8K IAlKc29uQmFzZU9iamVjdEluZm8gYmFzZU9iamVjdDsJLyogImJhc2Ugb2JqZWN0IiBmb3IgLmtl eXZhbHVlKCkKQEAgLTE3NCw3ICsxODEsOSBAQCB0eXBlZGVmIEpzb25QYXRoQm9vbCAoKkpzb25Q YXRoUHJlZGljYXRlQ2FsbGJhY2spIChKc29uUGF0aEl0ZW0gKmpzcCwKIAkJCQkJCQkJCQkJCSAg IHZvaWQgKnBhcmFtKTsKIHR5cGVkZWYgTnVtZXJpYyAoKkJpbmFyeUFyaXRobUZ1bmMpIChOdW1l cmljIG51bTEsIE51bWVyaWMgbnVtMiwgYm9vbCAqZXJyb3IpOwogCi1zdGF0aWMgSnNvblBhdGhF eGVjUmVzdWx0IGV4ZWN1dGVKc29uUGF0aChKc29uUGF0aCAqcGF0aCwgSnNvbmIgKnZhcnMsCitz dGF0aWMgSnNvblBhdGhFeGVjUmVzdWx0IGV4ZWN1dGVKc29uUGF0aChKc29uUGF0aCAqcGF0aCwg dm9pZCAqdmFycywKKwkJCQkJCQkJCQkgIEpzb25QYXRoR2V0VmFyQ2FsbGJhY2sgZ2V0VmFyLAor CQkJCQkJCQkJCSAgSnNvblBhdGhDb3VudFZhcnNDYWxsYmFjayBjb3VudFZhcnMsCiAJCQkJCQkJ CQkJICBKc29uYiAqanNvbiwgYm9vbCB0aHJvd0Vycm9ycywKIAkJCQkJCQkJCQkgIEpzb25WYWx1 ZUxpc3QgKnJlc3VsdCwgYm9vbCB1c2VUeik7CiBzdGF0aWMgSnNvblBhdGhFeGVjUmVzdWx0IGV4 ZWN1dGVJdGVtKEpzb25QYXRoRXhlY0NvbnRleHQgKmN4dCwKQEAgLTIyNiw3ICsyMzUsMTIgQEAg c3RhdGljIEpzb25QYXRoRXhlY1Jlc3VsdCBhcHBlbmRCb29sUmVzdWx0KEpzb25QYXRoRXhlY0Nv bnRleHQgKmN4dCwKIHN0YXRpYyB2b2lkIGdldEpzb25QYXRoSXRlbShKc29uUGF0aEV4ZWNDb250 ZXh0ICpjeHQsIEpzb25QYXRoSXRlbSAqaXRlbSwKIAkJCQkJCQlKc29uYlZhbHVlICp2YWx1ZSk7 CiBzdGF0aWMgdm9pZCBnZXRKc29uUGF0aFZhcmlhYmxlKEpzb25QYXRoRXhlY0NvbnRleHQgKmN4 dCwKLQkJCQkJCQkJSnNvblBhdGhJdGVtICp2YXJpYWJsZSwgSnNvbmIgKnZhcnMsIEpzb25iVmFs dWUgKnZhbHVlKTsKKwkJCQkJCQkJSnNvblBhdGhJdGVtICp2YXJpYWJsZSwgSnNvbmJWYWx1ZSAq dmFsdWUpOworc3RhdGljIGludCBjb3VudFZhcmlhYmxlc0Zyb21Kc29uYih2b2lkICp2YXJzSnNv bmIpOworc3RhdGljIEpzb25iVmFsdWUgKmdldEpzb25QYXRoVmFyaWFibGVGcm9tSnNvbmIodm9p ZCAqdmFyc0pzb25iLCBjaGFyICp2YXJOYW1lLAorCQkJCQkJCQkJCQkJaW50IHZhck5hbWVMZW4s CisJCQkJCQkJCQkJCQlKc29uYlZhbHVlICpiYXNlT2JqZWN0LAorCQkJCQkJCQkJCQkJaW50ICpi YXNlT2JqZWN0SWQpOwogc3RhdGljIGludAlKc29uYkFycmF5U2l6ZShKc29uYlZhbHVlICpqYik7 CiBzdGF0aWMgSnNvblBhdGhCb29sIGV4ZWN1dGVDb21wYXJpc29uKEpzb25QYXRoSXRlbSAqY21w LCBKc29uYlZhbHVlICpsdiwKIAkJCQkJCQkJCSAgSnNvbmJWYWx1ZSAqcnYsIHZvaWQgKnApOwpA QCAtMjg0LDcgKzI5OCw5IEBAIGpzb25iX3BhdGhfZXhpc3RzX2ludGVybmFsKEZ1bmN0aW9uQ2Fs bEluZm8gZmNpbmZvLCBib29sIHR6KQogCQlzaWxlbnQgPSBQR19HRVRBUkdfQk9PTCgzKTsKIAl9 CiAKLQlyZXMgPSBleGVjdXRlSnNvblBhdGgoanAsIHZhcnMsIGpiLCAhc2lsZW50LCBOVUxMLCB0 eik7CisJcmVzID0gZXhlY3V0ZUpzb25QYXRoKGpwLCB2YXJzLCBnZXRKc29uUGF0aFZhcmlhYmxl RnJvbUpzb25iLAorCQkJCQkJICBjb3VudFZhcmlhYmxlc0Zyb21Kc29uYiwKKwkJCQkJCSAgamIs ICFzaWxlbnQsIE5VTEwsIHR6KTsKIAogCVBHX0ZSRUVfSUZfQ09QWShqYiwgMCk7CiAJUEdfRlJF RV9JRl9DT1BZKGpwLCAxKTsKQEAgLTMzOSw3ICszNTUsOSBAQCBqc29uYl9wYXRoX21hdGNoX2lu dGVybmFsKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBib29sIHR6KQogCQlzaWxlbnQgPSBQR19H RVRBUkdfQk9PTCgzKTsKIAl9CiAKLQkodm9pZCkgZXhlY3V0ZUpzb25QYXRoKGpwLCB2YXJzLCBq YiwgIXNpbGVudCwgJmZvdW5kLCB0eik7CisJKHZvaWQpIGV4ZWN1dGVKc29uUGF0aChqcCwgdmFy cywgZ2V0SnNvblBhdGhWYXJpYWJsZUZyb21Kc29uYiwKKwkJCQkJCSAgIGNvdW50VmFyaWFibGVz RnJvbUpzb25iLAorCQkJCQkJICAgamIsICFzaWxlbnQsICZmb3VuZCwgdHopOwogCiAJUEdfRlJF RV9JRl9DT1BZKGpiLCAwKTsKIAlQR19GUkVFX0lGX0NPUFkoanAsIDEpOwpAQCAtNDE3LDcgKzQz NSw5IEBAIGpzb25iX3BhdGhfcXVlcnlfaW50ZXJuYWwoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8s IGJvb2wgdHopCiAJCXZhcnMgPSBQR19HRVRBUkdfSlNPTkJfUF9DT1BZKDIpOwogCQlzaWxlbnQg PSBQR19HRVRBUkdfQk9PTCgzKTsKIAotCQkodm9pZCkgZXhlY3V0ZUpzb25QYXRoKGpwLCB2YXJz LCBqYiwgIXNpbGVudCwgJmZvdW5kLCB0eik7CisJCSh2b2lkKSBleGVjdXRlSnNvblBhdGgoanAs IHZhcnMsIGdldEpzb25QYXRoVmFyaWFibGVGcm9tSnNvbmIsCisJCQkJCQkJICAgY291bnRWYXJp YWJsZXNGcm9tSnNvbmIsCisJCQkJCQkJICAgamIsICFzaWxlbnQsICZmb3VuZCwgdHopOwogCiAJ CWZ1bmNjdHgtPnVzZXJfZmN0eCA9IEpzb25WYWx1ZUxpc3RHZXRMaXN0KCZmb3VuZCk7CiAKQEAg LTQ2NCw3ICs0ODQsOSBAQCBqc29uYl9wYXRoX3F1ZXJ5X2FycmF5X2ludGVybmFsKEZ1bmN0aW9u Q2FsbEluZm8gZmNpbmZvLCBib29sIHR6KQogCUpzb25iCSAgICp2YXJzID0gUEdfR0VUQVJHX0pT T05CX1AoMik7CiAJYm9vbAkJc2lsZW50ID0gUEdfR0VUQVJHX0JPT0woMyk7CiAKLQkodm9pZCkg ZXhlY3V0ZUpzb25QYXRoKGpwLCB2YXJzLCBqYiwgIXNpbGVudCwgJmZvdW5kLCB0eik7CisJKHZv aWQpIGV4ZWN1dGVKc29uUGF0aChqcCwgdmFycywgZ2V0SnNvblBhdGhWYXJpYWJsZUZyb21Kc29u YiwKKwkJCQkJCSAgIGNvdW50VmFyaWFibGVzRnJvbUpzb25iLAorCQkJCQkJICAgamIsICFzaWxl bnQsICZmb3VuZCwgdHopOwogCiAJUEdfUkVUVVJOX0pTT05CX1AoSnNvbmJWYWx1ZVRvSnNvbmIo d3JhcEl0ZW1zSW5BcnJheSgmZm91bmQpKSk7CiB9CkBAIC00OTUsNyArNTE3LDkgQEAganNvbmJf cGF0aF9xdWVyeV9maXJzdF9pbnRlcm5hbChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgYm9vbCB0 eikKIAlKc29uYgkgICAqdmFycyA9IFBHX0dFVEFSR19KU09OQl9QKDIpOwogCWJvb2wJCXNpbGVu dCA9IFBHX0dFVEFSR19CT09MKDMpOwogCi0JKHZvaWQpIGV4ZWN1dGVKc29uUGF0aChqcCwgdmFy cywgamIsICFzaWxlbnQsICZmb3VuZCwgdHopOworCSh2b2lkKSBleGVjdXRlSnNvblBhdGgoanAs IHZhcnMsIGdldEpzb25QYXRoVmFyaWFibGVGcm9tSnNvbmIsCisJCQkJCQkgICBjb3VudFZhcmlh Ymxlc0Zyb21Kc29uYiwKKwkJCQkJCSAgIGpiLCAhc2lsZW50LCAmZm91bmQsIHR6KTsKIAogCWlm IChKc29uVmFsdWVMaXN0TGVuZ3RoKCZmb3VuZCkgPj0gMSkKIAkJUEdfUkVUVVJOX0pTT05CX1Ao SnNvbmJWYWx1ZVRvSnNvbmIoSnNvblZhbHVlTGlzdEhlYWQoJmZvdW5kKSkpOwpAQCAtNTIyLDYg KzU0Niw5IEBAIGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHooUEdfRlVOQ1RJT05fQVJHUykKICAq CiAgKiAncGF0aCcgLSBqc29ucGF0aCB0byBiZSBleGVjdXRlZAogICogJ3ZhcnMnIC0gdmFyaWFi bGVzIHRvIGJlIHN1YnN0aXR1dGVkIHRvIGpzb25wYXRoCisgKiAnZ2V0VmFyJyAtIGNhbGxiYWNr IHVzZWQgYnkgZ2V0SnNvblBhdGhWYXJpYWJsZSgpIHRvIGV4dHJhY3QgdmFyaWFibGVzIGZyb20K KyAqCQkndmFycycKKyAqICdjb3VudFZhcnMnIC0gY2FsbGJhY2sgdG8gY291bnQgdGhlIG51bWJl ciBvZiBqc29ucGF0aCB2YXJpYWJsZXMgaW4gJ3ZhcnMnCiAgKiAnanNvbicgLSB0YXJnZXQgZG9j dW1lbnQgZm9yIGpzb25wYXRoIGV2YWx1YXRpb24KICAqICd0aHJvd0Vycm9ycycgLSB3aGV0aGVy IHdlIHNob3VsZCB0aHJvdyBzdXBwcmVzc2libGUgZXJyb3JzCiAgKiAncmVzdWx0JyAtIGxpc3Qg dG8gc3RvcmUgcmVzdWx0IGl0ZW1zIGludG8KQEAgLTUzNyw4ICs1NjQsMTAgQEAganNvbmJfcGF0 aF9xdWVyeV9maXJzdF90eihQR19GVU5DVElPTl9BUkdTKQogICogSW4gb3RoZXIgY2FzZSBpdCB0 cmllcyB0byBmaW5kIGFsbCB0aGUgc2F0aXNmaWVkIHJlc3VsdCBpdGVtcy4KICAqLwogc3RhdGlj IEpzb25QYXRoRXhlY1Jlc3VsdAotZXhlY3V0ZUpzb25QYXRoKEpzb25QYXRoICpwYXRoLCBKc29u YiAqdmFycywgSnNvbmIgKmpzb24sIGJvb2wgdGhyb3dFcnJvcnMsCi0JCQkJSnNvblZhbHVlTGlz dCAqcmVzdWx0LCBib29sIHVzZVR6KQorZXhlY3V0ZUpzb25QYXRoKEpzb25QYXRoICpwYXRoLCB2 b2lkICp2YXJzLCBKc29uUGF0aEdldFZhckNhbGxiYWNrIGdldFZhciwKKwkJCQlKc29uUGF0aENv dW50VmFyc0NhbGxiYWNrIGNvdW50VmFycywKKwkJCQlKc29uYiAqanNvbiwgYm9vbCB0aHJvd0Vy cm9ycywgSnNvblZhbHVlTGlzdCAqcmVzdWx0LAorCQkJCWJvb2wgdXNlVHopCiB7CiAJSnNvblBh dGhFeGVjQ29udGV4dCBjeHQ7CiAJSnNvblBhdGhFeGVjUmVzdWx0IHJlczsKQEAgLTU1MCwyMiAr NTc5LDE2IEBAIGV4ZWN1dGVKc29uUGF0aChKc29uUGF0aCAqcGF0aCwgSnNvbmIgKnZhcnMsIEpz b25iICpqc29uLCBib29sIHRocm93RXJyb3JzLAogCWlmICghSnNvbmJFeHRyYWN0U2NhbGFyKCZq c29uLT5yb290LCAmamJ2KSkKIAkJSnNvbmJJbml0QmluYXJ5KCZqYnYsIGpzb24pOwogCi0JaWYg KHZhcnMgJiYgIUpzb25Db250YWluZXJJc09iamVjdCgmdmFycy0+cm9vdCkpCi0JewotCQllcmVw b3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUp LAotCQkJCSBlcnJtc2coIlwidmFyc1wiIGFyZ3VtZW50IGlzIG5vdCBhbiBvYmplY3QiKSwKLQkJ CQkgZXJyZGV0YWlsKCJKc29ucGF0aCBwYXJhbWV0ZXJzIHNob3VsZCBiZSBlbmNvZGVkIGFzIGtl eS12YWx1ZSBwYWlycyBvZiBcInZhcnNcIiBvYmplY3QuIikpKTsKLQl9Ci0KIAljeHQudmFycyA9 IHZhcnM7CisJY3h0LmdldFZhciA9IGdldFZhcjsKIAljeHQubGF4TW9kZSA9IChwYXRoLT5oZWFk ZXIgJiBKU09OUEFUSF9MQVgpICE9IDA7CiAJY3h0Lmlnbm9yZVN0cnVjdHVyYWxFcnJvcnMgPSBj eHQubGF4TW9kZTsKIAljeHQucm9vdCA9ICZqYnY7CiAJY3h0LmN1cnJlbnQgPSAmamJ2OwogCWN4 dC5iYXNlT2JqZWN0LmpiYyA9IE5VTEw7CiAJY3h0LmJhc2VPYmplY3QuaWQgPSAwOwotCWN4dC5s YXN0R2VuZXJhdGVkT2JqZWN0SWQgPSB2YXJzID8gMiA6IDE7CisJLyogMSArIG51bWJlciBvZiBi YXNlIG9iamVjdHMgaW4gdmFycyAqLworCWN4dC5sYXN0R2VuZXJhdGVkT2JqZWN0SWQgPSAxICsg Y291bnRWYXJzKHZhcnMpOwogCWN4dC5pbm5lcm1vc3RBcnJheVNpemUgPSAtMTsKIAljeHQudGhy b3dFcnJvcnMgPSB0aHJvd0Vycm9yczsKIAljeHQudXNlVHogPSB1c2VUejsKQEAgLTIxMDgsNyAr MjEzMSw3IEBAIGdldEpzb25QYXRoSXRlbShKc29uUGF0aEV4ZWNDb250ZXh0ICpjeHQsIEpzb25Q YXRoSXRlbSAqaXRlbSwKIAkJCQkJCQkJCQkJCSAmdmFsdWUtPnZhbC5zdHJpbmcubGVuKTsKIAkJ CWJyZWFrOwogCQljYXNlIGpwaVZhcmlhYmxlOgotCQkJZ2V0SnNvblBhdGhWYXJpYWJsZShjeHQs IGl0ZW0sIGN4dC0+dmFycywgdmFsdWUpOworCQkJZ2V0SnNvblBhdGhWYXJpYWJsZShjeHQsIGl0 ZW0sIHZhbHVlKTsKIAkJCXJldHVybjsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bmV4 cGVjdGVkIGpzb25wYXRoIGl0ZW0gdHlwZSIpOwpAQCAtMjEyMCw0MiArMjE0Myw4MSBAQCBnZXRK c29uUGF0aEl0ZW0oSnNvblBhdGhFeGVjQ29udGV4dCAqY3h0LCBKc29uUGF0aEl0ZW0gKml0ZW0s CiAgKi8KIHN0YXRpYyB2b2lkCiBnZXRKc29uUGF0aFZhcmlhYmxlKEpzb25QYXRoRXhlY0NvbnRl eHQgKmN4dCwgSnNvblBhdGhJdGVtICp2YXJpYWJsZSwKLQkJCQkJSnNvbmIgKnZhcnMsIEpzb25i VmFsdWUgKnZhbHVlKQorCQkJCQlKc29uYlZhbHVlICp2YWx1ZSkKIHsKIAljaGFyCSAgICp2YXJO YW1lOwogCWludAkJCXZhck5hbWVMZW5ndGg7Ci0JSnNvbmJWYWx1ZQl0bXA7CisJSnNvbmJWYWx1 ZQliYXNlT2JqZWN0OworCWludAkJCWJhc2VPYmplY3RJZDsKIAlKc29uYlZhbHVlICp2OwogCi0J aWYgKCF2YXJzKQorCUFzc2VydCh2YXJpYWJsZS0+dHlwZSA9PSBqcGlWYXJpYWJsZSk7CisJdmFy TmFtZSA9IGpzcEdldFN0cmluZyh2YXJpYWJsZSwgJnZhck5hbWVMZW5ndGgpOworCisJaWYgKGN4 dC0+dmFycyA9PSBOVUxMIHx8CisJCSh2ID0gY3h0LT5nZXRWYXIoY3h0LT52YXJzLCB2YXJOYW1l LCB2YXJOYW1lTGVuZ3RoLAorCQkJCQkJICZiYXNlT2JqZWN0LCAmYmFzZU9iamVjdElkKSkgPT0g TlVMTCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9P QkpFQ1QpLAorCQkJCSBlcnJtc2coImNvdWxkIG5vdCBmaW5kIGpzb25wYXRoIHZhcmlhYmxlIFwi JXNcIiIsCisJCQkJCQlwbnN0cmR1cCh2YXJOYW1lLCB2YXJOYW1lTGVuZ3RoKSkpKTsKKworCWlm IChiYXNlT2JqZWN0SWQgPiAwKQogCXsKLQkJdmFsdWUtPnR5cGUgPSBqYnZOdWxsOwotCQlyZXR1 cm47CisJCSp2YWx1ZSA9ICp2OworCQlzZXRCYXNlT2JqZWN0KGN4dCwgJmJhc2VPYmplY3QsIGJh c2VPYmplY3RJZCk7CiAJfQorfQorCisvKgorICogRGVmaW5pdGlvbiBvZiBKc29uUGF0aEdldFZh ckNhbGxiYWNrIGZvciB3aGVuIEpzb25QYXRoRXhlY0NvbnRleHQudmFycworICogaXMgc3BlY2lm aWVkIGFzIGEganNvbmIgdmFsdWUuCisgKi8KK3N0YXRpYyBKc29uYlZhbHVlICoKK2dldEpzb25Q YXRoVmFyaWFibGVGcm9tSnNvbmIodm9pZCAqdmFyc0pzb25iLCBjaGFyICp2YXJOYW1lLCBpbnQg dmFyTmFtZUxlbmd0aCwKKwkJCQkJCQkgSnNvbmJWYWx1ZSAqYmFzZU9iamVjdCwgaW50ICpiYXNl T2JqZWN0SWQpCit7CisJSnNvbmIJICAgKnZhcnMgPSB2YXJzSnNvbmI7CisJSnNvbmJWYWx1ZQl0 bXA7CisJSnNvbmJWYWx1ZSAqcmVzdWx0OwogCi0JQXNzZXJ0KHZhcmlhYmxlLT50eXBlID09IGpw aVZhcmlhYmxlKTsKLQl2YXJOYW1lID0ganNwR2V0U3RyaW5nKHZhcmlhYmxlLCAmdmFyTmFtZUxl bmd0aCk7CiAJdG1wLnR5cGUgPSBqYnZTdHJpbmc7CiAJdG1wLnZhbC5zdHJpbmcudmFsID0gdmFy TmFtZTsKIAl0bXAudmFsLnN0cmluZy5sZW4gPSB2YXJOYW1lTGVuZ3RoOwogCi0JdiA9IGZpbmRK c29uYlZhbHVlRnJvbUNvbnRhaW5lcigmdmFycy0+cm9vdCwgSkJfRk9CSkVDVCwgJnRtcCk7CisJ cmVzdWx0ID0gZmluZEpzb25iVmFsdWVGcm9tQ29udGFpbmVyKCZ2YXJzLT5yb290LCBKQl9GT0JK RUNULCAmdG1wKTsKIAotCWlmICh2KQorCWlmIChyZXN1bHQgPT0gTlVMTCkKIAl7Ci0JCSp2YWx1 ZSA9ICp2OwotCQlwZnJlZSh2KTsKKwkJKmJhc2VPYmplY3RJZCA9IC0xOworCQlyZXR1cm4gTlVM TDsKIAl9Ci0JZWxzZQorCisJKmJhc2VPYmplY3RJZCA9IDE7CisJSnNvbmJJbml0QmluYXJ5KGJh c2VPYmplY3QsIHZhcnMpOworCisJcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIERlZmluaXRp b24gb2YgSnNvblBhdGhDb3VudFZhcnNDYWxsYmFjayBmb3Igd2hlbiBKc29uUGF0aEV4ZWNDb250 ZXh0LnZhcnMKKyAqIGlzIHNwZWNpZmllZCBhcyBhIGpzb25iIHZhbHVlLgorICovCitzdGF0aWMg aW50Citjb3VudFZhcmlhYmxlc0Zyb21Kc29uYih2b2lkICp2YXJzSnNvbmIpCit7CisJSnNvbmIJ ICAgKnZhcnMgPSB2YXJzSnNvbmI7CisKKwlpZiAodmFycyAmJiAhSnNvbkNvbnRhaW5lcklzT2Jq ZWN0KCZ2YXJzLT5yb290KSkKIAl7CiAJCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJS Q09ERV9VTkRFRklORURfT0JKRUNUKSwKLQkJCQkgZXJybXNnKCJjb3VsZCBub3QgZmluZCBqc29u cGF0aCB2YXJpYWJsZSBcIiVzXCIiLAotCQkJCQkJcG5zdHJkdXAodmFyTmFtZSwgdmFyTmFtZUxl bmd0aCkpKSk7CisJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwK KwkJCQllcnJtc2coIlwidmFyc1wiIGFyZ3VtZW50IGlzIG5vdCBhbiBvYmplY3QiKSwKKwkJCQll cnJkZXRhaWwoIkpzb25wYXRoIHBhcmFtZXRlcnMgc2hvdWxkIGJlIGVuY29kZWQgYXMga2V5LXZh bHVlIHBhaXJzIG9mIFwidmFyc1wiIG9iamVjdC4iKSk7CiAJfQogCi0JSnNvbmJJbml0QmluYXJ5 KCZ0bXAsIHZhcnMpOwotCXNldEJhc2VPYmplY3QoY3h0LCAmdG1wLCAxKTsKKwkvKiBjb3VudCBv ZiBiYXNlIG9iamVjdHMgKi8KKwlyZXR1cm4gdmFycyAhPSBOVUxMID8gMSA6IDA7CiB9CiAKIC8q KioqKioqKioqKioqKioqIFN1cHBvcnQgZnVuY3Rpb25zIGZvciBKc29uUGF0aCBleGVjdXRpb24g KioqKioqKioqKioqKioqKiovCi0tIAoyLjM1LjMKCg== --000000000000aae962060f3871e9 Content-Type: application/octet-stream; name="v35-0001-Add-soft-error-handling-to-some-expression-nodes.patch" Content-Disposition: attachment; filename="v35-0001-Add-soft-error-handling-to-some-expression-nodes.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lrj915ot0 RnJvbSA2YWMwZGEzYTlmMjE2ZDM3N2ZlMjJhM2NhNjU5YTc1NjMxNDFiZWY3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMTggSmFuIDIwMjQgMTY6MTY6MjEgKzA5MDAKU3ViamVjdDogW1BBVENIIHYz NSAxLzhdIEFkZCBzb2Z0IGVycm9yIGhhbmRsaW5nIHRvIHNvbWUgZXhwcmVzc2lvbiBub2RlcwpN SU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgK Q29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoKVGhpcyBhZGp1c3RzIHRoZSBDb2VyY2VW aWFJTyBhbmQgQ29lcmNlVG9Eb21haW4gZXhwcmVzc2lvbiBldmFsdWF0aW9uCmNvZGUgdG8gaGFu ZGxlIGVycm9ycyBzb2Z0bHkuCgpGb3IgQ29lcmNlVmlhSW8sIHRoaXMgYWRkcyBhIG5ldyBFeHBy RXZhbFN0ZXAgb3Bjb2RlCkVFT1BfSU9DT0VSQ0VfU0FGRSwgd2hpY2ggaXMgaW1wbGVtZW50ZWQg aW4gdGhlIG5ldyBhY2NvbXBhbnlpbmcKZnVuY3Rpb24gRXhlY0V2YWxDb2VyY2VWaWFJT1NhZmUo KS4gIFRoZSBvbmx5IGRpZmZlcmVuY2UgZnJvbQpFRU9QX0lPQ09FUkNFJ3MgaW5saW5lIGltcGxl bWVudGF0aW9uIGlzIHRoYXQgdGhlIGlucHV0IGZ1bmN0aW9uCnJlY2VpdmVzIGFuIEVycm9yU2F2 ZUNvbnRleHQgdmlhIHRoZSBmdW5jdGlvbidzCkZ1bmN0aW9uQ2FsbEluZm8uY29udGV4dCwgd2hp Y2ggaXQgY2FuIHVzZSB0byBoYW5kbGUgZXJyb3JzIHNvZnRseS4KCkZvciBDb2VyY2VUb0RvbWFp biwgdGhpcyBzaW1wbHkgZW50YWlscyByZXBsYWNpbmcgdGhlIGVyZXBvcnQoKSBpbgpFeGVjRXZh bENvbnN0cmFpbnROb3ROdWxsKCkgYW5kIEV4ZWNFdmFsQ29uc3RyYWludENoZWNrKCkgYnkKZXJy c2F2ZSgpIHBhc3NpbmcgaXQgdGhlIEVycm9yU2F2ZUNvbnRleHQgcGFzc2VkIGluIHRoZSBleHBy ZXNzaW9uJ3MKRXhwckV2YWxTdGVwLgoKSW4gYm90aCBjYXNlcywgdGhlIEVycm9yU2F2ZUNvbnRl eHQgdG8gYmUgdXNlZCBpcyBwYXNzZWQgYnkgc2V0dGluZwpFeHByU3RhdGUuZXNjb250ZXh0IHRv IHBvaW50IHRvIGl0IGJlZm9yZSBjYWxsaW5nIEV4ZWNJbml0RXhwclJlYygpCm9uIHRoZSBleHBy ZXNzaW9uIHRyZWUgd2hvc2UgZXJyb3JzIGFyZSB0byBiZSBzdXBwcmVzc2VkLgoKTm90ZSB0aGF0 IG5vIGNhbGwgc2l0ZSBvZiBFeGVjSW5pdEV4cHJSZWMoKSBoYXMgYmVlbiBjaGFuZ2VkIGluIHRo aXMKY29tbWl0LCBzbyB0aGVyZSdzIG5vIGZ1bmN0aW9uYWwgY2hhbmdlLiAgVGhpcyBpcyBpbnRl bmRlZCBmb3IKaW1wbGVtZW50aW5nIG5ldyBTUUwvSlNPTiBleHByZXNzaW9uIG5vZGVzIGluIGZ1 dHVyZSBjb21taXRzLgoKUmV2aWV3ZWQtYnk6IMOBbHZhcm8gSGVycmVyYQpSZXZpZXdlZC1ieTog QW5kcmVzIEZyZXVuZApEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBK0hpd3FFNFhU ZGZiMW5XPU9qb3lfdFFTUmhZdC1xX2tiNmk1ZDR4Y0t5ckxDMU5iZ0BtYWlsLmdtYWlsLmNvbQot LS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMgICAgICAgfCAgOCArKy0KIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMgfCA3NCArKysrKysrKysrKysrKysrKysr KysrKysrKy0KIHNyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jICAgfCAgNiArKysK IHNyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfdHlwZXMuYyAgfCAgMSArCiBzcmMvaW5jbHVk ZS9leGVjdXRvci9leGVjRXhwci5oICAgICAgIHwgIDQgKysKIHNyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oICAgICAgICAgfCAgNyArKysKIDYgZmlsZXMgY2hhbmdlZCwgOTcgaW5zZXJ0aW9u cygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjRXhwci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwppbmRleCA5MWRmMjAw OWJlLi4zMTgxYjExMzZhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhw ci5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKQEAgLTE1NjAsNyArMTU2 MCwxMCBAQCBFeGVjSW5pdEV4cHJSZWMoRXhwciAqbm9kZSwgRXhwclN0YXRlICpzdGF0ZSwKIAkJ CQkgKiBXZSBkb24ndCBjaGVjayBwZXJtaXNzaW9ucyBoZXJlIGFzIGEgdHlwZSdzIGlucHV0L291 dHB1dAogCQkJCSAqIGZ1bmN0aW9uIGFyZSBhc3N1bWVkIHRvIGJlIGV4ZWN1dGFibGUgYnkgZXZl cnlvbmUuCiAJCQkJICovCi0JCQkJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX0lPQ09FUkNFOworCQkJ CWlmIChzdGF0ZS0+ZXNjb250ZXh0ID09IE5VTEwpCisJCQkJCXNjcmF0Y2gub3Bjb2RlID0gRUVP UF9JT0NPRVJDRTsKKwkJCQllbHNlCisJCQkJCXNjcmF0Y2gub3Bjb2RlID0gRUVPUF9JT0NPRVJD RV9TQUZFOwogCiAJCQkJLyogbG9va3VwIHRoZSBzb3VyY2UgdHlwZSdzIG91dHB1dCBmdW5jdGlv biAqLwogCQkJCXNjcmF0Y2guZC5pb2NvZXJjZS5maW5mb19vdXQgPSBwYWxsb2MwKHNpemVvZihG bWdySW5mbykpOwpAQCAtMTU5Niw2ICsxNTk5LDggQEAgRXhlY0luaXRFeHByUmVjKEV4cHIgKm5v ZGUsIEV4cHJTdGF0ZSAqc3RhdGUsCiAJCQkJZmNpbmZvX2luLT5hcmdzWzJdLnZhbHVlID0gSW50 MzJHZXREYXR1bSgtMSk7CiAJCQkJZmNpbmZvX2luLT5hcmdzWzJdLmlzbnVsbCA9IGZhbHNlOwog CisJCQkJZmNpbmZvX2luLT5jb250ZXh0ID0gKE5vZGUgKikgc3RhdGUtPmVzY29udGV4dDsKKwog CQkJCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsICZzY3JhdGNoKTsKIAkJCQlicmVhazsKIAkJCX0K QEAgLTMzMDMsNiArMzMwOCw3IEBAIEV4ZWNJbml0Q29lcmNlVG9Eb21haW4oRXhwckV2YWxTdGVw ICpzY3JhdGNoLCBDb2VyY2VUb0RvbWFpbiAqY3Rlc3QsCiAJLyogd2UnbGwgYWxsb2NhdGUgd29y a3NwYWNlIG9ubHkgaWYgbmVlZGVkICovCiAJc2NyYXRjaC0+ZC5kb21haW5jaGVjay5jaGVja3Zh bHVlID0gTlVMTDsKIAlzY3JhdGNoLT5kLmRvbWFpbmNoZWNrLmNoZWNrbnVsbCA9IE5VTEw7CisJ c2NyYXRjaC0+ZC5kb21haW5jaGVjay5lc2NvbnRleHQgPSBzdGF0ZS0+ZXNjb250ZXh0OwogCiAJ LyoKIAkgKiBFdmFsdWF0ZSBhcmd1bWVudCAtIGl0J3MgZmluZSB0byBkaXJlY3RseSBzdG9yZSBp dCBpbnRvIHJlc3YvcmVzbnVsbCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNFeHBySW50ZXJwLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jCmlu ZGV4IDNjMTdjYzZiMWUuLmIxN2NhYjA2YjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNFeHBySW50ZXJwLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJ bnRlcnAuYwpAQCAtNjMsNiArNjMsNyBAQAogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVTdWJwbGFu LmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1 ZGUgIm5vZGVzL21pc2Nub2Rlcy5oIgogI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgogI2lu Y2x1ZGUgInBhcnNlci9wYXJzZXRyZWUuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKQEAgLTQ1Miw2 ICs0NTMsNyBAQCBFeGVjSW50ZXJwRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByQ29udGV4dCAq ZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkKIAkJJiZDQVNFX0VFT1BfQ0FTRV9URVNUVkFMLAogCQkm JkNBU0VfRUVPUF9NQUtFX1JFQURPTkxZLAogCQkmJkNBU0VfRUVPUF9JT0NPRVJDRSwKKwkJJiZD QVNFX0VFT1BfSU9DT0VSQ0VfU0FGRSwKIAkJJiZDQVNFX0VFT1BfRElTVElOQ1QsCiAJCSYmQ0FT RV9FRU9QX05PVF9ESVNUSU5DVCwKIAkJJiZDQVNFX0VFT1BfTlVMTElGLApAQCAtMTIwNSw2ICsx MjA3LDEyIEBAIEV4ZWNJbnRlcnBFeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICpl Y29udGV4dCwgYm9vbCAqaXNudWxsKQogCQkJRUVPX05FWFQoKTsKIAkJfQogCisJCUVFT19DQVNF KEVFT1BfSU9DT0VSQ0VfU0FGRSkKKwkJeworCQkJRXhlY0V2YWxDb2VyY2VWaWFJT1NhZmUoc3Rh dGUsIG9wKTsKKwkJCUVFT19ORVhUKCk7CisJCX0KKwogCQlFRU9fQ0FTRShFRU9QX0RJU1RJTkNU KQogCQl7CiAJCQkvKgpAQCAtMjUxMCw2ICsyNTE4LDY4IEBAIEV4ZWNFdmFsUGFyYW1FeHRlcm4o RXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwgRXhwckNvbnRleHQgKmVjb250ZXh0 KQogCQkJIGVycm1zZygibm8gdmFsdWUgZm91bmQgZm9yIHBhcmFtZXRlciAlZCIsIHBhcmFtSWQp KSk7CiB9CiAKKy8qCisgKiBFdmFsdWF0ZSBhIENvZXJjZVZpYUlPIG5vZGUgaW4gc29mdC1lcnJv ciBtb2RlLgorICoKKyAqIFRoZSBzb3VyY2UgdmFsdWUgaXMgaW4gb3AncyByZXN1bHQgdmFyaWFi bGUuCisgKi8KK3ZvaWQKK0V4ZWNFdmFsQ29lcmNlVmlhSU9TYWZlKEV4cHJTdGF0ZSAqc3RhdGUs IEV4cHJFdmFsU3RlcCAqb3ApCit7CisJY2hhcgkgICAqc3RyOworCisJLyogY2FsbCBvdXRwdXQg ZnVuY3Rpb24gKHNpbWlsYXIgdG8gT3V0cHV0RnVuY3Rpb25DYWxsKSAqLworCWlmICgqb3AtPnJl c251bGwpCisJeworCQkvKiBvdXRwdXQgZnVuY3Rpb25zIGFyZSBub3QgY2FsbGVkIG9uIG51bGxz ICovCisJCXN0ciA9IE5VTEw7CisJfQorCWVsc2UKKwl7CisJCUZ1bmN0aW9uQ2FsbEluZm8gZmNp bmZvX291dDsKKworCQlmY2luZm9fb3V0ID0gb3AtPmQuaW9jb2VyY2UuZmNpbmZvX2RhdGFfb3V0 OworCQlmY2luZm9fb3V0LT5hcmdzWzBdLnZhbHVlID0gKm9wLT5yZXN2YWx1ZTsKKwkJZmNpbmZv X291dC0+YXJnc1swXS5pc251bGwgPSBmYWxzZTsKKworCQlmY2luZm9fb3V0LT5pc251bGwgPSBm YWxzZTsKKwkJc3RyID0gRGF0dW1HZXRDU3RyaW5nKEZ1bmN0aW9uQ2FsbEludm9rZShmY2luZm9f b3V0KSk7CisKKwkJLyogT3V0cHV0RnVuY3Rpb25DYWxsIGFzc3VtZXMgcmVzdWx0IGlzbid0IG51 bGwgKi8KKwkJQXNzZXJ0KCFmY2luZm9fb3V0LT5pc251bGwpOworCX0KKworCS8qIGNhbGwgaW5w dXQgZnVuY3Rpb24gKHNpbWlsYXIgdG8gSW5wdXRGdW5jdGlvbkNhbGwpICovCisJaWYgKCFvcC0+ ZC5pb2NvZXJjZS5maW5mb19pbi0+Zm5fc3RyaWN0IHx8IHN0ciAhPSBOVUxMKQorCXsKKwkJRnVu Y3Rpb25DYWxsSW5mbyBmY2luZm9faW47CisKKwkJZmNpbmZvX2luID0gb3AtPmQuaW9jb2VyY2Uu ZmNpbmZvX2RhdGFfaW47CisJCWZjaW5mb19pbi0+YXJnc1swXS52YWx1ZSA9IFBvaW50ZXJHZXRE YXR1bShzdHIpOworCQlmY2luZm9faW4tPmFyZ3NbMF0uaXNudWxsID0gKm9wLT5yZXNudWxsOwor CQkvKiBzZWNvbmQgYW5kIHRoaXJkIGFyZ3VtZW50cyBhcmUgYWxyZWFkeSBzZXQgdXAgKi8KKwor CQkvKiBFcnJvclNhdmVDb250ZXh0IG11c3QgYmUgcHJlc2VudC4gKi8KKwkJQXNzZXJ0KElzQShm Y2luZm9faW4tPmNvbnRleHQsIEVycm9yU2F2ZUNvbnRleHQpKTsKKworCQlmY2luZm9faW4tPmlz bnVsbCA9IGZhbHNlOworCQkqb3AtPnJlc3ZhbHVlID0gRnVuY3Rpb25DYWxsSW52b2tlKGZjaW5m b19pbik7CisKKwkJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQoZmNpbmZvX2luLT5jb250ZXh0KSkK KwkJeworCQkJKm9wLT5yZXNudWxsID0gdHJ1ZTsKKwkJCSpvcC0+cmVzdmFsdWUgPSAoRGF0dW0p IDA7CisJCQlyZXR1cm47CisJCX0KKworCQkvKiBTaG91bGQgZ2V0IG51bGwgcmVzdWx0IGlmIGFu ZCBvbmx5IGlmIHN0ciBpcyBOVUxMICovCisJCWlmIChzdHIgPT0gTlVMTCkKKwkJCUFzc2VydCgq b3AtPnJlc251bGwpOworCQllbHNlCisJCQlBc3NlcnQoISpvcC0+cmVzbnVsbCk7CisJfQorfQor CiAvKgogICogRXZhbHVhdGUgYSBTUUxWYWx1ZUZ1bmN0aW9uIGV4cHJlc3Npb24uCiAgKi8KQEAg LTM3MzAsNyArMzgwMCw3IEBAIHZvaWQKIEV4ZWNFdmFsQ29uc3RyYWludE5vdE51bGwoRXhwclN0 YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCkKIHsKIAlpZiAoKm9wLT5yZXNudWxsKQotCQll cmVwb3J0KEVSUk9SLAorCQllcnJzYXZlKChOb2RlICopIG9wLT5kLmRvbWFpbmNoZWNrLmVzY29u dGV4dCwKIAkJCQkoZXJyY29kZShFUlJDT0RFX05PVF9OVUxMX1ZJT0xBVElPTiksCiAJCQkJIGVy cm1zZygiZG9tYWluICVzIGRvZXMgbm90IGFsbG93IG51bGwgdmFsdWVzIiwKIAkJCQkJCWZvcm1h dF90eXBlX2JlKG9wLT5kLmRvbWFpbmNoZWNrLnJlc3VsdHR5cGUpKSwKQEAgLTM3NDUsNyArMzgx NSw3IEBAIEV4ZWNFdmFsQ29uc3RyYWludENoZWNrKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFs U3RlcCAqb3ApCiB7CiAJaWYgKCEqb3AtPmQuZG9tYWluY2hlY2suY2hlY2tudWxsICYmCiAJCSFE YXR1bUdldEJvb2woKm9wLT5kLmRvbWFpbmNoZWNrLmNoZWNrdmFsdWUpKQotCQllcmVwb3J0KEVS Uk9SLAorCQllcnJzYXZlKChOb2RlICopIG9wLT5kLmRvbWFpbmNoZWNrLmVzY29udGV4dCwKIAkJ CQkoZXJyY29kZShFUlJDT0RFX0NIRUNLX1ZJT0xBVElPTiksCiAJCQkJIGVycm1zZygidmFsdWUg Zm9yIGRvbWFpbiAlcyB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50IFwiJXNcIiIsCiAJCQkJCQlm b3JtYXRfdHlwZV9iZShvcC0+ZC5kb21haW5jaGVjay5yZXN1bHR0eXBlKSwKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jIGIvc3JjL2JhY2tlbmQvaml0L2xs dm0vbGx2bWppdF9leHByLmMKaW5kZXggMzMxNjFkODEyZi4uMDk5OTQ1MDNiMSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQv aml0L2xsdm0vbGx2bWppdF9leHByLmMKQEAgLTE0MzEsNiArMTQzMSwxMiBAQCBsbHZtX2NvbXBp bGVfZXhwcihFeHByU3RhdGUgKnN0YXRlKQogCQkJCQlicmVhazsKIAkJCQl9CiAKKwkJCWNhc2Ug RUVPUF9JT0NPRVJDRV9TQUZFOgorCQkJCWJ1aWxkX0V2YWxYRnVuYyhiLCBtb2QsICJFeGVjRXZh bENvZXJjZVZpYUlPU2FmZSIsCisJCQkJCQkJCXZfc3RhdGUsIG9wKTsKKwkJCQlMTFZNQnVpbGRC cihiLCBvcGJsb2Nrc1tvcG5vICsgMV0pOworCQkJCWJyZWFrOworCiAJCQljYXNlIEVFT1BfRElT VElOQ1Q6CiAJCQljYXNlIEVFT1BfTk9UX0RJU1RJTkNUOgogCQkJCXsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfdHlwZXMuYyBiL3NyYy9iYWNrZW5kL2ppdC9sbHZt L2xsdm1qaXRfdHlwZXMuYwppbmRleCA1MjEyZjUyOWM4Li40N2M5ZGFmNDAyIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X3R5cGVzLmMKKysrIGIvc3JjL2JhY2tlbmQv aml0L2xsdm0vbGx2bWppdF90eXBlcy5jCkBAIC0xNjIsNiArMTYyLDcgQEAgdm9pZAkgICAqcmVm ZXJlbmNlZF9mdW5jdGlvbnNbXSA9CiAJRXhlY0V2YWxSb3csCiAJRXhlY0V2YWxSb3dOb3ROdWxs LAogCUV4ZWNFdmFsUm93TnVsbCwKKwlFeGVjRXZhbENvZXJjZVZpYUlPU2FmZSwKIAlFeGVjRXZh bFNRTFZhbHVlRnVuY3Rpb24sCiAJRXhlY0V2YWxTY2FsYXJBcnJheU9wLAogCUV4ZWNFdmFsSGFz aGVkU2NhbGFyQXJyYXlPcCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNF eHByLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oCmluZGV4IGEyMGM1MzlhMjUu LmEyOGRkY2RkNzcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmgK KysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaApAQCAtMTYsNiArMTYsNyBAQAog CiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZUFnZy5oIgogI2luY2x1ZGUgIm5vZGVzL2V4ZWNub2Rl cy5oIgorI2luY2x1ZGUgIm5vZGVzL21pc2Nub2Rlcy5oIgogCiAvKiBmb3J3YXJkIHJlZmVyZW5j ZXMgdG8gYXZvaWQgY2lyY3VsYXJpdHkgKi8KIHN0cnVjdCBFeHByRXZhbFN0ZXA7CkBAIC0xNjgs NiArMTY5LDcgQEAgdHlwZWRlZiBlbnVtIEV4cHJFdmFsT3AKIAogCS8qIGV2YWx1YXRlIGFzc29y dGVkIHNwZWNpYWwtcHVycG9zZSBleHByZXNzaW9uIHR5cGVzICovCiAJRUVPUF9JT0NPRVJDRSwK KwlFRU9QX0lPQ09FUkNFX1NBRkUsCiAJRUVPUF9ESVNUSU5DVCwKIAlFRU9QX05PVF9ESVNUSU5D VCwKIAlFRU9QX05VTExJRiwKQEAgLTU0Nyw2ICs1NDksNyBAQCB0eXBlZGVmIHN0cnVjdCBFeHBy RXZhbFN0ZXAKIAkJCWJvb2wJICAgKmNoZWNrbnVsbDsKIAkJCS8qIE9JRCBvZiBkb21haW4gdHlw ZSAqLwogCQkJT2lkCQkJcmVzdWx0dHlwZTsKKwkJCUVycm9yU2F2ZUNvbnRleHQgKmVzY29udGV4 dDsKIAkJfQkJCWRvbWFpbmNoZWNrOwogCiAJCS8qIGZvciBFRU9QX0NPTlZFUlRfUk9XVFlQRSAq LwpAQCAtNzc2LDYgKzc3OSw3IEBAIGV4dGVybiB2b2lkIEV4ZWNFdmFsUGFyYW1FeGVjKEV4cHJT dGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsCiAJCQkJCQkJICBFeHByQ29udGV4dCAqZWNv bnRleHQpOwogZXh0ZXJuIHZvaWQgRXhlY0V2YWxQYXJhbUV4dGVybihFeHByU3RhdGUgKnN0YXRl LCBFeHByRXZhbFN0ZXAgKm9wLAogCQkJCQkJCQlFeHByQ29udGV4dCAqZWNvbnRleHQpOworZXh0 ZXJuIHZvaWQgRXhlY0V2YWxDb2VyY2VWaWFJT1NhZmUoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2 YWxTdGVwICpvcCk7CiBleHRlcm4gdm9pZCBFeGVjRXZhbFNRTFZhbHVlRnVuY3Rpb24oRXhwclN0 YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCk7CiBleHRlcm4gdm9pZCBFeGVjRXZhbEN1cnJl bnRPZkV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCk7CiBleHRlcm4gdm9p ZCBFeGVjRXZhbE5leHRWYWx1ZUV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpv cCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNs dWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDU2MWZkZDk4ZjEuLjQ0NGE1ZjBmZDUgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25v ZGVzL2V4ZWNub2Rlcy5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiZm1nci5oIgogI2lu Y2x1ZGUgImxpYi9pbGlzdC5oIgogI2luY2x1ZGUgImxpYi9wYWlyaW5naGVhcC5oIgorI2luY2x1 ZGUgIm5vZGVzL21pc2Nub2Rlcy5oIgogI2luY2x1ZGUgIm5vZGVzL3BhcmFtcy5oIgogI2luY2x1 ZGUgIm5vZGVzL3BsYW5ub2Rlcy5oIgogI2luY2x1ZGUgIm5vZGVzL3RpZGJpdG1hcC5oIgpAQCAt MTI5LDYgKzEzMCwxMiBAQCB0eXBlZGVmIHN0cnVjdCBFeHByU3RhdGUKIAogCURhdHVtCSAgICpp bm5lcm1vc3RfZG9tYWludmFsOwogCWJvb2wJICAgKmlubmVybW9zdF9kb21haW5udWxsOworCisJ LyoKKwkgKiBGb3IgZXhwcmVzc2lvbiBub2RlcyB0aGF0IHN1cHBvcnQgc29mdCBlcnJvcnMuICBT aG91bGQgYmUgc2V0IHRvIE5VTEwKKwkgKiBiZWZvcmUgY2FsbGluZyBFeGVjSW5pdEV4cHJSZWMo KSBpZiB0aGUgY2FsbGVyIHdhbnRzIGVycm9ycyB0aHJvd24uCisJICovCisJRXJyb3JTYXZlQ29u dGV4dCAqZXNjb250ZXh0OwogfSBFeHByU3RhdGU7CiAKIAotLSAKMi4zNS4zCgo= --000000000000aae962060f3871e9 Content-Type: application/octet-stream; name="v35-0005-Add-a-jsonpath-support-function-jspIsMutable.patch" Content-Disposition: attachment; filename="v35-0005-Add-a-jsonpath-support-function-jspIsMutable.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lrj915p24 RnJvbSBhOWFmNDM5YjUwMDFkNWRkZGJlNzJkZDAxYzk0NjBhYjk3YjY2NDE3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMTggSmFuIDIwMjQgMTc6NTc6NDYgKzA5MDAKU3ViamVjdDogW1BBVENIIHYz NSA1LzhdIEFkZCBhIGpzb25wYXRoIHN1cHBvcnQgZnVuY3Rpb24ganNwSXNNdXRhYmxlCgpUaGlz IHdpbGwgYmUgdXNlZCBpbiB0aGUgcGxhbm5lciBjaGFuZ2VzIG9mIHRoZSBzdWJzZXF1ZW50IGNv bW1pdCB0bwphZGQgU1FML0pTT04gcXVlcnkgZnVuY3Rpb25zLgoKRGlzY3Vzc2lvbjogaHR0cHM6 Ly9wb3N0Z3IuZXMvbS9DQStIaXdxRTRYVGRmYjFuVz1Pam95X3RRU1JoWXQtcV9rYjZpNWQ0eGNL eXJMQzFOYmdAbWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvZm9ybWF0 dGluZy5jIHwgIDQ0ICsrKysrCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGguYyAgIHwg MjU5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvaW5jbHVkZS91dGlscy9mb3Jt YXR0aW5nLmggICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3V0aWxzL2pzb25wYXRoLmggICAgICAg fCAgIDEgKwogNCBmaWxlcyBjaGFuZ2VkLCAzMDUgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mb3JtYXR0aW5nLmMgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvZm9ybWF0dGluZy5jCmluZGV4IDgzZTFmMTI2NWMuLjQxYmIwZTA1NDYgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mb3JtYXR0aW5nLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2Zvcm1hdHRpbmcuYwpAQCAtNDQyNiw2ICs0NDI2LDUwIEBAIHBhcnNlX2RhdGV0aW1l KHRleHQgKmRhdGVfdHh0LCB0ZXh0ICpmbXQsIE9pZCBjb2xsaWQsIGJvb2wgc3RyaWN0LAogCX0K IH0KIAorLyoKKyAqIFBhcnNlcyB0aGUgZGF0ZXRpbWUgZm9ybWF0IHN0cmluZyBpbiAnZm10X3N0 cicgYW5kIHJldHVybnMgdHJ1ZSBpZiBpdAorICogY29udGFpbnMgYSB0aW1lem9uZSBzcGVjaWZp ZXIsIGZhbHNlIGlmIG5vdC4KKyAqLworYm9vbAorZGF0ZXRpbWVfZm9ybWF0X2hhc190eihjb25z dCBjaGFyICpmbXRfc3RyKQoreworCWJvb2wJCWluY2FjaGU7CisJaW50CQkJZm10X2xlbiA9IHN0 cmxlbihmbXRfc3RyKTsKKwlpbnQJCQlyZXN1bHQ7CisJRm9ybWF0Tm9kZSAqZm9ybWF0OworCisJ aWYgKGZtdF9sZW4gPiBEQ0hfQ0FDSEVfU0laRSkKKwl7CisJCS8qCisJCSAqIEFsbG9jYXRlIG5l dyBtZW1vcnkgaWYgZm9ybWF0IHBpY3R1cmUgaXMgYmlnZ2VyIHRoYW4gc3RhdGljIGNhY2hlCisJ CSAqIGFuZCBkbyBub3QgdXNlIGNhY2hlIChjYWxsIHBhcnNlciBhbHdheXMpCisJCSAqLworCQlp bmNhY2hlID0gZmFsc2U7CisKKwkJZm9ybWF0ID0gKEZvcm1hdE5vZGUgKikgcGFsbG9jKChmbXRf bGVuICsgMSkgKiBzaXplb2YoRm9ybWF0Tm9kZSkpOworCisJCXBhcnNlX2Zvcm1hdChmb3JtYXQs IGZtdF9zdHIsIERDSF9rZXl3b3JkcywKKwkJCQkJIERDSF9zdWZmLCBEQ0hfaW5kZXgsIERDSF9G TEFHLCBOVUxMKTsKKwl9CisJZWxzZQorCXsKKwkJLyoKKwkJICogVXNlIGNhY2hlIGJ1ZmZlcnMK KwkJICovCisJCURDSENhY2hlRW50cnkgKmVudCA9IERDSF9jYWNoZV9mZXRjaChmbXRfc3RyLCBm YWxzZSk7CisKKwkJaW5jYWNoZSA9IHRydWU7CisJCWZvcm1hdCA9IGVudC0+Zm9ybWF0OworCX0K KworCXJlc3VsdCA9IERDSF9kYXRldGltZV90eXBlKGZvcm1hdCk7CisKKwlpZiAoIWluY2FjaGUp CisJCXBmcmVlKGZvcm1hdCk7CisKKwlyZXR1cm4gcmVzdWx0ICYgRENIX1pPTkVEOworfQorCiAv KgogICogZG9fdG9fdGltZXN0YW1wOiBzaGFyZWQgY29kZSBmb3IgdG9fdGltZXN0YW1wIGFuZCB0 b19kYXRlCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoLmMg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGguYwppbmRleCBkMDJjMDNlMDE0Li43Y2Vh NmFkNDVjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGguYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGguYwpAQCAtNjgsNyArNjgsOSBAQAogI2lu Y2x1ZGUgImxpYnBxL3BxZm9ybWF0LmgiCiAjaW5jbHVkZSAibm9kZXMvbWlzY25vZGVzLmgiCiAj aW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAjaW5j bHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9mb3JtYXR0aW5nLmgiCiAj aW5jbHVkZSAidXRpbHMvanNvbi5oIgogI2luY2x1ZGUgInV0aWxzL2pzb25wYXRoLmgiCiAKQEAg LTExMTAsMyArMTExMiwyNjAgQEAganNwR2V0QXJyYXlTdWJzY3JpcHQoSnNvblBhdGhJdGVtICp2 LCBKc29uUGF0aEl0ZW0gKmZyb20sIEpzb25QYXRoSXRlbSAqdG8sCiAKIAlyZXR1cm4gdHJ1ZTsK IH0KKworLyogU1FML0pTT04gZGF0YXR5cGUgc3RhdHVzOiAqLworZW51bSBKc29uUGF0aERhdGF0 eXBlU3RhdHVzCit7CisJanBkc05vbkRhdGVUaW1lLAkJCS8qIG51bGwsIGJvb2wsIG51bWVyaWMs IHN0cmluZywgYXJyYXksIG9iamVjdCAqLworCWpwZHNVbmtub3duRGF0ZVRpbWUsCQkvKiB1bmtu b3duIGRhdGV0aW1lIHR5cGUgKi8KKwlqcGRzRGF0ZVRpbWVab25lZCwJCQkvKiB0aW1ldHosIHRp bWVzdGFtcHR6ICovCisJanBkc0RhdGVUaW1lTm9uWm9uZWQsCQkvKiB0aW1lLCB0aW1lc3RhbXAs IGRhdGUgKi8KK307CisKKy8qIENvbnRleHQgZm9yIGpzcElzTXV0YWJsZVdhbGtlcigpICovCitz dHJ1Y3QgSnNvblBhdGhNdXRhYmxlQ29udGV4dAoreworCUxpc3QJICAgKnZhcm5hbWVzOwkJLyog bGlzdCBvZiB2YXJpYWJsZSBuYW1lcyAqLworCUxpc3QJICAgKnZhcmV4cHJzOwkJLyogbGlzdCBv ZiB2YXJpYWJsZSBleHByZXNzaW9ucyAqLworCWVudW0gSnNvblBhdGhEYXRhdHlwZVN0YXR1cyBj dXJyZW50OyAvKiBzdGF0dXMgb2YgQCBpdGVtICovCisJYm9vbAkJbGF4OwkJCS8qIGpzb25wYXRo IGlzIGxheCBvciBzdHJpY3QgKi8KKwlib29sCQltdXRhYmxlOwkJLyogcmVzdWx0aW5nIG11dGFi aWxpdHkgc3RhdHVzICovCit9OworCitzdGF0aWMgZW51bSBKc29uUGF0aERhdGF0eXBlU3RhdHVz IGpzcElzTXV0YWJsZVdhbGtlcihKc29uUGF0aEl0ZW0gKmpwaSwKKwkJCQkJCQkJCQkJCQkgIHN0 cnVjdCBKc29uUGF0aE11dGFibGVDb250ZXh0ICpjeHQpOworCisvKgorICogRnVuY3Rpb24gdG8g Y2hlY2sgd2hldGhlciBqc29ucGF0aCBleHByZXNzaW9uIGlzIG11dGFibGUgdG8gYmUgdXNlZCBp biB0aGUKKyAqIHBsYW5uZXIgZnVuY3Rpb24gY29udGFpbl9tdXRhYmxlX2Z1bmN0aW9ucygpLgor ICovCitib29sCitqc3BJc011dGFibGUoSnNvblBhdGggKnBhdGgsIExpc3QgKnZhcm5hbWVzLCBM aXN0ICp2YXJleHBycykKK3sKKwlzdHJ1Y3QgSnNvblBhdGhNdXRhYmxlQ29udGV4dCBjeHQ7CisJ SnNvblBhdGhJdGVtIGpwaTsKKworCWN4dC52YXJuYW1lcyA9IHZhcm5hbWVzOworCWN4dC52YXJl eHBycyA9IHZhcmV4cHJzOworCWN4dC5jdXJyZW50ID0ganBkc05vbkRhdGVUaW1lOworCWN4dC5s YXggPSAocGF0aC0+aGVhZGVyICYgSlNPTlBBVEhfTEFYKSAhPSAwOworCWN4dC5tdXRhYmxlID0g ZmFsc2U7CisKKwlqc3BJbml0KCZqcGksIHBhdGgpOworCSh2b2lkKSBqc3BJc011dGFibGVXYWxr ZXIoJmpwaSwgJmN4dCk7CisKKwlyZXR1cm4gY3h0Lm11dGFibGU7Cit9CisKKy8qCisgKiBSZWN1 cnNpdmUgd2Fsa2VyIGZvciBqc3BJc011dGFibGUoKQorICovCitzdGF0aWMgZW51bSBKc29uUGF0 aERhdGF0eXBlU3RhdHVzCitqc3BJc011dGFibGVXYWxrZXIoSnNvblBhdGhJdGVtICpqcGksIHN0 cnVjdCBKc29uUGF0aE11dGFibGVDb250ZXh0ICpjeHQpCit7CisJSnNvblBhdGhJdGVtIG5leHQ7 CisJZW51bSBKc29uUGF0aERhdGF0eXBlU3RhdHVzIHN0YXR1cyA9IGpwZHNOb25EYXRlVGltZTsK KworCXdoaWxlICghY3h0LT5tdXRhYmxlKQorCXsKKwkJSnNvblBhdGhJdGVtIGFyZzsKKwkJZW51 bSBKc29uUGF0aERhdGF0eXBlU3RhdHVzIGxlZnRTdGF0dXM7CisJCWVudW0gSnNvblBhdGhEYXRh dHlwZVN0YXR1cyByaWdodFN0YXR1czsKKworCQlzd2l0Y2ggKGpwaS0+dHlwZSkKKwkJeworCQkJ Y2FzZSBqcGlSb290OgorCQkJCUFzc2VydChzdGF0dXMgPT0ganBkc05vbkRhdGVUaW1lKTsKKwkJ CQlicmVhazsKKworCQkJY2FzZSBqcGlDdXJyZW50OgorCQkJCUFzc2VydChzdGF0dXMgPT0ganBk c05vbkRhdGVUaW1lKTsKKwkJCQlzdGF0dXMgPSBjeHQtPmN1cnJlbnQ7CisJCQkJYnJlYWs7CisK KwkJCWNhc2UganBpRmlsdGVyOgorCQkJCXsKKwkJCQkJZW51bSBKc29uUGF0aERhdGF0eXBlU3Rh dHVzIHByZXZTdGF0dXMgPSBjeHQtPmN1cnJlbnQ7CisKKwkJCQkJY3h0LT5jdXJyZW50ID0gc3Rh dHVzOworCQkJCQlqc3BHZXRBcmcoanBpLCAmYXJnKTsKKwkJCQkJanNwSXNNdXRhYmxlV2Fsa2Vy KCZhcmcsIGN4dCk7CisKKwkJCQkJY3h0LT5jdXJyZW50ID0gcHJldlN0YXR1czsKKwkJCQkJYnJl YWs7CisJCQkJfQorCisJCQljYXNlIGpwaVZhcmlhYmxlOgorCQkJCXsKKwkJCQkJaW50MzIJCWxl bjsKKwkJCQkJY29uc3QgY2hhciAqbmFtZSA9IGpzcEdldFN0cmluZyhqcGksICZsZW4pOworCQkJ CQlMaXN0Q2VsbCAgICpsYzE7CisJCQkJCUxpc3RDZWxsICAgKmxjMjsKKworCQkJCQlBc3NlcnQo c3RhdHVzID09IGpwZHNOb25EYXRlVGltZSk7CisKKwkJCQkJZm9yYm90aChsYzEsIGN4dC0+dmFy bmFtZXMsIGxjMiwgY3h0LT52YXJleHBycykKKwkJCQkJeworCQkJCQkJU3RyaW5nCSAgICp2YXJu YW1lID0gbGZpcnN0X25vZGUoU3RyaW5nLCBsYzEpOworCQkJCQkJTm9kZQkgICAqdmFyZXhwciA9 IGxmaXJzdChsYzIpOworCisJCQkJCQlpZiAoc3RybmNtcCh2YXJuYW1lLT5zdmFsLCBuYW1lLCBs ZW4pKQorCQkJCQkJCWNvbnRpbnVlOworCisJCQkJCQlzd2l0Y2ggKGV4cHJUeXBlKHZhcmV4cHIp KQorCQkJCQkJeworCQkJCQkJCWNhc2UgREFURU9JRDoKKwkJCQkJCQljYXNlIFRJTUVPSUQ6CisJ CQkJCQkJY2FzZSBUSU1FU1RBTVBPSUQ6CisJCQkJCQkJCXN0YXR1cyA9IGpwZHNEYXRlVGltZU5v blpvbmVkOworCQkJCQkJCQlicmVhazsKKworCQkJCQkJCWNhc2UgVElNRVRaT0lEOgorCQkJCQkJ CWNhc2UgVElNRVNUQU1QVFpPSUQ6CisJCQkJCQkJCXN0YXR1cyA9IGpwZHNEYXRlVGltZVpvbmVk OworCQkJCQkJCQlicmVhazsKKworCQkJCQkJCWRlZmF1bHQ6CisJCQkJCQkJCXN0YXR1cyA9IGpw ZHNOb25EYXRlVGltZTsKKwkJCQkJCQkJYnJlYWs7CisJCQkJCQl9CisKKwkJCQkJCWJyZWFrOwor CQkJCQl9CisJCQkJCWJyZWFrOworCQkJCX0KKworCQkJY2FzZSBqcGlFcXVhbDoKKwkJCWNhc2Ug anBpTm90RXF1YWw6CisJCQljYXNlIGpwaUxlc3M6CisJCQljYXNlIGpwaUdyZWF0ZXI6CisJCQlj YXNlIGpwaUxlc3NPckVxdWFsOgorCQkJY2FzZSBqcGlHcmVhdGVyT3JFcXVhbDoKKwkJCQlBc3Nl cnQoc3RhdHVzID09IGpwZHNOb25EYXRlVGltZSk7CisJCQkJanNwR2V0TGVmdEFyZyhqcGksICZh cmcpOworCQkJCWxlZnRTdGF0dXMgPSBqc3BJc011dGFibGVXYWxrZXIoJmFyZywgY3h0KTsKKwor CQkJCWpzcEdldFJpZ2h0QXJnKGpwaSwgJmFyZyk7CisJCQkJcmlnaHRTdGF0dXMgPSBqc3BJc011 dGFibGVXYWxrZXIoJmFyZywgY3h0KTsKKworCQkJCS8qCisJCQkJICogQ29tcGFyaXNvbiBvZiBk YXRldGltZSB0eXBlIHdpdGggZGlmZmVyZW50IHRpbWV6b25lIHN0YXR1cworCQkJCSAqIGlzIG11 dGFibGUuCisJCQkJICovCisJCQkJaWYgKGxlZnRTdGF0dXMgIT0ganBkc05vbkRhdGVUaW1lICYm CisJCQkJCXJpZ2h0U3RhdHVzICE9IGpwZHNOb25EYXRlVGltZSAmJgorCQkJCQkobGVmdFN0YXR1 cyA9PSBqcGRzVW5rbm93bkRhdGVUaW1lIHx8CisJCQkJCSByaWdodFN0YXR1cyA9PSBqcGRzVW5r bm93bkRhdGVUaW1lIHx8CisJCQkJCSBsZWZ0U3RhdHVzICE9IHJpZ2h0U3RhdHVzKSkKKwkJCQkJ Y3h0LT5tdXRhYmxlID0gdHJ1ZTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBqcGlOb3Q6CisJCQlj YXNlIGpwaUlzVW5rbm93bjoKKwkJCWNhc2UganBpRXhpc3RzOgorCQkJY2FzZSBqcGlQbHVzOgor CQkJY2FzZSBqcGlNaW51czoKKwkJCQlBc3NlcnQoc3RhdHVzID09IGpwZHNOb25EYXRlVGltZSk7 CisJCQkJanNwR2V0QXJnKGpwaSwgJmFyZyk7CisJCQkJanNwSXNNdXRhYmxlV2Fsa2VyKCZhcmcs IGN4dCk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UganBpQW5kOgorCQkJY2FzZSBqcGlPcjoKKwkJ CWNhc2UganBpQWRkOgorCQkJY2FzZSBqcGlTdWI6CisJCQljYXNlIGpwaU11bDoKKwkJCWNhc2Ug anBpRGl2OgorCQkJY2FzZSBqcGlNb2Q6CisJCQljYXNlIGpwaVN0YXJ0c1dpdGg6CisJCQkJQXNz ZXJ0KHN0YXR1cyA9PSBqcGRzTm9uRGF0ZVRpbWUpOworCQkJCWpzcEdldExlZnRBcmcoanBpLCAm YXJnKTsKKwkJCQlqc3BJc011dGFibGVXYWxrZXIoJmFyZywgY3h0KTsKKwkJCQlqc3BHZXRSaWdo dEFyZyhqcGksICZhcmcpOworCQkJCWpzcElzTXV0YWJsZVdhbGtlcigmYXJnLCBjeHQpOworCQkJ CWJyZWFrOworCisJCQljYXNlIGpwaUluZGV4QXJyYXk6CisJCQkJZm9yIChpbnQgaSA9IDA7IGkg PCBqcGktPmNvbnRlbnQuYXJyYXkubmVsZW1zOyBpKyspCisJCQkJeworCQkJCQlKc29uUGF0aEl0 ZW0gZnJvbTsKKwkJCQkJSnNvblBhdGhJdGVtIHRvOworCisJCQkJCWlmIChqc3BHZXRBcnJheVN1 YnNjcmlwdChqcGksICZmcm9tLCAmdG8sIGkpKQorCQkJCQkJanNwSXNNdXRhYmxlV2Fsa2VyKCZ0 bywgY3h0KTsKKworCQkJCQlqc3BJc011dGFibGVXYWxrZXIoJmZyb20sIGN4dCk7CisJCQkJfQor CQkJCS8qIEZBTExUSFJPVUdIICovCisKKwkJCWNhc2UganBpQW55QXJyYXk6CisJCQkJaWYgKCFj eHQtPmxheCkKKwkJCQkJc3RhdHVzID0ganBkc05vbkRhdGVUaW1lOworCQkJCWJyZWFrOworCisJ CQljYXNlIGpwaUFueToKKwkJCQlpZiAoanBpLT5jb250ZW50LmFueWJvdW5kcy5maXJzdCA+IDAp CisJCQkJCXN0YXR1cyA9IGpwZHNOb25EYXRlVGltZTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBq cGlEYXRldGltZToKKwkJCQlpZiAoanBpLT5jb250ZW50LmFyZykKKwkJCQl7CisJCQkJCWNoYXIJ ICAgKnRlbXBsYXRlOworCisJCQkJCWpzcEdldEFyZyhqcGksICZhcmcpOworCQkJCQlpZiAoYXJn LnR5cGUgIT0ganBpU3RyaW5nKQorCQkJCQl7CisJCQkJCQlzdGF0dXMgPSBqcGRzTm9uRGF0ZVRp bWU7CisJCQkJCQlicmVhazsJLyogdGhlcmUgd2lsbCBiZSBydW50aW1lIGVycm9yICovCisJCQkJ CX0KKworCQkJCQl0ZW1wbGF0ZSA9IGpzcEdldFN0cmluZygmYXJnLCBOVUxMKTsKKwkJCQkJaWYg KGRhdGV0aW1lX2Zvcm1hdF9oYXNfdHoodGVtcGxhdGUpKQorCQkJCQkJc3RhdHVzID0ganBkc0Rh dGVUaW1lWm9uZWQ7CisJCQkJCWVsc2UKKwkJCQkJCXN0YXR1cyA9IGpwZHNEYXRlVGltZU5vblpv bmVkOworCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQlzdGF0dXMgPSBqcGRzVW5rbm93bkRh dGVUaW1lOworCQkJCX0KKwkJCQlicmVhazsKKworCQkJY2FzZSBqcGlMaWtlUmVnZXg6CisJCQkJ QXNzZXJ0KHN0YXR1cyA9PSBqcGRzTm9uRGF0ZVRpbWUpOworCQkJCWpzcEluaXRCeUJ1ZmZlcigm YXJnLCBqcGktPmJhc2UsIGpwaS0+Y29udGVudC5saWtlX3JlZ2V4LmV4cHIpOworCQkJCWpzcElz TXV0YWJsZVdhbGtlcigmYXJnLCBjeHQpOworCQkJCWJyZWFrOworCisJCQkJLyogbGl0ZXJhbHMg Ki8KKwkJCWNhc2UganBpTnVsbDoKKwkJCWNhc2UganBpU3RyaW5nOgorCQkJY2FzZSBqcGlOdW1l cmljOgorCQkJY2FzZSBqcGlCb29sOgorCQkJCS8qIGFjY2Vzc29ycyAqLworCQkJY2FzZSBqcGlL ZXk6CisJCQljYXNlIGpwaUFueUtleToKKwkJCQkvKiBzcGVjaWFsIGl0ZW1zICovCisJCQljYXNl IGpwaVN1YnNjcmlwdDoKKwkJCWNhc2UganBpTGFzdDoKKwkJCQkvKiBpdGVtIG1ldGhvZHMgKi8K KwkJCWNhc2UganBpVHlwZToKKwkJCWNhc2UganBpU2l6ZToKKwkJCWNhc2UganBpQWJzOgorCQkJ Y2FzZSBqcGlGbG9vcjoKKwkJCWNhc2UganBpQ2VpbGluZzoKKwkJCWNhc2UganBpRG91YmxlOgor CQkJY2FzZSBqcGlLZXlWYWx1ZToKKwkJCQlzdGF0dXMgPSBqcGRzTm9uRGF0ZVRpbWU7CisJCQkJ YnJlYWs7CisJCX0KKworCQlpZiAoIWpzcEdldE5leHQoanBpLCAmbmV4dCkpCisJCQlicmVhazsK KworCQlqcGkgPSAmbmV4dDsKKwl9CisKKwlyZXR1cm4gc3RhdHVzOworfQpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvdXRpbHMvZm9ybWF0dGluZy5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvZm9ybWF0 dGluZy5oCmluZGV4IDdlYTFhNzBmNzEuLmNkZTAzMDQxNGUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3V0aWxzL2Zvcm1hdHRpbmcuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9mb3JtYXR0aW5n LmgKQEAgLTI5LDUgKzI5LDYgQEAgZXh0ZXJuIGNoYXIgKmFzY19pbml0Y2FwKGNvbnN0IGNoYXIg KmJ1ZmYsIHNpemVfdCBuYnl0ZXMpOwogZXh0ZXJuIERhdHVtIHBhcnNlX2RhdGV0aW1lKHRleHQg KmRhdGVfdHh0LCB0ZXh0ICpmbXQsIE9pZCBjb2xsaWQsIGJvb2wgc3RyaWN0LAogCQkJCQkJCU9p ZCAqdHlwaWQsIGludDMyICp0eXBtb2QsIGludCAqdHosCiAJCQkJCQkJc3RydWN0IE5vZGUgKmVz Y29udGV4dCk7CitleHRlcm4gYm9vbCBkYXRldGltZV9mb3JtYXRfaGFzX3R6KGNvbnN0IGNoYXIg KmZtdF9zdHIpOwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25w YXRoLmggYi9zcmMvaW5jbHVkZS91dGlscy9qc29ucGF0aC5oCmluZGV4IDZlYWJkY2ZiNzUuLjg5 N2RlMjFhNTEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25wYXRoLmgKKysrIGIv c3JjL2luY2x1ZGUvdXRpbHMvanNvbnBhdGguaApAQCAtMTkyLDYgKzE5Miw3IEBAIGV4dGVybiBi b29sIGpzcEdldEJvb2woSnNvblBhdGhJdGVtICp2KTsKIGV4dGVybiBjaGFyICpqc3BHZXRTdHJp bmcoSnNvblBhdGhJdGVtICp2LCBpbnQzMiAqbGVuKTsKIGV4dGVybiBib29sIGpzcEdldEFycmF5 U3Vic2NyaXB0KEpzb25QYXRoSXRlbSAqdiwgSnNvblBhdGhJdGVtICpmcm9tLAogCQkJCQkJCQkg SnNvblBhdGhJdGVtICp0bywgaW50IGkpOworZXh0ZXJuIGJvb2wganNwSXNNdXRhYmxlKEpzb25Q YXRoICpwYXRoLCBMaXN0ICp2YXJuYW1lcywgTGlzdCAqdmFyZXhwcnMpOwogCiBleHRlcm4gY29u c3QgY2hhciAqanNwT3BlcmF0aW9uTmFtZShKc29uUGF0aEl0ZW1UeXBlIHR5cGUpOwogCi0tIAoy LjM1LjMKCg== --000000000000aae962060f3871e9 Content-Type: application/octet-stream; name="v35-0002-Add-json_populate_type-with-support-for-soft-err.patch" Content-Disposition: attachment; filename="v35-0002-Add-json_populate_type-with-support-for-soft-err.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lrj915oz1 RnJvbSBhMmU2ZDY0NDJkOTgyMTI1ZWNjOTEyMWJjOGYzN2Q3MzhiYzdiMTVhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMTggSmFuIDIwMjQgMTY6MTY6NTYgKzA5MDAKU3ViamVjdDogW1BBVENIIHYz NSAyLzhdIEFkZCBqc29uX3BvcHVsYXRlX3R5cGUoKSB3aXRoIHN1cHBvcnQgZm9yIHNvZnQgZXJy b3IKIGhhbmRsaW5nCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsg Y2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpUaGUgbmV3IGZ1 bmN0aW9uIGlzIGludGVuZGVkIHRvIGV4dHJhY3QgYSB2YWx1ZSBmcm9tIGEgZ2l2ZW4ganNvbmIK dmFsdWUgcGFzc2VkIGluIGFzIGEgRGF0dW0gYW5kIHJldHVybiBhcyBhIERhdHVtIG9mIHRoZSBz cGVjaWZpZWQKdHlwZS4gIEl0cyBpbXBsZW1lbnRhdGlvbiB1c2VzIHRoZSBleGlzdGluZyBwb3B1 bGF0ZV9yZWNvcmRfZmllbGQoKSwKd2hpY2ggaGFzIGJlZW4gbW9kaWZpZWQgaGVyZSB0byBhZGQg c29mdCBoYW5kbGluZyBvZiBlcnJvcnMuCgpUaGUgY2hhbmdlcyBoZXJlIGFyZSBvbmx5IGludGVu ZGVkIHRvIHN1cHByZXNzIGVycm9ycyBpbiB0aGUgZnVuY3Rpb25zCmluIGpzb25mdW5jcy5jLCBi dXQgbm90IHRob3NlIGluIGFueSBleHRlcm5hbCBmdW5jdGlvbnMgdGhhdCB0aGUKZnVuY3Rpb25z IGluIGpzb25mdW5jcy5jIG1heSBpbiB0dXJuIGNhbGwsIHN1Y2ggYXMgdGhvc2UgaW4KYXJyYXlm dW5jcy5jLCBldGMuICBUaGUgYXNzdW1wdGlvbiBpcyB0aGF0IHRoZSB2YXJpb3VzIGNoZWNrcyBp bgpwb3B1bGF0ZV8qIGZ1bmN0aW9ucyBzaG91bGQgZW5zdXJlIHRoYXQgb25seSB2YWx1ZXMgdGhh dCBhcmUKc3RydWN0dXJhbGx5IHZhbGlkIGdldCBwYXNzZWQgdG8gdGhlIGV4dGVybmFsIGZ1bmN0 aW9ucy4KClJldmlld2VkLWJ5OiDDgWx2YXJvIEhlcnJlcmEKUmV2aWV3ZWQtYnk6IEFuZHJlcyBG cmV1bmQKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQStIaXdxRTRYVGRmYjFuVz1P am95X3RRU1JoWXQtcV9rYjZpNWQ0eGNLeXJMQzFOYmdAbWFpbC5nbWFpbC5jb20KLS0tCiBzcmMv YmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMgfCAzNzMgKysrKysrKysrKysrKysrKysrKysr KysrLS0tLS0tCiBzcmMvaW5jbHVkZS91dGlscy9qc29uZnVuY3MuaCAgICAgfCAgIDYgKwogMiBm aWxlcyBjaGFuZ2VkLCAzMDIgaW5zZXJ0aW9ucygrKSwgNzcgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25mdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2pzb25mdW5jcy5jCmluZGV4IGNhYWFmYjcyYzAuLjg3NTk5NTMwZDEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvanNvbmZ1bmNzLmMKQEAgLTI2NSw2ICsyNjUsNyBAQCB0eXBlZGVmIHN0cnVjdCBQ b3B1bGF0ZUFycmF5Q29udGV4dAogCWludAkJICAgKmRpbXM7CQkJLyogZGltZW5zaW9ucyAqLwog CWludAkJICAgKnNpemVzOwkJCS8qIGN1cnJlbnQgZGltZW5zaW9uIGNvdW50ZXJzICovCiAJaW50 CQkJbmRpbXM7CQkJLyogbnVtYmVyIG9mIGRpbWVuc2lvbnMgKi8KKwlOb2RlCSAgICplc2NvbnRl eHQ7CQkvKiBGb3Igc29mdC1lcnJvciBoYW5kbGluZyAqLwogfSBQb3B1bGF0ZUFycmF5Q29udGV4 dDsKIAogLyogc3RhdGUgZm9yIHBvcHVsYXRlX2FycmF5X2pzb24oKSAqLwpAQCAtMzg5LDcgKzM5 MCw4IEBAIHN0YXRpYyBKc29uUGFyc2VFcnJvclR5cGUgZWxlbWVudHNfYXJyYXlfZWxlbWVudF9l bmQodm9pZCAqc3RhdGUsIGJvb2wgaXNudWxsKTsKIHN0YXRpYyBKc29uUGFyc2VFcnJvclR5cGUg ZWxlbWVudHNfc2NhbGFyKHZvaWQgKnN0YXRlLCBjaGFyICp0b2tlbiwgSnNvblRva2VuVHlwZSB0 b2tlbnR5cGUpOwogCiAvKiB0dXJuIGEganNvbiBvYmplY3QgaW50byBhIGhhc2ggdGFibGUgKi8K LXN0YXRpYyBIVEFCICpnZXRfanNvbl9vYmplY3RfYXNfaGFzaChjaGFyICpqc29uLCBpbnQgbGVu LCBjb25zdCBjaGFyICpmdW5jbmFtZSk7CitzdGF0aWMgSFRBQiAqZ2V0X2pzb25fb2JqZWN0X2Fz X2hhc2goY2hhciAqanNvbiwgaW50IGxlbiwgY29uc3QgY2hhciAqZnVuY25hbWUsCisJCQkJCQkJ CQkgTm9kZSAqZXNjb250ZXh0KTsKIAogLyogc2VtYW50aWMgYWN0aW9ucyBmb3IgcG9wdWxhdGVf YXJyYXlfanNvbiAqLwogc3RhdGljIEpzb25QYXJzZUVycm9yVHlwZSBwb3B1bGF0ZV9hcnJheV9v YmplY3Rfc3RhcnQodm9pZCAqX3N0YXRlKTsKQEAgLTQzMSwzNyArNDMzLDQyIEBAIHN0YXRpYyBE YXR1bSBwb3B1bGF0ZV9yZWNvcmRfd29ya2VyKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBjb25z dCBjaGFyICpmdW5jbmFtCiAvKiBoZWxwZXIgZnVuY3Rpb25zIGZvciBwb3B1bGF0ZV9yZWNvcmRb c2V0XSAqLwogc3RhdGljIEhlYXBUdXBsZUhlYWRlciBwb3B1bGF0ZV9yZWNvcmQoVHVwbGVEZXNj IHR1cGRlc2MsIFJlY29yZElPRGF0YSAqKnJlY29yZF9wLAogCQkJCQkJCQkJICAgSGVhcFR1cGxl SGVhZGVyIGRlZmF1bHR2YWwsIE1lbW9yeUNvbnRleHQgbWN4dCwKLQkJCQkJCQkJCSAgIEpzT2Jq ZWN0ICpvYmopOworCQkJCQkJCQkJICAgSnNPYmplY3QgKm9iaiwgTm9kZSAqZXNjb250ZXh0KTsK IHN0YXRpYyB2b2lkIGdldF9yZWNvcmRfdHlwZV9mcm9tX2FyZ3VtZW50KEZ1bmN0aW9uQ2FsbElu Zm8gZmNpbmZvLAogCQkJCQkJCQkJCSAgY29uc3QgY2hhciAqZnVuY25hbWUsCiAJCQkJCQkJCQkJ ICBQb3B1bGF0ZVJlY29yZENhY2hlICpjYWNoZSk7CiBzdGF0aWMgdm9pZCBnZXRfcmVjb3JkX3R5 cGVfZnJvbV9xdWVyeShGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywKIAkJCQkJCQkJCSAgIGNvbnN0 IGNoYXIgKmZ1bmNuYW1lLAogCQkJCQkJCQkJICAgUG9wdWxhdGVSZWNvcmRDYWNoZSAqY2FjaGUp Owotc3RhdGljIHZvaWQgSnNWYWx1ZVRvSnNPYmplY3QoSnNWYWx1ZSAqanN2LCBKc09iamVjdCAq anNvKTsKK3N0YXRpYyBib29sIEpzVmFsdWVUb0pzT2JqZWN0KEpzVmFsdWUgKmpzdiwgSnNPYmpl Y3QgKmpzbywgTm9kZSAqZXNjb250ZXh0KTsKIHN0YXRpYyBEYXR1bSBwb3B1bGF0ZV9jb21wb3Np dGUoQ29tcG9zaXRlSU9EYXRhICppbywgT2lkIHR5cGlkLAogCQkJCQkJCQljb25zdCBjaGFyICpj b2xuYW1lLCBNZW1vcnlDb250ZXh0IG1jeHQsCi0JCQkJCQkJCUhlYXBUdXBsZUhlYWRlciBkZWZh dWx0dmFsLCBKc1ZhbHVlICpqc3YsIGJvb2wgaXNudWxsKTsKLXN0YXRpYyBEYXR1bSBwb3B1bGF0 ZV9zY2FsYXIoU2NhbGFySU9EYXRhICppbywgT2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QsIEpzVmFs dWUgKmpzdik7CisJCQkJCQkJCUhlYXBUdXBsZUhlYWRlciBkZWZhdWx0dmFsLCBKc1ZhbHVlICpq c3YsIGJvb2wgKmlzbnVsbCwKKwkJCQkJCQkJTm9kZSAqZXNjb250ZXh0KTsKK3N0YXRpYyBEYXR1 bSBwb3B1bGF0ZV9zY2FsYXIoU2NhbGFySU9EYXRhICppbywgT2lkIHR5cGlkLCBpbnQzMiB0eXBt b2QsIEpzVmFsdWUgKmpzdiwKKwkJCQkJCQkgYm9vbCAqaXNudWxsLCBOb2RlICplc2NvbnRleHQp Owogc3RhdGljIHZvaWQgcHJlcGFyZV9jb2x1bW5fY2FjaGUoQ29sdW1uSU9EYXRhICpjb2x1bW4s IE9pZCB0eXBpZCwgaW50MzIgdHlwbW9kLAogCQkJCQkJCQkgTWVtb3J5Q29udGV4dCBtY3h0LCBi b29sIG5lZWRfc2NhbGFyKTsKIHN0YXRpYyBEYXR1bSBwb3B1bGF0ZV9yZWNvcmRfZmllbGQoQ29s dW1uSU9EYXRhICpjb2wsIE9pZCB0eXBpZCwgaW50MzIgdHlwbW9kLAogCQkJCQkJCQkgICBjb25z dCBjaGFyICpjb2xuYW1lLCBNZW1vcnlDb250ZXh0IG1jeHQsIERhdHVtIGRlZmF1bHR2YWwsCi0J CQkJCQkJCSAgIEpzVmFsdWUgKmpzdiwgYm9vbCAqaXNudWxsKTsKKwkJCQkJCQkJICAgSnNWYWx1 ZSAqanN2LCBib29sICppc251bGwsIE5vZGUgKmVzY29udGV4dCk7CiBzdGF0aWMgUmVjb3JkSU9E YXRhICphbGxvY2F0ZV9yZWNvcmRfaW5mbyhNZW1vcnlDb250ZXh0IG1jeHQsIGludCBuY29sdW1u cyk7CiBzdGF0aWMgYm9vbCBKc09iamVjdEdldEZpZWxkKEpzT2JqZWN0ICpvYmosIGNoYXIgKmZp ZWxkLCBKc1ZhbHVlICpqc3YpOwogc3RhdGljIHZvaWQgcG9wdWxhdGVfcmVjb3Jkc2V0X3JlY29y ZChQb3B1bGF0ZVJlY29yZHNldFN0YXRlICpzdGF0ZSwgSnNPYmplY3QgKm9iaik7Ci1zdGF0aWMg dm9pZCBwb3B1bGF0ZV9hcnJheV9qc29uKFBvcHVsYXRlQXJyYXlDb250ZXh0ICpjdHgsIGNoYXIg Kmpzb24sIGludCBsZW4pOwotc3RhdGljIHZvaWQgcG9wdWxhdGVfYXJyYXlfZGltX2pzb25iKFBv cHVsYXRlQXJyYXlDb250ZXh0ICpjdHgsIEpzb25iVmFsdWUgKmpidiwKK3N0YXRpYyBib29sIHBv cHVsYXRlX2FycmF5X2pzb24oUG9wdWxhdGVBcnJheUNvbnRleHQgKmN0eCwgY2hhciAqanNvbiwg aW50IGxlbik7CitzdGF0aWMgYm9vbCBwb3B1bGF0ZV9hcnJheV9kaW1fanNvbmIoUG9wdWxhdGVB cnJheUNvbnRleHQgKmN0eCwgSnNvbmJWYWx1ZSAqamJ2LAogCQkJCQkJCQkJIGludCBuZGltKTsK IHN0YXRpYyB2b2lkIHBvcHVsYXRlX2FycmF5X3JlcG9ydF9leHBlY3RlZF9hcnJheShQb3B1bGF0 ZUFycmF5Q29udGV4dCAqY3R4LCBpbnQgbmRpbSk7Ci1zdGF0aWMgdm9pZCBwb3B1bGF0ZV9hcnJh eV9hc3NpZ25fbmRpbXMoUG9wdWxhdGVBcnJheUNvbnRleHQgKmN0eCwgaW50IG5kaW1zKTsKLXN0 YXRpYyB2b2lkIHBvcHVsYXRlX2FycmF5X2NoZWNrX2RpbWVuc2lvbihQb3B1bGF0ZUFycmF5Q29u dGV4dCAqY3R4LCBpbnQgbmRpbSk7Ci1zdGF0aWMgdm9pZCBwb3B1bGF0ZV9hcnJheV9lbGVtZW50 KFBvcHVsYXRlQXJyYXlDb250ZXh0ICpjdHgsIGludCBuZGltLCBKc1ZhbHVlICpqc3YpOworc3Rh dGljIGJvb2wgcG9wdWxhdGVfYXJyYXlfYXNzaWduX25kaW1zKFBvcHVsYXRlQXJyYXlDb250ZXh0 ICpjdHgsIGludCBuZGltcyk7CitzdGF0aWMgYm9vbCBwb3B1bGF0ZV9hcnJheV9jaGVja19kaW1l bnNpb24oUG9wdWxhdGVBcnJheUNvbnRleHQgKmN0eCwgaW50IG5kaW0pOworc3RhdGljIGJvb2wg cG9wdWxhdGVfYXJyYXlfZWxlbWVudChQb3B1bGF0ZUFycmF5Q29udGV4dCAqY3R4LCBpbnQgbmRp bSwgSnNWYWx1ZSAqanN2KTsKIHN0YXRpYyBEYXR1bSBwb3B1bGF0ZV9hcnJheShBcnJheUlPRGF0 YSAqYWlvLCBjb25zdCBjaGFyICpjb2xuYW1lLAotCQkJCQkJCU1lbW9yeUNvbnRleHQgbWN4dCwg SnNWYWx1ZSAqanN2KTsKKwkJCQkJCQlNZW1vcnlDb250ZXh0IG1jeHQsIEpzVmFsdWUgKmpzdiwK KwkJCQkJCQlib29sICppc251bGwsCisJCQkJCQkJTm9kZSAqZXNjb250ZXh0KTsKIHN0YXRpYyBE YXR1bSBwb3B1bGF0ZV9kb21haW4oRG9tYWluSU9EYXRhICppbywgT2lkIHR5cGlkLCBjb25zdCBj aGFyICpjb2xuYW1lLAotCQkJCQkJCSBNZW1vcnlDb250ZXh0IG1jeHQsIEpzVmFsdWUgKmpzdiwg Ym9vbCBpc251bGwpOworCQkJCQkJCSBNZW1vcnlDb250ZXh0IG1jeHQsIEpzVmFsdWUgKmpzdiwg Ym9vbCBpc251bGwsCisJCQkJCQkJIE5vZGUgKmVzY29udGV4dCk7CiAKIC8qIGZ1bmN0aW9ucyBz dXBwb3J0aW5nIGpzb25iX2RlbGV0ZSwganNvbmJfc2V0IGFuZCBqc29uYl9jb25jYXQgKi8KIHN0 YXRpYyBKc29uYlZhbHVlICpJdGVyYXRvckNvbmNhdChKc29uYkl0ZXJhdG9yICoqaXQxLCBKc29u Ykl0ZXJhdG9yICoqaXQyLApAQCAtMjQ4NCwxNCArMjQ5MSwxNSBAQCBwb3B1bGF0ZV9hcnJheV9y ZXBvcnRfZXhwZWN0ZWRfYXJyYXkoUG9wdWxhdGVBcnJheUNvbnRleHQgKmN0eCwgaW50IG5kaW0p CiAJaWYgKG5kaW0gPD0gMCkKIAl7CiAJCWlmIChjdHgtPmNvbG5hbWUpCi0JCQllcmVwb3J0KEVS Uk9SLAorCQkJZXJyc2F2ZShjdHgtPmVzY29udGV4dCwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9J TlZBTElEX1RFWFRfUkVQUkVTRU5UQVRJT04pLAogCQkJCQkgZXJybXNnKCJleHBlY3RlZCBKU09O IGFycmF5IiksCiAJCQkJCSBlcnJoaW50KCJTZWUgdGhlIHZhbHVlIG9mIGtleSBcIiVzXCIuIiwg Y3R4LT5jb2xuYW1lKSkpOwogCQllbHNlCi0JCQllcmVwb3J0KEVSUk9SLAorCQkJZXJyc2F2ZShj dHgtPmVzY29udGV4dCwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1RFWFRfUkVQUkVT RU5UQVRJT04pLAogCQkJCQkgZXJybXNnKCJleHBlY3RlZCBKU09OIGFycmF5IikpKTsKKwkJcmV0 dXJuOwogCX0KIAllbHNlCiAJewpAQCAtMjUwNiwyMiArMjUxNCwyOCBAQCBwb3B1bGF0ZV9hcnJh eV9yZXBvcnRfZXhwZWN0ZWRfYXJyYXkoUG9wdWxhdGVBcnJheUNvbnRleHQgKmN0eCwgaW50IG5k aW0pCiAJCQlhcHBlbmRTdHJpbmdJbmZvKCZpbmRpY2VzLCAiWyVkXSIsIGN0eC0+c2l6ZXNbaV0p OwogCiAJCWlmIChjdHgtPmNvbG5hbWUpCi0JCQllcmVwb3J0KEVSUk9SLAorCQkJZXJyc2F2ZShj dHgtPmVzY29udGV4dCwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1RFWFRfUkVQUkVT RU5UQVRJT04pLAogCQkJCQkgZXJybXNnKCJleHBlY3RlZCBKU09OIGFycmF5IiksCiAJCQkJCSBl cnJoaW50KCJTZWUgdGhlIGFycmF5IGVsZW1lbnQgJXMgb2Yga2V5IFwiJXNcIi4iLAogCQkJCQkJ CSBpbmRpY2VzLmRhdGEsIGN0eC0+Y29sbmFtZSkpKTsKIAkJZWxzZQotCQkJZXJlcG9ydChFUlJP UiwKKwkJCWVycnNhdmUoY3R4LT5lc2NvbnRleHQsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5W QUxJRF9URVhUX1JFUFJFU0VOVEFUSU9OKSwKIAkJCQkJIGVycm1zZygiZXhwZWN0ZWQgSlNPTiBh cnJheSIpLAogCQkJCQkgZXJyaGludCgiU2VlIHRoZSBhcnJheSBlbGVtZW50ICVzLiIsCiAJCQkJ CQkJIGluZGljZXMuZGF0YSkpKTsKKwkJcmV0dXJuOwogCX0KIH0KIAotLyogc2V0IHRoZSBudW1i ZXIgb2YgZGltZW5zaW9ucyBvZiB0aGUgcG9wdWxhdGVkIGFycmF5IHdoZW4gaXQgYmVjb21lcyBr bm93biAqLwotc3RhdGljIHZvaWQKKy8qCisgKiBWYWxpZGF0ZSBhbmQgc2V0IG5kaW1zIGZvciBw b3B1bGF0aW5nIGFuIGFycmF5IHdpdGggc29tZQorICogcG9wdWxhdGVfYXJyYXlfKigpIGZ1bmN0 aW9uLgorICoKKyAqIFJldHVybnMgZmFsc2UgaWYgdGhlIGlucHV0IChuZGltcykgaXMgZXJyb25l b3VzLgorICovCitzdGF0aWMgYm9vbAogcG9wdWxhdGVfYXJyYXlfYXNzaWduX25kaW1zKFBvcHVs YXRlQXJyYXlDb250ZXh0ICpjdHgsIGludCBuZGltcykKIHsKIAlpbnQJCQlpOwpAQCAtMjUyOSw3 ICsyNTQzLDEyIEBAIHBvcHVsYXRlX2FycmF5X2Fzc2lnbl9uZGltcyhQb3B1bGF0ZUFycmF5Q29u dGV4dCAqY3R4LCBpbnQgbmRpbXMpCiAJQXNzZXJ0KGN0eC0+bmRpbXMgPD0gMCk7CiAKIAlpZiAo bmRpbXMgPD0gMCkKKwl7CiAJCXBvcHVsYXRlX2FycmF5X3JlcG9ydF9leHBlY3RlZF9hcnJheShj dHgsIG5kaW1zKTsKKwkJLyogR2V0dGluZyBoZXJlIG1lYW5zIHRoZSBlcnJvciB3YXMgcmVwb3J0 ZWQgc29mdGx5LiAqLworCQlBc3NlcnQoU09GVF9FUlJPUl9PQ0NVUlJFRChjdHgtPmVzY29udGV4 dCkpOworCQlyZXR1cm4gZmFsc2U7CisJfQogCiAJY3R4LT5uZGltcyA9IG5kaW1zOwogCWN0eC0+ ZGltcyA9IHBhbGxvYyhzaXplb2YoaW50KSAqIG5kaW1zKTsKQEAgLTI1MzcsMTAgKzI1NTYsMTYg QEAgcG9wdWxhdGVfYXJyYXlfYXNzaWduX25kaW1zKFBvcHVsYXRlQXJyYXlDb250ZXh0ICpjdHgs IGludCBuZGltcykKIAogCWZvciAoaSA9IDA7IGkgPCBuZGltczsgaSsrKQogCQljdHgtPmRpbXNb aV0gPSAtMTsJCS8qIGRpbWVuc2lvbnMgYXJlIHVua25vd24geWV0ICovCisKKwlyZXR1cm4gdHJ1 ZTsKIH0KIAotLyogY2hlY2sgdGhlIHBvcHVsYXRlZCBzdWJhcnJheSBkaW1lbnNpb24gKi8KLXN0 YXRpYyB2b2lkCisvKgorICogQ2hlY2sgdGhlIHBvcHVsYXRlZCBzdWJhcnJheSBkaW1lbnNpb24K KyAqCisgKiBSZXR1cm5zIGZhbHNlIGlmIHRoZSBpbnB1dCAobmRpbXMpIGlzIGVycm9uZW91cy4K KyAqLworc3RhdGljIGJvb2wKIHBvcHVsYXRlX2FycmF5X2NoZWNrX2RpbWVuc2lvbihQb3B1bGF0 ZUFycmF5Q29udGV4dCAqY3R4LCBpbnQgbmRpbSkKIHsKIAlpbnQJCQlkaW0gPSBjdHgtPnNpemVz W25kaW1dOyAvKiBjdXJyZW50IGRpbWVuc2lvbiBjb3VudGVyICovCkBAIC0yNTQ4LDIxICsyNTcz LDMxIEBAIHBvcHVsYXRlX2FycmF5X2NoZWNrX2RpbWVuc2lvbihQb3B1bGF0ZUFycmF5Q29udGV4 dCAqY3R4LCBpbnQgbmRpbSkKIAlpZiAoY3R4LT5kaW1zW25kaW1dID09IC0xKQogCQljdHgtPmRp bXNbbmRpbV0gPSBkaW07CS8qIGFzc2lnbiBkaW1lbnNpb24gaWYgbm90IHlldCBrbm93biAqLwog CWVsc2UgaWYgKGN0eC0+ZGltc1tuZGltXSAhPSBkaW0pCi0JCWVyZXBvcnQoRVJST1IsCisJCWVy cnNhdmUoY3R4LT5lc2NvbnRleHQsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1RFWFRf UkVQUkVTRU5UQVRJT04pLAogCQkJCSBlcnJtc2coIm1hbGZvcm1lZCBKU09OIGFycmF5IiksCiAJ CQkJIGVycmRldGFpbCgiTXVsdGlkaW1lbnNpb25hbCBhcnJheXMgbXVzdCBoYXZlICIKIAkJCQkJ CSAgICJzdWItYXJyYXlzIHdpdGggbWF0Y2hpbmcgZGltZW5zaW9ucy4iKSkpOwogCisJLyogTm90 aGluZyB0byBkbyBvbiBhbiBlcnJvci4gKi8KKwlpZiAoU09GVF9FUlJPUl9PQ0NVUlJFRChjdHgt PmVzY29udGV4dCkpCisJCXJldHVybiBmYWxzZTsKKwogCS8qIHJlc2V0IHRoZSBjdXJyZW50IGFy cmF5IGRpbWVuc2lvbiBzaXplIGNvdW50ZXIgKi8KIAljdHgtPnNpemVzW25kaW1dID0gMDsKIAog CS8qIGluY3JlbWVudCB0aGUgcGFyZW50IGRpbWVuc2lvbiBjb3VudGVyIGlmIGl0IGlzIGEgbmVz dGVkIHN1Yi1hcnJheSAqLwogCWlmIChuZGltID4gMCkKIAkJY3R4LT5zaXplc1tuZGltIC0gMV0r KzsKKworCXJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZAorLyoKKyAqIFJldHVybnMgdHJ1 ZSBpZiB0aGUgYXJyYXkgZWxlbWVudCB2YWx1ZSB3YXMgc3VjY2Vzc2Z1bGx5IGV4dHJhY3RlZCBm cm9tIGpzdgorICogYW5kIGFkZGVkIHRvIGN0eC0+YXN0YXRlLiAgRmFsc2UgaWYgYW4gZXJyb3Ig b2NjdXJyZWQgd2hlbiBkb2luZyBzby4KKyAqLworc3RhdGljIGJvb2wKIHBvcHVsYXRlX2FycmF5 X2VsZW1lbnQoUG9wdWxhdGVBcnJheUNvbnRleHQgKmN0eCwgaW50IG5kaW0sIEpzVmFsdWUgKmpz dikKIHsKIAlEYXR1bQkJZWxlbWVudDsKQEAgLTI1NzMsMTMgKzI2MDgsMTggQEAgcG9wdWxhdGVf YXJyYXlfZWxlbWVudChQb3B1bGF0ZUFycmF5Q29udGV4dCAqY3R4LCBpbnQgbmRpbSwgSnNWYWx1 ZSAqanN2KQogCQkJCQkJCQkJY3R4LT5haW8tPmVsZW1lbnRfdHlwZSwKIAkJCQkJCQkJCWN0eC0+ YWlvLT5lbGVtZW50X3R5cG1vZCwKIAkJCQkJCQkJCU5VTEwsIGN0eC0+bWN4dCwgUG9pbnRlckdl dERhdHVtKE5VTEwpLAotCQkJCQkJCQkJanN2LCAmZWxlbWVudF9pc251bGwpOworCQkJCQkJCQkJ anN2LCAmZWxlbWVudF9pc251bGwsIGN0eC0+ZXNjb250ZXh0KTsKKwkvKiBOb3RoaW5nIHRvIGRv IG9uIGFuIGVycm9yLiAqLworCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVEKGN0eC0+ZXNjb250ZXh0 KSkKKwkJcmV0dXJuIGZhbHNlOwogCiAJYWNjdW1BcnJheVJlc3VsdChjdHgtPmFzdGF0ZSwgZWxl bWVudCwgZWxlbWVudF9pc251bGwsCiAJCQkJCSBjdHgtPmFpby0+ZWxlbWVudF90eXBlLCBjdHgt PmFjeHQpOwogCiAJQXNzZXJ0KG5kaW0gPiAwKTsKIAljdHgtPnNpemVzW25kaW0gLSAxXSsrOwkJ LyogaW5jcmVtZW50IGN1cnJlbnQgZGltZW5zaW9uIGNvdW50ZXIgKi8KKworCXJldHVybiB0cnVl OwogfQogCiAvKiBqc29uIG9iamVjdCBzdGFydCBoYW5kbGVyIGZvciBwb3B1bGF0ZV9hcnJheV9q c29uKCkgKi8KQEAgLTI1OTAsOSArMjYzMCwxNyBAQCBwb3B1bGF0ZV9hcnJheV9vYmplY3Rfc3Rh cnQodm9pZCAqX3N0YXRlKQogCWludAkJCW5kaW0gPSBzdGF0ZS0+bGV4LT5sZXhfbGV2ZWw7CiAK IAlpZiAoc3RhdGUtPmN0eC0+bmRpbXMgPD0gMCkKLQkJcG9wdWxhdGVfYXJyYXlfYXNzaWduX25k aW1zKHN0YXRlLT5jdHgsIG5kaW0pOworCXsKKwkJaWYgKCFwb3B1bGF0ZV9hcnJheV9hc3NpZ25f bmRpbXMoc3RhdGUtPmN0eCwgbmRpbSkpCisJCQlyZXR1cm4gSlNPTl9TRU1fQUNUSU9OX0ZBSUxF RDsKKwl9CiAJZWxzZSBpZiAobmRpbSA8IHN0YXRlLT5jdHgtPm5kaW1zKQorCXsKIAkJcG9wdWxh dGVfYXJyYXlfcmVwb3J0X2V4cGVjdGVkX2FycmF5KHN0YXRlLT5jdHgsIG5kaW0pOworCQkvKiBH ZXR0aW5nIGhlcmUgbWVhbnMgdGhlIGVycm9yIHdhcyByZXBvcnRlZCBzb2Z0bHkuICovCisJCUFz c2VydChTT0ZUX0VSUk9SX09DQ1VSUkVEKHN0YXRlLT5jdHgtPmVzY29udGV4dCkpOworCQlyZXR1 cm4gSlNPTl9TRU1fQUNUSU9OX0ZBSUxFRDsKKwl9CiAKIAlyZXR1cm4gSlNPTl9TVUNDRVNTOwog fQpAQCAtMjYwNiwxMCArMjY1NCwxNyBAQCBwb3B1bGF0ZV9hcnJheV9hcnJheV9lbmQodm9pZCAq X3N0YXRlKQogCWludAkJCW5kaW0gPSBzdGF0ZS0+bGV4LT5sZXhfbGV2ZWw7CiAKIAlpZiAoY3R4 LT5uZGltcyA8PSAwKQotCQlwb3B1bGF0ZV9hcnJheV9hc3NpZ25fbmRpbXMoY3R4LCBuZGltICsg MSk7CisJeworCQlpZiAoIXBvcHVsYXRlX2FycmF5X2Fzc2lnbl9uZGltcyhjdHgsIG5kaW0gKyAx KSkKKwkJCXJldHVybiBKU09OX1NFTV9BQ1RJT05fRkFJTEVEOworCX0KIAogCWlmIChuZGltIDwg Y3R4LT5uZGltcykKLQkJcG9wdWxhdGVfYXJyYXlfY2hlY2tfZGltZW5zaW9uKGN0eCwgbmRpbSk7 CisJeworCQkvKiBSZXBvcnQgaWYgYW4gZXJyb3Igb2NjdXJyZWQuICovCisJCWlmICghcG9wdWxh dGVfYXJyYXlfY2hlY2tfZGltZW5zaW9uKGN0eCwgbmRpbSkpCisJCQlyZXR1cm4gSlNPTl9TRU1f QUNUSU9OX0ZBSUxFRDsKKwl9CiAKIAlyZXR1cm4gSlNPTl9TVUNDRVNTOwogfQpAQCAtMjY2Nyw3 ICsyNzIyLDkgQEAgcG9wdWxhdGVfYXJyYXlfZWxlbWVudF9lbmQodm9pZCAqX3N0YXRlLCBib29s IGlzbnVsbCkKIAkJCQkJCQkJc3RhdGUtPmVsZW1lbnRfc3RhcnQpICogc2l6ZW9mKGNoYXIpOwog CQl9CiAKLQkJcG9wdWxhdGVfYXJyYXlfZWxlbWVudChjdHgsIG5kaW0sICZqc3YpOworCQkvKiBS ZXBvcnQgaWYgYW4gZXJyb3Igb2NjdXJyZWQuICovCisJCWlmICghcG9wdWxhdGVfYXJyYXlfZWxl bWVudChjdHgsIG5kaW0sICZqc3YpKQorCQkJcmV0dXJuIEpTT05fU0VNX0FDVElPTl9GQUlMRUQ7 CiAJfQogCiAJcmV0dXJuIEpTT05fU1VDQ0VTUzsKQEAgLTI2ODIsOSArMjczOSwxNyBAQCBwb3B1 bGF0ZV9hcnJheV9zY2FsYXIodm9pZCAqX3N0YXRlLCBjaGFyICp0b2tlbiwgSnNvblRva2VuVHlw ZSB0b2tlbnR5cGUpCiAJaW50CQkJbmRpbSA9IHN0YXRlLT5sZXgtPmxleF9sZXZlbDsKIAogCWlm IChjdHgtPm5kaW1zIDw9IDApCi0JCXBvcHVsYXRlX2FycmF5X2Fzc2lnbl9uZGltcyhjdHgsIG5k aW0pOworCXsKKwkJaWYgKCFwb3B1bGF0ZV9hcnJheV9hc3NpZ25fbmRpbXMoY3R4LCBuZGltKSkK KwkJCXJldHVybiBKU09OX1NFTV9BQ1RJT05fRkFJTEVEOworCX0KIAllbHNlIGlmIChuZGltIDwg Y3R4LT5uZGltcykKKwl7CiAJCXBvcHVsYXRlX2FycmF5X3JlcG9ydF9leHBlY3RlZF9hcnJheShj dHgsIG5kaW0pOworCQkvKiBHZXR0aW5nIGhlcmUgbWVhbnMgdGhlIGVycm9yIHdhcyByZXBvcnRl ZCBzb2Z0bHkuICovCisJCUFzc2VydChTT0ZUX0VSUk9SX09DQ1VSUkVEKGN0eC0+ZXNjb250ZXh0 KSk7CisJCXJldHVybiBKU09OX1NFTV9BQ1RJT05fRkFJTEVEOworCX0KIAogCWlmIChuZGltID09 IGN0eC0+bmRpbXMpCiAJewpAQCAtMjY5Nyw4ICsyNzYyLDEyIEBAIHBvcHVsYXRlX2FycmF5X3Nj YWxhcih2b2lkICpfc3RhdGUsIGNoYXIgKnRva2VuLCBKc29uVG9rZW5UeXBlIHRva2VudHlwZSkK IAlyZXR1cm4gSlNPTl9TVUNDRVNTOwogfQogCi0vKiBwYXJzZSBhIGpzb24gYXJyYXkgYW5kIHBv cHVsYXRlIGFycmF5ICovCi1zdGF0aWMgdm9pZAorLyoKKyAqIFBhcnNlIGEganNvbiBhcnJheSBh bmQgcG9wdWxhdGUgYXJyYXkKKyAqCisgKiBSZXR1cm5zIGZhbHNlIGlmIGFuIGVycm9yIG9jY3Vy cyB3aGVuIHBhcnNpbmcuCisgKi8KK3N0YXRpYyBib29sCiBwb3B1bGF0ZV9hcnJheV9qc29uKFBv cHVsYXRlQXJyYXlDb250ZXh0ICpjdHgsIGNoYXIgKmpzb24sIGludCBsZW4pCiB7CiAJUG9wdWxh dGVBcnJheVN0YXRlIHN0YXRlOwpAQCAtMjcxNiwxOSArMjc4NSwyNSBAQCBwb3B1bGF0ZV9hcnJh eV9qc29uKFBvcHVsYXRlQXJyYXlDb250ZXh0ICpjdHgsIGNoYXIgKmpzb24sIGludCBsZW4pCiAJ c2VtLmFycmF5X2VsZW1lbnRfZW5kID0gcG9wdWxhdGVfYXJyYXlfZWxlbWVudF9lbmQ7CiAJc2Vt LnNjYWxhciA9IHBvcHVsYXRlX2FycmF5X3NjYWxhcjsKIAotCXBnX3BhcnNlX2pzb25fb3JfZXJl cG9ydChzdGF0ZS5sZXgsICZzZW0pOwotCi0JLyogbnVtYmVyIG9mIGRpbWVuc2lvbnMgc2hvdWxk IGJlIGFscmVhZHkga25vd24gKi8KLQlBc3NlcnQoY3R4LT5uZGltcyA+IDAgJiYgY3R4LT5kaW1z KTsKKwlpZiAocGdfcGFyc2VfanNvbl9vcl9lcnJzYXZlKHN0YXRlLmxleCwgJnNlbSwgY3R4LT5l c2NvbnRleHQpKQorCXsKKwkJLyogbnVtYmVyIG9mIGRpbWVuc2lvbnMgc2hvdWxkIGJlIGFscmVh ZHkga25vd24gKi8KKwkJQXNzZXJ0KGN0eC0+bmRpbXMgPiAwICYmIGN0eC0+ZGltcyk7CisJfQog CiAJZnJlZUpzb25MZXhDb250ZXh0KHN0YXRlLmxleCk7CisKKwlyZXR1cm4gIVNPRlRfRVJST1Jf T0NDVVJSRUQoY3R4LT5lc2NvbnRleHQpOwogfQogCiAvKgogICogcG9wdWxhdGVfYXJyYXlfZGlt X2pzb25iKCkgLS0gSXRlcmF0ZSByZWN1cnNpdmVseSB0aHJvdWdoIGpzb25iIHN1Yi1hcnJheQog ICoJCWVsZW1lbnRzIGFuZCBhY2N1bXVsYXRlIHJlc3VsdCB1c2luZyBnaXZlbiBBcnJheUJ1aWxk U3RhdGUuCisgKgorICogUmV0dXJucyBmYWxzZSBpZiB3ZSByZXR1cm4gcGFydHdheSB0aHJvdWdo IGJlY2F1c2Ugb2YgYW4gZXJyb3IgaW4gYQorICogc3Vicm91dGluZS4KICAqLwotc3RhdGljIHZv aWQKK3N0YXRpYyBib29sCiBwb3B1bGF0ZV9hcnJheV9kaW1fanNvbmIoUG9wdWxhdGVBcnJheUNv bnRleHQgKmN0eCwgLyogY29udGV4dCAqLwogCQkJCQkJIEpzb25iVmFsdWUgKmpidiwJLyoganNv bmIgc3ViLWFycmF5ICovCiAJCQkJCQkgaW50IG5kaW0pCS8qIGN1cnJlbnQgZGltZW5zaW9uICov CkBAIC0yNzQxLDEwICsyODE2LDE0IEBAIHBvcHVsYXRlX2FycmF5X2RpbV9qc29uYihQb3B1bGF0 ZUFycmF5Q29udGV4dCAqY3R4LCAvKiBjb250ZXh0ICovCiAKIAljaGVja19zdGFja19kZXB0aCgp OwogCi0JaWYgKGpidi0+dHlwZSAhPSBqYnZCaW5hcnkgfHwgIUpzb25Db250YWluZXJJc0FycmF5 KGpiYykpCisJaWYgKGpidi0+dHlwZSAhPSBqYnZCaW5hcnkgfHwgIUpzb25Db250YWluZXJJc0Fy cmF5KGpiYykgfHwKKwkJSnNvbkNvbnRhaW5lcklzU2NhbGFyKGpiYykpCisJewogCQlwb3B1bGF0 ZV9hcnJheV9yZXBvcnRfZXhwZWN0ZWRfYXJyYXkoY3R4LCBuZGltIC0gMSk7Ci0KLQlBc3NlcnQo IUpzb25Db250YWluZXJJc1NjYWxhcihqYmMpKTsKKwkJLyogR2V0dGluZyBoZXJlIG1lYW5zIHRo ZSBlcnJvciB3YXMgcmVwb3J0ZWQgc29mdGx5LiAqLworCQlBc3NlcnQoU09GVF9FUlJPUl9PQ0NV UlJFRChjdHgtPmVzY29udGV4dCkpOworCQlyZXR1cm4gZmFsc2U7CisJfQogCiAJaXQgPSBKc29u Ykl0ZXJhdG9ySW5pdChqYmMpOwogCkBAIC0yNzYzLDcgKzI4NDIsMTAgQEAgcG9wdWxhdGVfYXJy YXlfZGltX2pzb25iKFBvcHVsYXRlQXJyYXlDb250ZXh0ICpjdHgsIC8qIGNvbnRleHQgKi8KIAkJ ICh0b2sgPT0gV0pCX0VMRU0gJiYKIAkJICAodmFsLnR5cGUgIT0gamJ2QmluYXJ5IHx8CiAJCSAg ICFKc29uQ29udGFpbmVySXNBcnJheSh2YWwudmFsLmJpbmFyeS5kYXRhKSkpKSkKLQkJcG9wdWxh dGVfYXJyYXlfYXNzaWduX25kaW1zKGN0eCwgbmRpbSk7CisJeworCQlpZiAoIXBvcHVsYXRlX2Fy cmF5X2Fzc2lnbl9uZGltcyhjdHgsIG5kaW0pKQorCQkJcmV0dXJuIGZhbHNlOworCX0KIAogCWpz di5pc19qc29uID0gZmFsc2U7CiAJanN2LnZhbC5qc29uYiA9ICZ2YWw7CkBAIC0yNzc2LDE2ICsy ODU4LDIxIEBAIHBvcHVsYXRlX2FycmF5X2RpbV9qc29uYihQb3B1bGF0ZUFycmF5Q29udGV4dCAq Y3R4LCAvKiBjb250ZXh0ICovCiAJCSAqIGl0IGlzIG5vdCB0aGUgaW5uZXJtb3N0IGRpbWVuc2lv bi4KIAkJICovCiAJCWlmIChjdHgtPm5kaW1zID4gMCAmJiBuZGltID49IGN0eC0+bmRpbXMpCi0J CQlwb3B1bGF0ZV9hcnJheV9lbGVtZW50KGN0eCwgbmRpbSwgJmpzdik7CisJCXsKKwkJCWlmICgh cG9wdWxhdGVfYXJyYXlfZWxlbWVudChjdHgsIG5kaW0sICZqc3YpKQorCQkJCXJldHVybiBmYWxz ZTsKKwkJfQogCQllbHNlCiAJCXsKIAkJCS8qIHBvcHVsYXRlIGNoaWxkIHN1Yi1hcnJheSAqLwot CQkJcG9wdWxhdGVfYXJyYXlfZGltX2pzb25iKGN0eCwgJnZhbCwgbmRpbSArIDEpOworCQkJaWYg KCFwb3B1bGF0ZV9hcnJheV9kaW1fanNvbmIoY3R4LCAmdmFsLCBuZGltICsgMSkpCisJCQkJcmV0 dXJuIGZhbHNlOwogCiAJCQkvKiBudW1iZXIgb2YgZGltZW5zaW9ucyBzaG91bGQgYmUgYWxyZWFk eSBrbm93biAqLwogCQkJQXNzZXJ0KGN0eC0+bmRpbXMgPiAwICYmIGN0eC0+ZGltcyk7CiAKLQkJ CXBvcHVsYXRlX2FycmF5X2NoZWNrX2RpbWVuc2lvbihjdHgsIG5kaW0pOworCQkJaWYgKCFwb3B1 bGF0ZV9hcnJheV9jaGVja19kaW1lbnNpb24oY3R4LCBuZGltKSkKKwkJCQlyZXR1cm4gZmFsc2U7 CiAJCX0KIAogCQl0b2sgPSBKc29uYkl0ZXJhdG9yTmV4dCgmaXQsICZ2YWwsIHRydWUpOwpAQCAt Mjc5NiwxNCArMjg4MywyMiBAQCBwb3B1bGF0ZV9hcnJheV9kaW1fanNvbmIoUG9wdWxhdGVBcnJh eUNvbnRleHQgKmN0eCwgLyogY29udGV4dCAqLwogCS8qIGZyZWUgaXRlcmF0b3IsIGl0ZXJhdGlu ZyB1bnRpbCBXSkJfRE9ORSAqLwogCXRvayA9IEpzb25iSXRlcmF0b3JOZXh0KCZpdCwgJnZhbCwg dHJ1ZSk7CiAJQXNzZXJ0KHRvayA9PSBXSkJfRE9ORSAmJiAhaXQpOworCisJcmV0dXJuIHRydWU7 CiB9CiAKLS8qIHJlY3Vyc2l2ZWx5IHBvcHVsYXRlIGFuIGFycmF5IGZyb20ganNvbi9qc29uYiAq LworLyoKKyAqIFJlY3Vyc2l2ZWx5IHBvcHVsYXRlIGFuIGFycmF5IGZyb20ganNvbi9qc29uYgor ICoKKyAqICppc251bGwgaXMgc2V0IHRvIHRydWUgaWYgYW4gZXJyb3IgaXMgcmVwb3J0ZWQgZHVy aW5nIHBhcnNpbmcuCisgKi8KIHN0YXRpYyBEYXR1bQogcG9wdWxhdGVfYXJyYXkoQXJyYXlJT0Rh dGEgKmFpbywKIAkJCSAgIGNvbnN0IGNoYXIgKmNvbG5hbWUsCiAJCQkgICBNZW1vcnlDb250ZXh0 IG1jeHQsCi0JCQkgICBKc1ZhbHVlICpqc3YpCisJCQkgICBKc1ZhbHVlICpqc3YsCisJCQkgICBi b29sICppc251bGwsCisJCQkgICBOb2RlICplc2NvbnRleHQpCiB7CiAJUG9wdWxhdGVBcnJheUNv bnRleHQgY3R4OwogCURhdHVtCQlyZXN1bHQ7CkBAIC0yODE4LDE0ICsyOTEzLDI3IEBAIHBvcHVs YXRlX2FycmF5KEFycmF5SU9EYXRhICphaW8sCiAJY3R4Lm5kaW1zID0gMDsJCQkJLyogdW5rbm93 biB5ZXQgKi8KIAljdHguZGltcyA9IE5VTEw7CiAJY3R4LnNpemVzID0gTlVMTDsKKwljdHguZXNj b250ZXh0ID0gZXNjb250ZXh0OwogCiAJaWYgKGpzdi0+aXNfanNvbikKLQkJcG9wdWxhdGVfYXJy YXlfanNvbigmY3R4LCBqc3YtPnZhbC5qc29uLnN0ciwKLQkJCQkJCQlqc3YtPnZhbC5qc29uLmxl biA+PSAwID8ganN2LT52YWwuanNvbi5sZW4KLQkJCQkJCQk6IHN0cmxlbihqc3YtPnZhbC5qc29u LnN0cikpOworCXsKKwkJLyogUmV0dXJuIG51bGwgaWYgYW4gZXJyb3Igd2FzIGZvdW5kLiAqLwor CQlpZiAoIXBvcHVsYXRlX2FycmF5X2pzb24oJmN0eCwganN2LT52YWwuanNvbi5zdHIsCisJCQkJ CQkJCSBqc3YtPnZhbC5qc29uLmxlbiA+PSAwID8ganN2LT52YWwuanNvbi5sZW4KKwkJCQkJCQkJ IDogc3RybGVuKGpzdi0+dmFsLmpzb24uc3RyKSkpCisJCXsKKwkJCSppc251bGwgPSB0cnVlOwor CQkJcmV0dXJuIChEYXR1bSkgMDsKKwkJfQorCX0KIAllbHNlCiAJewotCQlwb3B1bGF0ZV9hcnJh eV9kaW1fanNvbmIoJmN0eCwganN2LT52YWwuanNvbmIsIDEpOworCQkvKiBSZXR1cm4gbnVsbCBp ZiBhbiBlcnJvciB3YXMgZm91bmQuICovCisJCWlmICghcG9wdWxhdGVfYXJyYXlfZGltX2pzb25i KCZjdHgsIGpzdi0+dmFsLmpzb25iLCAxKSkKKwkJeworCQkJKmlzbnVsbCA9IHRydWU7CisJCQly ZXR1cm4gKERhdHVtKSAwOworCQl9CiAJCWN0eC5kaW1zWzBdID0gY3R4LnNpemVzWzBdOwogCX0K IApAQCAtMjg0MywxMSArMjk1MSwxNiBAQCBwb3B1bGF0ZV9hcnJheShBcnJheUlPRGF0YSAqYWlv LAogCXBmcmVlKGN0eC5zaXplcyk7CiAJcGZyZWUobGJzKTsKIAorCSppc251bGwgPSBmYWxzZTsK IAlyZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgdm9pZAotSnNWYWx1ZVRvSnNPYmplY3QoSnNW YWx1ZSAqanN2LCBKc09iamVjdCAqanNvKQorLyoKKyAqIFJldHVybnMgZmFsc2UgaWYgYW4gZXJy b3Igb2NjdXJzLCBwcm92aWRlZCBlc2NvbnRleHQgcG9pbnRzIHRvIGFuCisgKiBFcnJvclNhdmVD b250ZXh0LgorICovCitzdGF0aWMgYm9vbAorSnNWYWx1ZVRvSnNPYmplY3QoSnNWYWx1ZSAqanN2 LCBKc09iamVjdCAqanNvLCBOb2RlICplc2NvbnRleHQpCiB7CiAJanNvLT5pc19qc29uID0ganN2 LT5pc19qc29uOwogCkBAIC0yODU5LDcgKzI5NzIsOSBAQCBKc1ZhbHVlVG9Kc09iamVjdChKc1Zh bHVlICpqc3YsIEpzT2JqZWN0ICpqc28pCiAJCQkJCQkJCQlqc3YtPnZhbC5qc29uLmxlbiA+PSAw CiAJCQkJCQkJCQk/IGpzdi0+dmFsLmpzb24ubGVuCiAJCQkJCQkJCQk6IHN0cmxlbihqc3YtPnZh bC5qc29uLnN0ciksCi0JCQkJCQkJCQkicG9wdWxhdGVfY29tcG9zaXRlIik7CisJCQkJCQkJCQki cG9wdWxhdGVfY29tcG9zaXRlIiwKKwkJCQkJCQkJCWVzY29udGV4dCk7CisJCUFzc2VydChqc28t PnZhbC5qc29uX2hhc2ggIT0gTlVMTCB8fCBTT0ZUX0VSUk9SX09DQ1VSUkVEKGVzY29udGV4dCkp OwogCX0KIAllbHNlCiAJewpAQCAtMjg3Nyw3ICsyOTkyLDcgQEAgSnNWYWx1ZVRvSnNPYmplY3Qo SnNWYWx1ZSAqanN2LCBKc09iamVjdCAqanNvKQogCQkJaXNfc2NhbGFyID0gSXNBSnNvbmJTY2Fs YXIoamJ2KSB8fAogCQkJCShqYnYtPnR5cGUgPT0gamJ2QmluYXJ5ICYmCiAJCQkJIEpzb25Db250 YWluZXJJc1NjYWxhcihqYnYtPnZhbC5iaW5hcnkuZGF0YSkpOwotCQkJZXJlcG9ydChFUlJPUiwK KwkJCWVycnNhdmUoZXNjb250ZXh0LAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFS QU1FVEVSX1ZBTFVFKSwKIAkJCQkJIGlzX3NjYWxhcgogCQkJCQkgPyBlcnJtc2coImNhbm5vdCBj YWxsICVzIG9uIGEgc2NhbGFyIiwKQEAgLTI4ODYsNiArMzAwMSw4IEBAIEpzVmFsdWVUb0pzT2Jq ZWN0KEpzVmFsdWUgKmpzdiwgSnNPYmplY3QgKmpzbykKIAkJCQkJCQkgICJwb3B1bGF0ZV9jb21w b3NpdGUiKSkpOwogCQl9CiAJfQorCisJcmV0dXJuICFTT0ZUX0VSUk9SX09DQ1VSUkVEKGVzY29u dGV4dCk7CiB9CiAKIC8qIGFjcXVpcmUgb3IgdXBkYXRlIGNhY2hlZCB0dXBsZSBkZXNjcmlwdG9y IGZvciBhIGNvbXBvc2l0ZSB0eXBlICovCkBAIC0yOTEyLDcgKzMwMjksMTIgQEAgdXBkYXRlX2Nh Y2hlZF90dXBkZXNjKENvbXBvc2l0ZUlPRGF0YSAqaW8sIE1lbW9yeUNvbnRleHQgbWN4dCkKIAl9 CiB9CiAKLS8qIHJlY3Vyc2l2ZWx5IHBvcHVsYXRlIGEgY29tcG9zaXRlIChyb3cgdHlwZSkgdmFs dWUgZnJvbSBqc29uL2pzb25iICovCisvKgorICogUmVjdXJzaXZlbHkgcG9wdWxhdGUgYSBjb21w b3NpdGUgKHJvdyB0eXBlKSB2YWx1ZSBmcm9tIGpzb24vanNvbmIKKyAqCisgKiBSZXR1cm5zIG51 bGwgaWYgYW4gZXJyb3Igb2NjdXJzIGluIGEgc3Vicm91dGluZSwgcHJvdmlkZWQgZXNjb250ZXh0 IHBvaW50cworICogdG8gYW4gRXJyb3JTYXZlQ29udGV4dC4KKyAqLwogc3RhdGljIERhdHVtCiBw b3B1bGF0ZV9jb21wb3NpdGUoQ29tcG9zaXRlSU9EYXRhICppbywKIAkJCQkgICBPaWQgdHlwaWQs CkBAIC0yOTIwLDE0ICszMDQyLDE1IEBAIHBvcHVsYXRlX2NvbXBvc2l0ZShDb21wb3NpdGVJT0Rh dGEgKmlvLAogCQkJCSAgIE1lbW9yeUNvbnRleHQgbWN4dCwKIAkJCQkgICBIZWFwVHVwbGVIZWFk ZXIgZGVmYXVsdHZhbCwKIAkJCQkgICBKc1ZhbHVlICpqc3YsCi0JCQkJICAgYm9vbCBpc251bGwp CisJCQkJICAgYm9vbCAqaXNudWxsLAorCQkJCSAgIE5vZGUgKmVzY29udGV4dCkKIHsKIAlEYXR1 bQkJcmVzdWx0OwogCiAJLyogYWNxdWlyZS91cGRhdGUgY2FjaGVkIHR1cGxlIGRlc2NyaXB0b3Ig Ki8KIAl1cGRhdGVfY2FjaGVkX3R1cGRlc2MoaW8sIG1jeHQpOwogCi0JaWYgKGlzbnVsbCkKKwlp ZiAoKmlzbnVsbCkKIAkJcmVzdWx0ID0gKERhdHVtKSAwOwogCWVsc2UKIAl7CkBAIC0yOTM1LDEx ICszMDU4LDIxIEBAIHBvcHVsYXRlX2NvbXBvc2l0ZShDb21wb3NpdGVJT0RhdGEgKmlvLAogCQlK c09iamVjdAlqc287CiAKIAkJLyogcHJlcGFyZSBpbnB1dCB2YWx1ZSAqLwotCQlKc1ZhbHVlVG9K c09iamVjdChqc3YsICZqc28pOworCQlpZiAoIUpzVmFsdWVUb0pzT2JqZWN0KGpzdiwgJmpzbywg ZXNjb250ZXh0KSkKKwkJeworCQkJKmlzbnVsbCA9IHRydWU7CisJCQlyZXR1cm4gKERhdHVtKSAw OworCQl9CiAKIAkJLyogcG9wdWxhdGUgcmVzdWx0aW5nIHJlY29yZCB0dXBsZSAqLwogCQl0dXBs ZSA9IHBvcHVsYXRlX3JlY29yZChpby0+dHVwZGVzYywgJmlvLT5yZWNvcmRfaW8sCi0JCQkJCQkJ CWRlZmF1bHR2YWwsIG1jeHQsICZqc28pOworCQkJCQkJCQlkZWZhdWx0dmFsLCBtY3h0LCAmanNv LCBlc2NvbnRleHQpOworCisJCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVEKGVzY29udGV4dCkpCisJ CXsKKwkJCSppc251bGwgPSB0cnVlOworCQkJcmV0dXJuIChEYXR1bSkgMDsKKwkJfQogCQlyZXN1 bHQgPSBIZWFwVHVwbGVIZWFkZXJHZXREYXR1bSh0dXBsZSk7CiAKIAkJSnNPYmplY3RGcmVlKCZq c28pOwpAQCAtMjk1MSwxNCArMzA4NCwyMCBAQCBwb3B1bGF0ZV9jb21wb3NpdGUoQ29tcG9zaXRl SU9EYXRhICppbywKIAkgKiBub3csIHdlIGNhbiB0ZWxsIGJ5IGNvbXBhcmluZyB0eXBpZCB0byBi YXNlX3R5cGlkLikKIAkgKi8KIAlpZiAodHlwaWQgIT0gaW8tPmJhc2VfdHlwaWQgJiYgdHlwaWQg IT0gUkVDT1JET0lEKQotCQlkb21haW5fY2hlY2socmVzdWx0LCBpc251bGwsIHR5cGlkLCAmaW8t PmRvbWFpbl9pbmZvLCBtY3h0KTsKKwkJZG9tYWluX2NoZWNrKHJlc3VsdCwgKmlzbnVsbCwgdHlw aWQsICZpby0+ZG9tYWluX2luZm8sIG1jeHQpOwogCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAotLyog cG9wdWxhdGUgbm9uLW51bGwgc2NhbGFyIHZhbHVlIGZyb20ganNvbi9qc29uYiB2YWx1ZSAqLwor LyoKKyAqIFBvcHVsYXRlIG5vbi1udWxsIHNjYWxhciB2YWx1ZSBmcm9tIGpzb24vanNvbmIgdmFs dWUuCisgKgorICogUmV0dXJucyBudWxsIGlmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgdGhlIGNh bGwgdG8gdHlwZSBpbnB1dCBmdW5jdGlvbiwKKyAqIHByb3ZpZGVkIGVzY29udGV4dCBpcyB2YWxp ZC4KKyAqLwogc3RhdGljIERhdHVtCi1wb3B1bGF0ZV9zY2FsYXIoU2NhbGFySU9EYXRhICppbywg T2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QsIEpzVmFsdWUgKmpzdikKK3BvcHVsYXRlX3NjYWxhcihT Y2FsYXJJT0RhdGEgKmlvLCBPaWQgdHlwaWQsIGludDMyIHR5cG1vZCwgSnNWYWx1ZSAqanN2LAor CQkJCWJvb2wgKmlzbnVsbCwgTm9kZSAqZXNjb250ZXh0KQogewogCURhdHVtCQlyZXM7CiAJY2hh cgkgICAqc3RyID0gTlVMTDsKQEAgLTMwMjksNyArMzE2OCwxMiBAQCBwb3B1bGF0ZV9zY2FsYXIo U2NhbGFySU9EYXRhICppbywgT2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QsIEpzVmFsdWUgKmpzdikK IAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQganNvbmIgdHlwZTogJWQiLCAoaW50KSBqYnYt PnR5cGUpOwogCX0KIAotCXJlcyA9IElucHV0RnVuY3Rpb25DYWxsKCZpby0+dHlwaW9mdW5jLCBz dHIsIGlvLT50eXBpb3BhcmFtLCB0eXBtb2QpOworCWlmICghSW5wdXRGdW5jdGlvbkNhbGxTYWZl KCZpby0+dHlwaW9mdW5jLCBzdHIsIGlvLT50eXBpb3BhcmFtLCB0eXBtb2QsCisJCQkJCQkJICAg ZXNjb250ZXh0LCAmcmVzKSkKKwl7CisJCXJlcyA9IChEYXR1bSkgMDsKKwkJKmlzbnVsbCA9IHRy dWU7CisJfQogCiAJLyogZnJlZSB0ZW1wb3JhcnkgYnVmZmVyICovCiAJaWYgKHN0ciAhPSBqc29u KQpAQCAtMzA0NCw3ICszMTg4LDggQEAgcG9wdWxhdGVfZG9tYWluKERvbWFpbklPRGF0YSAqaW8s CiAJCQkJY29uc3QgY2hhciAqY29sbmFtZSwKIAkJCQlNZW1vcnlDb250ZXh0IG1jeHQsCiAJCQkJ SnNWYWx1ZSAqanN2LAotCQkJCWJvb2wgaXNudWxsKQorCQkJCWJvb2wgaXNudWxsLAorCQkJCU5v ZGUgKmVzY29udGV4dCkKIHsKIAlEYXR1bQkJcmVzOwogCkBAIC0zMDU1LDggKzMyMDAsOCBAQCBw b3B1bGF0ZV9kb21haW4oRG9tYWluSU9EYXRhICppbywKIAkJcmVzID0gcG9wdWxhdGVfcmVjb3Jk X2ZpZWxkKGlvLT5iYXNlX2lvLAogCQkJCQkJCQkJaW8tPmJhc2VfdHlwaWQsIGlvLT5iYXNlX3R5 cG1vZCwKIAkJCQkJCQkJCWNvbG5hbWUsIG1jeHQsIFBvaW50ZXJHZXREYXR1bShOVUxMKSwKLQkJ CQkJCQkJCWpzdiwgJmlzbnVsbCk7Ci0JCUFzc2VydCghaXNudWxsKTsKKwkJCQkJCQkJCWpzdiwg JmlzbnVsbCwgZXNjb250ZXh0KTsKKwkJQXNzZXJ0KCFpc251bGwgfHwgU09GVF9FUlJPUl9PQ0NV UlJFRChlc2NvbnRleHQpKTsKIAl9CiAKIAlkb21haW5fY2hlY2socmVzLCBpc251bGwsIHR5cGlk LCAmaW8tPmRvbWFpbl9pbmZvLCBtY3h0KTsKQEAgLTMxNjAsNyArMzMwNSw4IEBAIHBvcHVsYXRl X3JlY29yZF9maWVsZChDb2x1bW5JT0RhdGEgKmNvbCwKIAkJCQkJICBNZW1vcnlDb250ZXh0IG1j eHQsCiAJCQkJCSAgRGF0dW0gZGVmYXVsdHZhbCwKIAkJCQkJICBKc1ZhbHVlICpqc3YsCi0JCQkJ CSAgYm9vbCAqaXNudWxsKQorCQkJCQkgIGJvb2wgKmlzbnVsbCwKKwkJCQkJICBOb2RlICplc2Nv bnRleHQpCiB7CiAJVHlwZUNhdAkJdHlwY2F0OwogCkBAIC0zMTkzLDEwICszMzM5LDEyIEBAIHBv cHVsYXRlX3JlY29yZF9maWVsZChDb2x1bW5JT0RhdGEgKmNvbCwKIAlzd2l0Y2ggKHR5cGNhdCkK IAl7CiAJCWNhc2UgVFlQRUNBVF9TQ0FMQVI6Ci0JCQlyZXR1cm4gcG9wdWxhdGVfc2NhbGFyKCZj b2wtPnNjYWxhcl9pbywgdHlwaWQsIHR5cG1vZCwganN2KTsKKwkJCXJldHVybiBwb3B1bGF0ZV9z Y2FsYXIoJmNvbC0+c2NhbGFyX2lvLCB0eXBpZCwgdHlwbW9kLCBqc3YsCisJCQkJCQkJCSAgIGlz bnVsbCwgZXNjb250ZXh0KTsKIAogCQljYXNlIFRZUEVDQVRfQVJSQVk6Ci0JCQlyZXR1cm4gcG9w dWxhdGVfYXJyYXkoJmNvbC0+aW8uYXJyYXksIGNvbG5hbWUsIG1jeHQsIGpzdik7CisJCQlyZXR1 cm4gcG9wdWxhdGVfYXJyYXkoJmNvbC0+aW8uYXJyYXksIGNvbG5hbWUsIG1jeHQsIGpzdiwKKwkJ CQkJCQkJICBpc251bGwsIGVzY29udGV4dCk7CiAKIAkJY2FzZSBUWVBFQ0FUX0NPTVBPU0lURToK IAkJY2FzZSBUWVBFQ0FUX0NPTVBPU0lURV9ET01BSU46CkBAIC0zMjA1LDExICszMzUzLDEyIEBA IHBvcHVsYXRlX3JlY29yZF9maWVsZChDb2x1bW5JT0RhdGEgKmNvbCwKIAkJCQkJCQkJCSAgRGF0 dW1HZXRQb2ludGVyKGRlZmF1bHR2YWwpCiAJCQkJCQkJCQkgID8gRGF0dW1HZXRIZWFwVHVwbGVI ZWFkZXIoZGVmYXVsdHZhbCkKIAkJCQkJCQkJCSAgOiBOVUxMLAotCQkJCQkJCQkJICBqc3YsICpp c251bGwpOworCQkJCQkJCQkJICBqc3YsIGlzbnVsbCwKKwkJCQkJCQkJCSAgZXNjb250ZXh0KTsK IAogCQljYXNlIFRZUEVDQVRfRE9NQUlOOgogCQkJcmV0dXJuIHBvcHVsYXRlX2RvbWFpbigmY29s LT5pby5kb21haW4sIHR5cGlkLCBjb2xuYW1lLCBtY3h0LAotCQkJCQkJCQkgICBqc3YsICppc251 bGwpOworCQkJCQkJCQkgICBqc3YsICppc251bGwsIGVzY29udGV4dCk7CiAKIAkJZGVmYXVsdDoK IAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgdHlwZSBjYXRlZ29yeSAnJWMnIiwgdHlwY2F0 KTsKQEAgLTMyMTcsNiArMzM2Niw2MiBAQCBwb3B1bGF0ZV9yZWNvcmRfZmllbGQoQ29sdW1uSU9E YXRhICpjb2wsCiAJfQogfQogCisvKgorICogUG9wdWxhdGUgYW5kIHJldHVybiB0aGUgdmFsdWUg b2Ygc3BlY2lmaWVkIHR5cGUgZnJvbSBhIGdpdmVuIGpzb24vanNvbmIKKyAqIHZhbHVlICdqc29u X3ZhbCcuICAnY2FjaGUnIGlzIGNhbGxlci1zcGVjaWZpZWQgcG9pbnRlciB0byBzYXZlIHRoZQor ICogQ29sdW1uSU9EYXRhIHRoYXQgd2lsbCBiZSBpbml0aWFsaXplZCBvbiB0aGUgMXN0IGNhbGwg YW5kIHRoZW4gcmV1c2VkCisgKiBkdXJpbmcgYW55IHN1YnNlcXVlbnQgY2FsbHMuICAnbWN4dCcg Z2l2ZXMgdGhlIG1lbW9yeSBjb250ZXh0IHRvIGFsbG9jYXRlCisgKiB0aGUgQ29sdW1uSU9EYXRh IGFuZCBhbnkgb3RoZXIgc3Vic2lkaWFyeSBtZW1vcnkgaW4uICAnZXNjb250ZXh0JywKKyAqIGlm IG5vdCBOVUxMLCB0ZWxscyB0aGF0IGFueSBlcnJvcnMgdGhhdCBvY2N1ciBzaG91bGQgYmUgaGFu ZGxlZCBzb2Z0bHkuCisgKi8KK0RhdHVtCitqc29uX3BvcHVsYXRlX3R5cGUoRGF0dW0ganNvbl92 YWwsIE9pZCBqc29uX3R5cGUsCisJCQkJICAgT2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QsCisJCQkJ ICAgdm9pZCAqKmNhY2hlLCBNZW1vcnlDb250ZXh0IG1jeHQsCisJCQkJICAgYm9vbCAqaXNudWxs LAorCQkJCSAgIE5vZGUgKmVzY29udGV4dCkKK3sKKwlKc1ZhbHVlCQlqc3YgPSB7MH07CisJSnNv bmJWYWx1ZQlqYnY7CisKKwlqc3YuaXNfanNvbiA9IGpzb25fdHlwZSA9PSBKU09OT0lEOworCisJ aWYgKCppc251bGwpCisJeworCQlpZiAoanN2LmlzX2pzb24pCisJCQlqc3YudmFsLmpzb24uc3Ry ID0gTlVMTDsKKwkJZWxzZQorCQkJanN2LnZhbC5qc29uYiA9IE5VTEw7CisJfQorCWVsc2UgaWYg KGpzdi5pc19qc29uKQorCXsKKwkJdGV4dAkgICAqanNvbiA9IERhdHVtR2V0VGV4dFBQKGpzb25f dmFsKTsKKworCQlqc3YudmFsLmpzb24uc3RyID0gVkFSREFUQV9BTlkoanNvbik7CisJCWpzdi52 YWwuanNvbi5sZW4gPSBWQVJTSVpFX0FOWV9FWEhEUihqc29uKTsKKwkJanN2LnZhbC5qc29uLnR5 cGUgPSBKU09OX1RPS0VOX0lOVkFMSUQ7IC8qIG5vdCB1c2VkIGluCisJCQkJCQkJCQkJCQkgKiBw b3B1bGF0ZV9jb21wb3NpdGUoKSAqLworCX0KKwllbHNlCisJeworCQlKc29uYgkgICAqanNvbmIg PSBEYXR1bUdldEpzb25iUChqc29uX3ZhbCk7CisKKwkJanN2LnZhbC5qc29uYiA9ICZqYnY7CisK KwkJLyogZmlsbCBiaW5hcnkganNvbmIgdmFsdWUgcG9pbnRpbmcgdG8gamIgKi8KKwkJamJ2LnR5 cGUgPSBqYnZCaW5hcnk7CisJCWpidi52YWwuYmluYXJ5LmRhdGEgPSAmanNvbmItPnJvb3Q7CisJ CWpidi52YWwuYmluYXJ5LmxlbiA9IFZBUlNJWkUoanNvbmIpIC0gVkFSSERSU1o7CisJfQorCisJ aWYgKCpjYWNoZSA9PSBOVUxMKQorCQkqY2FjaGUgPSBNZW1vcnlDb250ZXh0QWxsb2NaZXJvKG1j eHQsIHNpemVvZihDb2x1bW5JT0RhdGEpKTsKKworCXJldHVybiBwb3B1bGF0ZV9yZWNvcmRfZmll bGQoKmNhY2hlLCB0eXBpZCwgdHlwbW9kLCBOVUxMLCBtY3h0LAorCQkJCQkJCQkgUG9pbnRlckdl dERhdHVtKE5VTEwpLCAmanN2LCBpc251bGwsCisJCQkJCQkJCSBlc2NvbnRleHQpOworfQorCiBz dGF0aWMgUmVjb3JkSU9EYXRhICoKIGFsbG9jYXRlX3JlY29yZF9pbmZvKE1lbW9yeUNvbnRleHQg bWN4dCwgaW50IG5jb2x1bW5zKQogewpAQCAtMzI2Niw3ICszNDcxLDggQEAgcG9wdWxhdGVfcmVj b3JkKFR1cGxlRGVzYyB0dXBkZXNjLAogCQkJCVJlY29yZElPRGF0YSAqKnJlY29yZF9wLAogCQkJ CUhlYXBUdXBsZUhlYWRlciBkZWZhdWx0dmFsLAogCQkJCU1lbW9yeUNvbnRleHQgbWN4dCwKLQkJ CQlKc09iamVjdCAqb2JqKQorCQkJCUpzT2JqZWN0ICpvYmosCisJCQkJTm9kZSAqZXNjb250ZXh0 KQogewogCVJlY29yZElPRGF0YSAqcmVjb3JkID0gKnJlY29yZF9wOwogCURhdHVtCSAgICp2YWx1 ZXM7CkBAIC0zMzU4LDcgKzM1NjQsOCBAQCBwb3B1bGF0ZV9yZWNvcmQoVHVwbGVEZXNjIHR1cGRl c2MsCiAJCQkJCQkJCQkJICBtY3h0LAogCQkJCQkJCQkJCSAgbnVsbHNbaV0gPyAoRGF0dW0pIDAg OiB2YWx1ZXNbaV0sCiAJCQkJCQkJCQkJICAmZmllbGQsCi0JCQkJCQkJCQkJICAmbnVsbHNbaV0p OworCQkJCQkJCQkJCSAgJm51bGxzW2ldLAorCQkJCQkJCQkJCSAgZXNjb250ZXh0KTsKIAl9CiAK IAlyZXMgPSBoZWFwX2Zvcm1fdHVwbGUodHVwZGVzYywgdmFsdWVzLCBudWxscyk7CkBAIC0zNDQ1 LDYgKzM2NTIsNyBAQCBwb3B1bGF0ZV9yZWNvcmRfd29ya2VyKEZ1bmN0aW9uQ2FsbEluZm8gZmNp bmZvLCBjb25zdCBjaGFyICpmdW5jbmFtZSwKIAlKc1ZhbHVlCQlqc3YgPSB7MH07CiAJSGVhcFR1 cGxlSGVhZGVyIHJlYzsKIAlEYXR1bQkJcmV0dHVwbGU7CisJYm9vbAkJaXNudWxsOwogCUpzb25i VmFsdWUJamJ2OwogCU1lbW9yeUNvbnRleHQgZm5tY3h0ID0gZmNpbmZvLT5mbGluZm8tPmZuX21j eHQ7CiAJUG9wdWxhdGVSZWNvcmRDYWNoZSAqY2FjaGUgPSBmY2luZm8tPmZsaW5mby0+Zm5fZXh0 cmE7CkBAIC0zNTMxLDggKzM3MzksMTEgQEAgcG9wdWxhdGVfcmVjb3JkX3dvcmtlcihGdW5jdGlv bkNhbGxJbmZvIGZjaW5mbywgY29uc3QgY2hhciAqZnVuY25hbWUsCiAJCWpidi52YWwuYmluYXJ5 LmxlbiA9IFZBUlNJWkUoamIpIC0gVkFSSERSU1o7CiAJfQogCisJaXNudWxsID0gZmFsc2U7CiAJ cmV0dHVwbGUgPSBwb3B1bGF0ZV9jb21wb3NpdGUoJmNhY2hlLT5jLmlvLmNvbXBvc2l0ZSwgY2Fj aGUtPmFyZ3R5cGUsCi0JCQkJCQkJCSAgTlVMTCwgZm5tY3h0LCByZWMsICZqc3YsIGZhbHNlKTsK KwkJCQkJCQkJICBOVUxMLCBmbm1jeHQsIHJlYywgJmpzdiwgJmlzbnVsbCwKKwkJCQkJCQkJICBO VUxMKTsKKwlBc3NlcnQoIWlzbnVsbCk7CiAKIAlQR19SRVRVUk5fREFUVU0ocmV0dHVwbGUpOwog fQpAQCAtMzU0MCwxMCArMzc1MSwxMyBAQCBwb3B1bGF0ZV9yZWNvcmRfd29ya2VyKEZ1bmN0aW9u Q2FsbEluZm8gZmNpbmZvLCBjb25zdCBjaGFyICpmdW5jbmFtZSwKIC8qCiAgKiBnZXRfanNvbl9v YmplY3RfYXNfaGFzaAogICoKLSAqIGRlY29tcG9zZSBhIGpzb24gb2JqZWN0IGludG8gYSBoYXNo IHRhYmxlLgorICogRGVjb21wb3NlcyBhIGpzb24gb2JqZWN0IGludG8gYSBoYXNoIHRhYmxlLgor ICoKKyAqIFJldHVybnMgdGhlIGhhc2ggdGFibGUgaWYgdGhlIGpzb24gaXMgcGFyc2VkIHN1Y2Nl c3NmdWxseSwgTlVMTCBvdGhlcndpc2UuCiAgKi8KIHN0YXRpYyBIVEFCICoKLWdldF9qc29uX29i amVjdF9hc19oYXNoKGNoYXIgKmpzb24sIGludCBsZW4sIGNvbnN0IGNoYXIgKmZ1bmNuYW1lKQor Z2V0X2pzb25fb2JqZWN0X2FzX2hhc2goY2hhciAqanNvbiwgaW50IGxlbiwgY29uc3QgY2hhciAq ZnVuY25hbWUsCisJCQkJCQlOb2RlICplc2NvbnRleHQpCiB7CiAJSEFTSENUTAkJY3RsOwogCUhU QUIJICAgKnRhYjsKQEAgLTM1NzIsNyArMzc4NiwxMSBAQCBnZXRfanNvbl9vYmplY3RfYXNfaGFz aChjaGFyICpqc29uLCBpbnQgbGVuLCBjb25zdCBjaGFyICpmdW5jbmFtZSkKIAlzZW0tPm9iamVj dF9maWVsZF9zdGFydCA9IGhhc2hfb2JqZWN0X2ZpZWxkX3N0YXJ0OwogCXNlbS0+b2JqZWN0X2Zp ZWxkX2VuZCA9IGhhc2hfb2JqZWN0X2ZpZWxkX2VuZDsKIAotCXBnX3BhcnNlX2pzb25fb3JfZXJl cG9ydChzdGF0ZS0+bGV4LCBzZW0pOworCWlmICghcGdfcGFyc2VfanNvbl9vcl9lcnJzYXZlKHN0 YXRlLT5sZXgsIHNlbSwgZXNjb250ZXh0KSkKKwl7CisJCWhhc2hfZGVzdHJveShzdGF0ZS0+aGFz aCk7CisJCXRhYiA9IE5VTEw7CisJfQogCiAJZnJlZUpzb25MZXhDb250ZXh0KHN0YXRlLT5sZXgp OwogCkBAIC0zNzQzLDcgKzM5NjEsOCBAQCBwb3B1bGF0ZV9yZWNvcmRzZXRfcmVjb3JkKFBvcHVs YXRlUmVjb3Jkc2V0U3RhdGUgKnN0YXRlLCBKc09iamVjdCAqb2JqKQogCQkJCQkJCSAgJmNhY2hl LT5jLmlvLmNvbXBvc2l0ZS5yZWNvcmRfaW8sCiAJCQkJCQkJICBzdGF0ZS0+cmVjLAogCQkJCQkJ CSAgY2FjaGUtPmZuX21jeHQsCi0JCQkJCQkJICBvYmopOworCQkJCQkJCSAgb2JqLAorCQkJCQkJ CSAgTlVMTCk7CiAKIAkvKiBpZiBpdCdzIGRvbWFpbiBvdmVyIGNvbXBvc2l0ZSwgY2hlY2sgZG9t YWluIGNvbnN0cmFpbnRzICovCiAJaWYgKGNhY2hlLT5jLnR5cGNhdCA9PSBUWVBFQ0FUX0NPTVBP U0lURV9ET01BSU4pCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9qc29uZnVuY3MuaCBi L3NyYy9pbmNsdWRlL3V0aWxzL2pzb25mdW5jcy5oCmluZGV4IDMxYzFhZTQ3NjcuLjliYjllYjcz YjQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25mdW5jcy5oCisrKyBiL3NyYy9p bmNsdWRlL3V0aWxzL2pzb25mdW5jcy5oCkBAIC0xNSw2ICsxNSw3IEBACiAjZGVmaW5lIEpTT05G VU5DU19ICiAKICNpbmNsdWRlICJjb21tb24vanNvbmFwaS5oIgorI2luY2x1ZGUgIm5vZGVzL25v ZGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvanNvbmIuaCIKIAogLyoKQEAgLTg3LDUgKzg4LDEwIEBA IGV4dGVybiBEYXR1bSBkYXR1bV90b19qc29uKERhdHVtIHZhbCwgSnNvblR5cGVDYXRlZ29yeSB0 Y2F0ZWdvcnksCiBleHRlcm4gRGF0dW0gZGF0dW1fdG9fanNvbmIoRGF0dW0gdmFsLCBKc29uVHlw ZUNhdGVnb3J5IHRjYXRlZ29yeSwKIAkJCQkJCQlPaWQgb3V0ZnVuY29pZCk7CiBleHRlcm4gRGF0 dW0ganNvbmJfZnJvbV90ZXh0KHRleHQgKmpzLCBib29sIHVuaXF1ZV9rZXlzKTsKK2V4dGVybiBE YXR1bSBqc29uX3BvcHVsYXRlX3R5cGUoRGF0dW0ganNvbl92YWwsIE9pZCBqc29uX3R5cGUsCisJ CQkJICAgT2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QsCisJCQkJICAgdm9pZCAqKmNhY2hlLCBNZW1v cnlDb250ZXh0IG1jeHQsCisJCQkJICAgYm9vbCAqaXNudWxsLAorCQkJCSAgIE5vZGUgKmVzY29u dGV4dCk7CiAKICNlbmRpZgotLSAKMi4zNS4zCgo= --000000000000aae962060f3871e9 Content-Type: application/octet-stream; name="v35-0004-Add-jsonpath_exec-APIs-to-use-in-SQL-JSON-query-.patch" Content-Disposition: attachment; filename="v35-0004-Add-jsonpath_exec-APIs-to-use-in-SQL-JSON-query-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lrj915p13 RnJvbSAzNTk1OWM5MmRkMzhjMWNjMGM4ZGU3ZjgyYzI4MzRjYzJiMWQxZDhlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMTggSmFuIDIwMjQgMTc6NTc6MjAgKzA5MDAKU3ViamVjdDogW1BBVENIIHYz NSA0LzhdIEFkZCBqc29ucGF0aF9leGVjIEFQSXMgdG8gdXNlIGluIFNRTC9KU09OIHF1ZXJ5CiBm dW5jdGlvbnMKClRoaXMgYWRkcyBKc29uUGF0aEV4aXN0cygpLCBKc29uUGF0aFF1ZXJ5KCksIEpz b25QYXRoVmFsdWUoKSB0aGF0CmFyZSB3cmFwcGVycyBvdmVyIGV4ZWN1dGVKc29uUGF0aCgpIHRv IGltcGxlbWVudCBTUUwvSlNPTiBmdW5jdGlvbnMKSlNPTl9FWElTVFMoKSwgSlNPTl9RVUVSWSgp LCBhbmQgSlNPTl9WQUxVRSgpLCByZXNwZWN0aXZlbHkuICBUaG9zZQpmdW5jdGlvbnMgdGhlbXNl bHZlcyB3aWxsIGJlIGFkZGVkIGluIGEgc3Vic2VxdWVudCBjb21taXQgYWxvbmcgd2l0aAp0aGUg bmVjZXNzYXJ5IHBhcnNlci9wbGFubmVyL2V4ZWN1dG9yIHN1cHBvcnQuCgpUaGlzIGFsc28gaW50 cm9kdWNlcyBhIG5ldyBzdHJ1Y3QgSnNvblBhdGhWYXJpYWJsZSBmb3IgdGhlIGV4ZWN1dG9yCmlt cGxlbWVudGF0aW9uIG9mIHRob3NlIGZ1bmN0aW9ucyB0byBiZSBhYmxlIHRvIHBhc3MgdGhlIHZh bHVlcwpvZiB0aGUgdmFyaWFibGVzIHVzZWQgaW4ganNvbnBhdGggdGhhdCBhcmUgc2VwYXJhdGVs eSBldmFsdWF0ZWQKYnkgdGhlIGV4ZWN1dG9yLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3Iu ZXMvbS9DQStIaXdxRTRYVGRmYjFuVz1Pam95X3RRU1JoWXQtcV9rYjZpNWQ0eGNLeXJMQzFOYmdA bWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGhfZXhlYy5j IHwgMzIyICsrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvaW5jbHVkZS9ub2Rlcy9wcmlt bm9kZXMuaCAgICAgICAgIHwgIDExICsKIHNyYy9pbmNsdWRlL3V0aWxzL2pzb25wYXRoLmggICAg ICAgICAgfCAgMjMgKysKIDMgZmlsZXMgY2hhbmdlZCwgMzU2IGluc2VydGlvbnMoKykKCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGhfZXhlYy5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2pzb25wYXRoX2V4ZWMuYwppbmRleCBjMTYyODIxZTY1Li42ZGE2ZTI3ZWU2 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGhfZXhlYy5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9leGVjLmMKQEAgLTIzNCw2ICsyMzQsMTIg QEAgc3RhdGljIEpzb25QYXRoRXhlY1Jlc3VsdCBhcHBlbmRCb29sUmVzdWx0KEpzb25QYXRoRXhl Y0NvbnRleHQgKmN4dCwKIAkJCQkJCQkJCQkgICBKc29uUGF0aEl0ZW0gKmpzcCwgSnNvblZhbHVl TGlzdCAqZm91bmQsIEpzb25QYXRoQm9vbCByZXMpOwogc3RhdGljIHZvaWQgZ2V0SnNvblBhdGhJ dGVtKEpzb25QYXRoRXhlY0NvbnRleHQgKmN4dCwgSnNvblBhdGhJdGVtICppdGVtLAogCQkJCQkJ CUpzb25iVmFsdWUgKnZhbHVlKTsKK3N0YXRpYyBKc29uYlZhbHVlICpHZXRKc29uUGF0aFZhcih2 b2lkICpjeHQsIGNoYXIgKnZhck5hbWUsIGludCB2YXJOYW1lTGVuLAorCQkJCQkJCQkgIEpzb25i VmFsdWUgKmJhc2VPYmplY3QsIGludCAqYmFzZU9iamVjdElkKTsKK3N0YXRpYyBpbnQgQ291bnRK c29uUGF0aFZhcnModm9pZCAqY3h0KTsKK3N0YXRpYyB2b2lkIEpzb25JdGVtRnJvbURhdHVtKERh dHVtIHZhbCwgT2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QsCisJCQkJCQkJICBKc29uYlZhbHVlICpy ZXMpOworc3RhdGljIHZvaWQgSnNvbmJWYWx1ZUluaXROdW1lcmljRGF0dW0oSnNvbmJWYWx1ZSAq amJ2LCBEYXR1bSBudW0pOwogc3RhdGljIHZvaWQgZ2V0SnNvblBhdGhWYXJpYWJsZShKc29uUGF0 aEV4ZWNDb250ZXh0ICpjeHQsCiAJCQkJCQkJCUpzb25QYXRoSXRlbSAqdmFyaWFibGUsIEpzb25i VmFsdWUgKnZhbHVlKTsKIHN0YXRpYyBpbnQgY291bnRWYXJpYWJsZXNGcm9tSnNvbmIodm9pZCAq dmFyc0pzb25iKTsKQEAgLTIxMzgsNiArMjE0NCwxNTUgQEAgZ2V0SnNvblBhdGhJdGVtKEpzb25Q YXRoRXhlY0NvbnRleHQgKmN4dCwgSnNvblBhdGhJdGVtICppdGVtLAogCX0KIH0KIAorLyoKKyAq IFJldHVybnMgdGhlIGNvbXB1dGVkIHZhbHVlIG9mIGEgSlNPTiBwYXRoIHZhcmlhYmxlIHdpdGgg Z2l2ZW4gbmFtZS4KKyAqLworc3RhdGljIEpzb25iVmFsdWUgKgorR2V0SnNvblBhdGhWYXIodm9p ZCAqY3h0LCBjaGFyICp2YXJOYW1lLCBpbnQgdmFyTmFtZUxlbiwKKwkJCSAgIEpzb25iVmFsdWUg KmJhc2VPYmplY3QsIGludCAqYmFzZU9iamVjdElkKQoreworCUpzb25QYXRoVmFyaWFibGUgKnZh ciA9IE5VTEw7CisJTGlzdAkgICAqdmFycyA9IGN4dDsKKwlMaXN0Q2VsbCAgICpsYzsKKwlKc29u YlZhbHVlICpyZXN1bHQ7CisJaW50CQkJaWQgPSAxOworCisJZm9yZWFjaChsYywgdmFycykKKwl7 CisJCUpzb25QYXRoVmFyaWFibGUgKmN1cnZhciA9IGxmaXJzdChsYyk7CisKKwkJaWYgKCFzdHJu Y21wKGN1cnZhci0+bmFtZSwgdmFyTmFtZSwgdmFyTmFtZUxlbikpCisJCXsKKwkJCXZhciA9IGN1 cnZhcjsKKwkJCWJyZWFrOworCQl9CisKKwkJaWQrKzsKKwl9CisKKwlpZiAodmFyID09IE5VTEwp CisJeworCQkqYmFzZU9iamVjdElkID0gLTE7CisJCXJldHVybiBOVUxMOworCX0KKworCXJlc3Vs dCA9IHBhbGxvYyhzaXplb2YoSnNvbmJWYWx1ZSkpOworCWlmICh2YXItPmlzbnVsbCkKKwl7CisJ CSpiYXNlT2JqZWN0SWQgPSAwOworCQlyZXN1bHQtPnR5cGUgPSBqYnZOdWxsOworCX0KKwllbHNl CisJCUpzb25JdGVtRnJvbURhdHVtKHZhci0+dmFsdWUsIHZhci0+dHlwaWQsIHZhci0+dHlwbW9k LCByZXN1bHQpOworCisJKmJhc2VPYmplY3QgPSAqcmVzdWx0OworCSpiYXNlT2JqZWN0SWQgPSBp ZDsKKworCXJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBpbnQKK0NvdW50SnNvblBhdGhWYXJz KHZvaWQgKmN4dCkKK3sKKwlMaXN0ICp2YXJzID0gKExpc3QgKikgY3h0OworCisJcmV0dXJuIGxp c3RfbGVuZ3RoKHZhcnMpOworfQorCisKKy8qCisgKiBJbml0aWFsaXplIEpzb25iVmFsdWUgdG8g cGFzcyB0byBqc29ucGF0aCBleGVjdXRvciBmcm9tIGdpdmVuCisgKiBkYXR1bSB2YWx1ZSBvZiB0 aGUgc3BlY2lmaWVkIHR5cGUuCisgKi8KK3N0YXRpYyB2b2lkCitKc29uSXRlbUZyb21EYXR1bShE YXR1bSB2YWwsIE9pZCB0eXBpZCwgaW50MzIgdHlwbW9kLCBKc29uYlZhbHVlICpyZXMpCit7CisJ c3dpdGNoICh0eXBpZCkKKwl7CisJCWNhc2UgQk9PTE9JRDoKKwkJCXJlcy0+dHlwZSA9IGpidkJv b2w7CisJCQlyZXMtPnZhbC5ib29sZWFuID0gRGF0dW1HZXRCb29sKHZhbCk7CisJCQlicmVhazsK KwkJY2FzZSBOVU1FUklDT0lEOgorCQkJSnNvbmJWYWx1ZUluaXROdW1lcmljRGF0dW0ocmVzLCB2 YWwpOworCQkJYnJlYWs7CisJCWNhc2UgSU5UMk9JRDoKKwkJCUpzb25iVmFsdWVJbml0TnVtZXJp Y0RhdHVtKHJlcywgRGlyZWN0RnVuY3Rpb25DYWxsMShpbnQyX251bWVyaWMsIHZhbCkpOworCQkJ YnJlYWs7CisJCWNhc2UgSU5UNE9JRDoKKwkJCUpzb25iVmFsdWVJbml0TnVtZXJpY0RhdHVtKHJl cywgRGlyZWN0RnVuY3Rpb25DYWxsMShpbnQ0X251bWVyaWMsIHZhbCkpOworCQkJYnJlYWs7CisJ CWNhc2UgSU5UOE9JRDoKKwkJCUpzb25iVmFsdWVJbml0TnVtZXJpY0RhdHVtKHJlcywgRGlyZWN0 RnVuY3Rpb25DYWxsMShpbnQ4X251bWVyaWMsIHZhbCkpOworCQkJYnJlYWs7CisJCWNhc2UgRkxP QVQ0T0lEOgorCQkJSnNvbmJWYWx1ZUluaXROdW1lcmljRGF0dW0ocmVzLCBEaXJlY3RGdW5jdGlv bkNhbGwxKGZsb2F0NF9udW1lcmljLCB2YWwpKTsKKwkJCWJyZWFrOworCQljYXNlIEZMT0FUOE9J RDoKKwkJCUpzb25iVmFsdWVJbml0TnVtZXJpY0RhdHVtKHJlcywgRGlyZWN0RnVuY3Rpb25DYWxs MShmbG9hdDhfbnVtZXJpYywgdmFsKSk7CisJCQlicmVhazsKKwkJY2FzZSBURVhUT0lEOgorCQlj YXNlIFZBUkNIQVJPSUQ6CisJCQlyZXMtPnR5cGUgPSBqYnZTdHJpbmc7CisJCQlyZXMtPnZhbC5z dHJpbmcudmFsID0gVkFSREFUQV9BTlkodmFsKTsKKwkJCXJlcy0+dmFsLnN0cmluZy5sZW4gPSBW QVJTSVpFX0FOWV9FWEhEUih2YWwpOworCQkJYnJlYWs7CisJCWNhc2UgREFURU9JRDoKKwkJY2Fz ZSBUSU1FT0lEOgorCQljYXNlIFRJTUVUWk9JRDoKKwkJY2FzZSBUSU1FU1RBTVBPSUQ6CisJCWNh c2UgVElNRVNUQU1QVFpPSUQ6CisJCQlyZXMtPnR5cGUgPSBqYnZEYXRldGltZTsKKwkJCXJlcy0+ dmFsLmRhdGV0aW1lLnZhbHVlID0gdmFsOworCQkJcmVzLT52YWwuZGF0ZXRpbWUudHlwaWQgPSB0 eXBpZDsKKwkJCXJlcy0+dmFsLmRhdGV0aW1lLnR5cG1vZCA9IHR5cG1vZDsKKwkJCXJlcy0+dmFs LmRhdGV0aW1lLnR6ID0gMDsKKwkJCWJyZWFrOworCQljYXNlIEpTT05CT0lEOgorCQkJeworCQkJ CUpzb25iVmFsdWUgKmpidiA9IHJlczsKKwkJCQlKc29uYgkgICAqamIgPSBEYXR1bUdldEpzb25i UCh2YWwpOworCisJCQkJaWYgKEpzb25Db250YWluZXJJc1NjYWxhcigmamItPnJvb3QpKQorCQkJ CXsKKwkJCQkJYm9vbAkJcmVzdWx0IFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWTsKKworCQkJCQly ZXN1bHQgPSBKc29uYkV4dHJhY3RTY2FsYXIoJmpiLT5yb290LCBqYnYpOworCQkJCQlBc3NlcnQo cmVzdWx0KTsKKwkJCQl9CisJCQkJZWxzZQorCQkJCQlKc29uYkluaXRCaW5hcnkoamJ2LCBqYik7 CisJCQkJYnJlYWs7CisJCQl9CisJCWNhc2UgSlNPTk9JRDoKKwkJCXsKKwkJCQl0ZXh0CSAgICp0 eHQgPSBEYXR1bUdldFRleHRQKHZhbCk7CisJCQkJY2hhcgkgICAqc3RyID0gdGV4dF90b19jc3Ry aW5nKHR4dCk7CisJCQkJSnNvbmIJICAgKmpiOworCisJCQkJamIgPSBEYXR1bUdldEpzb25iUChE aXJlY3RGdW5jdGlvbkNhbGwxKGpzb25iX2luLAorCQkJCQkJCQkJCQkJCQlDU3RyaW5nR2V0RGF0 dW0oc3RyKSkpOworCQkJCXBmcmVlKHN0cik7CisKKwkJCQlKc29uSXRlbUZyb21EYXR1bShKc29u YlBHZXREYXR1bShqYiksIEpTT05CT0lELCAtMSwgcmVzKTsKKwkJCQlicmVhazsKKwkJCX0KKwkJ ZGVmYXVsdDoKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElE X1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCWVycm1zZygiY291bGQgbm90IGNvbnZlcnQgdmFsdWUg b2YgdHlwZSAlcyB0byBqc29ucGF0aCIsCisJCQkJCQkgICBmb3JtYXRfdHlwZV9iZSh0eXBpZCkp KTsKKwl9Cit9CisKKy8qIEluaXRpYWxpemUgbnVtZXJpYyB2YWx1ZSBmcm9tIHRoZSBnaXZlbiBk YXR1bSAqLworc3RhdGljIHZvaWQKK0pzb25iVmFsdWVJbml0TnVtZXJpY0RhdHVtKEpzb25iVmFs dWUgKmpidiwgRGF0dW0gbnVtKQoreworCWpidi0+dHlwZSA9IGpidk51bWVyaWM7CisJamJ2LT52 YWwubnVtZXJpYyA9IERhdHVtR2V0TnVtZXJpYyhudW0pOworfQorCiAvKgogICogR2V0IHRoZSB2 YWx1ZSBvZiB2YXJpYWJsZSBwYXNzZWQgdG8ganNvbnBhdGggZXhlY3V0b3IKICAqLwpAQCAtMjg3 NCwzICszMDI5LDE3MCBAQCBjb21wYXJlRGF0ZXRpbWUoRGF0dW0gdmFsMSwgT2lkIHR5cGlkMSwg RGF0dW0gdmFsMiwgT2lkIHR5cGlkMiwKIAogCXJldHVybiBEYXR1bUdldEludDMyKERpcmVjdEZ1 bmN0aW9uQ2FsbDIoY21wZnVuYywgdmFsMSwgdmFsMikpOwogfQorCisvKgorICogRXhlY3V0b3It Y2FsbGFibGUgSlNPTl9FWElTVFMgaW1wbGVtZW50YXRpb24KKyAqCisgKiBSZXR1cm5zIE5VTEwg aW5zdGVhZCBvZiB0aHJvd2luZyBlcnJvcnMgaWYgJ2Vycm9yJyBpcyBub3QgTlVMTCwgc2V0dGlu ZworICogKmVycm9yIHRvIHRydWUuCisgKi8KK2Jvb2wKK0pzb25QYXRoRXhpc3RzKERhdHVtIGpi LCBKc29uUGF0aCAqanAsIGJvb2wgKmVycm9yLCBMaXN0ICp2YXJzKQoreworCUpzb25QYXRoRXhl Y1Jlc3VsdCByZXM7CisKKwlyZXMgPSBleGVjdXRlSnNvblBhdGgoanAsIHZhcnMsCisJCQkJCQkg IEdldEpzb25QYXRoVmFyLCBDb3VudEpzb25QYXRoVmFycywKKwkJCQkJCSAgRGF0dW1HZXRKc29u YlAoamIpLCAhZXJyb3IsIE5VTEwsIHRydWUpOworCisJQXNzZXJ0KGVycm9yIHx8ICFqcGVySXNF cnJvcihyZXMpKTsKKworCWlmIChlcnJvciAmJiBqcGVySXNFcnJvcihyZXMpKQorCQkqZXJyb3Ig PSB0cnVlOworCisJcmV0dXJuIHJlcyA9PSBqcGVyT2s7Cit9CisKKy8qCisgKiBFeGVjdXRvci1j YWxsYWJsZSBKU09OX1FVRVJZIGltcGxlbWVudGF0aW9uCisgKgorICogUmV0dXJucyBOVUxMIGlu c3RlYWQgb2YgdGhyb3dpbmcgZXJyb3JzIGlmICdlcnJvcicgaXMgbm90IE5VTEwsIHNldHRpbmcK KyAqICplcnJvciB0byB0cnVlLiAgKmVtcHR5IGlzIHNldCB0byB0cnVlIGlmIG5vIG1hdGNoIGlz IGZvdW5kLgorICovCitEYXR1bQorSnNvblBhdGhRdWVyeShEYXR1bSBqYiwgSnNvblBhdGggKmpw LCBKc29uV3JhcHBlciB3cmFwcGVyLCBib29sICplbXB0eSwKKwkJCSAgYm9vbCAqZXJyb3IsIExp c3QgKnZhcnMpCit7CisJSnNvbmJWYWx1ZSAqc2luZ2xldG9uOworCWJvb2wJCXdyYXA7CisJSnNv blZhbHVlTGlzdCBmb3VuZCA9IHswfTsKKwlKc29uUGF0aEV4ZWNSZXN1bHQgcmVzOworCWludAkJ CWNvdW50OworCisJcmVzID0gZXhlY3V0ZUpzb25QYXRoKGpwLCB2YXJzLAorCQkJCQkJICBHZXRK c29uUGF0aFZhciwgQ291bnRKc29uUGF0aFZhcnMsCisJCQkJCQkgIERhdHVtR2V0SnNvbmJQKGpi KSwgIWVycm9yLCAmZm91bmQsIHRydWUpOworCUFzc2VydChlcnJvciB8fCAhanBlcklzRXJyb3Io cmVzKSk7CisJaWYgKGVycm9yICYmIGpwZXJJc0Vycm9yKHJlcykpCisJeworCQkqZXJyb3IgPSB0 cnVlOworCQkqZW1wdHkgPSBmYWxzZTsKKwkJcmV0dXJuIChEYXR1bSkgMDsKKwl9CisKKwkvKiBX UkFQIG9yIG5vdD8gKi8KKwljb3VudCA9IEpzb25WYWx1ZUxpc3RMZW5ndGgoJmZvdW5kKTsKKwlz aW5nbGV0b24gPSBjb3VudCA+IDAgPyBKc29uVmFsdWVMaXN0SGVhZCgmZm91bmQpIDogTlVMTDsK KwlpZiAoc2luZ2xldG9uID09IE5VTEwpCisJCXdyYXAgPSBmYWxzZTsKKwllbHNlIGlmICh3cmFw cGVyID09IEpTV19OT05FKQorCQl3cmFwID0gZmFsc2U7CisJZWxzZSBpZiAod3JhcHBlciA9PSBK U1dfVU5DT05ESVRJT05BTCkKKwkJd3JhcCA9IHRydWU7CisJZWxzZSBpZiAod3JhcHBlciA9PSBK U1dfQ09ORElUSU9OQUwpCisJCXdyYXAgPSBjb3VudCA+IDEgfHwKKwkJCUlzQUpzb25iU2NhbGFy KHNpbmdsZXRvbikgfHwKKwkJCShzaW5nbGV0b24tPnR5cGUgPT0gamJ2QmluYXJ5ICYmCisJCQkg SnNvbkNvbnRhaW5lcklzU2NhbGFyKHNpbmdsZXRvbi0+dmFsLmJpbmFyeS5kYXRhKSk7CisJZWxz ZQorCXsKKwkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBqc29uIHdyYXBwZXIgJWQiLCB3cmFw cGVyKTsKKwkJd3JhcCA9IGZhbHNlOworCX0KKworCWlmICh3cmFwKQorCQlyZXR1cm4gSnNvbmJQ R2V0RGF0dW0oSnNvbmJWYWx1ZVRvSnNvbmIod3JhcEl0ZW1zSW5BcnJheSgmZm91bmQpKSk7CisK KwkvKiBObyB3cmFwcGluZyBtZWFucyBvbmx5IG9uZSBpdGVtIGlzIGV4cGVjdGVkLiAqLworCWlm IChjb3VudCA+IDEpCisJeworCQlpZiAoZXJyb3IpCisJCXsKKwkJCSplcnJvciA9IHRydWU7CisJ CQlyZXR1cm4gKERhdHVtKSAwOworCQl9CisKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29k ZShFUlJDT0RFX01PUkVfVEhBTl9PTkVfU1FMX0pTT05fSVRFTSksCisJCQkJIGVycm1zZygiSlNP TiBwYXRoIGV4cHJlc3Npb24gaW4gSlNPTl9RVUVSWSBzaG91bGQgcmV0dXJuIHNpbmdsZXRvbiBp dGVtIHdpdGhvdXQgd3JhcHBlciIpLAorCQkJCSBlcnJoaW50KCJVc2UgV0lUSCBXUkFQUEVSIGNs YXVzZSB0byB3cmFwIFNRTC9KU09OIGl0ZW0gc2VxdWVuY2UgaW50byBhcnJheS4iKSkpOworCX0K KworCWlmIChzaW5nbGV0b24pCisJCXJldHVybiBKc29uYlBHZXREYXR1bShKc29uYlZhbHVlVG9K c29uYihzaW5nbGV0b24pKTsKKworCSplbXB0eSA9IHRydWU7CisJcmV0dXJuIFBvaW50ZXJHZXRE YXR1bShOVUxMKTsKK30KKworLyoKKyAqIEV4ZWN1dG9yLWNhbGxhYmxlIEpTT05fVkFMVUUgaW1w bGVtZW50YXRpb24KKyAqCisgKiBSZXR1cm5zIE5VTEwgaW5zdGVhZCBvZiB0aHJvd2luZyBlcnJv cnMgaWYgJ2Vycm9yJyBpcyBub3QgTlVMTCwgc2V0dGluZworICogKmVycm9yIHRvIHRydWUuICAq ZW1wdHkgaXMgc2V0IHRvIHRydWUgaWYgbm8gbWF0Y2ggaXMgZm91bmQuCisgKi8KK0pzb25iVmFs dWUgKgorSnNvblBhdGhWYWx1ZShEYXR1bSBqYiwgSnNvblBhdGggKmpwLCBib29sICplbXB0eSwg Ym9vbCAqZXJyb3IsIExpc3QgKnZhcnMpCit7CisJSnNvbmJWYWx1ZSAqcmVzOworCUpzb25WYWx1 ZUxpc3QgZm91bmQgPSB7MH07CisJSnNvblBhdGhFeGVjUmVzdWx0IGpwZXIgUEdfVVNFRF9GT1Jf QVNTRVJUU19PTkxZOworCWludAkJCWNvdW50OworCisJanBlciA9IGV4ZWN1dGVKc29uUGF0aChq cCwgdmFycywgR2V0SnNvblBhdGhWYXIsIENvdW50SnNvblBhdGhWYXJzLAorCQkJCQkJICAgRGF0 dW1HZXRKc29uYlAoamIpLAorCQkJCQkJICAgIWVycm9yLCAmZm91bmQsIHRydWUpOworCisJQXNz ZXJ0KGVycm9yIHx8ICFqcGVySXNFcnJvcihqcGVyKSk7CisKKwlpZiAoZXJyb3IgJiYganBlcklz RXJyb3IoanBlcikpCisJeworCQkqZXJyb3IgPSB0cnVlOworCQkqZW1wdHkgPSBmYWxzZTsKKwkJ cmV0dXJuIE5VTEw7CisJfQorCisJY291bnQgPSBKc29uVmFsdWVMaXN0TGVuZ3RoKCZmb3VuZCk7 CisKKwkqZW1wdHkgPSAoY291bnQgPT0gMCk7CisKKwlpZiAoKmVtcHR5KQorCQlyZXR1cm4gTlVM TDsKKworCS8qIEpTT05fVkFMVUUgZXhwZWN0cyB0byBnZXQgb25seSBzaW5nbGV0b25zLiAqLwor CWlmIChjb3VudCA+IDEpCisJeworCQlpZiAoZXJyb3IpCisJCXsKKwkJCSplcnJvciA9IHRydWU7 CisJCQlyZXR1cm4gTlVMTDsKKwkJfQorCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUo RVJSQ09ERV9NT1JFX1RIQU5fT05FX1NRTF9KU09OX0lURU0pLAorCQkJCSBlcnJtc2coIkpTT04g cGF0aCBleHByZXNzaW9uIGluIEpTT05fVkFMVUUgc2hvdWxkIHJldHVybiBzaW5nbGV0b24gc2Nh bGFyIGl0ZW0iKSkpOworCX0KKworCXJlcyA9IEpzb25WYWx1ZUxpc3RIZWFkKCZmb3VuZCk7CisJ aWYgKHJlcy0+dHlwZSA9PSBqYnZCaW5hcnkgJiYgSnNvbkNvbnRhaW5lcklzU2NhbGFyKHJlcy0+ dmFsLmJpbmFyeS5kYXRhKSkKKwkJSnNvbmJFeHRyYWN0U2NhbGFyKHJlcy0+dmFsLmJpbmFyeS5k YXRhLCByZXMpOworCisJLyogSlNPTl9WQUxVRSBleHBlY3RzIHRvIGdldCBvbmx5IHNjYWxhcnMu ICovCisJaWYgKCFJc0FKc29uYlNjYWxhcihyZXMpKQorCXsKKwkJaWYgKGVycm9yKQorCQl7CisJ CQkqZXJyb3IgPSB0cnVlOworCQkJcmV0dXJuIE5VTEw7CisJCX0KKworCQllcmVwb3J0KEVSUk9S LAorCQkJCShlcnJjb2RlKEVSUkNPREVfU1FMX0pTT05fU0NBTEFSX1JFUVVJUkVEKSwKKwkJCQkg ZXJybXNnKCJKU09OIHBhdGggZXhwcmVzc2lvbiBpbiBKU09OX1ZBTFVFIHNob3VsZCByZXR1cm4g c2luZ2xldG9uIHNjYWxhciBpdGVtIikpKTsKKwl9CisKKwlpZiAocmVzLT50eXBlID09IGpidk51 bGwpCisJCXJldHVybiBOVUxMOworCisJcmV0dXJuIHJlczsKK30KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgK aW5kZXggNGExNTQ2MDZkMi4uNjEyODlkODEyNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9k ZXMvcHJpbW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKQEAgLTE1 NzYsNiArMTU3NiwxNyBAQCB0eXBlZGVmIGVudW0gSnNvbkZvcm1hdFR5cGUKIAkJCQkJCQkJICog anNvbmIgKi8KIH0gSnNvbkZvcm1hdFR5cGU7CiAKKy8qCisgKiBKc29uV3JhcHBlciAtCisgKgkJ cmVwcmVzZW50YXRpb24gb2YgV1JBUFBFUiBjbGF1c2UgZm9yIEpzb25QYXRoUXVlcnkoKQorICov Cit0eXBlZGVmIGVudW0gSnNvbldyYXBwZXIKK3sKKwlKU1dfTk9ORSwKKwlKU1dfQ09ORElUSU9O QUwsCisJSlNXX1VOQ09ORElUSU9OQUwsCit9IEpzb25XcmFwcGVyOworCiAvKgogICogSnNvbkZv cm1hdCAtCiAgKgkJcmVwcmVzZW50YXRpb24gb2YgSlNPTiBGT1JNQVQgY2xhdXNlCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS91dGlscy9qc29ucGF0aC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvanNv bnBhdGguaAppbmRleCA5ZDU1YzI1ZWJjLi42ZWFiZGNmYjc1IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS91dGlscy9qc29ucGF0aC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25wYXRoLmgK QEAgLTE2LDYgKzE2LDcgQEAKIAogI2luY2x1ZGUgImZtZ3IuaCIKICNpbmNsdWRlICJub2Rlcy9w Z19saXN0LmgiCisjaW5jbHVkZSAibm9kZXMvcHJpbW5vZGVzLmgiCiAjaW5jbHVkZSAidXRpbHMv anNvbmIuaCIKIAogdHlwZWRlZiBzdHJ1Y3QKQEAgLTI2OCw0ICsyNjksMjYgQEAgZXh0ZXJuIGJv b2wganNwQ29udmVydFJlZ2V4RmxhZ3ModWludDMyIHhmbGFncywgaW50ICpyZXN1bHQsCiAJCQkJ CQkJCSBzdHJ1Y3QgTm9kZSAqZXNjb250ZXh0KTsKIAogCisvKgorICogRXZhbHVhdGlvbiBvZiBq c29ucGF0aAorICovCisKKy8qIEV4dGVybmFsIHZhcmlhYmxlIHBhc3NlZCBpbnRvIGpzb25wYXRo LiAqLwordHlwZWRlZiBzdHJ1Y3QgSnNvblBhdGhWYXJpYWJsZQoreworCWNoYXIJICAgKm5hbWU7 CisJT2lkCQkJdHlwaWQ7CisJaW50MzIJCXR5cG1vZDsKKwlEYXR1bQkJdmFsdWU7CisJYm9vbAkJ aXNudWxsOworfSBKc29uUGF0aFZhcmlhYmxlOworCisKKy8qIFNRTC9KU09OIGl0ZW0gKi8KK2V4 dGVybiBib29sIEpzb25QYXRoRXhpc3RzKERhdHVtIGpiLCBKc29uUGF0aCAqcGF0aCwgYm9vbCAq ZXJyb3IsIExpc3QgKnZhcnMpOworZXh0ZXJuIERhdHVtIEpzb25QYXRoUXVlcnkoRGF0dW0gamIs IEpzb25QYXRoICpqcCwgSnNvbldyYXBwZXIgd3JhcHBlciwKKwkJCQkJCSAgIGJvb2wgKmVtcHR5 LCBib29sICplcnJvciwgTGlzdCAqdmFycyk7CitleHRlcm4gSnNvbmJWYWx1ZSAqSnNvblBhdGhW YWx1ZShEYXR1bSBqYiwgSnNvblBhdGggKmpwLCBib29sICplbXB0eSwKKwkJCQkJCQkJIGJvb2wg KmVycm9yLCBMaXN0ICp2YXJzKTsKKwogI2VuZGlmCi0tIAoyLjM1LjMKCg== --000000000000aae962060f3871e9 Content-Type: application/octet-stream; name="v35-0006-Add-jsonb-support-function-JsonbUnquote.patch" Content-Disposition: attachment; filename="v35-0006-Add-jsonb-support-function-JsonbUnquote.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lrj915p35 RnJvbSAxNmY5ODYxNDFkMmNkNGIwN2NiNGQ1YmNkYWNkZjhkYWEyNGIxNDVhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMTggSmFuIDIwMjQgMTc6NTc6NTggKzA5MDAKU3ViamVjdDogW1BBVENIIHYz NSA2LzhdIEFkZCBqc29uYiBzdXBwb3J0IGZ1bmN0aW9uIEpzb25iVW5xdW90ZSgpCgpBcyB0aGUg bmFtZSBzYXlzLCBpdCdzIGludGVuZGVkIHRvIHJlbW92ZSBxdW90ZXMgZnJvbSBzY2FsYXIgc3Ry aW5ncwpleHRyYWN0ZWQgZnJvbSBqc29uKGIpIHZhbHVlcy4KCkRpc2N1c3Npb246IGh0dHBzOi8v cG9zdGdyLmVzL20vQ0ErSGl3cUU0WFRkZmIxblc9T2pveV90UVNSaFl0LXFfa2I2aTVkNHhjS3ly TEMxTmJnQG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iLmMg fCAzMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvaW5jbHVkZS91dGlscy9q c29uYi5oICAgICB8ICAxICsKIDIgZmlsZXMgY2hhbmdlZCwgMzIgaW5zZXJ0aW9ucygrKQoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYi5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2pzb25iLmMKaW5kZXggYzEwYjNmYmVkZi4uNmQ3OTdjMDk1MyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2pzb25iLmMKQEAgLTIxNjMsMyArMjE2MywzNCBAQCBqc29uYl9mbG9hdDgoUEdfRlVOQ1RJT05f QVJHUykKIAogCVBHX1JFVFVSTl9EQVRVTShyZXRWYWx1ZSk7CiB9CisKKy8qCisgKiBDb252ZXJ0 IGpzb25iIHRvIGEgQy1zdHJpbmcgc3RyaXBwaW5nIHF1b3RlcyBmcm9tIHNjYWxhciBzdHJpbmdz LgorICovCitjaGFyICoKK0pzb25iVW5xdW90ZShKc29uYiAqamIpCit7CisJaWYgKEpCX1JPT1Rf SVNfU0NBTEFSKGpiKSkKKwl7CisJCUpzb25iVmFsdWUJdjsKKworCQkodm9pZCkgSnNvbmJFeHRy YWN0U2NhbGFyKCZqYi0+cm9vdCwgJnYpOworCisJCWlmICh2LnR5cGUgPT0gamJ2U3RyaW5nKQor CQkJcmV0dXJuIHBuc3RyZHVwKHYudmFsLnN0cmluZy52YWwsIHYudmFsLnN0cmluZy5sZW4pOwor CQllbHNlIGlmICh2LnR5cGUgPT0gamJ2Qm9vbCkKKwkJCXJldHVybiBwc3RyZHVwKHYudmFsLmJv b2xlYW4gPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKwkJZWxzZSBpZiAodi50eXBlID09IGpidk51bWVy aWMpCisJCQlyZXR1cm4gRGF0dW1HZXRDU3RyaW5nKERpcmVjdEZ1bmN0aW9uQ2FsbDEobnVtZXJp Y19vdXQsCisJCQkJCQkJCQkJCQkJICAgUG9pbnRlckdldERhdHVtKHYudmFsLm51bWVyaWMpKSk7 CisJCWVsc2UgaWYgKHYudHlwZSA9PSBqYnZOdWxsKQorCQkJcmV0dXJuIHBzdHJkdXAoIm51bGwi KTsKKwkJZWxzZQorCQl7CisJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGpzb25iIHZhbHVl IHR5cGUgJWQiLCB2LnR5cGUpOworCQkJcmV0dXJuIE5VTEw7CisJCX0KKwl9CisJZWxzZQorCQly ZXR1cm4gSnNvbmJUb0NTdHJpbmcoTlVMTCwgJmpiLT5yb290LCBWQVJTSVpFKGpiKSk7Cit9CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9qc29uYi5oIGIvc3JjL2luY2x1ZGUvdXRpbHMv anNvbmIuaAppbmRleCBlMzhkZmQ0OTAxLi5kNTg5YWNlNWEyIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS91dGlscy9qc29uYi5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25iLmgKQEAgLTQy Miw2ICs0MjIsNyBAQCBleHRlcm4gY2hhciAqSnNvbmJUb0NTdHJpbmcoU3RyaW5nSW5mbyBvdXQs IEpzb25iQ29udGFpbmVyICppbiwKIAkJCQkJCQlpbnQgZXN0aW1hdGVkX2xlbik7CiBleHRlcm4g Y2hhciAqSnNvbmJUb0NTdHJpbmdJbmRlbnQoU3RyaW5nSW5mbyBvdXQsIEpzb25iQ29udGFpbmVy ICppbiwKIAkJCQkJCQkJICBpbnQgZXN0aW1hdGVkX2xlbik7CitleHRlcm4gY2hhciAqSnNvbmJV bnF1b3RlKEpzb25iICpqYik7CiBleHRlcm4gYm9vbCBKc29uYkV4dHJhY3RTY2FsYXIoSnNvbmJD b250YWluZXIgKmpiYywgSnNvbmJWYWx1ZSAqcmVzKTsKIGV4dGVybiBjb25zdCBjaGFyICpKc29u YlR5cGVOYW1lKEpzb25iVmFsdWUgKnZhbCk7CiAKLS0gCjIuMzUuMwoK --000000000000aae962060f3871e9 Content-Type: application/octet-stream; name="v35-0007-SQL-JSON-query-functions.patch" Content-Disposition: attachment; filename="v35-0007-SQL-JSON-query-functions.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lrj915p46 RnJvbSBiZDc1OWZlZjRlOWVhNzYyZDU4YWIxNDI0ZjMyZGI5YTRiMTU1NTA2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMTggSmFuIDIwMjQgMTc6NTk6NTYgKzA5MDAKU3ViamVjdDogW1BBVENIIHYz NSA3LzhdIFNRTC9KU09OIHF1ZXJ5IGZ1bmN0aW9ucwpNSU1FLVZlcnNpb246IDEuMApDb250ZW50 LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGlu ZzogOGJpdAoKVGhpcyBpbnRyb2R1Y2VzIHRoZSBmb2xsb3dpbmcgU1FML0pTT04gZnVuY3Rpb25z IGZvciBxdWVyeWluZyBKU09OCmRhdGEgdXNpbmcganNvbnBhdGggZXhwcmVzc2lvbnM6CgpKU09O X0VYSVNUUygpCkpTT05fUVVFUlkoKQpKU09OX1ZBTFVFKCkKCkpTT05fRVhJU1RTKCkgdGVzdHMg aWYgdGhlIGpzb25wYXRoIGV4cHJlc3Npb24gYXBwbGllZCB0byB0aGUganNvbmIKdmFsdWUgeWll bGRzIGFueSB2YWx1ZXMuCgpKU09OX1ZBTFVFKCkgbXVzdCByZXR1cm4gYSBzaW5nbGUgdmFsdWUs IGFuZCBhbiBlcnJvciBvY2N1cnMgaWYgaXQKdHJpZXMgdG8gcmV0dXJuIG11bHRpcGxlIHZhbHVl cy4KCkpTT05fUVVFUlkoKSBtdXN0IHJldHVybiBhIGpzb24gb2JqZWN0IG9yIGFycmF5LCBhbmQg dGhlcmUgYXJlCnZhcmlvdXMgV1JBUFBFUiBvcHRpb25zIGZvciBoYW5kbGluZyBzY2FsYXIgb3Ig bXVsdGktdmFsdWUgcmVzdWx0cy4KQm90aCB0aGVzZSBmdW5jdGlvbnMgaGF2ZSBvcHRpb25zIGZv ciBoYW5kbGluZyBFTVBUWSBhbmQgRVJST1IKY29uZGl0aW9ucy4KCkFsbCBvZiB0aGVzZSBmdW5j dGlvbnMgb25seSBvcGVyYXRlIG9uIGpzb25iLiBUaGUgd29ya2Fyb3VuZCBmb3Igbm93CmlzIHRv IGNhc3QgdGhlIGFyZ3VtZW50IHRvIGpzb25iLgoKQXV0aG9yOiBOaWtpdGEgR2x1a2hvdiA8bi5n bHVob3ZAcG9zdGdyZXNwcm8ucnU+CkF1dGhvcjogVGVvZG9yIFNpZ2FldiA8dGVvZG9yQHNpZ2Fl di5ydT4KQXV0aG9yOiBPbGVnIEJhcnR1bm92IDxvYmFydHVub3ZAZ21haWwuY29tPgpBdXRob3I6 IEFsZXhhbmRlciBLb3JvdGtvdiA8YWVrb3JvdGtvdkBnbWFpbC5jb20+CkF1dGhvcjogQW5kcmV3 IER1bnN0YW4gPGFuZHJld0BkdW5zbGFuZS5uZXQ+CkF1dGhvcjogQW1pdCBMYW5nb3RlIDxhbWl0 bGFuZ290ZTA5QGdtYWlsLmNvbT4KQXV0aG9yOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNl bnRyYXV0Lm9yZz4KQXV0aG9yOiBKaWFuIEhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CgpSZXZpZXdlcnMgaGF2ZSBpbmNsdWRlZCAoaW4gbm8gcGFydGljdWxhciBvcmRlcikgQW5kcmVz IEZyZXVuZCwgQWxleGFuZGVyCktvcm90a292LCBQYXZlbCBTdGVodWxlLCBBbmRyZXcgQWxzdXAs IEVyaWsgUmlqa2VycywgWmlob25nIFl1LApIaW1hbnNodSBVcGFkaHlheWEsIERhbmllbCBHdXN0 YWZzc29uLCBKdXN0aW4gUHJ5emJ5LCDDgWx2YXJvIEhlcnJlcmEsCmppYW4gaGUsIEFudG9uIEEu IE1lbG5pa292LCBOaWtpdGEgTWFsYWtob3YsIFBldGVyIEVpc2VudHJhdXQKCkRpc2N1c3Npb246 IGh0dHBzOi8vcG9zdGdyLmVzL20vY2QwYmI5MzUtMDE1OC03OGE3LTA4YjUtOTA0ODg2ZGVhYzRi QHBvc3RncmVzcHJvLnJ1CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vMjAyMjA2MTYy MzMxMzAucnBhcml2YWZpcHQ2ZG9qM0BhbGFwMy5hbmFyYXplbC5kZQpEaXNjdXNzaW9uOiBodHRw czovL3Bvc3Rnci5lcy9tL2FiZDliODNiLWFhNjYtZjIzMC0zZDZkLTczNDgxN2YwOTk1ZCU0MHBv c3RncmVzcWwub3JnCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0ErSGl3cUU0WFRk ZmIxblc9T2pveV90UVNSaFl0LXFfa2I2aTVkNHhjS3lyTEMxTmJnQG1haWwuZ21haWwuY29tCi0t LQogZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbCAgICAgICAgICAgICAgICAgICAgICB8ICAxNjIgKysr CiBzcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQgICAgICAgIHwgICAxMiArLQog c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYyAgICAgICAgICAgICB8ICAzNDQgKysrKysr CiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jICAgICAgIHwgIDM3MCArKysr KystCiBzcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYyAgICAgICAgIHwgIDE0MCAr KysKIHNyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfdHlwZXMuYyAgICAgICAgfCAgICAzICsK IHNyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jICAgICAgICAgICAgICAgfCAgIDE4ICsKIHNy Yy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jICAgICAgICAgICAgICAgfCAgMjMzICsrKy0KIHNy Yy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMgICAgICAgfCAgICAzICstCiBzcmMv YmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMgICAgICAgIHwgICAxOSArCiBzcmMvYmFj a2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgIHwgIDE4OCArKystCiBzcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jICAgICAgICAgICAgIHwgIDYxMSArKysrKysrKysrLQog c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jICAgICAgICAgICB8ICAgMTUgKwogc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2V4ZWMuYyAgICAgICB8ICAgIDIgKy0KIHNyYy9i YWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyAgICAgICAgICAgfCAgMTM2ICsrKwogc3JjL2lu Y2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaCAgICAgICAgICAgICB8ICAgMjQgKy0KIHNyYy9pbmNs dWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICAgICAgfCAgIDg2ICsrCiBzcmMvaW5jbHVk ZS9ub2Rlcy9tYWtlZnVuY3MuaCAgICAgICAgICAgICAgIHwgICAgMiArCiBzcmMvaW5jbHVkZS9u b2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAgICAgIHwgICA0NyArCiBzcmMvaW5jbHVkZS9ub2Rl cy9wcmltbm9kZXMuaCAgICAgICAgICAgICAgIHwgIDE2NCArKysKIHNyYy9pbmNsdWRlL3BhcnNl ci9rd2xpc3QuaCAgICAgICAgICAgICAgICAgfCAgIDExICsKIHNyYy9pbnRlcmZhY2VzL2VjcGcv cHJlcHJvYy9lY3BnLnRyYWlsZXIgICAgfCAgIDI4ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvanNvbl9zcWxqc29uLm91dCAgfCAgIDE4ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv anNvbmJfc3FsanNvbi5vdXQgfCAxMDczICsrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3Jl Z3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgICAgICAgICAgfCAgICAyICstCiBzcmMvdGVzdC9yZWdy ZXNzL3NxbC9qc29uX3NxbGpzb24uc3FsICAgICAgIHwgICAxMSArCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC9qc29uYl9zcWxqc29uLnNxbCAgICAgIHwgIDM1MCArKysrKysKIHNyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgfCAgIDE3ICsKIDI4IGZpbGVzIGNoYW5nZWQs IDQwNTMgaW5zZXJ0aW9ucygrKSwgMzYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uX3NxbGpzb24ub3V0CiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYl9zcWxqc29uLm91dAogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25fc3FsanNvbi5zcWwKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYl9zcWxqc29uLnNxbAoKZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21s CmluZGV4IGNlYzIxZTQyYzAuLjIxZmQ2NzEyYjggMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9m dW5jLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbApAQCAtMTgxNjIsNiArMTgxNjIs MTY4IEBAICQuKiA/IChAIGxpa2VfcmVnZXggIl5cXGQrJCIpCiA8L3Byb2dyYW1saXN0aW5nPgog ICAgIDwvcGFyYT4KICAgIDwvc2VjdDM+CisKKyAgIDxzZWN0MyBpZD0ic3FsanNvbi1xdWVyeS1m dW5jdGlvbnMiPgorICAgIDx0aXRsZT5TUUwvSlNPTiBRdWVyeSBGdW5jdGlvbnM8L3RpdGxlPgor ICA8cGFyYT4KKyAgIDx4cmVmIGxpbmtlbmQ9ImZ1bmN0aW9ucy1zcWxqc29uLXF1ZXJ5aW5nIi8+ IGRldGFpbHMgdGhlIFNRTC9KU09OCisgICBmdW5jdGlvbnMgdGhhdCBjYW4gYmUgdXNlZCB0byBx dWVyeSBKU09OIGRhdGEuCisgIDwvcGFyYT4KKworICA8bm90ZT4KKyAgIDxwYXJhPgorICAgIFNR TC9KU09OIHBhdGggZXhwcmVzc2lvbiBjYW4gY3VycmVudGx5IG9ubHkgYWNjZXB0IHZhbHVlcyBv ZiB0aGUKKyAgICA8dHlwZT5qc29uYjwvdHlwZT4gdHlwZSwgc28gaXQgbWlnaHQgYmUgbmVjZXNz YXJ5IHRvIGNhc3QgdGhlCisgICAgPHJlcGxhY2VhYmxlPmNvbnRleHRfaXRlbTwvcmVwbGFjZWFi bGU+IGFyZ3VtZW50IG9mIHRoZXNlIGZ1bmN0aW9ucyB0bworICAgIDx0eXBlPmpzb25iPC90eXBl Pi4KKyAgIDwvcGFyYT4KKyAgPC9ub3RlPgorCisgIDx0YWJsZSBpZD0iZnVuY3Rpb25zLXNxbGpz b24tcXVlcnlpbmciPgorICAgPHRpdGxlPlNRTC9KU09OIFF1ZXJ5IEZ1bmN0aW9uczwvdGl0bGU+ CisgICA8dGdyb3VwIGNvbHM9IjEiPgorICAgIDx0aGVhZD4KKyAgICAgPHJvdz4KKyAgICAgIDxl bnRyeSByb2xlPSJmdW5jX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+ CisgICAgICAgIEZ1bmN0aW9uIHNpZ25hdHVyZQorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFy YT4KKyAgICAgICAgRGVzY3JpcHRpb24KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+Cisg ICAgICAgIEV4YW1wbGUocykKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKyAg ICA8L3RoZWFkPgorICAgIDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJm dW5jX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+CisgICAgICAgIDxp bmRleHRlcm0+PHByaW1hcnk+anNvbl9leGlzdHM8L3ByaW1hcnk+PC9pbmRleHRlcm0+CisgICAg ICAgIDxmdW5jdGlvbj5qc29uX2V4aXN0czwvZnVuY3Rpb24+ICgKKyAgICAgICAgPHJlcGxhY2Vh YmxlPmNvbnRleHRfaXRlbTwvcmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGU+cGF0aF9leHByZXNz aW9uPC9yZXBsYWNlYWJsZT4gPG9wdGlvbmFsPiA8bGl0ZXJhbD5QQVNTSU5HPC9saXRlcmFsPiB7 IDxyZXBsYWNlYWJsZT52YWx1ZTwvcmVwbGFjZWFibGU+IDxsaXRlcmFsPkFTPC9saXRlcmFsPiA8 cmVwbGFjZWFibGU+dmFybmFtZTwvcmVwbGFjZWFibGU+IH0gPG9wdGlvbmFsPiwgLi4uPC9vcHRp b25hbD48L29wdGlvbmFsPgorICAgICAgICA8b3B0aW9uYWw+IHsgPGxpdGVyYWw+VFJVRTwvbGl0 ZXJhbD4gfCA8bGl0ZXJhbD5GQUxTRTwvbGl0ZXJhbD4gfDxsaXRlcmFsPiBVTktOT1dOPC9saXRl cmFsPiB8IDxsaXRlcmFsPkVSUk9SPC9saXRlcmFsPiB9IDxsaXRlcmFsPk9OIEVSUk9SPC9saXRl cmFsPiA8L29wdGlvbmFsPikKKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAg IFJldHVybnMgdHJ1ZSBpZiB0aGUgU1FML0pTT04gPHJlcGxhY2VhYmxlPnBhdGhfZXhwcmVzc2lv bjwvcmVwbGFjZWFibGU+CisgICAgICAgIGFwcGxpZWQgdG8gdGhlIDxyZXBsYWNlYWJsZT5jb250 ZXh0X2l0ZW08L3JlcGxhY2VhYmxlPiB1c2luZyB0aGUKKyAgICAgICAgPHJlcGxhY2VhYmxlPnZh bHVlPC9yZXBsYWNlYWJsZT5zIHlpZWxkcyBhbnkgaXRlbXMuCisgICAgICAgIFRoZSA8bGl0ZXJh bD5PTiBFUlJPUjwvbGl0ZXJhbD4gY2xhdXNlIHNwZWNpZmllcyB0aGUgYmVoYXZpb3IgaWYKKyAg ICAgICAgYW4gZXJyb3Igb2NjdXJzOyB0aGUgZGVmYXVsdCBpcyB0byByZXR1cm4gdGhlIDx0eXBl PmJvb2xlYW48L3R5cGU+CisgICAgICAgIDxsaXRlcmFsPkZBTFNFPC9saXRlcmFsPiB2YWx1ZS4K KyAgICAgICAgTm90ZSB0aGF0IGlmIHRoZSA8cmVwbGFjZWFibGU+cGF0aF9leHByZXNzaW9uPC9y ZXBsYWNlYWJsZT4KKyAgICAgICAgaXMgPGxpdGVyYWw+c3RyaWN0PC9saXRlcmFsPiwgYW4gZXJy b3IgaXMgZ2VuZXJhdGVkIGlmIGl0IHlpZWxkcyBubworICAgICAgICBpdGVtcywgcHJvdmlkZWQg dGhlIHNwZWNpZmllZCA8bGl0ZXJhbD5PTiBFUlJPUjwvbGl0ZXJhbD4gYmVoYXZpb3IgaXMKKyAg ICAgICAgPGxpdGVyYWw+RVJST1I8L2xpdGVyYWw+LgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8 cGFyYT4KKyAgICAgICAgPGxpdGVyYWw+anNvbl9leGlzdHMoanNvbmIgJ3sia2V5MSI6IFsxLDIs M119JywgJ3N0cmljdCAkLmtleTFbKl0gPyAoQCA+IDIpJyk8L2xpdGVyYWw+CisgICAgICAgIDxy ZXR1cm52YWx1ZT50PC9yZXR1cm52YWx1ZT4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+ CisgICAgICAgIDxsaXRlcmFsPmpzb25fZXhpc3RzKGpzb25iICd7ImEiOiBbMSwyLDNdfScsICds YXggJC5hWzVdJyBFUlJPUiBPTiBFUlJPUik8L2xpdGVyYWw+CisgICAgICAgIDxyZXR1cm52YWx1 ZT5mPC9yZXR1cm52YWx1ZT4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAg IDxsaXRlcmFsPmpzb25fZXhpc3RzKGpzb25iICd7ImEiOiBbMSwyLDNdfScsICdzdHJpY3QgJC5h WzVdJyBFUlJPUiBPTiBFUlJPUik8L2xpdGVyYWw+CisgICAgICAgIDxyZXR1cm52YWx1ZT5FUlJP UjogIGpzb25wYXRoIGFycmF5IHN1YnNjcmlwdCBpcyBvdXQgb2YgYm91bmRzPC9yZXR1cm52YWx1 ZT4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAg IDxlbnRyeSByb2xlPSJmdW5jX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJmdW5jX3NpZ25hdHVy ZSI+CisgICAgICAgIDxpbmRleHRlcm0+PHByaW1hcnk+anNvbl9xdWVyeTwvcHJpbWFyeT48L2lu ZGV4dGVybT4KKyAgICAgICAgPGZ1bmN0aW9uPmpzb25fcXVlcnk8L2Z1bmN0aW9uPiAoCisgICAg ICAgIDxyZXBsYWNlYWJsZT5jb250ZXh0X2l0ZW08L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxl PnBhdGhfZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IDxvcHRpb25hbD4gPGxpdGVyYWw+UEFTU0lO RzwvbGl0ZXJhbD4geyA8cmVwbGFjZWFibGU+dmFsdWU8L3JlcGxhY2VhYmxlPiA8bGl0ZXJhbD5B UzwvbGl0ZXJhbD4gPHJlcGxhY2VhYmxlPnZhcm5hbWU8L3JlcGxhY2VhYmxlPiB9IDxvcHRpb25h bD4sIC4uLjwvb3B0aW9uYWw+PC9vcHRpb25hbD4KKyAgICAgICAgPG9wdGlvbmFsPiA8bGl0ZXJh bD5SRVRVUk5JTkc8L2xpdGVyYWw+IDxyZXBsYWNlYWJsZT5kYXRhX3R5cGU8L3JlcGxhY2VhYmxl PiA8b3B0aW9uYWw+IDxsaXRlcmFsPkZPUk1BVCBKU09OPC9saXRlcmFsPiA8b3B0aW9uYWw+IDxs aXRlcmFsPkVOQ09ESU5HIFVURjg8L2xpdGVyYWw+IDwvb3B0aW9uYWw+IDwvb3B0aW9uYWw+IDwv b3B0aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD4geyA8bGl0ZXJhbD5XSVRIT1VUPC9saXRlcmFs PiB8IDxsaXRlcmFsPldJVEg8L2xpdGVyYWw+IHsgPGxpdGVyYWw+Q09ORElUSU9OQUw8L2xpdGVy YWw+IHwgPG9wdGlvbmFsPjxsaXRlcmFsPlVOQ09ORElUSU9OQUw8L2xpdGVyYWw+PC9vcHRpb25h bD4gfSB9IDxvcHRpb25hbD4gPGxpdGVyYWw+QVJSQVk8L2xpdGVyYWw+IDwvb3B0aW9uYWw+IDxs aXRlcmFsPldSQVBQRVI8L2xpdGVyYWw+IDwvb3B0aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD4g eyA8bGl0ZXJhbD5LRUVQPC9saXRlcmFsPiB8IDxsaXRlcmFsPk9NSVQ8L2xpdGVyYWw+IH0gPGxp dGVyYWw+UVVPVEVTPC9saXRlcmFsPiA8b3B0aW9uYWw+IDxsaXRlcmFsPk9OIFNDQUxBUiBTVFJJ Tkc8L2xpdGVyYWw+IDwvb3B0aW9uYWw+IDwvb3B0aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD4g eyA8bGl0ZXJhbD5FUlJPUjwvbGl0ZXJhbD4gfCA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPiB8IDxs aXRlcmFsPkVNUFRZPC9saXRlcmFsPiB7IDxvcHRpb25hbD4gPGxpdGVyYWw+QVJSQVk8L2xpdGVy YWw+IDwvb3B0aW9uYWw+IHwgPGxpdGVyYWw+T0JKRUNUPC9saXRlcmFsPiB9IHwgPGxpdGVyYWw+ REVGQVVMVDwvbGl0ZXJhbD4gPHJlcGxhY2VhYmxlPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiB9 IDxsaXRlcmFsPk9OIEVNUFRZPC9saXRlcmFsPiA8L29wdGlvbmFsPgorICAgICAgICA8b3B0aW9u YWw+IHsgPGxpdGVyYWw+RVJST1I8L2xpdGVyYWw+IHwgPGxpdGVyYWw+TlVMTDwvbGl0ZXJhbD4g fCA8bGl0ZXJhbD5FTVBUWTwvbGl0ZXJhbD4geyA8b3B0aW9uYWw+IDxsaXRlcmFsPkFSUkFZPC9s aXRlcmFsPiA8L29wdGlvbmFsPiB8IDxsaXRlcmFsPk9CSkVDVDwvbGl0ZXJhbD4gfSB8IDxsaXRl cmFsPkRFRkFVTFQ8L2xpdGVyYWw+IDxyZXBsYWNlYWJsZT5leHByZXNzaW9uPC9yZXBsYWNlYWJs ZT4gfSA8bGl0ZXJhbD5PTiBFUlJPUjwvbGl0ZXJhbD4gPC9vcHRpb25hbD4pCisgICAgICA8L3Bh cmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIFJldHVybnMgdGhlIHJlc3VsdCBvZiBhcHBseWlu ZyB0aGUKKyAgICAgICAgPHJlcGxhY2VhYmxlPnBhdGhfZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+ IHRvIHRoZQorICAgICAgICA8cmVwbGFjZWFibGU+Y29udGV4dF9pdGVtPC9yZXBsYWNlYWJsZT4g dXNpbmcgdGhlCisgICAgICAgIDxyZXBsYWNlYWJsZT52YWx1ZTwvcmVwbGFjZWFibGU+cy4KKyAg ICAgICAgVGhpcyBmdW5jdGlvbiBtdXN0IHJldHVybiBhIEpTT04gc3RyaW5nLCBzbyBpZiB0aGUg cGF0aCBleHByZXNzaW9uCisgICAgICAgIHJldHVybnMgbXVsdGlwbGUgU1FML0pTT04gaXRlbXMs IHlvdSBtdXN0IHdyYXAgdGhlIHJlc3VsdCB1c2luZyB0aGUKKyAgICAgICAgPGxpdGVyYWw+V0lU SCBXUkFQUEVSPC9saXRlcmFsPiBjbGF1c2UuIElmIHRoZSB3cmFwcGVyIGlzCisgICAgICAgIDxs aXRlcmFsPlVOQ09ORElUSU9OQUw8L2xpdGVyYWw+LCBhbiBhcnJheSB3cmFwcGVyIHdpbGwgYWx3 YXlzCisgICAgICAgIGJlIGFwcGxpZWQsIGV2ZW4gaWYgdGhlIHJldHVybmVkIHZhbHVlIGlzIGFs cmVhZHkgYSBzaW5nbGUgSlNPTiBvYmplY3QKKyAgICAgICAgb3IgYW4gYXJyYXksIGJ1dCBpZiBp dCBpcyA8bGl0ZXJhbD5DT05ESVRJT05BTDwvbGl0ZXJhbD4sIGl0IHdpbGwgbm90IGJlCisgICAg ICAgIGFwcGxpZWQgdG8gYSBzaW5nbGUgYXJyYXkgb3Igb2JqZWN0LiA8bGl0ZXJhbD5VTkNPTkRJ VElPTkFMPC9saXRlcmFsPgorICAgICAgICBpcyB0aGUgZGVmYXVsdC4gIElmIHRoZSByZXN1bHQg aXMgYSBzY2FsYXIgc3RyaW5nLCBieSBkZWZhdWx0IHRoZSB2YWx1ZQorICAgICAgICByZXR1cm5l ZCB3aWxsIGhhdmUgc3Vycm91bmRpbmcgcXVvdGVzIG1ha2luZyBpdCBhIHZhbGlkIEpTT04gdmFs dWUsCisgICAgICAgIHdoaWNoIGNhbiBiZSBtYWRlIGV4cGxpY2l0IGJ5IHNwZWNpZnlpbmcgPGxp dGVyYWw+S0VFUCBRVU9URVM8L2xpdGVyYWw+LgorICAgICAgICBDb252ZXJzZWx5LCBxdW90ZXMg Y2FuIGJlIG9taXR0ZWQgYnkgc3BlY2lmeWluZyA8bGl0ZXJhbD5PTUlUIFFVT1RFUzwvbGl0ZXJh bD4uCisgICAgICAgIFRoZSA8bGl0ZXJhbD5SRVRVUk5JTkc8L2xpdGVyYWw+IGNsYXVzZSBjYW4g YmUgdXNlZCB0byBzcGVjaWZ5IHRoZQorICAgICAgICA8cmVwbGFjZWFibGU+ZGF0YV90eXBlPC9y ZXBsYWNlYWJsZT4gb2YgdGhlIHJlc3VsdCB2YWx1ZS4gIEl0IG11c3QKKyAgICAgICAgYmUgYSB0 eXBlIGZvciB3aGljaCB0aGVyZSBpcyBhIGNhc3QgZnJvbSA8dHlwZT50ZXh0PC90eXBlPiB0byB0 aGF0IHR5cGUuCisgICAgICAgIElmIG5vIDxsaXRlcmFsPlJFVFVSTklORzwvbGl0ZXJhbD4gaXMg c3BjaWZpZWQsIHRoZSByZXR1cm5lZCB2YWx1ZSB3aWxsCisgICAgICAgIGJlIG9mIHR5cGUgPHR5 cGU+anNvbmI8L3R5cGU+LgorICAgICAgICBUaGUgPGxpdGVyYWw+T04gRU1QVFk8L2xpdGVyYWw+ IGNsYXVzZSBzcGVjaWZpZXMgdGhlIGJlaGF2aW9yIGlmIHRoZQorICAgICAgICA8cmVwbGFjZWFi bGU+cGF0aF9leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4geWllbGRzIG5vIHZhbHVlIGF0IGFsbDsg dGhlCisgICAgICAgIGRlZmF1bHQgd2hlbiA8bGl0ZXJhbD5PTiBFTVBUWTwvbGl0ZXJhbD4gaXMg bm90IHNwZWNpZmllZCBpcyB0byByZXR1cm4gYQorICAgICAgICBudWxsIHZhbHVlLiAgVGhlIDxs aXRlcmFsPk9OIEVSUk9SPC9saXRlcmFsPiBjbGF1c2Ugc3BlY2lmaWVzIHRoZSBiZWhhdmlvcgor ICAgICAgICBpZiBhbiBlcnJvciBvY2N1cnMgYXMgYSByZXN1bHQgb2YgPHR5cGU+anNvbnBhdGg8 L3R5cGU+IGV2YWx1YXRpb24KKyAgICAgICAgKGluY2x1ZGluZyBjYXN0IHRvIHRoZSBvdXRwdXQg dHlwZSkgb3IgZHVyaW5nIHRoZSBleGVjdXRpb24gb2YKKyAgICAgICAgPGxpdGVyYWw+T04gRU1Q VFk8L2xpdGVyYWw+IGJlaGF2aW9yICh0aGF0IHdhcyBjYXVzZWQgYnkgZW1wdHkgcmVzdWx0IG9m CisgICAgICAgIDx0eXBlPmpzb25wYXRoPC90eXBlPiBldmFsdWF0aW9uKTsgdGhlIGRlZmF1bHQg d2hlbgorICAgICAgICA8bGl0ZXJhbD5PTiBFUlJPUjwvbGl0ZXJhbD4gaXMgbm90IHNwZWNpZmll ZCBpcyB0byByZXR1cm4gYSBudWxsIHZhbHVlLgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFy YT4KKyAgICAgICAgPGxpdGVyYWw+anNvbl9xdWVyeShqc29uYiAnWzEsWzIsM10sbnVsbF0nLCAn bGF4ICRbKl1bMV0nIFdJVEggQ09ORElUSU9OQUwgV1JBUFBFUik8L2xpdGVyYWw+CisgICAgICAg IDxyZXR1cm52YWx1ZT5bM108L3JldHVybnZhbHVlPgorICAgICAgPC9wYXJhPjwvZW50cnk+Cisg ICAgIDwvcm93PgorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImZ1bmNfdGFibGVfZW50 cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KKyAgICAgICAgPGluZGV4dGVybT48cHJp bWFyeT5qc29uX3ZhbHVlPC9wcmltYXJ5PjwvaW5kZXh0ZXJtPgorICAgICAgICA8ZnVuY3Rpb24+ anNvbl92YWx1ZTwvZnVuY3Rpb24+ICgKKyAgICAgICAgPHJlcGxhY2VhYmxlPmNvbnRleHRfaXRl bTwvcmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGU+cGF0aF9leHByZXNzaW9uPC9yZXBsYWNlYWJs ZT4KKyAgICAgICAgPG9wdGlvbmFsPiA8bGl0ZXJhbD5QQVNTSU5HPC9saXRlcmFsPiB7IDxyZXBs YWNlYWJsZT52YWx1ZTwvcmVwbGFjZWFibGU+IDxsaXRlcmFsPkFTPC9saXRlcmFsPiA8cmVwbGFj ZWFibGU+dmFybmFtZTwvcmVwbGFjZWFibGU+IH0gPG9wdGlvbmFsPiwgLi4uPC9vcHRpb25hbD48 L29wdGlvbmFsPgorICAgICAgICA8b3B0aW9uYWw+IDxsaXRlcmFsPlJFVFVSTklORzwvbGl0ZXJh bD4gPHJlcGxhY2VhYmxlPmRhdGFfdHlwZTwvcmVwbGFjZWFibGU+IDwvb3B0aW9uYWw+CisgICAg ICAgIDxvcHRpb25hbD4geyA8bGl0ZXJhbD5FUlJPUjwvbGl0ZXJhbD4gfCA8bGl0ZXJhbD5OVUxM PC9saXRlcmFsPiB8IDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IDxyZXBsYWNlYWJsZT5leHBy ZXNzaW9uPC9yZXBsYWNlYWJsZT4gfSA8bGl0ZXJhbD5PTiBFTVBUWTwvbGl0ZXJhbD4gPC9vcHRp b25hbD4KKyAgICAgICAgPG9wdGlvbmFsPiB7IDxsaXRlcmFsPkVSUk9SPC9saXRlcmFsPiB8IDxs aXRlcmFsPk5VTEw8L2xpdGVyYWw+IHwgPGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJhbD4gPHJlcGxh Y2VhYmxlPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiB9IDxsaXRlcmFsPk9OIEVSUk9SPC9saXRl cmFsPiA8L29wdGlvbmFsPikKKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAg IFJldHVybnMgdGhlIHJlc3VsdCBvZiBhcHBseWluZyB0aGUKKyAgICAgICAgPHJlcGxhY2VhYmxl PnBhdGhfZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IHRvIHRoZQorICAgICAgICA8cmVwbGFjZWFi bGU+Y29udGV4dF9pdGVtPC9yZXBsYWNlYWJsZT4gdXNpbmcgdGhlCisgICAgICAgIDxsaXRlcmFs PlBBU1NJTkc8L2xpdGVyYWw+IDxyZXBsYWNlYWJsZT52YWx1ZTwvcmVwbGFjZWFibGU+cy4gVGhl CisgICAgICAgIGV4dHJhY3RlZCB2YWx1ZSBtdXN0IGJlIGEgc2luZ2xlIDxhY3JvbnltPlNRTC9K U09OPC9hY3JvbnltPiBzY2FsYXIKKyAgICAgICAgaXRlbS4gRm9yIHJlc3VsdHMgdGhhdCBhcmUg b2JqZWN0cyBvciBhcnJheXMsIHVzZSB0aGUKKyAgICAgICAgPGZ1bmN0aW9uPmpzb25fcXVlcnk8 L2Z1bmN0aW9uPiBmdW5jdGlvbiBpbnN0ZWFkLgorICAgICAgICBUaGUgPGxpdGVyYWw+UkVUVVJO SU5HPC9saXRlcmFsPiBjbGF1c2UgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSB0aGUKKyAgICAgICAg PHJlcGxhY2VhYmxlPmRhdGFfdHlwZTwvcmVwbGFjZWFibGU+IG9mIHRoZSByZXN1bHQgdmFsdWUu ICBJdCBtdXN0CisgICAgICAgIGJlIGEgdHlwZSBmb3Igd2hpY2ggdGhlcmUgYXJlIGNhc3RzIGZy b20gYWxsIHBvc3NpYmxlIEpTT04gc2NhbGFyCisgICAgICAgIHZhbHVlIHR5cGVzICg8dHlwZT50 ZXh0PC90eXBlPiwgPHR5cGU+Ym9vbGVhbjwvdHlwZT4sIDx0eXBlPm51bWVyaWM8L3R5cGU+LAor ICAgICAgICBhbmQgdmFyaW91cyBkYXRldGltZSB0eXBlcykgdG8gdGhhdCB0eXBlLiAgSWYgbm8g PGxpdGVyYWw+UkVUVVJOSU5HPC9saXRlcmFsPgorICAgICAgICBpcyBzcGNpZmllZCwgdGhlIHJl dHVybmVkIHZhbHVlIHdpbGwgYmUgb2YgdHlwZSA8dHlwZT50ZXh0PC90eXBlPi4KKyAgICAgICAg VGhlIDxsaXRlcmFsPk9OIEVSUk9SPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+T04gRU1QVFk8L2xp dGVyYWw+CisgICAgICAgIGNsYXVzZXMgaGF2ZSBzaW1pbGFyIHNlbWFudGljcyBhcyBtZW50aW9u ZWQgaW4gdGhlIGRlc2NyaXB0aW9uIG9mCisgICAgICAgIDxmdW5jdGlvbj5qc29uX3F1ZXJ5PC9m dW5jdGlvbj4uICBOb3RlIHRoYXQgc2NhbGFyIHN0cmluZ3MgcmV0dXJuZWQKKyAgICAgICAgYnkg PGZ1bmN0aW9uPmpzb25fdmFsdWU8L2Z1bmN0aW9uPiBhbHdheXMgaGF2ZSB0aGVpciBxdW90ZXMg cmVtb3ZlZCwKKyAgICAgICAgZXF1aXZhbGVudCB0byB3aGF0IG9uZSB3b3VsZCBnZXQgd2l0aCA8 bGl0ZXJhbD5PTUlUIFFVT1RFUzwvbGl0ZXJhbD4KKyAgICAgICAgd2hlbiB1c2luZyA8ZnVuY3Rp b24+anNvbl9xdWVyeTwvZnVuY3Rpb24+LgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4K KyAgICAgICAgPGxpdGVyYWw+anNvbl92YWx1ZShqc29uYiAnIjEyMy40NSInLCAnJCcgUkVUVVJO SU5HIGZsb2F0KTwvbGl0ZXJhbD4KKyAgICAgICAgPHJldHVybnZhbHVlPjEyMy40NTwvcmV0dXJu dmFsdWU+CisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICA8bGl0ZXJhbD5q c29uX3ZhbHVlKGpzb25iICciMDM6MDQgMjAxNS0wMi0wMSInLCAnJC5kYXRldGltZSgiSEgyNDpN SSZuYnNwO1lZWVktTU0tREQiKScgUkVUVVJOSU5HIGRhdGUpPC9saXRlcmFsPgorICAgICAgICA8 cmV0dXJudmFsdWU+MjAxNS0wMi0wMTwvcmV0dXJudmFsdWU+CisgICAgICAgPC9wYXJhPgorICAg ICAgIDxwYXJhPgorICAgICAgICA8bGl0ZXJhbD5qc29uX3ZhbHVlKGpzb25iICdbMSwyXScsICdz dHJpY3QgJFsqXScgREVGQVVMVCA5IE9OIEVSUk9SKTwvbGl0ZXJhbD4KKyAgICAgICAgPHJldHVy bnZhbHVlPjk8L3JldHVybnZhbHVlPgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93 PgorICAgIDwvdGJvZHk+CisgICA8L3Rncm91cD4KKyAgPC90YWJsZT4KKworICAgPC9zZWN0Mz4K ICAgPC9zZWN0Mj4KICA8L3NlY3QxPgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9n L3NxbF9mZWF0dXJlcy50eHQgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQK aW5kZXggODBjNDBlYWY1Ny4uNzU5OGJkOGYyMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9zcWxfZmVhdHVyZXMudHh0CisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1 cmVzLnR4dApAQCAtNTQ4LDE1ICs1NDgsMTUgQEAgVDgxMQlCYXNpYyBTUUwvSlNPTiBjb25zdHJ1 Y3RvciBmdW5jdGlvbnMJCQlZRVMKIFQ4MTIJU1FML0pTT046IEpTT05fT0JKRUNUQUdHCQkJWUVT CQogVDgxMwlTUUwvSlNPTjogSlNPTl9BUlJBWUFHRyB3aXRoIE9SREVSIEJZCQkJWUVTCQogVDgx NAlDb2xvbiBpbiBKU09OX09CSkVDVCBvciBKU09OX09CSkVDVEFHRwkJCVlFUwkKLVQ4MjEJQmFz aWMgU1FML0pTT04gcXVlcnkgb3BlcmF0b3JzCQkJTk8JCitUODIxCUJhc2ljIFNRTC9KU09OIHF1 ZXJ5IG9wZXJhdG9ycwkJCVlFUwkKIFQ4MjIJU1FML0pTT046IElTIEpTT04gV0lUSCBVTklRVUUg S0VZUyBwcmVkaWNhdGUJCQlZRVMJCi1UODIzCVNRTC9KU09OOiBQQVNTSU5HIGNsYXVzZQkJCU5P CQorVDgyMwlTUUwvSlNPTjogUEFTU0lORyBjbGF1c2UJCQlZRVMJCiBUODI0CUpTT05fVEFCTEU6 IHNwZWNpZmljIFBMQU4gY2xhdXNlCQkJTk8JCi1UODI1CVNRTC9KU09OOiBPTiBFTVBUWSBhbmQg T04gRVJST1IgY2xhdXNlcwkJCU5PCQotVDgyNglHZW5lcmFsIHZhbHVlIGV4cHJlc3Npb24gaW4g T04gRVJST1Igb3IgT04gRU1QVFkgY2xhdXNlcwkJCU5PCQorVDgyNQlTUUwvSlNPTjogT04gRU1Q VFkgYW5kIE9OIEVSUk9SIGNsYXVzZXMJCQlZRVMJCitUODI2CUdlbmVyYWwgdmFsdWUgZXhwcmVz c2lvbiBpbiBPTiBFUlJPUiBvciBPTiBFTVBUWSBjbGF1c2VzCQkJWUVTCQogVDgyNwlKU09OX1RB QkxFOiBzaWJsaW5nIE5FU1RFRCBDT0xVTU5TIGNsYXVzZXMJCQlOTwkKLVQ4MjgJSlNPTl9RVUVS WQkJCU5PCQotVDgyOQlKU09OX1FVRVJZOiBhcnJheSB3cmFwcGVyIG9wdGlvbnMJCQlOTwkKK1Q4 MjgJSlNPTl9RVUVSWQkJCVlFUwkKK1Q4MjkJSlNPTl9RVUVSWTogYXJyYXkgd3JhcHBlciBvcHRp b25zCQkJWUVTCQogVDgzMAlFbmZvcmNpbmcgdW5pcXVlIGtleXMgaW4gU1FML0pTT04gY29uc3Ry dWN0b3IgZnVuY3Rpb25zCQkJWUVTCQogVDgzMQlTUUwvSlNPTiBwYXRoIGxhbmd1YWdlOiBzdHJp Y3QgbW9kZQkJCVlFUwkKIFQ4MzIJU1FML0pTT04gcGF0aCBsYW5ndWFnZTogaXRlbSBtZXRob2QJ CQlZRVMJCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwppbmRleCAzMTgxYjExMzZhLi5jZjBiNWU1YjAw IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJ1 dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5jbHVkZSAidXRp bHMvanNvbmZ1bmNzLmgiCisjaW5jbHVkZSAidXRpbHMvanNvbnBhdGguaCIKICNpbmNsdWRlICJ1 dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgogCkBAIC04OCw2 ICs4OSwxMiBAQCBzdGF0aWMgdm9pZCBFeGVjQnVpbGRBZ2dUcmFuc0NhbGwoRXhwclN0YXRlICpz dGF0ZSwgQWdnU3RhdGUgKmFnZ3N0YXRlLAogCQkJCQkJCQkgIEZ1bmN0aW9uQ2FsbEluZm8gZmNp bmZvLCBBZ2dTdGF0ZVBlclRyYW5zIHBlcnRyYW5zLAogCQkJCQkJCQkgIGludCB0cmFuc25vLCBp bnQgc2V0bm8sIGludCBzZXRvZmYsIGJvb2wgaXNoYXNoLAogCQkJCQkJCQkgIGJvb2wgbnVsbGNo ZWNrKTsKK3N0YXRpYyB2b2lkIEV4ZWNJbml0SnNvbkV4cHIoSnNvbkV4cHIgKmpleHByLCBFeHBy U3RhdGUgKnN0YXRlLAorCQkJCQkJCSBEYXR1bSAqcmVzdiwgYm9vbCAqcmVzbnVsbCwKKwkJCQkJ CQkgRXhwckV2YWxTdGVwICpzY3JhdGNoKTsKK3N0YXRpYyBpbnQgRXhlY0luaXRKc29uRXhwckNv ZXJjaW9uKEV4cHJTdGF0ZSAqc3RhdGUsIE5vZGUgKmNvZXJjaW9uLAorCQkJCQkJIEVycm9yU2F2 ZUNvbnRleHQgKmVzY29udGV4dCwKKwkJCQkJCSBEYXR1bSAqcmVzdiwgYm9vbCAqcmVzbnVsbCk7 CiAKIAogLyoKQEAgLTI0MTMsNiArMjQyMCwxNCBAQCBFeGVjSW5pdEV4cHJSZWMoRXhwciAqbm9k ZSwgRXhwclN0YXRlICpzdGF0ZSwKIAkJCQlicmVhazsKIAkJCX0KIAorCQljYXNlIFRfSnNvbkV4 cHI6CisJCQl7CisJCQkJSnNvbkV4cHIgICAqamV4cHIgPSBjYXN0Tm9kZShKc29uRXhwciwgbm9k ZSk7CisKKwkJCQlFeGVjSW5pdEpzb25FeHByKGpleHByLCBzdGF0ZSwgcmVzdiwgcmVzbnVsbCwg JnNjcmF0Y2gpOworCQkJCWJyZWFrOworCQkJfQorCiAJCWNhc2UgVF9OdWxsVGVzdDoKIAkJCXsK IAkJCQlOdWxsVGVzdCAgICpudGVzdCA9IChOdWxsVGVzdCAqKSBub2RlOwpAQCAtNDE4MSwzICs0 MTk2LDMzMiBAQCBFeGVjQnVpbGRQYXJhbVNldEVxdWFsKFR1cGxlRGVzYyBkZXNjLAogCiAJcmV0 dXJuIHN0YXRlOwogfQorCisvKgorICogUHVzaCBzdGVwcyB0byBldmFsdWF0ZSBhIEpzb25FeHBy IGFuZCBpdHMgdmFyaW91cyBzdWJzaWRpYXJ5IGV4cHJlc3Npb25zLgorICovCitzdGF0aWMgdm9p ZAorRXhlY0luaXRKc29uRXhwcihKc29uRXhwciAqamV4cHIsIEV4cHJTdGF0ZSAqc3RhdGUsCisJ CQkJIERhdHVtICpyZXN2LCBib29sICpyZXNudWxsLAorCQkJCSBFeHByRXZhbFN0ZXAgKnNjcmF0 Y2gpCit7CisJSnNvbkV4cHJTdGF0ZSAqanNlc3RhdGUgPSBwYWxsb2MwKHNpemVvZihKc29uRXhw clN0YXRlKSk7CisJSnNvbkV4cHJQb3N0RXZhbFN0YXRlICpwb3N0X2V2YWwgPSAmanNlc3RhdGUt PnBvc3RfZXZhbDsKKwlMaXN0Q2VsbCAgICphcmdleHBybGM7CisJTGlzdENlbGwgICAqYXJnbmFt ZWxjOworCUxpc3QJICAgKmp1bXBzX2lmX3NraXAgPSBOSUw7CisJTGlzdAkgICAqanVtcHNfdG9f Y29lcmNlX2ZpbmlzaCA9IE5JTDsKKwlMaXN0CSAgICpqdW1wc190b19lbmQgPSBOSUw7CisJTGlz dENlbGwgICAqbGM7CisJRXhwckV2YWxTdGVwICphczsKKworCWpzZXN0YXRlLT5qc2V4cHIgPSBq ZXhwcjsKKworCS8qCisJICogRXZhbHVhdGUgZm9ybWF0dGVkX2V4cHIgc3RvcmluZyB0aGUgcmVz dWx0IGludG8KKwkgKiBqc2VzdGF0ZS0+Zm9ybWF0dGVkX2V4cHIuCisJICovCisJRXhlY0luaXRF eHByUmVjKChFeHByICopIGpleHByLT5mb3JtYXR0ZWRfZXhwciwgc3RhdGUsCisJCQkJCSZqc2Vz dGF0ZS0+Zm9ybWF0dGVkX2V4cHIudmFsdWUsCisJCQkJCSZqc2VzdGF0ZS0+Zm9ybWF0dGVkX2V4 cHIuaXNudWxsKTsKKworCS8qIFN0ZXBzIHRvIGp1bXAgdG8gZW5kIGlmIGZvcm1hdHRlZF9leHBy IGV2YWx1YXRlcyB0byBOVUxMICovCisJc2NyYXRjaC0+b3Bjb2RlID0gRUVPUF9KVU1QX0lGX05V TEw7CisJc2NyYXRjaC0+cmVzbnVsbCA9ICZqc2VzdGF0ZS0+Zm9ybWF0dGVkX2V4cHIuaXNudWxs OworCXNjcmF0Y2gtPmQuanVtcC5qdW1wZG9uZSA9IC0xOwkvKiBzZXQgYmVsb3cgKi8KKwlqdW1w c19pZl9za2lwID0gbGFwcGVuZF9pbnQoanVtcHNfaWZfc2tpcCwgc3RhdGUtPnN0ZXBzX2xlbik7 CisJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgc2NyYXRjaCk7CisKKwkvKgorCSAqIEV2YWx1YXRl IHBhdGhzcGVjIGV4cHJlc3Npb24gc3RvcmluZyB0aGUgcmVzdWx0IGludG8KKwkgKiBqc2VzdGF0 ZS0+cGF0aHNwZWMuCisJICovCisJRXhlY0luaXRFeHByUmVjKChFeHByICopIGpleHByLT5wYXRo X3NwZWMsIHN0YXRlLAorCQkJCQkmanNlc3RhdGUtPnBhdGhzcGVjLnZhbHVlLAorCQkJCQkmanNl c3RhdGUtPnBhdGhzcGVjLmlzbnVsbCk7CisKKwkvKiBTdGVwcyB0byBKVU1QIHRvIGVuZCBpZiBw YXRoc3BlYyBldmFsdWF0ZXMgdG8gTlVMTCAqLworCXNjcmF0Y2gtPm9wY29kZSA9IEVFT1BfSlVN UF9JRl9OVUxMOworCXNjcmF0Y2gtPnJlc251bGwgPSAmanNlc3RhdGUtPnBhdGhzcGVjLmlzbnVs bDsKKwlzY3JhdGNoLT5kLmp1bXAuanVtcGRvbmUgPSAtMTsJLyogc2V0IGJlbG93ICovCisJanVt cHNfaWZfc2tpcCA9IGxhcHBlbmRfaW50KGp1bXBzX2lmX3NraXAsIHN0YXRlLT5zdGVwc19sZW4p OworCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsIHNjcmF0Y2gpOworCisJLyogU3RlcHMgdG8gY29t cHV0ZSBQQVNTSU5HIGFyZ3MuICovCisJanNlc3RhdGUtPmFyZ3MgPSBOSUw7CisJZm9yYm90aChh cmdleHBybGMsIGpleHByLT5wYXNzaW5nX3ZhbHVlcywKKwkJCWFyZ25hbWVsYywgamV4cHItPnBh c3NpbmdfbmFtZXMpCisJeworCQlFeHByCSAgICphcmdleHByID0gKEV4cHIgKikgbGZpcnN0KGFy Z2V4cHJsYyk7CisJCVN0cmluZwkgICAqYXJnbmFtZSA9IGxmaXJzdF9ub2RlKFN0cmluZywgYXJn bmFtZWxjKTsKKwkJSnNvblBhdGhWYXJpYWJsZSAqdmFyID0gcGFsbG9jKHNpemVvZigqdmFyKSk7 CisKKwkJdmFyLT5uYW1lID0gYXJnbmFtZS0+c3ZhbDsKKwkJdmFyLT50eXBpZCA9IGV4cHJUeXBl KChOb2RlICopIGFyZ2V4cHIpOworCQl2YXItPnR5cG1vZCA9IGV4cHJUeXBtb2QoKE5vZGUgKikg YXJnZXhwcik7CisKKwkJRXhlY0luaXRFeHByUmVjKChFeHByICopIGFyZ2V4cHIsIHN0YXRlLCAm dmFyLT52YWx1ZSwgJnZhci0+aXNudWxsKTsKKworCQlqc2VzdGF0ZS0+YXJncyA9IGxhcHBlbmQo anNlc3RhdGUtPmFyZ3MsIHZhcik7CisJfQorCisJLyogU3RlcCBmb3IgSnNvblBhdGgqIGV2YWx1 YXRpb247IHNlZSBFeGVjRXZhbEpzb25FeHByUGF0aCgpLiAqLworCXNjcmF0Y2gtPm9wY29kZSA9 IEVFT1BfSlNPTkVYUFJfUEFUSDsKKwlzY3JhdGNoLT5yZXN2YWx1ZSA9IHJlc3Y7CisJc2NyYXRj aC0+cmVzbnVsbCA9IHJlc251bGw7CisJc2NyYXRjaC0+ZC5qc29uZXhwci5qc2VzdGF0ZSA9IGpz ZXN0YXRlOworCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsIHNjcmF0Y2gpOworCisJLyoKKwkgKiBT dGVwIHRvIGp1bXAgdG8gZW5kIHdoZW4gdGhlcmUncyBuZWl0aGVyIGFuIGVycm9yIHdoZW4gZXZh bHVhdGluZworCSAqIEpzb25QYXRoKiBub3IgYW55IG5lZWQgdG8gY29lcmNlIHRoZSByZXN1bHQg YmVjYXVzZSBpdCdzIGFscmVhZHkKKwkgKiBvZiB0aGUgc3BlY2lmaWVkIHR5cGUuCisJICovCisJ c2NyYXRjaC0+b3Bjb2RlID0gRUVPUF9KVU1QOworCXNjcmF0Y2gtPmQuanVtcC5qdW1wZG9uZSA9 IC0xOwkvKiBzZXQgYmVsb3cgKi8KKwlqdW1wc190b19lbmQgPSBsYXBwZW5kX2ludChqdW1wc190 b19lbmQsIHN0YXRlLT5zdGVwc19sZW4pOworCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsIHNjcmF0 Y2gpOworCisJLyoKKwkgKiBTdGVwcyB0byBjb2VyY2UgdGhlIHJlc3VsdCB2YWx1ZSBjb21wdXRl ZCBieSBFRU9QX0pTT05FWFBSX1BBVEguCisJICogVG8gaGFuZGxlIGNvZXJjaW9uIGVycm9ycyBz b2Z0bHksIHVzZSB0aGUgZm9sbG93aW5nIEVycm9yU2F2ZUNvbnRleHQKKwkgKiB3aGVuIGluaXRp YWxpemluZyB0aGUgY29lcmNpb24gZXhwcmVzc2lvbnMsIGluY2x1ZGluZyBhbnkgSnNvbkNvZXJj aW9uCisJICogbm9kZXMuCisJICovCisJanNlc3RhdGUtPmVzY29udGV4dC50eXBlID0gVF9FcnJv clNhdmVDb250ZXh0OworCWlmIChqZXhwci0+cmVzdWx0X2NvZXJjaW9uIHx8IGpleHByLT5vbWl0 X3F1b3RlcykKKwl7CisJCWpzZXN0YXRlLT5qdW1wX2V2YWxfcmVzdWx0X2NvZXJjaW9uID0KKwkJ CUV4ZWNJbml0SnNvbkV4cHJDb2VyY2lvbihzdGF0ZSwgamV4cHItPnJlc3VsdF9jb2VyY2lvbiwK KwkJCQkJCQkJCSBqZXhwci0+b25fZXJyb3ItPmJ0eXBlICE9IEpTT05fQkVIQVZJT1JfRVJST1Ig PworCQkJCQkJCQkJICZqc2VzdGF0ZS0+ZXNjb250ZXh0IDogTlVMTCwKKwkJCQkJCQkJCSByZXN2 LCByZXNudWxsKTsKKwkJLyogSnVtcCB0byBDT0VSQ0lPTl9GSU5JU0guICovCisJCXNjcmF0Y2gt Pm9wY29kZSA9IEVFT1BfSlVNUDsKKwkJc2NyYXRjaC0+ZC5qdW1wLmp1bXBkb25lID0gLTE7CS8q IHNldCBiZWxvdyAqLworCQlqdW1wc190b19jb2VyY2VfZmluaXNoID0gbGFwcGVuZF9pbnQoanVt cHNfdG9fY29lcmNlX2ZpbmlzaCwKKwkJCQkJCQkJCQkJIHN0YXRlLT5zdGVwc19sZW4pOworCQlF eHByRXZhbFB1c2hTdGVwKHN0YXRlLCBzY3JhdGNoKTsKKwl9CisJZWxzZQorCQlqc2VzdGF0ZS0+ anVtcF9ldmFsX3Jlc3VsdF9jb2VyY2lvbiA9IC0xOworCisJLyogU3RlcHMgZm9yIGNvZXJjaW5n IEpzb25JdGVtVHlwZSB2YWx1ZXMgcmV0dXJuZWQgYnkgSnNvblBhdGhWYWx1ZSgpLiAqLworCWlm IChqZXhwci0+aXRlbV9jb2VyY2lvbnMpCisJeworCQkvKgorCQkgKiBIZXJlIHdlIGNyZWF0ZSB0 aGUgc3RlcHMgZm9yIGVhY2ggSnNvbkl0ZW1UeXBlIHR5cGUncyBjb2VyY2lvbgorCQkgKiBleHBy ZXNzaW9uIGFuZCBhbHNvIHN0b3JlIGEgZmxhZyB3aGV0aGVyIHRoZSBleHByZXNzaW9uIGlzCisJ CSAqIGEgSnNvbkNvZXJjaW9uIG5vZGUuICBFeGVjUHJlcGFyZUpzb25JdGVtQ29lcmNpb24oKSBj YWxsZWQgYnkKKwkJICogRXhlY0V2YWxKc29uRXhwclBhdGgoKSB3aWxsIG1hcCBhIGdpdmVuIEpz b25iVmFsdWUgcmV0dXJuZWQgYnkKKwkJICogSnNvblBhdGhWYWx1ZSgpIHRvIGl0cyAgSnNvbkl0 ZW1UeXBlJ3MgZXhwcmVzc2lvbidzIHN0ZXAgYWRkcmVzcworCQkgKiBhbmQgdGhlIGZsYWcgYnkg aW5kZXhpbmcgdGhlIGZvbGxvd2luZyBhcnJheXMgd2l0aCBKc29uSXRlbVR5cGUKKwkJICogZW51 bSB2YWx1ZS4KKwkJICovCisJCWpzZXN0YXRlLT5udW1faXRlbV9jb2VyY2lvbnMgPSBsaXN0X2xl bmd0aChqZXhwci0+aXRlbV9jb2VyY2lvbnMpOworCQlqc2VzdGF0ZS0+ZXZhbF9pdGVtX2NvZXJj aW9uX2p1bXBzID0gKGludCAqKQorCQkJcGFsbG9jKGpzZXN0YXRlLT5udW1faXRlbV9jb2VyY2lv bnMgKiBzaXplb2YoaW50KSk7CisJCWpzZXN0YXRlLT5pdGVtX2NvZXJjaW9uX3ZpYV9leHByID0g KGJvb2wgKikKKwkJCXBhbGxvYzAoanNlc3RhdGUtPm51bV9pdGVtX2NvZXJjaW9ucyAqIHNpemVv Zihib29sKSk7CisJCWZvcmVhY2gobGMsIGpleHByLT5pdGVtX2NvZXJjaW9ucykKKwkJeworCQkJ SnNvbkl0ZW1Db2VyY2lvbiAqaXRlbV9jb2VyY2lvbiA9IGxmaXJzdChsYyk7CisJCQlOb2RlICpj b2VyY2lvbiA9IGl0ZW1fY29lcmNpb24tPmNvZXJjaW9uOworCisJCQlqc2VzdGF0ZS0+aXRlbV9j b2VyY2lvbl92aWFfZXhwcltpdGVtX2NvZXJjaW9uLT5pdGVtX3R5cGVdID0KKwkJCQkoY29lcmNp b24gIT0gTlVMTCAmJiAhSXNBKGNvZXJjaW9uLCBKc29uQ29lcmNpb24pKTsKKwkJCWpzZXN0YXRl LT5ldmFsX2l0ZW1fY29lcmNpb25fanVtcHNbaXRlbV9jb2VyY2lvbi0+aXRlbV90eXBlXSA9CisJ CQkJRXhlY0luaXRKc29uRXhwckNvZXJjaW9uKHN0YXRlLCBjb2VyY2lvbiwKKwkJCQkJCQkJCQkg amV4cHItPm9uX2Vycm9yLT5idHlwZSAhPSBKU09OX0JFSEFWSU9SX0VSUk9SID8KKwkJCQkJCQkJ CQkgJmpzZXN0YXRlLT5lc2NvbnRleHQgOiBOVUxMLAorCQkJCQkJCQkJCSByZXN2LCByZXNudWxs KTsKKworCQkJLyogSnVtcCB0byBDT0VSQ0lPTl9GSU5JU0guICovCisJCQlzY3JhdGNoLT5vcGNv ZGUgPSBFRU9QX0pVTVA7CisJCQlzY3JhdGNoLT5kLmp1bXAuanVtcGRvbmUgPSAtMTsJLyogc2V0 IGJlbG93ICovCisJCQlqdW1wc190b19jb2VyY2VfZmluaXNoID0gbGFwcGVuZF9pbnQoanVtcHNf dG9fY29lcmNlX2ZpbmlzaCwKKwkJCQkJCQkJCQkJCSBzdGF0ZS0+c3RlcHNfbGVuKTsKKwkJCUV4 cHJFdmFsUHVzaFN0ZXAoc3RhdGUsIHNjcmF0Y2gpOworCQl9CisJfQorCisJLyoKKwkgKiBBZGQg c3RlcCB0byByZXNldCB0aGUgRXJyb3JTYXZlQ29udGV4dCBhbmQgc2V0IGVycm9yIGZsYWcgaWYg dGhlCisJICogY29lcmNpb24gc3RlcHMgZW5jb3VudGVyZWQgYW4gZXJyb3IgYnV0IHdhcyBub3Qg dGhyb3duIGJlY2F1c2Ugb2YgdGhlCisJICogT04gRVJST1IgYmVoYXZpb3IuCisJICovCisJaWYg KGpleHByLT5yZXN1bHRfY29lcmNpb24gfHwgamV4cHItPml0ZW1fY29lcmNpb25zKQorCXsKKwkJ Zm9yZWFjaChsYywganVtcHNfdG9fY29lcmNlX2ZpbmlzaCkKKwkJeworCQkJYXMgPSAmc3RhdGUt PnN0ZXBzW2xmaXJzdF9pbnQobGMpXTsKKwkJCWFzLT5kLmp1bXAuanVtcGRvbmUgPSBzdGF0ZS0+ c3RlcHNfbGVuOworCQl9CisKKwkJc2NyYXRjaC0+b3Bjb2RlID0gRUVPUF9KU09ORVhQUl9DT0VS Q0lPTl9GSU5JU0g7CisJCXNjcmF0Y2gtPmQuanNvbmV4cHIuanNlc3RhdGUgPSBqc2VzdGF0ZTsK KwkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgc2NyYXRjaCk7CisJfQorCisJanNlc3RhdGUtPmp1 bXBfZW1wdHkgPSBqc2VzdGF0ZS0+anVtcF9lcnJvciA9IC0xOworCisJLyoKKwkgKiBTdGVwIHRv IGhhbmRsZSBPTiBFUlJPUiBiZWhhdmlvcnMuICBUaGlzIGhhbmRsZXMgYm90aCB0aGUgZXJyb3Jz CisJICogdGhhdCBvY2N1ciBkdXJpbmcgRUVPUF9KU09ORVhQUl9QQVRIIGV2YWx1YXRpb24gYW5k IHN1YnNlcXVlbnQgY29lcmNpb24KKwkgKiBldmFsdWF0aW9uLgorCSAqLworCWlmIChqZXhwci0+ b25fZXJyb3IgJiYKKwkJamV4cHItPm9uX2Vycm9yLT5idHlwZSAhPSBKU09OX0JFSEFWSU9SX0VS Uk9SKQorCXsKKwkJanNlc3RhdGUtPmp1bXBfZXJyb3IgPSBzdGF0ZS0+c3RlcHNfbGVuOworCQlz Y3JhdGNoLT5vcGNvZGUgPSBFRU9QX0pVTVBfSUZfTk9UX1RSVUU7CisKKwkJLyoKKwkJICogcG9z dF9ldmFsLmVycm9yIGlzIHNldCBieSBFeGVjRXZhbEpzb25FeHByUGF0aCgpIGFuZAorCQkgKiBF eGVjRXZhbEpzb25Db2VyY2lvbkZpbmlzaCgpLgorCQkgKi8KKwkJc2NyYXRjaC0+cmVzdmFsdWUg PSAmcG9zdF9ldmFsLT5lcnJvci52YWx1ZTsKKwkJc2NyYXRjaC0+cmVzbnVsbCA9ICZwb3N0X2V2 YWwtPmVycm9yLmlzbnVsbDsKKwkJc2NyYXRjaC0+ZC5qdW1wLmp1bXBkb25lID0gLTE7CS8qIHNl dCBiZWxvdyAqLworCQlqdW1wc190b19lbmQgPSBsYXBwZW5kX2ludChqdW1wc190b19lbmQsIHN0 YXRlLT5zdGVwc19sZW4pOworCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCBzY3JhdGNoKTsKKwor CQkvKiBTdGVwcyB0byBldmFsdWF0ZSB0aGUgT04gRVJST1IgZXhwcmVzc2lvbiAqLworCQlFeGVj SW5pdEV4cHJSZWMoKEV4cHIgKikgamV4cHItPm9uX2Vycm9yLT5leHByLAorCQkJCQkJc3RhdGUs IHJlc3YsIHJlc251bGwpOworCisJCS8qIFN0ZXBzIHRvIGNvZXJjZSB0aGUgT04gRVJST1IgZXhw cmVzc2lvbiBpZiBuZWVkZWQgKi8KKwkJKHZvaWQpIEV4ZWNJbml0SnNvbkV4cHJDb2VyY2lvbihz dGF0ZSwKKwkJCQkJCQkJCQkoTm9kZSAqKSBqZXhwci0+b25fZXJyb3ItPmNvZXJjaW9uLAorCQkJ CQkJCQkJCU5VTEwsCS8qIHRocm93IGVycm9ycyAqLworCQkJCQkJCQkJCXJlc3YsIHJlc251bGwp OworCisJCWp1bXBzX3RvX2VuZCA9IGxhcHBlbmRfaW50KGp1bXBzX3RvX2VuZCwgc3RhdGUtPnN0 ZXBzX2xlbik7CisJCXNjcmF0Y2gtPm9wY29kZSA9IEVFT1BfSlVNUDsKKwkJc2NyYXRjaC0+ZC5q dW1wLmp1bXBkb25lID0gLTE7CisJCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsIHNjcmF0Y2gpOwor CX0KKworCS8qIFN0ZXAgdG8gaGFuZGxlIE9OIEVNUFRZIGJlaGF2aW9ycy4gKi8KKwlpZiAoamV4 cHItPm9uX2VtcHR5ICE9IE5VTEwgJiYKKwkJamV4cHItPm9uX2VtcHR5LT5idHlwZSAhPSBKU09O X0JFSEFWSU9SX0VSUk9SKQorCXsKKwkJanNlc3RhdGUtPmp1bXBfZW1wdHkgPSBzdGF0ZS0+c3Rl cHNfbGVuOworCisJCXNjcmF0Y2gtPm9wY29kZSA9IEVFT1BfSlVNUF9JRl9OT1RfVFJVRTsKKwkJ c2NyYXRjaC0+cmVzdmFsdWUgPSAmcG9zdF9ldmFsLT5lbXB0eS52YWx1ZTsKKwkJc2NyYXRjaC0+ cmVzbnVsbCA9ICZwb3N0X2V2YWwtPmVtcHR5LmlzbnVsbDsKKwkJc2NyYXRjaC0+ZC5qdW1wLmp1 bXBkb25lID0gLTE7CS8qIHNldCBiZWxvdyAqLworCQlqdW1wc190b19lbmQgPSBsYXBwZW5kX2lu dChqdW1wc190b19lbmQsIHN0YXRlLT5zdGVwc19sZW4pOworCQlFeHByRXZhbFB1c2hTdGVwKHN0 YXRlLCBzY3JhdGNoKTsKKworCQkvKiBTdGVwcyB0byBldmFsdWF0ZSB0aGUgT04gRU1QVFkgZXhw cmVzc2lvbiAqLworCQlFeGVjSW5pdEV4cHJSZWMoKEV4cHIgKikgamV4cHItPm9uX2VtcHR5LT5l eHByLAorCQkJCQkJc3RhdGUsIHJlc3YsIHJlc251bGwpOworCisJCS8qIFN0ZXBzIHRvIGNvZXJj ZSB0aGUgT04gRU1QVFkgZXhwcmVzc2lvbiBpZiBuZWVkZWQgKi8KKwkJKHZvaWQpIEV4ZWNJbml0 SnNvbkV4cHJDb2VyY2lvbihzdGF0ZSwKKwkJCQkJCQkJCQkoTm9kZSAqKSBqZXhwci0+b25fZW1w dHktPmNvZXJjaW9uLAorCQkJCQkJCQkJCU5VTEwsCS8qIHRocm93IGVycm9ycyAqLworCQkJCQkJ CQkJCXJlc3YsIHJlc251bGwpOworCisJCXNjcmF0Y2gtPm9wY29kZSA9IEVFT1BfSlVNUDsKKwkJ c2NyYXRjaC0+ZC5qdW1wLmp1bXBkb25lID0gLTE7CS8qIHNldCBiZWxvdyAqLworCQlqdW1wc190 b19lbmQgPSBsYXBwZW5kX2ludChqdW1wc190b19lbmQsIHN0YXRlLT5zdGVwc19sZW4pOworCQlF eHByRXZhbFB1c2hTdGVwKHN0YXRlLCBzY3JhdGNoKTsKKwl9CisKKwlpZiAoanNlc3RhdGUtPmp1 bXBfZXJyb3IgPCAwICYmIGpzZXN0YXRlLT5qdW1wX2VtcHR5IDwgMCkKKwl7CisJCXNjcmF0Y2gt Pm9wY29kZSA9IEVFT1BfSlVNUDsKKwkJc2NyYXRjaC0+ZC5qdW1wLmp1bXBkb25lID0gLTE7CS8q IHNldCBiZWxvdyAqLworCQlqdW1wc190b19lbmQgPSBsYXBwZW5kX2ludChqdW1wc190b19lbmQs IHN0YXRlLT5zdGVwc19sZW4pOworCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCBzY3JhdGNoKTsK Kwl9CisKKwkvKiBSZXR1cm4gTlVMTCB3aGVuIGVpdGhlciBmb3JtYXR0ZWRfZXhwciBvciBwYXRo c3BlYyBpcyBOVUxMLiAqLworCWZvcmVhY2gobGMsIGp1bXBzX2lmX3NraXApCisJeworCQlhcyA9 ICZzdGF0ZS0+c3RlcHNbbGZpcnN0X2ludChsYyldOworCQlhcy0+ZC5qdW1wLmp1bXBkb25lID0g c3RhdGUtPnN0ZXBzX2xlbjsKKwl9CisJc2NyYXRjaC0+b3Bjb2RlID0gRUVPUF9DT05TVDsKKwlz Y3JhdGNoLT5yZXN2YWx1ZSA9IHJlc3Y7CisJc2NyYXRjaC0+cmVzbnVsbCA9IHJlc251bGw7CisJ c2NyYXRjaC0+ZC5jb25zdHZhbC52YWx1ZSA9IChEYXR1bSkgMDsKKwlzY3JhdGNoLT5kLmNvbnN0 dmFsLmlzbnVsbCA9IHRydWU7CisJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgc2NyYXRjaCk7CisK KwkvKiBKdW1wIHRvIGNvZXJjZSB0aGUgTlVMTCB1c2luZyByZXN1bHRfY29lcmNpb24gaXMgcHJl c2VudC4gKi8KKwlpZiAoanNlc3RhdGUtPmp1bXBfZXZhbF9yZXN1bHRfY29lcmNpb24gPj0gMCkK Kwl7CisJCXNjcmF0Y2gtPm9wY29kZSA9IEVFT1BfSlVNUDsKKwkJc2NyYXRjaC0+ZC5qdW1wLmp1 bXBkb25lID0ganNlc3RhdGUtPmp1bXBfZXZhbF9yZXN1bHRfY29lcmNpb247CisJCUV4cHJFdmFs UHVzaFN0ZXAoc3RhdGUsIHNjcmF0Y2gpOworCX0KKworCWZvcmVhY2gobGMsIGp1bXBzX3RvX2Vu ZCkKKwl7CisJCWFzID0gJnN0YXRlLT5zdGVwc1tsZmlyc3RfaW50KGxjKV07CisJCWFzLT5kLmp1 bXAuanVtcGRvbmUgPSBzdGF0ZS0+c3RlcHNfbGVuOworCX0KKworCWpzZXN0YXRlLT5qdW1wX2Vu ZCA9IHN0YXRlLT5zdGVwc19sZW47Cit9CisKKy8qIEluaXRpYWxpemUgb25lIEpzb25Db2VyY2lv biBmb3IgZXhlY3V0aW9uLiAqLworc3RhdGljIGludAorRXhlY0luaXRKc29uRXhwckNvZXJjaW9u KEV4cHJTdGF0ZSAqc3RhdGUsIE5vZGUgKmNvZXJjaW9uLAorCQkJCQkJIEVycm9yU2F2ZUNvbnRl eHQgKmVzY29udGV4dCwKKwkJCQkJCSBEYXR1bSAqcmVzdiwgYm9vbCAqcmVzbnVsbCkKK3sKKwlp bnQJCQlqdW1wX2V2YWxfY29lcmNpb247CisJRGF0dW0JICAgKnNhdmVfaW5uZXJtb3N0X2Nhc2V2 YWw7CisJYm9vbAkgICAqc2F2ZV9pbm5lcm1vc3RfY2FzZW51bGw7CisJRXJyb3JTYXZlQ29udGV4 dCAqc2F2ZV9lc2NvbnRleHQ7CisKKwlpZiAoY29lcmNpb24gPT0gTlVMTCkKKwkJcmV0dXJuIC0x OworCisJanVtcF9ldmFsX2NvZXJjaW9uID0gc3RhdGUtPnN0ZXBzX2xlbjsKKwlpZiAoSXNBKGNv ZXJjaW9uLCBKc29uQ29lcmNpb24pKQorCXsKKwkJRXhwckV2YWxTdGVwIHNjcmF0Y2ggPSB7MH07 CisJCU9pZAkJCXR5cGlucHV0OworCQlGbWdySW5mbyAgICpmaW5mbzsKKwkJT2lkCQkJdHlwaW9w YXJhbTsKKworCQlnZXRUeXBlSW5wdXRJbmZvKCgoSnNvbkNvZXJjaW9uICopIGNvZXJjaW9uKS0+ dGFyZ2V0dHlwZSwKKwkJCQkJCSAmdHlwaW5wdXQsICZ0eXBpb3BhcmFtKTsKKwkJZmluZm8gPSBw YWxsb2MwKHNpemVvZihGbWdySW5mbykpOworCQlmbWdyX2luZm8odHlwaW5wdXQsIGZpbmZvKTsK KworCQlzY3JhdGNoLm9wY29kZSA9IEVFT1BfSlNPTkVYUFJfQ09FUkNJT047CisJCXNjcmF0Y2gu cmVzdmFsdWUgPSByZXN2OworCQlzY3JhdGNoLnJlc251bGwgPSByZXNudWxsOworCQlzY3JhdGNo LmQuanNvbmV4cHJfY29lcmNpb24uY29lcmNpb24gPSAoSnNvbkNvZXJjaW9uICopIGNvZXJjaW9u OworCQlzY3JhdGNoLmQuanNvbmV4cHJfY29lcmNpb24uaW5wdXRfZmluZm8gPSBmaW5mbzsKKwkJ c2NyYXRjaC5kLmpzb25leHByX2NvZXJjaW9uLnR5cGlvcGFyYW0gPSB0eXBpb3BhcmFtOworCQlz Y3JhdGNoLmQuanNvbmV4cHJfY29lcmNpb24uanNvbl9wb3B1bGF0ZV90eXBlX2NhY2hlID0gTlVM TDsKKwkJc2NyYXRjaC5kLmpzb25leHByX2NvZXJjaW9uLmVzY29udGV4dCA9IGVzY29udGV4dDsK KwkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgJnNjcmF0Y2gpOworCQlyZXR1cm4ganVtcF9ldmFs X2NvZXJjaW9uOworCX0KKworCS8qIFB1c2ggc3RlcChzKSB0byBjb21wdXRlIGNzdGF0ZS0+Y29l cmNpb24uICovCisJc2F2ZV9pbm5lcm1vc3RfY2FzZXZhbCA9IHN0YXRlLT5pbm5lcm1vc3RfY2Fz ZXZhbDsKKwlzYXZlX2lubmVybW9zdF9jYXNlbnVsbCA9IHN0YXRlLT5pbm5lcm1vc3RfY2FzZW51 bGw7CisJc2F2ZV9lc2NvbnRleHQgPSBzdGF0ZS0+ZXNjb250ZXh0OworCisJc3RhdGUtPmlubmVy bW9zdF9jYXNldmFsID0gcmVzdjsKKwlzdGF0ZS0+aW5uZXJtb3N0X2Nhc2VudWxsID0gcmVzbnVs bDsKKwlzdGF0ZS0+ZXNjb250ZXh0ID0gZXNjb250ZXh0OworCisJRXhlY0luaXRFeHByUmVjKChF eHByICopIGNvZXJjaW9uLCBzdGF0ZSwgcmVzdiwgcmVzbnVsbCk7CisKKwlzdGF0ZS0+aW5uZXJt b3N0X2Nhc2V2YWwgPSBzYXZlX2lubmVybW9zdF9jYXNldmFsOworCXN0YXRlLT5pbm5lcm1vc3Rf Y2FzZW51bGwgPSBzYXZlX2lubmVybW9zdF9jYXNlbnVsbDsKKwlzdGF0ZS0+ZXNjb250ZXh0ID0g c2F2ZV9lc2NvbnRleHQ7CisKKwlyZXR1cm4ganVtcF9ldmFsX2NvZXJjaW9uOworfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKaW5kZXggYjE3Y2FiMDZiNi4uOTY0NDMzYTBlNyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jCkBAIC03Myw4ICs3Myw4IEBACiAj aW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKICNpbmNsdWRlICJ1dGlscy9leHBhbmRlZHJlY29yZC5o IgogI2luY2x1ZGUgInV0aWxzL2pzb24uaCIKLSNpbmNsdWRlICJ1dGlscy9qc29uYi5oIgogI2lu Y2x1ZGUgInV0aWxzL2pzb25mdW5jcy5oIgorI2luY2x1ZGUgInV0aWxzL2pzb25wYXRoLmgiCiAj aW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIK ICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKQEAgLTE4MSw2ICsxODEsMTAgQEAgc3RhdGlj IHBnX2F0dHJpYnV0ZV9hbHdheXNfaW5saW5lIHZvaWQgRXhlY0FnZ1BsYWluVHJhbnNCeVJlZihB Z2dTdGF0ZSAqYWdnc3RhdGUKIAkJCQkJCQkJCQkJCQkJCSAgQWdnU3RhdGVQZXJHcm91cCBwZXJn cm91cCwKIAkJCQkJCQkJCQkJCQkJCSAgRXhwckNvbnRleHQgKmFnZ2NvbnRleHQsCiAJCQkJCQkJ CQkJCQkJCQkgIGludCBzZXRubyk7CitzdGF0aWMgdm9pZCBFeGVjUHJlcGFyZUpzb25JdGVtQ29l cmNpb24oSnNvbmJWYWx1ZSAqaXRlbSwgSnNvbkV4cHJTdGF0ZSAqanNlc3RhdGUsCisJCQkJCQkJ Ym9vbCB0aHJvd19lcnJvciwKKwkJCQkJCQlpbnQgKmp1bXBfZXZhbF9pdGVtX2NvZXJjaW9uLAor CQkJCQkJCURhdHVtICpyZXN2YWx1ZSwgYm9vbCAqcmVzbnVsbCk7CiAKIC8qCiAgKiBTY2FsYXJB cnJheU9wRXhwckhhc2hFbnRyeQpAQCAtNDgyLDYgKzQ4Niw5IEBAIEV4ZWNJbnRlcnBFeHByKEV4 cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwgYm9vbCAqaXNudWxsKQogCQkm JkNBU0VfRUVPUF9YTUxFWFBSLAogCQkmJkNBU0VfRUVPUF9KU09OX0NPTlNUUlVDVE9SLAogCQkm JkNBU0VfRUVPUF9JU19KU09OLAorCQkmJkNBU0VfRUVPUF9KU09ORVhQUl9QQVRILAorCQkmJkNB U0VfRUVPUF9KU09ORVhQUl9DT0VSQ0lPTiwKKwkJJiZDQVNFX0VFT1BfSlNPTkVYUFJfQ09FUkNJ T05fRklOSVNILAogCQkmJkNBU0VfRUVPUF9BR0dSRUYsCiAJCSYmQ0FTRV9FRU9QX0dST1VQSU5H X0ZVTkMsCiAJCSYmQ0FTRV9FRU9QX1dJTkRPV19GVU5DLApAQCAtMTU1MSw2ICsxNTU4LDI4IEBA IEV4ZWNJbnRlcnBFeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwg Ym9vbCAqaXNudWxsKQogCQkJRUVPX05FWFQoKTsKIAkJfQogCisJCUVFT19DQVNFKEVFT1BfSlNP TkVYUFJfUEFUSCkKKwkJeworCQkJLyogdG9vIGNvbXBsZXggZm9yIGFuIGlubGluZSBpbXBsZW1l bnRhdGlvbiAqLworCQkJRUVPX0pVTVAoRXhlY0V2YWxKc29uRXhwclBhdGgoc3RhdGUsIG9wLCBl Y29udGV4dCkpOworCQl9CisKKwkJRUVPX0NBU0UoRUVPUF9KU09ORVhQUl9DT0VSQ0lPTikKKwkJ eworCQkJLyogdG9vIGNvbXBsZXggZm9yIGFuIGlubGluZSBpbXBsZW1lbnRhdGlvbiAqLworCQkJ RXhlY0V2YWxKc29uQ29lcmNpb24oc3RhdGUsIG9wLCBlY29udGV4dCk7CisKKwkJCUVFT19ORVhU KCk7CisJCX0KKworCQlFRU9fQ0FTRShFRU9QX0pTT05FWFBSX0NPRVJDSU9OX0ZJTklTSCkKKwkJ eworCQkJLyogdG9vIGNvbXBsZXggZm9yIGFuIGlubGluZSBpbXBsZW1lbnRhdGlvbiAqLworCQkJ RXhlY0V2YWxKc29uQ29lcmNpb25GaW5pc2goc3RhdGUsIG9wKTsKKworCQkJRUVPX05FWFQoKTsK KwkJfQorCiAJCUVFT19DQVNFKEVFT1BfQUdHUkVGKQogCQl7CiAJCQkvKgpAQCAtNDIwOCw2ICs0 MjM3LDM0NSBAQCBFeGVjRXZhbEpzb25Jc1ByZWRpY2F0ZShFeHByU3RhdGUgKnN0YXRlLCBFeHBy RXZhbFN0ZXAgKm9wKQogCSpvcC0+cmVzdmFsdWUgPSBCb29sR2V0RGF0dW0ocmVzKTsKIH0KIAor LyoKKyAqIFBlcmZvcm1zIEpzb25QYXRoe0V4aXN0c3xRdWVyeXxWYWx1ZX0oKSBmb3IgZ2l2ZW4g Y29udGV4dCBpdGVtIGFuZCBKU09OCisgKiBwYXRoLgorICoKKyAqIFJlc3VsdCBpcyBzZXQgaW4g Km9wLT5yZXN2YWx1ZSBhbmQgKm9wLT5yZXNudWxsLiAgUmV0dXJuIHZhbHVlIGlzIHRoZQorICog c3RlcCBhZGRyZXNzIHRvIGJlIHBlcmZvcm1lZCBuZXh0LgorICoKKyAqIE9uIHJldHVybiwgSnNv bkV4cHJQb3N0RXZhbFN0YXRlIGlzIHBvcHVsYXRlZCB3aXRoIHRoZSBmb2xsb3dpbmcgZGV0YWls czoKKyAqCS0gZXJyb3IudmFsdWU6IHRydWUgaWYgYW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIEpz b25QYXRoIGV2YWx1YXRpb24KKyAqCS0gZW1wdHkudmFsdWU6IHRydWUgaWYgSnNvblBhdGh7UXVl cnl8VmFsdWV9KCkgZm91bmQgbm8gbWF0Y2hpbmcgaXRlbQorICoKKyAqIE5vIHJldHVybiBpZiB0 aGUgT04gRVJST1IvRU1QVFkgYmVoYXZpb3IgaXMgRVJST1IuCisgKi8KK2ludAorRXhlY0V2YWxK c29uRXhwclBhdGgoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwKKwkJCQkJIEV4 cHJDb250ZXh0ICplY29udGV4dCkKK3sKKwlKc29uRXhwclN0YXRlICpqc2VzdGF0ZSA9IG9wLT5k Lmpzb25leHByLmpzZXN0YXRlOworCUpzb25FeHByUG9zdEV2YWxTdGF0ZSAqcG9zdF9ldmFsID0g JmpzZXN0YXRlLT5wb3N0X2V2YWw7CisJSnNvbkV4cHIgICAqamV4cHIgPSBqc2VzdGF0ZS0+anNl eHByOworCURhdHVtCQlpdGVtOworCUpzb25QYXRoICAgKnBhdGg7CisJYm9vbAkJdGhyb3dfZXJy b3IgPSBqZXhwci0+b25fZXJyb3ItPmJ0eXBlID09IEpTT05fQkVIQVZJT1JfRVJST1I7CisJYm9v bAkJZXJyb3IgPSBmYWxzZSwKKwkJCQllbXB0eSA9IGZhbHNlOworCS8qIE1pZ2h0IGdldCBvdmVy cmlkZGVuIGZvciBKU09OX1ZBTFVFX09QIGJ5IGFuIHBlci1pdGVtIGNvZXJjaW9uLiAqLworCWlu dAkJCWp1bXBfZXZhbF9jb2VyY2lvbiA9IGpzZXN0YXRlLT5qdW1wX2V2YWxfcmVzdWx0X2NvZXJj aW9uOworCisJaXRlbSA9IGpzZXN0YXRlLT5mb3JtYXR0ZWRfZXhwci52YWx1ZTsKKwlwYXRoID0g RGF0dW1HZXRKc29uUGF0aFAoanNlc3RhdGUtPnBhdGhzcGVjLnZhbHVlKTsKKworCS8qIFJlc2V0 IEpzb25FeHByUG9zdEV2YWxTdGF0ZSBmb3IgdGhpcyBldmFsdWF0aW9uLiAqLworCW1lbXNldChw b3N0X2V2YWwsIDAsIHNpemVvZigqcG9zdF9ldmFsKSk7CisJc3dpdGNoIChqZXhwci0+b3ApCisJ eworCQljYXNlIEpTT05fRVhJU1RTX09QOgorCQkJeworCQkJCWJvb2wJCWV4aXN0cyA9IEpzb25Q YXRoRXhpc3RzKGl0ZW0sIHBhdGgsCisJCQkJCQkJCQkJCQkJIXRocm93X2Vycm9yID8gJmVycm9y IDogTlVMTCwKKwkJCQkJCQkJCQkJCQlqc2VzdGF0ZS0+YXJncyk7CisKKwkJCQlpZiAoIWVycm9y KQorCQkJCXsKKwkJCQkJKm9wLT5yZXN2YWx1ZSA9IEJvb2xHZXREYXR1bShleGlzdHMpOworCQkJ CQkqb3AtPnJlc251bGwgPSBmYWxzZTsKKwkJCQl9CisJCQl9CisJCQlicmVhazsKKworCQljYXNl IEpTT05fUVVFUllfT1A6CisJCQkqb3AtPnJlc3ZhbHVlID0gSnNvblBhdGhRdWVyeShpdGVtLCBw YXRoLCBqZXhwci0+d3JhcHBlciwgJmVtcHR5LAorCQkJCQkJCQkJCSAgIXRocm93X2Vycm9yID8g JmVycm9yIDogTlVMTCwKKwkJCQkJCQkJCQkgIGpzZXN0YXRlLT5hcmdzKTsKKworCQkJaWYgKCFl cnJvciAmJiAhZW1wdHkpCisJCQkJKm9wLT5yZXNudWxsID0gKERhdHVtR2V0UG9pbnRlcigqb3At PnJlc3ZhbHVlKSA9PSBOVUxMKTsKKwkJCWJyZWFrOworCisJCWNhc2UgSlNPTl9WQUxVRV9PUDoK KwkJCXsKKwkJCQlKc29uYlZhbHVlICpqYnYgPSBKc29uUGF0aFZhbHVlKGl0ZW0sIHBhdGgsICZl bXB0eSwKKwkJCQkJCQkJCQkJCSF0aHJvd19lcnJvciA/ICZlcnJvciA6IE5VTEwsCisJCQkJCQkJ CQkJCQlqc2VzdGF0ZS0+YXJncyk7CisKKwkJCQlpZiAoamJ2ID09IE5VTEwpCisJCQkJeworCQkJ CQkvKiBXaWxsIGJlIGNvZXJjZWQgd2l0aCByZXN1bHRfY29lcmNpb24uICovCisJCQkJCSpvcC0+ cmVzdmFsdWUgPSAoRGF0dW0pIDA7CisJCQkJCSpvcC0+cmVzbnVsbCA9IHRydWU7CisJCQkJfQor CQkJCWVsc2UgaWYgKCFlcnJvciAmJiAhZW1wdHkpCisJCQkJeworCQkJCQkvKgorCQkJCQkgKiBJ ZiB0aGUgcmVxdWVzdGVkIG91dHB1dCB0eXBlIGlzIGpzb24oYiksIHVzZQorCQkJCQkgKiByZXN1 bHRfY29lcmNpb24gdG8gZG8gdGhlIGNvZXJjaW9uLgorCQkJCQkgKi8KKwkJCQkJaWYgKGpleHBy LT5yZXR1cm5pbmctPnR5cGlkID09IEpTT05PSUQgfHwKKwkJCQkJCWpleHByLT5yZXR1cm5pbmct PnR5cGlkID09IEpTT05CT0lEKQorCQkJCQl7CisJCQkJCQkqb3AtPnJlc3ZhbHVlID0gSnNvbmJQ R2V0RGF0dW0oSnNvbmJWYWx1ZVRvSnNvbmIoamJ2KSk7CisJCQkJCQkqb3AtPnJlc251bGwgPSBm YWxzZTsKKwkJCQkJfQorCQkJCQllbHNlCisJCQkJCXsKKwkJCQkJCS8qCisJCQkJCQkgKiBFbHNl LCB1c2Ugb25lIG9mIHRoZSBpdGVtX2NvZXJjaW9ucy4KKwkJCQkJCSAqCisJCQkJCQkgKiBFcnJv ciBvdXQgaWYgbm8gY2FzdCBleHByZXNzaW9uIGV4aXN0cy4KKwkJCQkJCSAqLworCQkJCQkJRXhl Y1ByZXBhcmVKc29uSXRlbUNvZXJjaW9uKGpidiwganNlc3RhdGUsIHRocm93X2Vycm9yLAorCQkJ CQkJCQkJCQkJCSZqdW1wX2V2YWxfY29lcmNpb24sCisJCQkJCQkJCQkJCQkJb3AtPnJlc3ZhbHVl LCBvcC0+cmVzbnVsbCk7CisJCQkJCX0KKwkJCQl9CisJCQkJYnJlYWs7CisJCQl9CisKKwkJZGVm YXVsdDoKKwkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgU1FML0pTT04gZXhwcmVzc2lvbiBv cCAlZCIsIGpleHByLT5vcCk7CisJCQlyZXR1cm4gZmFsc2U7CisJfQorCisJaWYgKGVtcHR5KQor CXsKKwkJaWYgKGpleHByLT5vbl9lbXB0eSkKKwkJeworCQkJaWYgKGpleHByLT5vbl9lbXB0eS0+ YnR5cGUgPT0gSlNPTl9CRUhBVklPUl9FUlJPUikKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJ ZXJyY29kZShFUlJDT0RFX05PX1NRTF9KU09OX0lURU0pLAorCQkJCQkJZXJybXNnKCJubyBTUUwv SlNPTiBpdGVtIikpOworCQkJZWxzZQorCQkJCXBvc3RfZXZhbC0+ZW1wdHkudmFsdWUgPSBCb29s R2V0RGF0dW0odHJ1ZSk7CisKKwkJCUFzc2VydChqc2VzdGF0ZS0+anVtcF9lbXB0eSA+PSAwKTsK KwkJCXJldHVybiBqc2VzdGF0ZS0+anVtcF9lbXB0eTsKKwkJfQorCQllbHNlIGlmIChqZXhwci0+ b25fZXJyb3ItPmJ0eXBlID09IEpTT05fQkVIQVZJT1JfRVJST1IpCisJCQllcmVwb3J0KEVSUk9S LAorCQkJCQllcnJjb2RlKEVSUkNPREVfTk9fU1FMX0pTT05fSVRFTSksCisJCQkJCWVycm1zZygi bm8gU1FML0pTT04gaXRlbSIpKTsKKwkJZWxzZQorCQkJcG9zdF9ldmFsLT5lcnJvci52YWx1ZSA9 IEJvb2xHZXREYXR1bSh0cnVlKTsKKworCQkqb3AtPnJlc3ZhbHVlID0gKERhdHVtKSAwOworCQkq b3AtPnJlc251bGwgPSB0cnVlOworCisJCUFzc2VydChqc2VzdGF0ZS0+anVtcF9lcnJvciA+PSAw KTsKKwkJcmV0dXJuIGpzZXN0YXRlLT5qdW1wX2Vycm9yOworCX0KKworCWlmIChlcnJvcikKKwl7 CisJCUFzc2VydCghdGhyb3dfZXJyb3IgJiYganNlc3RhdGUtPmp1bXBfZXJyb3IgPj0gMCk7CisJ CSpvcC0+cmVzdmFsdWUgPSAoRGF0dW0pIDA7CisJCSpvcC0+cmVzbnVsbCA9IHRydWU7CisJCXBv c3RfZXZhbC0+ZXJyb3IudmFsdWUgPSBCb29sR2V0RGF0dW0odHJ1ZSk7CisJCXJldHVybiBqc2Vz dGF0ZS0+anVtcF9lcnJvcjsKKwl9CisKKwkvKiBFbHNlIHJldHVybiB0aGUgY29lcmNpb24gc3Rl cCBhZGRyZXNzIG9yIHRoZSBhZGRyZXNzIHRvIHNraXAgdG8gZW5kLiAqLworCXJldHVybiBqdW1w X2V2YWxfY29lcmNpb24gPj0gMCA/IGp1bXBfZXZhbF9jb2VyY2lvbiA6IGpzZXN0YXRlLT5qdW1w X2VuZDsKK30KKworLyoKKyAqIFNlbGVjdHMgYSBjb2VyY2lvbiBmb3IgYSBnaXZlbiBKc29uYlZh bHVlIGJhc2VkIG9uIGl0cyB0eXBlLgorICoKKyAqIE9uIHJldHVybiwgKnJlc3ZhbHVlIGFuZCAq cmVzbnVsbCBhcmUgc2V0IHRvIHRoZSB2YWx1ZSBleHRyYWN0ZWQgZnJvbSB0aGUKKyAqIEpzb25i VmFsdWUgYW5kICpqdW1wX2V2YWxfaXRlbV9jb2VyY2lvbiBpcyBzZXQgdG8gdGhlIHN0ZXAgYWRk cmVzcyBvZiB0aGUKKyAqIGNvZXJjaW9uIGV4cHJlc3Npb24uCisgKgorICogSWYgdGhlIGZvdW5k IGV4cHJlc3Npb24gaXMgYSBKc29uQ29lcmNpb24gbm9kZSB0aGF0IG1lYW5zIHRoZSBwYXJzZXIK KyAqIGRpZG50JyBmaW5kIGEgY2FzdCB0byBkbyB0aGUgY29lcmNpb24sIHNvIHRocm93IGFuIGVy cm9yIGlmIHRoZQorICogT04gRVJST1IgYmVoYXZpb3Igc2F5cyB0byBkbyBzby4KKyAqLworc3Rh dGljIHZvaWQKK0V4ZWNQcmVwYXJlSnNvbkl0ZW1Db2VyY2lvbihKc29uYlZhbHVlICppdGVtLCBK c29uRXhwclN0YXRlICpqc2VzdGF0ZSwKKwkJCQkJCQlib29sIHRocm93X2Vycm9yLAorCQkJCQkJ CWludCAqanVtcF9ldmFsX2l0ZW1fY29lcmNpb24sCisJCQkJCQkJRGF0dW0gKnJlc3ZhbHVlLCBi b29sICpyZXNudWxsKQoreworCWludAkJICAgKmV2YWxfaXRlbV9jb2VyY2lvbl9qdW1wcyA9IGpz ZXN0YXRlLT5ldmFsX2l0ZW1fY29lcmNpb25fanVtcHM7CisJYm9vbAkgICAqaXRlbV9jb2VyY2lv bl92aWFfZXhwciA9IGpzZXN0YXRlLT5pdGVtX2NvZXJjaW9uX3ZpYV9leHByOworCWJvb2wJCXZp YV9leHByOworCWludAkJCWp1bXBfdG87CisJSnNvbmJWYWx1ZQlidWY7CisKKwlpZiAoaXRlbS0+ dHlwZSA9PSBqYnZCaW5hcnkgJiYgSnNvbkNvbnRhaW5lcklzU2NhbGFyKGl0ZW0tPnZhbC5iaW5h cnkuZGF0YSkpCisJeworCQlib29sCWlzX3NjYWxhciBQR19VU0VEX0ZPUl9BU1NFUlRTX09OTFk7 CisKKwkJaXNfc2NhbGFyID0gSnNvbmJFeHRyYWN0U2NhbGFyKGl0ZW0tPnZhbC5iaW5hcnkuZGF0 YSwgJmJ1Zik7CisJCWl0ZW0gPSAmYnVmOworCQlBc3NlcnQoaXNfc2NhbGFyKTsKKwl9CisKKwkq cmVzbnVsbCA9IGZhbHNlOworCisJLyogZ2V0IGNvZXJjaW9uIHN0YXRlIHJlZmVyZW5jZSBhbmQg ZGF0dW0gb2YgdGhlIGNvcnJlc3BvbmRpbmcgU1FMIHR5cGUgKi8KKwlzd2l0Y2ggKGl0ZW0tPnR5 cGUpCisJeworCQljYXNlIGpidk51bGw6CisJCQl2aWFfZXhwciA9IGl0ZW1fY29lcmNpb25fdmlh X2V4cHJbSnNvbkl0ZW1UeXBlTnVsbF07CisJCQlqdW1wX3RvID0gZXZhbF9pdGVtX2NvZXJjaW9u X2p1bXBzW0pzb25JdGVtVHlwZU51bGxdOworCQkJKnJlc3ZhbHVlID0gKERhdHVtKSAwOworCQkJ KnJlc251bGwgPSB0cnVlOworCQkJYnJlYWs7CisKKwkJY2FzZSBqYnZTdHJpbmc6CisJCQl2aWFf ZXhwciA9IGl0ZW1fY29lcmNpb25fdmlhX2V4cHJbSnNvbkl0ZW1UeXBlU3RyaW5nXTsKKwkJCWp1 bXBfdG8gPSBldmFsX2l0ZW1fY29lcmNpb25fanVtcHNbSnNvbkl0ZW1UeXBlU3RyaW5nXTsKKwkJ CSpyZXN2YWx1ZSA9CisJCQkJUG9pbnRlckdldERhdHVtKGNzdHJpbmdfdG9fdGV4dF93aXRoX2xl bihpdGVtLT52YWwuc3RyaW5nLnZhbCwKKwkJCQkJCQkJaXRlbS0+dmFsLnN0cmluZy5sZW4pKTsK KwkJCWJyZWFrOworCisJCWNhc2UgamJ2TnVtZXJpYzoKKwkJCXZpYV9leHByID0gaXRlbV9jb2Vy Y2lvbl92aWFfZXhwcltKc29uSXRlbVR5cGVOdW1lcmljXTsKKwkJCWp1bXBfdG8gPSBldmFsX2l0 ZW1fY29lcmNpb25fanVtcHNbSnNvbkl0ZW1UeXBlTnVtZXJpY107CisJCQkqcmVzdmFsdWUgPSBO dW1lcmljR2V0RGF0dW0oaXRlbS0+dmFsLm51bWVyaWMpOworCQkJYnJlYWs7CisKKwkJY2FzZSBq YnZCb29sOgorCQkJdmlhX2V4cHIgPSBpdGVtX2NvZXJjaW9uX3ZpYV9leHByW0pzb25JdGVtVHlw ZUJvb2xlYW5dOworCQkJanVtcF90byA9IGV2YWxfaXRlbV9jb2VyY2lvbl9qdW1wc1tKc29uSXRl bVR5cGVCb29sZWFuXTsKKwkJCSpyZXN2YWx1ZSA9IEJvb2xHZXREYXR1bShpdGVtLT52YWwuYm9v bGVhbik7CisJCQlicmVhazsKKworCQljYXNlIGpidkRhdGV0aW1lOgorCQkJKnJlc3ZhbHVlID0g aXRlbS0+dmFsLmRhdGV0aW1lLnZhbHVlOworCQkJc3dpdGNoIChpdGVtLT52YWwuZGF0ZXRpbWUu dHlwaWQpCisJCQl7CisJCQkJY2FzZSBEQVRFT0lEOgorCQkJCQl2aWFfZXhwciA9IGl0ZW1fY29l cmNpb25fdmlhX2V4cHJbSnNvbkl0ZW1UeXBlRGF0ZV07CisJCQkJCWp1bXBfdG8gPSBldmFsX2l0 ZW1fY29lcmNpb25fanVtcHNbSnNvbkl0ZW1UeXBlRGF0ZV07CisJCQkJCWJyZWFrOworCQkJCWNh c2UgVElNRU9JRDoKKwkJCQkJdmlhX2V4cHIgPSBpdGVtX2NvZXJjaW9uX3ZpYV9leHByW0pzb25J dGVtVHlwZVRpbWVdOworCQkJCQlqdW1wX3RvID0gZXZhbF9pdGVtX2NvZXJjaW9uX2p1bXBzW0pz b25JdGVtVHlwZVRpbWVdOworCQkJCQlicmVhazsKKwkJCQljYXNlIFRJTUVUWk9JRDoKKwkJCQkJ dmlhX2V4cHIgPSBpdGVtX2NvZXJjaW9uX3ZpYV9leHByW0pzb25JdGVtVHlwZVRpbWV0el07CisJ CQkJCWp1bXBfdG8gPSBldmFsX2l0ZW1fY29lcmNpb25fanVtcHNbSnNvbkl0ZW1UeXBlVGltZXR6 XTsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSBUSU1FU1RBTVBPSUQ6CisJCQkJCXZpYV9leHByID0g aXRlbV9jb2VyY2lvbl92aWFfZXhwcltKc29uSXRlbVR5cGVUaW1lc3RhbXBdOworCQkJCQlqdW1w X3RvID0gZXZhbF9pdGVtX2NvZXJjaW9uX2p1bXBzW0pzb25JdGVtVHlwZVRpbWVzdGFtcF07CisJ CQkJCWJyZWFrOworCQkJCWNhc2UgVElNRVNUQU1QVFpPSUQ6CisJCQkJCXZpYV9leHByID0gaXRl bV9jb2VyY2lvbl92aWFfZXhwcltKc29uSXRlbVR5cGVUaW1lc3RhbXB0el07CisJCQkJCWp1bXBf dG8gPSBldmFsX2l0ZW1fY29lcmNpb25fanVtcHNbSnNvbkl0ZW1UeXBlVGltZXN0YW1wdHpdOwor CQkJCQlicmVhazsKKwkJCQlkZWZhdWx0OgorCQkJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBq c29uYiBkYXRldGltZSB0eXBlIG9pZCAldSIsCisJCQkJCQkgaXRlbS0+dmFsLmRhdGV0aW1lLnR5 cGlkKTsKKwkJCX0KKwkJCWJyZWFrOworCisJCWNhc2UgamJ2QXJyYXk6CisJCWNhc2UgamJ2T2Jq ZWN0OgorCQljYXNlIGpidkJpbmFyeToKKwkJCXZpYV9leHByID0gaXRlbV9jb2VyY2lvbl92aWFf ZXhwcltKc29uSXRlbVR5cGVDb21wb3NpdGVdOworCQkJanVtcF90byA9IGV2YWxfaXRlbV9jb2Vy Y2lvbl9qdW1wc1tKc29uSXRlbVR5cGVDb21wb3NpdGVdOworCQkJKnJlc3ZhbHVlID0gSnNvbmJQ R2V0RGF0dW0oSnNvbmJWYWx1ZVRvSnNvbmIoaXRlbSkpOworCQkJYnJlYWs7CisKKwkJZGVmYXVs dDoKKwkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIGpzb25iIHZhbHVlIHR5cGUgJWQiLCBpdGVt LT50eXBlKTsKKwl9CisKKwkvKiBJZiB0aGUgZXhwcmVzc2lvbiBpcyBhIEpzb25Db2VyY2lvbiwg dGhyb3cgYW4gZXJyb3IuICovCisJaWYgKGp1bXBfdG8gPj0gMCAmJiAhdmlhX2V4cHIpCisJewor CQlpZiAodGhyb3dfZXJyb3IpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNP REVfU1FMX0pTT05fSVRFTV9DQU5OT1RfQkVfQ0FTVF9UT19UQVJHRVRfVFlQRSksCisJCQkJCWVy cm1zZygiU1FML0pTT04gaXRlbSBjYW5ub3QgYmUgY2FzdCB0byB0YXJnZXQgdHlwZSIpKTsKKwor CQkqcmVzdmFsdWUgPSAoRGF0dW0pIDA7CisJCSpyZXNudWxsID0gdHJ1ZTsKKwl9CisKKwkqanVt cF9ldmFsX2l0ZW1fY29lcmNpb24gPSBqdW1wX3RvOworfQorCisvKgorICogQ29lcmNlIGEganNv bmIgdmFsdWUgcHJvZHVjZWQgYnkgRXhlY0V2YWxKc29uRXhwclBhdGgoKSBvciBhbiBPTiBFUlJP UiAvCisgKiBFTVBUWSBiZWhhdmlvciBleHByZXNzaW9uIHRvIHRoZSB0YXJnZXQgdHlwZSBieSBl aXRoZXIgY2FsbGluZworICoganNvbl9wb3B1bGF0ZV90eXBlKCkgb3IgYnkgZGlyZWN0bHkgY2Fs bGluZyB0aGUgdHlwZSdzIGlucHV0IGZ1bmN0aW9uIGluCisgKiBzb21lIGNhc2VzLgorICoKKyAq IEFueSBzb2Z0IGVycm9ycyB0aGF0IG9jY3VyIHdpbGwgYmUgY2hlY2tlZCBieSBFRU9QX0pTT05F WFBSX0NPRVJDSU9OX0ZJTklTSAorICogdGhhdCB3aWxsIHJ1biByaWdodCBhZnRlciB0aGlzLgor ICovCit2b2lkCitFeGVjRXZhbEpzb25Db2VyY2lvbihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZh bFN0ZXAgKm9wLAorCQkJCQkgRXhwckNvbnRleHQgKmVjb250ZXh0KQoreworCUpzb25Db2VyY2lv biAqY29lcmNpb24gPSBvcC0+ZC5qc29uZXhwcl9jb2VyY2lvbi5jb2VyY2lvbjsKKwlFcnJvclNh dmVDb250ZXh0ICplc2NvbnRleHQgPSBvcC0+ZC5qc29uZXhwcl9jb2VyY2lvbi5lc2NvbnRleHQ7 CisJRGF0dW0JCXJlcyA9ICpvcC0+cmVzdmFsdWU7CisJYm9vbAkJcmVzbnVsbCA9ICpvcC0+cmVz bnVsbDsKKwlKc29uYgkgICAqamIgPSAhcmVzbnVsbCA/IERhdHVtR2V0SnNvbmJQKHJlcykgOiBO VUxMOworCisJLyoKKwkgKiBDYW4ndCBnbyB0byBqc29uX3BvcHVsYXRlX3R5cGUoKSBmb3Igc2Nh bGFycyB3aGVuIE9NSVQgUVVPVEVTIGlzCisJICogc3BlY2lmaWVkLCBiZWNhdXNlIGl0IGtlZXBz IHRoZSBxdW90ZXMgYnkgZGVmYXVsdC4gIFNvIGxldCdzIGRvIHRoZQorCSAqIGRlZWQgb3Vyc2Vs dmVzIGJ5IGNhbGxpbmcgdGhlIGlucHV0IGZ1bmN0aW9uLCB0aGF0IGlzLCBhZnRlciByZW1vdmlu ZworCSAqIHRoZSBxdW90ZXMuCisJICovCisJaWYgKGpiICYmIEpCX1JPT1RfSVNfU0NBTEFSKGpi KSAmJiBjb2VyY2lvbi0+b21pdF9xdW90ZXMpCisJeworCQlGbWdySW5mbyAgICppbnB1dF9maW5m byA9IG9wLT5kLmpzb25leHByX2NvZXJjaW9uLmlucHV0X2ZpbmZvOworCQlPaWQJCQl0eXBpb3Bh cmFtID0gb3AtPmQuanNvbmV4cHJfY29lcmNpb24udHlwaW9wYXJhbTsKKwkJY2hhcgkgICAqdmFs X3N0cmluZyA9IEpzb25iVW5xdW90ZShqYik7CisKKwkJKHZvaWQpIElucHV0RnVuY3Rpb25DYWxs U2FmZShpbnB1dF9maW5mbywgdmFsX3N0cmluZywgdHlwaW9wYXJhbSwKKwkJCQkJCQkJCSBjb2Vy Y2lvbi0+dGFyZ2V0dHlwbW9kLAorCQkJCQkJCQkJIChOb2RlICopIGVzY29udGV4dCwKKwkJCQkJ CQkJCSBvcC0+cmVzdmFsdWUpOworCX0KKwllbHNlCisJeworCQl2b2lkICpjYWNoZSA9IG9wLT5k Lmpzb25leHByX2NvZXJjaW9uLmpzb25fcG9wdWxhdGVfdHlwZV9jYWNoZTsKKworCQkqb3AtPnJl c3ZhbHVlID0ganNvbl9wb3B1bGF0ZV90eXBlKHJlcywgSlNPTkJPSUQsCisJCQkJCQkJCQkJICAg Y29lcmNpb24tPnRhcmdldHR5cGUsCisJCQkJCQkJCQkJICAgY29lcmNpb24tPnRhcmdldHR5cG1v ZCwKKwkJCQkJCQkJCQkgICAmY2FjaGUsCisJCQkJCQkJCQkJICAgZWNvbnRleHQtPmVjeHRfcGVy X3F1ZXJ5X21lbW9yeSwKKwkJCQkJCQkJCQkgICBvcC0+cmVzbnVsbCwgKE5vZGUgKikgZXNjb250 ZXh0KTsKKwl9Cit9CisKKy8qCisgKiBDaGVja3MgaWYgdGhlIGNvZXJjaW9uIGV2YWx1YXRpb24g bGVkIHRvIGFuIGVycm9yLiAgSWYgYW4gZXJyb3IgZGlkIG9jY3VyLAorICogdGhpcyBzZXRzIHBv c3RfZXZhbC0+ZXJyb3IgdG8gdHJpZ2dlciB0aGUgc3Vic2VxdWVudCBPTiBFUlJPUiBoYW5kbGlu ZworICogc3RlcHMuCisgKi8KK3ZvaWQKK0V4ZWNFdmFsSnNvbkNvZXJjaW9uRmluaXNoKEV4cHJT dGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3ApCit7CisJSnNvbkV4cHJTdGF0ZSAqanNlc3Rh dGUgPSBvcC0+ZC5qc29uZXhwci5qc2VzdGF0ZTsKKworCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVE KCZqc2VzdGF0ZS0+ZXNjb250ZXh0KSkKKwl7CisJCSpvcC0+cmVzdmFsdWUgPSAoRGF0dW0pIDA7 CisJCSpvcC0+cmVzbnVsbCA9IHRydWU7CisJCWpzZXN0YXRlLT5wb3N0X2V2YWwuZXJyb3IudmFs dWUgPSBCb29sR2V0RGF0dW0odHJ1ZSk7CisKKwkJLyoKKwkJICogQWxzbyBtYWtlIEVycm9yU2F2 ZUNvbnRleHQgcmVhZHkgZm9yIHRoZSBuZXh0IHJvdy4gIFNpbmNlIHdlIG5ldmVyCisJCSAqIHNl dCBkZXRhaWxzX3dhbnRlZCwgd2UgZG9uJ3QgbmVlZCB0byBhbHNvIHJlc2V0IGVycm9yX2RhdGEs IHdoaWNoCisJCSAqIHdvdWxkIGJlIE5VTEwgYW55d2F5LgorCQkgKi8KKwkJQXNzZXJ0KCFqc2Vz dGF0ZS0+ZXNjb250ZXh0LmRldGFpbHNfd2FudGVkICYmCisJCQkgICBqc2VzdGF0ZS0+ZXNjb250 ZXh0LmVycm9yX2RhdGEgPT0gTlVMTCk7CisJCWpzZXN0YXRlLT5lc2NvbnRleHQuZXJyb3Jfb2Nj dXJyZWQgPSBmYWxzZTsKKwl9Cit9CiAKIC8qCiAgKiBFeGVjRXZhbEdyb3VwaW5nRnVuYwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMgYi9zcmMvYmFja2Vu ZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYwppbmRleCAwOTk5NDUwM2IxLi43YTVmZjJmZWRmIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYworKysgYi9zcmMv YmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYwpAQCAtMTkzMCw2ICsxOTMwLDE0NiBAQCBs bHZtX2NvbXBpbGVfZXhwcihFeHByU3RhdGUgKnN0YXRlKQogCQkJCUxMVk1CdWlsZEJyKGIsIG9w YmxvY2tzW29wbm8gKyAxXSk7CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgRUVPUF9KU09ORVhQUl9Q QVRIOgorCQkJCXsKKwkJCQkJSnNvbkV4cHJTdGF0ZSAqanNlc3RhdGUgPSBvcC0+ZC5qc29uZXhw ci5qc2VzdGF0ZTsKKwkJCQkJTExWTVZhbHVlUmVmIHZfcmV0OworCisJCQkJCS8qCisJCQkJCSAq IENhbGwgRXhlY0V2YWxKc29uRXhwclBhdGgoKS4gIEl0IHJldHVybnMgdGhlIGFkZHJlc3Mgb2YK KwkJCQkJICogdGhlIHN0ZXAgdG8gcGVyZm9ybSBuZXh0LgorCQkJCQkgKi8KKwkJCQkJdl9yZXQg PSBidWlsZF9FdmFsWEZ1bmMoYiwgbW9kLCAiRXhlY0V2YWxKc29uRXhwclBhdGgiLAorCQkJCQkJ CQkJCQl2X3N0YXRlLCBvcCwgdl9lY29udGV4dCk7CisKKwkJCQkJLyoKKwkJCQkJICogQnVpbGQg YSBzd2l0Y2ggdG8gbWFwIHRoZSByZXR1cm4gdmFsdWUsIHdoaWNoIGlzIGEKKwkJCQkJICogcnVu dGltZSB2YWx1ZSBvZiB0aGUgc3RlcCBhZGRyZXNzIHRvIHBlcmZvcm0gbmV4dCwgdG8KKwkJCQkJ ICogZWl0aGVyIGp1bXBfZW1wdHksIGp1bXBfZXJyb3IsIG9yIHRoZSBjb2VyY2lvbgorCQkJCQkg KiBleHByZXNzaW9uLgorCQkJCQkgKi8KKwkJCQkJaWYgKGpzZXN0YXRlLT5qdW1wX2VtcHR5ID49 IDAgfHwKKwkJCQkJCWpzZXN0YXRlLT5qdW1wX2Vycm9yID49IDAgfHwKKwkJCQkJCWpzZXN0YXRl LT5qdW1wX2V2YWxfcmVzdWx0X2NvZXJjaW9uID49IDAgfHwKKwkJCQkJCWpzZXN0YXRlLT5udW1f aXRlbV9jb2VyY2lvbnMgPiAwKQorCQkJCQl7CisJCQkJCQlpbnQJCQlpOworCQkJCQkJTExWTVZh bHVlUmVmIHZfanVtcF9lbXB0eTsKKwkJCQkJCUxMVk1WYWx1ZVJlZiB2X2p1bXBfZXJyb3I7CisJ CQkJCQlMTFZNVmFsdWVSZWYgdl9qdW1wX2NvZXJjaW9uOworCQkJCQkJTExWTVZhbHVlUmVmIHZf c3dpdGNoOworCQkJCQkJTExWTUJhc2ljQmxvY2tSZWYgCWJfZG9uZSwKKwkJCQkJCQkJCQkJYl9l bXB0eSwKKwkJCQkJCQkJCQkJYl9lcnJvciwKKwkJCQkJCQkJCQkJYl9yZXN1bHRfY29lcmNpb24s CisJCQkJCQkJCQkJICAgKmJfaXRlbV9jb2VyY2lvbnMgPSBOVUxMOworCisJCQkJCQliX2VtcHR5 ID0KKwkJCQkJCQlsX2JiX2JlZm9yZV92KG9wYmxvY2tzW29wbm8gKyAxXSwKKwkJCQkJCQkJCQkg ICJvcC4lZC5qc29uZXhwcl9lbXB0eSIsIG9wbm8pOworCQkJCQkJYl9lcnJvciA9CisJCQkJCQkJ bF9iYl9iZWZvcmVfdihvcGJsb2Nrc1tvcG5vICsgMV0sCisJCQkJCQkJCQkJICAib3AuJWQuanNv bmV4cHJfZXJyb3IiLCBvcG5vKTsKKwkJCQkJCWJfcmVzdWx0X2NvZXJjaW9uID0KKwkJCQkJCQls X2JiX2JlZm9yZV92KG9wYmxvY2tzW29wbm8gKyAxXSwKKwkJCQkJCQkJCQkgICJvcC4lZC5qc29u ZXhwcl9yZXN1bHRfY29lcmNpb24iLCBvcG5vKTsKKwkJCQkJCWlmIChqc2VzdGF0ZS0+bnVtX2l0 ZW1fY29lcmNpb25zID4gMCkKKwkJCQkJCXsKKwkJCQkJCQliX2l0ZW1fY29lcmNpb25zID0gcGFs bG9jKHNpemVvZihMTFZNQmFzaWNCbG9ja1JlZikgKgorCQkJCQkJCQkJCQkJCSAganNlc3RhdGUt Pm51bV9pdGVtX2NvZXJjaW9ucyk7CisJCQkJCQkJZm9yIChpID0gMDsgaSA8IGpzZXN0YXRlLT5u dW1faXRlbV9jb2VyY2lvbnM7IGkrKykKKwkJCQkJCQl7CisJCQkJCQkJCWJfaXRlbV9jb2VyY2lv bnNbaV0gPQorCQkJCQkJCQkJbF9iYl9iZWZvcmVfdihvcGJsb2Nrc1tvcG5vICsgMV0sCisJCQkJ CQkJCQkJCQkgICJvcC4lZC5qc29uZXhwcl9pdGVtX2NvZXJjaW9uLiVkIiwKKwkJCQkJCQkJCQkJ CSAgb3BubywgaSk7CisJCQkJCQkJfQorCQkJCQkJfQorCQkJCQkJYl9kb25lID0KKwkJCQkJCQls X2JiX2JlZm9yZV92KG9wYmxvY2tzW29wbm8gKyAxXSwKKwkJCQkJCQkJCQkgICJvcC4lZC5qc29u ZXhwcl9kb25lIiwgb3Bubyk7CisKKwkJCQkJCXZfc3dpdGNoID0gTExWTUJ1aWxkU3dpdGNoKGIs CisJCQkJCQkJCQkJCQkgICB2X3JldCwKKwkJCQkJCQkJCQkJCSAgIGJfZG9uZSwKKwkJCQkJCQkJ CQkJCSAgIGpzZXN0YXRlLT5udW1faXRlbV9jb2VyY2lvbnMgKyAzKTsKKwkJCQkJCS8qIFJldHVy bmVkIGpzZXN0YXRlLT5qdW1wX2VtcHR5PyAqLworCQkJCQkJaWYgKGpzZXN0YXRlLT5qdW1wX2Vt cHR5ID49IDApCisJCQkJCQl7CisJCQkJCQkJdl9qdW1wX2VtcHR5ID0gbF9pbnQzMl9jb25zdChs YywganNlc3RhdGUtPmp1bXBfZW1wdHkpOworCQkJCQkJCUxMVk1BZGRDYXNlKHZfc3dpdGNoLCB2 X2p1bXBfZW1wdHksIGJfZW1wdHkpOworCQkJCQkJfQorCQkJCQkJLyogUmV0dXJuZWQganNlc3Rh dGUtPmp1bXBfZXJyb3I/ICovCisJCQkJCQlpZiAoanNlc3RhdGUtPmp1bXBfZXJyb3IgPj0gMCkK KwkJCQkJCXsKKwkJCQkJCQl2X2p1bXBfZXJyb3IgPSBsX2ludDMyX2NvbnN0KGxjLCBqc2VzdGF0 ZS0+anVtcF9lcnJvcik7CisJCQkJCQkJTExWTUFkZENhc2Uodl9zd2l0Y2gsIHZfanVtcF9lcnJv ciwgYl9lcnJvcik7CisJCQkJCQl9CisJCQkJCQkvKiBSZXR1cm5lZCBqc2VzdGF0ZS0+anVtcF9l dmFsX3Jlc3VsdF9jb2VyY2lvbj8gKi8KKwkJCQkJCWlmIChqc2VzdGF0ZS0+anVtcF9ldmFsX3Jl c3VsdF9jb2VyY2lvbiA+PSAwKQorCQkJCQkJeworCQkJCQkJCXZfanVtcF9jb2VyY2lvbiA9IGxf aW50MzJfY29uc3QobGMsIGpzZXN0YXRlLT5qdW1wX2V2YWxfcmVzdWx0X2NvZXJjaW9uKTsKKwkJ CQkJCQlMTFZNQWRkQ2FzZSh2X3N3aXRjaCwgdl9qdW1wX2NvZXJjaW9uLCBiX3Jlc3VsdF9jb2Vy Y2lvbik7CisJCQkJCQl9CisJCQkJCQkvKiBSZXR1cm5lZCBvbmUgb2YganNlc3RhdGUtPmV2YWxf aXRlbV9jb2VyY2lvbl9qdW1wc1tdPyAqLworCQkJCQkJZm9yIChpID0gMDsgaSA8IGpzZXN0YXRl LT5udW1faXRlbV9jb2VyY2lvbnM7IGkrKykKKwkJCQkJCXsKKwkJCQkJCQlpZiAoanNlc3RhdGUt PmV2YWxfaXRlbV9jb2VyY2lvbl9qdW1wc1tpXSA+PSAwKQorCQkJCQkJCXsKKwkJCQkJCQkJdl9q dW1wX2NvZXJjaW9uID0gbF9pbnQzMl9jb25zdChsYywganNlc3RhdGUtPmV2YWxfaXRlbV9jb2Vy Y2lvbl9qdW1wc1tpXSk7CisJCQkJCQkJCUxMVk1BZGRDYXNlKHZfc3dpdGNoLCB2X2p1bXBfY29l cmNpb24sIGJfaXRlbV9jb2VyY2lvbnNbaV0pOworCQkJCQkJCX0KKwkJCQkJCX0KKworCQkJCQkJ LyogT04gRU1QVFkgY29kZSAqLworCQkJCQkJTExWTVBvc2l0aW9uQnVpbGRlckF0RW5kKGIsIGJf ZW1wdHkpOworCQkJCQkJaWYgKGpzZXN0YXRlLT5qdW1wX2VtcHR5ID49IDApCisJCQkJCQkJTExW TUJ1aWxkQnIoYiwgb3BibG9ja3NbanNlc3RhdGUtPmp1bXBfZW1wdHldKTsKKwkJCQkJCWVsc2UK KwkJCQkJCQlMTFZNQnVpbGRVbnJlYWNoYWJsZShiKTsKKwkJCQkJCS8qIE9OIEVSUk9SIGNvZGUg Ki8KKwkJCQkJCUxMVk1Qb3NpdGlvbkJ1aWxkZXJBdEVuZChiLCBiX2Vycm9yKTsKKwkJCQkJCWlm IChqc2VzdGF0ZS0+anVtcF9lcnJvciA+PSAwKQorCQkJCQkJCUxMVk1CdWlsZEJyKGIsIG9wYmxv Y2tzW2pzZXN0YXRlLT5qdW1wX2Vycm9yXSk7CisJCQkJCQllbHNlCisJCQkJCQkJTExWTUJ1aWxk VW5yZWFjaGFibGUoYik7CisJCQkJCQkvKiByZXN1bHRfY29lcmNpb24gY29kZSAqLworCQkJCQkJ TExWTVBvc2l0aW9uQnVpbGRlckF0RW5kKGIsIGJfcmVzdWx0X2NvZXJjaW9uKTsKKwkJCQkJCWlm IChqc2VzdGF0ZS0+anVtcF9ldmFsX3Jlc3VsdF9jb2VyY2lvbiA+PSAwKQorCQkJCQkJCUxMVk1C dWlsZEJyKGIsIG9wYmxvY2tzW2pzZXN0YXRlLT5qdW1wX2V2YWxfcmVzdWx0X2NvZXJjaW9uXSk7 CisJCQkJCQllbHNlCisJCQkJCQkJTExWTUJ1aWxkVW5yZWFjaGFibGUoYik7CisJCQkJCQkvKiBp dGVtIGNvZXJjaW9uIGNvZGUgYmxvY2tzICovCisJCQkJCQlmb3IgKGkgPSAwOyBpIDwganNlc3Rh dGUtPm51bV9pdGVtX2NvZXJjaW9uczsgaSsrKQorCQkJCQkJeworCQkJCQkJCUxMVk1Qb3NpdGlv bkJ1aWxkZXJBdEVuZChiLCBiX2l0ZW1fY29lcmNpb25zW2ldKTsKKwkJCQkJCQlpZiAoanNlc3Rh dGUtPmV2YWxfaXRlbV9jb2VyY2lvbl9qdW1wc1tpXSA+PSAwKQorCQkJCQkJCQlMTFZNQnVpbGRC cihiLCBvcGJsb2Nrc1tqc2VzdGF0ZS0+ZXZhbF9pdGVtX2NvZXJjaW9uX2p1bXBzW2ldXSk7CisJ CQkJCQkJZWxzZQorCQkJCQkJCQlMTFZNQnVpbGRVbnJlYWNoYWJsZShiKTsKKwkJCQkJCX0KKwor CQkJCQkJTExWTVBvc2l0aW9uQnVpbGRlckF0RW5kKGIsIGJfZG9uZSk7CisJCQkJCX0KKworCQkJ CQlMTFZNQnVpbGRCcihiLCBvcGJsb2Nrc1tvcG5vICsgMV0pOworCQkJCQlicmVhazsKKwkJCQl9 CisKKwkJCWNhc2UgRUVPUF9KU09ORVhQUl9DT0VSQ0lPTjoKKwkJCQlidWlsZF9FdmFsWEZ1bmMo YiwgbW9kLCAiRXhlY0V2YWxKc29uQ29lcmNpb24iLAorCQkJCQkJCQkJdl9zdGF0ZSwgb3AsIHZf ZWNvbnRleHQpOworCisJCQkJTExWTUJ1aWxkQnIoYiwgb3BibG9ja3Nbb3BubyArIDFdKTsKKwkJ CQlicmVhazsKKworCQkJY2FzZSBFRU9QX0pTT05FWFBSX0NPRVJDSU9OX0ZJTklTSDoKKwkJCQli dWlsZF9FdmFsWEZ1bmMoYiwgbW9kLCAiRXhlY0V2YWxKc29uQ29lcmNpb25GaW5pc2giLAorCQkJ CQkJCQl2X3N0YXRlLCBvcCk7CisKKwkJCQlMTFZNQnVpbGRCcihiLCBvcGJsb2Nrc1tvcG5vICsg MV0pOworCQkJCWJyZWFrOworCiAJCQljYXNlIEVFT1BfQUdHUkVGOgogCQkJCXsKIAkJCQkJTExW TVZhbHVlUmVmIHZfYWdnbm87CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZt aml0X3R5cGVzLmMgYi9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X3R5cGVzLmMKaW5kZXgg NDdjOWRhZjQwMi4uZWRkMWUxNjc5YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvaml0L2xsdm0v bGx2bWppdF90eXBlcy5jCisrKyBiL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfdHlwZXMu YwpAQCAtMTcyLDYgKzE3Miw5IEBAIHZvaWQJICAgKnJlZmVyZW5jZWRfZnVuY3Rpb25zW10gPQog CUV4ZWNFdmFsWG1sRXhwciwKIAlFeGVjRXZhbEpzb25Db25zdHJ1Y3RvciwKIAlFeGVjRXZhbEpz b25Jc1ByZWRpY2F0ZSwKKwlFeGVjRXZhbEpzb25Db2VyY2lvbiwKKwlFeGVjRXZhbEpzb25Db2Vy Y2lvbkZpbmlzaCwKKwlFeGVjRXZhbEpzb25FeHByUGF0aCwKIAlNYWtlRXhwYW5kZWRPYmplY3RS ZWFkT25seUludGVybmFsLAogCXNsb3RfZ2V0bWlzc2luZ2F0dHJzLAogCXNsb3RfZ2V0c29tZWF0 dHJzX2ludCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jIGIvc3Jj L2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMKaW5kZXggYTAyMzMyYTFlYy4uMDlhMDVhMDM3MyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tl bmQvbm9kZXMvbWFrZWZ1bmNzLmMKQEAgLTg1Nyw2ICs4NTcsMjQgQEAgbWFrZUpzb25WYWx1ZUV4 cHIoRXhwciAqcmF3X2V4cHIsIEV4cHIgKmZvcm1hdHRlZF9leHByLAogCXJldHVybiBqdmU7CiB9 CiAKKy8qCisgKiBtYWtlSnNvbkJlaGF2aW9yIC0KKyAqCSAgY3JlYXRlcyBhIEpzb25CZWhhdmlv ciBub2RlCisgKi8KK0pzb25CZWhhdmlvciAqCittYWtlSnNvbkJlaGF2aW9yKEpzb25CZWhhdmlv clR5cGUgdHlwZSwgTm9kZSAqZXhwciwgSnNvbkNvZXJjaW9uICpjb2VyY2lvbiwKKwkJCQkgaW50 IGxvY2F0aW9uKQoreworCUpzb25CZWhhdmlvciAqYmVoYXZpb3IgPSBtYWtlTm9kZShKc29uQmVo YXZpb3IpOworCisJYmVoYXZpb3ItPmJ0eXBlID0gdHlwZTsKKwliZWhhdmlvci0+ZXhwciA9IGV4 cHI7CisJYmVoYXZpb3ItPmNvZXJjaW9uID0gY29lcmNpb247CisJYmVoYXZpb3ItPmxvY2F0aW9u ID0gbG9jYXRpb247CisKKwlyZXR1cm4gYmVoYXZpb3I7Cit9CisKIC8qCiAgKiBtYWtlSnNvbktl eVZhbHVlIC0KICAqCSAgY3JlYXRlcyBhIEpzb25LZXlWYWx1ZSBub2RlCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5j cy5jCmluZGV4IDAzMDQ2M2NiNDIuLmQyNzIwMjdmOGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L25vZGVzL25vZGVGdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCkBA IC0yMzQsNiArMjM0LDMzIEBAIGV4cHJUeXBlKGNvbnN0IE5vZGUgKmV4cHIpCiAJCWNhc2UgVF9K c29uSXNQcmVkaWNhdGU6CiAJCQl0eXBlID0gQk9PTE9JRDsKIAkJCWJyZWFrOworCQljYXNlIFRf SnNvbkV4cHI6CisJCQl7CisJCQkJY29uc3QgSnNvbkV4cHIgKmpleHByID0gKGNvbnN0IEpzb25F eHByICopIGV4cHI7CisKKwkJCQl0eXBlID0gamV4cHItPnJldHVybmluZy0+dHlwaWQ7CisJCQkJ YnJlYWs7CisJCQl9CisJCWNhc2UgVF9Kc29uQ29lcmNpb246CisJCQl7CisJCQkJY29uc3QgSnNv bkNvZXJjaW9uICpjb2VyY2lvbiA9IChjb25zdCBKc29uQ29lcmNpb24gKikgZXhwcjsKKworCQkJ CXR5cGUgPSBjb2VyY2lvbi0+dGFyZ2V0dHlwZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJY2FzZSBU X0pzb25JdGVtQ29lcmNpb246CisJCQl0eXBlID0gZXhwclR5cGUoKChKc29uSXRlbUNvZXJjaW9u ICopIGV4cHIpLT5jb2VyY2lvbik7CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25CZWhhdmlvcjoK KwkJCXsKKwkJCQljb25zdCBKc29uQmVoYXZpb3IgKmJlaGF2aW9yID0gKGNvbnN0IEpzb25CZWhh dmlvciAqKSBleHByOworCisJCQkJaWYgKGJlaGF2aW9yLT5jb2VyY2lvbikKKwkJCQkJdHlwZSA9 IGV4cHJUeXBlKChOb2RlICopIGJlaGF2aW9yLT5jb2VyY2lvbik7CisJCQkJZWxzZQorCQkJCQl0 eXBlID0gZXhwclR5cGUoYmVoYXZpb3ItPmV4cHIpOworCQkJCWJyZWFrOworCQkJfQogCQljYXNl IFRfTnVsbFRlc3Q6CiAJCQl0eXBlID0gQk9PTE9JRDsKIAkJCWJyZWFrOwpAQCAtNDkxLDggKzUx OCwzMiBAQCBleHByVHlwbW9kKGNvbnN0IE5vZGUgKmV4cHIpCiAJCQlyZXR1cm4gKChjb25zdCBT UUxWYWx1ZUZ1bmN0aW9uICopIGV4cHIpLT50eXBtb2Q7CiAJCWNhc2UgVF9Kc29uVmFsdWVFeHBy OgogCQkJcmV0dXJuIGV4cHJUeXBtb2QoKE5vZGUgKikgKChjb25zdCBKc29uVmFsdWVFeHByICop IGV4cHIpLT5mb3JtYXR0ZWRfZXhwcik7Ci0JCWNhc2UgVF9Kc29uQ29uc3RydWN0b3JFeHByOgot CQkJcmV0dXJuICgoY29uc3QgSnNvbkNvbnN0cnVjdG9yRXhwciAqKSBleHByKS0+cmV0dXJuaW5n LT50eXBtb2Q7CisJCWNhc2UgVF9Kc29uRXhwcjoKKwkJCXsKKwkJCQljb25zdCBKc29uRXhwciAq amV4cHIgPSAoY29uc3QgSnNvbkV4cHIgKikgZXhwcjsKKworCQkJCXJldHVybiBqZXhwci0+cmV0 dXJuaW5nLT50eXBtb2Q7CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25Db2VyY2lvbjoK KwkJCXsKKwkJCQljb25zdCBKc29uQ29lcmNpb24gKmNvZXJjaW9uID0gKGNvbnN0IEpzb25Db2Vy Y2lvbiAqKSBleHByOworCisJCQkJcmV0dXJuIGNvZXJjaW9uLT50YXJnZXR0eXBtb2Q7CisJCQl9 CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25JdGVtQ29lcmNpb246CisJCQlyZXR1cm4gZXhwclR5 cG1vZCgoKEpzb25JdGVtQ29lcmNpb24gKikgZXhwciktPmNvZXJjaW9uKTsKKwkJY2FzZSBUX0pz b25CZWhhdmlvcjoKKwkJCXsKKwkJCQljb25zdCBKc29uQmVoYXZpb3IgKmJlaGF2aW9yID0gKGNv bnN0IEpzb25CZWhhdmlvciAqKSBleHByOworCisJCQkJaWYgKGJlaGF2aW9yLT5jb2VyY2lvbikK KwkJCQkJcmV0dXJuIGV4cHJUeXBtb2QoKE5vZGUgKikgYmVoYXZpb3ItPmNvZXJjaW9uKTsKKwkJ CQllbHNlCisJCQkJCXJldHVybiBleHByVHlwbW9kKGJlaGF2aW9yLT5leHByKTsKKwkJCX0KKwkJ CWJyZWFrOwogCQljYXNlIFRfQ29lcmNlVG9Eb21haW46CiAJCQlyZXR1cm4gKChjb25zdCBDb2Vy Y2VUb0RvbWFpbiAqKSBleHByKS0+cmVzdWx0dHlwbW9kOwogCQljYXNlIFRfQ29lcmNlVG9Eb21h aW5WYWx1ZToKQEAgLTk2OSw2ICsxMDIwLDI3IEBAIGV4cHJDb2xsYXRpb24oY29uc3QgTm9kZSAq ZXhwcikKIAkJCS8qIElTIEpTT04ncyByZXN1bHQgaXMgYm9vbGVhbiAuLi4gKi8KIAkJCWNvbGwg PSBJbnZhbGlkT2lkOwkvKiAuLi4gc28gaXQgaGFzIG5vIGNvbGxhdGlvbiAqLwogCQkJYnJlYWs7 CisJCWNhc2UgVF9Kc29uRXhwcjoKKwkJCWNvbGwgPSBleHByQ29sbGF0aW9uKCgoSnNvbkV4cHIg KikgZXhwciktPnJlc3VsdF9jb2VyY2lvbik7CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25Db2Vy Y2lvbjoKKwkJCWNvbGwgPSAoKGNvbnN0IEpzb25Db2VyY2lvbiAqKSBleHByKS0+Y29sbGF0aW9u OworCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uSXRlbUNvZXJjaW9uOgorCQkJY29sbCA9IGV4cHJD b2xsYXRpb24oKChKc29uSXRlbUNvZXJjaW9uICopIGV4cHIpLT5jb2VyY2lvbik7CisJCQlicmVh azsKKwkJY2FzZSBUX0pzb25CZWhhdmlvcjoKKwkJCXsKKwkJCQlKc29uQmVoYXZpb3IgKmJlaGF2 aW9yID0gKEpzb25CZWhhdmlvciAqKSBleHByOworCisJCQkJaWYgKGJlaGF2aW9yLT5jb2VyY2lv bikKKwkJCQkJY29sbCA9IGV4cHJDb2xsYXRpb24oKE5vZGUgKikgYmVoYXZpb3ItPmNvZXJjaW9u KTsKKwkJCQllbHNlIGlmIChiZWhhdmlvci0+ZXhwcikKKwkJCQkJY29sbCA9IGV4cHJDb2xsYXRp b24oYmVoYXZpb3ItPmV4cHIpOworCQkJCWVsc2UKKwkJCQkJY29sbCA9IEludmFsaWRPaWQ7CisJ CQl9CisJCQlicmVhazsKIAkJY2FzZSBUX051bGxUZXN0OgogCQkJLyogTnVsbFRlc3QncyByZXN1 bHQgaXMgYm9vbGVhbiAuLi4gKi8KIAkJCWNvbGwgPSBJbnZhbGlkT2lkOwkvKiAuLi4gc28gaXQg aGFzIG5vIGNvbGxhdGlvbiAqLwpAQCAtMTIwNSw2ICsxMjc3LDQyIEBAIGV4cHJTZXRDb2xsYXRp b24oTm9kZSAqZXhwciwgT2lkIGNvbGxhdGlvbikKIAkJY2FzZSBUX0pzb25Jc1ByZWRpY2F0ZToK IAkJCUFzc2VydCghT2lkSXNWYWxpZChjb2xsYXRpb24pKTsgLyogcmVzdWx0IGlzIGFsd2F5cyBi b29sZWFuICovCiAJCQlicmVhazsKKwkJY2FzZSBUX0pzb25FeHByOgorCQkJeworCQkJCUpzb25F eHByICAgKmpleHByID0gKEpzb25FeHByICopIGV4cHI7CisKKwkJCQlpZiAoamV4cHItPnJlc3Vs dF9jb2VyY2lvbikKKwkJCQkJZXhwclNldENvbGxhdGlvbigoTm9kZSAqKSBqZXhwci0+cmVzdWx0 X2NvZXJjaW9uLCBjb2xsYXRpb24pOworCQkJCWVsc2UKKwkJCQkJQXNzZXJ0KCFPaWRJc1ZhbGlk KGNvbGxhdGlvbikpOyAvKiByZXN1bHQgaXMgYWx3YXlzIGEKKwkJCQkJCQkJCQkJCQkgKiBqc29u W2JdIHR5cGUgKi8KKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIFRfSnNvbkl0ZW1Db2VyY2lvbjoK KwkJCXsKKwkJCQlKc29uSXRlbUNvZXJjaW9uICppdGVtX2NvZXJjaW9uID0gKEpzb25JdGVtQ29l cmNpb24gKikgZXhwcjsKKworCQkJCWlmIChpdGVtX2NvZXJjaW9uLT5jb2VyY2lvbikKKwkJCQkJ ZXhwclNldENvbGxhdGlvbihpdGVtX2NvZXJjaW9uLT5jb2VyY2lvbiwgY29sbGF0aW9uKTsKKwkJ CX0KKwkJCWJyZWFrOworCQljYXNlIFRfSnNvbkNvZXJjaW9uOgorCQkJeworCQkJCUpzb25Db2Vy Y2lvbiAqY29lcmNpb24gPSAoSnNvbkNvZXJjaW9uICopIGV4cHI7CisKKwkJCQljb2VyY2lvbi0+ Y29sbGF0aW9uID0gY29sbGF0aW9uOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uQmVo YXZpb3I6CisJCQl7CisJCQkJSnNvbkJlaGF2aW9yICpiZWhhdmlvciA9IChKc29uQmVoYXZpb3Ig KikgZXhwcjsKKworCQkJCWlmIChiZWhhdmlvci0+ZXhwcikKKwkJCQkJZXhwclNldENvbGxhdGlv bihiZWhhdmlvci0+ZXhwciwgY29sbGF0aW9uKTsKKwkJCQlpZiAoYmVoYXZpb3ItPmNvZXJjaW9u KQorCQkJCQlleHByU2V0Q29sbGF0aW9uKChOb2RlICopIGJlaGF2aW9yLT5jb2VyY2lvbiwgY29s bGF0aW9uKTsKKwkJCX0KKwkJCWJyZWFrOwogCQljYXNlIFRfTnVsbFRlc3Q6CiAJCQkvKiBOdWxs VGVzdCdzIHJlc3VsdCBpcyBib29sZWFuIC4uLiAqLwogCQkJQXNzZXJ0KCFPaWRJc1ZhbGlkKGNv bGxhdGlvbikpOyAvKiAuLi4gc28gbmV2ZXIgc2V0IGEgY29sbGF0aW9uICovCkBAIC0xNTA4LDYg KzE2MTYsMTggQEAgZXhwckxvY2F0aW9uKGNvbnN0IE5vZGUgKmV4cHIpCiAJCWNhc2UgVF9Kc29u SXNQcmVkaWNhdGU6CiAJCQlsb2MgPSAoKGNvbnN0IEpzb25Jc1ByZWRpY2F0ZSAqKSBleHByKS0+ bG9jYXRpb247CiAJCQlicmVhazsKKwkJY2FzZSBUX0pzb25FeHByOgorCQkJeworCQkJCWNvbnN0 IEpzb25FeHByICpqc2V4cHIgPSAoY29uc3QgSnNvbkV4cHIgKikgZXhwcjsKKworCQkJCS8qIGNv bnNpZGVyIGJvdGggZnVuY3Rpb24gbmFtZSBhbmQgbGVmdG1vc3QgYXJnICovCisJCQkJbG9jID0g bGVmdG1vc3RMb2MoanNleHByLT5sb2NhdGlvbiwKKwkJCQkJCQkJICBleHByTG9jYXRpb24oanNl eHByLT5mb3JtYXR0ZWRfZXhwcikpOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uQmVo YXZpb3I6CisJCQlsb2MgPSBleHByTG9jYXRpb24oKChKc29uQmVoYXZpb3IgKikgZXhwciktPmV4 cHIpOworCQkJYnJlYWs7CiAJCWNhc2UgVF9OdWxsVGVzdDoKIAkJCXsKIAkJCQljb25zdCBOdWxs VGVzdCAqbmV4cHIgPSAoY29uc3QgTnVsbFRlc3QgKikgZXhwcjsKQEAgLTIyNjAsNiArMjM4MCw0 NSBAQCBleHByZXNzaW9uX3RyZWVfd2Fsa2VyX2ltcGwoTm9kZSAqbm9kZSwKIAkJCWJyZWFrOwog CQljYXNlIFRfSnNvbklzUHJlZGljYXRlOgogCQkJcmV0dXJuIFdBTEsoKChKc29uSXNQcmVkaWNh dGUgKikgbm9kZSktPmV4cHIpOworCQljYXNlIFRfSnNvbkV4cHI6CisJCQl7CisJCQkJSnNvbkV4 cHIgICAqamV4cHIgPSAoSnNvbkV4cHIgKikgbm9kZTsKKworCQkJCWlmIChXQUxLKGpleHByLT5m b3JtYXR0ZWRfZXhwcikpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmIChXQUxLKGpleHByLT5y ZXN1bHRfY29lcmNpb24pKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAoV0FMSyhqZXhwci0+ aXRlbV9jb2VyY2lvbnMpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAoV0FMSyhqZXhwci0+ cGFzc2luZ192YWx1ZXMpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQkvKiB3ZSBhc3N1bWUgd2Fs a2VyIGRvZXNuJ3QgY2FyZSBhYm91dCBwYXNzaW5nX25hbWVzICovCisJCQkJaWYgKFdBTEsoamV4 cHItPm9uX2VtcHR5KSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKFdBTEsoamV4cHItPm9u X2Vycm9yKSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSBUX0pz b25Db2VyY2lvbjoKKwkJCWJyZWFrOworCQljYXNlIFRfSnNvbkl0ZW1Db2VyY2lvbjoKKwkJCXsK KwkJCQlKc29uSXRlbUNvZXJjaW9uICAgKml0ZW1fY29lcmNpb24gPSAoSnNvbkl0ZW1Db2VyY2lv biAqKSBub2RlOworCisJCQkJaWYgKFdBTEsoaXRlbV9jb2VyY2lvbi0+Y29lcmNpb24pKQorCQkJ CQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIFRfSnNvbkJlaGF2aW9yOgor CQkJeworCQkJCUpzb25CZWhhdmlvciAgICpiZWhhdmlvciA9IChKc29uQmVoYXZpb3IgKikgbm9k ZTsKKworCQkJCWlmIChXQUxLKGJlaGF2aW9yLT5leHByKSkKKwkJCQkJcmV0dXJuIHRydWU7CisJ CQkJaWYgKFdBTEsoYmVoYXZpb3ItPmNvZXJjaW9uKSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQl9 CisJCQlicmVhazsKIAkJY2FzZSBUX051bGxUZXN0OgogCQkJcmV0dXJuIFdBTEsoKChOdWxsVGVz dCAqKSBub2RlKS0+YXJnKTsKIAkJY2FzZSBUX0Jvb2xlYW5UZXN0OgpAQCAtMzI1OSw2ICszNDE4 LDQ2IEBAIGV4cHJlc3Npb25fdHJlZV9tdXRhdG9yX2ltcGwoTm9kZSAqbm9kZSwKIAogCQkJCXJl dHVybiAoTm9kZSAqKSBuZXdub2RlOwogCQkJfQorCQljYXNlIFRfSnNvbkV4cHI6CisJCQl7CisJ CQkJSnNvbkV4cHIgICAqamV4cHIgPSAoSnNvbkV4cHIgKikgbm9kZTsKKwkJCQlKc29uRXhwciAg ICpuZXdub2RlOworCisJCQkJRkxBVENPUFkobmV3bm9kZSwgamV4cHIsIEpzb25FeHByKTsKKwkJ CQlNVVRBVEUobmV3bm9kZS0+cGF0aF9zcGVjLCBqZXhwci0+cGF0aF9zcGVjLCBOb2RlICopOwor CQkJCU1VVEFURShuZXdub2RlLT5mb3JtYXR0ZWRfZXhwciwgamV4cHItPmZvcm1hdHRlZF9leHBy LCBOb2RlICopOworCQkJCU1VVEFURShuZXdub2RlLT5yZXN1bHRfY29lcmNpb24sIGpleHByLT5y ZXN1bHRfY29lcmNpb24sIE5vZGUgKik7CisJCQkJTVVUQVRFKG5ld25vZGUtPml0ZW1fY29lcmNp b25zLCBqZXhwci0+aXRlbV9jb2VyY2lvbnMsIExpc3QgKik7CisJCQkJTVVUQVRFKG5ld25vZGUt PnBhc3NpbmdfdmFsdWVzLCBqZXhwci0+cGFzc2luZ192YWx1ZXMsIExpc3QgKik7CisJCQkJLyog YXNzdW1lIG11dGF0b3IgZG9lcyBub3QgY2FyZSBhYm91dCBwYXNzaW5nX25hbWVzICovCisJCQkJ TVVUQVRFKG5ld25vZGUtPm9uX2VtcHR5LCBqZXhwci0+b25fZW1wdHksIEpzb25CZWhhdmlvciAq KTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+b25fZXJyb3IsIGpleHByLT5vbl9lcnJvciwgSnNvbkJl aGF2aW9yICopOworCQkJCXJldHVybiAoTm9kZSAqKSBuZXdub2RlOworCQkJfQorCQkJYnJlYWs7 CisJCWNhc2UgVF9Kc29uQ29lcmNpb246CisJCQlyZXR1cm4gKE5vZGUgKikgY29weU9iamVjdChu b2RlKTsKKwkJY2FzZSBUX0pzb25JdGVtQ29lcmNpb246CisJCQl7CisJCQkJSnNvbkl0ZW1Db2Vy Y2lvbiAgICppdGVtX2NvZXJjaW9uID0gKEpzb25JdGVtQ29lcmNpb24gKikgbm9kZTsKKwkJCQlK c29uSXRlbUNvZXJjaW9uICAgKm5ld25vZGU7CisKKwkJCQlGTEFUQ09QWShuZXdub2RlLCBpdGVt X2NvZXJjaW9uLCBKc29uSXRlbUNvZXJjaW9uKTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+Y29lcmNp b24sIGl0ZW1fY29lcmNpb24tPmNvZXJjaW9uLCBOb2RlICopOworCQkJCXJldHVybiAoTm9kZSAq KSBuZXdub2RlOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uQmVoYXZpb3I6CisJCQl7 CisJCQkJSnNvbkJlaGF2aW9yICAgKmJlaGF2aW9yID0gKEpzb25CZWhhdmlvciAqKSBub2RlOwor CQkJCUpzb25CZWhhdmlvciAgICpuZXdub2RlOworCisJCQkJRkxBVENPUFkobmV3bm9kZSwgYmVo YXZpb3IsIEpzb25CZWhhdmlvcik7CisJCQkJTVVUQVRFKG5ld25vZGUtPmV4cHIsIGJlaGF2aW9y LT5leHByLCBOb2RlICopOworCQkJCU1VVEFURShuZXdub2RlLT5jb2VyY2lvbiwgYmVoYXZpb3It PmNvZXJjaW9uLCBKc29uQ29lcmNpb24gKik7CisJCQkJcmV0dXJuIChOb2RlICopIG5ld25vZGU7 CisJCQl9CisJCQlicmVhazsKIAkJY2FzZSBUX051bGxUZXN0OgogCQkJewogCQkJCU51bGxUZXN0 ICAgKm50ZXN0ID0gKE51bGxUZXN0ICopIG5vZGU7CkBAIC0zOTQ1LDYgKzQxNDQsMzYgQEAgcmF3 X2V4cHJlc3Npb25fdHJlZV93YWxrZXJfaW1wbChOb2RlICpub2RlLAogCQkJYnJlYWs7CiAJCWNh c2UgVF9Kc29uSXNQcmVkaWNhdGU6CiAJCQlyZXR1cm4gV0FMSygoKEpzb25Jc1ByZWRpY2F0ZSAq KSBub2RlKS0+ZXhwcik7CisJCWNhc2UgVF9Kc29uQXJndW1lbnQ6CisJCQlyZXR1cm4gV0FMSygo KEpzb25Bcmd1bWVudCAqKSBub2RlKS0+dmFsKTsKKwkJY2FzZSBUX0pzb25GdW5jRXhwcjoKKwkJ CXsKKwkJCQlKc29uRnVuY0V4cHIgKmpmZSA9IChKc29uRnVuY0V4cHIgKikgbm9kZTsKKworCQkJ CWlmIChXQUxLKGpmZS0+Y29udGV4dF9pdGVtKSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYg KFdBTEsoamZlLT5wYXRoc3BlYykpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmIChXQUxLKGpm ZS0+cGFzc2luZykpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmIChqZmUtPm91dHB1dCAmJiBX QUxLKGpmZS0+b3V0cHV0KSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKGpmZS0+b25fZW1w dHkpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmIChqZmUtPm9uX2Vycm9yKQorCQkJCQlyZXR1 cm4gdHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIFRfSnNvbkJlaGF2aW9yOgorCQkJewor CQkJCUpzb25CZWhhdmlvciAqamIgPSAoSnNvbkJlaGF2aW9yICopIG5vZGU7CisKKwkJCQlpZiAo V0FMSyhqYi0+ZXhwcikpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmIChXQUxLKGpiLT5jb2Vy Y2lvbikpCisJCQkJCXJldHVybiB0cnVlOworCQkJfQorCQkJYnJlYWs7CiAJCWNhc2UgVF9OdWxs VGVzdDoKIAkJCXJldHVybiBXQUxLKCgoTnVsbFRlc3QgKikgbm9kZSktPmFyZyk7CiAJCWNhc2Ug VF9Cb29sZWFuVGVzdDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nv c3RzaXplLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jCmluZGV4IDhi NzZlOTg1MjkuLjRjZDYwNmNhNzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9w YXRoL2Nvc3RzaXplLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUu YwpAQCAtNDg3OSw3ICs0ODc5LDggQEAgY29zdF9xdWFsX2V2YWxfd2Fsa2VyKE5vZGUgKm5vZGUs IGNvc3RfcXVhbF9ldmFsX2NvbnRleHQgKmNvbnRleHQpCiAJCQkgSXNBKG5vZGUsIFNRTFZhbHVl RnVuY3Rpb24pIHx8CiAJCQkgSXNBKG5vZGUsIFhtbEV4cHIpIHx8CiAJCQkgSXNBKG5vZGUsIENv ZXJjZVRvRG9tYWluKSB8fAotCQkJIElzQShub2RlLCBOZXh0VmFsdWVFeHByKSkKKwkJCSBJc0Eo bm9kZSwgTmV4dFZhbHVlRXhwcikgfHwKKwkJCSBJc0Eobm9kZSwgSnNvbkV4cHIpKQogCXsKIAkJ LyogVHJlYXQgYWxsIHRoZXNlIGFzIGhhdmluZyBjb3N0IDEgKi8KIAkJY29udGV4dC0+dG90YWwu cGVyX3R1cGxlICs9IGNwdV9vcGVyYXRvcl9jb3N0OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xh dXNlcy5jCmluZGV4IDk0ZWI1NmExZTcuLjg4NDk4NjRjYWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv dXRpbC9jbGF1c2VzLmMKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlICJ1dGlscy9mbWdyb2lk cy5oIgogI2luY2x1ZGUgInV0aWxzL2pzb24uaCIKICNpbmNsdWRlICJ1dGlscy9qc29uYi5oIgor I2luY2x1ZGUgInV0aWxzL2pzb25wYXRoLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgi CiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5o IgpAQCAtNDE3LDYgKzQxOCwyNCBAQCBjb250YWluX211dGFibGVfZnVuY3Rpb25zX3dhbGtlcihO b2RlICpub2RlLCB2b2lkICpjb250ZXh0KQogCQkvKiBDaGVjayBhbGwgc3Vibm9kZXMgKi8KIAl9 CiAKKwlpZiAoSXNBKG5vZGUsIEpzb25FeHByKSkKKwl7CisJCUpzb25FeHByICAgKmpleHByID0g Y2FzdE5vZGUoSnNvbkV4cHIsIG5vZGUpOworCQlDb25zdAkgICAqY25zdDsKKworCQlpZiAoIUlz QShqZXhwci0+cGF0aF9zcGVjLCBDb25zdCkpCisJCQlyZXR1cm4gdHJ1ZTsKKworCQljbnN0ID0g Y2FzdE5vZGUoQ29uc3QsIGpleHByLT5wYXRoX3NwZWMpOworCisJCUFzc2VydChjbnN0LT5jb25z dHR5cGUgPT0gSlNPTlBBVEhPSUQpOworCQlpZiAoY25zdC0+Y29uc3Rpc251bGwpCisJCQlyZXR1 cm4gZmFsc2U7CisKKwkJcmV0dXJuIGpzcElzTXV0YWJsZShEYXR1bUdldEpzb25QYXRoUChjbnN0 LT5jb25zdHZhbHVlKSwKKwkJCQkJCQlqZXhwci0+cGFzc2luZ19uYW1lcywgamV4cHItPnBhc3Np bmdfdmFsdWVzKTsKKwl9CisKIAlpZiAoSXNBKG5vZGUsIFNRTFZhbHVlRnVuY3Rpb24pKQogCXsK IAkJLyogYWxsIHZhcmlhbnRzIG9mIFNRTFZhbHVlRnVuY3Rpb24gYXJlIHN0YWJsZSAqLwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9n cmFtLnkKaW5kZXggNmI4ODA5NmU4ZS4uYWQ5NWFmMGQ5MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC02NTEs MTAgKzY1MSwxOSBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAq cmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCQkJCWpzb25fcmV0dXJuaW5n X2NsYXVzZV9vcHQKIAkJCQlqc29uX25hbWVfYW5kX3ZhbHVlCiAJCQkJanNvbl9hZ2dyZWdhdGVf ZnVuYworCQkJCWpzb25fYXJndW1lbnQKKwkJCQlqc29uX2JlaGF2aW9yCisJCQkJanNvbl9vbl9l cnJvcl9jbGF1c2Vfb3B0CiAldHlwZSA8bGlzdD4JanNvbl9uYW1lX2FuZF92YWx1ZV9saXN0CiAJ CQkJanNvbl92YWx1ZV9leHByX2xpc3QKIAkJCQlqc29uX2FycmF5X2FnZ3JlZ2F0ZV9vcmRlcl9i eV9jbGF1c2Vfb3B0Ci0ldHlwZSA8aXZhbD4JanNvbl9wcmVkaWNhdGVfdHlwZV9jb25zdHJhaW50 CisJCQkJanNvbl9hcmd1bWVudHMKKwkJCQlqc29uX2JlaGF2aW9yX2NsYXVzZV9vcHQKKwkJCQlq c29uX3Bhc3NpbmdfY2xhdXNlX29wdAorJXR5cGUgPGl2YWw+CWpzb25fYmVoYXZpb3JfdHlwZQor CQkJCWpzb25fcHJlZGljYXRlX3R5cGVfY29uc3RyYWludAorCQkJCWpzb25fcXVvdGVzX2NsYXVz ZV9vcHQKKwkJCQlqc29uX3dyYXBwZXJfYmVoYXZpb3IKICV0eXBlIDxib29sZWFuPglqc29uX2tl eV91bmlxdWVuZXNzX2NvbnN0cmFpbnRfb3B0CiAJCQkJanNvbl9vYmplY3RfY29uc3RydWN0b3Jf bnVsbF9jbGF1c2Vfb3B0CiAJCQkJanNvbl9hcnJheV9jb25zdHJ1Y3Rvcl9udWxsX2NsYXVzZV9v cHQKQEAgLTY5NSw3ICs3MDQsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxl Y3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCUNBQ0hFIENB TEwgQ0FMTEVEIENBU0NBREUgQ0FTQ0FERUQgQ0FTRSBDQVNUIENBVEFMT0dfUCBDSEFJTiBDSEFS X1AKIAlDSEFSQUNURVIgQ0hBUkFDVEVSSVNUSUNTIENIRUNLIENIRUNLUE9JTlQgQ0xBU1MgQ0xP U0UKIAlDTFVTVEVSIENPQUxFU0NFIENPTExBVEUgQ09MTEFUSU9OIENPTFVNTiBDT0xVTU5TIENP TU1FTlQgQ09NTUVOVFMgQ09NTUlUCi0JQ09NTUlUVEVEIENPTVBSRVNTSU9OIENPTkNVUlJFTlRM WSBDT05GSUdVUkFUSU9OIENPTkZMSUNUCisJQ09NTUlUVEVEIENPTVBSRVNTSU9OIENPTkNVUlJF TlRMWSBDT05ESVRJT05BTCBDT05GSUdVUkFUSU9OIENPTkZMSUNUCiAJQ09OTkVDVElPTiBDT05T VFJBSU5UIENPTlNUUkFJTlRTIENPTlRFTlRfUCBDT05USU5VRV9QIENPTlZFUlNJT05fUCBDT1BZ CiAJQ09TVCBDUkVBVEUgQ1JPU1MgQ1NWIENVQkUgQ1VSUkVOVF9QCiAJQ1VSUkVOVF9DQVRBTE9H IENVUlJFTlRfREFURSBDVVJSRU5UX1JPTEUgQ1VSUkVOVF9TQ0hFTUEKQEAgLTcwNiw4ICs3MTUs OCBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwg TGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCURFVEFDSCBESUNUSU9OQVJZIERJU0FCTEVf UCBESVNDQVJEIERJU1RJTkNUIERPIERPQ1VNRU5UX1AgRE9NQUlOX1AKIAlET1VCTEVfUCBEUk9Q CiAKLQlFQUNIIEVMU0UgRU5BQkxFX1AgRU5DT0RJTkcgRU5DUllQVEVEIEVORF9QIEVOVU1fUCBF U0NBUEUgRVZFTlQgRVhDRVBUCi0JRVhDTFVERSBFWENMVURJTkcgRVhDTFVTSVZFIEVYRUNVVEUg RVhJU1RTIEVYUExBSU4gRVhQUkVTU0lPTgorCUVBQ0ggRUxTRSBFTVBUWV9QIEVOQUJMRV9QIEVO Q09ESU5HIEVOQ1JZUFRFRCBFTkRfUCBFTlVNX1AgRVJST1JfUCBFU0NBUEUKKwlFVkVOVCBFWENF UFQgRVhDTFVERSBFWENMVURJTkcgRVhDTFVTSVZFIEVYRUNVVEUgRVhJU1RTIEVYUExBSU4gRVhQ UkVTU0lPTgogCUVYVEVOU0lPTiBFWFRFUk5BTCBFWFRSQUNUCiAKIAlGQUxTRV9QIEZBTUlMWSBG RVRDSCBGSUxURVIgRklOQUxJWkUgRklSU1RfUCBGTE9BVF9QIEZPTExPV0lORyBGT1IKQEAgLTcy MiwxMCArNzMxLDEwIEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFy ICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJSU5ORVJfUCBJTk9VVCBJ TlBVVF9QIElOU0VOU0lUSVZFIElOU0VSVCBJTlNURUFEIElOVF9QIElOVEVHRVIKIAlJTlRFUlNF Q1QgSU5URVJWQUwgSU5UTyBJTlZPS0VSIElTIElTTlVMTCBJU09MQVRJT04KIAotCUpPSU4gSlNP TiBKU09OX0FSUkFZIEpTT05fQVJSQVlBR0cgSlNPTl9PQkpFQ1QgSlNPTl9PQkpFQ1RBR0cKLQlK U09OX1NDQUxBUiBKU09OX1NFUklBTElaRQorCUpPSU4gSlNPTiBKU09OX0FSUkFZIEpTT05fQVJS QVlBR0cgSlNPTl9FWElTVFMgSlNPTl9PQkpFQ1QgSlNPTl9PQkpFQ1RBR0cKKwlKU09OX1FVRVJZ IEpTT05fU0NBTEFSIEpTT05fU0VSSUFMSVpFIEpTT05fVkFMVUUKIAotCUtFWSBLRVlTCisJS0VF UCBLRVkgS0VZUwogCiAJTEFCRUwgTEFOR1VBR0UgTEFSR0VfUCBMQVNUX1AgTEFURVJBTF9QCiAJ TEVBRElORyBMRUFLUFJPT0YgTEVBU1QgTEVGVCBMRVZFTCBMSUtFIExJTUlUIExJU1RFTiBMT0FE IExPQ0FMCkBAIC03MzksNyArNzQ4LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3 U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlOT1Qg Tk9USElORyBOT1RJRlkgTk9UTlVMTCBOT1dBSVQgTlVMTF9QIE5VTExJRgogCU5VTExTX1AgTlVN RVJJQwogCi0JT0JKRUNUX1AgT0YgT0ZGIE9GRlNFVCBPSURTIE9MRCBPTiBPTkxZIE9QRVJBVE9S IE9QVElPTiBPUFRJT05TIE9SCisJT0JKRUNUX1AgT0YgT0ZGIE9GRlNFVCBPSURTIE9MRCBPTUlU IE9OIE9OTFkgT1BFUkFUT1IgT1BUSU9OIE9QVElPTlMgT1IKIAlPUkRFUiBPUkRJTkFMSVRZIE9U SEVSUyBPVVRfUCBPVVRFUl9QCiAJT1ZFUiBPVkVSTEFQUyBPVkVSTEFZIE9WRVJSSURJTkcgT1dO RUQgT1dORVIKIApAQCAtNzQ4LDcgKzc1Nyw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZl Vmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJ UE9TSVRJT04gUFJFQ0VESU5HIFBSRUNJU0lPTiBQUkVTRVJWRSBQUkVQQVJFIFBSRVBBUkVEIFBS SU1BUlkKIAlQUklPUiBQUklWSUxFR0VTIFBST0NFRFVSQUwgUFJPQ0VEVVJFIFBST0NFRFVSRVMg UFJPR1JBTSBQVUJMSUNBVElPTgogCi0JUVVPVEUKKwlRVU9URSBRVU9URVMKIAogCVJBTkdFIFJF QUQgUkVBTCBSRUFTU0lHTiBSRUNIRUNLIFJFQ1VSU0lWRSBSRUZfUCBSRUZFUkVOQ0VTIFJFRkVS RU5DSU5HCiAJUkVGUkVTSCBSRUlOREVYIFJFTEFUSVZFX1AgUkVMRUFTRSBSRU5BTUUgUkVQRUFU QUJMRSBSRVBMQUNFIFJFUExJQ0EKQEAgLTc1OSw3ICs3NjgsNyBAQCBzdGF0aWMgTm9kZSAqbWFr ZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAq cXVlcnkpOwogCVNFUVVFTkNFIFNFUVVFTkNFUwogCVNFUklBTElaQUJMRSBTRVJWRVIgU0VTU0lP TiBTRVNTSU9OX1VTRVIgU0VUIFNFVFMgU0VUT0YgU0hBUkUgU0hPVwogCVNJTUlMQVIgU0lNUExF IFNLSVAgU01BTExJTlQgU05BUFNIT1QgU09NRSBTUUxfUCBTVEFCTEUgU1RBTkRBTE9ORV9QCi0J U1RBUlQgU1RBVEVNRU5UIFNUQVRJU1RJQ1MgU1RESU4gU1RET1VUIFNUT1JBR0UgU1RPUkVEIFNU UklDVF9QIFNUUklQX1AKKwlTVEFSVCBTVEFURU1FTlQgU1RBVElTVElDUyBTVERJTiBTVERPVVQg U1RPUkFHRSBTVE9SRUQgU1RSSUNUX1AgU1RSSU5HX1AgU1RSSVBfUAogCVNVQlNDUklQVElPTiBT VUJTVFJJTkcgU1VQUE9SVCBTWU1NRVRSSUMgU1lTSUQgU1lTVEVNX1AgU1lTVEVNX1VTRVIKIAog CVRBQkxFIFRBQkxFUyBUQUJMRVNBTVBMRSBUQUJMRVNQQUNFIFRFTVAgVEVNUExBVEUgVEVNUE9S QVJZIFRFWFRfUCBUSEVOCkBAIC03NjcsNyArNzc2LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1 cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5 KTsKIAlUUkVBVCBUUklHR0VSIFRSSU0gVFJVRV9QCiAJVFJVTkNBVEUgVFJVU1RFRCBUWVBFX1Ag VFlQRVNfUAogCi0JVUVTQ0FQRSBVTkJPVU5ERUQgVU5DT01NSVRURUQgVU5FTkNSWVBURUQgVU5J T04gVU5JUVVFIFVOS05PV04KKwlVRVNDQVBFIFVOQk9VTkRFRCBVTkNPTkRJVElPTkFMIFVOQ09N TUlUVEVEIFVORU5DUllQVEVEIFVOSU9OIFVOSVFVRSBVTktOT1dOCiAJVU5MSVNURU4gVU5MT0dH RUQgVU5USUwgVVBEQVRFIFVTRVIgVVNJTkcKIAogCVZBQ1VVTSBWQUxJRCBWQUxJREFURSBWQUxJ REFUT1IgVkFMVUVfUCBWQUxVRVMgVkFSQ0hBUiBWQVJJQURJQyBWQVJZSU5HCkBAIC0xNTc3Niw2 ICsxNTc4NSw2MiBAQCBmdW5jX2V4cHJfY29tbW9uX3N1YmV4cHI6CiAJCQkJCW4tPmxvY2F0aW9u ID0gQDE7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CisJCQl8IEpTT05fUVVFUlkgJygn CisJCQkJanNvbl92YWx1ZV9leHByICcsJyBhX2V4cHIganNvbl9wYXNzaW5nX2NsYXVzZV9vcHQK KwkJCQlqc29uX3JldHVybmluZ19jbGF1c2Vfb3B0CisJCQkJanNvbl93cmFwcGVyX2JlaGF2aW9y CisJCQkJanNvbl9xdW90ZXNfY2xhdXNlX29wdAorCQkJCWpzb25fYmVoYXZpb3JfY2xhdXNlX29w dAorCQkJJyknCisJCQkJeworCQkJCQlKc29uRnVuY0V4cHIgKm4gPSBtYWtlTm9kZShKc29uRnVu Y0V4cHIpOworCisJCQkJCW4tPm9wID0gSlNPTl9RVUVSWV9PUDsKKwkJCQkJbi0+Y29udGV4dF9p dGVtID0gKEpzb25WYWx1ZUV4cHIgKikgJDM7CisJCQkJCW4tPnBhdGhzcGVjID0gJDU7CisJCQkJ CW4tPnBhc3NpbmcgPSAkNjsKKwkJCQkJbi0+b3V0cHV0ID0gKEpzb25PdXRwdXQgKikgJDc7CisJ CQkJCW4tPndyYXBwZXIgPSAkODsKKwkJCQkJbi0+cXVvdGVzID0gJDk7CisJCQkJCW4tPm9uX2Vt cHR5ID0gKEpzb25CZWhhdmlvciAqKSBsaW5pdGlhbCgkMTApOworCQkJCQluLT5vbl9lcnJvciA9 IChKc29uQmVoYXZpb3IgKikgbHNlY29uZCgkMTApOworCQkJCQluLT5sb2NhdGlvbiA9IEAxOwor CQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQorCQkJfCBKU09OX0VYSVNUUyAnKCcKKwkJCQlq c29uX3ZhbHVlX2V4cHIgJywnIGFfZXhwciBqc29uX3Bhc3NpbmdfY2xhdXNlX29wdAorCQkJCWpz b25fb25fZXJyb3JfY2xhdXNlX29wdAorCQkJJyknCisJCQkJeworCQkJCQlKc29uRnVuY0V4cHIg Km4gPSBtYWtlTm9kZShKc29uRnVuY0V4cHIpOworCisJCQkJCW4tPm9wID0gSlNPTl9FWElTVFNf T1A7CisJCQkJCW4tPmNvbnRleHRfaXRlbSA9IChKc29uVmFsdWVFeHByICopICQzOworCQkJCQlu LT5wYXRoc3BlYyA9ICQ1OworCQkJCQluLT5wYXNzaW5nID0gJDY7CisJCQkJCW4tPm91dHB1dCA9 IE5VTEw7CisJCQkJCW4tPm9uX2Vycm9yID0gKEpzb25CZWhhdmlvciAqKSAkNzsKKwkJCQkJbi0+ bG9jYXRpb24gPSBAMTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJCXwgSlNPTl9W QUxVRSAnKCcKKwkJCQlqc29uX3ZhbHVlX2V4cHIgJywnIGFfZXhwciBqc29uX3Bhc3NpbmdfY2xh dXNlX29wdAorCQkJCWpzb25fcmV0dXJuaW5nX2NsYXVzZV9vcHQKKwkJCQlqc29uX2JlaGF2aW9y X2NsYXVzZV9vcHQKKwkJCScpJworCQkJCXsKKwkJCQkJSnNvbkZ1bmNFeHByICpuID0gbWFrZU5v ZGUoSnNvbkZ1bmNFeHByKTsKKworCQkJCQluLT5vcCA9IEpTT05fVkFMVUVfT1A7CisJCQkJCW4t PmNvbnRleHRfaXRlbSA9IChKc29uVmFsdWVFeHByICopICQzOworCQkJCQluLT5wYXRoc3BlYyA9 ICQ1OworCQkJCQluLT5wYXNzaW5nID0gJDY7CisJCQkJCW4tPm91dHB1dCA9IChKc29uT3V0cHV0 ICopICQ3OworCQkJCQluLT5vbl9lbXB0eSA9IChKc29uQmVoYXZpb3IgKikgbGluaXRpYWwoJDgp OworCQkJCQluLT5vbl9lcnJvciA9IChKc29uQmVoYXZpb3IgKikgbHNlY29uZCgkOCk7CisJCQkJ CW4tPmxvY2F0aW9uID0gQDE7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CiAJCQk7CiAK IApAQCAtMTY1MDIsNiArMTY1NjcsNzcgQEAgb3B0X2FzeW1tZXRyaWM6IEFTWU1NRVRSSUMKIAkJ OwogCiAvKiBTUUwvSlNPTiBzdXBwb3J0ICovCitqc29uX3Bhc3NpbmdfY2xhdXNlX29wdDoKKwkJ CVBBU1NJTkcganNvbl9hcmd1bWVudHMJCQkJCXsgJCQgPSAkMjsgfQorCQkJfCAvKkVNUFRZKi8J CQkJCQkJCXsgJCQgPSBOSUw7IH0KKwkJOworCitqc29uX2FyZ3VtZW50czoKKwkJCWpzb25fYXJn dW1lbnQJCQkJCQkJeyAkJCA9IGxpc3RfbWFrZTEoJDEpOyB9CisJCQl8IGpzb25fYXJndW1lbnRz ICcsJyBqc29uX2FyZ3VtZW50CQl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9CisJCTsKKworanNv bl9hcmd1bWVudDoKKwkJCWpzb25fdmFsdWVfZXhwciBBUyBDb2xMYWJlbAorCQkJeworCQkJCUpz b25Bcmd1bWVudCAqbiA9IG1ha2VOb2RlKEpzb25Bcmd1bWVudCk7CisKKwkJCQluLT52YWwgPSAo SnNvblZhbHVlRXhwciAqKSAkMTsKKwkJCQluLT5uYW1lID0gJDM7CisJCQkJJCQgPSAoTm9kZSAq KSBuOworCQkJfQorCQk7CisKKy8qIEFSUkFZIGlzIGEgbm9pc2Ugd29yZCAqLworanNvbl93cmFw cGVyX2JlaGF2aW9yOgorCQkJICBXSVRIT1VUIFdSQVBQRVIJCQkJCXsgJCQgPSBKU1dfTk9ORTsg fQorCQkJfCBXSVRIT1VUIEFSUkFZCVdSQVBQRVIJCQkJeyAkJCA9IEpTV19OT05FOyB9CisJCQl8 IFdJVEggV1JBUFBFUgkJCQkJCXsgJCQgPSBKU1dfVU5DT05ESVRJT05BTDsgfQorCQkJfCBXSVRI IEFSUkFZIFdSQVBQRVIJCQkJeyAkJCA9IEpTV19VTkNPTkRJVElPTkFMOyB9CisJCQl8IFdJVEgg Q09ORElUSU9OQUwgQVJSQVkgV1JBUFBFUgl7ICQkID0gSlNXX0NPTkRJVElPTkFMOyB9CisJCQl8 IFdJVEggVU5DT05ESVRJT05BTCBBUlJBWSBXUkFQUEVSCXsgJCQgPSBKU1dfVU5DT05ESVRJT05B TDsgfQorCQkJfCBXSVRIIENPTkRJVElPTkFMIFdSQVBQRVIJCQl7ICQkID0gSlNXX0NPTkRJVElP TkFMOyB9CisJCQl8IFdJVEggVU5DT05ESVRJT05BTCBXUkFQUEVSCQl7ICQkID0gSlNXX1VOQ09O RElUSU9OQUw7IH0KKwkJCXwgLyogZW1wdHkgKi8JCQkJCQl7ICQkID0gSlNXX1VOU1BFQzsgfQor CQk7CisKK2pzb25fYmVoYXZpb3I6CisJCQlERUZBVUxUIGFfZXhwcgorCQkJCXsgJCQgPSAoTm9k ZSAqKSBtYWtlSnNvbkJlaGF2aW9yKEpTT05fQkVIQVZJT1JfREVGQVVMVCwgJDIsIE5VTEwsIEAx KTsgfQorCQkJfCBqc29uX2JlaGF2aW9yX3R5cGUKKwkJCQl7ICQkID0gKE5vZGUgKikgbWFrZUpz b25CZWhhdmlvcigkMSwgTlVMTCwgTlVMTCwgQDEpOyB9CisJCTsKKworanNvbl9iZWhhdmlvcl90 eXBlOgorCQkJRVJST1JfUAkJeyAkJCA9IEpTT05fQkVIQVZJT1JfRVJST1I7IH0KKwkJCXwgTlVM TF9QCXsgJCQgPSBKU09OX0JFSEFWSU9SX05VTEw7IH0KKwkJCXwgVFJVRV9QCXsgJCQgPSBKU09O X0JFSEFWSU9SX1RSVUU7IH0KKwkJCXwgRkFMU0VfUAl7ICQkID0gSlNPTl9CRUhBVklPUl9GQUxT RTsgfQorCQkJfCBVTktOT1dOCXsgJCQgPSBKU09OX0JFSEFWSU9SX1VOS05PV047IH0KKwkJCXwg RU1QVFlfUCBBUlJBWQl7ICQkID0gSlNPTl9CRUhBVklPUl9FTVBUWV9BUlJBWTsgfQorCQkJfCBF TVBUWV9QIE9CSkVDVF9QCXsgJCQgPSBKU09OX0JFSEFWSU9SX0VNUFRZX09CSkVDVDsgfQorCQkJ Lyogbm9uLXN0YW5kYXJkLCBmb3IgT3JhY2xlIGNvbXBhdGliaWxpdHkgb25seSAqLworCQkJfCBF TVBUWV9QCXsgJCQgPSBKU09OX0JFSEFWSU9SX0VNUFRZX0FSUkFZOyB9CisJCTsKKworanNvbl9i ZWhhdmlvcl9jbGF1c2Vfb3B0OgorCQkJanNvbl9iZWhhdmlvciBPTiBFTVBUWV9QCisJCQkJeyAk JCA9IGxpc3RfbWFrZTIoJDEsIE5VTEwpOyB9CisJCQl8IGpzb25fYmVoYXZpb3IgT04gRVJST1Jf UAorCQkJCXsgJCQgPSBsaXN0X21ha2UyKE5VTEwsICQxKTsgfQorCQkJfCBqc29uX2JlaGF2aW9y IE9OIEVNUFRZX1AganNvbl9iZWhhdmlvciBPTiBFUlJPUl9QCisJCQkJeyAkJCA9IGxpc3RfbWFr ZTIoJDEsICQ0KTsgfQorCQkJfCAvKiBFTVBUWSAqLworCQkJCXsgJCQgPSBsaXN0X21ha2UyKE5V TEwsIE5VTEwpOyB9CisJCTsKKworanNvbl9vbl9lcnJvcl9jbGF1c2Vfb3B0OgorCQkJanNvbl9i ZWhhdmlvciBPTiBFUlJPUl9QCisJCQkJeyAkJCA9ICQxOyB9CisJCQl8IC8qIEVNUFRZICovCisJ CQkJeyAkJCA9IE5VTEw7IH0KKwkJOworCiBqc29uX3ZhbHVlX2V4cHI6CiAJCQlhX2V4cHIganNv bl9mb3JtYXRfY2xhdXNlX29wdAogCQkJewpAQCAtMTY1NDYsNiArMTY2ODIsMTQgQEAganNvbl9m b3JtYXRfY2xhdXNlX29wdDoKIAkJCQl9CiAJCTsKIAoranNvbl9xdW90ZXNfY2xhdXNlX29wdDoK KwkJCUtFRVAgUVVPVEVTIE9OIFNDQUxBUiBTVFJJTkdfUAkJeyAkJCA9IEpTX1FVT1RFU19LRUVQ OyB9CisJCQl8IEtFRVAgUVVPVEVTCQkJCQkJeyAkJCA9IEpTX1FVT1RFU19LRUVQOyB9CisJCQl8 IE9NSVQgUVVPVEVTIE9OIFNDQUxBUiBTVFJJTkdfUAl7ICQkID0gSlNfUVVPVEVTX09NSVQ7IH0K KwkJCXwgT01JVCBRVU9URVMJCQkJCQl7ICQkID0gSlNfUVVPVEVTX09NSVQ7IH0KKwkJCXwgLyog RU1QVFkgKi8JCQkJCQl7ICQkID0gSlNfUVVPVEVTX1VOU1BFQzsgfQorCQk7CisKIGpzb25fcmV0 dXJuaW5nX2NsYXVzZV9vcHQ6CiAJCQlSRVRVUk5JTkcgVHlwZW5hbWUganNvbl9mb3JtYXRfY2xh dXNlX29wdAogCQkJCXsKQEAgLTE3MTYyLDYgKzE3MzA2LDcgQEAgdW5yZXNlcnZlZF9rZXl3b3Jk OgogCQkJfCBDT01NSVQKIAkJCXwgQ09NTUlUVEVECiAJCQl8IENPTVBSRVNTSU9OCisJCQl8IENP TkRJVElPTkFMCiAJCQl8IENPTkZJR1VSQVRJT04KIAkJCXwgQ09ORkxJQ1QKIAkJCXwgQ09OTkVD VElPTgpAQCAtMTcxOTgsMTAgKzE3MzQzLDEyIEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwg RE9VQkxFX1AKIAkJCXwgRFJPUAogCQkJfCBFQUNICisJCQl8IEVNUFRZX1AKIAkJCXwgRU5BQkxF X1AKIAkJCXwgRU5DT0RJTkcKIAkJCXwgRU5DUllQVEVECiAJCQl8IEVOVU1fUAorCQkJfCBFUlJP Ul9QCiAJCQl8IEVTQ0FQRQogCQkJfCBFVkVOVAogCQkJfCBFWENMVURFCkBAIC0xNzI1MSw2ICsx NzM5OCw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgSU5TVEVBRAogCQkJfCBJTlZPS0VS CiAJCQl8IElTT0xBVElPTgorCQkJfCBLRUVQCiAJCQl8IEtFWQogCQkJfCBLRVlTCiAJCQl8IExB QkVMCkBAIC0xNzI5Nyw2ICsxNzQ0NSw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgT0ZG CiAJCQl8IE9JRFMKIAkJCXwgT0xECisJCQl8IE9NSVQKIAkJCXwgT1BFUkFUT1IKIAkJCXwgT1BU SU9OCiAJCQl8IE9QVElPTlMKQEAgLTE3MzI3LDYgKzE3NDc2LDcgQEAgdW5yZXNlcnZlZF9rZXl3 b3JkOgogCQkJfCBQUk9HUkFNCiAJCQl8IFBVQkxJQ0FUSU9OCiAJCQl8IFFVT1RFCisJCQl8IFFV T1RFUwogCQkJfCBSQU5HRQogCQkJfCBSRUFECiAJCQl8IFJFQVNTSUdOCkBAIC0xNzM4Niw2ICsx NzUzNiw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgU1RPUkFHRQogCQkJfCBTVE9SRUQK IAkJCXwgU1RSSUNUX1AKKwkJCXwgU1RSSU5HX1AKIAkJCXwgU1RSSVBfUAogCQkJfCBTVUJTQ1JJ UFRJT04KIAkJCXwgU1VQUE9SVApAQCAtMTc0MDgsNiArMTc1NTksNyBAQCB1bnJlc2VydmVkX2tl eXdvcmQ6CiAJCQl8IFVFU0NBUEUKIAkJCXwgVU5CT1VOREVECiAJCQl8IFVOQ09NTUlUVEVECisJ CQl8IFVOQ09ORElUSU9OQUwKIAkJCXwgVU5FTkNSWVBURUQKIAkJCXwgVU5LTk9XTgogCQkJfCBV TkxJU1RFTgpAQCAtMTc0NjgsMTAgKzE3NjIwLDEzIEBAIGNvbF9uYW1lX2tleXdvcmQ6CiAJCQl8 IEpTT04KIAkJCXwgSlNPTl9BUlJBWQogCQkJfCBKU09OX0FSUkFZQUdHCisJCQl8IEpTT05fRVhJ U1RTCiAJCQl8IEpTT05fT0JKRUNUCiAJCQl8IEpTT05fT0JKRUNUQUdHCisJCQl8IEpTT05fUVVF UlkKIAkJCXwgSlNPTl9TQ0FMQVIKIAkJCXwgSlNPTl9TRVJJQUxJWkUKKwkJCXwgSlNPTl9WQUxV RQogCQkJfCBMRUFTVAogCQkJfCBOQVRJT05BTAogCQkJfCBOQ0hBUgpAQCAtMTc3MDQsNiArMTc4 NTksNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IENPTU1JVFRFRAogCQkJfCBDT01QUkVT U0lPTgogCQkJfCBDT05DVVJSRU5UTFkKKwkJCXwgQ09ORElUSU9OQUwKIAkJCXwgQ09ORklHVVJB VElPTgogCQkJfCBDT05GTElDVAogCQkJfCBDT05ORUNUSU9OCkBAIC0xNzc1NiwxMSArMTc5MTIs MTMgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBEUk9QCiAJCQl8IEVBQ0gKIAkJCXwgRUxT RQorCQkJfCBFTVBUWV9QCiAJCQl8IEVOQUJMRV9QCiAJCQl8IEVOQ09ESU5HCiAJCQl8IEVOQ1JZ UFRFRAogCQkJfCBFTkRfUAogCQkJfCBFTlVNX1AKKwkJCXwgRVJST1JfUAogCQkJfCBFU0NBUEUK IAkJCXwgRVZFTlQKIAkJCXwgRVhDTFVERQpAQCAtMTc4MzAsMTAgKzE3OTg4LDE0IEBAIGJhcmVf bGFiZWxfa2V5d29yZDoKIAkJCXwgSlNPTgogCQkJfCBKU09OX0FSUkFZCiAJCQl8IEpTT05fQVJS QVlBR0cKKwkJCXwgSlNPTl9FWElTVFMKIAkJCXwgSlNPTl9PQkpFQ1QKIAkJCXwgSlNPTl9PQkpF Q1RBR0cKKwkJCXwgSlNPTl9RVUVSWQogCQkJfCBKU09OX1NDQUxBUgogCQkJfCBKU09OX1NFUklB TElaRQorCQkJfCBKU09OX1ZBTFVFCisJCQl8IEtFRVAKIAkJCXwgS0VZCiAJCQl8IEtFWVMKIAkJ CXwgTEFCRUwKQEAgLTE3ODk0LDYgKzE4MDU2LDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJ fCBPRkYKIAkJCXwgT0lEUwogCQkJfCBPTEQKKwkJCXwgT01JVAogCQkJfCBPTkxZCiAJCQl8IE9Q RVJBVE9SCiAJCQl8IE9QVElPTgpAQCAtMTc5MzEsNiArMTgwOTQsNyBAQCBiYXJlX2xhYmVsX2tl eXdvcmQ6CiAJCQl8IFBST0dSQU0KIAkJCXwgUFVCTElDQVRJT04KIAkJCXwgUVVPVEUKKwkJCXwg UVVPVEVTCiAJCQl8IFJBTkdFCiAJCQl8IFJFQUQKIAkJCXwgUkVBTApAQCAtMTc5OTksNiArMTgx NjMsNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IFNUT1JBR0UKIAkJCXwgU1RPUkVECiAJ CQl8IFNUUklDVF9QCisJCQl8IFNUUklOR19QCiAJCQl8IFNUUklQX1AKIAkJCXwgU1VCU0NSSVBU SU9OCiAJCQl8IFNVQlNUUklORwpAQCAtMTgwMzMsNiArMTgxOTgsNyBAQCBiYXJlX2xhYmVsX2tl eXdvcmQ6CiAJCQl8IFVFU0NBUEUKIAkJCXwgVU5CT1VOREVECiAJCQl8IFVOQ09NTUlUVEVECisJ CQl8IFVOQ09ORElUSU9OQUwKIAkJCXwgVU5FTkNSWVBURUQKIAkJCXwgVU5JUVVFCiAJCQl8IFVO S05PV04KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgYi9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IDkzMDBjN2I5YWIuLjU0OTNiMDVhZTgg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgInV0 aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvZGF0ZS5oIgogI2luY2x1ZGUgInV0aWxz L2ZtZ3JvaWRzLmgiCisjaW5jbHVkZSAidXRpbHMvanNvbmIuaCIKICNpbmNsdWRlICJ1dGlscy9s c3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKICNpbmNsdWRlICJ1dGls cy94bWwuaCIKQEAgLTkwLDYgKzkxLDIyIEBAIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1Kc29uUGFy c2VFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvblBhcnNlRXhwciAqZXhwcik7CiBzdGF0aWMg Tm9kZSAqdHJhbnNmb3JtSnNvblNjYWxhckV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uU2Nh bGFyRXhwciAqZXhwcik7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtSnNvblNlcmlhbGl6ZUV4cHIo UGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQkJCUpzb25TZXJpYWxpemVFeHByICpleHByKTsK K3N0YXRpYyBOb2RlICp0cmFuc2Zvcm1Kc29uRnVuY0V4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBK c29uRnVuY0V4cHIgKnApOworc3RhdGljIEpzb25FeHByICp0cmFuc2Zvcm1Kc29uRXhwckNvbW1v bihQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25GdW5jRXhwciAqZnVuYywKKwkJCQkJCQkJCQkgY29u c3QgY2hhciAqY29uc3RydWN0TmFtZSk7CitzdGF0aWMgdm9pZCB0cmFuc2Zvcm1Kc29uUGFzc2lu Z0FyZ3MoUGFyc2VTdGF0ZSAqcHN0YXRlLCBjb25zdCBjaGFyICpjb25zdHJ1Y3ROYW1lLAorCQkJ CQkJCQkJIEpzb25Gb3JtYXRUeXBlIGZvcm1hdCwgTGlzdCAqYXJncywKKwkJCQkJCQkJCSBMaXN0 ICoqcGFzc2luZ192YWx1ZXMsIExpc3QgKipwYXNzaW5nX25hbWVzKTsKK3N0YXRpYyBOb2RlICpj b2VyY2VKc29uRnVuY0V4cHJPdXRwdXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uRXhwciAqanNl eHByKTsKK3N0YXRpYyBPaWQJSnNvbkZ1bmNFeHByRGVmYXVsdFJldHVyblR5cGUoSnNvbkV4cHIg KmpzZXhwcik7CitzdGF0aWMgTm9kZSAqY29lcmNlSnNvbkV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRl LCBOb2RlICpleHByLAorCQkJCQkJCWNvbnN0IEpzb25SZXR1cm5pbmcgKnJldHVybmluZyk7Citz dGF0aWMgSnNvbkNvZXJjaW9uICptYWtlSnNvbkNvZXJjaW9uKGNvbnN0IEpzb25SZXR1cm5pbmcg KnJldHVybmluZyk7CitzdGF0aWMgTGlzdCAqSW5pdEpzb25JdGVtQ29lcmNpb25zKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgY29uc3QgSnNvblJldHVybmluZyAqcmV0dXJuaW5nLAorCQkJCQkJCQkgICBP aWQgY29udGV4dEl0ZW1UeXBlSWQpOworc3RhdGljIEpzb25CZWhhdmlvciAqdHJhbnNmb3JtSnNv bkJlaGF2aW9yKFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvbkJlaGF2aW9yICpiZWhhdmlvciwKKwkJ CQkJCQkJCQkgICBKc29uQmVoYXZpb3JUeXBlIGRlZmF1bHRfYmVoYXZpb3IsCisJCQkJCQkJCQkJ ICAgSnNvblJldHVybmluZyAqcmV0dXJuaW5nKTsKIHN0YXRpYyBOb2RlICptYWtlX3Jvd19jb21w YXJpc29uX29wKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqb3BuYW1lLAogCQkJCQkJCQkJTGlz dCAqbGFyZ3MsIExpc3QgKnJhcmdzLCBpbnQgbG9jYXRpb24pOwogc3RhdGljIE5vZGUgKm1ha2Vf cm93X2Rpc3RpbmN0X29wKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqb3BuYW1lLApAQCAtMzUz LDYgKzM3MCwxMCBAQCB0cmFuc2Zvcm1FeHByUmVjdXJzZShQYXJzZVN0YXRlICpwc3RhdGUsIE5v ZGUgKmV4cHIpCiAJCQlyZXN1bHQgPSB0cmFuc2Zvcm1Kc29uU2VyaWFsaXplRXhwcihwc3RhdGUs IChKc29uU2VyaWFsaXplRXhwciAqKSBleHByKTsKIAkJCWJyZWFrOwogCisJCWNhc2UgVF9Kc29u RnVuY0V4cHI6CisJCQlyZXN1bHQgPSB0cmFuc2Zvcm1Kc29uRnVuY0V4cHIocHN0YXRlLCAoSnNv bkZ1bmNFeHByICopIGV4cHIpOworCQkJYnJlYWs7CisKIAkJZGVmYXVsdDoKIAkJCS8qIHNob3Vs ZCBub3QgcmVhY2ggaGVyZSAqLwogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBub2RlIHR5 cGU6ICVkIiwgKGludCkgbm9kZVRhZyhleHByKSk7CkBAIC0zMjI5LDcgKzMyNTAsNyBAQCBtYWtl SnNvbkJ5dGVhVG9UZXh0Q29udmVyc2lvbihOb2RlICpleHByLCBKc29uRm9ybWF0ICpmb3JtYXQs IGludCBsb2NhdGlvbikKIHN0YXRpYyBOb2RlICoKIHRyYW5zZm9ybUpzb25WYWx1ZUV4cHIoUGFy c2VTdGF0ZSAqcHN0YXRlLCBjb25zdCBjaGFyICpjb25zdHJ1Y3ROYW1lLAogCQkJCQkgICBKc29u VmFsdWVFeHByICp2ZSwgSnNvbkZvcm1hdFR5cGUgZGVmYXVsdF9mb3JtYXQsCi0JCQkJCSAgIE9p ZCB0YXJnZXR0eXBlKQorCQkJCQkgICBPaWQgdGFyZ2V0dHlwZSwgYm9vbCBpc2FyZykKIHsKIAlO b2RlCSAgICpleHByID0gdHJhbnNmb3JtRXhwclJlY3Vyc2UocHN0YXRlLCAoTm9kZSAqKSB2ZS0+ cmF3X2V4cHIpOwogCU5vZGUJICAgKnJhd2V4cHI7CkBAIC0zMjYxLDYgKzMyODIsNDEgQEAgdHJh bnNmb3JtSnNvblZhbHVlRXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIGNvbnN0IGNoYXIgKmNvbnN0 cnVjdE5hbWUsCiAJCWVsc2UKIAkJCWZvcm1hdCA9IHZlLT5mb3JtYXQtPmZvcm1hdF90eXBlOwog CX0KKwllbHNlIGlmIChpc2FyZykKKwl7CisJCS8qCisJCSAqIFNwZWNpYWwgdHJlYXRtZW50IGZv ciBQQVNTSU5HIGFyZ3VtZW50cy4KKwkJICoKKwkJICogUGFzcyB0eXBlcyBzdXBwb3J0ZWQgYnkg R2V0SnNvblBhdGhWYXIoKSAvCisJCSAqIEpzb25JdGVtRnJvbURhdHVtKCkgZGlyZWN0bHkgd2l0 aG91dCBjb252ZXJ0aW5nIHRvIGpzb25bYl0uCisJCSAqLworCQlzd2l0Y2ggKGV4cHJ0eXBlKQor CQl7CisJCQljYXNlIEJPT0xPSUQ6CisJCQljYXNlIE5VTUVSSUNPSUQ6CisJCQljYXNlIElOVDJP SUQ6CisJCQljYXNlIElOVDRPSUQ6CisJCQljYXNlIElOVDhPSUQ6CisJCQljYXNlIEZMT0FUNE9J RDoKKwkJCWNhc2UgRkxPQVQ4T0lEOgorCQkJY2FzZSBURVhUT0lEOgorCQkJY2FzZSBWQVJDSEFS T0lEOgorCQkJY2FzZSBEQVRFT0lEOgorCQkJY2FzZSBUSU1FT0lEOgorCQkJY2FzZSBUSU1FVFpP SUQ6CisJCQljYXNlIFRJTUVTVEFNUE9JRDoKKwkJCWNhc2UgVElNRVNUQU1QVFpPSUQ6CisJCQkJ cmV0dXJuIGV4cHI7CisKKwkJCWRlZmF1bHQ6CisJCQkJaWYgKHR5cGNhdGVnb3J5ID09IFRZUENB VEVHT1JZX1NUUklORykKKwkJCQkJcmV0dXJuIGV4cHI7CisJCQkJLyogZWxzZSBjb252ZXJ0IGFy Z3VtZW50IHRvIGpzb25bYl0gdHlwZSAqLworCQkJCWJyZWFrOworCQl9CisKKwkJZm9ybWF0ID0g ZGVmYXVsdF9mb3JtYXQ7CisJfQogCWVsc2UgaWYgKGV4cHJ0eXBlID09IEpTT05PSUQgfHwgZXhw cnR5cGUgPT0gSlNPTkJPSUQpCiAJCWZvcm1hdCA9IEpTX0ZPUk1BVF9ERUZBVUxUOyAvKiBkbyBu b3QgZm9ybWF0IGpzb25bYl0gdHlwZXMgKi8KIAllbHNlCkBAIC0zMjcyLDcgKzMzMjgsMTIgQEAg dHJhbnNmb3JtSnNvblZhbHVlRXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIGNvbnN0IGNoYXIgKmNv bnN0cnVjdE5hbWUsCiAJCU5vZGUJICAgKmNvZXJjZWQ7CiAJCWJvb2wJCW9ubHlfYWxsb3dfY2Fz dCA9IE9pZElzVmFsaWQodGFyZ2V0dHlwZSk7CiAKLQkJaWYgKCFvbmx5X2FsbG93X2Nhc3QgJiYK KwkJLyoKKwkJICogUEFTU0lORyBhcmdzIGFyZSBoYW5kbGVkIGFwcHJvcHJpYXRlbHkgYnkgR2V0 SnNvblBhdGhWYXIoKSAvCisJCSAqIEpzb25JdGVtRnJvbURhdHVtKCkuCisJCSAqLworCQlpZiAo IWlzYXJnICYmCisJCQkhb25seV9hbGxvd19jYXN0ICYmCiAJCQlleHBydHlwZSAhPSBCWVRFQU9J RCAmJiB0eXBjYXRlZ29yeSAhPSBUWVBDQVRFR09SWV9TVFJJTkcpCiAJCQllcmVwb3J0KEVSUk9S LAogCQkJCQllcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLApAQCAtMzQyNSw2ICsz NDg2LDExIEBAIHRyYW5zZm9ybUpzb25PdXRwdXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBjb25zdCBK c29uT3V0cHV0ICpvdXRwdXQsCiAJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBP UlRFRCksCiAJCQkJZXJybXNnKCJyZXR1cm5pbmcgU0VUT0YgdHlwZXMgaXMgbm90IHN1cHBvcnRl ZCBpbiBTUUwvSlNPTiBmdW5jdGlvbnMiKSk7CiAKKwlpZiAoZ2V0X3R5cHR5cGUocmV0LT50eXBp ZCkgPT0gVFlQVFlQRV9QU0VVRE8pCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJZXJybXNnKCJyZXR1cm5pbmcgcHNldWRv LXR5cGVzIGlzIG5vdCBzdXBwb3J0ZWQgaW4gU1FML0pTT04gZnVuY3Rpb25zIikpOworCiAJaWYg KHJldC0+Zm9ybWF0LT5mb3JtYXRfdHlwZSA9PSBKU19GT1JNQVRfREVGQVVMVCkKIAkJLyogYXNz aWduIEpTT05CIGZvcm1hdCB3aGVuIHJldHVybmluZyBqc29uYiwgb3IgSlNPTiBmb3JtYXQgb3Ro ZXJ3aXNlICovCiAJCXJldC0+Zm9ybWF0LT5mb3JtYXRfdHlwZSA9CkBAIC0zNjIxLDcgKzM2ODcs NyBAQCB0cmFuc2Zvcm1Kc29uT2JqZWN0Q29uc3RydWN0b3IoUGFyc2VTdGF0ZSAqcHN0YXRlLCBK c29uT2JqZWN0Q29uc3RydWN0b3IgKmN0b3IpCiAJCQlOb2RlCSAgICp2YWwgPSB0cmFuc2Zvcm1K c29uVmFsdWVFeHByKHBzdGF0ZSwgIkpTT05fT0JKRUNUKCkiLAogCQkJCQkJCQkJCQkJCSBrdi0+ dmFsdWUsCiAJCQkJCQkJCQkJCQkJIEpTX0ZPUk1BVF9ERUZBVUxULAotCQkJCQkJCQkJCQkJCSBJ bnZhbGlkT2lkKTsKKwkJCQkJCQkJCQkJCQkgSW52YWxpZE9pZCwgZmFsc2UpOwogCiAJCQlhcmdz ID0gbGFwcGVuZChhcmdzLCBrZXkpOwogCQkJYXJncyA9IGxhcHBlbmQoYXJncywgdmFsKTsKQEAg LTM4MDgsNyArMzg3NCw3IEBAIHRyYW5zZm9ybUpzb25PYmplY3RBZ2coUGFyc2VTdGF0ZSAqcHN0 YXRlLCBKc29uT2JqZWN0QWdnICphZ2cpCiAJdmFsID0gdHJhbnNmb3JtSnNvblZhbHVlRXhwcihw c3RhdGUsICJKU09OX09CSkVDVEFHRygpIiwKIAkJCQkJCQkJIGFnZy0+YXJnLT52YWx1ZSwKIAkJ CQkJCQkJIEpTX0ZPUk1BVF9ERUZBVUxULAotCQkJCQkJCQkgSW52YWxpZE9pZCk7CisJCQkJCQkJ CSBJbnZhbGlkT2lkLCBmYWxzZSk7CiAJYXJncyA9IGxpc3RfbWFrZTIoa2V5LCB2YWwpOwogCiAJ cmV0dXJuaW5nID0gdHJhbnNmb3JtSnNvbkNvbnN0cnVjdG9yT3V0cHV0KHBzdGF0ZSwgYWdnLT5j b25zdHJ1Y3Rvci0+b3V0cHV0LApAQCAtMzg2NCw5ICszOTMwLDggQEAgdHJhbnNmb3JtSnNvbkFy cmF5QWdnKFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvbkFycmF5QWdnICphZ2cpCiAJT2lkCQkJYWdn Zm5vaWQ7CiAJT2lkCQkJYWdndHlwZTsKIAotCWFyZyA9IHRyYW5zZm9ybUpzb25WYWx1ZUV4cHIo cHN0YXRlLCAiSlNPTl9BUlJBWUFHRygpIiwKLQkJCQkJCQkJIGFnZy0+YXJnLAotCQkJCQkJCQkg SlNfRk9STUFUX0RFRkFVTFQsIEludmFsaWRPaWQpOworCWFyZyA9IHRyYW5zZm9ybUpzb25WYWx1 ZUV4cHIocHN0YXRlLCAiSlNPTl9BUlJBWUFHRygpIiwgYWdnLT5hcmcsCisJCQkJCQkJCSBKU19G T1JNQVRfREVGQVVMVCwgSW52YWxpZE9pZCwgZmFsc2UpOwogCiAJcmV0dXJuaW5nID0gdHJhbnNm b3JtSnNvbkNvbnN0cnVjdG9yT3V0cHV0KHBzdGF0ZSwgYWdnLT5jb25zdHJ1Y3Rvci0+b3V0cHV0 LAogCQkJCQkJCQkJCQkgICBsaXN0X21ha2UxKGFyZykpOwpAQCAtMzkxMyw5ICszOTc4LDggQEAg dHJhbnNmb3JtSnNvbkFycmF5Q29uc3RydWN0b3IoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uQXJy YXlDb25zdHJ1Y3RvciAqY3RvcikKIAkJewogCQkJSnNvblZhbHVlRXhwciAqanN2YWwgPSBjYXN0 Tm9kZShKc29uVmFsdWVFeHByLCBsZmlyc3QobGMpKTsKIAkJCU5vZGUJICAgKnZhbCA9IHRyYW5z Zm9ybUpzb25WYWx1ZUV4cHIocHN0YXRlLCAiSlNPTl9BUlJBWSgpIiwKLQkJCQkJCQkJCQkJCQkg anN2YWwsCi0JCQkJCQkJCQkJCQkJIEpTX0ZPUk1BVF9ERUZBVUxULAotCQkJCQkJCQkJCQkJCSBJ bnZhbGlkT2lkKTsKKwkJCQkJCQkJCQkJCQkganN2YWwsIEpTX0ZPUk1BVF9ERUZBVUxULAorCQkJ CQkJCQkJCQkJCSBJbnZhbGlkT2lkLCBmYWxzZSk7CiAKIAkJCWFyZ3MgPSBsYXBwZW5kKGFyZ3Ms IHZhbCk7CiAJCX0KQEAgLTQwNzQsNyArNDEzOCw3IEBAIHRyYW5zZm9ybUpzb25QYXJzZUV4cHIo UGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uUGFyc2VFeHByICpqc2V4cHIpCiAJCSAqIGZ1bmN0aW9u LWxpa2UgQ0FTVHMuCiAJCSAqLwogCQlhcmcgPSB0cmFuc2Zvcm1Kc29uVmFsdWVFeHByKHBzdGF0 ZSwgIkpTT04oKSIsIGpzZXhwci0+ZXhwciwKLQkJCQkJCQkJCSBKU19GT1JNQVRfSlNPTiwgcmV0 dXJuaW5nLT50eXBpZCk7CisJCQkJCQkJCQkgSlNfRk9STUFUX0pTT04sIHJldHVybmluZy0+dHlw aWQsIGZhbHNlKTsKIAl9CiAKIAlyZXR1cm4gbWFrZUpzb25Db25zdHJ1Y3RvckV4cHIocHN0YXRl LCBKU0NUT1JfSlNPTl9QQVJTRSwgbGlzdF9tYWtlMShhcmcpLCBOVUxMLApAQCAtNDExOSw3ICs0 MTgzLDcgQEAgdHJhbnNmb3JtSnNvblNlcmlhbGl6ZUV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBK c29uU2VyaWFsaXplRXhwciAqZXhwcikKIAlOb2RlCSAgICphcmcgPSB0cmFuc2Zvcm1Kc29uVmFs dWVFeHByKHBzdGF0ZSwgIkpTT05fU0VSSUFMSVpFKCkiLAogCQkJCQkJCQkJCQkgZXhwci0+ZXhw ciwKIAkJCQkJCQkJCQkJIEpTX0ZPUk1BVF9KU09OLAotCQkJCQkJCQkJCQkgSW52YWxpZE9pZCk7 CisJCQkJCQkJCQkJCSBJbnZhbGlkT2lkLCBmYWxzZSk7CiAKIAlpZiAoZXhwci0+b3V0cHV0KQog CXsKQEAgLTQxNTMsMyArNDIxNyw1MjYgQEAgdHJhbnNmb3JtSnNvblNlcmlhbGl6ZUV4cHIoUGFy c2VTdGF0ZSAqcHN0YXRlLCBKc29uU2VyaWFsaXplRXhwciAqZXhwcikKIAlyZXR1cm4gbWFrZUpz b25Db25zdHJ1Y3RvckV4cHIocHN0YXRlLCBKU0NUT1JfSlNPTl9TRVJJQUxJWkUsIGxpc3RfbWFr ZTEoYXJnKSwKIAkJCQkJCQkJICAgTlVMTCwgcmV0dXJuaW5nLCBmYWxzZSwgZmFsc2UsIGV4cHIt PmxvY2F0aW9uKTsKIH0KKworLyoKKyAqIFRyYW5zZm9ybSBKU09OX1ZBTFVFLCBKU09OX1FVRVJZ LCBKU09OX0VYSVNUUyBmdW5jdGlvbnMgaW50byBhIEpzb25FeHByIG5vZGUuCisgKi8KK3N0YXRp YyBOb2RlICoKK3RyYW5zZm9ybUpzb25GdW5jRXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25G dW5jRXhwciAqZnVuYykKK3sKKwlKc29uRXhwciAgICpqc2V4cHIgPSBOVUxMOworCWNvbnN0IGNo YXIgKmZ1bmNfbmFtZSA9IE5VTEw7CisKKwlzd2l0Y2ggKGZ1bmMtPm9wKQorCXsKKwkJY2FzZSBK U09OX0VYSVNUU19PUDoKKwkJCWZ1bmNfbmFtZSA9ICJKU09OX0VYSVNUUyI7CisJCQlicmVhazsK KwkJY2FzZSBKU09OX1FVRVJZX09QOgorCQkJZnVuY19uYW1lID0gIkpTT05fUVVFUlkiOworCQkJ YnJlYWs7CisJCWNhc2UgSlNPTl9WQUxVRV9PUDoKKwkJCWZ1bmNfbmFtZSA9ICJKU09OX1ZBTFVF IjsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgImludmFsaWQgSnNvbkZ1 bmNFeHByIG9wIik7CisJCQlicmVhazsKKwl9CisKKwkvKiBPbmx5IGFsbG93IEZPUk1BVCBzcGVj aWZpY2F0aW9uIGZvciBKU09OX1FVRVJZKCkuICovCisJaWYgKGZ1bmMtPm91dHB1dCAmJiBmdW5j LT5vcCAhPSBKU09OX1FVRVJZX09QKQorCXsKKwkJSnNvbkZvcm1hdCAqZm9ybWF0ID0gZnVuYy0+ b3V0cHV0LT5yZXR1cm5pbmctPmZvcm1hdDsKKworCQlpZiAoZm9ybWF0LT5mb3JtYXRfdHlwZSAh PSBKU19GT1JNQVRfREVGQVVMVCB8fAorCQkJZm9ybWF0LT5lbmNvZGluZyAhPSBKU19FTkNfREVG QVVMVCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJS T1IpLAorCQkJCQllcnJtc2coImNhbm5vdCBzcGVjaWZ5IEZPUk1BVCBpbiBSRVRVUk5JTkcgY2xh dXNlIG9mICVzKCkiLAorCQkJCQkJICAgZnVuY19uYW1lKSwKKwkJCQkJcGFyc2VyX2VycnBvc2l0 aW9uKHBzdGF0ZSwgZm9ybWF0LT5sb2NhdGlvbikpOworCX0KKworCWlmIChmdW5jLT5vcCA9PSBK U09OX1FVRVJZX09QICYmCisJCWZ1bmMtPnF1b3RlcyAhPSBKU19RVU9URVNfVU5TUEVDICYmCisJ CShmdW5jLT53cmFwcGVyID09IEpTV19DT05ESVRJT05BTCB8fAorCQkgZnVuYy0+d3JhcHBlciA9 PSBKU1dfVU5DT05ESVRJT05BTCkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJD T0RFX1NZTlRBWF9FUlJPUiksCisJCQkJZXJybXNnKCJTUUwvSlNPTiBRVU9URVMgYmVoYXZpb3Ig bXVzdCBub3QgYmUgc3BlY2lmaWVkIHdoZW4gV0lUSCBXUkFQUEVSIGlzIHVzZWQiKSwKKwkJCQlw YXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBmdW5jLT5sb2NhdGlvbikpOworCisKKwlqc2V4cHIg PSB0cmFuc2Zvcm1Kc29uRXhwckNvbW1vbihwc3RhdGUsIGZ1bmMsIGZ1bmNfbmFtZSk7CisKKwlz d2l0Y2ggKGZ1bmMtPm9wKQorCXsKKwkJY2FzZSBKU09OX0VYSVNUU19PUDoKKwkJCWlmICghT2lk SXNWYWxpZChqc2V4cHItPnJldHVybmluZy0+dHlwaWQpKQorCQkJeworCQkJCWpzZXhwci0+cmV0 dXJuaW5nLT50eXBpZCA9IEJPT0xPSUQ7CisJCQkJanNleHByLT5yZXR1cm5pbmctPnR5cG1vZCA9 IC0xOworCQkJfQorCisJCQlqc2V4cHItPm9uX2Vycm9yID0gdHJhbnNmb3JtSnNvbkJlaGF2aW9y KHBzdGF0ZSwgZnVuYy0+b25fZXJyb3IsCisJCQkJCQkJCQkJCQkJIEpTT05fQkVIQVZJT1JfRkFM U0UsCisJCQkJCQkJCQkJCQkJIGpzZXhwci0+cmV0dXJuaW5nKTsKKwkJCWJyZWFrOworCisJCWNh c2UgSlNPTl9RVUVSWV9PUDoKKwkJCWpzZXhwci0+d3JhcHBlciA9IGZ1bmMtPndyYXBwZXI7CisK KwkJCS8qCisJCQkgKiBLZWVwIHF1b3RlcyBieSBkZWZhdWx0LCBvbWl0dGluZyB0aGVtIG9ubHkg aWYgT01JVCBRVU9URVMgaXMKKwkJCSAqIHNwZWNpZmllZC4KKwkJCSAqLworCQkJanNleHByLT5v bWl0X3F1b3RlcyA9IChmdW5jLT5xdW90ZXMgPT0gSlNfUVVPVEVTX09NSVQpOworCisJCQlpZiAo IU9pZElzVmFsaWQoanNleHByLT5yZXR1cm5pbmctPnR5cGlkKSkKKwkJCXsKKwkJCQlKc29uUmV0 dXJuaW5nICpyZXQgPSBqc2V4cHItPnJldHVybmluZzsKKworCQkJCXJldC0+dHlwaWQgPSBKc29u RnVuY0V4cHJEZWZhdWx0UmV0dXJuVHlwZShqc2V4cHIpOworCQkJCXJldC0+dHlwbW9kID0gLTE7 CisJCQl9CisJCQlqc2V4cHItPnJlc3VsdF9jb2VyY2lvbiA9IGNvZXJjZUpzb25GdW5jRXhwck91 dHB1dChwc3RhdGUsIGpzZXhwcik7CisKKwkJCWlmIChmdW5jLT5vbl9lbXB0eSkKKwkJCQlqc2V4 cHItPm9uX2VtcHR5ID0gdHJhbnNmb3JtSnNvbkJlaGF2aW9yKHBzdGF0ZSwKKwkJCQkJCQkJCQkJ CQkJIGZ1bmMtPm9uX2VtcHR5LAorCQkJCQkJCQkJCQkJCQkgSlNPTl9CRUhBVklPUl9OVUxMLAor CQkJCQkJCQkJCQkJCQkganNleHByLT5yZXR1cm5pbmcpOworCQkJanNleHByLT5vbl9lcnJvciA9 IHRyYW5zZm9ybUpzb25CZWhhdmlvcihwc3RhdGUsIGZ1bmMtPm9uX2Vycm9yLAorCQkJCQkJCQkJ CQkJCSBKU09OX0JFSEFWSU9SX05VTEwsCisJCQkJCQkJCQkJCQkJIGpzZXhwci0+cmV0dXJuaW5n KTsKKwkJCWJyZWFrOworCisJCWNhc2UgSlNPTl9WQUxVRV9PUDoKKwkJCWlmICghT2lkSXNWYWxp ZChqc2V4cHItPnJldHVybmluZy0+dHlwaWQpKQorCQkJeworCQkJCS8qIE1ha2UgSlNPTl9WQUxV RSByZXR1cm4gdGV4dCBieSBkZWZhdWx0ICovCisJCQkJanNleHByLT5yZXR1cm5pbmctPnR5cGlk ID0gVEVYVE9JRDsKKwkJCQlqc2V4cHItPnJldHVybmluZy0+dHlwbW9kID0gLTE7CisJCQl9CisJ CQlqc2V4cHItPnJlc3VsdF9jb2VyY2lvbiA9IGNvZXJjZUpzb25GdW5jRXhwck91dHB1dChwc3Rh dGUsIGpzZXhwcik7CisKKwkJCS8qCisJCQkgKiBJbml0aWFsaXplIGV4cHJlc3Npb25zIHRvIGNv ZXJjZSB0aGUgc2NhbGFyIHZhbHVlIHJldHVybmVkCisJCQkgKiBieSBKc29uUGF0aFZhbHVlKCkg dG8gdGhlICJyZXR1cm5pbmciIHR5cGUuCisJCQkgKi8KKwkJCWlmIChqc2V4cHItPnJlc3VsdF9j b2VyY2lvbikKKwkJCQlqc2V4cHItPml0ZW1fY29lcmNpb25zID0KKwkJCQkJSW5pdEpzb25JdGVt Q29lcmNpb25zKHBzdGF0ZSwganNleHByLT5yZXR1cm5pbmcsCisJCQkJCQkJCQkJICBleHByVHlw ZShqc2V4cHItPmZvcm1hdHRlZF9leHByKSk7CisKKwkJCWlmIChmdW5jLT5vbl9lbXB0eSkKKwkJ CQlqc2V4cHItPm9uX2VtcHR5ID0gdHJhbnNmb3JtSnNvbkJlaGF2aW9yKHBzdGF0ZSwKKwkJCQkJ CQkJCQkJCQkJIGZ1bmMtPm9uX2VtcHR5LAorCQkJCQkJCQkJCQkJCQkgSlNPTl9CRUhBVklPUl9O VUxMLAorCQkJCQkJCQkJCQkJCQkganNleHByLT5yZXR1cm5pbmcpOworCQkJanNleHByLT5vbl9l cnJvciA9IHRyYW5zZm9ybUpzb25CZWhhdmlvcihwc3RhdGUsIGZ1bmMtPm9uX2Vycm9yLAorCQkJ CQkJCQkJCQkJCSBKU09OX0JFSEFWSU9SX05VTEwsCisJCQkJCQkJCQkJCQkJIGpzZXhwci0+cmV0 dXJuaW5nKTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAiaW52YWxp ZCBKc29uRnVuY0V4cHIgb3AiKTsKKwkJCWJyZWFrOworCX0KKworCXJldHVybiAoTm9kZSAqKSBq c2V4cHI7Cit9CisKKy8qCisgKiBDb21tb24gY29kZSBmb3IgSlNPTl9WQUxVRSwgSlNPTl9RVUVS WSwgSlNPTl9FWElTVFMgdHJhbnNmb3JtYXRpb24KKyAqIGludG8gYSBKc29uRXhwciBub2RlLgor ICovCitzdGF0aWMgSnNvbkV4cHIgKgordHJhbnNmb3JtSnNvbkV4cHJDb21tb24oUGFyc2VTdGF0 ZSAqcHN0YXRlLCBKc29uRnVuY0V4cHIgKmZ1bmMsCisJCQkJCQljb25zdCBjaGFyICpjb25zdHJ1 Y3ROYW1lKQoreworCUpzb25FeHByICAgKmpzZXhwciA9IG1ha2VOb2RlKEpzb25FeHByKTsKKwlO b2RlCSAgICpwYXRoc3BlYzsKKworCWpzZXhwci0+bG9jYXRpb24gPSBmdW5jLT5sb2NhdGlvbjsK Kwlqc2V4cHItPm9wID0gZnVuYy0+b3A7CisJanNleHByLT5mb3JtYXR0ZWRfZXhwciA9IHRyYW5z Zm9ybUpzb25WYWx1ZUV4cHIocHN0YXRlLCBjb25zdHJ1Y3ROYW1lLAorCQkJCQkJCQkJCQkJCWZ1 bmMtPmNvbnRleHRfaXRlbSwKKwkJCQkJCQkJCQkJCQlKU19GT1JNQVRfSlNPTiwKKwkJCQkJCQkJ CQkJCQlJbnZhbGlkT2lkLCBmYWxzZSk7CisKKwlpZiAoZXhwclR5cGUoanNleHByLT5mb3JtYXR0 ZWRfZXhwcikgIT0gSlNPTkJPSUQpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJZXJybXNnKCIlcygpIGlzIG5vdCB5ZXQg aW1wbGVtZW50ZWQgZm9yIHRoZSBqc29uIHR5cGUiLAorCQkJCQkgICBjb25zdHJ1Y3ROYW1lKSwK KwkJCQllcnJoaW50KCJUcnkgY2FzdGluZyB0aGUgYXJndW1lbnQgdG8ganNvbmIiKSwKKwkJCQlw YXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24oanNleHByLT5mb3JtYXR0ZWRf ZXhwcikpKTsKKworCWpzZXhwci0+Zm9ybWF0ID0gZnVuYy0+Y29udGV4dF9pdGVtLT5mb3JtYXQ7 CisKKwkvKiBCb3RoIHNldCBpbiB0aGUgY2FsbGVyLiAqLworCWpzZXhwci0+cmVzdWx0X2NvZXJj aW9uID0gTlVMTDsKKwlqc2V4cHItPm9taXRfcXVvdGVzID0gZmFsc2U7CisKKwlwYXRoc3BlYyA9 IHRyYW5zZm9ybUV4cHJSZWN1cnNlKHBzdGF0ZSwgZnVuYy0+cGF0aHNwZWMpOworCisJanNleHBy LT5wYXRoX3NwZWMgPQorCQljb2VyY2VfdG9fdGFyZ2V0X3R5cGUocHN0YXRlLCBwYXRoc3BlYywg ZXhwclR5cGUocGF0aHNwZWMpLAorCQkJCQkJCSAgSlNPTlBBVEhPSUQsIC0xLAorCQkJCQkJCSAg Q09FUkNJT05fRVhQTElDSVQsIENPRVJDRV9JTVBMSUNJVF9DQVNULAorCQkJCQkJCSAgZXhwckxv Y2F0aW9uKHBhdGhzcGVjKSk7CisJaWYgKCFqc2V4cHItPnBhdGhfc3BlYykKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkgZXJy bXNnKCJKU09OIHBhdGggZXhwcmVzc2lvbiBtdXN0IGJlIG9mIHR5cGUgJXMsIG5vdCBvZiB0eXBl ICVzIiwKKwkJCQkJCSJqc29ucGF0aCIsIGZvcm1hdF90eXBlX2JlKGV4cHJUeXBlKHBhdGhzcGVj KSkpLAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24ocGF0aHNw ZWMpKSkpOworCisJLyoKKwkgKiBUcmFuc2Zvcm0gYW5kIGNvZXJjZSB0byBqc29uW2JdIHBhc3Np bmcgYXJndW1lbnRzLCB3aG9zZSBmb3JtYXQgaXMKKwkgKiBkZXRlcm1pbmVkIGJ5IGNvbnRleHQg aXRlbSB0eXBlLgorCSAqLworCXRyYW5zZm9ybUpzb25QYXNzaW5nQXJncyhwc3RhdGUsIGNvbnN0 cnVjdE5hbWUsCisJCQkJCQkJIGV4cHJUeXBlKGpzZXhwci0+Zm9ybWF0dGVkX2V4cHIpID09IEpT T05CT0lEID8KKwkJCQkJCQkgSlNfRk9STUFUX0pTT05CIDogSlNfRk9STUFUX0pTT04sCisJCQkJ CQkJIGZ1bmMtPnBhc3NpbmcsCisJCQkJCQkJICZqc2V4cHItPnBhc3NpbmdfdmFsdWVzLAorCQkJ CQkJCSAmanNleHByLT5wYXNzaW5nX25hbWVzKTsKKworCWpzZXhwci0+cmV0dXJuaW5nID0gdHJh bnNmb3JtSnNvbk91dHB1dChwc3RhdGUsIGZ1bmMtPm91dHB1dCwgZmFsc2UpOworCisJLyogSlNP Tl9RVUVSWSBzdXBwb3J0cyBzcGVjaWZ5aW5nIEZPUk1BVCBleHBsaWNpdGx5LiAqLworCWlmIChm dW5jLT5vcCAhPSBKU09OX1FVRVJZX09QKQorCXsKKwkJanNleHByLT5yZXR1cm5pbmctPmZvcm1h dC0+Zm9ybWF0X3R5cGUgPSBKU19GT1JNQVRfREVGQVVMVDsKKwkJanNleHByLT5yZXR1cm5pbmct PmZvcm1hdC0+ZW5jb2RpbmcgPSBKU19FTkNfREVGQVVMVDsKKwl9CisKKwlyZXR1cm4ganNleHBy OworfQorCisvKgorICogVHJhbnNmb3JtIGEgSlNPTiBQQVNTSU5HIGNsYXVzZS4KKyAqLworc3Rh dGljIHZvaWQKK3RyYW5zZm9ybUpzb25QYXNzaW5nQXJncyhQYXJzZVN0YXRlICpwc3RhdGUsIGNv bnN0IGNoYXIgKmNvbnN0cnVjdE5hbWUsCisJCQkJCQkgSnNvbkZvcm1hdFR5cGUgZm9ybWF0LCBM aXN0ICphcmdzLAorCQkJCQkJIExpc3QgKipwYXNzaW5nX3ZhbHVlcywgTGlzdCAqKnBhc3Npbmdf bmFtZXMpCit7CisJTGlzdENlbGwgICAqbGM7CisKKwkqcGFzc2luZ192YWx1ZXMgPSBOSUw7CisJ KnBhc3NpbmdfbmFtZXMgPSBOSUw7CisKKwlmb3JlYWNoKGxjLCBhcmdzKQorCXsKKwkJSnNvbkFy Z3VtZW50ICphcmcgPSBjYXN0Tm9kZShKc29uQXJndW1lbnQsIGxmaXJzdChsYykpOworCQlOb2Rl CSAgICpleHByID0gdHJhbnNmb3JtSnNvblZhbHVlRXhwcihwc3RhdGUsIGNvbnN0cnVjdE5hbWUs CisJCQkJCQkJCQkJCQkgIGFyZy0+dmFsLCBmb3JtYXQsCisJCQkJCQkJCQkJCQkgIEludmFsaWRP aWQsIHRydWUpOworCisJCSpwYXNzaW5nX3ZhbHVlcyA9IGxhcHBlbmQoKnBhc3NpbmdfdmFsdWVz LCBleHByKTsKKwkJKnBhc3NpbmdfbmFtZXMgPSBsYXBwZW5kKCpwYXNzaW5nX25hbWVzLCBtYWtl U3RyaW5nKGFyZy0+bmFtZSkpOworCX0KK30KKworLyoKKyAqIENyZWF0ZSBhbiBleHByZXNzaW9u IHRvIGNvZXJjZSB0aGUgb3V0cHV0IG9mIEpTT05fVkFMVUUoKSAvIEpTT05fUVVFUlkoKQorICog dG8gdGhlIG91dHB1dCB0eXBlLCBpZiBuZWVkZWQuCisgKi8KK3N0YXRpYyBOb2RlICoKK2NvZXJj ZUpzb25GdW5jRXhwck91dHB1dChQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25FeHByICpqc2V4cHIp Cit7CisJSnNvblJldHVybmluZyAqcmV0dXJuaW5nID0ganNleHByLT5yZXR1cm5pbmc7CisJTm9k ZQkgICAqY29udGV4dF9pdGVtID0ganNleHByLT5mb3JtYXR0ZWRfZXhwcjsKKwlpbnQJCQlkZWZh dWx0X3R5cG1vZDsKKwlPaWQJCQlkZWZhdWx0X3R5cGlkOworCisJQXNzZXJ0KHJldHVybmluZyk7 CisKKwkvKgorCSAqIFVzZSBhIEpzb25Db2VyY2lvbiBub2RlIHRvIGltcGxlbWVudCBhIG5vbi1k ZWZhdWx0IFFVT1RFUyBvciBXUkFQUEVSCisJICogYmVoYXZpb3IuCisJICovCisJaWYgKGpzZXhw ci0+b21pdF9xdW90ZXMgfHwganNleHByLT53cmFwcGVyICE9IEpTV19VTlNQRUMpCisJeworCQlK c29uQ29lcmNpb24gKmNvZXJjaW9uID0gbWFrZUpzb25Db2VyY2lvbihyZXR1cm5pbmcpOworCisJ CWNvZXJjaW9uLT5vbWl0X3F1b3RlcyA9IGpzZXhwci0+b21pdF9xdW90ZXM7CisKKwkJcmV0dXJu IChOb2RlICopIGNvZXJjaW9uOworCX0KKworCWRlZmF1bHRfdHlwaWQgPSBKc29uRnVuY0V4cHJE ZWZhdWx0UmV0dXJuVHlwZShqc2V4cHIpOworCWRlZmF1bHRfdHlwbW9kID0gLTE7CisJaWYgKHJl dHVybmluZy0+dHlwaWQgIT0gZGVmYXVsdF90eXBpZCB8fAorCQlyZXR1cm5pbmctPnR5cG1vZCAh PSBkZWZhdWx0X3R5cG1vZCkKKwl7CisJCS8qCisJCSAqIFdlIGFidXNlIENhc2VUZXN0RXhwciBo ZXJlIGFzIHBsYWNlaG9sZGVyIHRvIHBhc3MgdGhlIHJlc3VsdCBvZgorCQkgKiBldmFsdWF0aW5n IHRoZSBKU09OX1ZBTFVFL1FVRVJZIGpzb25wYXRoIGV4cHJlc3Npb24gYXMgaW5wdXQgdG8gdGhl CisJCSAqIGNvZXJjaW9uIGV4cHJlc3Npb24uCisJCSAqLworCQlDYXNlVGVzdEV4cHIgKnBsYWNl aG9sZGVyID0gbWFrZU5vZGUoQ2FzZVRlc3RFeHByKTsKKworCQlwbGFjZWhvbGRlci0+dHlwZUlk ID0gZXhwclR5cGUoY29udGV4dF9pdGVtKTsKKwkJcGxhY2Vob2xkZXItPnR5cGVNb2QgPSBleHBy VHlwbW9kKGNvbnRleHRfaXRlbSk7CisJCXBsYWNlaG9sZGVyLT5jb2xsYXRpb24gPSBleHByQ29s bGF0aW9uKGNvbnRleHRfaXRlbSk7CisKKwkJQXNzZXJ0KHBsYWNlaG9sZGVyLT50eXBlSWQgPT0g ZGVmYXVsdF90eXBpZCk7CisJCUFzc2VydChwbGFjZWhvbGRlci0+dHlwZU1vZCA9PSBkZWZhdWx0 X3R5cG1vZCk7CisKKwkJcmV0dXJuIGNvZXJjZUpzb25FeHByKHBzdGF0ZSwgKE5vZGUgKikgcGxh Y2Vob2xkZXIsIHJldHVybmluZyk7CisJfQorCisJcmV0dXJuIE5VTEw7Cit9CisKKy8qIFJldHVy bnMgdGhlIGRlZmF1bHQgdHlwZSBmb3IgYSBnaXZlbiBKc29uRXhwciBmb3IgYSBnaXZlbiBKc29u Rm9ybWF0LiAqLworc3RhdGljIE9pZAorSnNvbkZ1bmNFeHByRGVmYXVsdFJldHVyblR5cGUoSnNv bkV4cHIgKmpzZXhwcikKK3sKKwlKc29uRm9ybWF0ICpmb3JtYXQgPSBqc2V4cHItPmZvcm1hdDsK KwlOb2RlCSAgICpjb250ZXh0X2l0ZW0gPSBqc2V4cHItPmZvcm1hdHRlZF9leHByOworCisJQXNz ZXJ0KGZvcm1hdCk7CisJaWYgKGZvcm1hdC0+Zm9ybWF0X3R5cGUgPT0gSlNfRk9STUFUX0pTT05C KQorCQlyZXR1cm4gSlNPTkJPSUQ7CisJZWxzZSBpZiAoZm9ybWF0LT5mb3JtYXRfdHlwZSA9PSBK U19GT1JNQVRfREVGQVVMVCAmJgorCQkJIGV4cHJUeXBlKGNvbnRleHRfaXRlbSkgPT0gSlNPTkJP SUQpCisJCXJldHVybiBKU09OQk9JRDsKKworCXJldHVybiBKU09OT0lEOworfQorCisvKgorICog UmV0dXJucyBhIEpzb25Db2VyY2lvbiBub2RlIHRvIGNvZXJjZSBhIGpzb25iLXZhbHVlZCBleHBy ZXNzaW9uIHRvIHRoZQorICogdGFyZ2V0IHR5cGUgZ2l2ZW4gYnkgJ3JldHVybmluZycgdXNpbmcg ZWl0aGVyIGpzb25fcG9wdWxhdGVfdHlwZSgpIG9yCisgKiBieSB1c2luZyB0aGUgdGFyZ2V0IHR5 cGUncyBpbnB1dCBmdW5jdGlvbi4KKyAqLworc3RhdGljIEpzb25Db2VyY2lvbiAqCittYWtlSnNv bkNvZXJjaW9uKGNvbnN0IEpzb25SZXR1cm5pbmcgKnJldHVybmluZykKK3sKKwlKc29uQ29lcmNp b24gKmNvZXJjaW9uID0gbWFrZU5vZGUoSnNvbkNvZXJjaW9uKTsKKworCWNvZXJjaW9uLT50YXJn ZXR0eXBlID0gcmV0dXJuaW5nLT50eXBpZDsKKwljb2VyY2lvbi0+dGFyZ2V0dHlwbW9kID0gcmV0 dXJuaW5nLT50eXBtb2Q7CisKKwlyZXR1cm4gY29lcmNpb247Cit9CisKKy8qCisgKiBTZXQgdXAg YSBKc29uQ29lcmNpb24gbm9kZSB0bzoKKyAqCisgKiAJLSBjb2VyY2UgZXhwcmVzc2lvbiB0byB0 aGUgb3V0cHV0IHJldHVybmluZyB0eXBlLCBvcgorICogCS0gY29lcmNlIHVzaW5nIGpzb25fcG9w dWxhdGVfdHlwZSgpIGlmIHJldHVybmluZyB0eXBlIHJlcXVpcmVzIGl0LCBvcgorICogCS0gY29l cmNlIHZpYSBJL08uCisgKi8KK3N0YXRpYyBOb2RlICoKK2NvZXJjZUpzb25FeHByKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgTm9kZSAqZXhwciwgY29uc3QgSnNvblJldHVybmluZyAqcmV0dXJuaW5nKQor eworCU5vZGUJICAgKmNvZXJjZWRfZXhwcjsKKworCWNvZXJjZWRfZXhwciA9IGNvZXJjZUpzb25G dW5jRXhwcihwc3RhdGUsIGV4cHIsIHJldHVybmluZywgZmFsc2UpOworCWlmIChjb2VyY2VkX2V4 cHIpCisJeworCQlpZiAoY29lcmNlZF9leHByID09IGV4cHIpCisJCQlyZXR1cm4gTlVMTDsKKwkJ cmV0dXJuIGNvZXJjZWRfZXhwcjsKKwl9CisKKwlyZXR1cm4gKE5vZGUgKikgbWFrZUpzb25Db2Vy Y2lvbihyZXR1cm5pbmcpOworfQorCisvKgorICogSW5pdGlhbGl6ZSBKc29uQ29lcmNpb24gbm9k ZXMgZm9yIGNvZXJjaW5nIGEgZ2l2ZW4gSlNPTiBpdGVtIHZhbHVlIHByb2R1Y2VkCisgKiBieSBK U09OX1ZBTFVFIHRvIHRoZSB0YXJnZXQgInJldHVybmluZyIgdHlwZTsgYWxzbyBzZWUKKyAqIEV4 ZWNQcmVwYXJlSnNvbkl0ZW1Db2VyY2lvbigpLgorICovCitzdGF0aWMgTGlzdCAqCitJbml0SnNv bkl0ZW1Db2VyY2lvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBjb25zdCBKc29uUmV0dXJuaW5nICpy ZXR1cm5pbmcsCisJCQkJCSAgT2lkIGNvbnRleHRJdGVtVHlwZUlkKQoreworCUxpc3QJICAgKml0 ZW1fY29lcmNpb25zID0gTklMOworCWludAkJCWk7CisJT2lkCQkJdHlwZW9pZDsKKwlzdHJ1Y3QK Kwl7CisJCUpzb25JdGVtVHlwZSBpdGVtX3R5cGU7CisJCU9pZAkJdHlwZW9pZDsKKwl9CQlpdGVt X3R5cGVzW10gPQorCXsKKwkJe0pzb25JdGVtVHlwZU51bGwsIFVOS05PV05PSUR9LAorCQl7SnNv bkl0ZW1UeXBlU3RyaW5nLCBURVhUT0lEfSwKKwkJe0pzb25JdGVtVHlwZU51bWVyaWMsIE5VTUVS SUNPSUR9LAorCQl7SnNvbkl0ZW1UeXBlQm9vbGVhbiwgQk9PTE9JRH0sCisJCXtKc29uSXRlbVR5 cGVEYXRlLCBEQVRFT0lEfSwKKwkJe0pzb25JdGVtVHlwZVRpbWUsIFRJTUVPSUR9LAorCQl7SnNv bkl0ZW1UeXBlVGltZXR6LCBUSU1FVFpPSUR9LAorCQl7SnNvbkl0ZW1UeXBlVGltZXN0YW1wLCBU SU1FU1RBTVBPSUR9LAorCQl7SnNvbkl0ZW1UeXBlVGltZXN0YW1wdHosIFRJTUVTVEFNUFRaT0lE fSwKKwkJe0pzb25JdGVtVHlwZUNvbXBvc2l0ZSwgY29udGV4dEl0ZW1UeXBlSWR9LAorCQl7SnNv bkl0ZW1UeXBlSW52YWxpZCwgSW52YWxpZE9pZH0KKwl9OworCisJZm9yIChpID0gMDsgT2lkSXNW YWxpZCh0eXBlb2lkID0gaXRlbV90eXBlc1tpXS50eXBlb2lkKTsgaSsrKQorCXsKKwkJTm9kZQkg ICAqZXhwcjsKKwkJSnNvbkl0ZW1Db2VyY2lvbiAqaXRlbV9jb2VyY2lvbiA9IG1ha2VOb2RlKEpz b25JdGVtQ29lcmNpb24pOworCisJCWlmICh0eXBlb2lkID09IFVOS05PV05PSUQpCisJCXsKKwkJ CWV4cHIgPSAoTm9kZSAqKSBtYWtlTnVsbENvbnN0KFVOS05PV05PSUQsIC0xLCBJbnZhbGlkT2lk KTsKKwkJfQorCQllbHNlCisJCXsKKwkJCUNhc2VUZXN0RXhwciAqcGxhY2Vob2xkZXIgPSBtYWtl Tm9kZShDYXNlVGVzdEV4cHIpOworCisJCQkvKgorCQkJICogV2UgYWJ1c2UgQ2FzZVRlc3RFeHBy IGhlcmUgYXMgcGxhY2Vob2xkZXIgdG8gcGFzcyB0aGUgcmVzdWx0IG9mCisJCQkgKiBKU09OX1ZB TFVFIGpzb25wYXRoIGV4cHJlc3Npb24gdG8gdGhlIGNvZXJjaW9uIGZ1bmN0aW9uLgorCQkJICov CisJCQlwbGFjZWhvbGRlci0+dHlwZUlkID0gaXRlbV90eXBlc1tpXS50eXBlb2lkOworCQkJcGxh Y2Vob2xkZXItPnR5cGVNb2QgPSAtMTsKKwkJCXBsYWNlaG9sZGVyLT5jb2xsYXRpb24gPSBJbnZh bGlkT2lkOworCisJCQlleHByID0gKE5vZGUgKikgcGxhY2Vob2xkZXI7CisJCX0KKworCQlpdGVt X2NvZXJjaW9uLT5pdGVtX3R5cGUgPSBpdGVtX3R5cGVzW2ldLml0ZW1fdHlwZTsKKwkJaXRlbV9j b2VyY2lvbi0+Y29lcmNpb24gPSBjb2VyY2VKc29uRXhwcihwc3RhdGUsIGV4cHIsIHJldHVybmlu Zyk7CisJCWl0ZW1fY29lcmNpb25zID0gbGFwcGVuZChpdGVtX2NvZXJjaW9ucywgaXRlbV9jb2Vy Y2lvbik7CisJfQorCisJcmV0dXJuIGl0ZW1fY29lcmNpb25zOworfQorCisvKgorICogUmV0dXJu cyBjb25zdGFudCB2YWx1ZXMgdG8gYmUgcmV0dXJuZWQgdG8gdGhlIHVzZXIgZm9yIHZhcmlvdXMK KyAqIG5vbi1FUlJPUiBPTiBFUlJPUi9FTVBUWSBiZWhhdmlvcnMuCisgKgorICogTm90ZSB0aGF0 IEpTT05fQkVIQVZJT1JfREVGQVVMVCBleHByZXNzaW9uIGlzIGhhbmRsZWQgYnkgdGhlCisgKiBj YWxsZXIgc2VwYXJhdGVseS4KKyAqLworc3RhdGljIE5vZGUgKgorR2V0SnNvbkJlaGF2aW9yQ29u c3RFeHByKEpzb25CZWhhdmlvclR5cGUgYnR5cGUsIGludCBsb2NhdGlvbikKK3sKKwlEYXR1bQl2 YWwgPSAoRGF0dW0pIDA7CisJT2lkCQl0eXBpZCA9IEpTT05CT0lEOworCWludAkJbGVuID0gLTE7 CisJYm9vbAlpc2J5dmFsID0gZmFsc2U7CisJYm9vbAlpc251bGwgPSBmYWxzZTsKKwlDb25zdCAg KmNvbjsKKworCXN3aXRjaCAoYnR5cGUpCisJeworCQljYXNlIEpTT05fQkVIQVZJT1JfRU1QVFlf QVJSQVk6CisJCQl2YWwgPSBEaXJlY3RGdW5jdGlvbkNhbGwxKGpzb25iX2luLCBDU3RyaW5nR2V0 RGF0dW0oIltdIikpOworCQkJYnJlYWs7CisKKwkJY2FzZSBKU09OX0JFSEFWSU9SX0VNUFRZX09C SkVDVDoKKwkJCXZhbCA9IERpcmVjdEZ1bmN0aW9uQ2FsbDEoanNvbmJfaW4sIENTdHJpbmdHZXRE YXR1bSgie30iKSk7CisJCQlicmVhazsKKworCQljYXNlIEpTT05fQkVIQVZJT1JfVFJVRToKKwkJ CXZhbCA9IEJvb2xHZXREYXR1bSh0cnVlKTsKKwkJCXR5cGlkID0gQk9PTE9JRDsKKwkJCWxlbiA9 IHNpemVvZihib29sKTsKKwkJCWlzYnl2YWwgPSB0cnVlOworCQkJYnJlYWs7CisKKwkJY2FzZSBK U09OX0JFSEFWSU9SX0ZBTFNFOgorCQkJdmFsID0gQm9vbEdldERhdHVtKGZhbHNlKTsKKwkJCXR5 cGlkID0gQk9PTE9JRDsKKwkJCWxlbiA9IHNpemVvZihib29sKTsKKwkJCWlzYnl2YWwgPSB0cnVl OworCQkJYnJlYWs7CisKKwkJY2FzZSBKU09OX0JFSEFWSU9SX05VTEw6CisJCWNhc2UgSlNPTl9C RUhBVklPUl9VTktOT1dOOgorCQljYXNlIEpTT05fQkVIQVZJT1JfRU1QVFk6CisJCQl2YWwgPSAo RGF0dW0pIDA7CisJCQlpc251bGwgPSB0cnVlOworCQkJdHlwaWQgPSBJTlQ0T0lEOworCQkJbGVu ID0gc2l6ZW9mKGludDMyKTsKKwkJCWlzYnl2YWwgPSB0cnVlOworCQkJYnJlYWs7CisKKwkJY2Fz ZSBKU09OX0JFSEFWSU9SX0RFRkFVTFQ6CisJCWNhc2UgSlNPTl9CRUhBVklPUl9FUlJPUjoKKwkJ CS8qIEFsd2F5cyBoYW5kbGVkIGluIHRoZSBjYWxsZXIuICovCisJCQlBc3NlcnQoZmFsc2UpOwor CQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgU1FM L0pTT04gYmVoYXZpb3IgJWQiLCBidHlwZSk7CisJCQlicmVhazsKKwl9CisKKwljb24gPSBtYWtl Q29uc3QodHlwaWQsIC0xLCBJbnZhbGlkT2lkLCBsZW4sIHZhbCwgaXNudWxsLCBpc2J5dmFsKTsK Kwljb24tPmxvY2F0aW9uID0gbG9jYXRpb247CisKKwlyZXR1cm4gKE5vZGUgKikgY29uOworfQor CisvKgorICogVHJhbnNmb3JtIGEgSlNPTiBCRUhBVklPUiBjbGF1c2UuCisgKi8KK3N0YXRpYyBK c29uQmVoYXZpb3IgKgordHJhbnNmb3JtSnNvbkJlaGF2aW9yKFBhcnNlU3RhdGUgKnBzdGF0ZSwg SnNvbkJlaGF2aW9yICpiZWhhdmlvciwKKwkJCQkJICBKc29uQmVoYXZpb3JUeXBlIGRlZmF1bHRf YmVoYXZpb3IsCisJCQkJCSAgSnNvblJldHVybmluZyAqcmV0dXJuaW5nKQoreworCUpzb25CZWhh dmlvclR5cGUgYmVoYXZpb3JfdHlwZSA9IGRlZmF1bHRfYmVoYXZpb3I7CisJTm9kZQkgICAqZXhw ciA9IE5VTEw7CisJSnNvbkNvZXJjaW9uICpjb2VyY2lvbiA9IE5VTEw7CisJaW50CQkJbG9jYXRp b24gPSAtMTsKKworCWlmIChiZWhhdmlvcikKKwl7CisJCWJlaGF2aW9yX3R5cGUgPSBiZWhhdmlv ci0+YnR5cGU7CisJCWxvY2F0aW9uID0gYmVoYXZpb3ItPmxvY2F0aW9uOworCQlpZiAoYmVoYXZp b3JfdHlwZSA9PSBKU09OX0JFSEFWSU9SX0RFRkFVTFQpCisJCQlleHByID0gdHJhbnNmb3JtRXhw clJlY3Vyc2UocHN0YXRlLCBiZWhhdmlvci0+ZXhwcik7CisJfQorCisJaWYgKGV4cHIgPT0gTlVM TCAmJiBiZWhhdmlvcl90eXBlICE9IEpTT05fQkVIQVZJT1JfRVJST1IpCisJCWV4cHIgPSAJR2V0 SnNvbkJlaGF2aW9yQ29uc3RFeHByKGJlaGF2aW9yX3R5cGUsIGxvY2F0aW9uKTsKKworCWlmIChl eHByKQorCXsKKwkJTm9kZSAgICpjb2VyY2VkX2V4cHIgPSBleHByOworCQlib29sCWlzbnVsbCA9 IChJc0EoZXhwciwgQ29uc3QpICYmICgoQ29uc3QgKikgZXhwciktPmNvbnN0aXNudWxsKTsKKwor CQkvKgorCQkgKiBDb2VyY2UgTlVMTHMgYW5kICJkZWZhdWx0IiAodGhhdCBpcywgbm90IHNwZWNp ZmllZCBieSB0aGUgdXNlcikKKwkJICoganNvbmItdmFsdWVkIGV4cHJlc3Npb25zIHVzaW5nIGEg SnNvbkNvZXJjaW9uIG5vZGUuCisJCSAqCisJCSAqIEZvciBvdGhlciAodXNlci1zcGVjaWZpZWQp IG5vbi1OVUxMIHZhbHVlcywgdHJ5IHRvIGZpbmQgYSBjYXN0CisJCSAqIGFuZCBlcnJvciBvdXQg aWYgb25lIGlzIG5vdCBmb3VuZC4KKwkJICovCisJCWlmIChpc251bGwgfHwKKwkJCShleHByVHlw ZShleHByKSA9PSBKU09OQk9JRCAmJgorCQkJIGJlaGF2aW9yX3R5cGUgPT0gZGVmYXVsdF9iZWhh dmlvcikpCisJCQljb2VyY2lvbiA9IG1ha2VKc29uQ29lcmNpb24ocmV0dXJuaW5nKTsKKwkJZWxz ZQorCQkJY29lcmNlZF9leHByID0KKwkJCQljb2VyY2VfdG9fdGFyZ2V0X3R5cGUocHN0YXRlLCBl eHByLCBleHByVHlwZShleHByKSwKKwkJCQkJCQkJCSAgcmV0dXJuaW5nLT50eXBpZCwgcmV0dXJu aW5nLT50eXBtb2QsCisJCQkJCQkJCQkgIENPRVJDSU9OX0VYUExJQ0lULCBDT0VSQ0VfRVhQTElD SVRfQ0FTVCwKKwkJCQkJCQkJCSAgZXhwckxvY2F0aW9uKChOb2RlICopIGJlaGF2aW9yKSk7CisK KwkJaWYgKGNvZXJjZWRfZXhwciA9PSBOVUxMKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJy Y29kZShFUlJDT0RFX0NBTk5PVF9DT0VSQ0UpLAorCQkJCQllcnJtc2coImNhbm5vdCBjYXN0IGJl aGF2aW9yIGV4cHJlc3Npb24gb2YgdHlwZSAlcyB0byAlcyIsCisJCQkJCQkgICBmb3JtYXRfdHlw ZV9iZShleHByVHlwZShleHByKSksCisJCQkJCQkgICBmb3JtYXRfdHlwZV9iZShyZXR1cm5pbmct PnR5cGlkKSksCisJCQkJCQkgICBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRp b24oZXhwcikpKTsKKwkJZWxzZQorCQkJZXhwciA9IGNvZXJjZWRfZXhwcjsKKwl9CisKKwlyZXR1 cm4gbWFrZUpzb25CZWhhdmlvcihiZWhhdmlvcl90eXBlLCBleHByLCBjb2VyY2lvbiwgbG9jYXRp b24pOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jIGIv c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCmluZGV4IDBjZDkwNGY4ZGEuLmVhNWFj NmJhZmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYworKysg Yi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMKQEAgLTE5ODksNiArMTk4OSwyMSBA QCBGaWd1cmVDb2xuYW1lSW50ZXJuYWwoTm9kZSAqbm9kZSwgY2hhciAqKm5hbWUpCiAJCQkvKiBt YWtlIEpTT05fQVJSQVlBR0cgYWN0IGxpa2UgYSByZWd1bGFyIGZ1bmN0aW9uICovCiAJCQkqbmFt ZSA9ICJqc29uX2FycmF5YWdnIjsKIAkJCXJldHVybiAyOworCQljYXNlIFRfSnNvbkZ1bmNFeHBy OgorCQkJLyogbWFrZSBTUUwvSlNPTiBmdW5jdGlvbnMgYWN0IGxpa2UgYSByZWd1bGFyIGZ1bmN0 aW9uICovCisJCQlzd2l0Y2ggKCgoSnNvbkZ1bmNFeHByICopIG5vZGUpLT5vcCkKKwkJCXsKKwkJ CQljYXNlIEpTT05fRVhJU1RTX09QOgorCQkJCQkqbmFtZSA9ICJqc29uX2V4aXN0cyI7CisJCQkJ CXJldHVybiAyOworCQkJCWNhc2UgSlNPTl9RVUVSWV9PUDoKKwkJCQkJKm5hbWUgPSAianNvbl9x dWVyeSI7CisJCQkJCXJldHVybiAyOworCQkJCWNhc2UgSlNPTl9WQUxVRV9PUDoKKwkJCQkJKm5h bWUgPSAianNvbl92YWx1ZSI7CisJCQkJCXJldHVybiAyOworCQkJfQorCQkJYnJlYWs7CiAJCWRl ZmF1bHQ6CiAJCQlicmVhazsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQv anNvbnBhdGhfZXhlYy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2V4ZWMuYwpp bmRleCA2ZGE2ZTI3ZWU2Li42ZDYxZDg3ZjAxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9hZHQvanNvbnBhdGhfZXhlYy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0 aF9leGVjLmMKQEAgLTMwODUsNyArMzA4NSw3IEBAIEpzb25QYXRoUXVlcnkoRGF0dW0gamIsIEpz b25QYXRoICpqcCwgSnNvbldyYXBwZXIgd3JhcHBlciwgYm9vbCAqZW1wdHksCiAJc2luZ2xldG9u ID0gY291bnQgPiAwID8gSnNvblZhbHVlTGlzdEhlYWQoJmZvdW5kKSA6IE5VTEw7CiAJaWYgKHNp bmdsZXRvbiA9PSBOVUxMKQogCQl3cmFwID0gZmFsc2U7Ci0JZWxzZSBpZiAod3JhcHBlciA9PSBK U1dfTk9ORSkKKwllbHNlIGlmICh3cmFwcGVyID09IEpTV19OT05FIHx8IHdyYXBwZXIgPT0gSlNX X1VOU1BFQykKIAkJd3JhcCA9IGZhbHNlOwogCWVsc2UgaWYgKHdyYXBwZXIgPT0gSlNXX1VOQ09O RElUSU9OQUwpCiAJCXdyYXAgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3J1bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmluZGV4 IDBiMmExNjQwNTcuLjI3MzUzNDg0MTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9ydWxldXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKQEAg LTQ3Niw2ICs0NzYsOCBAQCBzdGF0aWMgdm9pZCBnZXRfY29uc3RfZXhwcihDb25zdCAqY29uc3R2 YWwsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwKIAkJCQkJCSAgIGludCBzaG93dHlwZSk7CiBz dGF0aWMgdm9pZCBnZXRfY29uc3RfY29sbGF0aW9uKENvbnN0ICpjb25zdHZhbCwgZGVwYXJzZV9j b250ZXh0ICpjb250ZXh0KTsKIHN0YXRpYyB2b2lkIGdldF9qc29uX2Zvcm1hdChKc29uRm9ybWF0 ICpmb3JtYXQsIFN0cmluZ0luZm8gYnVmKTsKK3N0YXRpYyB2b2lkIGdldF9qc29uX3JldHVybmlu ZyhKc29uUmV0dXJuaW5nICpyZXR1cm5pbmcsIFN0cmluZ0luZm8gYnVmLAorCQkJCQkJCSAgIGJv b2wganNvbl9mb3JtYXRfYnlfZGVmYXVsdCk7CiBzdGF0aWMgdm9pZCBnZXRfanNvbl9jb25zdHJ1 Y3RvcihKc29uQ29uc3RydWN0b3JFeHByICpjdG9yLAogCQkJCQkJCQkgZGVwYXJzZV9jb250ZXh0 ICpjb250ZXh0LCBib29sIHNob3dpbXBsaWNpdCk7CiBzdGF0aWMgdm9pZCBnZXRfanNvbl9jb25z dHJ1Y3Rvcl9vcHRpb25zKEpzb25Db25zdHJ1Y3RvckV4cHIgKmN0b3IsCkBAIC01MTgsNiArNTIw LDggQEAgc3RhdGljIGNoYXIgKmdlbmVyYXRlX3F1YWxpZmllZF90eXBlX25hbWUoT2lkIHR5cGlk KTsKIHN0YXRpYyB0ZXh0ICpzdHJpbmdfdG9fdGV4dChjaGFyICpzdHIpOwogc3RhdGljIGNoYXIg KmZsYXR0ZW5fcmVsb3B0aW9ucyhPaWQgcmVsaWQpOwogc3RhdGljIHZvaWQgZ2V0X3JlbG9wdGlv bnMoU3RyaW5nSW5mbyBidWYsIERhdHVtIHJlbG9wdGlvbnMpOworc3RhdGljIHZvaWQgZ2V0X2pz b25fcGF0aF9zcGVjKE5vZGUgKnBhdGhfc3BlYywgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAor CQkJCQkJCSAgIGJvb2wgc2hvd2ltcGxpY2l0KTsKIAogI2RlZmluZSBvbmx5X21hcmtlcihydGUp ICAoKHJ0ZSktPmluaCA/ICIiIDogIk9OTFkgIikKIApAQCAtODMwMCw2ICs4MzA0LDcgQEAgaXNT aW1wbGVOb2RlKE5vZGUgKm5vZGUsIE5vZGUgKnBhcmVudE5vZGUsIGludCBwcmV0dHlGbGFncykK IAkJY2FzZSBUX1dpbmRvd0Z1bmM6CiAJCWNhc2UgVF9GdW5jRXhwcjoKIAkJY2FzZSBUX0pzb25D b25zdHJ1Y3RvckV4cHI6CisJCWNhc2UgVF9Kc29uRXhwcjoKIAkJCS8qIGZ1bmN0aW9uLWxpa2U6 IG5hbWUoLi4pIG9yIG5hbWVbLi5dICovCiAJCQlyZXR1cm4gdHJ1ZTsKIApAQCAtODQ3MSw2ICs4 NDc2LDcgQEAgaXNTaW1wbGVOb2RlKE5vZGUgKm5vZGUsIE5vZGUgKnBhcmVudE5vZGUsIGludCBw cmV0dHlGbGFncykKIAkJCQljYXNlIFRfR3JvdXBpbmdGdW5jOgkvKiBvd24gcGFyZW50aGVzZXMg Ki8KIAkJCQljYXNlIFRfV2luZG93RnVuYzoJLyogb3duIHBhcmVudGhlc2VzICovCiAJCQkJY2Fz ZSBUX0Nhc2VFeHByOgkvKiBvdGhlciBzZXBhcmF0b3JzICovCisJCQkJY2FzZSBUX0pzb25FeHBy OgkvKiBvd24gcGFyZW50aGVzZXMgKi8KIAkJCQkJcmV0dXJuIHRydWU7CiAJCQkJZGVmYXVsdDoK IAkJCQkJcmV0dXJuIGZhbHNlOwpAQCAtODU4Niw2ICs4NTkyLDY0IEBAIGdldF9ydWxlX2V4cHJf cGFyZW4oTm9kZSAqbm9kZSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAogCQlhcHBlbmRTdHJp bmdJbmZvQ2hhcihjb250ZXh0LT5idWYsICcpJyk7CiB9CiAKK3N0YXRpYyB2b2lkCitnZXRfanNv bl9iZWhhdmlvcihKc29uQmVoYXZpb3IgKmJlaGF2aW9yLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRl eHQsCisJCQkJICBjb25zdCBjaGFyICpvbikKK3sKKwkvKgorCSAqIFRoZSBvcmRlciBvZiBhcnJh eSBlbGVtZW50cyBtdXN0IGNvcnJlc3BvbmQgdG8gdGhlIG9yZGVyIG9mCisJICogSnNvbkJlaGF2 aW9yVHlwZSBtZW1iZXJzLgorCSAqLworCWNvbnN0IGNoYXIgKmJlaGF2aW9yX25hbWVzW10gPQor CXsKKwkJIiBOVUxMIiwKKwkJIiBFUlJPUiIsCisJCSIgRU1QVFkiLAorCQkiIFRSVUUiLAorCQki IEZBTFNFIiwKKwkJIiBVTktOT1dOIiwKKwkJIiBFTVBUWSBBUlJBWSIsCisJCSIgRU1QVFkgT0JK RUNUIiwKKwkJIiBERUZBVUxUICIKKwl9OworCisJaWYgKChpbnQpIGJlaGF2aW9yLT5idHlwZSA8 IDAgfHwgYmVoYXZpb3ItPmJ0eXBlID49IGxlbmd0aG9mKGJlaGF2aW9yX25hbWVzKSkKKwkJZWxv ZyhFUlJPUiwgImludmFsaWQganNvbiBiZWhhdmlvciB0eXBlOiAlZCIsIGJlaGF2aW9yLT5idHlw ZSk7CisKKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGNvbnRleHQtPmJ1ZiwgYmVoYXZpb3JfbmFt ZXNbYmVoYXZpb3ItPmJ0eXBlXSk7CisKKwlpZiAoYmVoYXZpb3ItPmJ0eXBlID09IEpTT05fQkVI QVZJT1JfREVGQVVMVCkKKwkJZ2V0X3J1bGVfZXhwcihiZWhhdmlvci0+ZXhwciwgY29udGV4dCwg ZmFsc2UpOworCisJYXBwZW5kU3RyaW5nSW5mbyhjb250ZXh0LT5idWYsICIgT04gJXMiLCBvbik7 Cit9CisKKy8qCisgKiBnZXRfanNvbl9leHByX29wdGlvbnMKKyAqCisgKiBQYXJzZSBiYWNrIGNv bW1vbiBvcHRpb25zIGZvciBKU09OX1FVRVJZLCBKU09OX1ZBTFVFLCBKU09OX0VYSVNUUy4KKyAq Lworc3RhdGljIHZvaWQKK2dldF9qc29uX2V4cHJfb3B0aW9ucyhKc29uRXhwciAqanNleHByLCBk ZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCisJCQkJCSAgSnNvbkJlaGF2aW9yVHlwZSBkZWZhdWx0 X2JlaGF2aW9yKQoreworCWlmIChqc2V4cHItPm9wID09IEpTT05fUVVFUllfT1ApCisJeworCQlp ZiAoanNleHByLT53cmFwcGVyID09IEpTV19DT05ESVRJT05BTCkKKwkJCWFwcGVuZFN0cmluZ0lu Zm8oY29udGV4dC0+YnVmLCAiIFdJVEggQ09ORElUSU9OQUwgV1JBUFBFUiIpOworCQllbHNlIGlm IChqc2V4cHItPndyYXBwZXIgPT0gSlNXX1VOQ09ORElUSU9OQUwpCisJCQlhcHBlbmRTdHJpbmdJ bmZvKGNvbnRleHQtPmJ1ZiwgIiBXSVRIIFVOQ09ORElUSU9OQUwgV1JBUFBFUiIpOworCisJCWlm IChqc2V4cHItPm9taXRfcXVvdGVzKQorCQkJYXBwZW5kU3RyaW5nSW5mbyhjb250ZXh0LT5idWYs ICIgT01JVCBRVU9URVMiKTsKKwl9CisKKwlpZiAoanNleHByLT5vbl9lbXB0eSAmJiBqc2V4cHIt Pm9uX2VtcHR5LT5idHlwZSAhPSBkZWZhdWx0X2JlaGF2aW9yKQorCQlnZXRfanNvbl9iZWhhdmlv cihqc2V4cHItPm9uX2VtcHR5LCBjb250ZXh0LCAiRU1QVFkiKTsKKworCWlmIChqc2V4cHItPm9u X2Vycm9yICYmIGpzZXhwci0+b25fZXJyb3ItPmJ0eXBlICE9IGRlZmF1bHRfYmVoYXZpb3IpCisJ CWdldF9qc29uX2JlaGF2aW9yKGpzZXhwci0+b25fZXJyb3IsIGNvbnRleHQsICJFUlJPUiIpOwor fQogCiAvKiAtLS0tLS0tLS0tCiAgKiBnZXRfcnVsZV9leHByCQkJLSBQYXJzZSBiYWNrIGFuIGV4 cHJlc3Npb24KQEAgLTk3NDUsNiArOTgwOSw3IEBAIGdldF9ydWxlX2V4cHIoTm9kZSAqbm9kZSwg ZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAogCQkJfQogCQkJYnJlYWs7CiAKKwogCQljYXNlIFRf SnNvblZhbHVlRXhwcjoKIAkJCXsKIAkJCQlKc29uVmFsdWVFeHByICpqdmUgPSAoSnNvblZhbHVl RXhwciAqKSBub2RlOwpAQCAtOTc5NCw2ICs5ODU5LDY0IEBAIGdldF9ydWxlX2V4cHIoTm9kZSAq bm9kZSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAogCQkJfQogCQkJYnJlYWs7CiAKKwkJY2Fz ZSBUX0pzb25FeHByOgorCQkJeworCQkJCUpzb25FeHByICAgKmpleHByID0gKEpzb25FeHByICop IG5vZGU7CisKKwkJCQlzd2l0Y2ggKGpleHByLT5vcCkKKwkJCQl7CisJCQkJCWNhc2UgSlNPTl9F WElTVFNfT1A6CisJCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIkpTT05fRVhJU1RT KCIpOworCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgSlNPTl9RVUVSWV9PUDoKKwkJCQkJCWFwcGVu ZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiSlNPTl9RVUVSWSgiKTsKKwkJCQkJCWJyZWFrOworCQkJ CQljYXNlIEpTT05fVkFMVUVfT1A6CisJCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1Ziwg IkpTT05fVkFMVUUoIik7CisJCQkJCQlicmVhazsKKwkJCQl9CisKKwkJCQlnZXRfcnVsZV9leHBy KGpleHByLT5mb3JtYXR0ZWRfZXhwciwgY29udGV4dCwgc2hvd2ltcGxpY2l0KTsKKworCQkJCWFw cGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiLCAiKTsKKworCQkJCWdldF9qc29uX3BhdGhfc3Bl YyhqZXhwci0+cGF0aF9zcGVjLCBjb250ZXh0LCBzaG93aW1wbGljaXQpOworCisJCQkJaWYgKGpl eHByLT5wYXNzaW5nX3ZhbHVlcykKKwkJCQl7CisJCQkJCUxpc3RDZWxsICAgKmxjMSwKKwkJCQkJ CQkgICAqbGMyOworCQkJCQlib29sCQluZWVkY29tbWEgPSBmYWxzZTsKKworCQkJCQlhcHBlbmRT dHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiBQQVNTSU5HICIpOworCisJCQkJCWZvcmJvdGgobGMxLCBq ZXhwci0+cGFzc2luZ19uYW1lcywKKwkJCQkJCQlsYzIsIGpleHByLT5wYXNzaW5nX3ZhbHVlcykK KwkJCQkJeworCQkJCQkJaWYgKG5lZWRjb21tYSkKKwkJCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3Ry aW5nKGJ1ZiwgIiwgIik7CisJCQkJCQluZWVkY29tbWEgPSB0cnVlOworCisJCQkJCQlnZXRfcnVs ZV9leHByKChOb2RlICopIGxmaXJzdChsYzIpLCBjb250ZXh0LCBzaG93aW1wbGljaXQpOworCQkJ CQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIgQVMgJXMiLAorCQkJCQkJCQkJCSAoKFN0cmluZyAq KSBsZmlyc3Rfbm9kZShTdHJpbmcsIGxjMSkpLT5zdmFsKTsKKwkJCQkJfQorCQkJCX0KKworCQkJ CWlmIChqZXhwci0+b3AgIT0gSlNPTl9FWElTVFNfT1AgfHwKKwkJCQkJamV4cHItPnJldHVybmlu Zy0+dHlwaWQgIT0gQk9PTE9JRCkKKwkJCQkJZ2V0X2pzb25fcmV0dXJuaW5nKGpleHByLT5yZXR1 cm5pbmcsIGNvbnRleHQtPmJ1ZiwKKwkJCQkJCQkJCSAgIGpleHByLT5vcCA9PSBKU09OX1FVRVJZ X09QKTsKKworCQkJCWdldF9qc29uX2V4cHJfb3B0aW9ucyhqZXhwciwgY29udGV4dCwKKwkJCQkJ CQkJCSAgamV4cHItPm9wICE9IEpTT05fRVhJU1RTX09QID8KKwkJCQkJCQkJCSAgSlNPTl9CRUhB VklPUl9OVUxMIDoKKwkJCQkJCQkJCSAgSlNPTl9CRUhBVklPUl9GQUxTRSk7CisKKwkJCQlhcHBl bmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIikiKTsKKwkJCX0KKwkJCWJyZWFrOworCiAJCWNhc2Ug VF9MaXN0OgogCQkJewogCQkJCWNoYXIJICAgKnNlcDsKQEAgLTk5MTcsNiArMTAwNDAsNyBAQCBs b29rc19saWtlX2Z1bmN0aW9uKE5vZGUgKm5vZGUpCiAJCWNhc2UgVF9NaW5NYXhFeHByOgogCQlj YXNlIFRfU1FMVmFsdWVGdW5jdGlvbjoKIAkJY2FzZSBUX1htbEV4cHI6CisJCWNhc2UgVF9Kc29u RXhwcjoKIAkJCS8qIHRoZXNlIGFyZSBhbGwgYWNjZXB0ZWQgYnkgZnVuY19leHByX2NvbW1vbl9z dWJleHByICovCiAJCQlyZXR1cm4gdHJ1ZTsKIAkJZGVmYXVsdDoKQEAgLTEwNzg2LDYgKzEwOTEw LDE4IEBAIGdldF9jb25zdF9jb2xsYXRpb24oQ29uc3QgKmNvbnN0dmFsLCBkZXBhcnNlX2NvbnRl eHQgKmNvbnRleHQpCiAJfQogfQogCisvKgorICogZ2V0X2pzb25fcGF0aF9zcGVjCQktIFBhcnNl IGJhY2sgYSBKU09OIHBhdGggc3BlY2lmaWNhdGlvbgorICovCitzdGF0aWMgdm9pZAorZ2V0X2pz b25fcGF0aF9zcGVjKE5vZGUgKnBhdGhfc3BlYywgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LCBi b29sIHNob3dpbXBsaWNpdCkKK3sKKwlpZiAoSXNBKHBhdGhfc3BlYywgQ29uc3QpKQorCQlnZXRf Y29uc3RfZXhwcigoQ29uc3QgKikgcGF0aF9zcGVjLCBjb250ZXh0LCAtMSk7CisJZWxzZQorCQln ZXRfcnVsZV9leHByKHBhdGhfc3BlYywgY29udGV4dCwgc2hvd2ltcGxpY2l0KTsKK30KKwogLyoK ICAqIGdldF9qc29uX2Zvcm1hdAkJCS0gUGFyc2UgYmFjayBhIEpzb25Gb3JtYXQgbm9kZQogICov CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oIGIvc3JjL2luY2x1 ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaAppbmRleCBhMjhkZGNkZDc3Li41ZGIzNTRmMjIwIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oCisrKyBiL3NyYy9pbmNsdWRl L2V4ZWN1dG9yL2V4ZWNFeHByLmgKQEAgLTI0MCw2ICsyNDAsOSBAQCB0eXBlZGVmIGVudW0gRXhw ckV2YWxPcAogCUVFT1BfWE1MRVhQUiwKIAlFRU9QX0pTT05fQ09OU1RSVUNUT1IsCiAJRUVPUF9J U19KU09OLAorCUVFT1BfSlNPTkVYUFJfUEFUSCwKKwlFRU9QX0pTT05FWFBSX0NPRVJDSU9OLAor CUVFT1BfSlNPTkVYUFJfQ09FUkNJT05fRklOSVNILAogCUVFT1BfQUdHUkVGLAogCUVFT1BfR1JP VVBJTkdfRlVOQywKIAlFRU9QX1dJTkRPV19GVU5DLApAQCAtNjkyLDYgKzY5NSwyMSBAQCB0eXBl ZGVmIHN0cnVjdCBFeHByRXZhbFN0ZXAKIAkJCUpzb25Jc1ByZWRpY2F0ZSAqcHJlZDsJLyogb3Jp Z2luYWwgZXhwcmVzc2lvbiBub2RlICovCiAJCX0JCQlpc19qc29uOwogCisJCS8qIGZvciBFRU9Q X0pTT05FWFBSX1BBVEggKi8KKwkJc3RydWN0CisJCXsKKwkJCXN0cnVjdCBKc29uRXhwclN0YXRl ICpqc2VzdGF0ZTsKKwkJfQkJCWpzb25leHByOworCisJCS8qIGZvciBFRU9QX0pTT05FWFBSX0NP RVJDSU9OICovCisJCXN0cnVjdAorCQl7CisJCQlKc29uQ29lcmNpb24gICAqY29lcmNpb247CisJ CQlGbWdySW5mbwkgICAqaW5wdXRfZmluZm87CisJCQlPaWQJCQkJdHlwaW9wYXJhbTsKKwkJCXZv aWQJCSAgICpqc29uX3BvcHVsYXRlX3R5cGVfY2FjaGU7CisJCQlFcnJvclNhdmVDb250ZXh0ICpl c2NvbnRleHQ7CisJCX0JCQlqc29uZXhwcl9jb2VyY2lvbjsKIAl9CQkJZDsKIH0gRXhwckV2YWxT dGVwOwogCkBAIC03NTUsNyArNzczLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgSnNvbkNvbnN0cnVjdG9y RXhwclN0YXRlCiAJaW50CQkJbmFyZ3M7CiB9IEpzb25Db25zdHJ1Y3RvckV4cHJTdGF0ZTsKIAot CiAvKiBmdW5jdGlvbnMgaW4gZXhlY0V4cHIuYyAqLwogZXh0ZXJuIHZvaWQgRXhwckV2YWxQdXNo U3RlcChFeHByU3RhdGUgKmVzLCBjb25zdCBFeHByRXZhbFN0ZXAgKnMpOwogCkBAIC04MDksNiAr ODI2LDExIEBAIGV4dGVybiB2b2lkIEV4ZWNFdmFsWG1sRXhwcihFeHByU3RhdGUgKnN0YXRlLCBF eHByRXZhbFN0ZXAgKm9wKTsKIGV4dGVybiB2b2lkIEV4ZWNFdmFsSnNvbkNvbnN0cnVjdG9yKEV4 cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsCiAJCQkJCQkJCQlFeHByQ29udGV4dCAq ZWNvbnRleHQpOwogZXh0ZXJuIHZvaWQgRXhlY0V2YWxKc29uSXNQcmVkaWNhdGUoRXhwclN0YXRl ICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCk7CitleHRlcm4gdm9pZAlFeGVjRXZhbEpzb25Db2Vy Y2lvbihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLAorCQkJCQkJCQkgRXhwckNv bnRleHQgKmVjb250ZXh0KTsKK2V4dGVybiB2b2lkCUV4ZWNFdmFsSnNvbkNvZXJjaW9uRmluaXNo KEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3ApOworZXh0ZXJuIGludCBFeGVjRXZh bEpzb25FeHByUGF0aChFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLAorCQkJCQkJ CQlFeHByQ29udGV4dCAqZWNvbnRleHQpOwogZXh0ZXJuIHZvaWQgRXhlY0V2YWxHcm91cGluZ0Z1 bmMoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCk7CiBleHRlcm4gdm9pZCBFeGVj RXZhbFN1YlBsYW4oRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwKIAkJCQkJCQlF eHByQ29udGV4dCAqZWNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCA0NDRhNWYwZmQ1 Li4yZThkZjIzMDFmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAor KysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtMTAwOCw2ICsxMDA4LDkyIEBA IHR5cGVkZWYgc3RydWN0IERvbWFpbkNvbnN0cmFpbnRTdGF0ZQogCUV4cHJTdGF0ZSAgKmNoZWNr X2V4cHJzdGF0ZTsJLyogY2hlY2tfZXhwcidzIGV2YWwgc3RhdGUsIG9yIE5VTEwgKi8KIH0gRG9t YWluQ29uc3RyYWludFN0YXRlOwogCisvKgorICogSW5mb3JtYXRpb24gYWJvdXQgdGhlIHN0YXRl IG9mIEpzb25QYXRoKiBldmFsdWF0aW9uLgorICovCit0eXBlZGVmIHN0cnVjdCBKc29uRXhwclBv c3RFdmFsU3RhdGUKK3sKKwkvKiBEaWQgSnNvblBhdGgqIGV2YWx1YXRpb24gY2F1c2UgYW4gZXJy b3I/ICovCisJTnVsbGFibGVEYXR1bQllcnJvcjsKKworCS8qIElzIHRoZSByZXN1bHQgb2YgSnNv blBhdGgqIGV2YWx1YXRpb24gZW1wdHk/ICovCisJTnVsbGFibGVEYXR1bQllbXB0eTsKKworCS8q CisJICogRXhlY0V2YWxKc29uRXhwclBhdGgoKSB3aWxsIHNldCB0aGlzIHRvIHRoZSBhZGRyZXNz IG9mIHRoZSBzdGVwIHRvCisJICogdXNlIHRvIGNvZXJjZSB0aGUgcmVzdWx0IG9mIEpzb25QYXRo KiBldmFsdWF0aW9uIHRvIHRoZSBSRVRVUk5JTkcgdHlwZS4KKwkgKiBBbHNvIHNlZSB0aGUgZGVz Y3JpcHRpb24gb2YgcG9zc2libGUgc3RlcCBhZGRyZXNzZXMgdGhhdCB0aGlzIGNvdWxkIGJlCisJ ICogc2V0IHRvIGluIHRoZSBkZWZpbml0aW9uIG9mIEpzb25FeHByU3RhdGUuCisJICovCisJaW50 CQkJanVtcF9ldmFsX2NvZXJjaW9uOworfSBKc29uRXhwclBvc3RFdmFsU3RhdGU7CisKKy8qIFN0 YXRlIGZvciBldmFsdWF0aW5nIGEgSnNvbkV4cHIsIHRvbyBiaWcgdG8gaW5saW5lICovCit0eXBl ZGVmIHN0cnVjdCBKc29uRXhwclN0YXRlCit7CisJLyogb3JpZ2luYWwgZXhwcmVzc2lvbiBub2Rl ICovCisJSnNvbkV4cHIgICAqanNleHByOworCisJLyogdmFsdWUvaXNudWxsIGZvciBmb3JtYXR0 ZWRfZXhwciAqLworCU51bGxhYmxlRGF0dW0gZm9ybWF0dGVkX2V4cHI7CisKKwkvKiB2YWx1ZS9p c251bGwgZm9yIHBhdGhzcGVjICovCisJTnVsbGFibGVEYXR1bSBwYXRoc3BlYzsKKworCS8qIEpz b25QYXRoVmFyaWFibGUgZW50cmllcyBmb3IgcGFzc2luZ192YWx1ZXMgKi8KKwlMaXN0CSAgICph cmdzOworCisJLyoKKwkgKiBQZXItcm93IHJlc3VsdCBzdGF0dXMgaW5mbyBwb3B1bGF0ZWQgYnkg RXhlY0V2YWxKc29uRXhwclBhdGgoKQorCSAqIGFuZCBFeGVjRXZhbEpzb25Db2VyY2lvbkZpbmlz aCgpLgorCSAqLworCUpzb25FeHByUG9zdEV2YWxTdGF0ZSBwb3N0X2V2YWw7CisKKwkvKgorCSAq IEFkZHJlc3NlcyBvZiB0aGUgc3RlcHMgdGhhdCBpbXBsZW1lbnRzIHRoZSBub24tRVJST1IgdmFy aWFudCBvZiBPTiBFTVBUWQorCSAqIGFuZCBPTiBFUlJPUiBiZWhhdmlvcnMsIHJlc3BlY3RpdmVs eS4KKwkgKi8KKwlpbnQJCQlqdW1wX2VtcHR5OworCWludAkJCWp1bXBfZXJyb3I7CisKKwkvKgor CSAqIEFkZHJlc3NlcyBvZiBzdGVwcyB0byBwZXJmb3JtIHRoZSBjb2VyY2lvbiBvZiB0aGUgSnNv blBhdGgqIHJlc3VsdCB2YWx1ZQorCSAqIHRvIHRoZSBSRVRVUk5JTkcgdHlwZS4gIEVhY2ggYWRk cmVzcyBwb2ludHMgdG8gZWl0aGVyIDEpIGEgc3BlY2lhbAorCSAqIEVFT1BfSlNPTkVYUFJfQ09F UkNJT04gc3RlcCB0aGF0IGhhbmRsZXMgY29lcmNpb24gdXNpbmcgdGhlIFJFVFVSTklORworCSAq IHR5cGUncyBpbnB1dCBmdW5jdGlvbiBvciBieSB1c2luZyBqc29uX3ZpYV9wb3B1bGF0ZSgpLCBv ciAyKSBhbgorCSAqIGV4cHJlc3Npb24gc3VjaCBhcyBDb2VyY2VWaWFJTy4gIEl0IG1heSBiZSAt MSBpZiBubyBjb2VyY2lvbiBpcworCSAqIG5lY2Vzc2FyeS4KKwkgKgorCSAqIGp1bXBfZXZhbF9y ZXN1bHRfY29lcmNpb24gcG9pbnRzIHRvIHRoZSBzdGVwIHRvIGV2YWx1YXRlIHRoZSBjb2VyY2lv bgorCSAqIGdpdmVuIGluIEpzb25FeHByLnJlc3VsdF9jb2VyY2lvbi4KKwkgKi8KKwlpbnQJCQlq dW1wX2V2YWxfcmVzdWx0X2NvZXJjaW9uOworCisJLyogSnVtcCB0byBlbmQgdG8gc2tpcCBhbGwg dGhlIHN0ZXBzIGFmdGVyIEVFT1BfSlNPTkVYUFJfUEFUSC4gKi8KKwlpbnQJCQlqdW1wX2VuZDsK KworCS8qIGV2YWxfaXRlbV9jb2VyY2lvbl9qdW1wcyBpcyBhbiBhcnJheSBvZiBudW1faXRlbV9j b2VyY2lvbnMgZWxlbWVudHMKKwkgKiBlYWNoIGNvbnRhaW5pbmcgYSBzdGVwIGFkZHJlc3MgdG8g ZXZhbHVhdGUgdGhlIGNvZXJjaW9uIGZyb20gYSB2YWx1ZSBvZgorCSAqIHRoZSBnaXZlbiBKc29u SXRlbVR5cGUgdG8gdGhlIFJFVFVSTklORyB0eXBlLCBvciAtMSBpZiBubyBjb2VyY2lvbiBpcwor CSAqIG5lY2Vzc2FyeS4gIGl0ZW1fY29lcmNpb25fdmlhX2V4cHIgaXMgYW4gYXJyYXkgb2YgYm9v bGVhbiBmbGFncyBvZiB0aGUKKwkgKiBzYW1lIGxlbmd0aCB0aGF0IGluZGljYXRlcyB3aGV0aGVy IGVhY2ggdmFsaWQgc3RlcCBhZGRyZXNzIGluIHRoZQorCSAqIGV2YWxfaXRlbV9jb2VyY2lvbl9q dW1wcyBhcnJheSBwb2ludHMgdG8gYW4gZXhwcmVzc2lvbiBvciBhCisJICogRUVPUF9KU09ORVhQ Ul9DT0VSQ0lPTiBzdGVwLiAgRXhlY0V2YWxKc29uRXhwclBhdGgoKSB3aWxsIGNhdXNlIGFuCisJ ICogZXJyb3IgaWYgaXQncyB0aGUgbGF0dGVyLCBiZWNhdXNlIHRoYXQgbW9kZSBvZiBjb2VyY2lv biBpcyBub3QKKwkgKiBzdXBwb3J0ZWQgZm9yIGFsbCBKc29uSXRlbVR5cGVzLgorCSAqLworCWlu dAkJCW51bV9pdGVtX2NvZXJjaW9uczsKKwlpbnQJCSAgICpldmFsX2l0ZW1fY29lcmNpb25fanVt cHM7CisJYm9vbAkgICAqaXRlbV9jb2VyY2lvbl92aWFfZXhwcjsKKworCS8qCisJICogRm9yIHBh c3Npbmcgd2hlbiBpbml0aWFsaXppbmcgYSBFRU9QX0lPQ09FUkNFX1NBRkUgc3RlcCBmb3IgYW55 CisJICogQ29lcmNlVmlhSU8gbm9kZXMgaW4gdGhlIGV4cHJlc3Npb24gdGhhdCBtdXN0IGJlIGV2 YWx1YXRlZCBpbiBhbgorCSAqIGVycm9yLXNhZmUgbWFubmVyLgorCSAqLworCUVycm9yU2F2ZUNv bnRleHQgZXNjb250ZXh0OworfSBKc29uRXhwclN0YXRlOworCiAKIC8qIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQkJ CSBFeGVjdXRvciBTdGF0ZSBUcmVlcwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvbWFr ZWZ1bmNzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaAppbmRleCAyZGM3OTY0OGQy Li5hOTZmZDYyZDdmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaAor KysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaApAQCAtMTEyLDYgKzExMiw4IEBAIGV4 dGVybiBKc29uRm9ybWF0ICptYWtlSnNvbkZvcm1hdChKc29uRm9ybWF0VHlwZSB0eXBlLCBKc29u RW5jb2RpbmcgZW5jb2RpbmcsCiAJCQkJCQkJCSAgaW50IGxvY2F0aW9uKTsKIGV4dGVybiBKc29u VmFsdWVFeHByICptYWtlSnNvblZhbHVlRXhwcihFeHByICpyYXdfZXhwciwgRXhwciAqZm9ybWF0 dGVkX2V4cHIsCiAJCQkJCQkJCQkJSnNvbkZvcm1hdCAqZm9ybWF0KTsKK2V4dGVybiBKc29uQmVo YXZpb3IgKm1ha2VKc29uQmVoYXZpb3IoSnNvbkJlaGF2aW9yVHlwZSB0eXBlLCBOb2RlICpleHBy LAorCQkJCSBKc29uQ29lcmNpb24gKmNvZXJjaW9uLCBpbnQgbG9jYXRpb24pOwogZXh0ZXJuIE5v ZGUgKm1ha2VKc29uS2V5VmFsdWUoTm9kZSAqa2V5LCBOb2RlICp2YWx1ZSk7CiBleHRlcm4gTm9k ZSAqbWFrZUpzb25Jc1ByZWRpY2F0ZShOb2RlICpleHByLCBKc29uRm9ybWF0ICpmb3JtYXQsCiAJ CQkJCQkJCSBKc29uVmFsdWVUeXBlIGl0ZW1fdHlwZSwgYm9vbCB1bmlxdWVfa2V5cywKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVz L3BhcnNlbm9kZXMuaAppbmRleCBiMzE4MWYzNGFlLi4wMTg0Yzc2Y2U2IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFy c2Vub2Rlcy5oCkBAIC0xNjkyLDYgKzE2OTIsMjMgQEAgdHlwZWRlZiBzdHJ1Y3QgVHJpZ2dlclRy YW5zaXRpb24KIAogLyogTm9kZXMgZm9yIFNRTC9KU09OIHN1cHBvcnQgKi8KIAorLyoKKyAqIEpz b25RdW90ZXMgLQorICoJCXJlcHJlc2VudGF0aW9uIG9mIFtLRUVQfE9NSVRdIFFVT1RFUyBjbGF1 c2UgZm9yIEpTT05fUVVFUlkoKQorICovCit0eXBlZGVmIGVudW0gSnNvblF1b3RlcworeworCUpT X1FVT1RFU19VTlNQRUMsCQkJLyogdW5zcGVjaWZpZWQgKi8KKwlKU19RVU9URVNfS0VFUCwJCQkJ LyogS0VFUCBRVU9URVMgKi8KKwlKU19RVU9URVNfT01JVCwJCQkJLyogT01JVCBRVU9URVMgKi8K K30gSnNvblF1b3RlczsKKworLyoKKyAqIEpzb25QYXRoU3BlYyAtCisgKgkJcmVwcmVzZW50YXRp b24gb2YgSlNPTiBwYXRoIGNvbnN0YW50CisgKi8KK3R5cGVkZWYgY2hhciAqSnNvblBhdGhTcGVj OworCiAvKgogICogSnNvbk91dHB1dCAtCiAgKgkJcmVwcmVzZW50YXRpb24gb2YgSlNPTiBvdXRw dXQgY2xhdXNlIChSRVRVUk5JTkcgdHlwZSBbRk9STUFUIGZvcm1hdF0pCkBAIC0xNzAzLDYgKzE3 MjAsMzYgQEAgdHlwZWRlZiBzdHJ1Y3QgSnNvbk91dHB1dAogCUpzb25SZXR1cm5pbmcgKnJldHVy bmluZzsJLyogUkVUVVJOSU5HIEZPUk1BVCBjbGF1c2UgYW5kIHR5cGUgT2lkcyAqLwogfSBKc29u T3V0cHV0OwogCisvKgorICogSnNvbkFyZ3VtZW50IC0KKyAqCQlyZXByZXNlbnRhdGlvbiBvZiBh cmd1bWVudCBmcm9tIEpTT04gUEFTU0lORyBjbGF1c2UKKyAqLwordHlwZWRlZiBzdHJ1Y3QgSnNv bkFyZ3VtZW50Cit7CisJTm9kZVRhZwkJdHlwZTsKKwlKc29uVmFsdWVFeHByICp2YWw7CQkJLyog YXJndW1lbnQgdmFsdWUgZXhwcmVzc2lvbiAqLworCWNoYXIJICAgKm5hbWU7CQkJLyogYXJndW1l bnQgbmFtZSAqLworfSBKc29uQXJndW1lbnQ7CisKKy8qCisgKiBKc29uRnVuY0V4cHIgLQorICoJ CXVudHJhbnNmb3JtZWQgcmVwcmVzZW50YXRpb24gb2YgSlNPTiBmdW5jdGlvbiBleHByZXNzaW9u cworICovCit0eXBlZGVmIHN0cnVjdCBKc29uRnVuY0V4cHIKK3sKKwlOb2RlVGFnCQl0eXBlOwor CUpzb25FeHByT3AJb3A7CQkJCS8qIGV4cHJlc3Npb24gdHlwZSAqLworCUpzb25WYWx1ZUV4cHIg KmNvbnRleHRfaXRlbTsJLyogY29udGV4dCBpdGVtIGV4cHJlc3Npb24gKi8KKwlOb2RlCSAgICpw YXRoc3BlYzsJCS8qIEpTT04gcGF0aCBzcGVjaWZpY2F0aW9uIGV4cHJlc3Npb24gKi8KKwlMaXN0 CSAgICpwYXNzaW5nOwkJLyogbGlzdCBvZiBQQVNTSU5HIGNsYXVzZSBhcmd1bWVudHMsIGlmIGFu eSAqLworCUpzb25PdXRwdXQgKm91dHB1dDsJCQkvKiBvdXRwdXQgY2xhdXNlLCBpZiBzcGVjaWZp ZWQgKi8KKwlKc29uQmVoYXZpb3IgKm9uX2VtcHR5OwkJLyogT04gRU1QVFkgYmVoYXZpb3IgKi8K KwlKc29uQmVoYXZpb3IgKm9uX2Vycm9yOwkJLyogT04gRVJST1IgYmVoYXZpb3IgKi8KKwlKc29u V3JhcHBlciB3cmFwcGVyOwkJLyogYXJyYXkgd3JhcHBlciBiZWhhdmlvciAoSlNPTl9RVUVSWSBv bmx5KSAqLworCUpzb25RdW90ZXMJcXVvdGVzOwkJCS8qIG9taXQgb3Iga2VlcCBxdW90ZXM/IChK U09OX1FVRVJZIG9ubHkpICovCisJaW50CQkJbG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiwg b3IgLTEgaWYgdW5rbm93biAqLworfSBKc29uRnVuY0V4cHI7CisKIC8qCiAgKiBKc29uS2V5VmFs dWUgLQogICoJCXVudHJhbnNmb3JtZWQgcmVwcmVzZW50YXRpb24gb2YgSlNPTiBvYmplY3Qga2V5 LXZhbHVlIHBhaXIgZm9yCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMu aCBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCmluZGV4IDYxMjg5ZDgxMjQuLmZlOWRm YmIwMmEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCisrKyBiL3Ny Yy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCkBAIC0xNTUyLDYgKzE1NTIsMTcgQEAgdHlwZWRl ZiBzdHJ1Y3QgWG1sRXhwcgogCWludAkJCWxvY2F0aW9uOwogfSBYbWxFeHByOwogCisvKgorICog SnNvbkV4cHJPcCAtCisgKgkJZW51bWVyYXRpb24gb2YgSlNPTiBmdW5jdGlvbnMgdXNpbmcgSlNP TiBwYXRoCisgKi8KK3R5cGVkZWYgZW51bSBKc29uRXhwck9wCit7CisJSlNPTl9WQUxVRV9PUCwJ CQkJLyogSlNPTl9WQUxVRSgpICovCisJSlNPTl9RVUVSWV9PUCwJCQkJLyogSlNPTl9RVUVSWSgp ICovCisJSlNPTl9FWElTVFNfT1AsCQkJCS8qIEpTT05fRVhJU1RTKCkgKi8KK30gSnNvbkV4cHJP cDsKKwogLyoKICAqIEpzb25FbmNvZGluZyAtCiAgKgkJcmVwcmVzZW50YXRpb24gb2YgSlNPTiBF TkNPRElORyBjbGF1c2UKQEAgLTE1ODIsMTEgKzE1OTMsMzIgQEAgdHlwZWRlZiBlbnVtIEpzb25G b3JtYXRUeXBlCiAgKi8KIHR5cGVkZWYgZW51bSBKc29uV3JhcHBlcgogeworCUpTV19VTlNQRUMs CiAJSlNXX05PTkUsCiAJSlNXX0NPTkRJVElPTkFMLAogCUpTV19VTkNPTkRJVElPTkFMLAogfSBK c29uV3JhcHBlcjsKIAorLyoKKyAqIEpzb25CZWhhdmlvclR5cGUgLQorICoJCWVudW1lcmF0aW9u IG9mIGJlaGF2aW9yIHR5cGVzIHVzZWQgaW4gSlNPTiBPTiAuLi4gQkVIQVZJT1IgY2xhdXNlCisg KgorICogCQlJZiBlbnVtIG1lbWJlcnMgYXJlIHJlb3JkZXJlZCwgZ2V0X2pzb25fYmVoYXZpb3Io KSBmcm9tIHJ1bGV1dGlscy5jCisgKiAJCW11c3QgYmUgdXBkYXRlZCBhY2NvcmRpbmdseS4KKyAq LwordHlwZWRlZiBlbnVtIEpzb25CZWhhdmlvclR5cGUKK3sKKwlKU09OX0JFSEFWSU9SX05VTEwg PSAwLAorCUpTT05fQkVIQVZJT1JfRVJST1IsCisJSlNPTl9CRUhBVklPUl9FTVBUWSwKKwlKU09O X0JFSEFWSU9SX1RSVUUsCisJSlNPTl9CRUhBVklPUl9GQUxTRSwKKwlKU09OX0JFSEFWSU9SX1VO S05PV04sCisJSlNPTl9CRUhBVklPUl9FTVBUWV9BUlJBWSwKKwlKU09OX0JFSEFWSU9SX0VNUFRZ X09CSkVDVCwKKwlKU09OX0JFSEFWSU9SX0RFRkFVTFQsCit9IEpzb25CZWhhdmlvclR5cGU7CisK IC8qCiAgKiBKc29uRm9ybWF0IC0KICAqCQlyZXByZXNlbnRhdGlvbiBvZiBKU09OIEZPUk1BVCBj bGF1c2UKQEAgLTE2ODEsNiArMTcxMywxMzggQEAgdHlwZWRlZiBzdHJ1Y3QgSnNvbklzUHJlZGlj YXRlCiAJaW50CQkJbG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93 biAqLwogfSBKc29uSXNQcmVkaWNhdGU7CiAKKy8qCisgKiBKc29uQ29lcmNpb24KKyAqCQlJbmZv cm1hdGlvbiBhYm91dCBjb2VyY2luZyBhIFNRTC9KU09OIHZhbHVlIHRvIHRoZSBzcGVjaWZpZWQK KyAqCQl0eXBlIGF0IHJ1bnRpbWUgdXNpbmcganNvbl9wb3B1bGF0ZV90eXBlKCkgb3IgYnkgY2Fs bGluZyB0aGUgdHlwZSdzCisgKgkJaW5wdXQgZnVudGlvbi4KKyAqCisgKiBBIG5vZGUgb2YgdGhp cyB0eXBlIGlzIGNyZWF0ZWQgaWYgdGhlIHBhcnNlciBjYW5ub3QgZmluZCBhIGNhc3QgZXhwcmVz c2lvbgorICogdXNpbmcgY29lcmNlX3R5cGUoKS4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgSnNvbkNv ZXJjaW9uCit7CisJTm9kZVRhZwkJdHlwZTsKKworCU9pZAkJCXRhcmdldHR5cGU7CisJaW50MzIJ CXRhcmdldHR5cG1vZDsKKwlib29sCQlvbWl0X3F1b3RlczsJLyogb21pdCBxdW90ZXMgZnJvbSBz Y2FsYXIgb3V0cHV0IHN0cmluZ3M/ICovCisJT2lkCQkJY29sbGF0aW9uOwkJLyogY29sbGF0aW9u IGZvciBjb2VyY2lvbiB2aWEgSS9PIG9yIHBvcHVsYXRlICovCit9IEpzb25Db2VyY2lvbjsKKwor LyoKKyAqIEpzb25JdGVtVHlwZQorICoJCVBvc3NpYmxlIHR5cGVzIGZvciBzY2FsYXIgdmFsdWVz IHJldHVybmVkIGJ5IEpTT05fVkFMVUUoKQorICoKKyAqIFRoZSBjb21tZW50IG5leHQgdG8gZWFj aCBpdGVtIHR5cGUgbWVudGlvbnMgdGhlIGNvcnJlc3BvbmRpbmcKKyAqIEpzb25iVmFsdWUuamJ2 VHlwZS4KKyAqLwordHlwZWRlZiBlbnVtIEpzb25JdGVtVHlwZQoreworCUpzb25JdGVtVHlwZU51 bGwsCQkvKiBqYnZOdWxsICovCisJSnNvbkl0ZW1UeXBlU3RyaW5nLAkJLyogamJ2U3RyaW5nICov CisJSnNvbkl0ZW1UeXBlTnVtZXJpYywJLyogamJ2TnVtZXJpYyAqLworCUpzb25JdGVtVHlwZUJv b2xlYW4sCS8qIGpidkJvb2wgKi8KKwlKc29uSXRlbVR5cGVEYXRlLAkJLyogamJ2RGF0ZXRpbWU6 IERBVEVPSUQgKi8KKwlKc29uSXRlbVR5cGVUaW1lLAkJLyogamJ2RGF0ZXRpbWU6IFRJTUVPSUQg Ki8KKwlKc29uSXRlbVR5cGVUaW1ldHosCQkvKiBqYnZEYXRldGltZTogVElNRVRaT0lEICovCisJ SnNvbkl0ZW1UeXBlVGltZXN0YW1wLAkvKiBqYnZEYXRldGltZTogVElNRVNUQU1QT0lEICovCisJ SnNvbkl0ZW1UeXBlVGltZXN0YW1wdHosLyogamJ2RGF0ZXRpbWU6IFRJTUVTVEFNUFRaT0lEICov CisJSnNvbkl0ZW1UeXBlQ29tcG9zaXRlLAkvKiBqYnZBcnJheSwgamJ2T2JqZWN0LCBqYnZCaW5h cnkgKi8KKwlKc29uSXRlbVR5cGVJbnZhbGlkLAorfSBKc29uSXRlbVR5cGU7CisKKy8qCisgKiBK c29uSXRlbUNvZXJjaW9uCisgKgkJQ29lcmNpb24gZXhwcmVzc2lvbiBmb3IgdGhlIGdpdmVuIEpz b25JdGVtVHlwZQorICoKKyAqIElmIG5vdCBOVUxMLCAnY29lcmNpb24nIGdpdmVuIHRoZSBleHBy ZXNzaW9uIG5vZGUgdG8gY29udmVydCBhIHNjYWxhciB2YWx1ZQorICogZXh0cmFjdGVkIGZyb20g YSBKc29uYlZhbHVlIG9mIHRoZSBnaXZlbiB0eXBlIHRvIHRoZSB0YXJnZXQgdHlwZSBnaXZlbiBi eQorICogSnNvbkV4cHIucmV0dXJuaW5nLiAgTlVMTCBtZWFucyB0aGUgY29lcmNpb24gaXMgdW5u ZWNlc3NhcnkuCisgKi8KK3R5cGVkZWYgc3RydWN0IEpzb25JdGVtQ29lcmNpb24KK3sKKwlOb2Rl VGFnCQl0eXBlOworCisJSnNvbkl0ZW1UeXBlIGl0ZW1fdHlwZTsKKwlOb2RlCSAgICpjb2VyY2lv bjsKK30gSnNvbkl0ZW1Db2VyY2lvbjsKKworLyoKKyAqIEpzb25CZWhhdmlvcgorICoJCUluZm9y bWF0aW9uIGFib3V0IE9OIEVSUk9SIC8gT04gRU1QVFkgYmVoYXZpb3JzIG9mIEpTT05fVkFMVUUo KSwKKyAqCQlKU09OX1FVRVJZKCksIGFuZCBKU09OX0VYSVNUUygpCisgKgorICogJ2V4cHInIGlz IHRoZSBleHByZXNzaW9uIHRvIGVtaXQgd2hlbiBhIGdpdmVuIGJlaGF2aW9yIChFTVBUWSBvciBF UlJPUikKKyAqIG9jY3VycyBvbiBldmFsdWF0aW5nIHRoZSBTUUwvSlNPTiBxdWVyeSBmdW5jdGlv bi4gICdjb2VyY2lvbicgaXMgc2V0CisgKiBpZiAnZXhwcicgaXNuJ3QgYWxyZWFkeSBvZiB0aGUg ZXhwZWN0ZWQgdGFyZ2V0IHR5cGUgZ2l2ZW4gYnkKKyAqIEpzb25FeHByLnJldHVybmluZy4KKyAq LwordHlwZWRlZiBzdHJ1Y3QgSnNvbkJlaGF2aW9yCit7CisJTm9kZVRhZwkJdHlwZTsKKworCUpz b25CZWhhdmlvclR5cGUgYnR5cGU7CisJTm9kZQkgICAqZXhwcjsKKwlKc29uQ29lcmNpb24gKmNv ZXJjaW9uOwkJLyogdG8gY29lcmNlIGJlaGF2aW9yIGV4cHJlc3Npb24gd2hlbiB0aGVyZSBpcwor CQkJCQkJCQkgKiBubyBjYXN0IHRvIHRoZSB0YXJnZXQgdHlwZSAqLworCWludAkJCWxvY2F0aW9u OwkJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KK30gSnNvbkJlaGF2aW9y OworCisvKgorICogSnNvbkV4cHIgLQorICoJCVRyYW5zZm9ybWVkIHJlcHJlc2VudGF0aW9uIG9m IEpTT05fVkFMVUUoKSwgSlNPTl9RVUVSWSgpLCBhbmQKKyAqCQlKU09OX0VYSVNUUygpCisgKi8K K3R5cGVkZWYgc3RydWN0IEpzb25FeHByCit7CisJRXhwcgkJeHByOworCisJLyogSlNPTl8qIGZ1 bmN0aW9uIGlkZW50aWZpZXIgKi8KKwlKc29uRXhwck9wCW9wOworCisJLyoganNvbihiKS12YWx1 ZWQgZXhwcmVzc2lvbiB0byBxdWVyeSAqLworCU5vZGUJICAgKmZvcm1hdHRlZF9leHByOworCisJ LyogRm9ybWF0IG9mIHRoZSBhYm92ZSBleHByZXNzaW9uIG5lZWRlZCBieSBydWxldXRpbHMuYyAq LworCUpzb25Gb3JtYXQgKmZvcm1hdDsKKworCS8qIGpzb3BhdGgtdmFsdWVkIGV4cHJlc3Npb24g Y29udGFpbmluZyB0aGUgcXVlcnkgcGF0dGVybiAqLworCU5vZGUJICAgKnBhdGhfc3BlYzsKKwor CS8qIEV4cGVjdGVkIHR5cGUvZm9ybWF0IG9mIHRoZSBvdXRwdXQuICovCisJSnNvblJldHVybmlu ZyAqcmV0dXJuaW5nOworCisJLyogSW5mb3JtYXRpb24gYWJvdXQgdGhlIFBBU1NJTkcgYXJndW1l bnQgZXhwcmVzc2lvbnMgKi8KKwlMaXN0CSAgICpwYXNzaW5nX25hbWVzOworCUxpc3QJICAgKnBh c3NpbmdfdmFsdWVzOworCisJLyogVXNlLXNwZWNpZmllZCBvciBkZWZhdWx0IE9OIEVNUFRZIGFu ZCBPTiBFUlJPUiBiZWhhdmlvcnMgKi8KKwlKc29uQmVoYXZpb3IgKm9uX2VtcHR5OworCUpzb25C ZWhhdmlvciAqb25fZXJyb3I7CisKKwkvKgorCSAqIEV4cHJlc3Npb24gdG8gY29udmVydCB0aGUg cmVzdWx0IG9mIEpTT05fKiBmdW5jdGlvbiB0byB0aGUKKwkgKiBSRVRVUk5JTkcgdHlwZQorCSAq LworCU5vZGUJICAgKnJlc3VsdF9jb2VyY2lvbjsKKworCS8qCisJICogTGlzdCBvZiBleHByZXNz aW9ucyBmb3IgY29lcmNpbmcgSlNPTl9WQUxVRSgpIHJlc3VsdCB2YWx1ZXMsIGNvbnRhaW5pbmcK KwkgKiBvbmUgZWxlbWVudCBmb3IgZXZlcnkgSnNvbkl0ZW1UeXBlLgorCSAqLworCUxpc3QJICAg Kml0ZW1fY29lcmNpb25zOworCisJLyogV1JBUFBFUiBzcGVjaWZpY2F0aW9uIGZvciBKU09OX1FV RVJZICovCisJSnNvbldyYXBwZXIgd3JhcHBlcjsKKworCS8qIEtFRVAgb3IgT01JVCBRVU9URVMg Zm9yIHNpbmdsZXRvbiBzY2FsYXJzIHJldHVybmVkIGJ5IEpTT05fUVVFUlkoKSAqLworCWJvb2wJ CW9taXRfcXVvdGVzOworCisJLyogT3JpZ2luYWwgSnNvbkZ1bmNFeHByJ3MgbG9jYXRpb24gKi8K KwlpbnQJCQlsb2NhdGlvbjsKK30gSnNvbkV4cHI7CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0KICAq IE51bGxUZXN0CiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oIGIv c3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCmluZGV4IDIzMzFhY2FjMDkuLjk0ZTFjYjRkY2Ug MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAorKysgYi9zcmMvaW5jbHVk ZS9wYXJzZXIva3dsaXN0LmgKQEAgLTkzLDYgKzkzLDcgQEAgUEdfS0VZV09SRCgiY29tbWl0Iiwg Q09NTUlULCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJjb21t aXR0ZWQiLCBDT01NSVRURUQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tF WVdPUkQoImNvbXByZXNzaW9uIiwgQ09NUFJFU1NJT04sIFVOUkVTRVJWRURfS0VZV09SRCwgQkFS RV9MQUJFTCkKIFBHX0tFWVdPUkQoImNvbmN1cnJlbnRseSIsIENPTkNVUlJFTlRMWSwgVFlQRV9G VU5DX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoImNvbmRpdGlvbmFsIiwg Q09ORElUSU9OQUwsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQo ImNvbmZpZ3VyYXRpb24iLCBDT05GSUdVUkFUSU9OLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVf TEFCRUwpCiBQR19LRVlXT1JEKCJjb25mbGljdCIsIENPTkZMSUNULCBVTlJFU0VSVkVEX0tFWVdP UkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJjb25uZWN0aW9uIiwgQ09OTkVDVElPTiwgVU5S RVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQpAQCAtMTQ3LDExICsxNDgsMTMgQEAgUEdfS0VZ V09SRCgiZG91YmxlIiwgRE9VQkxFX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkK IFBHX0tFWVdPUkQoImRyb3AiLCBEUk9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwp CiBQR19LRVlXT1JEKCJlYWNoIiwgRUFDSCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVM KQogUEdfS0VZV09SRCgiZWxzZSIsIEVMU0UsIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwp CitQR19LRVlXT1JEKCJlbXB0eSIsIEVNUFRZX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9M QUJFTCkKIFBHX0tFWVdPUkQoImVuYWJsZSIsIEVOQUJMRV9QLCBVTlJFU0VSVkVEX0tFWVdPUkQs IEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJlbmNvZGluZyIsIEVOQ09ESU5HLCBVTlJFU0VSVkVE X0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJlbmNyeXB0ZWQiLCBFTkNSWVBURUQs IFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImVuZCIsIEVORF9Q LCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiZW51bSIsIEVOVU1f UCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgiZXJyb3IiLCBF UlJPUl9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJlc2Nh cGUiLCBFU0NBUEUsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQo ImV2ZW50IiwgRVZFTlQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdP UkQoImV4Y2VwdCIsIEVYQ0VQVCwgUkVTRVJWRURfS0VZV09SRCwgQVNfTEFCRUwpCkBAIC0yMzMs MTAgKzIzNiwxNCBAQCBQR19LRVlXT1JEKCJqb2luIiwgSk9JTiwgVFlQRV9GVU5DX05BTUVfS0VZ V09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImpzb24iLCBKU09OLCBDT0xfTkFNRV9LRVlX T1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgianNvbl9hcnJheSIsIEpTT05fQVJSQVksIENP TF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJqc29uX2FycmF5YWdnIiwg SlNPTl9BUlJBWUFHRywgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQo Impzb25fZXhpc3RzIiwgSlNPTl9FWElTVFMsIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwp CiBQR19LRVlXT1JEKCJqc29uX29iamVjdCIsIEpTT05fT0JKRUNULCBDT0xfTkFNRV9LRVlXT1JE LCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgianNvbl9vYmplY3RhZ2ciLCBKU09OX09CSkVDVEFH RywgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoImpzb25fcXVlcnki LCBKU09OX1FVRVJZLCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgi anNvbl9zY2FsYXIiLCBKU09OX1NDQUxBUiwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkK IFBHX0tFWVdPUkQoImpzb25fc2VyaWFsaXplIiwgSlNPTl9TRVJJQUxJWkUsIENPTF9OQU1FX0tF WVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJqc29uX3ZhbHVlIiwgSlNPTl9WQUxVRSwg Q09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoImtlZXAiLCBLRUVQLCBV TlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJrZXkiLCBLRVksIFVO UkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImtleXMiLCBLRVlTLCBV TlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJsYWJlbCIsIExBQkVM LCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCkBAIC0zMDIsNiArMzA5LDcgQEAgUEdf S0VZV09SRCgib2ZmIiwgT0ZGLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19L RVlXT1JEKCJvZmZzZXQiLCBPRkZTRVQsIFJFU0VSVkVEX0tFWVdPUkQsIEFTX0xBQkVMKQogUEdf S0VZV09SRCgib2lkcyIsIE9JRFMsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBH X0tFWVdPUkQoIm9sZCIsIE9MRCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdf S0VZV09SRCgib21pdCIsIE9NSVQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBH X0tFWVdPUkQoIm9uIiwgT04sIFJFU0VSVkVEX0tFWVdPUkQsIEFTX0xBQkVMKQogUEdfS0VZV09S RCgib25seSIsIE9OTFksIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JE KCJvcGVyYXRvciIsIE9QRVJBVE9SLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCkBA IC0zNDQsNiArMzUyLDcgQEAgUEdfS0VZV09SRCgicHJvY2VkdXJlcyIsIFBST0NFRFVSRVMsIFVO UkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInByb2dyYW0iLCBQUk9H UkFNLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwdWJsaWNh dGlvbiIsIFBVQkxJQ0FUSU9OLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19L RVlXT1JEKCJxdW90ZSIsIFFVT1RFLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQ R19LRVlXT1JEKCJxdW90ZXMiLCBRVU9URVMsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJF TCkKIFBHX0tFWVdPUkQoInJhbmdlIiwgUkFOR0UsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9M QUJFTCkKIFBHX0tFWVdPUkQoInJlYWQiLCBSRUFELCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVf TEFCRUwpCiBQR19LRVlXT1JEKCJyZWFsIiwgUkVBTCwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9M QUJFTCkKQEAgLTQxNCw2ICs0MjMsNyBAQCBQR19LRVlXT1JEKCJzdGRvdXQiLCBTVERPVVQsIFVO UkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInN0b3JhZ2UiLCBTVE9S QUdFLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJzdG9yZWQi LCBTVE9SRUQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInN0 cmljdCIsIFNUUklDVF9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlX T1JEKCJzdHJpbmciLCBTVFJJTkdfUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQog UEdfS0VZV09SRCgic3RyaXAiLCBTVFJJUF9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFC RUwpCiBQR19LRVlXT1JEKCJzdWJzY3JpcHRpb24iLCBTVUJTQ1JJUFRJT04sIFVOUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInN1YnN0cmluZyIsIFNVQlNUUklORywg Q09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKQEAgLTQ0OSw2ICs0NTksNyBAQCBQR19LRVlX T1JEKCJ0eXBlcyIsIFRZUEVTX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBH X0tFWVdPUkQoInVlc2NhcGUiLCBVRVNDQVBFLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFC RUwpCiBQR19LRVlXT1JEKCJ1bmJvdW5kZWQiLCBVTkJPVU5ERUQsIFVOUkVTRVJWRURfS0VZV09S RCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInVuY29tbWl0dGVkIiwgVU5DT01NSVRURUQsIFVO UkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoInVuY29uZGl0aW9uYWwi LCBVTkNPTkRJVElPTkFMLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlX T1JEKCJ1bmVuY3J5cHRlZCIsIFVORU5DUllQVEVELCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVf TEFCRUwpCiBQR19LRVlXT1JEKCJ1bmlvbiIsIFVOSU9OLCBSRVNFUlZFRF9LRVlXT1JELCBBU19M QUJFTCkKIFBHX0tFWVdPUkQoInVuaXF1ZSIsIFVOSVFVRSwgUkVTRVJWRURfS0VZV09SRCwgQkFS RV9MQUJFTCkKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy9lY3BnLnRy YWlsZXIgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3ByZXByb2MvZWNwZy50cmFpbGVyCmluZGV4IDQz NWMxMzllYzIuLmIyYWE0NGYzNmQgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvcHJl cHJvYy9lY3BnLnRyYWlsZXIKKysrIGIvc3JjL2ludGVyZmFjZXMvZWNwZy9wcmVwcm9jL2VjcGcu dHJhaWxlcgpAQCAtNjUxLDYgKzY1MSwzNCBAQCB2YXJfdHlwZToJc2ltcGxlX3R5cGUKIAkJCSQk LnR5cGVfaW5kZXggPSBtbV9zdHJkdXAoIi0xIik7CiAJCQkkJC50eXBlX3NpemVvZiA9IE5VTEw7 CiAJCX0KKwkJfCBTVFJJTkdfUAorCQl7CisJCQlpZiAoSU5GT1JNSVhfTU9ERSkKKwkJCXsKKwkJ CQkvKiBJbiBJbmZvcm1peCBtb2RlLCAic3RyaW5nIiBpcyBhdXRvbWF0aWNhbGx5IGEgdHlwZWRl ZiAqLworCQkJCSQkLnR5cGVfZW51bSA9IEVDUEd0X3N0cmluZzsKKwkJCQkkJC50eXBlX3N0ciA9 IG1tX3N0cmR1cCgiY2hhciIpOworCQkJCSQkLnR5cGVfZGltZW5zaW9uID0gbW1fc3RyZHVwKCIt MSIpOworCQkJCSQkLnR5cGVfaW5kZXggPSBtbV9zdHJkdXAoIi0xIik7CisJCQkJJCQudHlwZV9z aXplb2YgPSBOVUxMOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCS8qIE90aGVyd2lzZSwgbGVn YWwgb25seSBpZiB1c2VyIHR5cGVkZWYnZWQgaXQgKi8KKwkJCQlzdHJ1Y3QgdHlwZWRlZnMgKnRo aXMgPSBnZXRfdHlwZWRlZigic3RyaW5nIiwgZmFsc2UpOworCisJCQkJJCQudHlwZV9zdHIgPSAo dGhpcy0+dHlwZS0+dHlwZV9lbnVtID09IEVDUEd0X3ZhcmNoYXIgfHwgdGhpcy0+dHlwZS0+dHlw ZV9lbnVtID09IEVDUEd0X2J5dGVhKSA/IEVNUFRZIDogbW1fc3RyZHVwKHRoaXMtPm5hbWUpOwor CQkJCSQkLnR5cGVfZW51bSA9IHRoaXMtPnR5cGUtPnR5cGVfZW51bTsKKwkJCQkkJC50eXBlX2Rp bWVuc2lvbiA9IHRoaXMtPnR5cGUtPnR5cGVfZGltZW5zaW9uOworCQkJCSQkLnR5cGVfaW5kZXgg PSB0aGlzLT50eXBlLT50eXBlX2luZGV4OworCQkJCWlmICh0aGlzLT50eXBlLT50eXBlX3NpemVv ZiAmJiBzdHJsZW4odGhpcy0+dHlwZS0+dHlwZV9zaXplb2YpICE9IDApCisJCQkJCSQkLnR5cGVf c2l6ZW9mID0gdGhpcy0+dHlwZS0+dHlwZV9zaXplb2Y7CisJCQkJZWxzZQorCQkJCQkkJC50eXBl X3NpemVvZiA9IGNhdF9zdHIoMywgbW1fc3RyZHVwKCJzaXplb2YoIiksIG1tX3N0cmR1cCh0aGlz LT5uYW1lKSwgbW1fc3RyZHVwKCIpIikpOworCisJCQkJc3RydWN0X21lbWJlcl9saXN0W3N0cnVj dF9sZXZlbF0gPSBFQ1BHc3RydWN0X21lbWJlcl9kdXAodGhpcy0+c3RydWN0X21lbWJlcl9saXN0 KTsKKwkJCX0KKwkJfQogCQl8IElOVEVSVkFMIGVjcGdfaW50ZXJ2YWwKIAkJewogCQkJJCQudHlw ZV9lbnVtID0gRUNQR3RfaW50ZXJ2YWw7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2pzb25fc3FsanNvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25f c3FsanNvbi5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMDRkNWNj NzRlMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbl9z cWxqc29uLm91dApAQCAtMCwwICsxLDE4IEBACistLSBKU09OX0VYSVNUUworU0VMRUNUIEpTT05f RVhJU1RTKE5VTEwgRk9STUFUIEpTT04sICckJyk7CitFUlJPUjogIEpTT05fRVhJU1RTKCkgaXMg bm90IHlldCBpbXBsZW1lbnRlZCBmb3IgdGhlIGpzb24gdHlwZQorTElORSAxOiBTRUxFQ1QgSlNP Tl9FWElTVFMoTlVMTCBGT1JNQVQgSlNPTiwgJyQnKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIF4KK0hJTlQ6ICBUcnkgY2FzdGluZyB0aGUgYXJndW1lbnQgdG8ganNvbmIKKy0tIEpTT05f VkFMVUUKK1NFTEVDVCBKU09OX1ZBTFVFKE5VTEwgRk9STUFUIEpTT04sICckJyk7CitFUlJPUjog IEpTT05fVkFMVUUoKSBpcyBub3QgeWV0IGltcGxlbWVudGVkIGZvciB0aGUganNvbiB0eXBlCitM SU5FIDE6IFNFTEVDVCBKU09OX1ZBTFVFKE5VTEwgRk9STUFUIEpTT04sICckJyk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBUcnkgY2FzdGluZyB0aGUgYXJndW1lbnQgdG8g anNvbmIKKy0tIEpTT05fUVVFUlkKK1NFTEVDVCBKU09OX1FVRVJZKE5VTEwgRk9STUFUIEpTT04s ICckJyk7CitFUlJPUjogIEpTT05fUVVFUlkoKSBpcyBub3QgeWV0IGltcGxlbWVudGVkIGZvciB0 aGUganNvbiB0eXBlCitMSU5FIDE6IFNFTEVDVCBKU09OX1FVRVJZKE5VTEwgRk9STUFUIEpTT04s ICckJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBUcnkgY2FzdGluZyB0 aGUgYXJndW1lbnQgdG8ganNvbmIKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvanNvbmJfc3FsanNvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iX3Nx bGpzb24ub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjk0YzFiNDMw ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iX3Nx bGpzb24ub3V0CkBAIC0wLDAgKzEsMTA3MyBAQAorLS0gSlNPTl9FWElTVFMKK1NFTEVDVCBKU09O X0VYSVNUUyhOVUxMOjpqc29uYiwgJyQnKTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0K KyAKKygxIHJvdykKKworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICdbXScsICckJyk7CisganNv bl9leGlzdHMgCistLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9FWElT VFMoSlNPTl9PQkpFQ1QoUkVUVVJOSU5HIGpzb25iKSwgJyQnKTsKKyBqc29uX2V4aXN0cyAKKy0t LS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnMScs ICckJyk7CisganNvbl9leGlzdHMgCistLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxF Q1QgSlNPTl9FWElTVFMoanNvbmIgJ251bGwnLCAnJCcpOworIGpzb25fZXhpc3RzIAorLS0tLS0t LS0tLS0tLQorIHQKKygxIHJvdykKKworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICdbXScsICck Jyk7CisganNvbl9leGlzdHMgCistLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1Qg SlNPTl9FWElTVFMoanNvbmIgJzEnLCAnJC5hJyk7CisganNvbl9leGlzdHMgCistLS0tLS0tLS0t LS0tCisgZgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJzEnLCAnc3RyaWN0 ICQuYScpOyAtLSBGQUxTRSBvbiBlcnJvcgorIGpzb25fZXhpc3RzIAorLS0tLS0tLS0tLS0tLQor IGYKKygxIHJvdykKKworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICcxJywgJ3N0cmljdCAkLmEn IEVSUk9SIE9OIEVSUk9SKTsKK0VSUk9SOiAganNvbnBhdGggbWVtYmVyIGFjY2Vzc29yIGNhbiBv bmx5IGJlIGFwcGxpZWQgdG8gYW4gb2JqZWN0CitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ251 bGwnLCAnJC5hJyk7CisganNvbl9leGlzdHMgCistLS0tLS0tLS0tLS0tCisgZgorKDEgcm93KQor CitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ1tdJywgJyQuYScpOworIGpzb25fZXhpc3RzIAor LS0tLS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICdb MSwgImFhYSIsIHsiYSI6IDF9XScsICdzdHJpY3QgJC5hJyk7IC0tIEZBTFNFIG9uIGVycm9yCisg anNvbl9leGlzdHMgCistLS0tLS0tLS0tLS0tCisgZgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9F WElTVFMoanNvbmIgJ1sxLCAiYWFhIiwgeyJhIjogMX1dJywgJ2xheCAkLmEnKTsKKyBqc29uX2V4 aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhq c29uYiAne30nLCAnJC5hJyk7CisganNvbl9leGlzdHMgCistLS0tLS0tLS0tLS0tCisgZgorKDEg cm93KQorCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ3siYiI6IDEsICJhIjogMn0nLCAnJC5h Jyk7CisganNvbl9leGlzdHMgCistLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1Qg SlNPTl9FWElTVFMoanNvbmIgJzEnLCAnJC5hLmInKTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0t LS0tLS0KKyBmCisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAneyJhIjogeyJi IjogMX19JywgJyQuYS5iJyk7CisganNvbl9leGlzdHMgCistLS0tLS0tLS0tLS0tCisgdAorKDEg cm93KQorCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ3siYSI6IDEsICJiIjogMn0nLCAnJC5h LmInKTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKK1NFTEVD VCBKU09OX0VYSVNUUyhqc29uYiAneyJhIjogMSwgImIiOiAyfScsICckLiogPyAoQCA+ICR4KScg UEFTU0lORyAxIEFTIHgpOworIGpzb25fZXhpc3RzIAorLS0tLS0tLS0tLS0tLQorIHQKKygxIHJv dykKKworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICd7ImEiOiAxLCAiYiI6IDJ9JywgJyQuKiA/ IChAID4gJHgpJyBQQVNTSU5HICcxJyBBUyB4KTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0t LS0KKyBmCisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAneyJhIjogMSwgImIi OiAyfScsICckLiogPyAoQCA+ICR4ICYmIEAgPCAkeSknIFBBU1NJTkcgMCBBUyB4LCAyIEFTIHkp OworIGpzb25fZXhpc3RzIAorLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VMRUNUIEpT T05fRVhJU1RTKGpzb25iICd7ImEiOiAxLCAiYiI6IDJ9JywgJyQuKiA/IChAID4gJHggJiYgQCA8 ICR5KScgUEFTU0lORyAwIEFTIHgsIDEgQVMgeSk7CisganNvbl9leGlzdHMgCistLS0tLS0tLS0t LS0tCisgZgorKDEgcm93KQorCistLSBleHRlbnNpb246IGJvb2xlYW4gZXhwcmVzc2lvbnMKK1NF TEVDVCBKU09OX0VYSVNUUyhqc29uYiAnMScsICckID4gMicpOworIGpzb25fZXhpc3RzIAorLS0t LS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICcxJywg JyQuYSA+IDInIEVSUk9SIE9OIEVSUk9SKTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0K KyB0CisoMSByb3cpCisKKy0tIEpTT05fVkFMVUUKK1NFTEVDVCBKU09OX1ZBTFVFKE5VTEw6Ompz b25iLCAnJCcpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VM RUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJCcpOworIGpzb25fdmFsdWUgCistLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJCcg UkVUVVJOSU5HIGludCk7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAK KygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ3RydWUnLCAnJCcpOworIGpzb25f dmFsdWUgCistLS0tLS0tLS0tLS0KKyB0cnVlCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVF KGpzb25iICd0cnVlJywgJyQnIFJFVFVSTklORyBib29sKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0t LS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMTIzJywgJyQn KTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgMTIzCisoMSByb3cpCisKK1NFTEVDVCBK U09OX1ZBTFVFKGpzb25iICcxMjMnLCAnJCcgUkVUVVJOSU5HIGludCkgKyAyMzQ7CisgP2NvbHVt bj8gCistLS0tLS0tLS0tCisgICAgICAzNTcKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUo anNvbmIgJzEyMycsICckJyBSRVRVUk5JTkcgdGV4dCk7CisganNvbl92YWx1ZSAKKy0tLS0tLS0t LS0tLQorIDEyMworKDEgcm93KQorCisvKiBqc29uYiBieXRlYSA/Pz8gKi8KK1NFTEVDVCBKU09O X1ZBTFVFKGpzb25iICcxMjMnLCAnJCcgUkVUVVJOSU5HIGJ5dGVhIEVSUk9SIE9OIEVSUk9SKTsK K0VSUk9SOiAgU1FML0pTT04gaXRlbSBjYW5ub3QgYmUgY2FzdCB0byB0YXJnZXQgdHlwZQorU0VM RUNUIEpTT05fVkFMVUUoanNvbmIgJzEuMjMnLCAnJCcpOworIGpzb25fdmFsdWUgCistLS0tLS0t LS0tLS0KKyAxLjIzCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxLjIzJywg JyQnIFJFVFVSTklORyBpbnQpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAgICAgICAg ICAxCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciMS4yMyInLCAnJCcgUkVU VVJOSU5HIG51bWVyaWMpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAgICAgICAxLjIz CisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciMS4yMyInLCAnJCcgUkVUVVJO SU5HIGludCBFUlJPUiBPTiBFUlJPUik7CitFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZv ciB0eXBlIGludGVnZXI6ICIxLjIzIgorU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJhYWEiJywg JyQnKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgYWFhCisoMSByb3cpCisKK1NFTEVD VCBKU09OX1ZBTFVFKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcgdGV4dCk7CisganNvbl92 YWx1ZSAKKy0tLS0tLS0tLS0tLQorIGFhYQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShq c29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIGNoYXIoNSkpOworIGpzb25fdmFsdWUgCistLS0t LS0tLS0tLS0KKyBhYWEgIAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFh YSInLCAnJCcgUkVUVVJOSU5HIGNoYXIoMikpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0K KyBhYQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVU VVJOSU5HIGpzb24pOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAiYWFhIgorKDEgcm93 KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIGpzb25i KTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgImFhYSIKKygxIHJvdykKKworU0VMRUNU IEpTT05fVkFMVUUoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyBqc29uIEVSUk9SIE9OIEVS Uk9SKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgImFhYSIKKygxIHJvdykKKworU0VM RUNUIEpTT05fVkFMVUUoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyBqc29uYiBFUlJPUiBP TiBFUlJPUik7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorICJhYWEiCisoMSByb3cpCisK K1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciXCJhYWFcIiInLCAnJCcgUkVUVVJOSU5HIGpzb24p OworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAiXCJhYWFcIiIKKygxIHJvdykKKworU0VM RUNUIEpTT05fVkFMVUUoanNvbmIgJyJcImFhYVwiIicsICckJyBSRVRVUk5JTkcganNvbmIpOwor IGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAiXCJhYWFcIiIKKygxIHJvdykKKworU0VMRUNU IEpTT05fVkFMVUUoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyBpbnQpOworIGpzb25fdmFs dWUgCistLS0tLS0tLS0tLS0KKyAgICAgICAgICAgCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZB TFVFKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcgaW50IEVSUk9SIE9OIEVSUk9SKTsKK0VS Uk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgaW50ZWdlcjogImFhYSIKK1NFTEVD VCBKU09OX1ZBTFVFKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcgaW50IERFRkFVTFQgMTEx IE9OIEVSUk9SKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgICAgICAgIDExMQorKDEg cm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnIjEyMyInLCAnJCcgUkVUVVJOSU5HIGlu dCkgKyAyMzQ7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgICAgICAzNTcKKygxIHJvdykKKwor U0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyIyMDE3LTAyLTIwIicsICckJyBSRVRVUk5JTkcgZGF0 ZSkgKyA5OworICA/Y29sdW1uPyAgCistLS0tLS0tLS0tLS0KKyAwMy0wMS0yMDE3CisoMSByb3cp CisKKy0tIFRlc3QgTlVMTCBjaGVja3MgZXhlY3V0aW9uIGluIGRvbWFpbiB0eXBlcworQ1JFQVRF IERPTUFJTiBzcWxqc29uYl9pbnRfbm90X251bGwgQVMgaW50IE5PVCBOVUxMOworU0VMRUNUIEpT T05fVkFMVUUoanNvbmIgJ251bGwnLCAnJCcgUkVUVVJOSU5HIHNxbGpzb25iX2ludF9ub3RfbnVs bCk7CitFUlJPUjogIGRvbWFpbiBzcWxqc29uYl9pbnRfbm90X251bGwgZG9lcyBub3QgYWxsb3cg bnVsbCB2YWx1ZXMKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyQnIFJFVFVSTklO RyBzcWxqc29uYl9pbnRfbm90X251bGwgRVJST1IgT04gRVJST1IpOworRVJST1I6ICBkb21haW4g c3FsanNvbmJfaW50X25vdF9udWxsIGRvZXMgbm90IGFsbG93IG51bGwgdmFsdWVzCitTRUxFQ1Qg SlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckJyBSRVRVUk5JTkcgc3FsanNvbmJfaW50X25vdF9u dWxsIERFRkFVTFQgMiBPTiBFTVBUWSBFUlJPUiBPTiBFUlJPUik7CitFUlJPUjogIGRvbWFpbiBz cWxqc29uYl9pbnRfbm90X251bGwgZG9lcyBub3QgYWxsb3cgbnVsbCB2YWx1ZXMKK1NFTEVDVCBK U09OX1ZBTFVFKGpzb25iICcxJywgICckLmEnIFJFVFVSTklORyBzcWxqc29uYl9pbnRfbm90X251 bGwgREVGQVVMVCAyIE9OIEVNUFRZIEVSUk9SIE9OIEVSUk9SKTsKKyBqc29uX3ZhbHVlIAorLS0t LS0tLS0tLS0tCisgICAgICAgICAgMgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29u YiAnMScsICAnJC5hJyBSRVRVUk5JTkcgc3FsanNvbmJfaW50X25vdF9udWxsIERFRkFVTFQgTlVM TCBPTiBFTVBUWSBFUlJPUiBPTiBFUlJPUik7CitFUlJPUjogIGRvbWFpbiBzcWxqc29uYl9pbnRf bm90X251bGwgZG9lcyBub3QgYWxsb3cgbnVsbCB2YWx1ZXMKK0NSRUFURSBUWVBFIHJhaW5ib3cg QVMgRU5VTSAoJ3JlZCcsICdvcmFuZ2UnLCAneWVsbG93JywgJ2dyZWVuJywgJ2JsdWUnLCAncHVy cGxlJyk7CitDUkVBVEUgRE9NQUlOIHJnYiBBUyByYWluYm93IENIRUNLIChWQUxVRSBJTiAoJ3Jl ZCcsICdncmVlbicsICdibHVlJykpOworU0VMRUNUIEpTT05fVkFMVUUoJyJwdXJwbGUiJzo6anNv bmIsICdsYXggJFsqXScgUkVUVVJOSU5HIHJnYik7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0t LQorIAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRSgnInB1cnBsZSInOjpqc29uYiwgJ2xh eCAkWypdJyBSRVRVUk5JTkcgcmdiIEVSUk9SIE9OIEVSUk9SKTsKK0VSUk9SOiAgdmFsdWUgZm9y IGRvbWFpbiByZ2IgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAicmdiX2NoZWNrIgorU0VMRUNU IEpTT05fVkFMVUUoanNvbmIgJ1tdJywgJyQnKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0t CisgCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdbXScsICckJyBFUlJPUiBP TiBFUlJPUik7CitFUlJPUjogIEpTT04gcGF0aCBleHByZXNzaW9uIGluIEpTT05fVkFMVUUgc2hv dWxkIHJldHVybiBzaW5nbGV0b24gc2NhbGFyIGl0ZW0KK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25i ICd7fScsICckJyk7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitT RUxFQ1QgSlNPTl9WQUxVRShqc29uYiAne30nLCAnJCcgRVJST1IgT04gRVJST1IpOworRVJST1I6 ICBKU09OIHBhdGggZXhwcmVzc2lvbiBpbiBKU09OX1ZBTFVFIHNob3VsZCByZXR1cm4gc2luZ2xl dG9uIHNjYWxhciBpdGVtCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScsICckLmEnKTsKKyBq c29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVF KGpzb25iICcxJywgJ3N0cmljdCAkLmEnIEVSUk9SIE9OIEVSUk9SKTsKK0VSUk9SOiAganNvbnBh dGggbWVtYmVyIGFjY2Vzc29yIGNhbiBvbmx5IGJlIGFwcGxpZWQgdG8gYW4gb2JqZWN0CitTRUxF Q1QgSlNPTl9WQUxVRShqc29uYiAnMScsICdzdHJpY3QgJC5hJyBERUZBVUxUICdlcnJvcicgT04g RVJST1IpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyBlcnJvcgorKDEgcm93KQorCitT RUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScsICdsYXggJC5hJyBFUlJPUiBPTiBFUlJPUik7CitF UlJPUjogIG5vIFNRTC9KU09OIGl0ZW0KK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ2xh eCAkLmEnIEVSUk9SIE9OIEVNUFRZIEVSUk9SIE9OIEVSUk9SKTsKK0VSUk9SOiAgbm8gU1FML0pT T04gaXRlbQorU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAnc3RyaWN0ICQuYScgREVGQVVM VCAyIE9OIEVSUk9SKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgMgorKDEgcm93KQor CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScsICdsYXggJC5hJyBERUZBVUxUIDIgT04gRVJS T1IpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAyCisoMSByb3cpCisKK1NFTEVDVCBK U09OX1ZBTFVFKGpzb25iICcxJywgJ2xheCAkLmEnIERFRkFVTFQgJzInIE9OIEVSUk9SKTsKKyBq c29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgMgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxV RShqc29uYiAnMScsICdsYXggJC5hJyBOVUxMIE9OIEVNUFRZIERFRkFVTFQgJzInIE9OIEVSUk9S KTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBKU09O X1ZBTFVFKGpzb25iICcxJywgJ2xheCAkLmEnIERFRkFVTFQgJzInIE9OIEVNUFRZIERFRkFVTFQg JzMnIE9OIEVSUk9SKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgMgorKDEgcm93KQor CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScsICdsYXggJC5hJyBFUlJPUiBPTiBFTVBUWSBE RUZBVUxUICczJyBPTiBFUlJPUik7CitFUlJPUjogIG5vIFNRTC9KU09OIGl0ZW0KK1NFTEVDVCBK U09OX1ZBTFVFKGpzb25iICdbMSwyXScsICckWypdJyBFUlJPUiBPTiBFUlJPUik7CitFUlJPUjog IEpTT04gcGF0aCBleHByZXNzaW9uIGluIEpTT05fVkFMVUUgc2hvdWxkIHJldHVybiBzaW5nbGV0 b24gc2NhbGFyIGl0ZW0KK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdbMSwyXScsICckWypdJyBE RUZBVUxUICcwJyBPTiBFUlJPUik7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorIDAKKygx IHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ1siICJdJywgJyRbKl0nIFJFVFVSTklO RyBpbnQgRVJST1IgT04gRVJST1IpOworRVJST1I6ICBpbnZhbGlkIGlucHV0IHN5bnRheCBmb3Ig dHlwZSBpbnRlZ2VyOiAiICIKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdbIiAiXScsICckWypd JyBSRVRVUk5JTkcgaW50IERFRkFVTFQgMiArIDMgT04gRVJST1IpOworIGpzb25fdmFsdWUgCist LS0tLS0tLS0tLS0KKyAgICAgICAgICA1CisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpz b25iICdbIjEiXScsICckWypdJyBSRVRVUk5JTkcgaW50IERFRkFVTFQgMiArIDMgT04gRVJST1Ip OworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAgICAgICAgICAxCisoMSByb3cpCisKK1NF TEVDVCBKU09OX1ZBTFVFKGpzb25iICdbIjEiXScsICckWypdJyBSRVRVUk5JTkcgaW50IEZPUk1B VCBKU09OKTsgLS0gUkVUVVJOSU5HIEZPUk1BVCBub3QgYWxsb3dlZAorRVJST1I6ICBjYW5ub3Qg c3BlY2lmeSBGT1JNQVQgaW4gUkVUVVJOSU5HIGNsYXVzZSBvZiBKU09OX1ZBTFVFKCkKK0xJTkUg MTogLi4uQ1QgSlNPTl9WQUxVRShqc29uYiAnWyIxIl0nLCAnJFsqXScgUkVUVVJOSU5HIGludCBG T1JNQVQgSlNPLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXgorLS0gUkVUVUdOSU5HIHBzZXVkby10eXBlcyBub3QgYWxsb3dl ZAorU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ1siMSJdJywgJyRbKl0nIFJFVFVSTklORyByZWNv cmQpOworRVJST1I6ICByZXR1cm5pbmcgcHNldWRvLXR5cGVzIGlzIG5vdCBzdXBwb3J0ZWQgaW4g U1FML0pTT04gZnVuY3Rpb25zCitTRUxFQ1QKKwl4LAorCUpTT05fVkFMVUUoCisJCWpzb25iICd7 ImEiOiAxLCAiYiI6IDJ9JywKKwkJJyQuKiA/IChAID4gJHgpJyBQQVNTSU5HIHggQVMgeAorCQlS RVRVUk5JTkcgaW50CisJCURFRkFVTFQgLTEgT04gRU1QVFkKKwkJREVGQVVMVCAtMiBPTiBFUlJP UgorCSkgeQorRlJPTQorCWdlbmVyYXRlX3NlcmllcygwLCAyKSB4OworIHggfCB5ICAKKy0tLSst LS0tCisgMCB8IC0yCisgMSB8ICAyCisgMiB8IC0xCisoMyByb3dzKQorCitTRUxFQ1QgSlNPTl9W QUxVRShqc29uYiAnbnVsbCcsICckYScgUEFTU0lORyBwb2ludCAnICgxLCAyICknIEFTIGEpOwor IGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAoMSwyKQorKDEgcm93KQorCitTRUxFQ1QgSlNP Tl9WQUxVRShqc29uYiAnbnVsbCcsICckYScgUEFTU0lORyBwb2ludCAnICgxLCAyICknIEFTIGEg UkVUVVJOSU5HIHBvaW50KTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgKDEsMikKKygx IHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJGEnIFBBU1NJTkcgcG9p bnQgJyAoMSwgMiApJyBBUyBhIFJFVFVSTklORyBwb2ludCBFUlJPUiBPTiBFUlJPUik7CisganNv bl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorICgxLDIpCisoMSByb3cpCisKKy0tIFRlc3QgUEFTU0lO RyBhbmQgUkVUVVJOSU5HIGRhdGUvdGltZSB0eXBlcworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIg J251bGwnLCAnJHRzJyBQQVNTSU5HIHRpbWVzdGFtcHR6ICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsx MCcgQVMgdHMpOworICAgICAgICAgIGpzb25fdmFsdWUgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBUdWUgRmViIDIwIDE4OjM0OjU2IDIwMTggUFNUCisoMSByb3cp CisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyR0cycgUEFTU0lORyB0aW1lc3Rh bXB0eiAnMjAxOC0wMi0yMSAxMjozNDo1NiArMTAnIEFTIHRzIFJFVFVSTklORyB0aW1lc3RhbXB0 eik7CisgICAgICAgICAganNvbl92YWx1ZSAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIFR1ZSBGZWIgMjAgMTg6MzQ6NTYgMjAxOCBQU1QKKygxIHJvdykKKworU0VM RUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5HIHRpbWVzdGFtcHR6ICcy MDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMgUkVUVVJOSU5HIHRpbWVzdGFtcCk7CisgICAg ICAgIGpzb25fdmFsdWUgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBUdWUg RmViIDIwIDE4OjM0OjU2IDIwMTgKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIg J251bGwnLCAnJHRzJyBQQVNTSU5HIGRhdGUgJzIwMTgtMDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0 cyBSRVRVUk5JTkcgZGF0ZSk7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorIDAyLTIxLTIw MTgKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNT SU5HIHRpbWUgJzIwMTgtMDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyBSRVRVUk5JTkcgdGltZSk7 CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorIDEyOjM0OjU2CisoMSByb3cpCisKK1NFTEVD VCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyR0cycgUEFTU0lORyB0aW1ldHogJzIwMTgtMDIt MjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyBSRVRVUk5JTkcgdGltZXR6KTsKKyBqc29uX3ZhbHVlICAK Ky0tLS0tLS0tLS0tLS0KKyAxMjozNDo1NisxMAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxV RShqc29uYiAnbnVsbCcsICckdHMnIFBBU1NJTkcgdGltZXN0YW1wICcyMDE4LTAyLTIxIDEyOjM0 OjU2ICsxMCcgQVMgdHMgUkVUVVJOSU5HIHRpbWVzdGFtcCk7CisgICAgICAgIGpzb25fdmFsdWUg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXZWQgRmViIDIxIDEyOjM0OjU2 IDIwMTgKKygxIHJvdykKKworLS0gQWxzbyB0ZXN0IFJFVFVSTklORyBqc29uW2JdCitTRUxFQ1Qg SlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckdHMnIFBBU1NJTkcgdGltZXN0YW1wdHogJzIwMTgt MDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyBSRVRVUk5JTkcganNvbik7CisgICAgICAgICBqc29u X3ZhbHVlICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAiMjAxOC0w Mi0yMVQwMjozNDo1NiswMDowMCIKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIg J251bGwnLCAnJHRzJyBQQVNTSU5HIHRpbWVzdGFtcHR6ICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsx MCcgQVMgdHMgUkVUVVJOSU5HIGpzb25iKTsKKyAgICAgICAgIGpzb25fdmFsdWUgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICIyMDE4LTAyLTIxVDAyOjM0OjU2KzAw OjAwIgorKDEgcm93KQorCistLSBKU09OX1FVRVJZCitTRUxFQ1QKKwlKU09OX1FVRVJZKGpzLCAn JCcpLAorCUpTT05fUVVFUlkoanMsICckJyBXSVRIT1VUIFdSQVBQRVIpLAorCUpTT05fUVVFUlko anMsICckJyBXSVRIIENPTkRJVElPTkFMIFdSQVBQRVIpLAorCUpTT05fUVVFUlkoanMsICckJyBX SVRIIFVOQ09ORElUSU9OQUwgQVJSQVkgV1JBUFBFUiksCisJSlNPTl9RVUVSWShqcywgJyQnIFdJ VEggQVJSQVkgV1JBUFBFUikKK0ZST00KKwkoVkFMVUVTCisJCShqc29uYiAnbnVsbCcpLAorCQko JzEyLjMnKSwKKwkJKCd0cnVlJyksCisJCSgnImFhYSInKSwKKwkJKCdbMSwgbnVsbCwgIjIiXScp LAorCQkoJ3siYSI6IDEsICJiIjogWzJdfScpCisJKSBmb28oanMpOworICAgICBqc29uX3F1ZXJ5 ICAgICB8ICAgICBqc29uX3F1ZXJ5ICAgICB8ICAgICBqc29uX3F1ZXJ5ICAgICB8ICAgICAganNv bl9xdWVyeSAgICAgIHwgICAgICBqc29uX3F1ZXJ5ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBudWxsICAgICAgICAgICAgICAgfCBu dWxsICAgICAgICAgICAgICAgfCBbbnVsbF0gICAgICAgICAgICAgfCBbbnVsbF0gICAgICAgICAg ICAgICB8IFtudWxsXQorIDEyLjMgICAgICAgICAgICAgICB8IDEyLjMgICAgICAgICAgICAgICB8 IFsxMi4zXSAgICAgICAgICAgICB8IFsxMi4zXSAgICAgICAgICAgICAgIHwgWzEyLjNdCisgdHJ1 ZSAgICAgICAgICAgICAgIHwgdHJ1ZSAgICAgICAgICAgICAgIHwgW3RydWVdICAgICAgICAgICAg IHwgW3RydWVdICAgICAgICAgICAgICAgfCBbdHJ1ZV0KKyAiYWFhIiAgICAgICAgICAgICAgfCAi YWFhIiAgICAgICAgICAgICAgfCBbImFhYSJdICAgICAgICAgICAgfCBbImFhYSJdICAgICAgICAg ICAgICB8IFsiYWFhIl0KKyBbMSwgbnVsbCwgIjIiXSAgICAgfCBbMSwgbnVsbCwgIjIiXSAgICAg fCBbMSwgbnVsbCwgIjIiXSAgICAgfCBbWzEsIG51bGwsICIyIl1dICAgICB8IFtbMSwgbnVsbCwg IjIiXV0KKyB7ImEiOiAxLCAiYiI6IFsyXX0gfCB7ImEiOiAxLCAiYiI6IFsyXX0gfCB7ImEiOiAx LCAiYiI6IFsyXX0gfCBbeyJhIjogMSwgImIiOiBbMl19XSB8IFt7ImEiOiAxLCAiYiI6IFsyXX1d CisoNiByb3dzKQorCitTRUxFQ1QKKwlKU09OX1FVRVJZKGpzLCAnc3RyaWN0ICRbKl0nKSBBUyAi dW5zcGVjIiwKKwlKU09OX1FVRVJZKGpzLCAnc3RyaWN0ICRbKl0nIFdJVEhPVVQgV1JBUFBFUikg QVMgIndpdGhvdXQiLAorCUpTT05fUVVFUlkoanMsICdzdHJpY3QgJFsqXScgV0lUSCBDT05ESVRJ T05BTCBXUkFQUEVSKSBBUyAid2l0aCBjb25kIiwKKwlKU09OX1FVRVJZKGpzLCAnc3RyaWN0ICRb Kl0nIFdJVEggVU5DT05ESVRJT05BTCBBUlJBWSBXUkFQUEVSKSBBUyAid2l0aCB1bmNvbmQiLAor CUpTT05fUVVFUlkoanMsICdzdHJpY3QgJFsqXScgV0lUSCBBUlJBWSBXUkFQUEVSKSBBUyAid2l0 aCIKK0ZST00KKwkoVkFMVUVTCisJCShqc29uYiAnMScpLAorCQkoJ1tdJyksCisJCSgnW251bGxd JyksCisJCSgnWzEyLjNdJyksCisJCSgnW3RydWVdJyksCisJCSgnWyJhYWEiXScpLAorCQkoJ1tb MSwgMiwgM11dJyksCisJCSgnW3siYSI6IDEsICJiIjogWzJdfV0nKSwKKwkJKCdbMSwgIjIiLCBu dWxsLCBbM11dJykKKwkpIGZvbyhqcyk7CisgICAgICAgdW5zcGVjICAgICAgIHwgICAgICB3aXRo b3V0ICAgICAgIHwgICAgICB3aXRoIGNvbmQgICAgICB8ICAgICB3aXRoIHVuY29uZCAgICAgIHwg ICAgICAgICB3aXRoICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIHwgCisgICAg ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAg ICB8ICAgICAgICAgICAgICAgICAgICAgIHwgCisgbnVsbCAgICAgICAgICAgICAgIHwgbnVsbCAg ICAgICAgICAgICAgIHwgW251bGxdICAgICAgICAgICAgICB8IFtudWxsXSAgICAgICAgICAgICAg IHwgW251bGxdCisgMTIuMyAgICAgICAgICAgICAgIHwgMTIuMyAgICAgICAgICAgICAgIHwgWzEy LjNdICAgICAgICAgICAgICB8IFsxMi4zXSAgICAgICAgICAgICAgIHwgWzEyLjNdCisgdHJ1ZSAg ICAgICAgICAgICAgIHwgdHJ1ZSAgICAgICAgICAgICAgIHwgW3RydWVdICAgICAgICAgICAgICB8 IFt0cnVlXSAgICAgICAgICAgICAgIHwgW3RydWVdCisgImFhYSIgICAgICAgICAgICAgIHwgImFh YSIgICAgICAgICAgICAgIHwgWyJhYWEiXSAgICAgICAgICAgICB8IFsiYWFhIl0gICAgICAgICAg ICAgIHwgWyJhYWEiXQorIFsxLCAyLCAzXSAgICAgICAgICB8IFsxLCAyLCAzXSAgICAgICAgICB8 IFsxLCAyLCAzXSAgICAgICAgICAgfCBbWzEsIDIsIDNdXSAgICAgICAgICB8IFtbMSwgMiwgM11d CisgeyJhIjogMSwgImIiOiBbMl19IHwgeyJhIjogMSwgImIiOiBbMl19IHwgeyJhIjogMSwgImIi OiBbMl19ICB8IFt7ImEiOiAxLCAiYiI6IFsyXX1dIHwgW3siYSI6IDEsICJiIjogWzJdfV0KKyAg ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfCBbMSwgIjIiLCBudWxsLCBb M11dIHwgWzEsICIyIiwgbnVsbCwgWzNdXSAgfCBbMSwgIjIiLCBudWxsLCBbM11dCisoOSByb3dz KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIHRleHQp OworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyAiYWFhIgorKDEgcm93KQorCitTRUxFQ1Qg SlNPTl9RVUVSWShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIHRleHQgS0VFUCBRVU9URVMp OworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyAiYWFhIgorKDEgcm93KQorCitTRUxFQ1Qg SlNPTl9RVUVSWShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIHRleHQgS0VFUCBRVU9URVMg T04gU0NBTEFSIFNUUklORyk7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorICJhYWEiCiso MSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcg dGV4dCBPTUlUIFFVT1RFUyk7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIGFhYQorKDEg cm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIHRl eHQgT01JVCBRVU9URVMgT04gU0NBTEFSIFNUUklORyk7CisganNvbl9xdWVyeSAKKy0tLS0tLS0t LS0tLQorIGFhYQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnImFhYSInLCAn JCcgT01JVCBRVU9URVMgRVJST1IgT04gRVJST1IpOworRVJST1I6ICBpbnZhbGlkIGlucHV0IHN5 bnRheCBmb3IgdHlwZSBqc29uCitERVRBSUw6ICBUb2tlbiAiYWFhIiBpcyBpbnZhbGlkLgorQ09O VEVYVDogIEpTT04gZGF0YSwgbGluZSAxOiBhYWEKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICci YWFhIicsICckJyBSRVRVUk5JTkcganNvbiBPTUlUIFFVT1RFUyBFUlJPUiBPTiBFUlJPUik7CitF UlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIGpzb24KK0RFVEFJTDogIFRva2Vu ICJhYWEiIGlzIGludmFsaWQuCitDT05URVhUOiAgSlNPTiBkYXRhLCBsaW5lIDE6IGFhYQorU0VM RUNUIEpTT05fUVVFUlkoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyBieXRlYSBGT1JNQVQg SlNPTiBPTUlUIFFVT1RFUyBFUlJPUiBPTiBFUlJPUik7CisganNvbl9xdWVyeSAKKy0tLS0tLS0t LS0tLQorIFx4NjE2MTYxCisoMSByb3cpCisKKy0tIFFVT1RFUyBiZWhhdmlvciBzaG91bGQgbm90 IGJlIHNwZWNpZmllZCB3aGVuIFdJVEggV1JBUFBFUiB1c2VkOgorLS0gU2hvdWxkIGZhaWwKK1NF TEVDVCBKU09OX1FVRVJZKGpzb25iICdbMV0nLCAnJCcgV0lUSCBXUkFQUEVSIE9NSVQgUVVPVEVT KTsKK0VSUk9SOiAgU1FML0pTT04gUVVPVEVTIGJlaGF2aW9yIG11c3Qgbm90IGJlIHNwZWNpZmll ZCB3aGVuIFdJVEggV1JBUFBFUiBpcyB1c2VkCitMSU5FIDE6IFNFTEVDVCBKU09OX1FVRVJZKGpz b25iICdbMV0nLCAnJCcgV0lUSCBXUkFQUEVSIE9NSVQgUVVPVEVTKS4uLgorICAgICAgICAgICAg ICAgXgorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxXScsICckJyBXSVRIIFdSQVBQRVIgS0VF UCBRVU9URVMpOworRVJST1I6ICBTUUwvSlNPTiBRVU9URVMgYmVoYXZpb3IgbXVzdCBub3QgYmUg c3BlY2lmaWVkIHdoZW4gV0lUSCBXUkFQUEVSIGlzIHVzZWQKK0xJTkUgMTogU0VMRUNUIEpTT05f UVVFUlkoanNvbmIgJ1sxXScsICckJyBXSVRIIFdSQVBQRVIgS0VFUCBRVU9URVMpLi4uCisgICAg ICAgICAgICAgICBeCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzFdJywgJyQnIFdJVEggQ09O RElUSU9OQUwgV1JBUFBFUiBLRUVQIFFVT1RFUyk7CitFUlJPUjogIFNRTC9KU09OIFFVT1RFUyBi ZWhhdmlvciBtdXN0IG5vdCBiZSBzcGVjaWZpZWQgd2hlbiBXSVRIIFdSQVBQRVIgaXMgdXNlZAor TElORSAxOiBTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzFdJywgJyQnIFdJVEggQ09ORElUSU9O QUwgV1JBUFBFUiAuLi4KKyAgICAgICAgICAgICAgIF4KK1NFTEVDVCBKU09OX1FVRVJZKGpzb25i ICdbMV0nLCAnJCcgV0lUSCBDT05ESVRJT05BTCBXUkFQUEVSIE9NSVQgUVVPVEVTKTsKK0VSUk9S OiAgU1FML0pTT04gUVVPVEVTIGJlaGF2aW9yIG11c3Qgbm90IGJlIHNwZWNpZmllZCB3aGVuIFdJ VEggV1JBUFBFUiBpcyB1c2VkCitMSU5FIDE6IFNFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMV0n LCAnJCcgV0lUSCBDT05ESVRJT05BTCBXUkFQUEVSIC4uLgorICAgICAgICAgICAgICAgXgorLS0g U2hvdWxkIHN1Y2NlZWQKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMV0nLCAnJCcgV0lUSE9V VCBXUkFQUEVSIE9NSVQgUVVPVEVTKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgWzFd CisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMV0nLCAnJCcgV0lUSE9VVCBX UkFQUEVSIEtFRVAgUVVPVEVTKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgWzFdCiso MSByb3cpCisKKy0tIHRlc3QgUVVPVEVTIGJlaGF2aW9yLgorU0VMRUNUIEpTT05fUVVFUlkoanNv bmIneyJyZWMiOiAiezEsMiwzfSJ9JywgJyQucmVjJyByZXR1cm5pbmcgaW50W10gb21pdCBxdW90 ZXMpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyB7MSwyLDN9CisoMSByb3cpCisKK1NF TEVDVCBKU09OX1FVRVJZKGpzb25iJ3sicmVjIjogInsxLDIsM30ifScsICckLnJlYycgcmV0dXJu aW5nIGludFtdIGtlZXAgcXVvdGVzKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgCiso MSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iJ3sicmVjIjogInsxLDIsM30ifScsICck LnJlYycgcmV0dXJuaW5nIGludFtdIGtlZXAgcXVvdGVzIGVycm9yIG9uIGVycm9yKTsKK0VSUk9S OiAgZXhwZWN0ZWQgSlNPTiBhcnJheQorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIneyJyZWMiOiAi WzEsMl0ifScsICckLnJlYycgcmV0dXJuaW5nIGludDRyYW5nZSBvbWl0IHF1b3Rlcyk7CisganNv bl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIFsxLDMpCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FV RVJZKGpzb25iJ3sicmVjIjogIlsxLDJdIn0nLCAnJC5yZWMnIHJldHVybmluZyBpbnQ0cmFuZ2Ug a2VlcCBxdW90ZXMpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwor U0VMRUNUIEpTT05fUVVFUlkoanNvbmIneyJyZWMiOiAiWzEsMl0ifScsICckLnJlYycgCXJldHVy bmluZyBpbnQ0cmFuZ2Uga2VlcCBxdW90ZXMgZXJyb3Igb24gZXJyb3IpOworRVJST1I6ICBtYWxm b3JtZWQgcmFuZ2UgbGl0ZXJhbDogIiJbMSwyXSIiCitERVRBSUw6ICBNaXNzaW5nIGxlZnQgcGFy ZW50aGVzaXMgb3IgYnJhY2tldC4KK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypd Jyk7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgSlNP Tl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScgTlVMTCBPTiBFTVBUWSk7CisganNvbl9xdWVyeSAK Ky0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW10n LCAnJFsqXScgRU1QVFkgT04gRU1QVFkpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyBb XQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScgRU1QVFkg QVJSQVkgT04gRU1QVFkpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyBbXQorKDEgcm93 KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScgRU1QVFkgT0JKRUNUIE9O IEVNUFRZKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisge30KKygxIHJvdykKKworU0VM RUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIEVSUk9SIE9OIEVNUFRZKTsKK0VSUk9S OiAgbm8gU1FML0pTT04gaXRlbQorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0n IERFRkFVTFQgJyJlbXB0eSInIE9OIEVNUFRZKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0t CisgImVtcHR5IgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsq XScgRVJST1IgT04gRU1QVFkgTlVMTCBPTiBFUlJPUik7CitFUlJPUjogIG5vIFNRTC9KU09OIGl0 ZW0KK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBFUlJPUiBPTiBFTVBUWSBF TVBUWSBBUlJBWSBPTiBFUlJPUik7CitFUlJPUjogIG5vIFNRTC9KU09OIGl0ZW0KK1NFTEVDVCBK U09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBFUlJPUiBPTiBFTVBUWSBFTVBUWSBPQkpFQ1Qg T04gRVJST1IpOworRVJST1I6ICBubyBTUUwvSlNPTiBpdGVtCitTRUxFQ1QgSlNPTl9RVUVSWShq c29uYiAnW10nLCAnJFsqXScgRVJST1IgT04gRU1QVFkgRVJST1IgT04gRVJST1IpOworRVJST1I6 ICBubyBTUUwvSlNPTiBpdGVtCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScg RVJST1IgT04gRVJST1IpOworRVJST1I6ICBubyBTUUwvSlNPTiBpdGVtCitTRUxFQ1QgSlNPTl9R VUVSWShqc29uYiAnWzEsMl0nLCAnJFsqXScgRVJST1IgT04gRVJST1IpOworRVJST1I6ICBKU09O IHBhdGggZXhwcmVzc2lvbiBpbiBKU09OX1FVRVJZIHNob3VsZCByZXR1cm4gc2luZ2xldG9uIGl0 ZW0gd2l0aG91dCB3cmFwcGVyCitISU5UOiAgVXNlIFdJVEggV1JBUFBFUiBjbGF1c2UgdG8gd3Jh cCBTUUwvSlNPTiBpdGVtIHNlcXVlbmNlIGludG8gYXJyYXkuCitTRUxFQ1QgSlNPTl9RVUVSWShq c29uYiAnWzEsMl0nLCAnJFsqXScgREVGQVVMVCAnImVtcHR5IicgT04gRVJST1IpOworIGpzb25f cXVlcnkgCistLS0tLS0tLS0tLS0KKyAiZW1wdHkiCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FV RVJZKGpzb25iICdbMSwyXScsICckJyBSRVRVUk5JTkcganNvbik7CisganNvbl9xdWVyeSAKKy0t LS0tLS0tLS0tLQorIFsxLCAyXQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAn WzEsMl0nLCAnJCcgUkVUVVJOSU5HIGpzb24gRk9STUFUIEpTT04pOworIGpzb25fcXVlcnkgCist LS0tLS0tLS0tLS0KKyBbMSwgMl0KKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIg J1sxLDJdJywgJyQnIFJFVFVSTklORyBqc29uYik7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0t LQorIFsxLCAyXQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAn JCcgUkVUVVJOSU5HIGpzb25iIEZPUk1BVCBKU09OKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0t LS0tCisgWzEsIDJdCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScs ICckJyBSRVRVUk5JTkcgdGV4dCk7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIFsxLCAy XQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJCcgUkVUVVJO SU5HIGNoYXIoMTApKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgWzEsIDJdICAgIAor KDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJCcgUkVUVVJOSU5H IGNoYXIoMykpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyBbMSwKKygxIHJvdykKKwor U0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklORyB0ZXh0IEZPUk1B VCBKU09OKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgWzEsIDJdCisoMSByb3cpCisK K1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckJyBSRVRVUk5JTkcgYnl0ZWEpOwor ICAganNvbl9xdWVyeSAgIAorLS0tLS0tLS0tLS0tLS0tLQorIFx4NWIzMTJjMjAzMjVkCisoMSBy b3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckJyBSRVRVUk5JTkcgYnl0 ZWEgRk9STUFUIEpTT04pOworICAganNvbl9xdWVyeSAgIAorLS0tLS0tLS0tLS0tLS0tLQorIFx4 NWIzMTJjMjAzMjVkCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScs ICckWypdJyBSRVRVUk5JTkcgYnl0ZWEgRU1QVFkgT0JKRUNUIE9OIEVSUk9SKTsKK0VSUk9SOiAg Y2Fubm90IGNhc3QgYmVoYXZpb3IgZXhwcmVzc2lvbiBvZiB0eXBlIGpzb25iIHRvIGJ5dGVhCitM SU5FIDE6IC4uLiBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckWypdJyBSRVRVUk5JTkcgYnl0 ZWEgRU1QVFkgT0JKRS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScs ICckWypdJyBSRVRVUk5JTkcgYnl0ZWEgRk9STUFUIEpTT04gRU1QVFkgT0JKRUNUIE9OIEVSUk9S KTsKK0VSUk9SOiAgY2Fubm90IGNhc3QgYmVoYXZpb3IgZXhwcmVzc2lvbiBvZiB0eXBlIGpzb25i IHRvIGJ5dGVhCitMSU5FIDE6IC4uLmpzb25iICdbMSwyXScsICckWypdJyBSRVRVUk5JTkcgYnl0 ZWEgRk9STUFUIEpTT04gRU1QVFkgT0JKRS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1NFTEVDVCBKU09OX1FVRVJZKGpz b25iICdbMSwyXScsICckWypdJyBSRVRVUk5JTkcganNvbiBFTVBUWSBPQkpFQ1QgT04gRVJST1Ip OworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyB7fQorKDEgcm93KQorCitTRUxFQ1QgSlNP Tl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJFsqXScgUkVUVVJOSU5HIGpzb25iIEVNUFRZIE9CSkVD VCBPTiBFUlJPUik7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIHt9CisoMSByb3cpCisK K1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMyw0XScsICckWypdJyBSRVRVUk5JTkcgYmlnaW50 W10gRU1QVFkgT0JKRUNUIE9OIEVSUk9SKTsKK0VSUk9SOiAgY2Fubm90IGNhc3QgYmVoYXZpb3Ig ZXhwcmVzc2lvbiBvZiB0eXBlIGpzb25iIHRvIGJpZ2ludFtdCitMSU5FIDE6IC4uLk9OX1FVRVJZ KGpzb25iICdbMyw0XScsICckWypdJyBSRVRVUk5JTkcgYmlnaW50W10gRU1QVFkgT0JKRS4uLgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF4KK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICciWzMsNF0iJywgJyRbKl0nIFJFVFVSTklO RyBiaWdpbnRbXSBFTVBUWSBPQkpFQ1QgT04gRVJST1IpOworRVJST1I6ICBjYW5ub3QgY2FzdCBi ZWhhdmlvciBleHByZXNzaW9uIG9mIHR5cGUganNvbmIgdG8gYmlnaW50W10KK0xJTkUgMTogLi4u X1FVRVJZKGpzb25iICciWzMsNF0iJywgJyRbKl0nIFJFVFVSTklORyBiaWdpbnRbXSBFTVBUWSBP QkpFLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXgorLS0gUkVUVUdOSU5HIHBzZXVkby10eXBlcyBub3QgYWxsb3dlZAorU0VM RUNUIEpTT05fUVVFUlkoanNvbmIgJ1szLDRdJywgJyRbKl0nIFJFVFVSTklORyBhbnlhcnJheSBF TVBUWSBPQkpFQ1QgT04gRVJST1IpOworRVJST1I6ICByZXR1cm5pbmcgcHNldWRvLXR5cGVzIGlz IG5vdCBzdXBwb3J0ZWQgaW4gU1FML0pTT04gZnVuY3Rpb25zCitTRUxFQ1QKKwl4LCB5LAorCUpT T05fUVVFUlkoCisJCWpzb25iICdbMSwyLDMsNCw1LG51bGxdJywKKwkJJyRbKl0gPyAoQCA+PSAk eCAmJiBAIDw9ICR5KScKKwkJUEFTU0lORyB4IEFTIHgsIHkgQVMgeQorCQlXSVRIIENPTkRJVElP TkFMIFdSQVBQRVIKKwkJRU1QVFkgQVJSQVkgT04gRU1QVFkKKwkpIGxpc3QKK0ZST00KKwlnZW5l cmF0ZV9zZXJpZXMoMCwgNCkgeCwKKwlnZW5lcmF0ZV9zZXJpZXMoMCwgNCkgeTsKKyB4IHwgeSB8 ICAgICBsaXN0ICAgICAKKy0tLSstLS0rLS0tLS0tLS0tLS0tLS0KKyAwIHwgMCB8IFtdCisgMCB8 IDEgfCBbMV0KKyAwIHwgMiB8IFsxLCAyXQorIDAgfCAzIHwgWzEsIDIsIDNdCisgMCB8IDQgfCBb MSwgMiwgMywgNF0KKyAxIHwgMCB8IFtdCisgMSB8IDEgfCBbMV0KKyAxIHwgMiB8IFsxLCAyXQor IDEgfCAzIHwgWzEsIDIsIDNdCisgMSB8IDQgfCBbMSwgMiwgMywgNF0KKyAyIHwgMCB8IFtdCisg MiB8IDEgfCBbXQorIDIgfCAyIHwgWzJdCisgMiB8IDMgfCBbMiwgM10KKyAyIHwgNCB8IFsyLCAz LCA0XQorIDMgfCAwIHwgW10KKyAzIHwgMSB8IFtdCisgMyB8IDIgfCBbXQorIDMgfCAzIHwgWzNd CisgMyB8IDQgfCBbMywgNF0KKyA0IHwgMCB8IFtdCisgNCB8IDEgfCBbXQorIDQgfCAyIHwgW10K KyA0IHwgMyB8IFtdCisgNCB8IDQgfCBbNF0KKygyNSByb3dzKQorCistLSByZWNvcmQgdHlwZSBy ZXR1cm5pbmcgd2l0aCBxdW90ZXMgYmVoYXZpb3IuCitDUkVBVEUgVFlQRSBjb21wX2FiYyBBUyAo YSB0ZXh0LCBiIGludCwgYyB0aW1lc3RhbXApOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIneyJy ZWMiOiAiKGFiYyw0MiwwMS4wMi4yMDAzKSJ9JywgJyQucmVjJyByZXR1cm5pbmcgY29tcF9hYmMg b21pdCBxdW90ZXMpOworICAgICAgICAgICAgIGpzb25fcXVlcnkgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIChhYmMsNDIsIlRodSBKYW4gMDIg MDA6MDA6MDAgMjAwMyIpCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iJ3sicmVj IjogIihhYmMsNDIsMDEuMDIuMjAwMykifScsICckLnJlYycgcmV0dXJuaW5nIGNvbXBfYWJjIGtl ZXAgcXVvdGVzKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NF TEVDVCBKU09OX1FVRVJZKGpzb25iJ3sicmVjIjogIihhYmMsNDIsMDEuMDIuMjAwMykifScsICck LnJlYycgcmV0dXJuaW5nIGNvbXBfYWJjIGtlZXAgcXVvdGVzIGVycm9yIG9uIGVycm9yKTsKK0VS Uk9SOiAgY2Fubm90IGNhbGwgcG9wdWxhdGVfY29tcG9zaXRlIG9uIGEgc2NhbGFyCitEUk9QIFRZ UEUgY29tcF9hYmM7CistLSBFeHRlbnNpb246IHJlY29yZCB0eXBlcyByZXR1cm5pbmcKK0NSRUFU RSBUWVBFIHNxbGpzb25iX3JlYyBBUyAoYSBpbnQsIHQgdGV4dCwganMganNvbiwgamIganNvbmIs IGpzYSBqc29uW10pOworQ1JFQVRFIFRZUEUgc3FsanNvbmJfcmVjYSBBUyAocmVjYSBzcWxqc29u Yl9yZWNbXSk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW3siYSI6IDEsICJiIjogImZvbyIs ICJ0IjogImFhYSIsICJqcyI6IFsxLCAiMiIsIHt9XSwgImpiIjogeyJ4IjogWzEsICIyIiwge31d fX0sICB7ImEiOiAyfV0nLCAnJFswXScgUkVUVVJOSU5HIHNxbGpzb25iX3JlYyk7CisgICAgICAg ICAgICAgICAgICAgICBqc29uX3F1ZXJ5ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoMSxhYWEsIlsx LCAiIjIiIiwge31dIiwieyIieCIiOiBbMSwgIiIyIiIsIHt9XX0iLCkKKygxIHJvdykKKworU0VM RUNUIEpTT05fUVVFUlkoanNvbmIgJ1t7ImEiOiAiYSIsICJiIjogImZvbyIsICJ0IjogImFhYSIs ICJqcyI6IFsxLCAiMiIsIHt9XSwgImpiIjogeyJ4IjogWzEsICIyIiwge31dfX0sICB7ImEiOiAy fV0nLCAnJFswXScgUkVUVVJOSU5HIHNxbGpzb25iX3JlYyBFUlJPUiBPTiBFUlJPUik7CitFUlJP UjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIGludGVnZXI6ICJhIgorU0VMRUNUIEpT T05fUVVFUlkoanNvbmIgJ1t7ImEiOiAiYSIsICJiIjogImZvbyIsICJ0IjogImFhYSIsICJqcyI6 IFsxLCAiMiIsIHt9XSwgImpiIjogeyJ4IjogWzEsICIyIiwge31dfX0sICB7ImEiOiAyfV0nLCAn JFswXScgUkVUVVJOSU5HIHNxbGpzb25iX3JlYyk7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0t LQorIAorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHVubmVzdCgoSlNPTl9RVUVSWShqc29uYiAn eyJqc2EiOiAgW3siYSI6IDEsICJiIjogWyJmb28iXX0sIHsiYSI6IDIsICJjIjoge319LCAxMjNd fScsICckJyBSRVRVUk5JTkcgc3FsanNvbmJfcmVjKSkuanNhKTsKKyAgICAgICAgIHVubmVzdCAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgeyJhIjogMSwgImIiOiBbImZvbyJd fQorIHsiYSI6IDIsICJjIjoge319CisgMTIzCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHVu bmVzdCgoSlNPTl9RVUVSWShqc29uYiAneyJyZWNhIjogW3siYSI6IDEsICJ0IjogWyJmb28iLCBb XV19LCB7ImEiOiAyLCAiamIiOiBbe30sIHRydWVdfV19JywgJyQnIFJFVFVSTklORyBzcWxqc29u Yl9yZWNhKSkucmVjYSk7CisgYSB8ICAgICAgdCAgICAgIHwganMgfCAgICAgamIgICAgIHwganNh IAorLS0tKy0tLS0tLS0tLS0tLS0rLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0KKyAxIHwgWyJmb28i LCBbXV0gfCAgICB8ICAgICAgICAgICAgfCAKKyAyIHwgICAgICAgICAgICAgfCAgICB8IFt7fSwg dHJ1ZV0gfCAKKygyIHJvd3MpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbeyJhIjogMSwg ImIiOiAiZm9vIiwgInQiOiAiYWFhIiwgImpzIjogWzEsICIyIiwge31dLCAiamIiOiB7IngiOiBb MSwgIjIiLCB7fV19fSwgIHsiYSI6IDJ9XScsICckWzBdJyBSRVRVUk5JTkcganNvbnBhdGgpOwor IGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVF UlkoanNvbmIgJ1t7ImEiOiAxLCAiYiI6ICJmb28iLCAidCI6ICJhYWEiLCAianMiOiBbMSwgIjIi LCB7fV0sICJqYiI6IHsieCI6IFsxLCAiMiIsIHt9XX19LCAgeyJhIjogMn1dJywgJyRbMF0nIFJF VFVSTklORyBqc29ucGF0aCBFUlJPUiBPTiBFUlJPUik7CitFUlJPUjogIHN5bnRheCBlcnJvciBh dCBvciBuZWFyICJ7IiBvZiBqc29ucGF0aCBpbnB1dAorLS0gRXh0ZW5zaW9uOiBhcnJheSB0eXBl cyByZXR1cm5pbmcKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyLG51bGwsIjMiXScsICck WypdJyBSRVRVUk5JTkcgaW50W10gV0lUSCBXUkFQUEVSKTsKKyAganNvbl9xdWVyeSAgCistLS0t LS0tLS0tLS0tLQorIHsxLDIsTlVMTCwzfQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShq c29uYiAnWzEsMixudWxsLCJhIl0nLCAnJFsqXScgUkVUVVJOSU5HIGludFtdIFdJVEggV1JBUFBF UiBFUlJPUiBPTiBFUlJPUik7CitFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBl IGludGVnZXI6ICJhIgorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDIsbnVsbCwiYSJdJywg JyRbKl0nIFJFVFVSTklORyBpbnRbXSBXSVRIIFdSQVBQRVIpOworIGpzb25fcXVlcnkgCistLS0t LS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUICogRlJPTSB1bm5lc3QoSlNPTl9RVUVSWShq c29uYiAnW3siYSI6IDEsICJ0IjogWyJmb28iLCBbXV19LCB7ImEiOiAyLCAiamIiOiBbe30sIHRy dWVdfV0nLCAnJCcgUkVUVVJOSU5HIHNxbGpzb25iX3JlY1tdKSk7CisgYSB8ICAgICAgdCAgICAg IHwganMgfCAgICAgamIgICAgIHwganNhIAorLS0tKy0tLS0tLS0tLS0tLS0rLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0KKyAxIHwgWyJmb28iLCBbXV0gfCAgICB8ICAgICAgICAgICAgfCAKKyAyIHwg ICAgICAgICAgICAgfCAgICB8IFt7fSwgdHJ1ZV0gfCAKKygyIHJvd3MpCisKKy0tIEV4dGVuc2lv bjogZG9tYWluIHR5cGVzIHJldHVybmluZworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ3siYSI6 IDF9JywgJyQuYScgUkVUVVJOSU5HIHNxbGpzb25iX2ludF9ub3RfbnVsbCk7CisganNvbl9xdWVy eSAKKy0tLS0tLS0tLS0tLQorICAgICAgICAgIDEKKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVF UlkoanNvbmIgJ3siYSI6IDF9JywgJyQuYicgUkVUVVJOSU5HIHNxbGpzb25iX2ludF9ub3RfbnVs bCk7CitFUlJPUjogIGRvbWFpbiBzcWxqc29uYl9pbnRfbm90X251bGwgZG9lcyBub3QgYWxsb3cg bnVsbCB2YWx1ZXMKKy0tIFRlc3QgdGltZXN0YW1wdHogcGFzc2luZyBhbmQgb3V0cHV0CitTRUxF Q1QgSlNPTl9RVUVSWShqc29uYiAnbnVsbCcsICckdHMnIFBBU1NJTkcgdGltZXN0YW1wdHogJzIw MTgtMDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyk7CisgICAgICAgICBqc29uX3F1ZXJ5ICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAiMjAxOC0wMi0yMVQwMjozNDo1 NiswMDowMCIKKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ251bGwnLCAnJHRz JyBQQVNTSU5HIHRpbWVzdGFtcHR6ICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMgUkVU VVJOSU5HIGpzb24pOworICAgICAgICAganNvbl9xdWVyeSAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgIjIwMTgtMDItMjFUMDI6MzQ6NTYrMDA6MDAiCisoMSByb3cp CisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdudWxsJywgJyR0cycgUEFTU0lORyB0aW1lc3Rh bXB0eiAnMjAxOC0wMi0yMSAxMjozNDo1NiArMTAnIEFTIHRzIFJFVFVSTklORyBqc29uYik7Cisg ICAgICAgICBqc29uX3F1ZXJ5ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAiMjAxOC0wMi0yMVQwMjozNDo1NiswMDowMCIKKygxIHJvdykKKworLS0gVGVzdCBjb25z dHJhaW50cworQ1JFQVRFIFRBQkxFIHRlc3RfanNvbmJfY29uc3RyYWludHMgKAorCWpzIHRleHQs CisJaSBpbnQsCisJeCBqc29uYiBERUZBVUxUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyRb Kl0nIFdJVEggV1JBUFBFUikKKwlDT05TVFJBSU5UIHRlc3RfanNvbmJfY29uc3RyYWludDEKKwkJ Q0hFQ0sgKGpzIElTIEpTT04pCisJQ09OU1RSQUlOVCB0ZXN0X2pzb25iX2NvbnN0cmFpbnQyCisJ CUNIRUNLIChKU09OX0VYSVNUUyhqczo6anNvbmIsICckLmEnIFBBU1NJTkcgaSArIDUgQVMgaW50 LCBpOjp0ZXh0IEFTIHR4dCwgYXJyYXlbMSwyLDNdIGFzIGFycikpCisJQ09OU1RSQUlOVCB0ZXN0 X2pzb25iX2NvbnN0cmFpbnQzCisJCUNIRUNLIChKU09OX1ZBTFVFKGpzOjpqc29uYiwgJyQuYScg UkVUVVJOSU5HIGludCBERUZBVUxUICcxMicgT04gRU1QVFkgRVJST1IgT04gRVJST1IpID4gaSkK KwlDT05TVFJBSU5UIHRlc3RfanNvbmJfY29uc3RyYWludDQKKwkJQ0hFQ0sgKEpTT05fUVVFUlko anM6Ompzb25iLCAnJC5hJyBXSVRIIENPTkRJVElPTkFMIFdSQVBQRVIgRU1QVFkgT0JKRUNUIE9O IEVSUk9SKSA8IGpzb25iICdbMTBdJykKKwlDT05TVFJBSU5UIHRlc3RfanNvbmJfY29uc3RyYWlu dDUKKwkJQ0hFQ0sgKEpTT05fUVVFUlkoanM6Ompzb25iLCAnJC5hJyBSRVRVUk5JTkcgY2hhcig1 KSBPTUlUIFFVT1RFUyBFTVBUWSBBUlJBWSBPTiBFTVBUWSkgPiAgJ2EnIENPTExBVEUgIkMiKQor KTsKK1xkIHRlc3RfanNvbmJfY29uc3RyYWludHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMudGVzdF9qc29uYl9jb25zdHJhaW50cyIKKyBD b2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIERlZmF1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIGpzICAgICB8IHRleHQgICAgfCAgICAgICAgICAgfCAgICAgICAg ICB8IAorIGkgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIHggICAg ICB8IGpzb25iICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IEpTT05fUVVFUlkoJ1sxLCAyXSc6 Ompzb25iLCAnJFsqXScgUkVUVVJOSU5HIGpzb25iIFdJVEggVU5DT05ESVRJT05BTCBXUkFQUEVS KQorQ2hlY2sgY29uc3RyYWludHM6CisgICAgInRlc3RfanNvbmJfY29uc3RyYWludDEiIENIRUNL IChqcyBJUyBKU09OKQorICAgICJ0ZXN0X2pzb25iX2NvbnN0cmFpbnQyIiBDSEVDSyAoSlNPTl9F WElTVFMoanM6Ompzb25iLCAnJC4iYSInIFBBU1NJTkcgaSArIDUgQVMgaW50LCBpOjp0ZXh0IEFT IHR4dCwgQVJSQVlbMSwgMiwgM10gQVMgYXJyKSkKKyAgICAidGVzdF9qc29uYl9jb25zdHJhaW50 MyIgQ0hFQ0sgKEpTT05fVkFMVUUoanM6Ompzb25iLCAnJC4iYSInIFJFVFVSTklORyBpbnRlZ2Vy IERFRkFVTFQgMTIgT04gRU1QVFkgRVJST1IgT04gRVJST1IpID4gaSkKKyAgICAidGVzdF9qc29u Yl9jb25zdHJhaW50NCIgQ0hFQ0sgKEpTT05fUVVFUlkoanM6Ompzb25iLCAnJC4iYSInIFJFVFVS TklORyBqc29uYiBXSVRIIENPTkRJVElPTkFMIFdSQVBQRVIgRU1QVFkgT0JKRUNUIE9OIEVSUk9S KSA8ICdbMTBdJzo6anNvbmIpCisgICAgInRlc3RfanNvbmJfY29uc3RyYWludDUiIENIRUNLIChK U09OX1FVRVJZKGpzOjpqc29uYiwgJyQuImEiJyBSRVRVUk5JTkcgY2hhcmFjdGVyKDUpIE9NSVQg UVVPVEVTIEVNUFRZIEFSUkFZIE9OIEVNUFRZKSA+ICgnYSc6OmJwY2hhciBDT0xMQVRFICJDIikp CisKK1NFTEVDVCBjaGVja19jbGF1c2UKK0ZST00gaW5mb3JtYXRpb25fc2NoZW1hLmNoZWNrX2Nv bnN0cmFpbnRzCitXSEVSRSBjb25zdHJhaW50X25hbWUgTElLRSAndGVzdF9qc29uYl9jb25zdHJh aW50JScKK09SREVSIEJZIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjaGVja19jbGF1c2UgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIChKU09OX1FVRVJZKChqcyk6Ompz b25iLCAnJC4iYSInIFJFVFVSTklORyBjaGFyYWN0ZXIoNSkgT01JVCBRVU9URVMgRU1QVFkgQVJS QVkgT04gRU1QVFkpID4gKCdhJzo6YnBjaGFyIENPTExBVEUgIkMiKSkKKyAoSlNPTl9RVUVSWSgo anMpOjpqc29uYiwgJyQuImEiJyBSRVRVUk5JTkcganNvbmIgV0lUSCBDT05ESVRJT05BTCBXUkFQ UEVSIEVNUFRZIE9CSkVDVCBPTiBFUlJPUikgPCAnWzEwXSc6Ompzb25iKQorIChKU09OX1ZBTFVF KChqcyk6Ompzb25iLCAnJC4iYSInIFJFVFVSTklORyBpbnRlZ2VyIERFRkFVTFQgMTIgT04gRU1Q VFkgRVJST1IgT04gRVJST1IpID4gaSkKKyAoanMgSVMgSlNPTikKKyBKU09OX0VYSVNUUygoanMp Ojpqc29uYiwgJyQuImEiJyBQQVNTSU5HIChpICsgNSkgQVMgaW50LCAoaSk6OnRleHQgQVMgdHh0 LCBBUlJBWVsxLCAyLCAzXSBBUyBhcnIpCisoNSByb3dzKQorCitTRUxFQ1QgcGdfZ2V0X2V4cHIo YWRiaW4sIGFkcmVsaWQpCitGUk9NIHBnX2F0dHJkZWYKK1dIRVJFIGFkcmVsaWQgPSAndGVzdF9q c29uYl9jb25zdHJhaW50cyc6OnJlZ2NsYXNzCitPUkRFUiBCWSAxOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHBnX2dldF9leHByICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSlNPTl9RVUVSWSgnWzEsIDJdJzo6 anNvbmIsICckWypdJyBSRVRVUk5JTkcganNvbmIgV0lUSCBVTkNPTkRJVElPTkFMIFdSQVBQRVIp CisoMSByb3cpCisKK0lOU0VSVCBJTlRPIHRlc3RfanNvbmJfY29uc3RyYWludHMgVkFMVUVTICgn JywgMSk7CitFUlJPUjogIG5ldyByb3cgZm9yIHJlbGF0aW9uICJ0ZXN0X2pzb25iX2NvbnN0cmFp bnRzIiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJ0ZXN0X2pzb25iX2NvbnN0cmFpbnQxIgor REVUQUlMOiAgRmFpbGluZyByb3cgY29udGFpbnMgKCwgMSwgWzEsIDJdKS4KK0lOU0VSVCBJTlRP IHRlc3RfanNvbmJfY29uc3RyYWludHMgVkFMVUVTICgnMScsIDEpOworRVJST1I6ICBuZXcgcm93 IGZvciByZWxhdGlvbiAidGVzdF9qc29uYl9jb25zdHJhaW50cyIgdmlvbGF0ZXMgY2hlY2sgY29u c3RyYWludCAidGVzdF9qc29uYl9jb25zdHJhaW50MiIKK0RFVEFJTDogIEZhaWxpbmcgcm93IGNv bnRhaW5zICgxLCAxLCBbMSwgMl0pLgorSU5TRVJUIElOVE8gdGVzdF9qc29uYl9jb25zdHJhaW50 cyBWQUxVRVMgKCdbXScpOworRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAidGVzdF9qc29u Yl9jb25zdHJhaW50cyIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAidGVzdF9qc29uYl9jb25z dHJhaW50MiIKK0RFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zIChbXSwgbnVsbCwgWzEsIDJd KS4KK0lOU0VSVCBJTlRPIHRlc3RfanNvbmJfY29uc3RyYWludHMgVkFMVUVTICgneyJiIjogMX0n LCAxKTsKK0VSUk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24gInRlc3RfanNvbmJfY29uc3RyYWlu dHMiIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgInRlc3RfanNvbmJfY29uc3RyYWludDIiCitE RVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAoeyJiIjogMX0sIDEsIFsxLCAyXSkuCitJTlNF UlQgSU5UTyB0ZXN0X2pzb25iX2NvbnN0cmFpbnRzIFZBTFVFUyAoJ3siYSI6IDF9JywgMSk7CitF UlJPUjogIG5ldyByb3cgZm9yIHJlbGF0aW9uICJ0ZXN0X2pzb25iX2NvbnN0cmFpbnRzIiB2aW9s YXRlcyBjaGVjayBjb25zdHJhaW50ICJ0ZXN0X2pzb25iX2NvbnN0cmFpbnQzIgorREVUQUlMOiAg RmFpbGluZyByb3cgY29udGFpbnMgKHsiYSI6IDF9LCAxLCBbMSwgMl0pLgorSU5TRVJUIElOVE8g dGVzdF9qc29uYl9jb25zdHJhaW50cyBWQUxVRVMgKCd7ImEiOiA3fScsIDEpOworRVJST1I6ICBu ZXcgcm93IGZvciByZWxhdGlvbiAidGVzdF9qc29uYl9jb25zdHJhaW50cyIgdmlvbGF0ZXMgY2hl Y2sgY29uc3RyYWludCAidGVzdF9qc29uYl9jb25zdHJhaW50NSIKK0RFVEFJTDogIEZhaWxpbmcg cm93IGNvbnRhaW5zICh7ImEiOiA3fSwgMSwgWzEsIDJdKS4KK0lOU0VSVCBJTlRPIHRlc3RfanNv bmJfY29uc3RyYWludHMgVkFMVUVTICgneyJhIjogMTB9JywgMSk7CitFUlJPUjogIG5ldyByb3cg Zm9yIHJlbGF0aW9uICJ0ZXN0X2pzb25iX2NvbnN0cmFpbnRzIiB2aW9sYXRlcyBjaGVjayBjb25z dHJhaW50ICJ0ZXN0X2pzb25iX2NvbnN0cmFpbnQ0IgorREVUQUlMOiAgRmFpbGluZyByb3cgY29u dGFpbnMgKHsiYSI6IDEwfSwgMSwgWzEsIDJdKS4KK0RST1AgVEFCTEUgdGVzdF9qc29uYl9jb25z dHJhaW50czsKKy0tIFRlc3QgbXV0YWJpbGlseSBvZiBxdWVyeSBmdW5jdGlvbnMKK0NSRUFURSBU QUJMRSB0ZXN0X2pzb25iX211dGFiaWxpdHkoanMganNvbmIpOworQ1JFQVRFIElOREVYIE9OIHRl c3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQnKSk7CitDUkVBVEUgSU5ERVgg T04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5hWzBdJykpOworQ1JF QVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuZGF0 ZXRpbWUoKScpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05f UVVFUlkoanMsICckLmEgPyAoQCA8ICQuZGF0ZXRpbWUoKSknKSk7CitDUkVBVEUgSU5ERVggT04g dGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5hID8gKEAuZGF0ZXRpbWUo KSA8ICQuZGF0ZXRpbWUoKSknKSk7CitFUlJPUjogIGZ1bmN0aW9ucyBpbiBpbmRleCBleHByZXNz aW9uIG11c3QgYmUgbWFya2VkIElNTVVUQUJMRQorQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJf bXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuYSA/IChALmRhdGV0aW1lKCkgPCAkLmRhdGV0 aW1lKCJISDpNSSBUWkgiKSknKSk7CitFUlJPUjogIGZ1bmN0aW9ucyBpbiBpbmRleCBleHByZXNz aW9uIG11c3QgYmUgbWFya2VkIElNTVVUQUJMRQorQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJf bXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuYSA/IChALmRhdGV0aW1lKCJISDpNSSBUWkgi KSA8ICQuZGF0ZXRpbWUoIkhIOk1JIFRaSCIpKScpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pz b25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmEgPyAoQC5kYXRldGltZSgiSEg6TUki KSA8ICQuZGF0ZXRpbWUoIllZLU1NLUREIEhIOk1JIikpJykpOworQ1JFQVRFIElOREVYIE9OIHRl c3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuYSA/IChALmRhdGV0aW1lKCJI SDpNSSBUWkgiKSA8ICQuZGF0ZXRpbWUoIllZLU1NLUREIEhIOk1JIikpJykpOworRVJST1I6ICBm dW5jdGlvbnMgaW4gaW5kZXggZXhwcmVzc2lvbiBtdXN0IGJlIG1hcmtlZCBJTU1VVEFCTEUKK0NS RUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmRh dGV0aW1lKCJISDpNSSBUWkgiKSA8ICR4JyBQQVNTSU5HICcxMjozNCc6OnRpbWV0eiBBUyB4KSk7 CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAn JC5kYXRldGltZSgiSEg6TUkgVFpIIikgPCAkeScgUEFTU0lORyAnMTI6MzQnOjp0aW1ldHogQVMg eCkpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShq cywgJyQuZGF0ZXRpbWUoKSA8ICR4JyBQQVNTSU5HICcxMjozNCc6OnRpbWV0eiBBUyB4KSk7CitF UlJPUjogIGZ1bmN0aW9ucyBpbiBpbmRleCBleHByZXNzaW9uIG11c3QgYmUgbWFya2VkIElNTVVU QUJMRQorQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShq cywgJyQuZGF0ZXRpbWUoKSA8ICR4JyBQQVNTSU5HICcxMjM0Jzo6aW50IEFTIHgpKTsKK0NSRUFU RSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmRhdGV0 aW1lKCkgPyAoQCA9PSAkeCknIFBBU1NJTkcgJzEyOjM0Jzo6dGltZSBBUyB4KSk7CitFUlJPUjog IGZ1bmN0aW9ucyBpbiBpbmRleCBleHByZXNzaW9uIG11c3QgYmUgbWFya2VkIElNTVVUQUJMRQor Q1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQu ZGF0ZXRpbWUoIllZLU1NLUREIikgPyAoQCA9PSAkeCknIFBBU1NJTkcgJzIwMjAtMDctMTQnOjpk YXRlIEFTIHgpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05f UVVFUlkoanMsICckWzEsICQuYSA/IChALmRhdGV0aW1lKCkgPT0gJHgpXScgUEFTU0lORyAnMTI6 MzQnOjp0aW1lIEFTIHgpKTsKK0VSUk9SOiAgZnVuY3Rpb25zIGluIGluZGV4IGV4cHJlc3Npb24g bXVzdCBiZSBtYXJrZWQgSU1NVVRBQkxFCitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRh YmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJFsxLCAwIHRvICQuYSA/IChALmRhdGV0aW1lKCkgPT0g JHgpXScgUEFTU0lORyAnMTI6MzQnOjp0aW1lIEFTIHgpKTsKK0VSUk9SOiAgZnVuY3Rpb25zIGlu IGluZGV4IGV4cHJlc3Npb24gbXVzdCBiZSBtYXJrZWQgSU1NVVRBQkxFCitDUkVBVEUgSU5ERVgg T04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJFsxLCAkLmEgPyAoQC5k YXRldGltZSgiSEg6TUkiKSA9PSAkeCldJyBQQVNTSU5HICcxMjozNCc6OnRpbWUgQVMgeCkpOwor RFJPUCBUQUJMRSB0ZXN0X2pzb25iX211dGFiaWxpdHk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hl ZHVsZQppbmRleCBmMDk4N2ZmNTM3Li44NjRiZjA0ZmU3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxf c2NoZWR1bGUKQEAgLTEwMyw3ICsxMDMsNyBAQCB0ZXN0OiBzZWxlY3Rfdmlld3MgcG9ydGFsc19w MiBmb3JlaWduX2tleSBjbHVzdGVyIGRlcGVuZGVuY3kgZ3VjIGJpdG1hcG9wcyBjb21ibwogIyAt LS0tLS0tLS0tCiAjIEFub3RoZXIgZ3JvdXAgb2YgcGFyYWxsZWwgdGVzdHMgKEpTT04gcmVsYXRl ZCkKICMgLS0tLS0tLS0tLQotdGVzdDoganNvbiBqc29uYiBqc29uX2VuY29kaW5nIGpzb25wYXRo IGpzb25wYXRoX2VuY29kaW5nIGpzb25iX2pzb25wYXRoIHNxbGpzb24KK3Rlc3Q6IGpzb24ganNv bmIganNvbl9lbmNvZGluZyBqc29ucGF0aCBqc29ucGF0aF9lbmNvZGluZyBqc29uYl9qc29ucGF0 aCBzcWxqc29uIGpzb25fc3FsanNvbiBqc29uYl9zcWxqc29uCiAKICMgLS0tLS0tLS0tLQogIyBB bm90aGVyIGdyb3VwIG9mIHBhcmFsbGVsIHRlc3RzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9qc29uX3NxbGpzb24uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbl9zcWxq c29uLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi40ZjMwZmE0NmI5 Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbl9zcWxqc29uLnNx bApAQCAtMCwwICsxLDExIEBACistLSBKU09OX0VYSVNUUworCitTRUxFQ1QgSlNPTl9FWElTVFMo TlVMTCBGT1JNQVQgSlNPTiwgJyQnKTsKKworLS0gSlNPTl9WQUxVRQorCitTRUxFQ1QgSlNPTl9W QUxVRShOVUxMIEZPUk1BVCBKU09OLCAnJCcpOworCistLSBKU09OX1FVRVJZCisKK1NFTEVDVCBK U09OX1FVRVJZKE5VTEwgRk9STUFUIEpTT04sICckJyk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9qc29uYl9zcWxqc29uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25i X3NxbGpzb24uc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmI2NGM5 MDE3ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYl9zcWxq c29uLnNxbApAQCAtMCwwICsxLDM1MCBAQAorLS0gSlNPTl9FWElTVFMKK1NFTEVDVCBKU09OX0VY SVNUUyhOVUxMOjpqc29uYiwgJyQnKTsKKworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICdbXScs ICckJyk7CitTRUxFQ1QgSlNPTl9FWElTVFMoSlNPTl9PQkpFQ1QoUkVUVVJOSU5HIGpzb25iKSwg JyQnKTsKKworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICcxJywgJyQnKTsKK1NFTEVDVCBKU09O X0VYSVNUUyhqc29uYiAnbnVsbCcsICckJyk7CitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ1td JywgJyQnKTsKKworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICcxJywgJyQuYScpOworU0VMRUNU IEpTT05fRVhJU1RTKGpzb25iICcxJywgJ3N0cmljdCAkLmEnKTsgLS0gRkFMU0Ugb24gZXJyb3IK K1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnMScsICdzdHJpY3QgJC5hJyBFUlJPUiBPTiBFUlJP Uik7CitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ251bGwnLCAnJC5hJyk7CitTRUxFQ1QgSlNP Tl9FWElTVFMoanNvbmIgJ1tdJywgJyQuYScpOworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICdb MSwgImFhYSIsIHsiYSI6IDF9XScsICdzdHJpY3QgJC5hJyk7IC0tIEZBTFNFIG9uIGVycm9yCitT RUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ1sxLCAiYWFhIiwgeyJhIjogMX1dJywgJ2xheCAkLmEn KTsKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAne30nLCAnJC5hJyk7CitTRUxFQ1QgSlNPTl9F WElTVFMoanNvbmIgJ3siYiI6IDEsICJhIjogMn0nLCAnJC5hJyk7CisKK1NFTEVDVCBKU09OX0VY SVNUUyhqc29uYiAnMScsICckLmEuYicpOworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICd7ImEi OiB7ImIiOiAxfX0nLCAnJC5hLmInKTsKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAneyJhIjog MSwgImIiOiAyfScsICckLmEuYicpOworCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ3siYSI6 IDEsICJiIjogMn0nLCAnJC4qID8gKEAgPiAkeCknIFBBU1NJTkcgMSBBUyB4KTsKK1NFTEVDVCBK U09OX0VYSVNUUyhqc29uYiAneyJhIjogMSwgImIiOiAyfScsICckLiogPyAoQCA+ICR4KScgUEFT U0lORyAnMScgQVMgeCk7CitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ3siYSI6IDEsICJiIjog Mn0nLCAnJC4qID8gKEAgPiAkeCAmJiBAIDwgJHkpJyBQQVNTSU5HIDAgQVMgeCwgMiBBUyB5KTsK K1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAneyJhIjogMSwgImIiOiAyfScsICckLiogPyAoQCA+ ICR4ICYmIEAgPCAkeSknIFBBU1NJTkcgMCBBUyB4LCAxIEFTIHkpOworCistLSBleHRlbnNpb246 IGJvb2xlYW4gZXhwcmVzc2lvbnMKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnMScsICckID4g MicpOworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICcxJywgJyQuYSA+IDInIEVSUk9SIE9OIEVS Uk9SKTsKKworLS0gSlNPTl9WQUxVRQorCitTRUxFQ1QgSlNPTl9WQUxVRShOVUxMOjpqc29uYiwg JyQnKTsKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJCcpOworU0VMRUNUIEpT T05fVkFMVUUoanNvbmIgJ251bGwnLCAnJCcgUkVUVVJOSU5HIGludCk7CisKK1NFTEVDVCBKU09O X1ZBTFVFKGpzb25iICd0cnVlJywgJyQnKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICd0cnVl JywgJyQnIFJFVFVSTklORyBib29sKTsKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEyMycs ICckJyk7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMTIzJywgJyQnIFJFVFVSTklORyBpbnQp ICsgMjM0OworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEyMycsICckJyBSRVRVUk5JTkcgdGV4 dCk7CisvKiBqc29uYiBieXRlYSA/Pz8gKi8KK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxMjMn LCAnJCcgUkVUVVJOSU5HIGJ5dGVhIEVSUk9SIE9OIEVSUk9SKTsKKworU0VMRUNUIEpTT05fVkFM VUUoanNvbmIgJzEuMjMnLCAnJCcpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEuMjMnLCAn JCcgUkVUVVJOSU5HIGludCk7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnIjEuMjMiJywgJyQn IFJFVFVSTklORyBudW1lcmljKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciMS4yMyInLCAn JCcgUkVUVVJOSU5HIGludCBFUlJPUiBPTiBFUlJPUik7CisKK1NFTEVDVCBKU09OX1ZBTFVFKGpz b25iICciYWFhIicsICckJyk7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcg UkVUVVJOSU5HIHRleHQpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJhYWEiJywgJyQnIFJF VFVSTklORyBjaGFyKDUpKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciYWFhIicsICckJyBS RVRVUk5JTkcgY2hhcigyKSk7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcg UkVUVVJOSU5HIGpzb24pOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJhYWEiJywgJyQnIFJF VFVSTklORyBqc29uYik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVU VVJOSU5HIGpzb24gRVJST1IgT04gRVJST1IpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJh YWEiJywgJyQnIFJFVFVSTklORyBqc29uYiBFUlJPUiBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9W QUxVRShqc29uYiAnIlwiYWFhXCIiJywgJyQnIFJFVFVSTklORyBqc29uKTsKK1NFTEVDVCBKU09O X1ZBTFVFKGpzb25iICciXCJhYWFcIiInLCAnJCcgUkVUVVJOSU5HIGpzb25iKTsKK1NFTEVDVCBK U09OX1ZBTFVFKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcgaW50KTsKK1NFTEVDVCBKU09O X1ZBTFVFKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcgaW50IEVSUk9SIE9OIEVSUk9SKTsK K1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcgaW50IERFRkFV TFQgMTExIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciMTIzIicsICckJyBS RVRVUk5JTkcgaW50KSArIDIzNDsKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyIyMDE3LTAy LTIwIicsICckJyBSRVRVUk5JTkcgZGF0ZSkgKyA5OworCistLSBUZXN0IE5VTEwgY2hlY2tzIGV4 ZWN1dGlvbiBpbiBkb21haW4gdHlwZXMKK0NSRUFURSBET01BSU4gc3FsanNvbmJfaW50X25vdF9u dWxsIEFTIGludCBOT1QgTlVMTDsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyQn IFJFVFVSTklORyBzcWxqc29uYl9pbnRfbm90X251bGwpOworU0VMRUNUIEpTT05fVkFMVUUoanNv bmIgJ251bGwnLCAnJCcgUkVUVVJOSU5HIHNxbGpzb25iX2ludF9ub3RfbnVsbCBFUlJPUiBPTiBF UlJPUik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckJyBSRVRVUk5JTkcgc3Fs anNvbmJfaW50X25vdF9udWxsIERFRkFVTFQgMiBPTiBFTVBUWSBFUlJPUiBPTiBFUlJPUik7CitT RUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScsICAnJC5hJyBSRVRVUk5JTkcgc3FsanNvbmJfaW50 X25vdF9udWxsIERFRkFVTFQgMiBPTiBFTVBUWSBFUlJPUiBPTiBFUlJPUik7CitTRUxFQ1QgSlNP Tl9WQUxVRShqc29uYiAnMScsICAnJC5hJyBSRVRVUk5JTkcgc3FsanNvbmJfaW50X25vdF9udWxs IERFRkFVTFQgTlVMTCBPTiBFTVBUWSBFUlJPUiBPTiBFUlJPUik7CitDUkVBVEUgVFlQRSByYWlu Ym93IEFTIEVOVU0gKCdyZWQnLCAnb3JhbmdlJywgJ3llbGxvdycsICdncmVlbicsICdibHVlJywg J3B1cnBsZScpOworQ1JFQVRFIERPTUFJTiByZ2IgQVMgcmFpbmJvdyBDSEVDSyAoVkFMVUUgSU4g KCdyZWQnLCAnZ3JlZW4nLCAnYmx1ZScpKTsKK1NFTEVDVCBKU09OX1ZBTFVFKCcicHVycGxlIic6 Ompzb25iLCAnbGF4ICRbKl0nIFJFVFVSTklORyByZ2IpOworU0VMRUNUIEpTT05fVkFMVUUoJyJw dXJwbGUiJzo6anNvbmIsICdsYXggJFsqXScgUkVUVVJOSU5HIHJnYiBFUlJPUiBPTiBFUlJPUik7 CisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdbXScsICckJyk7CitTRUxFQ1QgSlNPTl9WQUxV RShqc29uYiAnW10nLCAnJCcgRVJST1IgT04gRVJST1IpOworU0VMRUNUIEpTT05fVkFMVUUoanNv bmIgJ3t9JywgJyQnKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICd7fScsICckJyBFUlJPUiBP TiBFUlJPUik7CisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJyQuYScpOworU0VMRUNU IEpTT05fVkFMVUUoanNvbmIgJzEnLCAnc3RyaWN0ICQuYScgRVJST1IgT04gRVJST1IpOworU0VM RUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAnc3RyaWN0ICQuYScgREVGQVVMVCAnZXJyb3InIE9O IEVSUk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ2xheCAkLmEnIEVSUk9SIE9O IEVSUk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ2xheCAkLmEnIEVSUk9SIE9O IEVNUFRZIEVSUk9SIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ3N0 cmljdCAkLmEnIERFRkFVTFQgMiBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAn MScsICdsYXggJC5hJyBERUZBVUxUIDIgT04gRVJST1IpOworU0VMRUNUIEpTT05fVkFMVUUoanNv bmIgJzEnLCAnbGF4ICQuYScgREVGQVVMVCAnMicgT04gRVJST1IpOworU0VMRUNUIEpTT05fVkFM VUUoanNvbmIgJzEnLCAnbGF4ICQuYScgTlVMTCBPTiBFTVBUWSBERUZBVUxUICcyJyBPTiBFUlJP Uik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScsICdsYXggJC5hJyBERUZBVUxUICcyJyBP TiBFTVBUWSBERUZBVUxUICczJyBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAn MScsICdsYXggJC5hJyBFUlJPUiBPTiBFTVBUWSBERUZBVUxUICczJyBPTiBFUlJPUik7CisKK1NF TEVDVCBKU09OX1ZBTFVFKGpzb25iICdbMSwyXScsICckWypdJyBFUlJPUiBPTiBFUlJPUik7CitT RUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnWzEsMl0nLCAnJFsqXScgREVGQVVMVCAnMCcgT04gRVJS T1IpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ1siICJdJywgJyRbKl0nIFJFVFVSTklORyBp bnQgRVJST1IgT04gRVJST1IpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ1siICJdJywgJyRb Kl0nIFJFVFVSTklORyBpbnQgREVGQVVMVCAyICsgMyBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9W QUxVRShqc29uYiAnWyIxIl0nLCAnJFsqXScgUkVUVVJOSU5HIGludCBERUZBVUxUIDIgKyAzIE9O IEVSUk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdbIjEiXScsICckWypdJyBSRVRVUk5J TkcgaW50IEZPUk1BVCBKU09OKTsgLS0gUkVUVVJOSU5HIEZPUk1BVCBub3QgYWxsb3dlZAorCist LSBSRVRVR05JTkcgcHNldWRvLXR5cGVzIG5vdCBhbGxvd2VkCitTRUxFQ1QgSlNPTl9WQUxVRShq c29uYiAnWyIxIl0nLCAnJFsqXScgUkVUVVJOSU5HIHJlY29yZCk7CisKK1NFTEVDVAorCXgsCisJ SlNPTl9WQUxVRSgKKwkJanNvbmIgJ3siYSI6IDEsICJiIjogMn0nLAorCQknJC4qID8gKEAgPiAk eCknIFBBU1NJTkcgeCBBUyB4CisJCVJFVFVSTklORyBpbnQKKwkJREVGQVVMVCAtMSBPTiBFTVBU WQorCQlERUZBVUxUIC0yIE9OIEVSUk9SCisJKSB5CitGUk9NCisJZ2VuZXJhdGVfc2VyaWVzKDAs IDIpIHg7CisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyRhJyBQQVNTSU5HIHBv aW50ICcgKDEsIDIgKScgQVMgYSk7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICck YScgUEFTU0lORyBwb2ludCAnICgxLCAyICknIEFTIGEgUkVUVVJOSU5HIHBvaW50KTsKK1NFTEVD VCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyRhJyBQQVNTSU5HIHBvaW50ICcgKDEsIDIgKScg QVMgYSBSRVRVUk5JTkcgcG9pbnQgRVJST1IgT04gRVJST1IpOworCistLSBUZXN0IFBBU1NJTkcg YW5kIFJFVFVSTklORyBkYXRlL3RpbWUgdHlwZXMKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdu dWxsJywgJyR0cycgUEFTU0lORyB0aW1lc3RhbXB0eiAnMjAxOC0wMi0yMSAxMjozNDo1NiArMTAn IEFTIHRzKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyR0cycgUEFTU0lORyB0 aW1lc3RhbXB0eiAnMjAxOC0wMi0yMSAxMjozNDo1NiArMTAnIEFTIHRzIFJFVFVSTklORyB0aW1l c3RhbXB0eik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckdHMnIFBBU1NJTkcg dGltZXN0YW1wdHogJzIwMTgtMDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyBSRVRVUk5JTkcgdGlt ZXN0YW1wKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyR0cycgUEFTU0lORyBk YXRlICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMgUkVUVVJOSU5HIGRhdGUpOworU0VM RUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5HIHRpbWUgJzIwMTgtMDIt MjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyBSRVRVUk5JTkcgdGltZSk7CitTRUxFQ1QgSlNPTl9WQUxV RShqc29uYiAnbnVsbCcsICckdHMnIFBBU1NJTkcgdGltZXR6ICcyMDE4LTAyLTIxIDEyOjM0OjU2 ICsxMCcgQVMgdHMgUkVUVVJOSU5HIHRpbWV0eik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAn bnVsbCcsICckdHMnIFBBU1NJTkcgdGltZXN0YW1wICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcg QVMgdHMgUkVUVVJOSU5HIHRpbWVzdGFtcCk7CisKKy0tIEFsc28gdGVzdCBSRVRVUk5JTkcganNv bltiXQorU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5HIHRpbWVz dGFtcHR6ICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMgUkVUVVJOSU5HIGpzb24pOwor U0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5HIHRpbWVzdGFtcHR6 ICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMgUkVUVVJOSU5HIGpzb25iKTsKKworLS0g SlNPTl9RVUVSWQorCitTRUxFQ1QKKwlKU09OX1FVRVJZKGpzLCAnJCcpLAorCUpTT05fUVVFUlko anMsICckJyBXSVRIT1VUIFdSQVBQRVIpLAorCUpTT05fUVVFUlkoanMsICckJyBXSVRIIENPTkRJ VElPTkFMIFdSQVBQRVIpLAorCUpTT05fUVVFUlkoanMsICckJyBXSVRIIFVOQ09ORElUSU9OQUwg QVJSQVkgV1JBUFBFUiksCisJSlNPTl9RVUVSWShqcywgJyQnIFdJVEggQVJSQVkgV1JBUFBFUikK K0ZST00KKwkoVkFMVUVTCisJCShqc29uYiAnbnVsbCcpLAorCQkoJzEyLjMnKSwKKwkJKCd0cnVl JyksCisJCSgnImFhYSInKSwKKwkJKCdbMSwgbnVsbCwgIjIiXScpLAorCQkoJ3siYSI6IDEsICJi IjogWzJdfScpCisJKSBmb28oanMpOworCitTRUxFQ1QKKwlKU09OX1FVRVJZKGpzLCAnc3RyaWN0 ICRbKl0nKSBBUyAidW5zcGVjIiwKKwlKU09OX1FVRVJZKGpzLCAnc3RyaWN0ICRbKl0nIFdJVEhP VVQgV1JBUFBFUikgQVMgIndpdGhvdXQiLAorCUpTT05fUVVFUlkoanMsICdzdHJpY3QgJFsqXScg V0lUSCBDT05ESVRJT05BTCBXUkFQUEVSKSBBUyAid2l0aCBjb25kIiwKKwlKU09OX1FVRVJZKGpz LCAnc3RyaWN0ICRbKl0nIFdJVEggVU5DT05ESVRJT05BTCBBUlJBWSBXUkFQUEVSKSBBUyAid2l0 aCB1bmNvbmQiLAorCUpTT05fUVVFUlkoanMsICdzdHJpY3QgJFsqXScgV0lUSCBBUlJBWSBXUkFQ UEVSKSBBUyAid2l0aCIKK0ZST00KKwkoVkFMVUVTCisJCShqc29uYiAnMScpLAorCQkoJ1tdJyks CisJCSgnW251bGxdJyksCisJCSgnWzEyLjNdJyksCisJCSgnW3RydWVdJyksCisJCSgnWyJhYWEi XScpLAorCQkoJ1tbMSwgMiwgM11dJyksCisJCSgnW3siYSI6IDEsICJiIjogWzJdfV0nKSwKKwkJ KCdbMSwgIjIiLCBudWxsLCBbM11dJykKKwkpIGZvbyhqcyk7CisKK1NFTEVDVCBKU09OX1FVRVJZ KGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcgdGV4dCk7CitTRUxFQ1QgSlNPTl9RVUVSWShq c29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIHRleHQgS0VFUCBRVU9URVMpOworU0VMRUNUIEpT T05fUVVFUlkoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyB0ZXh0IEtFRVAgUVVPVEVTIE9O IFNDQUxBUiBTVFJJTkcpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyJhYWEiJywgJyQnIFJF VFVSTklORyB0ZXh0IE9NSVQgUVVPVEVTKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICciYWFh IicsICckJyBSRVRVUk5JTkcgdGV4dCBPTUlUIFFVT1RFUyBPTiBTQ0FMQVIgU1RSSU5HKTsKK1NF TEVDVCBKU09OX1FVRVJZKGpzb25iICciYWFhIicsICckJyBPTUlUIFFVT1RFUyBFUlJPUiBPTiBF UlJPUik7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIGpz b24gT01JVCBRVU9URVMgRVJST1IgT04gRVJST1IpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIg JyJhYWEiJywgJyQnIFJFVFVSTklORyBieXRlYSBGT1JNQVQgSlNPTiBPTUlUIFFVT1RFUyBFUlJP UiBPTiBFUlJPUik7CisKKy0tIFFVT1RFUyBiZWhhdmlvciBzaG91bGQgbm90IGJlIHNwZWNpZmll ZCB3aGVuIFdJVEggV1JBUFBFUiB1c2VkOgorLS0gU2hvdWxkIGZhaWwKK1NFTEVDVCBKU09OX1FV RVJZKGpzb25iICdbMV0nLCAnJCcgV0lUSCBXUkFQUEVSIE9NSVQgUVVPVEVTKTsKK1NFTEVDVCBK U09OX1FVRVJZKGpzb25iICdbMV0nLCAnJCcgV0lUSCBXUkFQUEVSIEtFRVAgUVVPVEVTKTsKK1NF TEVDVCBKU09OX1FVRVJZKGpzb25iICdbMV0nLCAnJCcgV0lUSCBDT05ESVRJT05BTCBXUkFQUEVS IEtFRVAgUVVPVEVTKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMV0nLCAnJCcgV0lUSCBD T05ESVRJT05BTCBXUkFQUEVSIE9NSVQgUVVPVEVTKTsKKy0tIFNob3VsZCBzdWNjZWVkCitTRUxF Q1QgSlNPTl9RVUVSWShqc29uYiAnWzFdJywgJyQnIFdJVEhPVVQgV1JBUFBFUiBPTUlUIFFVT1RF Uyk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzFdJywgJyQnIFdJVEhPVVQgV1JBUFBFUiBL RUVQIFFVT1RFUyk7CisKKy0tIHRlc3QgUVVPVEVTIGJlaGF2aW9yLgorU0VMRUNUIEpTT05fUVVF UlkoanNvbmIneyJyZWMiOiAiezEsMiwzfSJ9JywgJyQucmVjJyByZXR1cm5pbmcgaW50W10gb21p dCBxdW90ZXMpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIneyJyZWMiOiAiezEsMiwzfSJ9Jywg JyQucmVjJyByZXR1cm5pbmcgaW50W10ga2VlcCBxdW90ZXMpOworU0VMRUNUIEpTT05fUVVFUlko anNvbmIneyJyZWMiOiAiezEsMiwzfSJ9JywgJyQucmVjJyByZXR1cm5pbmcgaW50W10ga2VlcCBx dW90ZXMgZXJyb3Igb24gZXJyb3IpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIneyJyZWMiOiAi WzEsMl0ifScsICckLnJlYycgcmV0dXJuaW5nIGludDRyYW5nZSBvbWl0IHF1b3Rlcyk7CitTRUxF Q1QgSlNPTl9RVUVSWShqc29uYid7InJlYyI6ICJbMSwyXSJ9JywgJyQucmVjJyByZXR1cm5pbmcg aW50NHJhbmdlIGtlZXAgcXVvdGVzKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iJ3sicmVjIjog IlsxLDJdIn0nLCAnJC5yZWMnIAlyZXR1cm5pbmcgaW50NHJhbmdlIGtlZXAgcXVvdGVzIGVycm9y IG9uIGVycm9yKTsKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nKTsKK1NF TEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBOVUxMIE9OIEVNUFRZKTsKK1NFTEVD VCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBFTVBUWSBPTiBFTVBUWSk7CitTRUxFQ1Qg SlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScgRU1QVFkgQVJSQVkgT04gRU1QVFkpOworU0VM RUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIEVNUFRZIE9CSkVDVCBPTiBFTVBUWSk7 CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScgRVJST1IgT04gRU1QVFkpOwor U0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIERFRkFVTFQgJyJlbXB0eSInIE9O IEVNUFRZKTsKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIEVSUk9SIE9O IEVNUFRZIE5VTEwgT04gRVJST1IpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRb Kl0nIEVSUk9SIE9OIEVNUFRZIEVNUFRZIEFSUkFZIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1FV RVJZKGpzb25iICdbXScsICckWypdJyBFUlJPUiBPTiBFTVBUWSBFTVBUWSBPQkpFQ1QgT04gRVJS T1IpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIEVSUk9SIE9OIEVNUFRZ IEVSUk9SIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBF UlJPUiBPTiBFUlJPUik7CisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckWypd JyBFUlJPUiBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJFsq XScgREVGQVVMVCAnImVtcHR5IicgT04gRVJST1IpOworCitTRUxFQ1QgSlNPTl9RVUVSWShqc29u YiAnWzEsMl0nLCAnJCcgUkVUVVJOSU5HIGpzb24pOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIg J1sxLDJdJywgJyQnIFJFVFVSTklORyBqc29uIEZPUk1BVCBKU09OKTsKK1NFTEVDVCBKU09OX1FV RVJZKGpzb25iICdbMSwyXScsICckJyBSRVRVUk5JTkcganNvbmIpOworU0VMRUNUIEpTT05fUVVF UlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklORyBqc29uYiBGT1JNQVQgSlNPTik7CitTRUxF Q1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJCcgUkVUVVJOSU5HIHRleHQpOworU0VMRUNU IEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklORyBjaGFyKDEwKSk7CitTRUxF Q1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJCcgUkVUVVJOSU5HIGNoYXIoMykpOworU0VM RUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklORyB0ZXh0IEZPUk1BVCBK U09OKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckJyBSRVRVUk5JTkcgYnl0 ZWEpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklORyBieXRl YSBGT1JNQVQgSlNPTik7CisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckWypd JyBSRVRVUk5JTkcgYnl0ZWEgRU1QVFkgT0JKRUNUIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1FV RVJZKGpzb25iICdbMSwyXScsICckWypdJyBSRVRVUk5JTkcgYnl0ZWEgRk9STUFUIEpTT04gRU1Q VFkgT0JKRUNUIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICck WypdJyBSRVRVUk5JTkcganNvbiBFTVBUWSBPQkpFQ1QgT04gRVJST1IpOworU0VMRUNUIEpTT05f UVVFUlkoanNvbmIgJ1sxLDJdJywgJyRbKl0nIFJFVFVSTklORyBqc29uYiBFTVBUWSBPQkpFQ1Qg T04gRVJST1IpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1szLDRdJywgJyRbKl0nIFJFVFVS TklORyBiaWdpbnRbXSBFTVBUWSBPQkpFQ1QgT04gRVJST1IpOworU0VMRUNUIEpTT05fUVVFUlko anNvbmIgJyJbMyw0XSInLCAnJFsqXScgUkVUVVJOSU5HIGJpZ2ludFtdIEVNUFRZIE9CSkVDVCBP TiBFUlJPUik7CisKKy0tIFJFVFVHTklORyBwc2V1ZG8tdHlwZXMgbm90IGFsbG93ZWQKK1NFTEVD VCBKU09OX1FVRVJZKGpzb25iICdbMyw0XScsICckWypdJyBSRVRVUk5JTkcgYW55YXJyYXkgRU1Q VFkgT0JKRUNUIE9OIEVSUk9SKTsKKworU0VMRUNUCisJeCwgeSwKKwlKU09OX1FVRVJZKAorCQlq c29uYiAnWzEsMiwzLDQsNSxudWxsXScsCisJCSckWypdID8gKEAgPj0gJHggJiYgQCA8PSAkeSkn CisJCVBBU1NJTkcgeCBBUyB4LCB5IEFTIHkKKwkJV0lUSCBDT05ESVRJT05BTCBXUkFQUEVSCisJ CUVNUFRZIEFSUkFZIE9OIEVNUFRZCisJKSBsaXN0CitGUk9NCisJZ2VuZXJhdGVfc2VyaWVzKDAs IDQpIHgsCisJZ2VuZXJhdGVfc2VyaWVzKDAsIDQpIHk7CisKKy0tIHJlY29yZCB0eXBlIHJldHVy bmluZyB3aXRoIHF1b3RlcyBiZWhhdmlvci4KK0NSRUFURSBUWVBFIGNvbXBfYWJjIEFTIChhIHRl eHQsIGIgaW50LCBjIHRpbWVzdGFtcCk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYid7InJlYyI6 ICIoYWJjLDQyLDAxLjAyLjIwMDMpIn0nLCAnJC5yZWMnIHJldHVybmluZyBjb21wX2FiYyBvbWl0 IHF1b3Rlcyk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYid7InJlYyI6ICIoYWJjLDQyLDAxLjAy LjIwMDMpIn0nLCAnJC5yZWMnIHJldHVybmluZyBjb21wX2FiYyBrZWVwIHF1b3Rlcyk7CitTRUxF Q1QgSlNPTl9RVUVSWShqc29uYid7InJlYyI6ICIoYWJjLDQyLDAxLjAyLjIwMDMpIn0nLCAnJC5y ZWMnIHJldHVybmluZyBjb21wX2FiYyBrZWVwIHF1b3RlcyBlcnJvciBvbiBlcnJvcik7CitEUk9Q IFRZUEUgY29tcF9hYmM7CisKKy0tIEV4dGVuc2lvbjogcmVjb3JkIHR5cGVzIHJldHVybmluZwor Q1JFQVRFIFRZUEUgc3FsanNvbmJfcmVjIEFTIChhIGludCwgdCB0ZXh0LCBqcyBqc29uLCBqYiBq c29uYiwganNhIGpzb25bXSk7CitDUkVBVEUgVFlQRSBzcWxqc29uYl9yZWNhIEFTIChyZWNhIHNx bGpzb25iX3JlY1tdKTsKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1t7ImEiOiAxLCAiYiI6 ICJmb28iLCAidCI6ICJhYWEiLCAianMiOiBbMSwgIjIiLCB7fV0sICJqYiI6IHsieCI6IFsxLCAi MiIsIHt9XX19LCAgeyJhIjogMn1dJywgJyRbMF0nIFJFVFVSTklORyBzcWxqc29uYl9yZWMpOwor U0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1t7ImEiOiAiYSIsICJiIjogImZvbyIsICJ0IjogImFh YSIsICJqcyI6IFsxLCAiMiIsIHt9XSwgImpiIjogeyJ4IjogWzEsICIyIiwge31dfX0sICB7ImEi OiAyfV0nLCAnJFswXScgUkVUVVJOSU5HIHNxbGpzb25iX3JlYyBFUlJPUiBPTiBFUlJPUik7CitT RUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW3siYSI6ICJhIiwgImIiOiAiZm9vIiwgInQiOiAiYWFh IiwgImpzIjogWzEsICIyIiwge31dLCAiamIiOiB7IngiOiBbMSwgIjIiLCB7fV19fSwgIHsiYSI6 IDJ9XScsICckWzBdJyBSRVRVUk5JTkcgc3FsanNvbmJfcmVjKTsKK1NFTEVDVCAqIEZST00gdW5u ZXN0KChKU09OX1FVRVJZKGpzb25iICd7ImpzYSI6ICBbeyJhIjogMSwgImIiOiBbImZvbyJdfSwg eyJhIjogMiwgImMiOiB7fX0sIDEyM119JywgJyQnIFJFVFVSTklORyBzcWxqc29uYl9yZWMpKS5q c2EpOworU0VMRUNUICogRlJPTSB1bm5lc3QoKEpTT05fUVVFUlkoanNvbmIgJ3sicmVjYSI6IFt7 ImEiOiAxLCAidCI6IFsiZm9vIiwgW11dfSwgeyJhIjogMiwgImpiIjogW3t9LCB0cnVlXX1dfScs ICckJyBSRVRVUk5JTkcgc3FsanNvbmJfcmVjYSkpLnJlY2EpOworCitTRUxFQ1QgSlNPTl9RVUVS WShqc29uYiAnW3siYSI6IDEsICJiIjogImZvbyIsICJ0IjogImFhYSIsICJqcyI6IFsxLCAiMiIs IHt9XSwgImpiIjogeyJ4IjogWzEsICIyIiwge31dfX0sICB7ImEiOiAyfV0nLCAnJFswXScgUkVU VVJOSU5HIGpzb25wYXRoKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbeyJhIjogMSwgImIi OiAiZm9vIiwgInQiOiAiYWFhIiwgImpzIjogWzEsICIyIiwge31dLCAiamIiOiB7IngiOiBbMSwg IjIiLCB7fV19fSwgIHsiYSI6IDJ9XScsICckWzBdJyBSRVRVUk5JTkcganNvbnBhdGggRVJST1Ig T04gRVJST1IpOworCistLSBFeHRlbnNpb246IGFycmF5IHR5cGVzIHJldHVybmluZworU0VMRUNU IEpTT05fUVVFUlkoanNvbmIgJ1sxLDIsbnVsbCwiMyJdJywgJyRbKl0nIFJFVFVSTklORyBpbnRb XSBXSVRIIFdSQVBQRVIpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDIsbnVsbCwiYSJd JywgJyRbKl0nIFJFVFVSTklORyBpbnRbXSBXSVRIIFdSQVBQRVIgRVJST1IgT04gRVJST1IpOwor U0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDIsbnVsbCwiYSJdJywgJyRbKl0nIFJFVFVSTklO RyBpbnRbXSBXSVRIIFdSQVBQRVIpOworU0VMRUNUICogRlJPTSB1bm5lc3QoSlNPTl9RVUVSWShq c29uYiAnW3siYSI6IDEsICJ0IjogWyJmb28iLCBbXV19LCB7ImEiOiAyLCAiamIiOiBbe30sIHRy dWVdfV0nLCAnJCcgUkVUVVJOSU5HIHNxbGpzb25iX3JlY1tdKSk7CisKKy0tIEV4dGVuc2lvbjog ZG9tYWluIHR5cGVzIHJldHVybmluZworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ3siYSI6IDF9 JywgJyQuYScgUkVUVVJOSU5HIHNxbGpzb25iX2ludF9ub3RfbnVsbCk7CitTRUxFQ1QgSlNPTl9R VUVSWShqc29uYiAneyJhIjogMX0nLCAnJC5iJyBSRVRVUk5JTkcgc3FsanNvbmJfaW50X25vdF9u dWxsKTsKKworLS0gVGVzdCB0aW1lc3RhbXB0eiBwYXNzaW5nIGFuZCBvdXRwdXQKK1NFTEVDVCBK U09OX1FVRVJZKGpzb25iICdudWxsJywgJyR0cycgUEFTU0lORyB0aW1lc3RhbXB0eiAnMjAxOC0w Mi0yMSAxMjozNDo1NiArMTAnIEFTIHRzKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdudWxs JywgJyR0cycgUEFTU0lORyB0aW1lc3RhbXB0eiAnMjAxOC0wMi0yMSAxMjozNDo1NiArMTAnIEFT IHRzIFJFVFVSTklORyBqc29uKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdudWxsJywgJyR0 cycgUEFTU0lORyB0aW1lc3RhbXB0eiAnMjAxOC0wMi0yMSAxMjozNDo1NiArMTAnIEFTIHRzIFJF VFVSTklORyBqc29uYik7CisKKy0tIFRlc3QgY29uc3RyYWludHMKKworQ1JFQVRFIFRBQkxFIHRl c3RfanNvbmJfY29uc3RyYWludHMgKAorCWpzIHRleHQsCisJaSBpbnQsCisJeCBqc29uYiBERUZB VUxUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyRbKl0nIFdJVEggV1JBUFBFUikKKwlDT05T VFJBSU5UIHRlc3RfanNvbmJfY29uc3RyYWludDEKKwkJQ0hFQ0sgKGpzIElTIEpTT04pCisJQ09O U1RSQUlOVCB0ZXN0X2pzb25iX2NvbnN0cmFpbnQyCisJCUNIRUNLIChKU09OX0VYSVNUUyhqczo6 anNvbmIsICckLmEnIFBBU1NJTkcgaSArIDUgQVMgaW50LCBpOjp0ZXh0IEFTIHR4dCwgYXJyYXlb MSwyLDNdIGFzIGFycikpCisJQ09OU1RSQUlOVCB0ZXN0X2pzb25iX2NvbnN0cmFpbnQzCisJCUNI RUNLIChKU09OX1ZBTFVFKGpzOjpqc29uYiwgJyQuYScgUkVUVVJOSU5HIGludCBERUZBVUxUICcx MicgT04gRU1QVFkgRVJST1IgT04gRVJST1IpID4gaSkKKwlDT05TVFJBSU5UIHRlc3RfanNvbmJf Y29uc3RyYWludDQKKwkJQ0hFQ0sgKEpTT05fUVVFUlkoanM6Ompzb25iLCAnJC5hJyBXSVRIIENP TkRJVElPTkFMIFdSQVBQRVIgRU1QVFkgT0JKRUNUIE9OIEVSUk9SKSA8IGpzb25iICdbMTBdJykK KwlDT05TVFJBSU5UIHRlc3RfanNvbmJfY29uc3RyYWludDUKKwkJQ0hFQ0sgKEpTT05fUVVFUlko anM6Ompzb25iLCAnJC5hJyBSRVRVUk5JTkcgY2hhcig1KSBPTUlUIFFVT1RFUyBFTVBUWSBBUlJB WSBPTiBFTVBUWSkgPiAgJ2EnIENPTExBVEUgIkMiKQorKTsKKworXGQgdGVzdF9qc29uYl9jb25z dHJhaW50cworCitTRUxFQ1QgY2hlY2tfY2xhdXNlCitGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS5j aGVja19jb25zdHJhaW50cworV0hFUkUgY29uc3RyYWludF9uYW1lIExJS0UgJ3Rlc3RfanNvbmJf Y29uc3RyYWludCUnCitPUkRFUiBCWSAxOworCitTRUxFQ1QgcGdfZ2V0X2V4cHIoYWRiaW4sIGFk cmVsaWQpCitGUk9NIHBnX2F0dHJkZWYKK1dIRVJFIGFkcmVsaWQgPSAndGVzdF9qc29uYl9jb25z dHJhaW50cyc6OnJlZ2NsYXNzCitPUkRFUiBCWSAxOworCitJTlNFUlQgSU5UTyB0ZXN0X2pzb25i X2NvbnN0cmFpbnRzIFZBTFVFUyAoJycsIDEpOworSU5TRVJUIElOVE8gdGVzdF9qc29uYl9jb25z dHJhaW50cyBWQUxVRVMgKCcxJywgMSk7CitJTlNFUlQgSU5UTyB0ZXN0X2pzb25iX2NvbnN0cmFp bnRzIFZBTFVFUyAoJ1tdJyk7CitJTlNFUlQgSU5UTyB0ZXN0X2pzb25iX2NvbnN0cmFpbnRzIFZB TFVFUyAoJ3siYiI6IDF9JywgMSk7CitJTlNFUlQgSU5UTyB0ZXN0X2pzb25iX2NvbnN0cmFpbnRz IFZBTFVFUyAoJ3siYSI6IDF9JywgMSk7CitJTlNFUlQgSU5UTyB0ZXN0X2pzb25iX2NvbnN0cmFp bnRzIFZBTFVFUyAoJ3siYSI6IDd9JywgMSk7CitJTlNFUlQgSU5UTyB0ZXN0X2pzb25iX2NvbnN0 cmFpbnRzIFZBTFVFUyAoJ3siYSI6IDEwfScsIDEpOworCitEUk9QIFRBQkxFIHRlc3RfanNvbmJf Y29uc3RyYWludHM7CisKKy0tIFRlc3QgbXV0YWJpbGlseSBvZiBxdWVyeSBmdW5jdGlvbnMKK0NS RUFURSBUQUJMRSB0ZXN0X2pzb25iX211dGFiaWxpdHkoanMganNvbmIpOworQ1JFQVRFIElOREVY IE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQnKSk7CitDUkVBVEUg SU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5hWzBdJykp OworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywg JyQuZGF0ZXRpbWUoKScpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkg KEpTT05fUVVFUlkoanMsICckLmEgPyAoQCA8ICQuZGF0ZXRpbWUoKSknKSk7CitDUkVBVEUgSU5E RVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5hID8gKEAuZGF0 ZXRpbWUoKSA8ICQuZGF0ZXRpbWUoKSknKSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9t dXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5hID8gKEAuZGF0ZXRpbWUoKSA8ICQuZGF0ZXRp bWUoIkhIOk1JIFRaSCIpKScpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxp dHkgKEpTT05fUVVFUlkoanMsICckLmEgPyAoQC5kYXRldGltZSgiSEg6TUkgVFpIIikgPCAkLmRh dGV0aW1lKCJISDpNSSBUWkgiKSknKSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRh YmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5hID8gKEAuZGF0ZXRpbWUoIkhIOk1JIikgPCAkLmRh dGV0aW1lKCJZWS1NTS1ERCBISDpNSSIpKScpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25i X211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmEgPyAoQC5kYXRldGltZSgiSEg6TUkgVFpI IikgPCAkLmRhdGV0aW1lKCJZWS1NTS1ERCBISDpNSSIpKScpKTsKK0NSRUFURSBJTkRFWCBPTiB0 ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmRhdGV0aW1lKCJISDpNSSBU WkgiKSA8ICR4JyBQQVNTSU5HICcxMjozNCc6OnRpbWV0eiBBUyB4KSk7CitDUkVBVEUgSU5ERVgg T04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5kYXRldGltZSgiSEg6 TUkgVFpIIikgPCAkeScgUEFTU0lORyAnMTI6MzQnOjp0aW1ldHogQVMgeCkpOworQ1JFQVRFIElO REVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuZGF0ZXRpbWUo KSA8ICR4JyBQQVNTSU5HICcxMjozNCc6OnRpbWV0eiBBUyB4KSk7CitDUkVBVEUgSU5ERVggT04g dGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5kYXRldGltZSgpIDwgJHgn IFBBU1NJTkcgJzEyMzQnOjppbnQgQVMgeCkpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJf bXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuZGF0ZXRpbWUoKSA/IChAID09ICR4KScgUEFT U0lORyAnMTI6MzQnOjp0aW1lIEFTIHgpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211 dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmRhdGV0aW1lKCJZWS1NTS1ERCIpID8gKEAgPT0g JHgpJyBQQVNTSU5HICcyMDIwLTA3LTE0Jzo6ZGF0ZSBBUyB4KSk7CitDUkVBVEUgSU5ERVggT04g dGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJFsxLCAkLmEgPyAoQC5kYXRl dGltZSgpID09ICR4KV0nIFBBU1NJTkcgJzEyOjM0Jzo6dGltZSBBUyB4KSk7CitDUkVBVEUgSU5E RVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJFsxLCAwIHRvICQu YSA/IChALmRhdGV0aW1lKCkgPT0gJHgpXScgUEFTU0lORyAnMTI6MzQnOjp0aW1lIEFTIHgpKTsK K0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICck WzEsICQuYSA/IChALmRhdGV0aW1lKCJISDpNSSIpID09ICR4KV0nIFBBU1NJTkcgJzEyOjM0Jzo6 dGltZSBBUyB4KSk7CitEUk9QIFRBQkxFIHRlc3RfanNvbmJfbXV0YWJpbGl0eTsKZGlmZiAtLWdp dCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QKaW5kZXggNWZkNDZiN2JkMS4uYmM2ZGE0YjRkMiAxMDA2NDQKLS0tIGEv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QKQEAgLTEyNTEsNiArMTI1MSw3IEBAIEpvaW4KIEpvaW5Db3N0V29ya3Nw YWNlCiBKb2luRG9tYWluCiBKb2luRXhwcgorSnNvbkZ1bmNFeHByCiBKb2luSGFzaEVudHJ5CiBK b2luUGF0aAogSm9pblBhdGhFeHRyYURhdGEKQEAgLTEyNjEsMTggKzEyNjIsMjcgQEAgSnNPYmpl Y3QKIEpzVmFsdWUKIEpzb25BZ2dDb25zdHJ1Y3RvcgogSnNvbkFnZ1N0YXRlCitKc29uQXJndW1l bnQKIEpzb25BcnJheUFnZwogSnNvbkFycmF5Q29uc3RydWN0b3IKIEpzb25BcnJheVF1ZXJ5Q29u c3RydWN0b3IKIEpzb25CYXNlT2JqZWN0SW5mbworSnNvbkJlaGF2aW9yCitKc29uQmVoYXZpb3JU eXBlCitKc29uQ29lcmNpb24KIEpzb25Db25zdHJ1Y3RvckV4cHIKIEpzb25Db25zdHJ1Y3RvckV4 cHJTdGF0ZQogSnNvbkNvbnN0cnVjdG9yVHlwZQogSnNvbkVuY29kaW5nCitKc29uRXhwcgorSnNv bkV4cHJPcAorSnNvbkV4cHJQb3N0RXZhbFN0YXRlCitKc29uRXhwclN0YXRlCiBKc29uRm9ybWF0 CiBKc29uRm9ybWF0VHlwZQogSnNvbkhhc2hFbnRyeQogSnNvbklzUHJlZGljYXRlCitKc29uSXRl bVR5cGUKIEpzb25JdGVyYXRlU3RyaW5nVmFsdWVzQWN0aW9uCiBKc29uS2V5VmFsdWUKIEpzb25M ZXhDb250ZXh0CkBAIC0xMjkwLDYgKzEzMDAsNyBAQCBKc29uUGFyc2VDb250ZXh0CiBKc29uUGFy c2VFcnJvclR5cGUKIEpzb25QYXRoCiBKc29uUGF0aEJvb2wKK0pzb25QYXRoRGF0YXR5cGVTdGF0 dXMKIEpzb25QYXRoRXhlY0NvbnRleHQKIEpzb25QYXRoRXhlY1Jlc3VsdAogSnNvblBhdGhHaW5B ZGRQYXRoSXRlbUZ1bmMKQEAgLTEzMDIsMTAgKzEzMTMsMTUgQEAgSnNvblBhdGhHaW5QYXRoSXRl bQogSnNvblBhdGhJdGVtCiBKc29uUGF0aEl0ZW1UeXBlCiBKc29uUGF0aEtleXdvcmQKK0pzb25Q YXRoTXV0YWJsZUNvbnRleHQKIEpzb25QYXRoUGFyc2VJdGVtCiBKc29uUGF0aFBhcnNlUmVzdWx0 CiBKc29uUGF0aFByZWRpY2F0ZUNhbGxiYWNrCiBKc29uUGF0aFN0cmluZworSnNvblBhdGhWYXJD YWxsYmFjaworSnNvblBhdGhWYXJpYWJsZQorSnNvblBhdGhWYXJpYWJsZUV2YWxDb250ZXh0CitK c29uUXVvdGVzCiBKc29uUmV0dXJuaW5nCiBKc29uU2NhbGFyRXhwcgogSnNvblNlbUFjdGlvbgpA QCAtMTMyMiw2ICsxMzM4LDcgQEAgSnNvblZhbHVlRXhwcgogSnNvblZhbHVlTGlzdAogSnNvblZh bHVlTGlzdEl0ZXJhdG9yCiBKc29uVmFsdWVUeXBlCitKc29uV3JhcHBlcgogSnNvbmIKIEpzb25i QWdnU3RhdGUKIEpzb25iQ29udGFpbmVyCi0tIAoyLjM1LjMKCg== --000000000000aae962060f3871e9 Content-Type: application/octet-stream; name="v35-0008-JSON_TABLE.patch" Content-Disposition: attachment; filename="v35-0008-JSON_TABLE.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lrj915p57 RnJvbSAzMjkwNWE4NDgwNzY3NTI0MzEyZmFjOWNhNTZhMjY5NGZjZDE2MzQ1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMTggSmFuIDIwMjQgMTg6MDA6MDYgKzA5MDAKU3ViamVjdDogW1BBVENIIHYz NSA4LzhdIEpTT05fVEFCTEUKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3Bs YWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKClRoaXMg ZmVhdHVyZSBhbGxvd3MganNvbmIgZGF0YSB0byBiZSB0cmVhdGVkIGFzIGEgdGFibGUgYW5kIHRo dXMKdXNlZCBpbiBhIEZST00gY2xhdXNlIGxpa2Ugb3RoZXIgdGFidWxhciBkYXRhLiBEYXRhIGNh biBiZSBzZWxlY3RlZApmcm9tIHRoZSBqc29uYiB1c2luZyBqc29ucGF0aCBleHByZXNzaW9ucywg YW5kIGhvaXN0ZWQgb3V0IG9mIG5lc3RlZApzdHJ1Y3R1cmVzIGluIHRoZSBqc29uYiB0byBmb3Jt IG11bHRpcGxlIHJvd3MsIG1vcmUgb3IgbGVzcyBsaWtlIGFuCm91dGVyIGpvaW4uCgpUaGlzIGFs c28gYWRkcyB0aGUgUExBTiBjbGF1c2VzIGZvciBKU09OX1RBQkxFLCB3aGljaCBhbGxvdyB0aGUg dXNlcgp0byBzcGVjaWZ5IGhvdyBkYXRhIGZyb20gbmVzdGVkIHBhdGhzIGFyZSBqb2luZWQsIGFs bG93aW5nCmNvbnNpZGVyYWJsZSBmcmVlZG9tIGluIHNoYXBpbmcgdGhlIHRhYnVsYXIgb3V0cHV0 IG9mIEpTT05fVEFCTEUuClBMQU4gREVGQVVMVCBhbGxvd3MgdGhlIHVzZXIgdG8gc3BlY2lmeSB0 aGUgZ2xvYmFsIHN0cmF0ZWdpZXMgd2hlbgpkZWFsaW5nIHdpdGggc2libGluZyBvciBjaGlsZCBu ZXN0ZWQgcGF0aHMuIFRoZSBpcyBvZnRlbiBzdWZmaWNpZW50CnRvIGFjaGlldmUgdGhlIG5lY2Vz c2FyeSBnb2FsLCBhbmQgaXMgY29uc2lkZXJhYmx5IHNpbXBsZXIgdGhhbiB0aGUKZnVsbCBQTEFO IGNsYXVzZSwgd2hpY2ggYWxsb3dzIHRoZSB1c2VyIHRvIHNwZWNpZnkgdGhlIHN0cmF0ZWd5IHRv IGJlCnVzZWQgZm9yIGVhY2ggbmFtZWQgbmVzdGVkIHBhdGguCgpBdXRob3I6IE5pa2l0YSBHbHVr aG92IDxuLmdsdWhvdkBwb3N0Z3Jlc3Byby5ydT4KQXV0aG9yOiBUZW9kb3IgU2lnYWV2IDx0ZW9k b3JAc2lnYWV2LnJ1PgpBdXRob3I6IE9sZWcgQmFydHVub3YgPG9iYXJ0dW5vdkBnbWFpbC5jb20+ CkF1dGhvcjogQWxleGFuZGVyIEtvcm90a292IDxhZWtvcm90a292QGdtYWlsLmNvbT4KQXV0aG9y OiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5lLm5ldD4KQXV0aG9yOiBBbWl0IExhbmdv dGUgPGFtaXRsYW5nb3RlMDlAZ21haWwuY29tPgpBdXRob3I6IEppYW4gSGUgPGppYW4udW5pdmVy c2FsaXR5QGdtYWlsLmNvbT4KClJldmlld2VycyBoYXZlIGluY2x1ZGVkIChpbiBubyBwYXJ0aWN1 bGFyIG9yZGVyKSBBbmRyZXMgRnJldW5kLCBBbGV4YW5kZXIKS29yb3Rrb3YsIFBhdmVsIFN0ZWh1 bGUsIEFuZHJldyBBbHN1cCwgRXJpayBSaWprZXJzLCBaaWhvbmcgWXUsCkhpbWFuc2h1IFVwYWRo eWF5YSwgRGFuaWVsIEd1c3RhZnNzb24sIEp1c3RpbiBQcnl6YnksIMOBbHZhcm8gSGVycmVyYSwK amlhbiBoZQoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9jZDBiYjkzNS0wMTU4LTc4 YTctMDhiNS05MDQ4ODZkZWFjNGJAcG9zdGdyZXNwcm8ucnUKRGlzY3Vzc2lvbjogaHR0cHM6Ly9w b3N0Z3IuZXMvbS8yMDIyMDYxNjIzMzEzMC5ycGFyaXZhZmlwdDZkb2ozQGFsYXAzLmFuYXJhemVs LmRlCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vYWJkOWI4M2ItYWE2Ni1mMjMwLTNk NmQtNzM0ODE3ZjA5OTVkJTQwcG9zdGdyZXNxbC5vcmcKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0 Z3IuZXMvbS9DQStIaXdxRTRYVGRmYjFuVz1Pam95X3RRU1JoWXQtcV9rYjZpNWQ0eGNLeXJMQzFO YmdAbWFpbC5nbWFpbC5jb20KLS0tCiBkb2Mvc3JjL3NnbWwvZnVuYy5zZ21sICAgICAgICAgICAg ICAgICAgICAgICAgfCAgNTEwICsrKysrKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1 cmVzLnR4dCAgICAgICAgICB8ICAgIDYgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4u YyAgICAgICAgICAgICAgICB8ICAgIDggKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBy SW50ZXJwLmMgICAgICAgICB8ICAgIDYgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRhYmxl RnVuY3NjYW4uYyAgICAgIHwgICAyNyArLQogc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMg ICAgICAgICAgICAgICAgIHwgICA3NCArCiBzcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYyAg ICAgICAgICAgICAgICAgfCAgIDM4ICsKIHNyYy9iYWNrZW5kL3BhcnNlci9NYWtlZmlsZSAgICAg ICAgICAgICAgICAgICB8ICAgIDEgKwogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAg ICAgICAgICAgICAgIHwgIDMwNiArKysrLQogc3JjL2JhY2tlbmQvcGFyc2VyL21lc29uLmJ1aWxk ICAgICAgICAgICAgICAgIHwgICAgMSArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY2xhdXNl LmMgICAgICAgICAgICAgfCAgIDE0ICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5j ICAgICAgICAgICAgICAgfCAgIDUzICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfanNvbnRh YmxlLmMgICAgICAgICAgfCAgNzE4ICsrKysrKysrKysKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9yZWxhdGlvbi5jICAgICAgICAgICB8ICAgIDUgKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV90YXJnZXQuYyAgICAgICAgICAgICB8ICAgIDMgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pz b25wYXRoX2V4ZWMuYyAgICAgICAgIHwgIDU0NyArKysrKysrKwogc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3J1bGV1dGlscy5jICAgICAgICAgICAgIHwgIDI3OSArKystCiBzcmMvaW5jbHVkZS9ub2Rl cy9leGVjbm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgICAyICsKIHNyYy9pbmNsdWRlL25vZGVz L21ha2VmdW5jcy5oICAgICAgICAgICAgICAgICB8ICAgIDcgKwogc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oICAgICAgICAgICAgICAgIHwgIDEwNiArKwogc3JjL2luY2x1ZGUvbm9kZXMv cHJpbW5vZGVzLmggICAgICAgICAgICAgICAgIHwgICA2MCArLQogc3JjL2luY2x1ZGUvcGFyc2Vy L2t3bGlzdC5oICAgICAgICAgICAgICAgICAgIHwgICAgNCArCiBzcmMvaW5jbHVkZS9wYXJzZXIv cGFyc2VfY2xhdXNlLmggICAgICAgICAgICAgfCAgICAzICsKIHNyYy9pbmNsdWRlL3V0aWxzL2pz b25wYXRoLmggICAgICAgICAgICAgICAgICB8ICAgIDMgKwogc3JjL2ludGVyZmFjZXMvZWNwZy90 ZXN0L2VjcGdfc2NoZWR1bGUgICAgICAgIHwgICAgMSArCiAuLi4vdGVzdC9leHBlY3RlZC9zcWwt c3FsanNvbl9qc29udGFibGUuYyAgICAgfCAgMTMyICsrCiAuLi4vZXhwZWN0ZWQvc3FsLXNxbGpz b25fanNvbnRhYmxlLnN0ZGVyciAgICAgfCAgIDIwICsKIC4uLi9leHBlY3RlZC9zcWwtc3FsanNv bl9qc29udGFibGUuc3Rkb3V0ICAgICB8ICAgIDAKIHNyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9z cWwvTWFrZWZpbGUgICAgICAgICB8ICAgIDEgKwogc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L3Nx bC9tZXNvbi5idWlsZCAgICAgIHwgICAgMSArCiAuLi4vZWNwZy90ZXN0L3NxbC9zcWxqc29uX2pz b250YWJsZS5jICAgICAgICAgfCAgMTMyICsrCiAuLi4vZWNwZy90ZXN0L3NxbC9zcWxqc29uX2pz b250YWJsZS5wZ2MgICAgICAgfCAgIDMyICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNv bl9zcWxqc29uLm91dCAgICB8ICAgIDYgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29u Yl9zcWxqc29uLm91dCAgIHwgMTIxOSArKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVz cy9zcWwvanNvbl9zcWxqc29uLnNxbCAgICAgICAgIHwgICAgNCArCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC9qc29uYl9zcWxqc29uLnNxbCAgICAgICAgfCAgNjgxICsrKysrKysrKwogc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAgIHwgICAxNiArCiAzNyBmaWxlcyBj aGFuZ2VkLCA0OTgwIGluc2VydGlvbnMoKyksIDQ2IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9qc29udGFibGUuYwogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbl9qc29u dGFibGUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBl Y3RlZC9zcWwtc3FsanNvbl9qc29udGFibGUuc3RkZXJyCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uX2pzb250YWJsZS5zdGRv dXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qvc3FsL3NxbGpz b25fanNvbnRhYmxlLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW50ZXJmYWNlcy9lY3BnL3Rl c3Qvc3FsL3NxbGpzb25fanNvbnRhYmxlLnBnYwoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9m dW5jLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sCmluZGV4IDIxZmQ2NzEyYjguLjI2N2Nm YWYyYzkgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL2Z1bmMuc2dtbApAQCAtMTgzMjUsNiArMTgzMjUsNTE2IEBAICQuKiA/IChAIGxpa2VfcmVn ZXggIl5cXGQrJCIpCiAKICAgIDwvc2VjdDM+CiAgIDwvc2VjdDI+CisKKyA8c2VjdDIgaWQ9ImZ1 bmN0aW9ucy1zcWxqc29uLXRhYmxlIj4KKyAgPHRpdGxlPkpTT05fVEFCTEU8L3RpdGxlPgorICA8 aW5kZXh0ZXJtPgorICAgPHByaW1hcnk+anNvbl90YWJsZTwvcHJpbWFyeT4KKyAgPC9pbmRleHRl cm0+CisKKyAgPHBhcmE+CisgICA8ZnVuY3Rpb24+anNvbl90YWJsZTwvZnVuY3Rpb24+IGlzIGFu IFNRTC9KU09OIGZ1bmN0aW9uIHdoaWNoCisgICBxdWVyaWVzIDxhY3JvbnltPkpTT048L2Fjcm9u eW0+IGRhdGEKKyAgIGFuZCBwcmVzZW50cyB0aGUgcmVzdWx0cyBhcyBhIHJlbGF0aW9uYWwgdmll dywgd2hpY2ggY2FuIGJlIGFjY2Vzc2VkIGFzIGEKKyAgIHJlZ3VsYXIgU1FMIHRhYmxlLiBZb3Ug Y2FuIG9ubHkgdXNlIDxmdW5jdGlvbj5qc29uX3RhYmxlPC9mdW5jdGlvbj4gaW5zaWRlIHRoZQor ICAgPGxpdGVyYWw+RlJPTTwvbGl0ZXJhbD4gY2xhdXNlIG9mIGEgPGxpdGVyYWw+U0VMRUNUPC9s aXRlcmFsPiBzdGF0ZW1lbnQuCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFRha2luZyBKU09O IGRhdGEgYXMgaW5wdXQsIDxmdW5jdGlvbj5qc29uX3RhYmxlPC9mdW5jdGlvbj4gdXNlcworICAg YSBwYXRoIGV4cHJlc3Npb24gdG8gZXh0cmFjdCBhIHBhcnQgb2YgdGhlIHByb3ZpZGVkIGRhdGEg dGhhdAorICAgd2lsbCBiZSB1c2VkIGFzIGEgPGZpcnN0dGVybT5yb3cgcGF0dGVybjwvZmlyc3R0 ZXJtPiBmb3IgdGhlCisgICBjb25zdHJ1Y3RlZCB2aWV3LiBFYWNoIFNRTC9KU09OIGl0ZW0gYXQg dGhlIHRvcCBsZXZlbCBvZiB0aGUgcm93IHBhdHRlcm4gc2VydmVzCisgICBhcyB0aGUgc291cmNl IGZvciBhIHNlcGFyYXRlIHJvdyBpbiB0aGUgY29uc3RydWN0ZWQgcmVsYXRpb25hbCB2aWV3Lgor ICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBUbyBzcGxpdCB0aGUgcm93IHBhdHRlcm4gaW50byBj b2x1bW5zLCA8ZnVuY3Rpb24+anNvbl90YWJsZTwvZnVuY3Rpb24+CisgICBwcm92aWRlcyB0aGUg PGxpdGVyYWw+Q09MVU1OUzwvbGl0ZXJhbD4gY2xhdXNlIHRoYXQgZGVmaW5lcyB0aGUKKyAgIHNj aGVtYSBvZiB0aGUgY3JlYXRlZCB2aWV3LiBGb3IgZWFjaCBjb2x1bW4gdG8gYmUgY29uc3RydWN0 ZWQsCisgICB0aGlzIGNsYXVzZSBwcm92aWRlcyBhIHNlcGFyYXRlIHBhdGggZXhwcmVzc2lvbiB0 aGF0IGV2YWx1YXRlcworICAgdGhlIHJvdyBwYXR0ZXJuLCBleHRyYWN0cyBhIEpTT04gaXRlbSwg YW5kIHJldHVybnMgaXQgYXMgYQorICAgc2VwYXJhdGUgU1FMIHZhbHVlIGZvciB0aGUgc3BlY2lm aWVkIGNvbHVtbi4gSWYgdGhlIHJlcXVpcmVkIHZhbHVlCisgICBpcyBzdG9yZWQgaW4gYSBuZXN0 ZWQgbGV2ZWwgb2YgdGhlIHJvdyBwYXR0ZXJuLCBpdCBjYW4gYmUgZXh0cmFjdGVkCisgICB1c2lu ZyB0aGUgPGxpdGVyYWw+TkVTVEVEIFBBVEg8L2xpdGVyYWw+IHN1YmNsYXVzZS4gSm9pbmluZyB0 aGUKKyAgIGNvbHVtbnMgcmV0dXJuZWQgYnkgPGxpdGVyYWw+TkVTVEVEIFBBVEg8L2xpdGVyYWw+ IGNhbiBhZGQgbXVsdGlwbGUKKyAgIG5ldyByb3dzIHRvIHRoZSBjb25zdHJ1Y3RlZCB2aWV3LiBT dWNoIHJvd3MgYXJlIGNhbGxlZAorICAgPGZpcnN0dGVybT5jaGlsZCByb3dzPC9maXJzdHRlcm0+ LCBhcyBvcHBvc2VkIHRvIHRoZSA8Zmlyc3R0ZXJtPnBhcmVudCByb3c8L2ZpcnN0dGVybT4KKyAg IHRoYXQgZ2VuZXJhdGVzIHRoZW0uCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFRoZSByb3dz IHByb2R1Y2VkIGJ5IDxmdW5jdGlvbj5KU09OX1RBQkxFPC9mdW5jdGlvbj4gYXJlIGxhdGVyYWxs eQorICAgam9pbmVkIHRvIHRoZSByb3cgdGhhdCBnZW5lcmF0ZWQgdGhlbSwgc28geW91IGRvIG5v dCBoYXZlIHRvIGV4cGxpY2l0bHkgam9pbgorICAgdGhlIGNvbnN0cnVjdGVkIHZpZXcgd2l0aCB0 aGUgb3JpZ2luYWwgdGFibGUgaG9sZGluZyA8YWNyb255bT5KU09OPC9hY3JvbnltPgorICAgZGF0 YS4gT3B0aW9uYWxseSwgeW91IGNhbiBzcGVjaWZ5IGhvdyB0byBqb2luIHRoZSBjb2x1bW5zIHJl dHVybmVkCisgICBieSA8bGl0ZXJhbD5ORVNURUQgUEFUSDwvbGl0ZXJhbD4gdXNpbmcgdGhlIDxs aXRlcmFsPlBMQU48L2xpdGVyYWw+IGNsYXVzZS4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAg RWFjaCA8bGl0ZXJhbD5ORVNURUQgUEFUSDwvbGl0ZXJhbD4gY2xhdXNlIGNhbiBnZW5lcmF0ZSBv bmUgb3IgbW9yZQorICAgY29sdW1ucy4gQ29sdW1ucyBwcm9kdWNlZCBieSA8bGl0ZXJhbD5ORVNU RUQgUEFUSDwvbGl0ZXJhbD5zIGF0IHRoZQorICAgc2FtZSBsZXZlbCBhcmUgY29uc2lkZXJlZCB0 byBiZSA8Zmlyc3R0ZXJtPnNpYmxpbmdzPC9maXJzdHRlcm0+LAorICAgd2hpbGUgYSBjb2x1bW4g cHJvZHVjZWQgYnkgYSA8bGl0ZXJhbD5ORVNURUQgUEFUSDwvbGl0ZXJhbD4gaXMKKyAgIGNvbnNp ZGVyZWQgdG8gYmUgYSBjaGlsZCBvZiB0aGUgY29sdW1uIHByb2R1Y2VkIGJ5IGEKKyAgIDxsaXRl cmFsPk5FU1RFRCBQQVRIPC9saXRlcmFsPiBvciByb3cgZXhwcmVzc2lvbiBhdCBhIGhpZ2hlciBs ZXZlbC4KKyAgIFNpYmxpbmcgY29sdW1ucyBhcmUgYWx3YXlzIGpvaW5lZCBmaXJzdC4gT25jZSB0 aGV5IGFyZSBwcm9jZXNzZWQsCisgICB0aGUgcmVzdWx0aW5nIHJvd3MgYXJlIGpvaW5lZCB0byB0 aGUgcGFyZW50IHJvdy4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgVGhlIHN5bnRheCBpczoK KyAgPC9wYXJhPgorCis8c3lub3BzaXM+CitKU09OX1RBQkxFICgKKyAgPHJlcGxhY2VhYmxlPmNv bnRleHRfaXRlbTwvcmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGU+cGF0aF9leHByZXNzaW9uPC9y ZXBsYWNlYWJsZT4gPG9wdGlvbmFsPiBBUyA8cmVwbGFjZWFibGU+anNvbl9wYXRoX25hbWU8L3Jl cGxhY2VhYmxlPiA8L29wdGlvbmFsPiA8b3B0aW9uYWw+IFBBU1NJTkcgeyA8cmVwbGFjZWFibGU+ dmFsdWU8L3JlcGxhY2VhYmxlPiBBUyA8cmVwbGFjZWFibGU+dmFybmFtZTwvcmVwbGFjZWFibGU+ IH0gPG9wdGlvbmFsPiwgLi4uPC9vcHRpb25hbD4gPC9vcHRpb25hbD4KKyAgQ09MVU1OUyAoIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5qc29uX3RhYmxlX2NvbHVtbjwvcmVwbGFjZWFi bGU+IDxvcHRpb25hbD4sIC4uLjwvb3B0aW9uYWw+ICkKKyAgPG9wdGlvbmFsPiB7IDxsaXRlcmFs PkVSUk9SPC9saXRlcmFsPiB8IDxsaXRlcmFsPkVNUFRZPC9saXRlcmFsPiB9IDxsaXRlcmFsPk9O IEVSUk9SPC9saXRlcmFsPiA8L29wdGlvbmFsPgorICA8b3B0aW9uYWw+CisgICAgUExBTiAoIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5qc29uX3RhYmxlX3BsYW48L3JlcGxhY2VhYmxl PiApIHwKKyAgICBQTEFOIERFRkFVTFQgKCB7IElOTkVSIHwgT1VURVIgfSA8b3B0aW9uYWw+ICwg eyBDUk9TUyB8IFVOSU9OIH0gPC9vcHRpb25hbD4KKyAgICAgICAgICAgICAgICAgfCB7IENST1NT IHwgVU5JT04gfSA8b3B0aW9uYWw+ICwgeyBJTk5FUiB8IE9VVEVSIH0gPC9vcHRpb25hbD4gKQor ICA8L29wdGlvbmFsPgorKQorCis8cGhyYXNlPgord2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmpzb25fdGFibGVfY29sdW1uPC9yZXBsYWNlYWJsZT4gaXM6Cis8L3BocmFzZT4K KyAgICA8cmVwbGFjZWFibGU+bmFtZTwvcmVwbGFjZWFibGU+IDxyZXBsYWNlYWJsZT50eXBlPC9y ZXBsYWNlYWJsZT4gPG9wdGlvbmFsPiBQQVRIIDxyZXBsYWNlYWJsZT5qc29uX3BhdGhfc3BlY2lm aWNhdGlvbjwvcmVwbGFjZWFibGU+IDwvb3B0aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD4geyBX SVRIT1VUIHwgV0lUSCB7IENPTkRJVElPTkFMIHwgPG9wdGlvbmFsPlVOQ09ORElUSU9OQUw8L29w dGlvbmFsPiB9IH0gPG9wdGlvbmFsPiBBUlJBWSA8L29wdGlvbmFsPiBXUkFQUEVSIDwvb3B0aW9u YWw+CisgICAgICAgIDxvcHRpb25hbD4geyBLRUVQIHwgT01JVCB9IFFVT1RFUyA8b3B0aW9uYWw+ IE9OIFNDQUxBUiBTVFJJTkcgPC9vcHRpb25hbD4gPC9vcHRpb25hbD4KKyAgICAgICAgPG9wdGlv bmFsPiB7IEVSUk9SIHwgTlVMTCB8IERFRkFVTFQgPHJlcGxhY2VhYmxlPmV4cHJlc3Npb248L3Jl cGxhY2VhYmxlPiB9IE9OIEVNUFRZIDwvb3B0aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD4geyBF UlJPUiB8IE5VTEwgfCBERUZBVUxUIDxyZXBsYWNlYWJsZT5leHByZXNzaW9uPC9yZXBsYWNlYWJs ZT4gfSBPTiBFUlJPUiA8L29wdGlvbmFsPgorICB8IDxyZXBsYWNlYWJsZT5uYW1lPC9yZXBsYWNl YWJsZT4gPHJlcGxhY2VhYmxlPnR5cGU8L3JlcGxhY2VhYmxlPiBGT1JNQVQgSlNPTiA8b3B0aW9u YWw+RU5DT0RJTkcgPGxpdGVyYWw+VVRGODwvbGl0ZXJhbD48L29wdGlvbmFsPgorICAgICAgICA8 b3B0aW9uYWw+IFBBVEggPHJlcGxhY2VhYmxlPmpzb25fcGF0aF9zcGVjaWZpY2F0aW9uPC9yZXBs YWNlYWJsZT4gPC9vcHRpb25hbD4KKyAgICAgICAgPG9wdGlvbmFsPiB7IFdJVEhPVVQgfCBXSVRI IHsgQ09ORElUSU9OQUwgfCA8b3B0aW9uYWw+VU5DT05ESVRJT05BTDwvb3B0aW9uYWw+IH0gfSA8 b3B0aW9uYWw+IEFSUkFZIDwvb3B0aW9uYWw+IFdSQVBQRVIgPC9vcHRpb25hbD4KKyAgICAgICAg PG9wdGlvbmFsPiB7IEtFRVAgfCBPTUlUIH0gUVVPVEVTIDxvcHRpb25hbD4gT04gU0NBTEFSIFNU UklORyA8L29wdGlvbmFsPiA8L29wdGlvbmFsPgorICAgICAgICA8b3B0aW9uYWw+IHsgRVJST1Ig fCBOVUxMIHwgRU1QVFkgeyBBUlJBWSB8IE9CSkVDVCB9IHwgREVGQVVMVCA8cmVwbGFjZWFibGU+ ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IH0gT04gRU1QVFkgPC9vcHRpb25hbD4KKyAgICAgICAg PG9wdGlvbmFsPiB7IEVSUk9SIHwgTlVMTCB8IEVNUFRZIHsgQVJSQVkgfCBPQkpFQ1QgfSB8IERF RkFVTFQgPHJlcGxhY2VhYmxlPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiB9IE9OIEVSUk9SIDwv b3B0aW9uYWw+CisgIHwgPHJlcGxhY2VhYmxlPm5hbWU8L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFi bGU+dHlwZTwvcmVwbGFjZWFibGU+IEVYSVNUUyA8b3B0aW9uYWw+IFBBVEggPHJlcGxhY2VhYmxl Pmpzb25fcGF0aF9zcGVjaWZpY2F0aW9uPC9yZXBsYWNlYWJsZT4gPC9vcHRpb25hbD4KKyAgICAg ICAgPG9wdGlvbmFsPiB7IEVSUk9SIHwgVFJVRSB8IEZBTFNFIHwgVU5LTk9XTiB9IE9OIEVSUk9S IDwvb3B0aW9uYWw+CisgIHwgTkVTVEVEIFBBVEggPHJlcGxhY2VhYmxlPmpzb25fcGF0aF9zcGVj aWZpY2F0aW9uPC9yZXBsYWNlYWJsZT4gPG9wdGlvbmFsPiBBUyA8cmVwbGFjZWFibGU+cGF0aF9u YW1lPC9yZXBsYWNlYWJsZT4gPC9vcHRpb25hbD4KKyAgICAgICAgQ09MVU1OUyAoIDxyZXBsYWNl YWJsZT5qc29uX3RhYmxlX2NvbHVtbjwvcmVwbGFjZWFibGU+IDxvcHRpb25hbD4sIC4uLjwvb3B0 aW9uYWw+ICkKKyAgfCA8cmVwbGFjZWFibGU+bmFtZTwvcmVwbGFjZWFibGU+IEZPUiBPUkRJTkFM SVRZCis8cGhyYXNlPgorPHJlcGxhY2VhYmxlPmpzb25fdGFibGVfcGxhbjwvcmVwbGFjZWFibGU+ IGlzOgorPC9waHJhc2U+CisgICAgPHJlcGxhY2VhYmxlPmpzb25fcGF0aF9uYW1lPC9yZXBsYWNl YWJsZT4gPG9wdGlvbmFsPiB7IE9VVEVSIHwgSU5ORVIgfSA8cmVwbGFjZWFibGU+anNvbl90YWJs ZV9wbGFuX3ByaW1hcnk8L3JlcGxhY2VhYmxlPiA8L29wdGlvbmFsPgorICB8IDxyZXBsYWNlYWJs ZT5qc29uX3RhYmxlX3BsYW5fcHJpbWFyeTwvcmVwbGFjZWFibGU+IHsgVU5JT04gPHJlcGxhY2Vh YmxlPmpzb25fdGFibGVfcGxhbl9wcmltYXJ5PC9yZXBsYWNlYWJsZT4gfSA8b3B0aW9uYWw+Li4u PC9vcHRpb25hbD4KKyAgfCA8cmVwbGFjZWFibGU+anNvbl90YWJsZV9wbGFuX3ByaW1hcnk8L3Jl cGxhY2VhYmxlPiB7IENST1NTIDxyZXBsYWNlYWJsZT5qc29uX3RhYmxlX3BsYW5fcHJpbWFyeTwv cmVwbGFjZWFibGU+IH0gPG9wdGlvbmFsPi4uLjwvb3B0aW9uYWw+Cis8cGhyYXNlPgorPHJlcGxh Y2VhYmxlPmpzb25fdGFibGVfcGxhbl9wcmltYXJ5PC9yZXBsYWNlYWJsZT4gaXM6Cis8L3BocmFz ZT4KKyAgICA8cmVwbGFjZWFibGU+anNvbl9wYXRoX25hbWU8L3JlcGxhY2VhYmxlPiB8ICggPHJl cGxhY2VhYmxlPmpzb25fdGFibGVfcGxhbjwvcmVwbGFjZWFibGU+ICkKKzwvc3lub3BzaXM+CisK KyAgPHBhcmE+CisgICBFYWNoIHN5bnRheCBlbGVtZW50IGlzIGRlc2NyaWJlZCBiZWxvdyBpbiBt b3JlIGRldGFpbC4KKyAgPC9wYXJhPgorCisgIDx2YXJpYWJsZWxpc3Q+CisgICA8dmFybGlzdGVu dHJ5PgorICAgIDx0ZXJtPgorICAgICA8bGl0ZXJhbD48cmVwbGFjZWFibGU+Y29udGV4dF9pdGVt PC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZT5wYXRoX2V4cHJlc3Npb248L3JlcGxhY2VhYmxl PiA8b3B0aW9uYWw+IDxsaXRlcmFsPkFTPC9saXRlcmFsPiA8cmVwbGFjZWFibGU+anNvbl9wYXRo X25hbWU8L3JlcGxhY2VhYmxlPiA8L29wdGlvbmFsPiA8b3B0aW9uYWw+IDxsaXRlcmFsPlBBU1NJ Tkc8L2xpdGVyYWw+IHsgPHJlcGxhY2VhYmxlPnZhbHVlPC9yZXBsYWNlYWJsZT4gPGxpdGVyYWw+ QVM8L2xpdGVyYWw+IDxyZXBsYWNlYWJsZT52YXJuYW1lPC9yZXBsYWNlYWJsZT4gfSA8b3B0aW9u YWw+LCAuLi48L29wdGlvbmFsPjwvb3B0aW9uYWw+PC9saXRlcmFsPgorICAgIDwvdGVybT4KKyAg ICA8bGlzdGl0ZW0+CisgICAgPHBhcmE+CisgICAgIFRoZSBpbnB1dCBkYXRhIHRvIHF1ZXJ5LCB0 aGUgSlNPTiBwYXRoIGV4cHJlc3Npb24gZGVmaW5pbmcgdGhlIHF1ZXJ5LAorICAgICBhbmQgYW4g b3B0aW9uYWwgPGxpdGVyYWw+UEFTU0lORzwvbGl0ZXJhbD4gY2xhdXNlLCB3aGljaCBjYW4gcHJv dmlkZSBkYXRhCisgICAgIHZhbHVlcyB0byB0aGUgPHJlcGxhY2VhYmxlPnBhdGhfZXhwcmVzc2lv bjwvcmVwbGFjZWFibGU+LgorICAgICBUaGUgcmVzdWx0IG9mIHRoZSBpbnB1dCBkYXRhCisgICAg IGV2YWx1YXRpb24gaXMgY2FsbGVkIHRoZSA8Zmlyc3R0ZXJtPnJvdyBwYXR0ZXJuPC9maXJzdHRl cm0+LiBUaGUgcm93CisgICAgIHBhdHRlcm4gaXMgdXNlZCBhcyB0aGUgc291cmNlIGZvciByb3cg dmFsdWVzIGluIHRoZSBjb25zdHJ1Y3RlZCB2aWV3LgorICAgIDwvcGFyYT4KKyAgICA8L2xpc3Rp dGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+ CisgICAgIDxsaXRlcmFsPkNPTFVNTlM8L2xpdGVyYWw+KCA8cmVwbGFjZWFibGU+anNvbl90YWJs ZV9jb2x1bW48L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+LCAuLi48L29wdGlvbmFsPiApCisgICAg PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKworICAgIDxwYXJhPgorICAgICBUaGUgPGxpdGVyYWw+ Q09MVU1OUzwvbGl0ZXJhbD4gY2xhdXNlIGRlZmluaW5nIHRoZSBzY2hlbWEgb2YgdGhlCisgICAg IGNvbnN0cnVjdGVkIHZpZXcuIEluIHRoaXMgY2xhdXNlLCB5b3UgbXVzdCBzcGVjaWZ5IGFsbCB0 aGUgY29sdW1ucworICAgICB0byBiZSBmaWxsZWQgd2l0aCBTUUwvSlNPTiBpdGVtcy4KKyAgICAg VGhlIDxyZXBsYWNlYWJsZT5qc29uX3RhYmxlX2NvbHVtbjwvcmVwbGFjZWFibGU+CisgICAgIGV4 cHJlc3Npb24gaGFzIHRoZSBmb2xsb3dpbmcgc3ludGF4IHZhcmlhbnRzOgorICAgIDwvcGFyYT4K KworICA8dmFyaWFibGVsaXN0PgorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT4KKyAgICAg PGxpdGVyYWw+PHJlcGxhY2VhYmxlPm5hbWU8L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGU+dHlw ZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgPG9wdGlvbmFsPiA8bGl0ZXJhbD5QQVRIPC9saXRl cmFsPiA8cmVwbGFjZWFibGU+anNvbl9wYXRoX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiA8 L29wdGlvbmFsPjwvbGl0ZXJhbD4KKyAgICA8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorCisgICAg PHBhcmE+CisgICAgIEluc2VydHMgYSBzaW5nbGUgU1FML0pTT04gaXRlbSBpbnRvIHRoZSBvdXRw dXQgcm93LgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgVGhlIHByb3ZpZGVkIDxsaXRl cmFsPlBBVEg8L2xpdGVyYWw+IGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIGFuZAorICAgICB0aGUg Y29sdW1uIGlzIGZpbGxlZCB3aXRoIHRoZSBwcm9kdWNlZCBTUUwvSlNPTiBpdGVtLCBvbmUgZm9y IGVhY2ggcm93LgorICAgICBJZiB0aGUgPGxpdGVyYWw+UEFUSDwvbGl0ZXJhbD4gZXhwcmVzc2lv biBpcyBvbWl0dGVkLAorICAgICA8ZnVuY3Rpb24+SlNPTl9UQUJMRTwvZnVuY3Rpb24+IHVzZXMg dGhlCisgICAgIDxsaXRlcmFsPiQuPHJlcGxhY2VhYmxlPm5hbWU8L3JlcGxhY2VhYmxlPjwvbGl0 ZXJhbD4gcGF0aCBleHByZXNzaW9uLAorICAgICB3aGVyZSA8cmVwbGFjZWFibGU+bmFtZTwvcmVw bGFjZWFibGU+IGlzIHRoZSBwcm92aWRlZCBjb2x1bW4gbmFtZS4KKyAgICAgSW4gdGhpcyBjYXNl LCB0aGUgY29sdW1uIG5hbWUgbXVzdCBjb3JyZXNwb25kIHRvIG9uZSBvZiB0aGUKKyAgICAga2V5 cyB3aXRoaW4gdGhlIFNRTC9KU09OIGl0ZW0gcHJvZHVjZWQgYnkgdGhlIHJvdyBwYXR0ZXJuLgor ICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgT3B0aW9uYWxseSwgeW91IGNhbiBzcGVjaWZ5 IDxsaXRlcmFsPldSQVBQRVI8L2xpdGVyYWw+LAorICAgICA8bGl0ZXJhbD5RVU9URVM8L2xpdGVy YWw+IGNsYXVzZXMgdG8gZm9ybWF0IHRoZSBvdXRwdXQgYW5kCisgICAgIDxsaXRlcmFsPk9OIEVN UFRZPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+T04gRVJST1I8L2xpdGVyYWw+IHRvIGhhbmRsZQor ICAgICB0aG9zZSBtaXNzaW5nIHZhbHVlcyBhbmQgc3RydWN0dXJhbCBlcnJvcnMsIHJlc3BlY3Rp dmVseS4KKyAgICA8L3BhcmE+CisgICAgPG5vdGU+CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBj bGF1c2UgaXMgaW50ZXJuYWxseSB0dXJuZWQgaW50byBhbmQgaGFzIHRoZSBzYW1lIHNlbWFudGlj cyBhcworICAgICAgPGZ1bmN0aW9uPmpzb25fdmFsdWU8L2Z1bmN0aW9uPiBhbmQgPGZ1bmN0aW9u Pmpzb25fcXVlcnk8L2Z1bmN0aW9uPi4KKyAgICAgIFRoZSBsYXR0ZXIgaWYgdGhlIHNwZWNpZmll ZCB0eXBlIGlzIG5vdCBhIHNjYWxhciB0eXBlIG9yIGlmCisgICAgICA8bGl0ZXJhbD5XUkFQUEVS PC9saXRlcmFsPiBvciA8bGl0ZXJhbD5RVU9URVM8L2xpdGVyYWw+IGNsYXVzZSBpcworICAgICAg cHJlc2VudC4KKyAgICAgPC9wYXJhPgorICAgIDwvbm90ZT4KKyAgICA8L2xpc3RpdGVtPgorICAg PC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxy ZXBsYWNlYWJsZT5uYW1lPC9yZXBsYWNlYWJsZT4gPHJlcGxhY2VhYmxlPnR5cGU8L3JlcGxhY2Vh YmxlPiA8bGl0ZXJhbD5GT1JNQVQgSlNPTjwvbGl0ZXJhbD4gPG9wdGlvbmFsPkVOQ09ESU5HIDxs aXRlcmFsPlVURjg8L2xpdGVyYWw+PC9vcHRpb25hbD4KKyAgICAgICAgICA8b3B0aW9uYWw+IDxs aXRlcmFsPlBBVEg8L2xpdGVyYWw+IDxyZXBsYWNlYWJsZT5qc29uX3BhdGhfc3BlY2lmaWNhdGlv bjwvcmVwbGFjZWFibGU+IDwvb3B0aW9uYWw+CisgICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4K KworICAgIDxwYXJhPgorICAgICBJbnNlcnRzIGEgY29tcG9zaXRlIFNRTC9KU09OIGl0ZW0gaW50 byB0aGUgb3V0cHV0IHJvdy4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgIFRoZSBwcm92 aWRlZCA8bGl0ZXJhbD5QQVRIPC9saXRlcmFsPiBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBhbmQK KyAgICAgdGhlIGNvbHVtbiBpcyBmaWxsZWQgd2l0aCB0aGUgcHJvZHVjZWQgU1FML0pTT04gaXRl bS4gIElmIHRoZQorICAgICA8bGl0ZXJhbD5QQVRIPC9saXRlcmFsPiBleHByZXNzaW9uIGlzIG9t aXR0ZWQsIHBhdGggZXhwcmVzc2lvbgorICAgICA8bGl0ZXJhbD4kLjxyZXBsYWNlYWJsZT5uYW1l PC9yZXBsYWNlYWJsZT48L2xpdGVyYWw+IGlzIHVzZWQsCisgICAgIHdoZXJlIDxyZXBsYWNlYWJs ZT5uYW1lPC9yZXBsYWNlYWJsZT4gaXMgdGhlIHByb3ZpZGVkIGNvbHVtbiBuYW1lLgorICAgICBJ biB0aGlzIGNhc2UsIHRoZSBjb2x1bW4gbmFtZSBtdXN0IGNvcnJlc3BvbmQgdG8gb25lIG9mIHRo ZQorICAgICBrZXlzIHdpdGhpbiB0aGUgU1FML0pTT04gaXRlbSBwcm9kdWNlZCBieSB0aGUgcm93 IHBhdHRlcm4uCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICBPcHRpb25hbGx5LCB5b3Ug Y2FuIHNwZWNpZnkgPGxpdGVyYWw+V1JBUFBFUjwvbGl0ZXJhbD4sCisgICAgIDxsaXRlcmFsPlFV T1RFUzwvbGl0ZXJhbD4gY2xhdXNlcyB0byBmb3JtYXQgdGhlIG91dHB1dCBhbmQKKyAgICAgPGxp dGVyYWw+T04gRU1QVFk8L2xpdGVyYWw+IGFuZCA8bGl0ZXJhbD5PTiBFUlJPUjwvbGl0ZXJhbD4g dG8gaGFuZGxlCisgICAgIHRob3NlIHNjZW5hcmlvcyBhcHByb3ByaWF0ZWx5LgorICAgIDwvcGFy YT4KKyAgICA8bm90ZT4KKyAgICAgPHBhcmE+CisgICAgICBUaGlzIGNsYXVzZSBpcyBpbnRlcm5h bGx5IHR1cm5lZCBpbnRvIGFuZCBoYXMgdGhlIHNhbWUgc2VtYW50aWNzIGFzCisgICAgICA8ZnVu Y3Rpb24+anNvbl9xdWVyeTwvZnVuY3Rpb24+LgorICAgICA8L3BhcmE+CisgICAgPC9ub3RlPgor ICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4K KyAgICA8dGVybT4KKyAgICAgICA8cmVwbGFjZWFibGU+bmFtZTwvcmVwbGFjZWFibGU+IDxyZXBs YWNlYWJsZT50eXBlPC9yZXBsYWNlYWJsZT4KKyAgICAgICA8bGl0ZXJhbD5FWElTVFM8L2xpdGVy YWw+IDxvcHRpb25hbD4gPGxpdGVyYWw+UEFUSDwvbGl0ZXJhbD4gPHJlcGxhY2VhYmxlPmpzb25f cGF0aF9zcGVjaWZpY2F0aW9uPC9yZXBsYWNlYWJsZT4gPC9vcHRpb25hbD4KKyAgICA8L3Rlcm0+ CisgICAgPGxpc3RpdGVtPgorCisgICAgPHBhcmE+CisgICAgIEluc2VydHMgYSBib29sZWFuIGl0 ZW0gaW50byBlYWNoIG91dHB1dCByb3cuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICBU aGUgdmFsdWUgY29ycmVzcG9uZHMgdG8gd2hldGhlciBldmFsdWF0aW5nIHRoZSA8bGl0ZXJhbD5Q QVRIPC9saXRlcmFsPgorICAgICBleHByZXNzaW9uIHlpZWxkcyBhbnkgU1FML0pTT04gaXRlbXMu ICBJZiB0aGUgPGxpdGVyYWw+UEFUSDwvbGl0ZXJhbD4KKyAgICAgZXhwcmVzc2lvbiBpcyBvbWl0 dGVkLCBwYXRoIGV4cHJlc3Npb24KKyAgICAgPGxpdGVyYWw+JC48cmVwbGFjZWFibGU+bmFtZTwv cmVwbGFjZWFibGU+PC9saXRlcmFsPiBpcyB1c2VkLAorICAgICB3aGVyZSA8cmVwbGFjZWFibGU+ bmFtZTwvcmVwbGFjZWFibGU+IGlzIHRoZSBwcm92aWRlZCBjb2x1bW4gbmFtZS4KKyAgICA8L3Bh cmE+CisgICAgPHBhcmE+CisgICAgIFRoZSBzcGVjaWZpZWQgPHBhcmFtZXRlcj50eXBlPC9wYXJh bWV0ZXI+IHNob3VsZCBoYXZlIGEgY2FzdCBmcm9tIHRoZQorICAgICA8dHlwZT5ib29sZWFuPC90 eXBlPi4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgIE9wdGlvbmFsbHksIHlvdSBjYW4g YWRkIDxsaXRlcmFsPk9OIEVSUk9SPC9saXRlcmFsPiBjbGF1c2UgdG8gZGVmaW5lCisgICAgIGVy cm9yIGJlaGF2aW9yLgorICAgIDwvcGFyYT4KKyAgICA8bm90ZT4KKyAgICAgPHBhcmE+CisgICAg ICBUaGlzIGNsYXVzZSBpcyBpbnRlcm5hbGx5IHR1cm5lZCBpbnRvIGFuZCBoYXMgdGhlIHNhbWUg c2VtYW50aWNzIGFzCisgICAgICA8ZnVuY3Rpb24+anNvbl9leGlzdHM8L2Z1bmN0aW9uPi4KKyAg ICAgPC9wYXJhPgorICAgIDwvbm90ZT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50 cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgICA8bGl0ZXJhbD5ORVNU RUQgUEFUSDwvbGl0ZXJhbD4gPHJlcGxhY2VhYmxlPmpzb25fcGF0aF9zcGVjaWZpY2F0aW9uPC9y ZXBsYWNlYWJsZT4gPG9wdGlvbmFsPiA8bGl0ZXJhbD5BUzwvbGl0ZXJhbD4gPHJlcGxhY2VhYmxl Pmpzb25fcGF0aF9uYW1lPC9yZXBsYWNlYWJsZT4gPC9vcHRpb25hbD4KKyAgICAgICAgICA8bGl0 ZXJhbD5DT0xVTU5TPC9saXRlcmFsPiAoIDxyZXBsYWNlYWJsZT5qc29uX3RhYmxlX2NvbHVtbjwv cmVwbGFjZWFibGU+IDxvcHRpb25hbD4sIC4uLjwvb3B0aW9uYWw+ICkKKyAgICA8L3Rlcm0+Cisg ICAgPGxpc3RpdGVtPgorCisgICAgPHBhcmE+CisgICAgIEV4dHJhY3RzIFNRTC9KU09OIGl0ZW1z IGZyb20gbmVzdGVkIGxldmVscyBvZiB0aGUgcm93IHBhdHRlcm4sCisgICAgIGdlbmVyYXRlcyBv bmUgb3IgbW9yZSBjb2x1bW5zIGFzIGRlZmluZWQgYnkgdGhlIDxsaXRlcmFsPkNPTFVNTlM8L2xp dGVyYWw+CisgICAgIHN1YmNsYXVzZSwgYW5kIGluc2VydHMgdGhlIGV4dHJhY3RlZCBTUUwvSlNP TiBpdGVtcyBpbnRvIGVhY2ggcm93IG9mIHRoZXNlIGNvbHVtbnMuCisgICAgIFRoZSA8cmVwbGFj ZWFibGU+anNvbl90YWJsZV9jb2x1bW48L3JlcGxhY2VhYmxlPiBleHByZXNzaW9uIGluIHRoZQor ICAgICA8bGl0ZXJhbD5DT0xVTU5TPC9saXRlcmFsPiBzdWJjbGF1c2UgdXNlcyB0aGUgc2FtZSBz eW50YXggYXMgaW4gdGhlCisgICAgIHBhcmVudCA8bGl0ZXJhbD5DT0xVTU5TPC9saXRlcmFsPiBj bGF1c2UuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgIFRoZSA8bGl0ZXJhbD5ORVNU RUQgUEFUSDwvbGl0ZXJhbD4gc3ludGF4IGlzIHJlY3Vyc2l2ZSwKKyAgICAgc28geW91IGNhbiBn byBkb3duIG11bHRpcGxlIG5lc3RlZCBsZXZlbHMgYnkgc3BlY2lmeWluZyBzZXZlcmFsCisgICAg IDxsaXRlcmFsPk5FU1RFRCBQQVRIPC9saXRlcmFsPiBzdWJjbGF1c2VzIHdpdGhpbiBlYWNoIG90 aGVyLgorICAgICBJdCBhbGxvd3MgdG8gdW5uZXN0IHRoZSBoaWVyYXJjaHkgb2YgSlNPTiBvYmpl Y3RzIGFuZCBhcnJheXMKKyAgICAgaW4gYSBzaW5nbGUgZnVuY3Rpb24gaW52b2NhdGlvbiByYXRo ZXIgdGhhbiBjaGFpbmluZyBzZXZlcmFsCisgICAgIDxmdW5jdGlvbj5KU09OX1RBQkxFPC9mdW5j dGlvbj4gZXhwcmVzc2lvbnMgaW4gYW4gU1FMIHN0YXRlbWVudC4KKyAgICA8L3BhcmE+CisKKyAg ICA8cGFyYT4KKyAgICAgWW91IGNhbiB1c2UgdGhlIDxsaXRlcmFsPlBMQU48L2xpdGVyYWw+IGNs YXVzZSB0byBkZWZpbmUgaG93CisgICAgIHRvIGpvaW4gdGhlIGNvbHVtbnMgcmV0dXJuZWQgYnkg PGxpdGVyYWw+TkVTVEVEIFBBVEg8L2xpdGVyYWw+IGNsYXVzZXMuCisgICAgPC9wYXJhPgorICAg IDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAg ICA8dGVybT4KKyAgICAgPHJlcGxhY2VhYmxlPm5hbWU8L3JlcGxhY2VhYmxlPiA8bGl0ZXJhbD5G T1IgT1JESU5BTElUWTwvbGl0ZXJhbD4KKyAgICA8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorCisg ICAgPHBhcmE+CisgICAgIEFkZHMgYW4gb3JkaW5hbGl0eSBjb2x1bW4gdGhhdCBwcm92aWRlcyBz ZXF1ZW50aWFsIHJvdyBudW1iZXJpbmcuCisgICAgIFlvdSBjYW4gaGF2ZSBvbmx5IG9uZSBvcmRp bmFsaXR5IGNvbHVtbiBwZXIgdGFibGUuIFJvdyBudW1iZXJpbmcKKyAgICAgaXMgMS1iYXNlZC4g Rm9yIGNoaWxkIHJvd3MgdGhhdCByZXN1bHQgZnJvbSB0aGUgPGxpdGVyYWw+TkVTVEVEIFBBVEg8 L2xpdGVyYWw+CisgICAgIGNsYXVzZXMsIHRoZSBwYXJlbnQgcm93IG51bWJlciBpcyByZXBlYXRl ZC4KKyAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICA8 L3ZhcmlhYmxlbGlzdD4KKworICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwor ICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT4KKyAgICAgPGxpdGVyYWw+QVM8L2xpdGVyYWw+ IDxyZXBsYWNlYWJsZT5qc29uX3BhdGhfbmFtZTwvcmVwbGFjZWFibGU+CisgICAgPC90ZXJtPgor ICAgIDxsaXN0aXRlbT4KKworICAgIDxwYXJhPgorICAgICBUaGUgb3B0aW9uYWwgPHJlcGxhY2Vh YmxlPmpzb25fcGF0aF9uYW1lPC9yZXBsYWNlYWJsZT4gc2VydmVzIGFzIGFuCisgICAgIGlkZW50 aWZpZXIgb2YgdGhlIHByb3ZpZGVkIDxyZXBsYWNlYWJsZT5qc29uX3BhdGhfc3BlY2lmaWNhdGlv bjwvcmVwbGFjZWFibGU+LgorICAgICBUaGUgcGF0aCBuYW1lIG11c3QgYmUgdW5pcXVlIGFuZCBk aXN0aW5jdCBmcm9tIHRoZSBjb2x1bW4gbmFtZXMuCisgICAgIFdoZW4gdXNpbmcgdGhlIDxsaXRl cmFsPlBMQU48L2xpdGVyYWw+IGNsYXVzZSwgeW91IG11c3Qgc3BlY2lmeSB0aGUgbmFtZXMKKyAg ICAgZm9yIGFsbCB0aGUgcGF0aHMsIGluY2x1ZGluZyB0aGUgcm93IHBhdHRlcm4uIEVhY2ggcGF0 aCBuYW1lIGNhbiBhcHBlYXIgaW4KKyAgICAgdGhlIDxsaXRlcmFsPlBMQU48L2xpdGVyYWw+IGNs YXVzZSBvbmx5IG9uY2UuCisgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxp c3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT4KKyAgICAgPGxpdGVyYWw+ UExBTjwvbGl0ZXJhbD4gKCA8cmVwbGFjZWFibGU+anNvbl90YWJsZV9wbGFuPC9yZXBsYWNlYWJs ZT4gKQorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisKKyAgICA8cGFyYT4KKyAgICAgRGVm aW5lcyBob3cgdG8gam9pbiB0aGUgZGF0YSByZXR1cm5lZCBieSA8bGl0ZXJhbD5ORVNURUQgUEFU SDwvbGl0ZXJhbD4KKyAgICAgY2xhdXNlcyB0byB0aGUgY29uc3RydWN0ZWQgdmlldy4KKyAgICA8 L3BhcmE+CisgICAgPHBhcmE+CisgICAgIFRvIGpvaW4gY29sdW1ucyB3aXRoIHBhcmVudC9jaGls ZCByZWxhdGlvbnNoaXAsIHlvdSBjYW4gdXNlOgorICAgIDwvcGFyYT4KKyAgPHZhcmlhYmxlbGlz dD4KKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPklOTkVSPC9s aXRlcmFsPgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisKKyAgICA8cGFyYT4KKyAgICAg VXNlIDxsaXRlcmFsPklOTkVSIEpPSU48L2xpdGVyYWw+LCBzbyB0aGF0IHRoZSBwYXJlbnQgcm93 CisgICAgIGlzIG9taXR0ZWQgZnJvbSB0aGUgb3V0cHV0IGlmIGl0IGRvZXMgbm90IGhhdmUgYW55 IGNoaWxkIHJvd3MKKyAgICAgYWZ0ZXIgam9pbmluZyB0aGUgZGF0YSByZXR1cm5lZCBieSA8bGl0 ZXJhbD5ORVNURUQgUEFUSDwvbGl0ZXJhbD4uCisgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+ CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT4KKyAg ICAgPGxpdGVyYWw+T1VURVI8L2xpdGVyYWw+CisgICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4K KworICAgIDxwYXJhPgorICAgICBVc2UgPGxpdGVyYWw+TEVGVCBPVVRFUiBKT0lOPC9saXRlcmFs Piwgc28gdGhhdCB0aGUgcGFyZW50IHJvdworICAgICBpcyBhbHdheXMgaW5jbHVkZWQgaW50byB0 aGUgb3V0cHV0IGV2ZW4gaWYgaXQgZG9lcyBub3QgaGF2ZSBhbnkgY2hpbGQgcm93cworICAgICBh ZnRlciBqb2luaW5nIHRoZSBkYXRhIHJldHVybmVkIGJ5IDxsaXRlcmFsPk5FU1RFRCBQQVRIPC9s aXRlcmFsPiwgd2l0aCBOVUxMIHZhbHVlcworICAgICBpbnNlcnRlZCBpbnRvIHRoZSBjaGlsZCBj b2x1bW5zIGlmIHRoZSBjb3JyZXNwb25kaW5nCisgICAgIHZhbHVlcyBhcmUgbWlzc2luZy4KKyAg ICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgIFRoaXMgaXMgdGhlIGRlZmF1bHQgb3B0aW9uIGZv ciBqb2luaW5nIGNvbHVtbnMgd2l0aCBwYXJlbnQvY2hpbGQgcmVsYXRpb25zaGlwLgorICAgIDwv cGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisgIDwvdmFyaWFibGVs aXN0PgorCisgICAgIDxwYXJhPgorICAgICBUbyBqb2luIHNpYmxpbmcgY29sdW1ucywgeW91IGNh biB1c2U6CisgICAgPC9wYXJhPgorCisgIDx2YXJpYWJsZWxpc3Q+CisgICA8dmFybGlzdGVudHJ5 PgorICAgIDx0ZXJtPgorICAgICA8bGl0ZXJhbD5VTklPTjwvbGl0ZXJhbD4KKyAgICA8L3Rlcm0+ CisgICAgPGxpc3RpdGVtPgorCisgICAgPHBhcmE+CisgICAgIEdlbmVyYXRlIG9uZSByb3cgZm9y IGVhY2ggdmFsdWUgcHJvZHVjZWQgYnkgZWFjaCBvZiB0aGUgc2libGluZworICAgICBjb2x1bW5z LiBUaGUgY29sdW1ucyBmcm9tIHRoZSBvdGhlciBzaWJsaW5ncyBhcmUgc2V0IHRvIG51bGwuCisg ICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICBUaGlzIGlzIHRoZSBkZWZhdWx0IG9wdGlvbiBm b3Igam9pbmluZyBzaWJsaW5nIGNvbHVtbnMuCisgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+ CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT4KKyAg ICAgPGxpdGVyYWw+Q1JPU1M8L2xpdGVyYWw+CisgICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4K KworICAgIDxwYXJhPgorICAgICBHZW5lcmF0ZSBvbmUgcm93IGZvciBlYWNoIGNvbWJpbmF0aW9u IG9mIHZhbHVlcyBmcm9tIHRoZSBzaWJsaW5nIGNvbHVtbnMuCisgICAgPC9wYXJhPgorICAgIDwv bGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICA8L3ZhcmlhYmxlbGlzdD4KKworICAg IDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAg ICA8dGVybT4KKyAgICAgPGxpdGVyYWw+UExBTiBERUZBVUxUPC9saXRlcmFsPiAoIDxsaXRlcmFs PjxyZXBsYWNlYWJsZT5PVVRFUiB8IElOTkVSPC9yZXBsYWNlYWJsZT4gPG9wdGlvbmFsPiwgPHJl cGxhY2VhYmxlPlVOSU9OIHwgQ1JPU1M8L3JlcGxhY2VhYmxlPiA8L29wdGlvbmFsPjwvbGl0ZXJh bD4gKQorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhl IHRlcm1zIGNhbiBhbHNvIGJlIHNwZWNpZmllZCBpbiByZXZlcnNlIG9yZGVyLiBUaGUKKyAgICAg IDxsaXRlcmFsPklOTkVSPC9saXRlcmFsPiBvciA8bGl0ZXJhbD5PVVRFUjwvbGl0ZXJhbD4gb3B0 aW9uIGRlZmluZXMgdGhlCisgICAgICBqb2luaW5nIHBsYW4gZm9yIHBhcmVudC9jaGlsZCBjb2x1 bW5zLCB3aGlsZSA8bGl0ZXJhbD5VTklPTjwvbGl0ZXJhbD4gb3IKKyAgICAgIDxsaXRlcmFsPkNS T1NTPC9saXRlcmFsPiBhZmZlY3RzIGpvaW5zIG9mIHNpYmxpbmcgY29sdW1ucy4gVGhpcyBmb3Jt CisgICAgICBvZiA8bGl0ZXJhbD5QTEFOPC9saXRlcmFsPiBvdmVycmlkZXMgdGhlIGRlZmF1bHQg cGxhbiBmb3IKKyAgICAgIGFsbCBjb2x1bW5zIGF0IG9uY2UuIEV2ZW4gdGhvdWdoIHRoZSBwYXRo IG5hbWVzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlCisgICAgICA8bGl0ZXJhbD5QTEFOIERFRkFV TFQ8L2xpdGVyYWw+IGZvcm0sIHRvIGNvbmZvcm0gdG8gdGhlIFNRTC9KU09OIHN0YW5kYXJkCisg ICAgICB0aGV5IG11c3QgYmUgcHJvdmlkZWQgZm9yIGFsbCB0aGUgcGF0aHMgaWYgdGhlIDxsaXRl cmFsPlBMQU48L2xpdGVyYWw+CisgICAgICBjbGF1c2UgaXMgdXNlZC4KKyAgICAgPC9wYXJhPgor ICAgICA8cGFyYT4KKyAgICAgIDxsaXRlcmFsPlBMQU4gREVGQVVMVDwvbGl0ZXJhbD4gaXMgc2lt cGxlciB0aGFuIHNwZWNpZnlpbmcgYSBjb21wbGV0ZQorICAgICAgPGxpdGVyYWw+UExBTjwvbGl0 ZXJhbD4sIGFuZCBpcyBvZnRlbiBhbGwgdGhhdCBpcyByZXF1aXJlZCB0byBnZXQgdGhlIGRlc2ly ZWQKKyAgICAgIG91dHB1dC4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zh cmxpc3RlbnRyeT4KKyAgPC92YXJpYWJsZWxpc3Q+CisKKyAgPHBhcmE+RXhhbXBsZXM8L3BhcmE+ CisKKyAgICAgPHBhcmE+CisgICAgIEluIHRoZXNlIGV4YW1wbGVzIHRoZSBmb2xsb3dpbmcgc21h bGwgdGFibGUgc3RvcmluZyBzb21lIEpTT04gZGF0YSB3aWxsIGJlIHVzZWQ6Cis8cHJvZ3JhbWxp c3Rpbmc+CitDUkVBVEUgVEFCTEUgbXlfZmlsbXMgKCBqcyBqc29uYiApOworCitJTlNFUlQgSU5U TyBteV9maWxtcyBWQUxVRVMgKAorJ3sgImZhdm9yaXRlcyIgOiBbCisgICB7ICJraW5kIiA6ICJj b21lZHkiLCAiZmlsbXMiIDogWworICAgICB7ICJ0aXRsZSIgOiAiQmFuYW5hcyIsCisgICAgICAg ImRpcmVjdG9yIiA6ICJXb29keSBBbGxlbiJ9LAorICAgICB7ICJ0aXRsZSIgOiAiVGhlIERpbm5l ciBHYW1lIiwKKyAgICAgICAiZGlyZWN0b3IiIDogIkZyYW5jaXMgVmViZXIiIH0gXSB9LAorICAg eyAia2luZCIgOiAiaG9ycm9yIiwgImZpbG1zIiA6IFsKKyAgICAgeyAidGl0bGUiIDogIlBzeWNo byIsCisgICAgICAgImRpcmVjdG9yIiA6ICJBbGZyZWQgSGl0Y2hjb2NrIiB9IF0gfSwKKyAgIHsg ImtpbmQiIDogInRocmlsbGVyIiwgImZpbG1zIiA6IFsKKyAgICAgeyAidGl0bGUiIDogIlZlcnRp Z28iLAorICAgICAgICJkaXJlY3RvciIgOiAiQWxmcmVkIEhpdGNoY29jayIgfSBdIH0sCisgICB7 ICJraW5kIiA6ICJkcmFtYSIsICJmaWxtcyIgOiBbCisgICAgIHsgInRpdGxlIiA6ICJZb2ppbWJv IiwKKyAgICAgICAiZGlyZWN0b3IiIDogIkFraXJhIEt1cm9zYXdhIiB9IF0gfQorICBdIH0nKTsK KzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+CisgICAgICBRdWVy eSB0aGUgPHN0cnVjdG5hbWU+bXlfZmlsbXM8L3N0cnVjdG5hbWU+IHRhYmxlIGhvbGRpbmcKKyAg ICAgIHNvbWUgSlNPTiBkYXRhIGFib3V0IHRoZSBmaWxtcyBhbmQgY3JlYXRlIGEgdmlldyB0aGF0 CisgICAgICBkaXN0cmlidXRlcyB0aGUgZmlsbSBnZW5yZSwgdGl0bGUsIGFuZCBkaXJlY3RvciBi ZXR3ZWVuIHNlcGFyYXRlIGNvbHVtbnM6Cis8c2NyZWVuPgorU0VMRUNUIGp0LiogRlJPTQorIG15 X2ZpbG1zLAorIEpTT05fVEFCTEUgKCBqcywgJyQuZmF2b3JpdGVzWypdJyBDT0xVTU5TICgKKyAg IGlkIEZPUiBPUkRJTkFMSVRZLAorICAga2luZCB0ZXh0IFBBVEggJyQua2luZCcsCisgICBORVNU RUQgUEFUSCAnJC5maWxtc1sqXScgQ09MVU1OUyAoCisgICAgIHRpdGxlIHRleHQgUEFUSCAnJC50 aXRsZScsCisgICAgIGRpcmVjdG9yIHRleHQgUEFUSCAnJC5kaXJlY3RvcicpKSkgQVMganQ7Cist LS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyBp ZCB8ICAga2luZCAgIHwgICAgICAgdGl0bGUgICAgICB8ICAgIGRpcmVjdG9yCistLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxICB8IGNvbWVk eSAgIHwgQmFuYW5hcyAgICAgICAgICB8IFdvb2R5IEFsbGVuCisgMSAgfCBjb21lZHkgICB8IFRo ZSBEaW5uZXIgR2FtZSAgfCBGcmFuY2lzIFZlYmVyCisgMiAgfCBob3Jyb3IgICB8IFBzeWNobyAg ICAgICAgICAgfCBBbGZyZWQgSGl0Y2hjb2NrCisgMyAgfCB0aHJpbGxlciB8IFZlcnRpZ28gICAg ICAgICAgfCBBbGZyZWQgSGl0Y2hjb2NrCisgNCAgfCBkcmFtYSAgICB8IFlvamltYm8gICAgICAg ICAgfCBBa2lyYSBLdXJvc2F3YQorICg1IHJvd3MpCis8L3NjcmVlbj4KKyAgICAgPC9wYXJhPgor CisgICAgIDxwYXJhPgorICAgICAgRmluZCBhIGRpcmVjdG9yIHRoYXQgaGFzIGRvbmUgZmlsbXMg aW4gdHdvIGRpZmZlcmVudCBnZW5yZXM6Cis8c2NyZWVuPgorU0VMRUNUCisgIGRpcmVjdG9yMSBB UyBkaXJlY3RvciwgdGl0bGUxLCBraW5kMSwgdGl0bGUyLCBraW5kMgorRlJPTQorICBteV9maWxt cywKKyAgSlNPTl9UQUJMRSAoIGpzLCAnJC5mYXZvcml0ZXMnIEFTIGZhdnMgQ09MVU1OUyAoCisg ICAgTkVTVEVEIFBBVEggJyRbKl0nIEFTIGZpbG1zMSBDT0xVTU5TICgKKyAgICAgIGtpbmQxIHRl eHQgUEFUSCAnJC5raW5kJywKKyAgICAgIE5FU1RFRCBQQVRIICckLmZpbG1zWypdJyBBUyBmaWxt MSBDT0xVTU5TICgKKyAgICAgICAgdGl0bGUxIHRleHQgUEFUSCAnJC50aXRsZScsCisgICAgICAg IGRpcmVjdG9yMSB0ZXh0IFBBVEggJyQuZGlyZWN0b3InKQorICAgICksCisgICAgTkVTVEVEIFBB VEggJyRbKl0nIEFTIGZpbG1zMiBDT0xVTU5TICgKKyAgICAgIGtpbmQyIHRleHQgUEFUSCAnJC5r aW5kJywKKyAgICAgIE5FU1RFRCBQQVRIICckLmZpbG1zWypdJyBBUyBmaWxtMiBDT0xVTU5TICgK KyAgICAgICAgdGl0bGUyIHRleHQgUEFUSCAnJC50aXRsZScsCisgICAgICAgIGRpcmVjdG9yMiB0 ZXh0IFBBVEggJyQuZGlyZWN0b3InCisgICAgICApCisgICAgKQorICAgKQorICAgUExBTiAoZmF2 cyBPVVRFUiAoKGZpbG1zMSBJTk5FUiBmaWxtMSkgQ1JPU1MgKGZpbG1zMiBJTk5FUiBmaWxtMikp KQorICApIEFTIGp0CisgV0hFUkUga2luZDEgPiBraW5kMiBBTkQgZGlyZWN0b3IxID0gZGlyZWN0 b3IyOworCisgICAgIGRpcmVjdG9yICAgICB8IHRpdGxlMSAgfCAga2luZDEgICB8IHRpdGxlMiB8 IGtpbmQyCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0KKyBBbGZyZWQgSGl0Y2hjb2NrIHwgVmVydGlnbyB8IHRocmlsbGVyIHwgUHN5Y2hv IHwgaG9ycm9yCisoMSByb3cpCis8L3NjcmVlbj4KKyAgICAgPC9wYXJhPgorICA8L3NlY3QyPgor CiAgPC9zZWN0MT4KIAogIDxzZWN0MSBpZD0iZnVuY3Rpb25zLXNlcXVlbmNlIj4KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dCBiL3NyYy9iYWNrZW5kL2Nh dGFsb2cvc3FsX2ZlYXR1cmVzLnR4dAppbmRleCA3NTk4YmQ4ZjIyLi45NTAwYTgwZjRkIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQKKysrIGIvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9zcWxfZmVhdHVyZXMudHh0CkBAIC01NTEsMTAgKzU1MSwxMCBAQCBUODE0 CUNvbG9uIGluIEpTT05fT0JKRUNUIG9yIEpTT05fT0JKRUNUQUdHCQkJWUVTCiBUODIxCUJhc2lj IFNRTC9KU09OIHF1ZXJ5IG9wZXJhdG9ycwkJCVlFUwkKIFQ4MjIJU1FML0pTT046IElTIEpTT04g V0lUSCBVTklRVUUgS0VZUyBwcmVkaWNhdGUJCQlZRVMJCiBUODIzCVNRTC9KU09OOiBQQVNTSU5H IGNsYXVzZQkJCVlFUwkKLVQ4MjQJSlNPTl9UQUJMRTogc3BlY2lmaWMgUExBTiBjbGF1c2UJCQlO TwkKK1Q4MjQJSlNPTl9UQUJMRTogc3BlY2lmaWMgUExBTiBjbGF1c2UJCQlZRVMJCiBUODI1CVNR TC9KU09OOiBPTiBFTVBUWSBhbmQgT04gRVJST1IgY2xhdXNlcwkJCVlFUwkKIFQ4MjYJR2VuZXJh bCB2YWx1ZSBleHByZXNzaW9uIGluIE9OIEVSUk9SIG9yIE9OIEVNUFRZIGNsYXVzZXMJCQlZRVMJ Ci1UODI3CUpTT05fVEFCTEU6IHNpYmxpbmcgTkVTVEVEIENPTFVNTlMgY2xhdXNlcwkJCU5PCQor VDgyNwlKU09OX1RBQkxFOiBzaWJsaW5nIE5FU1RFRCBDT0xVTU5TIGNsYXVzZXMJCQlZRVMJCiBU ODI4CUpTT05fUVVFUlkJCQlZRVMJCiBUODI5CUpTT05fUVVFUlk6IGFycmF5IHdyYXBwZXIgb3B0 aW9ucwkJCVlFUwkKIFQ4MzAJRW5mb3JjaW5nIHVuaXF1ZSBrZXlzIGluIFNRTC9KU09OIGNvbnN0 cnVjdG9yIGZ1bmN0aW9ucwkJCVlFUwkKQEAgLTU2NSw3ICs1NjUsNyBAQCBUODM0CVNRTC9KU09O IHBhdGggbGFuZ3VhZ2U6IHdpbGRjYXJkIG1lbWJlciBhY2Nlc3NvcgkJCVlFUwogVDgzNQlTUUwv SlNPTiBwYXRoIGxhbmd1YWdlOiBmaWx0ZXIgZXhwcmVzc2lvbnMJCQlZRVMJCiBUODM2CVNRTC9K U09OIHBhdGggbGFuZ3VhZ2U6IHN0YXJ0cyB3aXRoIHByZWRpY2F0ZQkJCVlFUwkKIFQ4MzcJU1FM L0pTT04gcGF0aCBsYW5ndWFnZTogcmVnZXhfbGlrZSBwcmVkaWNhdGUJCQlZRVMJCi1UODM4CUpT T05fVEFCTEU6IFBMQU4gREVGQVVMVCBjbGF1c2UJCQlOTwkKK1Q4MzgJSlNPTl9UQUJMRTogUExB TiBERUZBVUxUIGNsYXVzZQkJCVlFUwkKIFQ4MzkJRm9ybWF0dGVkIGNhc3Qgb2YgZGF0ZXRpbWVz IHRvL2Zyb20gY2hhcmFjdGVyIHN0cmluZ3MJCQlOTwkKIFQ4NDAJSGV4IGludGVnZXIgbGl0ZXJh bHMgaW4gU1FML0pTT04gcGF0aCBsYW5ndWFnZQkJCVlFUwkKIFQ4NTEJU1FML0pTT046IG9wdGlv bmFsIGtleXdvcmRzIGZvciBkZWZhdWx0IHN5bnRheAkJCVlFUwkKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4u YwppbmRleCAzZDU5MGE2YjlmLi43Y2Q3YjJkZDgyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBA IC0zODkyLDcgKzM4OTIsMTMgQEAgRXhwbGFpblRhcmdldFJlbChQbGFuICpwbGFuLCBJbmRleCBy dGksIEV4cGxhaW5TdGF0ZSAqZXMpCiAJCQlicmVhazsKIAkJY2FzZSBUX1RhYmxlRnVuY1NjYW46 CiAJCQlBc3NlcnQocnRlLT5ydGVraW5kID09IFJURV9UQUJMRUZVTkMpOwotCQkJb2JqZWN0bmFt ZSA9ICJ4bWx0YWJsZSI7CisJCQlpZiAocnRlLT50YWJsZWZ1bmMpCisJCQkJaWYgKHJ0ZS0+dGFi bGVmdW5jLT5mdW5jdHlwZSA9PSBURlRfWE1MVEFCTEUpCisJCQkJCW9iamVjdG5hbWUgPSAieG1s dGFibGUiOworCQkJCWVsc2UJCQkvKiBNdXN0IGJlIFRGVF9KU09OX1RBQkxFICovCisJCQkJCW9i amVjdG5hbWUgPSAianNvbl90YWJsZSI7CisJCQllbHNlCisJCQkJb2JqZWN0bmFtZSA9IE5VTEw7 CiAJCQlvYmplY3R0YWcgPSAiVGFibGUgRnVuY3Rpb24gTmFtZSI7CiAJCQlicmVhazsKIAkJY2Fz ZSBUX1ZhbHVlc1NjYW46CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhw ckludGVycC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYwppbmRleCA5 NjQ0MzNhMGU3Li4zZDRkZmI4MmIwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjRXhwckludGVycC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJw LmMKQEAgLTQzMzQsNiArNDMzNCwxMiBAQCBFeGVjRXZhbEpzb25FeHByUGF0aChFeHByU3RhdGUg KnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLAogCQkJCWJyZWFrOwogCQkJfQogCisJCWNhc2UgSlNP Tl9UQUJMRV9PUDoKKwkJCXBvc3RfZXZhbC0+anVtcF9ldmFsX2NvZXJjaW9uID0gLTE7CisJCQkq b3AtPnJlc3ZhbHVlID0gaXRlbTsKKwkJCSpvcC0+cmVzbnVsbCA9IGZhbHNlOworCQkJYnJlYWs7 CisKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgU1FML0pTT04gZXhw cmVzc2lvbiBvcCAlZCIsIGpleHByLT5vcCk7CiAJCQlyZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGFibGVGdW5jc2Nhbi5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVRhYmxlRnVuY3NjYW4uYwppbmRleCA3MmNhMzRhMjI4Li45OWZiOTI4OTRj IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGFibGVGdW5jc2Nhbi5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUYWJsZUZ1bmNzY2FuLmMKQEAgLTI4LDYgKzI4 LDcgQEAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9leGVjbm9kZXMu aCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL2pzb25wYXRo LmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRp bHMuaCIKICNpbmNsdWRlICJ1dGlscy94bWwuaCIKQEAgLTE2MSw4ICsxNjIsOSBAQCBFeGVjSW5p dFRhYmxlRnVuY1NjYW4oVGFibGVGdW5jU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBl ZmxhZ3MpCiAJc2NhbnN0YXRlLT5zcy5wcy5xdWFsID0KIAkJRXhlY0luaXRRdWFsKG5vZGUtPnNj YW4ucGxhbi5xdWFsLCAmc2NhbnN0YXRlLT5zcy5wcyk7CiAKLQkvKiBPbmx5IFhNTFRBQkxFIGlz IHN1cHBvcnRlZCBjdXJyZW50bHkgKi8KLQlzY2Fuc3RhdGUtPnJvdXRpbmUgPSAmWG1sVGFibGVS b3V0aW5lOworCS8qIE9ubHkgWE1MVEFCTEUgYW5kIEpTT05fVEFCTEUgYXJlIHN1cHBvcnRlZCBj dXJyZW50bHkgKi8KKwlzY2Fuc3RhdGUtPnJvdXRpbmUgPQorCQl0Zi0+ZnVuY3R5cGUgPT0gVEZU X1hNTFRBQkxFID8gJlhtbFRhYmxlUm91dGluZSA6ICZKc29uYlRhYmxlUm91dGluZTsKIAogCXNj YW5zdGF0ZS0+cGVyVGFibGVDeHQgPQogCQlBbGxvY1NldENvbnRleHRDcmVhdGUoQ3VycmVudE1l bW9yeUNvbnRleHQsCkBAIC0xODIsNiArMTg0LDEwIEBAIEV4ZWNJbml0VGFibGVGdW5jU2NhbihU YWJsZUZ1bmNTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJRXhlY0lu aXRFeHByTGlzdCh0Zi0+Y29sZXhwcnMsIChQbGFuU3RhdGUgKikgc2NhbnN0YXRlKTsKIAlzY2Fu c3RhdGUtPmNvbGRlZmV4cHJzID0KIAkJRXhlY0luaXRFeHByTGlzdCh0Zi0+Y29sZGVmZXhwcnMs IChQbGFuU3RhdGUgKikgc2NhbnN0YXRlKTsKKwlzY2Fuc3RhdGUtPmNvbHZhbGV4cHJzID0KKwkJ RXhlY0luaXRFeHByTGlzdCh0Zi0+Y29sdmFsZXhwcnMsIChQbGFuU3RhdGUgKikgc2NhbnN0YXRl KTsKKwlzY2Fuc3RhdGUtPnBhc3Npbmd2YWxleHBycyA9CisJCUV4ZWNJbml0RXhwckxpc3QodGYt PnBhc3Npbmd2YWxleHBycywgKFBsYW5TdGF0ZSAqKSBzY2Fuc3RhdGUpOwogCiAJc2NhbnN0YXRl LT5ub3RudWxscyA9IHRmLT5ub3RudWxsczsKIApAQCAtMzY5LDE0ICszNzUsMTcgQEAgdGZ1bmNJ bml0aWFsaXplKFRhYmxlRnVuY1NjYW5TdGF0ZSAqdHN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRl eHQsIERhdHVtIGRvYykKIAkJcm91dGluZS0+U2V0TmFtZXNwYWNlKHRzdGF0ZSwgbnNfbmFtZSwg bnNfdXJpKTsKIAl9CiAKLQkvKiBJbnN0YWxsIHRoZSByb3cgZmlsdGVyIGV4cHJlc3Npb24gaW50 byB0aGUgdGFibGUgYnVpbGRlciBjb250ZXh0ICovCi0JdmFsdWUgPSBFeGVjRXZhbEV4cHIodHN0 YXRlLT5yb3dleHByLCBlY29udGV4dCwgJmlzbnVsbCk7Ci0JaWYgKGlzbnVsbCkKLQkJZXJlcG9y dChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX05VTExfVkFMVUVfTk9UX0FMTE9XRUQpLAot CQkJCSBlcnJtc2coInJvdyBmaWx0ZXIgZXhwcmVzc2lvbiBtdXN0IG5vdCBiZSBudWxsIikpKTsK KwlpZiAocm91dGluZS0+U2V0Um93RmlsdGVyKQorCXsKKwkJLyogSW5zdGFsbCB0aGUgcm93IGZp bHRlciBleHByZXNzaW9uIGludG8gdGhlIHRhYmxlIGJ1aWxkZXIgY29udGV4dCAqLworCQl2YWx1 ZSA9IEV4ZWNFdmFsRXhwcih0c3RhdGUtPnJvd2V4cHIsIGVjb250ZXh0LCAmaXNudWxsKTsKKwkJ aWYgKGlzbnVsbCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfTlVM TF9WQUxVRV9OT1RfQUxMT1dFRCksCisJCQkJCSBlcnJtc2coInJvdyBmaWx0ZXIgZXhwcmVzc2lv biBtdXN0IG5vdCBiZSBudWxsIikpKTsKIAotCXJvdXRpbmUtPlNldFJvd0ZpbHRlcih0c3RhdGUs IFRleHREYXR1bUdldENTdHJpbmcodmFsdWUpKTsKKwkJcm91dGluZS0+U2V0Um93RmlsdGVyKHRz dGF0ZSwgVGV4dERhdHVtR2V0Q1N0cmluZyh2YWx1ZSkpOworCX0KIAogCS8qCiAJICogSW5zdGFs bCB0aGUgY29sdW1uIGZpbHRlciBleHByZXNzaW9ucyBpbnRvIHRoZSB0YWJsZSBidWlsZGVyIGNv bnRleHQuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYyBiL3NyYy9i YWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCmluZGV4IDA5YTA1YTAzNzMuLmYxNjIzMWEyMDIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5k L25vZGVzL21ha2VmdW5jcy5jCkBAIC01MzgsNiArNTM4LDIyIEBAIG1ha2VGdW5jRXhwcihPaWQg ZnVuY2lkLCBPaWQgcmV0dHlwZSwgTGlzdCAqYXJncywKIAlyZXR1cm4gZnVuY2V4cHI7CiB9CiAK Ky8qCisgKiBtYWtlU3RyaW5nQ29uc3QgLQorICogCWJ1aWxkIGEgQV9Db25zdCBub2RlIG9mIHR5 cGUgVF9TdHJpbmcgZm9yIGdpdmVuIHN0cmluZworICovCitOb2RlICoKK21ha2VTdHJpbmdDb25z dChjaGFyICpzdHIsIGludCBsb2NhdGlvbikKK3sKKwlBX0NvbnN0CSAgICpuID0gbWFrZU5vZGUo QV9Db25zdCk7CisKKwluLT52YWwuc3ZhbC50eXBlID0gVF9TdHJpbmc7CisJbi0+dmFsLnN2YWwu c3ZhbCA9IHN0cjsKKwluLT5sb2NhdGlvbiA9IGxvY2F0aW9uOworCisgICByZXR1cm4gKE5vZGUg KikgbjsKK30KKwogLyoKICAqIG1ha2VEZWZFbGVtIC0KICAqCWJ1aWxkIGEgRGVmRWxlbSBub2Rl CkBAIC04NzUsNiArODkxLDY0IEBAIG1ha2VKc29uQmVoYXZpb3IoSnNvbkJlaGF2aW9yVHlwZSB0 eXBlLCBOb2RlICpleHByLCBKc29uQ29lcmNpb24gKmNvZXJjaW9uLAogCXJldHVybiBiZWhhdmlv cjsKIH0KIAorLyoKKyAqIG1ha2VKc29uVGFibGVQYXRoIC0KKyAqCQlNYWtlIEpzb25UYWJsZVBh dGggbm9kZSBmcm9tIGdpdmVuIHBhdGggc3RyaW5nIGFuZCBuYW1lIChpZiBhbnkpCisgKi8KK0pz b25UYWJsZVBhdGggKgorbWFrZUpzb25UYWJsZVBhdGgoQ29uc3QgKnBhdGh2YWx1ZSwgY2hhciAq cGF0aG5hbWUpCit7CisJSnNvblRhYmxlUGF0aCAqcGF0aCA9IG1ha2VOb2RlKEpzb25UYWJsZVBh dGgpOworCisJQXNzZXJ0KElzQShwYXRodmFsdWUsIENvbnN0KSk7CisJcGF0aC0+dmFsdWUgPSBw YXRodmFsdWU7CisJaWYgKHBhdGhuYW1lKQorCQlwYXRoLT5uYW1lID0gcGF0aG5hbWU7CisKKwly ZXR1cm4gcGF0aDsKK30KKworLyoKKyAqIG1ha2VKc29uVGFibGVQYXRoU3BlYyAtCisgKgkJTWFr ZSBKc29uVGFibGVQYXRoU3BlYyBub2RlIGZyb20gZ2l2ZW4gcGF0aCBzdHJpbmcgYW5kIG5hbWUg KGlmIGFueSkKKyAqLworSnNvblRhYmxlUGF0aFNwZWMgKgorbWFrZUpzb25UYWJsZVBhdGhTcGVj KGNoYXIgKnN0cmluZywgY2hhciAqbmFtZSwgaW50IHN0cmluZ19sb2NhdGlvbiwKKwkJCQkJICBp bnQgbmFtZV9sb2NhdGlvbikKK3sKKwlKc29uVGFibGVQYXRoU3BlYyAqcGF0aHNwZWMgPSBtYWtl Tm9kZShKc29uVGFibGVQYXRoU3BlYyk7CisKKwlBc3NlcnQoc3RyaW5nICE9IE5VTEwpOworCXBh dGhzcGVjLT5zdHJpbmcgPSBtYWtlU3RyaW5nQ29uc3Qoc3RyaW5nLCBzdHJpbmdfbG9jYXRpb24p OworCWlmIChuYW1lICE9IE5VTEwpCisJCXBhdGhzcGVjLT5uYW1lID0gcHN0cmR1cChuYW1lKTsK KworCXBhdGhzcGVjLT5uYW1lX2xvY2F0aW9uID0gbmFtZV9sb2NhdGlvbjsKKwlwYXRoc3BlYy0+ bG9jYXRpb24gPSBzdHJpbmdfbG9jYXRpb247CisKKwlyZXR1cm4gcGF0aHNwZWM7Cit9CisKKy8q CisgKiBtYWtlSnNvblRhYmxlSm9pbmVkUGxhbiAtCisgKgkgICBjcmVhdGVzIGEgSnNvblRhYmxl UGxhblNwZWMgbm9kZSB0byByZXByZXNlbnQgam9pbiBiZXR3ZWVuIHRoZSBnaXZlbgorICoJICAg cGFpciBvZiBwbGFucworICovCitOb2RlICoKK21ha2VKc29uVGFibGVKb2luZWRQbGFuKEpzb25U YWJsZVBsYW5Kb2luVHlwZSB0eXBlLCBOb2RlICpwbGFuMSwgTm9kZSAqcGxhbjIsCisJCQkJCQlp bnQgbG9jYXRpb24pCit7CisJSnNvblRhYmxlUGxhblNwZWMgKm4gPSBtYWtlTm9kZShKc29uVGFi bGVQbGFuU3BlYyk7CisKKwluLT5wbGFuX3R5cGUgPSBKU1RQX0pPSU5FRDsKKwluLT5qb2luX3R5 cGUgPSB0eXBlOworCW4tPnBsYW4xID0gY2FzdE5vZGUoSnNvblRhYmxlUGxhblNwZWMsIHBsYW4x KTsKKwluLT5wbGFuMiA9IGNhc3ROb2RlKEpzb25UYWJsZVBsYW5TcGVjLCBwbGFuMik7CisJbi0+ bG9jYXRpb24gPSBsb2NhdGlvbjsKKworCXJldHVybiAoTm9kZSAqKSBuOworfQorCiAvKgogICog bWFrZUpzb25LZXlWYWx1ZSAtCiAgKgkgIGNyZWF0ZXMgYSBKc29uS2V5VmFsdWUgbm9kZQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rl cy9ub2RlRnVuY3MuYwppbmRleCBkMjcyMDI3ZjhhLi5jNjgzOTk4YWI5IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2Rl RnVuY3MuYwpAQCAtMjY5MCw2ICsyNjkwLDEwIEBAIGV4cHJlc3Npb25fdHJlZV93YWxrZXJfaW1w bChOb2RlICpub2RlLAogCQkJCQlyZXR1cm4gdHJ1ZTsKIAkJCQlpZiAoV0FMSyh0Zi0+Y29sZGVm ZXhwcnMpKQogCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAoV0FMSyh0Zi0+Y29sdmFsZXhwcnMp KQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAoV0FMSyh0Zi0+cGFzc2luZ3ZhbGV4cHJzKSkK KwkJCQkJcmV0dXJuIHRydWU7CiAJCQl9CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKQEAgLTM3NTAs NiArMzc1NCw4IEBAIGV4cHJlc3Npb25fdHJlZV9tdXRhdG9yX2ltcGwoTm9kZSAqbm9kZSwKIAkJ CQlNVVRBVEUobmV3bm9kZS0+cm93ZXhwciwgdGYtPnJvd2V4cHIsIE5vZGUgKik7CiAJCQkJTVVU QVRFKG5ld25vZGUtPmNvbGV4cHJzLCB0Zi0+Y29sZXhwcnMsIExpc3QgKik7CiAJCQkJTVVUQVRF KG5ld25vZGUtPmNvbGRlZmV4cHJzLCB0Zi0+Y29sZGVmZXhwcnMsIExpc3QgKik7CisJCQkJTVVU QVRFKG5ld25vZGUtPmNvbHZhbGV4cHJzLCB0Zi0+Y29sdmFsZXhwcnMsIExpc3QgKik7CisJCQkJ TVVUQVRFKG5ld25vZGUtPnBhc3Npbmd2YWxleHBycywgdGYtPnBhc3Npbmd2YWxleHBycywgTGlz dCAqKTsKIAkJCQlyZXR1cm4gKE5vZGUgKikgbmV3bm9kZTsKIAkJCX0KIAkJCWJyZWFrOwpAQCAt NDE3NCw2ICs0MTgwLDM4IEBAIHJhd19leHByZXNzaW9uX3RyZWVfd2Fsa2VyX2ltcGwoTm9kZSAq bm9kZSwKIAkJCQkJcmV0dXJuIHRydWU7CiAJCQl9CiAJCQlicmVhazsKKwkJY2FzZSBUX0pzb25U YWJsZToKKwkJCXsKKwkJCQlKc29uVGFibGUgICpqdCA9IChKc29uVGFibGUgKikgbm9kZTsKKwor CQkJCWlmIChXQUxLKGp0LT5jb250ZXh0X2l0ZW0pKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlp ZiAoV0FMSyhqdC0+cGF0aHNwZWMpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAoV0FMSyhq dC0+cGFzc2luZykpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmIChXQUxLKGp0LT5jb2x1bW5z KSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKFdBTEsoanQtPm9uX2Vycm9yKSkKKwkJCQkJ cmV0dXJuIHRydWU7CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25UYWJsZUNvbHVtbjoK KwkJCXsKKwkJCQlKc29uVGFibGVDb2x1bW4gKmp0YyA9IChKc29uVGFibGVDb2x1bW4gKikgbm9k ZTsKKworCQkJCWlmIChXQUxLKGp0Yy0+dHlwZU5hbWUpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJ CQlpZiAoV0FMSyhqdGMtPm9uX2VtcHR5KSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKFdB TEsoanRjLT5vbl9lcnJvcikpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmIChqdGMtPmNvbHR5 cGUgPT0gSlRDX05FU1RFRCAmJiBXQUxLKGp0Yy0+Y29sdW1ucykpCisJCQkJCXJldHVybiB0cnVl OworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uVGFibGVQYXRoU3BlYzoKKwkJCXJldHVy biBXQUxLKCgoSnNvblRhYmxlUGF0aFNwZWMgKikgbm9kZSktPnN0cmluZyk7CiAJCWNhc2UgVF9O dWxsVGVzdDoKIAkJCXJldHVybiBXQUxLKCgoTnVsbFRlc3QgKikgbm9kZSktPmFyZyk7CiAJCWNh c2UgVF9Cb29sZWFuVGVzdDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9NYWtlZmls ZSBiL3NyYy9iYWNrZW5kL3BhcnNlci9NYWtlZmlsZQppbmRleCA0MDFjMTY2ODZjLi4zMTYyYTAx ZjMwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvTWFrZWZpbGUKKysrIGIvc3JjL2Jh Y2tlbmQvcGFyc2VyL01ha2VmaWxlCkBAIC0yMyw2ICsyMyw3IEBAIE9CSlMgPSBcCiAJcGFyc2Vf ZW5yLm8gXAogCXBhcnNlX2V4cHIubyBcCiAJcGFyc2VfZnVuYy5vIFwKKwlwYXJzZV9qc29udGFi bGUubyBcCiAJcGFyc2VfbWVyZ2UubyBcCiAJcGFyc2Vfbm9kZS5vIFwKIAlwYXJzZV9vcGVyLm8g XApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3Bh cnNlci9ncmFtLnkKaW5kZXggYWQ5NWFmMGQ5MS4uZDk4OTdiMWNhOCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBA IC0xNzAsNyArMTcwLDYgQEAgc3RhdGljIHZvaWQgdXBkYXRlUmF3U3RtdEVuZChSYXdTdG10ICpy cywgaW50IGVuZF9sb2NhdGlvbik7CiBzdGF0aWMgTm9kZSAqbWFrZUNvbHVtblJlZihjaGFyICpj b2xuYW1lLCBMaXN0ICppbmRpcmVjdGlvbiwKIAkJCQkJCSAgIGludCBsb2NhdGlvbiwgY29yZV95 eXNjYW5fdCB5eXNjYW5uZXIpOwogc3RhdGljIE5vZGUgKm1ha2VUeXBlQ2FzdChOb2RlICphcmcs IFR5cGVOYW1lICp0eXBlbmFtZSwgaW50IGxvY2F0aW9uKTsKLXN0YXRpYyBOb2RlICptYWtlU3Ry aW5nQ29uc3QoY2hhciAqc3RyLCBpbnQgbG9jYXRpb24pOwogc3RhdGljIE5vZGUgKm1ha2VTdHJp bmdDb25zdENhc3QoY2hhciAqc3RyLCBpbnQgbG9jYXRpb24sIFR5cGVOYW1lICp0eXBlbmFtZSk7 CiBzdGF0aWMgTm9kZSAqbWFrZUludENvbnN0KGludCB2YWwsIGludCBsb2NhdGlvbik7CiBzdGF0 aWMgTm9kZSAqbWFrZUZsb2F0Q29uc3QoY2hhciAqc3RyLCBpbnQgbG9jYXRpb24pOwpAQCAtNjU0 LDE1ICs2NTMsMzEgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIg KnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAkJCQlqc29uX2FyZ3VtZW50 CiAJCQkJanNvbl9iZWhhdmlvcgogCQkJCWpzb25fb25fZXJyb3JfY2xhdXNlX29wdAorCQkJCWpz b25fdGFibGUKKwkJCQlqc29uX3RhYmxlX2NvbHVtbl9kZWZpbml0aW9uCisJCQkJanNvbl90YWJs ZV9jb2x1bW5fcGF0aF9jbGF1c2Vfb3B0CisJCQkJanNvbl90YWJsZV9wbGFuX2NsYXVzZV9vcHQK KwkJCQlqc29uX3RhYmxlX3BsYW4KKwkJCQlqc29uX3RhYmxlX3BsYW5fc2ltcGxlCisJCQkJanNv bl90YWJsZV9wbGFuX291dGVyCisJCQkJanNvbl90YWJsZV9wbGFuX2lubmVyCisJCQkJanNvbl90 YWJsZV9wbGFuX3VuaW9uCisJCQkJanNvbl90YWJsZV9wbGFuX2Nyb3NzCisJCQkJanNvbl90YWJs ZV9wbGFuX3ByaW1hcnkKICV0eXBlIDxsaXN0Pglqc29uX25hbWVfYW5kX3ZhbHVlX2xpc3QKIAkJ CQlqc29uX3ZhbHVlX2V4cHJfbGlzdAogCQkJCWpzb25fYXJyYXlfYWdncmVnYXRlX29yZGVyX2J5 X2NsYXVzZV9vcHQKIAkJCQlqc29uX2FyZ3VtZW50cwogCQkJCWpzb25fYmVoYXZpb3JfY2xhdXNl X29wdAogCQkJCWpzb25fcGFzc2luZ19jbGF1c2Vfb3B0CisJCQkJanNvbl90YWJsZV9jb2x1bW5f ZGVmaW5pdGlvbl9saXN0CisldHlwZSA8c3RyPgkJanNvbl90YWJsZV9wYXRoX25hbWVfb3B0CiAl dHlwZSA8aXZhbD4JanNvbl9iZWhhdmlvcl90eXBlCiAJCQkJanNvbl9wcmVkaWNhdGVfdHlwZV9j b25zdHJhaW50CiAJCQkJanNvbl9xdW90ZXNfY2xhdXNlX29wdAorCQkJCWpzb25fdGFibGVfZGVm YXVsdF9wbGFuX2Nob2ljZXMKKwkJCQlqc29uX3RhYmxlX2RlZmF1bHRfcGxhbl9pbm5lcl9vdXRl cgorCQkJCWpzb25fdGFibGVfZGVmYXVsdF9wbGFuX3VuaW9uX2Nyb3NzCiAJCQkJanNvbl93cmFw cGVyX2JlaGF2aW9yCiAldHlwZSA8Ym9vbGVhbj4JanNvbl9rZXlfdW5pcXVlbmVzc19jb25zdHJh aW50X29wdAogCQkJCWpzb25fb2JqZWN0X2NvbnN0cnVjdG9yX251bGxfY2xhdXNlX29wdApAQCAt NzMyLDcgKzc0Nyw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFy ICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJSU5URVJTRUNUIElOVEVS VkFMIElOVE8gSU5WT0tFUiBJUyBJU05VTEwgSVNPTEFUSU9OCiAKIAlKT0lOIEpTT04gSlNPTl9B UlJBWSBKU09OX0FSUkFZQUdHIEpTT05fRVhJU1RTIEpTT05fT0JKRUNUIEpTT05fT0JKRUNUQUdH Ci0JSlNPTl9RVUVSWSBKU09OX1NDQUxBUiBKU09OX1NFUklBTElaRSBKU09OX1ZBTFVFCisJSlNP Tl9RVUVSWSBKU09OX1NDQUxBUiBKU09OX1NFUklBTElaRSBKU09OX1RBQkxFIEpTT05fVkFMVUUK IAogCUtFRVAgS0VZIEtFWVMKIApAQCAtNzQzLDggKzc1OCw4IEBAIHN0YXRpYyBOb2RlICptYWtl UmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpx dWVyeSk7CiAJTUFQUElORyBNQVRDSCBNQVRDSEVEIE1BVEVSSUFMSVpFRCBNQVhWQUxVRSBNRVJH RSBNRVRIT0QKIAlNSU5VVEVfUCBNSU5WQUxVRSBNT0RFIE1PTlRIX1AgTU9WRQogCi0JTkFNRV9Q IE5BTUVTIE5BVElPTkFMIE5BVFVSQUwgTkNIQVIgTkVXIE5FWFQgTkZDIE5GRCBORktDIE5GS0Qg Tk8gTk9ORQotCU5PUk1BTElaRSBOT1JNQUxJWkVECisJTkFNRV9QIE5BTUVTIE5BVElPTkFMIE5B VFVSQUwgTkNIQVIgTkVTVEVEIE5FVyBORVhUIE5GQyBORkQgTkZLQyBORktEIE5PCisJTk9ORSBO T1JNQUxJWkUgTk9STUFMSVpFRAogCU5PVCBOT1RISU5HIE5PVElGWSBOT1ROVUxMIE5PV0FJVCBO VUxMX1AgTlVMTElGCiAJTlVMTFNfUCBOVU1FUklDCiAKQEAgLTc1Miw4ICs3NjcsOCBAQCBzdGF0 aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxp YXNlcywgTm9kZSAqcXVlcnkpOwogCU9SREVSIE9SRElOQUxJVFkgT1RIRVJTIE9VVF9QIE9VVEVS X1AKIAlPVkVSIE9WRVJMQVBTIE9WRVJMQVkgT1ZFUlJJRElORyBPV05FRCBPV05FUgogCi0JUEFS QUxMRUwgUEFSQU1FVEVSIFBBUlNFUiBQQVJUSUFMIFBBUlRJVElPTiBQQVNTSU5HIFBBU1NXT1JE Ci0JUExBQ0lORyBQTEFOUyBQT0xJQ1kKKwlQQVJBTExFTCBQQVJBTUVURVIgUEFSU0VSIFBBUlRJ QUwgUEFSVElUSU9OIFBBU1NJTkcgUEFTU1dPUkQgUEFUSAorCVBMQUNJTkcgUExBTiBQTEFOUyBQ T0xJQ1kKIAlQT1NJVElPTiBQUkVDRURJTkcgUFJFQ0lTSU9OIFBSRVNFUlZFIFBSRVBBUkUgUFJF UEFSRUQgUFJJTUFSWQogCVBSSU9SIFBSSVZJTEVHRVMgUFJPQ0VEVVJBTCBQUk9DRURVUkUgUFJP Q0VEVVJFUyBQUk9HUkFNIFBVQkxJQ0FUSU9OCiAKQEAgLTg3MSwxMCArODg2LDEzIEBAIHN0YXRp YyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlh c2VzLCBOb2RlICpxdWVyeSk7CiAgKiB0aGUgc2FtZSBwcmVjZWRlbmNlIGFzIElERU5ULiAgVGhp cyBhbGxvd3MgcmVzb2x2aW5nIGNvbmZsaWN0cyBpbiB0aGUKICAqIGpzb25fcHJlZGljYXRlX3R5 cGVfY29uc3RyYWludCBhbmQganNvbl9rZXlfdW5pcXVlbmVzc19jb25zdHJhaW50X29wdAogICog cHJvZHVjdGlvbnMgKHNlZSBjb21tZW50cyB0aGVyZSkuCisgKgorICogTGlrZSB0aGUgVU5CT1VO REVEIFBSRUNFRElORy9GT0xMT1dJTkcgY2FzZSwgTkVTVEVEIGlzIGFzc2lnbmVkIGEgbG93ZXIK KyAqIHByZWNlZGVuY2UgdGhhbiBQQVRIIHRvIGZpeCBhbWJpZ3VpdHkgaW4gdGhlIGpzb25fdGFi bGUgcHJvZHVjdGlvbi4KICAqLwotJW5vbmFzc29jCVVOQk9VTkRFRAkJLyogaWRlYWxseSB3b3Vs ZCBoYXZlIHNhbWUgcHJlY2VkZW5jZSBhcyBJREVOVCAqLworJW5vbmFzc29jCVVOQk9VTkRFRCBO RVNURUQgLyogaWRlYWxseSB3b3VsZCBoYXZlIHNhbWUgcHJlY2VkZW5jZSBhcyBJREVOVCAqLwog JW5vbmFzc29jCUlERU5UIFBBUlRJVElPTiBSQU5HRSBST1dTIEdST1VQUyBQUkVDRURJTkcgRk9M TE9XSU5HIENVQkUgUk9MTFVQCi0JCQlTRVQgS0VZUyBPQkpFQ1RfUCBTQ0FMQVIgVkFMVUVfUCBX SVRIIFdJVEhPVVQKKwkJCVNFVCBLRVlTIE9CSkVDVF9QIFNDQUxBUiBWQUxVRV9QIFdJVEggV0lU SE9VVCBQQVRICiAlbGVmdAkJT3AgT1BFUkFUT1IJCS8qIG11bHRpLWNoYXJhY3RlciBvcHMgYW5k IHVzZXItZGVmaW5lZCBvcGVyYXRvcnMgKi8KICVsZWZ0CQknKycgJy0nCiAlbGVmdAkJJyonICcv JyAnJScKQEAgLTg5NSw3ICs5MTMsNiBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdT ZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogICogbGVm dC1hc3NvY2lhdGl2aXR5IGFtb25nIHRoZSBKT0lOIHJ1bGVzIHRoZW1zZWx2ZXMuCiAgKi8KICVs ZWZ0CQlKT0lOIENST1NTIExFRlQgRlVMTCBSSUdIVCBJTk5FUl9QIE5BVFVSQUwKLQogJSUKIAog LyoKQEAgLTEzNDMyLDYgKzEzNDQ5LDIxIEBAIHRhYmxlX3JlZjoJcmVsYXRpb25fZXhwciBvcHRf YWxpYXNfY2xhdXNlCiAJCQkJCSQyLT5hbGlhcyA9ICQ0OwogCQkJCQkkJCA9IChOb2RlICopICQy OwogCQkJCX0KKwkJCXwganNvbl90YWJsZSBvcHRfYWxpYXNfY2xhdXNlCisJCQkJeworCQkJCQlK c29uVGFibGUgICpqdCA9IGNhc3ROb2RlKEpzb25UYWJsZSwgJDEpOworCisJCQkJCWp0LT5hbGlh cyA9ICQyOworCQkJCQkkJCA9IChOb2RlICopIGp0OworCQkJCX0KKwkJCXwgTEFURVJBTF9QIGpz b25fdGFibGUgb3B0X2FsaWFzX2NsYXVzZQorCQkJCXsKKwkJCQkJSnNvblRhYmxlICAqanQgPSBj YXN0Tm9kZShKc29uVGFibGUsICQyKTsKKworCQkJCQlqdC0+YWxpYXMgPSAkMzsKKwkJCQkJanQt PmxhdGVyYWwgPSB0cnVlOworCQkJCQkkJCA9IChOb2RlICopIGp0OworCQkJCX0KIAkJOwogCiAK QEAgLTEzOTk5LDYgKzE0MDMxLDggQEAgeG1sdGFibGVfY29sdW1uX29wdGlvbl9lbDoKIAkJCQl7 ICQkID0gbWFrZURlZkVsZW0oImlzX25vdF9udWxsIiwgKE5vZGUgKikgbWFrZUJvb2xlYW4odHJ1 ZSksIEAxKTsgfQogCQkJfCBOVUxMX1AKIAkJCQl7ICQkID0gbWFrZURlZkVsZW0oImlzX25vdF9u dWxsIiwgKE5vZGUgKikgbWFrZUJvb2xlYW4oZmFsc2UpLCBAMSk7IH0KKwkJCXwgUEFUSCBiX2V4 cHIKKwkJCQl7ICQkID0gbWFrZURlZkVsZW0oInBhdGgiLCAkMiwgQDEpOyB9CiAJCTsKIAogeG1s X25hbWVzcGFjZV9saXN0OgpAQCAtMTY2OTAsNiArMTY3MjQsMjQwIEBAIGpzb25fcXVvdGVzX2Ns YXVzZV9vcHQ6CiAJCQl8IC8qIEVNUFRZICovCQkJCQkJeyAkJCA9IEpTX1FVT1RFU19VTlNQRUM7 IH0KIAkJOwogCitqc29uX3RhYmxlOgorCQkJSlNPTl9UQUJMRSAnKCcKKwkJCQlqc29uX3ZhbHVl X2V4cHIgJywnIGFfZXhwciBqc29uX3RhYmxlX3BhdGhfbmFtZV9vcHQKKwkJCQlqc29uX3Bhc3Np bmdfY2xhdXNlX29wdAorCQkJCUNPTFVNTlMgJygnIGpzb25fdGFibGVfY29sdW1uX2RlZmluaXRp b25fbGlzdCAnKScKKwkJCQlqc29uX3RhYmxlX3BsYW5fY2xhdXNlX29wdAorCQkJCWpzb25fb25f ZXJyb3JfY2xhdXNlX29wdAorCQkJJyknCisJCQkJeworCQkJCQlKc29uVGFibGUgKm4gPSBtYWtl Tm9kZShKc29uVGFibGUpOworCQkJCQljaGFyCSAgKnBhdGhzdHJpbmc7CisKKwkJCQkJbi0+Y29u dGV4dF9pdGVtID0gKEpzb25WYWx1ZUV4cHIgKikgJDM7CisJCQkJCWlmICghSXNBKCQ1LCBBX0Nv bnN0KSB8fAorCQkJCQkJY2FzdE5vZGUoQV9Db25zdCwgJDUpLT52YWwubm9kZS50eXBlICE9IFRf U3RyaW5nKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJZXJyY29kZShFUlJDT0RFX0ZF QVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQkJCWVycm1zZygib25seSBzdHJpbmcgY29uc3Rh bnRzIGFyZSBzdXBwb3J0ZWQgaW4gSlNPTl9UQUJMRSIKKwkJCQkJCQkJCSAgICIgcGF0aCBzcGVj aWZpY2F0aW9uIiksCisJCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihANSkpOworCQkJCQlwYXRo c3RyaW5nID0gY2FzdE5vZGUoQV9Db25zdCwgJDUpLT52YWwuc3ZhbC5zdmFsOworCQkJCQluLT5w YXRoc3BlYyA9IG1ha2VKc29uVGFibGVQYXRoU3BlYyhwYXRoc3RyaW5nLCAkNiwgQDUsIEA2KTsK KwkJCQkJbi0+cGFzc2luZyA9ICQ3OworCQkJCQluLT5jb2x1bW5zID0gJDEwOworCQkJCQluLT5w bGFuc3BlYyA9IChKc29uVGFibGVQbGFuU3BlYyAqKSAkMTI7CisJCQkJCW4tPm9uX2Vycm9yID0g KEpzb25CZWhhdmlvciAqKSAkMTM7CisJCQkJCW4tPmxvY2F0aW9uID0gQDE7CisJCQkJCSQkID0g KE5vZGUgKikgbjsKKwkJCQl9CisJCTsKKworanNvbl90YWJsZV9wYXRoX25hbWVfb3B0OgorCQkJ QVMgbmFtZQkJCXsgJCQgPSAkMjsgfQorCQkJfCAvKiBlbXB0eSAqLwl7ICQkID0gTlVMTDsgfQor CQk7CisKK2pzb25fdGFibGVfY29sdW1uX2RlZmluaXRpb25fbGlzdDoKKwkJCWpzb25fdGFibGVf Y29sdW1uX2RlZmluaXRpb24KKwkJCQl7ICQkID0gbGlzdF9tYWtlMSgkMSk7IH0KKwkJCXwganNv bl90YWJsZV9jb2x1bW5fZGVmaW5pdGlvbl9saXN0ICcsJyBqc29uX3RhYmxlX2NvbHVtbl9kZWZp bml0aW9uCisJCQkJeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsgfQorCQk7CisKK2pzb25fdGFibGVf Y29sdW1uX2RlZmluaXRpb246CisJCQlDb2xJZCBGT1IgT1JESU5BTElUWQorCQkJCXsKKwkJCQkJ SnNvblRhYmxlQ29sdW1uICpuID0gbWFrZU5vZGUoSnNvblRhYmxlQ29sdW1uKTsKKworCQkJCQlu LT5jb2x0eXBlID0gSlRDX0ZPUl9PUkRJTkFMSVRZOworCQkJCQluLT5uYW1lID0gJDE7CisJCQkJ CW4tPmxvY2F0aW9uID0gQDE7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CisJCQl8IENv bElkIFR5cGVuYW1lCisJCQkJanNvbl90YWJsZV9jb2x1bW5fcGF0aF9jbGF1c2Vfb3B0CisJCQkJ anNvbl93cmFwcGVyX2JlaGF2aW9yCisJCQkJanNvbl9xdW90ZXNfY2xhdXNlX29wdAorCQkJCWpz b25fYmVoYXZpb3JfY2xhdXNlX29wdAorCQkJCXsKKwkJCQkJSnNvblRhYmxlQ29sdW1uICpuID0g bWFrZU5vZGUoSnNvblRhYmxlQ29sdW1uKTsKKworCQkJCQluLT5jb2x0eXBlID0gSlRDX1JFR1VM QVI7CisJCQkJCW4tPm5hbWUgPSAkMTsKKwkJCQkJbi0+dHlwZU5hbWUgPSAkMjsKKwkJCQkJbi0+ Zm9ybWF0ID0gbWFrZUpzb25Gb3JtYXQoSlNfRk9STUFUX0RFRkFVTFQsIEpTX0VOQ19ERUZBVUxU LCAtMSk7CisJCQkJCW4tPnBhdGhzcGVjID0gKEpzb25UYWJsZVBhdGhTcGVjICopICQzOworCQkJ CQluLT53cmFwcGVyID0gJDQ7IC8qIGRpc2FsbG93ZWQgZHVyaW5nIHBhcnNlLWFuYWx5c2lzISAq LworCQkJCQluLT5xdW90ZXMgPSAkNTsgLyogZGlzYWxsb3dlZCBkdXJpbmcgcGFyc2UtYW5hbHlz aXMhICovCisJCQkJCW4tPm9uX2VtcHR5ID0gKEpzb25CZWhhdmlvciAqKSBsaW5pdGlhbCgkNik7 CisJCQkJCW4tPm9uX2Vycm9yID0gKEpzb25CZWhhdmlvciAqKSBsc2Vjb25kKCQ2KTsKKwkJCQkJ bi0+bG9jYXRpb24gPSBAMTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJCXwgQ29s SWQgVHlwZW5hbWUganNvbl9mb3JtYXRfY2xhdXNlCisJCQkJanNvbl90YWJsZV9jb2x1bW5fcGF0 aF9jbGF1c2Vfb3B0CisJCQkJanNvbl93cmFwcGVyX2JlaGF2aW9yCisJCQkJanNvbl9xdW90ZXNf Y2xhdXNlX29wdAorCQkJCWpzb25fYmVoYXZpb3JfY2xhdXNlX29wdAorCQkJCXsKKwkJCQkJSnNv blRhYmxlQ29sdW1uICpuID0gbWFrZU5vZGUoSnNvblRhYmxlQ29sdW1uKTsKKworCQkJCQluLT5j b2x0eXBlID0gSlRDX0ZPUk1BVFRFRDsKKwkJCQkJbi0+bmFtZSA9ICQxOworCQkJCQluLT50eXBl TmFtZSA9ICQyOworCQkJCQluLT5mb3JtYXQgPSAoSnNvbkZvcm1hdCAqKSAkMzsKKwkJCQkJbi0+ cGF0aHNwZWMgPSAoSnNvblRhYmxlUGF0aFNwZWMgKikgJDQ7CisJCQkJCW4tPndyYXBwZXIgPSAk NTsKKwkJCQkJbi0+cXVvdGVzID0gJDY7CisJCQkJCW4tPm9uX2VtcHR5ID0gKEpzb25CZWhhdmlv ciAqKSBsaW5pdGlhbCgkNyk7CisJCQkJCW4tPm9uX2Vycm9yID0gKEpzb25CZWhhdmlvciAqKSBs c2Vjb25kKCQ3KTsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBu OworCQkJCX0KKwkJCXwgQ29sSWQgVHlwZW5hbWUKKwkJCQlFWElTVFMganNvbl90YWJsZV9jb2x1 bW5fcGF0aF9jbGF1c2Vfb3B0CisJCQkJanNvbl9iZWhhdmlvcl9jbGF1c2Vfb3B0CisJCQkJewor CQkJCQlKc29uVGFibGVDb2x1bW4gKm4gPSBtYWtlTm9kZShKc29uVGFibGVDb2x1bW4pOworCisJ CQkJCW4tPmNvbHR5cGUgPSBKVENfRVhJU1RTOworCQkJCQluLT5uYW1lID0gJDE7CisJCQkJCW4t PnR5cGVOYW1lID0gJDI7CisJCQkJCW4tPmZvcm1hdCA9IG1ha2VKc29uRm9ybWF0KEpTX0ZPUk1B VF9ERUZBVUxULCBKU19FTkNfREVGQVVMVCwgLTEpOworCQkJCQluLT53cmFwcGVyID0gSlNXX05P TkU7CisJCQkJCW4tPnF1b3RlcyA9IEpTX1FVT1RFU19VTlNQRUM7CisJCQkJCW4tPnBhdGhzcGVj ID0gKEpzb25UYWJsZVBhdGhTcGVjICopICQ0OworCQkJCQluLT5vbl9lbXB0eSA9IChKc29uQmVo YXZpb3IgKikgbGluaXRpYWwoJDUpOworCQkJCQluLT5vbl9lcnJvciA9IChKc29uQmVoYXZpb3Ig KikgbHNlY29uZCgkNSk7CisJCQkJCW4tPmxvY2F0aW9uID0gQDE7CisJCQkJCSQkID0gKE5vZGUg KikgbjsKKwkJCQl9CisJCQl8IE5FU1RFRCBwYXRoX29wdCBTY29uc3QKKwkJCQlDT0xVTU5TICco JyBqc29uX3RhYmxlX2NvbHVtbl9kZWZpbml0aW9uX2xpc3QgJyknCisJCQkJeworCQkJCQlKc29u VGFibGVDb2x1bW4gKm4gPSBtYWtlTm9kZShKc29uVGFibGVDb2x1bW4pOworCisJCQkJCW4tPmNv bHR5cGUgPSBKVENfTkVTVEVEOworCQkJCQluLT5wYXRoc3BlYyA9IG1ha2VKc29uVGFibGVQYXRo U3BlYygkMywgTlVMTCwgQDMsIC0xKTsKKwkJCQkJbi0+Y29sdW1ucyA9ICQ2OworCQkJCQluLT5s b2NhdGlvbiA9IEAxOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQorCQkJfCBORVNURUQg cGF0aF9vcHQgU2NvbnN0IEFTIG5hbWUKKwkJCQlDT0xVTU5TICcoJyBqc29uX3RhYmxlX2NvbHVt bl9kZWZpbml0aW9uX2xpc3QgJyknCisJCQkJeworCQkJCQlKc29uVGFibGVDb2x1bW4gKm4gPSBt YWtlTm9kZShKc29uVGFibGVDb2x1bW4pOworCisJCQkJCW4tPmNvbHR5cGUgPSBKVENfTkVTVEVE OworCQkJCQluLT5wYXRoc3BlYyA9IG1ha2VKc29uVGFibGVQYXRoU3BlYygkMywgJDUsIEAzLCBA NSk7CisJCQkJCW4tPmNvbHVtbnMgPSAkODsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMTsKKwkJCQkJ JCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJOworCitwYXRoX29wdDoKKwkJCVBBVEgKKwkJCXwg LyogRU1QVFkgKi8KKwkJOworCitqc29uX3RhYmxlX2NvbHVtbl9wYXRoX2NsYXVzZV9vcHQ6CisJ CQlQQVRIIFNjb25zdAorCQkJCXsgJCQgPSAoTm9kZSAqKSBtYWtlSnNvblRhYmxlUGF0aFNwZWMo JDIsIE5VTEwsIEAyLCAtMSk7IH0KKwkJCXwgLyogRU1QVFkgKi8JeyAkJCA9IE5VTEw7IH0KKwkJ OworCitqc29uX3RhYmxlX3BsYW5fY2xhdXNlX29wdDoKKwkJCVBMQU4gJygnIGpzb25fdGFibGVf cGxhbiAnKScJCQl7ICQkID0gJDM7IH0KKwkJCXwgUExBTiBERUZBVUxUICcoJyBqc29uX3RhYmxl X2RlZmF1bHRfcGxhbl9jaG9pY2VzICcpJworCQkJCXsKKwkJCQkJSnNvblRhYmxlUGxhblNwZWMg Km4gPSBtYWtlTm9kZShKc29uVGFibGVQbGFuU3BlYyk7CisKKwkJCQkJbi0+cGxhbl90eXBlID0g SlNUUF9ERUZBVUxUOworCQkJCQluLT5qb2luX3R5cGUgPSAkNDsKKwkJCQkJbi0+bG9jYXRpb24g PSBAMTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJCXwgLyogRU1QVFkgKi8JCQkJ CQkJeyAkJCA9IE5VTEw7IH0KKwkJOworCitqc29uX3RhYmxlX3BsYW46CisJCQlqc29uX3RhYmxl X3BsYW5fc2ltcGxlCisJCQl8IGpzb25fdGFibGVfcGxhbl9vdXRlcgorCQkJfCBqc29uX3RhYmxl X3BsYW5faW5uZXIKKwkJCXwganNvbl90YWJsZV9wbGFuX3VuaW9uCisJCQl8IGpzb25fdGFibGVf cGxhbl9jcm9zcworCQk7CisKK2pzb25fdGFibGVfcGxhbl9zaW1wbGU6CisJCQluYW1lCisJCQkJ eworCQkJCQlKc29uVGFibGVQbGFuU3BlYyAqbiA9IG1ha2VOb2RlKEpzb25UYWJsZVBsYW5TcGVj KTsKKworCQkJCQluLT5wbGFuX3R5cGUgPSBKU1RQX1NJTVBMRTsKKwkJCQkJbi0+cGF0aG5hbWUg PSAkMTsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJ CX0KKwkJOworCitqc29uX3RhYmxlX3BsYW5fcHJpbWFyeToKKwkJCWpzb25fdGFibGVfcGxhbl9z aW1wbGUJCQkJCQl7ICQkID0gJDE7IH0KKwkJCXwgJygnIGpzb25fdGFibGVfcGxhbiAnKScKKwkJ CQl7CisJCQkJCWNhc3ROb2RlKEpzb25UYWJsZVBsYW5TcGVjLCAkMiktPmxvY2F0aW9uID0gQDE7 CisJCQkJCSQkID0gJDI7CisJCQkJfQorCQk7CisKK2pzb25fdGFibGVfcGxhbl9vdXRlcjoKKwkJ CWpzb25fdGFibGVfcGxhbl9zaW1wbGUgT1VURVJfUCBqc29uX3RhYmxlX3BsYW5fcHJpbWFyeQor CQkJCXsgJCQgPSBtYWtlSnNvblRhYmxlSm9pbmVkUGxhbihKU1RQSl9PVVRFUiwgJDEsICQzLCBA MSk7IH0KKwkJOworCitqc29uX3RhYmxlX3BsYW5faW5uZXI6CisJCQlqc29uX3RhYmxlX3BsYW5f c2ltcGxlIElOTkVSX1AganNvbl90YWJsZV9wbGFuX3ByaW1hcnkKKwkJCQl7ICQkID0gbWFrZUpz b25UYWJsZUpvaW5lZFBsYW4oSlNUUEpfSU5ORVIsICQxLCAkMywgQDEpOyB9CisJCTsKKworanNv bl90YWJsZV9wbGFuX3VuaW9uOgorCQkJanNvbl90YWJsZV9wbGFuX3ByaW1hcnkgVU5JT04ganNv bl90YWJsZV9wbGFuX3ByaW1hcnkKKwkJCQl7ICQkID0gbWFrZUpzb25UYWJsZUpvaW5lZFBsYW4o SlNUUEpfVU5JT04sICQxLCAkMywgQDEpOyB9CisJCQl8IGpzb25fdGFibGVfcGxhbl91bmlvbiBV TklPTiBqc29uX3RhYmxlX3BsYW5fcHJpbWFyeQorCQkJCXsgJCQgPSBtYWtlSnNvblRhYmxlSm9p bmVkUGxhbihKU1RQSl9VTklPTiwgJDEsICQzLCBAMSk7IH0KKwkJOworCitqc29uX3RhYmxlX3Bs YW5fY3Jvc3M6CisJCQlqc29uX3RhYmxlX3BsYW5fcHJpbWFyeSBDUk9TUyBqc29uX3RhYmxlX3Bs YW5fcHJpbWFyeQorCQkJCXsgJCQgPSBtYWtlSnNvblRhYmxlSm9pbmVkUGxhbihKU1RQSl9DUk9T UywgJDEsICQzLCBAMSk7IH0KKwkJCXwganNvbl90YWJsZV9wbGFuX2Nyb3NzIENST1NTIGpzb25f dGFibGVfcGxhbl9wcmltYXJ5CisJCQkJeyAkJCA9IG1ha2VKc29uVGFibGVKb2luZWRQbGFuKEpT VFBKX0NST1NTLCAkMSwgJDMsIEAxKTsgfQorCQk7CisKK2pzb25fdGFibGVfZGVmYXVsdF9wbGFu X2Nob2ljZXM6CisJCQlqc29uX3RhYmxlX2RlZmF1bHRfcGxhbl9pbm5lcl9vdXRlcgorCQkJCXsg JCQgPSAkMSB8IEpTVFBKX1VOSU9OOyB9CisJCQl8IGpzb25fdGFibGVfZGVmYXVsdF9wbGFuX3Vu aW9uX2Nyb3NzCisJCQkJeyAkJCA9ICQxIHwgSlNUUEpfT1VURVI7IH0KKwkJCXwganNvbl90YWJs ZV9kZWZhdWx0X3BsYW5faW5uZXJfb3V0ZXIgJywnIGpzb25fdGFibGVfZGVmYXVsdF9wbGFuX3Vu aW9uX2Nyb3NzCisJCQkJeyAkJCA9ICQxIHwgJDM7IH0KKwkJCXwganNvbl90YWJsZV9kZWZhdWx0 X3BsYW5fdW5pb25fY3Jvc3MgJywnIGpzb25fdGFibGVfZGVmYXVsdF9wbGFuX2lubmVyX291dGVy CisJCQkJeyAkJCA9ICQxIHwgJDM7IH0KKwkJOworCitqc29uX3RhYmxlX2RlZmF1bHRfcGxhbl9p bm5lcl9vdXRlcjoKKwkJCUlOTkVSX1AJCQkJCQkJCQkJeyAkJCA9IEpTVFBKX0lOTkVSOyB9CisJ CQl8IE9VVEVSX1AJCQkJCQkJCQl7ICQkID0gSlNUUEpfT1VURVI7IH0KKwkJOworCitqc29uX3Rh YmxlX2RlZmF1bHRfcGxhbl91bmlvbl9jcm9zczoKKwkJCVVOSU9OCQkJCQkJCQkJCXsgJCQgPSBK U1RQSl9VTklPTjsgfQorCQkJfCBDUk9TUwkJCQkJCQkJCQl7ICQkID0gSlNUUEpfQ1JPU1M7IH0K KwkJOworCiBqc29uX3JldHVybmluZ19jbGF1c2Vfb3B0OgogCQkJUkVUVVJOSU5HIFR5cGVuYW1l IGpzb25fZm9ybWF0X2NsYXVzZV9vcHQKIAkJCQl7CkBAIC0xNzQyOCw2ICsxNzY5Niw3IEBAIHVu cmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgTU9WRQogCQkJfCBOQU1FX1AKIAkJCXwgTkFNRVMKKwkJ CXwgTkVTVEVECiAJCQl8IE5FVwogCQkJfCBORVhUCiAJCQl8IE5GQwpAQCAtMTc0NjIsNiArMTc3 MzEsOCBAQCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IFBBUlRJVElPTgogCQkJfCBQQVNTSU5H CiAJCQl8IFBBU1NXT1JECisJCQl8IFBBVEgKKwkJCXwgUExBTgogCQkJfCBQTEFOUwogCQkJfCBQ T0xJQ1kKIAkJCXwgUFJFQ0VESU5HCkBAIC0xNzYyNiw2ICsxNzg5Nyw3IEBAIGNvbF9uYW1lX2tl eXdvcmQ6CiAJCQl8IEpTT05fUVVFUlkKIAkJCXwgSlNPTl9TQ0FMQVIKIAkJCXwgSlNPTl9TRVJJ QUxJWkUKKwkJCXwgSlNPTl9UQUJMRQogCQkJfCBKU09OX1ZBTFVFCiAJCQl8IExFQVNUCiAJCQl8 IE5BVElPTkFMCkBAIC0xNzk5NCw2ICsxODI2Niw3IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoKIAkJ CXwgSlNPTl9RVUVSWQogCQkJfCBKU09OX1NDQUxBUgogCQkJfCBKU09OX1NFUklBTElaRQorCQkJ fCBKU09OX1RBQkxFCiAJCQl8IEpTT05fVkFMVUUKIAkJCXwgS0VFUAogCQkJfCBLRVkKQEAgLTE4 MDMzLDYgKzE4MzA2LDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBOQVRJT05BTAogCQkJ fCBOQVRVUkFMCiAJCQl8IE5DSEFSCisJCQl8IE5FU1RFRAogCQkJfCBORVcKIAkJCXwgTkVYVAog CQkJfCBORkMKQEAgLTE4MDc3LDcgKzE4MzUxLDkgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJ fCBQQVJUSVRJT04KIAkJCXwgUEFTU0lORwogCQkJfCBQQVNTV09SRAorCQkJfCBQQVRICiAJCQl8 IFBMQUNJTkcKKwkJCXwgUExBTgogCQkJfCBQTEFOUwogCQkJfCBQT0xJQ1kKIAkJCXwgUE9TSVRJ T04KQEAgLTE4MzQ1LDE4ICsxODYyMSw2IEBAIG1ha2VUeXBlQ2FzdChOb2RlICphcmcsIFR5cGVO YW1lICp0eXBlbmFtZSwgaW50IGxvY2F0aW9uKQogCXJldHVybiAoTm9kZSAqKSBuOwogfQogCi1z dGF0aWMgTm9kZSAqCi1tYWtlU3RyaW5nQ29uc3QoY2hhciAqc3RyLCBpbnQgbG9jYXRpb24pCi17 Ci0JQV9Db25zdAkgICAqbiA9IG1ha2VOb2RlKEFfQ29uc3QpOwotCi0Jbi0+dmFsLnN2YWwudHlw ZSA9IFRfU3RyaW5nOwotCW4tPnZhbC5zdmFsLnN2YWwgPSBzdHI7Ci0Jbi0+bG9jYXRpb24gPSBs b2NhdGlvbjsKLQotICAgcmV0dXJuIChOb2RlICopIG47Ci19Ci0KIHN0YXRpYyBOb2RlICoKIG1h a2VTdHJpbmdDb25zdENhc3QoY2hhciAqc3RyLCBpbnQgbG9jYXRpb24sIFR5cGVOYW1lICp0eXBl bmFtZSkKIHsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9tZXNvbi5idWlsZCBiL3Ny Yy9iYWNrZW5kL3BhcnNlci9tZXNvbi5idWlsZAppbmRleCA4ZTgyOTU2NDBiLi41NzNkNzBiM2Qx IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvbWVzb24uYnVpbGQKKysrIGIvc3JjL2Jh Y2tlbmQvcGFyc2VyL21lc29uLmJ1aWxkCkBAIC0xMCw2ICsxMCw3IEBAIGJhY2tlbmRfc291cmNl cyArPSBmaWxlcygKICAgJ3BhcnNlX2Vuci5jJywKICAgJ3BhcnNlX2V4cHIuYycsCiAgICdwYXJz ZV9mdW5jLmMnLAorICAncGFyc2VfanNvbnRhYmxlLmMnLAogICAncGFyc2VfbWVyZ2UuYycsCiAg ICdwYXJzZV9ub2RlLmMnLAogICAncGFyc2Vfb3Blci5jJywKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9jbGF1c2UuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jbGF1 c2UuYwppbmRleCA0YjUwMjc4ZmQwLi4zOGUyN2U4NDcyIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfY2xhdXNlLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Ns YXVzZS5jCkBAIC02OTcsNyArNjk3LDExIEBAIHRyYW5zZm9ybVJhbmdlVGFibGVGdW5jKFBhcnNl U3RhdGUgKnBzdGF0ZSwgUmFuZ2VUYWJsZUZ1bmMgKnJ0ZikKIAljaGFyCSAgKipuYW1lczsKIAlp bnQJCQljb2xubzsKIAotCS8qIEN1cnJlbnRseSBvbmx5IFhNTFRBQkxFIGlzIHN1cHBvcnRlZCAq LworCS8qCisJICogQ3VycmVudGx5IHdlIG9ubHkgc3VwcG9ydCBYTUxUQUJMRSBoZXJlLiAgU2Vl IHRyYW5zZm9ybUpzb25UYWJsZSgpIGZvcgorCSAqIEpTT05fVEFCTEUgc3VwcG9ydC4KKwkgKi8K Kwl0Zi0+ZnVuY3R5cGUgPSBURlRfWE1MVEFCTEU7CiAJY29uc3RydWN0TmFtZSA9ICJYTUxUQUJM RSI7CiAJZG9jVHlwZSA9IFhNTE9JRDsKIApAQCAtMTEwNCwxMyArMTEwOCwxNyBAQCB0cmFuc2Zv cm1Gcm9tQ2xhdXNlSXRlbShQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKm4sCiAJCXJ0ci0+cnRp bmRleCA9IG5zaXRlbS0+cF9ydGluZGV4OwogCQlyZXR1cm4gKE5vZGUgKikgcnRyOwogCX0KLQll bHNlIGlmIChJc0EobiwgUmFuZ2VUYWJsZUZ1bmMpKQorCWVsc2UgaWYgKElzQShuLCBSYW5nZVRh YmxlRnVuYykgfHwgSXNBKG4sIEpzb25UYWJsZSkpCiAJewogCQkvKiB0YWJsZSBmdW5jdGlvbiBp cyBsaWtlIGEgcGxhaW4gcmVsYXRpb24gKi8KIAkJUmFuZ2VUYmxSZWYgKnJ0cjsKIAkJUGFyc2VO YW1lc3BhY2VJdGVtICpuc2l0ZW07CiAKLQkJbnNpdGVtID0gdHJhbnNmb3JtUmFuZ2VUYWJsZUZ1 bmMocHN0YXRlLCAoUmFuZ2VUYWJsZUZ1bmMgKikgbik7CisJCWlmIChJc0EobiwgUmFuZ2VUYWJs ZUZ1bmMpKQorCQkJbnNpdGVtID0gdHJhbnNmb3JtUmFuZ2VUYWJsZUZ1bmMocHN0YXRlLCAoUmFu Z2VUYWJsZUZ1bmMgKikgbik7CisJCWVsc2UKKwkJCW5zaXRlbSA9IHRyYW5zZm9ybUpzb25UYWJs ZShwc3RhdGUsIChKc29uVGFibGUgKikgbik7CisKIAkJKnRvcF9uc2l0ZW0gPSBuc2l0ZW07CiAJ CSpuYW1lc3BhY2UgPSBsaXN0X21ha2UxKG5zaXRlbSk7CiAJCXJ0ciA9IG1ha2VOb2RlKFJhbmdl VGJsUmVmKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgYi9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IDU0OTNiMDVhZTguLmIxOTA4YzM2 OWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpAQCAtNDIxOSw3ICs0MjE5LDggQEAgdHJhbnNm b3JtSnNvblNlcmlhbGl6ZUV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uU2VyaWFsaXplRXhw ciAqZXhwcikKIH0KIAogLyoKLSAqIFRyYW5zZm9ybSBKU09OX1ZBTFVFLCBKU09OX1FVRVJZLCBK U09OX0VYSVNUUyBmdW5jdGlvbnMgaW50byBhIEpzb25FeHByIG5vZGUuCisgKiBUcmFuc2Zvcm0g SlNPTl9WQUxVRSwgSlNPTl9RVUVSWSwgSlNPTl9FWElTVFMsIEpTT05fVEFCTEUgZnVuY3Rpb25z IGludG8KKyAqIGEgSnNvbkV4cHIgbm9kZS4KICAqLwogc3RhdGljIE5vZGUgKgogdHJhbnNmb3Jt SnNvbkZ1bmNFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvbkZ1bmNFeHByICpmdW5jKQpAQCAt NDIzOCw2ICs0MjM5LDkgQEAgdHJhbnNmb3JtSnNvbkZ1bmNFeHByKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgSnNvbkZ1bmNFeHByICpmdW5jKQogCQljYXNlIEpTT05fVkFMVUVfT1A6CiAJCQlmdW5jX25h bWUgPSAiSlNPTl9WQUxVRSI7CiAJCQlicmVhazsKKwkJY2FzZSBKU09OX1RBQkxFX09QOgorCQkJ ZnVuY19uYW1lID0gIkpTT05fVEFCTEUiOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9n KEVSUk9SLCAiaW52YWxpZCBKc29uRnVuY0V4cHIgb3AiKTsKIAkJCWJyZWFrOwpAQCAtNDI3Nyw2 ICs0MjgxLDQyIEBAIHRyYW5zZm9ybUpzb25GdW5jRXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIEpz b25GdW5jRXhwciAqZnVuYykKIAkJCQlqc2V4cHItPnJldHVybmluZy0+dHlwaWQgPSBCT09MT0lE OwogCQkJCWpzZXhwci0+cmV0dXJuaW5nLT50eXBtb2QgPSAtMTsKIAkJCX0KKwkJCS8qIEpTT05f VEFCTEUoKSBDT0xVTU5TIGNhbiBzcGVjaWZ5IGEgbm9uLWJvb2xlYW4gdHlwZS4gKi8KKwkJCWVs c2UgaWYgKGpzZXhwci0+cmV0dXJuaW5nLT50eXBpZCAhPSBCT09MT0lEKQorCQkJeworCQkJCU5v ZGUJICAgKmNvZXJjaW9uX2V4cHI7CisJCQkJQ2FzZVRlc3RFeHByICpwbGFjZWhvbGRlciA9IG1h a2VOb2RlKENhc2VUZXN0RXhwcik7CisJCQkJaW50CQkJbG9jYXRpb24gPSBleHByTG9jYXRpb24o KE5vZGUgKikganNleHByKTsKKworCQkJCS8qCisJCQkJICogV2UgYWJ1c2UgQ2FzZVRlc3RFeHBy IGhlcmUgYXMgcGxhY2Vob2xkZXIgdG8gcGFzcyB0aGUKKwkJCQkgKiByZXN1bHQgb2YgZXZhbHVh dGluZyBKU09OX0VYSVNUUyB0byB0aGUgY29lcmNpb24KKwkJCQkgKiBleHByZXNzaW9uLgorCQkJ CSAqLworCQkJCXBsYWNlaG9sZGVyLT50eXBlSWQgPSBCT09MT0lEOworCQkJCXBsYWNlaG9sZGVy LT50eXBlTW9kID0gLTE7CisJCQkJcGxhY2Vob2xkZXItPmNvbGxhdGlvbiA9IEludmFsaWRPaWQ7 CisKKwkJCQljb2VyY2lvbl9leHByID0KKwkJCQkJY29lcmNlX3RvX3RhcmdldF90eXBlKHBzdGF0 ZSwgKE5vZGUgKikgcGxhY2Vob2xkZXIsIEJPT0xPSUQsCisJCQkJCQkJCQkJICBqc2V4cHItPnJl dHVybmluZy0+dHlwaWQsCisJCQkJCQkJCQkJICBqc2V4cHItPnJldHVybmluZy0+dHlwbW9kLAor CQkJCQkJCQkJCSAgQ09FUkNJT05fRVhQTElDSVQsCisJCQkJCQkJCQkJICBDT0VSQ0VfSU1QTElD SVRfQ0FTVCwKKwkJCQkJCQkJCQkgIGxvY2F0aW9uKTsKKworCQkJCWlmIChjb2VyY2lvbl9leHBy ID09IE5VTEwpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9D QU5OT1RfQ09FUkNFKSwKKwkJCQkJCQkgZXJybXNnKCJjYW5ub3QgY2FzdCB0eXBlICVzIHRvICVz IiwKKwkJCQkJCQkJCWZvcm1hdF90eXBlX2JlKEJPT0xPSUQpLAorCQkJCQkJCQkJZm9ybWF0X3R5 cGVfYmUoanNleHByLT5yZXR1cm5pbmctPnR5cGlkKSksCisJCQkJCQkJIHBhcnNlcl9jb2VyY2lv bl9lcnJwb3NpdGlvbihwc3RhdGUsIGxvY2F0aW9uLCAoTm9kZSAqKSBqc2V4cHIpKSk7CisKKwkJ CQlpZiAoY29lcmNpb25fZXhwciAhPSAoTm9kZSAqKSBwbGFjZWhvbGRlcikKKwkJCQkJanNleHBy LT5yZXN1bHRfY29lcmNpb24gPSBjb2VyY2lvbl9leHByOworCQkJfQorCiAKIAkJCWpzZXhwci0+ b25fZXJyb3IgPSB0cmFuc2Zvcm1Kc29uQmVoYXZpb3IocHN0YXRlLCBmdW5jLT5vbl9lcnJvciwK IAkJCQkJCQkJCQkJCQkgSlNPTl9CRUhBVklPUl9GQUxTRSwKQEAgLTQzMzksNiArNDM3OSwxNyBA QCB0cmFuc2Zvcm1Kc29uRnVuY0V4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uRnVuY0V4cHIg KmZ1bmMpCiAJCQkJCQkJCQkJCQkJIGpzZXhwci0+cmV0dXJuaW5nKTsKIAkJCWJyZWFrOwogCisJ CWNhc2UgSlNPTl9UQUJMRV9PUDoKKwkJCWlmICghT2lkSXNWYWxpZChqc2V4cHItPnJldHVybmlu Zy0+dHlwaWQpKQorCQkJeworCQkJCWpzZXhwci0+cmV0dXJuaW5nLT50eXBpZCA9IGV4cHJUeXBl KGpzZXhwci0+Zm9ybWF0dGVkX2V4cHIpOworCQkJCWpzZXhwci0+cmV0dXJuaW5nLT50eXBtb2Qg PSAtMTsKKwkJCX0KKwkJCWpzZXhwci0+b25fZXJyb3IgPSB0cmFuc2Zvcm1Kc29uQmVoYXZpb3Io cHN0YXRlLCBmdW5jLT5vbl9lcnJvciwKKwkJCQkJCQkJCQkJCQkgSlNPTl9CRUhBVklPUl9FTVBU WSwKKwkJCQkJCQkJCQkJCQkganNleHByLT5yZXR1cm5pbmcpOworCQkJYnJlYWs7CisKIAkJZGVm YXVsdDoKIAkJCWVsb2coRVJST1IsICJpbnZhbGlkIEpzb25GdW5jRXhwciBvcCIpOwogCQkJYnJl YWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfanNvbnRhYmxlLmMgYi9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfanNvbnRhYmxlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMC4uMmNmMGNkZmQ3NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9qc29udGFibGUuYwpAQCAtMCwwICsxLDcxOCBAQAorLyotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKgorICogcGFyc2VfanNvbnRhYmxlLmMKKyAqCSAgcGFyc2luZyBvZiBKU09O X1RBQkxFCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjIsIFBvc3RncmVT UUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5 OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqCisgKiBJ REVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfanNvbnRhYmxlLmMK KyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKwor I2luY2x1ZGUgImNhdGFsb2cvcGdfY29sbGF0aW9uLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ190 eXBlLmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNz LmgiCisjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCisjaW5jbHVkZSAib3B0aW1pemVyL29w dGltaXplci5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV9jbGF1c2UuaCIKKyNpbmNsdWRlICJw YXJzZXIvcGFyc2VfY29sbGF0ZS5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV9leHByLmgiCisj aW5jbHVkZSAicGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNl X3R5cGUuaCIKKyNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL2pz b24uaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKworLyogQ29udGV4dCBmb3IgSlNP Tl9UQUJMRSB0cmFuc2Zvcm1hdGlvbiAqLwordHlwZWRlZiBzdHJ1Y3QgSnNvblRhYmxlUGFyc2VD b250ZXh0Cit7CisJUGFyc2VTdGF0ZSAqcHN0YXRlOwkJCS8qIHBhcnNpbmcgc3RhdGUgKi8KKwlK c29uVGFibGUgICp0YWJsZTsJCQkvKiB1bnRyYW5zZm9ybWVkIG5vZGUgKi8KKwlUYWJsZUZ1bmMg ICp0YWJsZWZ1bmM7CQkvKiB0cmFuc2Zvcm1lZCBub2RlCSovCisJTGlzdAkgICAqcGF0aE5hbWVz OwkJLyogbGlzdCBvZiBhbGwgcGF0aCBhbmQgY29sdW1ucyBuYW1lcyAqLworCWludAkJCXBhdGhO YW1lSWQ7CQkvKiBwYXRoIG5hbWUgaWQgY291bnRlciAqLworCU9pZAkJCWNvbnRleHRJdGVtVHlw aWQ7CS8qIHR5cGUgb2lkIG9mIGNvbnRleHQgaXRlbSAoanNvbi9qc29uYikgKi8KK30JCQlKc29u VGFibGVQYXJzZUNvbnRleHQ7CisKK3N0YXRpYyBKc29uVGFibGVQbGFuICp0cmFuc2Zvcm1Kc29u VGFibGVDb2x1bW5zKEpzb25UYWJsZVBhcnNlQ29udGV4dCAqIGN4dCwKKwkJCQkJCQkJCQkJCUpz b25UYWJsZVBsYW5TcGVjICpwbGFuc3BlYywKKwkJCQkJCQkJCQkJCUxpc3QgKmNvbHVtbnMsCisJ CQkJCQkJCQkJCQlKc29uVGFibGVQYXRoU3BlYyAqcGF0aHNwZWMpOworCisvKgorICogVHJhbnNm b3JtIEpTT05fVEFCTEUgY29sdW1uCisgKiAgIC0gcmVndWxhciBjb2x1bW4gaW50byBKU09OX1ZB TFVFKCkKKyAqICAgLSBGT1JNQVQgSlNPTiBjb2x1bW4gaW50byBKU09OX1FVRVJZKCkKKyAqICAg LSBFWElTVFMgY29sdW1uIGludG8gSlNPTl9FWElTVFMoKQorICovCitzdGF0aWMgTm9kZSAqCit0 cmFuc2Zvcm1Kc29uVGFibGVDb2x1bW4oSnNvblRhYmxlQ29sdW1uICpqdGMsIE5vZGUgKmNvbnRl eHRJdGVtRXhwciwKKwkJCQkJCSBMaXN0ICpwYXNzaW5nQXJncywgYm9vbCBlcnJvck9uRXJyb3Ip Cit7CisJSnNvbkZ1bmNFeHByICpqZmV4cHIgPSBtYWtlTm9kZShKc29uRnVuY0V4cHIpOworCU5v ZGUJICAgKnBhdGhzcGVjOworCUpzb25Gb3JtYXQgKmRlZmF1bHRfZm9ybWF0OworCisJaWYgKGp0 Yy0+Y29sdHlwZSA9PSBKVENfUkVHVUxBUikKKwkJamZleHByLT5vcCA9IEpTT05fVkFMVUVfT1A7 CisJZWxzZSBpZiAoanRjLT5jb2x0eXBlID09IEpUQ19FWElTVFMpCisJCWpmZXhwci0+b3AgPSBK U09OX0VYSVNUU19PUDsKKwllbHNlCisJCWpmZXhwci0+b3AgPSBKU09OX1FVRVJZX09QOworCWpm ZXhwci0+b3V0cHV0ID0gbWFrZU5vZGUoSnNvbk91dHB1dCk7CisJamZleHByLT5vbl9lbXB0eSA9 IGp0Yy0+b25fZW1wdHk7CisJamZleHByLT5vbl9lcnJvciA9IGp0Yy0+b25fZXJyb3I7CisJaWYg KGpmZXhwci0+b25fZXJyb3IgPT0gTlVMTCAmJiBlcnJvck9uRXJyb3IpCisJCWpmZXhwci0+b25f ZXJyb3IgPSBtYWtlSnNvbkJlaGF2aW9yKEpTT05fQkVIQVZJT1JfRVJST1IsIE5VTEwsCisJCQkJ CQkJCQkJCU5VTEwsIC0xKTsKKwlqZmV4cHItPnF1b3RlcyA9IGp0Yy0+cXVvdGVzOworCWpmZXhw ci0+d3JhcHBlciA9IGp0Yy0+d3JhcHBlcjsKKwlqZmV4cHItPmxvY2F0aW9uID0ganRjLT5sb2Nh dGlvbjsKKworCWpmZXhwci0+b3V0cHV0LT50eXBlTmFtZSA9IGp0Yy0+dHlwZU5hbWU7CisJamZl eHByLT5vdXRwdXQtPnJldHVybmluZyA9IG1ha2VOb2RlKEpzb25SZXR1cm5pbmcpOworCWpmZXhw ci0+b3V0cHV0LT5yZXR1cm5pbmctPmZvcm1hdCA9IGp0Yy0+Zm9ybWF0OworCisJZGVmYXVsdF9m b3JtYXQgPSBtYWtlSnNvbkZvcm1hdChKU19GT1JNQVRfREVGQVVMVCwgSlNfRU5DX0RFRkFVTFQs IC0xKTsKKworCWlmIChqdGMtPnBhdGhzcGVjKQorCQlwYXRoc3BlYyA9IChOb2RlICopIGp0Yy0+ cGF0aHNwZWMtPnN0cmluZzsKKwllbHNlCisJeworCQkvKiBDb25zdHJ1Y3QgZGVmYXVsdCBwYXRo IGFzICckLiJjb2x1bW5fbmFtZSInICovCisJCVN0cmluZ0luZm9EYXRhIHBhdGg7CisKKwkJaW5p dFN0cmluZ0luZm8oJnBhdGgpOworCisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJnBhdGgsICIk LiIpOworCQllc2NhcGVfanNvbigmcGF0aCwganRjLT5uYW1lKTsKKworCQlwYXRoc3BlYyA9IG1h a2VTdHJpbmdDb25zdChwYXRoLmRhdGEsIC0xKTsKKwl9CisKKwlqZmV4cHItPmNvbnRleHRfaXRl bSA9CW1ha2VKc29uVmFsdWVFeHByKChFeHByICopIGNvbnRleHRJdGVtRXhwciwgTlVMTCwKKwkJ CQkJCQkJCQkJICBkZWZhdWx0X2Zvcm1hdCk7CisJamZleHByLT5wYXRoc3BlYyA9IHBhdGhzcGVj OworCWpmZXhwci0+cGF0aG5hbWUgPSBOVUxMOworCWpmZXhwci0+cGFzc2luZyA9IHBhc3NpbmdB cmdzOworCisJcmV0dXJuIChOb2RlICopIGpmZXhwcjsKK30KKworLyoKKyAqIFJlZ2lzdGVyIGEg Y29sdW1uL3BhdGggbmFtZSBpbiB0aGUgcGF0aCBuYW1lIGxpc3QsIGZsYWdnaW5nIGlmIHRoZSBu YW1lIGlzCisgKiBhbHJlYWR5IHRha2VuIGJ5IGFub3RoZXIgY29sdW1uL3BhdGguCisgKi8KK3N0 YXRpYyB2b2lkCityZWdpc3Rlckpzb25UYWJsZUNvbHVtbihKc29uVGFibGVQYXJzZUNvbnRleHQg KiBjeHQsIGNoYXIgKmNvbG5hbWUsCisJCQkJCQlpbnQgbG9jYXRpb24pCit7CisJTGlzdENlbGwg ICAqbGM7CisKKwlmb3JlYWNoKGxjLCBjeHQtPnBhdGhOYW1lcykKKwl7CisJCWlmIChzdHJjbXAo Y29sbmFtZSwgKGNvbnN0IGNoYXIgKikgbGZpcnN0KGxjKSkgPT0gMCkKKwkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfQUxJQVMpLAorCQkJCQllcnJtc2co ImR1cGxpY2F0ZSBKU09OX1RBQkxFIGNvbHVtbiBuYW1lOiAlcyIsIGNvbG5hbWUpLAorCQkJCQlw YXJzZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsIGxvY2F0aW9uKSk7CisJfQorCisJY3h0LT5w YXRoTmFtZXMgPSBsYXBwZW5kKGN4dC0+cGF0aE5hbWVzLCBjb2xuYW1lKTsKK30KKworc3RhdGlj IHZvaWQKK3JlZ2lzdGVySnNvblRhYmxlUGF0aChKc29uVGFibGVQYXJzZUNvbnRleHQgKiBjeHQs IGNoYXIgKnBhdGhuYW1lLAorCQkJCQkgIGludCBsb2NhdGlvbikKK3sKKwlMaXN0Q2VsbCAgICps YzsKKworCWZvcmVhY2gobGMsIGN4dC0+cGF0aE5hbWVzKQorCXsKKwkJaWYgKHN0cmNtcChwYXRo bmFtZSwgKGNvbnN0IGNoYXIgKikgbGZpcnN0KGxjKSkgPT0gMCkKKwkJCWVyZXBvcnQoRVJST1Is CisJCQkJCWVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfQUxJQVMpLAorCQkJCQllcnJtc2coImR1 cGxpY2F0ZSBKU09OX1RBQkxFIHBhdGggbmFtZTogJXMiLCBwYXRobmFtZSksCisJCQkJCXBhcnNl cl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0ZSwgbG9jYXRpb24pKTsKKwl9CisKKwljeHQtPnBhdGhO YW1lcyA9IGxhcHBlbmQoY3h0LT5wYXRoTmFtZXMsIHBhdGhuYW1lKTsKK30KKworLyoKKyAqIFJl Y3Vyc2l2ZWx5IHJlZ2lzdGVyIGFsbCBuZXN0ZWQgY29sdW1uIG5hbWVzIGluIHRoZSBzaGFyZWQg Y29sdW1ucy9wYXRoIG5hbWUKKyAqIGxpc3QuCisgKi8KK3N0YXRpYyB2b2lkCityZWdpc3RlckFs bEpzb25UYWJsZUNvbHVtbnNBbmRQYXRocyhKc29uVGFibGVQYXJzZUNvbnRleHQgKiBjeHQsCisJ CQkJCQkJCQlMaXN0ICpjb2x1bW5zKQoreworCUxpc3RDZWxsICAgKmxjOworCisJZm9yZWFjaChs YywgY29sdW1ucykKKwl7CisJCUpzb25UYWJsZUNvbHVtbiAqanRjID0gY2FzdE5vZGUoSnNvblRh YmxlQ29sdW1uLCBsZmlyc3QobGMpKTsKKworCQlpZiAoanRjLT5jb2x0eXBlID09IEpUQ19ORVNU RUQpCisJCXsKKwkJCWlmIChqdGMtPnBhdGhzcGVjLT5uYW1lKQorCQkJCXJlZ2lzdGVySnNvblRh YmxlUGF0aChjeHQsIGp0Yy0+cGF0aHNwZWMtPm5hbWUsCisJCQkJCQkJCQkgIGp0Yy0+cGF0aHNw ZWMtPm5hbWVfbG9jYXRpb24pOworCisJCQlyZWdpc3RlckFsbEpzb25UYWJsZUNvbHVtbnNBbmRQ YXRocyhjeHQsIGp0Yy0+Y29sdW1ucyk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlyZWdpc3Rlckpz b25UYWJsZUNvbHVtbihjeHQsIGp0Yy0+bmFtZSwganRjLT5sb2NhdGlvbik7CisJCX0KKwl9Cit9 CisKKy8qIEdlbmVyYXRlIGEgbmV3IHVuaXF1ZSBKU09OX1RBQkxFIHBhdGggbmFtZS4gKi8KK3N0 YXRpYyBjaGFyICoKK2dlbmVyYXRlSnNvblRhYmxlUGF0aE5hbWUoSnNvblRhYmxlUGFyc2VDb250 ZXh0ICogY3h0KQoreworCWNoYXIJCW5hbWVidWZbMzJdOworCWNoYXIJICAgKm5hbWUgPSBuYW1l YnVmOworCisJc25wcmludGYobmFtZWJ1Ziwgc2l6ZW9mKG5hbWVidWYpLCAianNvbl90YWJsZV9w YXRoXyVkIiwKKwkJCSBjeHQtPnBhdGhOYW1lSWQrKyk7CisKKwluYW1lID0gcHN0cmR1cChuYW1l KTsKKwljeHQtPnBhdGhOYW1lcyA9IGxhcHBlbmQoY3h0LT5wYXRoTmFtZXMsIG5hbWUpOworCisJ cmV0dXJuIG5hbWU7Cit9CisKKy8qIENvbGxlY3Qgc2libGluZyBwYXRoIG5hbWVzIGZyb20gcGxh biB0byB0aGUgc3BlY2lmaWVkIGxpc3QuICovCitzdGF0aWMgdm9pZAorY29sbGVjdFNpYmxpbmdQ YXRoc0luSnNvblRhYmxlUGxhbihKc29uVGFibGVQbGFuU3BlYyAqcGxhbiwgTGlzdCAqKnBhdGhz KQoreworCWlmIChwbGFuLT5wbGFuX3R5cGUgPT0gSlNUUF9TSU1QTEUpCisJCSpwYXRocyA9IGxh cHBlbmQoKnBhdGhzLCBwbGFuLT5wYXRobmFtZSk7CisJZWxzZSBpZiAocGxhbi0+cGxhbl90eXBl ID09IEpTVFBfSk9JTkVEKQorCXsKKwkJaWYgKHBsYW4tPmpvaW5fdHlwZSA9PSBKU1RQSl9JTk5F UiB8fAorCQkJcGxhbi0+am9pbl90eXBlID09IEpTVFBKX09VVEVSKQorCQl7CisJCQlBc3NlcnQo cGxhbi0+cGxhbjEtPnBsYW5fdHlwZSA9PSBKU1RQX1NJTVBMRSk7CisJCQkqcGF0aHMgPSBsYXBw ZW5kKCpwYXRocywgcGxhbi0+cGxhbjEtPnBhdGhuYW1lKTsKKwkJfQorCQllbHNlIGlmIChwbGFu LT5qb2luX3R5cGUgPT0gSlNUUEpfQ1JPU1MgfHwKKwkJCQkgcGxhbi0+am9pbl90eXBlID09IEpT VFBKX1VOSU9OKQorCQl7CisJCQljb2xsZWN0U2libGluZ1BhdGhzSW5Kc29uVGFibGVQbGFuKHBs YW4tPnBsYW4xLCBwYXRocyk7CisJCQljb2xsZWN0U2libGluZ1BhdGhzSW5Kc29uVGFibGVQbGFu KHBsYW4tPnBsYW4yLCBwYXRocyk7CisJCX0KKwkJZWxzZQorCQkJZWxvZyhFUlJPUiwgImludmFs aWQgSlNPTl9UQUJMRSBqb2luIHR5cGUgJWQiLAorCQkJCSBwbGFuLT5qb2luX3R5cGUpOworCX0K K30KKworLyoKKyAqIFZhbGlkYXRlIGNoaWxkIEpTT05fVEFCTEUgcGxhbiBieSBjaGVja2luZyB0 aGF0OgorICogIC0gYWxsIG5lc3RlZCBjb2x1bW5zIGhhdmUgcGF0aCBuYW1lcyBzcGVjaWZpZWQK KyAqICAtIGFsbCBuZXN0ZWQgY29sdW1ucyBoYXZlIGNvcnJlc3BvbmRpbmcgbm9kZSBpbiB0aGUg c2libGluZyBwbGFuCisgKiAgLSBwbGFuIGRvZXMgbm90IGNvbnRhaW4gZHVwbGljYXRlIG9yIGV4 dHJhIG5vZGVzCisgKi8KK3N0YXRpYyB2b2lkCit2YWxpZGF0ZUpzb25UYWJsZUNoaWxkUGxhbihQ YXJzZVN0YXRlICpwc3RhdGUsIEpzb25UYWJsZVBsYW5TcGVjICpwbGFuLAorCQkJCQkJICAgTGlz dCAqY29sdW1ucykKK3sKKwlMaXN0Q2VsbCAgICpsYzE7CisJTGlzdAkgICAqc2libGluZ3MgPSBO SUw7CisJaW50CQkJbmNoaWxkcmVuID0gMDsKKworCWlmIChwbGFuKQorCQljb2xsZWN0U2libGlu Z1BhdGhzSW5Kc29uVGFibGVQbGFuKHBsYW4sICZzaWJsaW5ncyk7CisKKwlmb3JlYWNoKGxjMSwg Y29sdW1ucykKKwl7CisJCUpzb25UYWJsZUNvbHVtbiAqanRjID0gY2FzdE5vZGUoSnNvblRhYmxl Q29sdW1uLCBsZmlyc3QobGMxKSk7CisKKwkJaWYgKGp0Yy0+Y29sdHlwZSA9PSBKVENfTkVTVEVE KQorCQl7CisJCQlMaXN0Q2VsbCAgICpsYzI7CisJCQlib29sCQlmb3VuZCA9IGZhbHNlOworCisJ CQlpZiAoanRjLT5wYXRoc3BlYy0+bmFtZSA9PSBOVUxMKQorCQkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCWVycm1zZygibmVzdGVk IEpTT05fVEFCTEUgY29sdW1ucyBtdXN0IGNvbnRhaW4iCisJCQkJCQkJCSIgYW4gZXhwbGljaXQg QVMgcGF0aG5hbWUgc3BlY2lmaWNhdGlvbiIKKwkJCQkJCQkJIiBpZiBhbiBleHBsaWNpdCBQTEFO IGNsYXVzZSBpcyB1c2VkIiksCisJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBqdGMt PmxvY2F0aW9uKSk7CisKKwkJCS8qIGZpbmQgbmVzdGVkIHBhdGggbmFtZSBpbiB0aGUgbGlzdCBv ZiBzaWJsaW5nIHBhdGggbmFtZXMgKi8KKwkJCWZvcmVhY2gobGMyLCBzaWJsaW5ncykKKwkJCXsK KwkJCQlpZiAoKGZvdW5kID0gIXN0cmNtcChqdGMtPnBhdGhzcGVjLT5uYW1lLCBsZmlyc3QobGMy KSkpKQorCQkJCQlicmVhazsKKwkJCX0KKworCQkJaWYgKCFmb3VuZCkKKwkJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQllcnJtc2co ImludmFsaWQgSlNPTl9UQUJMRSBzcGVjaWZpY2F0aW9uIiksCisJCQkJCQllcnJkZXRhaWwoIlBM QU4gY2xhdXNlIGZvciBuZXN0ZWQgcGF0aCAlcyB3YXMgbm90IGZvdW5kLiIsCisJCQkJCQkJCSAg anRjLT5wYXRoc3BlYy0+bmFtZSksCisJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBq dGMtPmxvY2F0aW9uKSk7CisKKwkJCW5jaGlsZHJlbisrOworCQl9CisJfQorCisJaWYgKGxpc3Rf bGVuZ3RoKHNpYmxpbmdzKSA+IG5jaGlsZHJlbikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJj b2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQllcnJtc2coImludmFsaWQgSlNPTl9UQUJM RSBwbGFuIGNsYXVzZSIpLAorCQkJCWVycmRldGFpbCgiUExBTiBjbGF1c2UgY29udGFpbnMgc29t ZSBleHRyYSBvciBkdXBsaWNhdGUgc2libGluZyBub2Rlcy4iKSwKKwkJCQlwYXJzZXJfZXJycG9z aXRpb24ocHN0YXRlLCBwbGFuID8gcGxhbi0+bG9jYXRpb24gOiAtMSkpOworfQorCitzdGF0aWMg SnNvblRhYmxlQ29sdW1uICoKK2ZpbmROZXN0ZWRKc29uVGFibGVDb2x1bW4oTGlzdCAqY29sdW1u cywgY29uc3QgY2hhciAqcGF0aG5hbWUpCit7CisJTGlzdENlbGwgICAqbGM7CisKKwlmb3JlYWNo KGxjLCBjb2x1bW5zKQorCXsKKwkJSnNvblRhYmxlQ29sdW1uICpqdGMgPSBjYXN0Tm9kZShKc29u VGFibGVDb2x1bW4sIGxmaXJzdChsYykpOworCisJCWlmIChqdGMtPmNvbHR5cGUgPT0gSlRDX05F U1RFRCAmJgorCQkJanRjLT5wYXRoc3BlYy0+bmFtZSAmJgorCQkJIXN0cmNtcChqdGMtPnBhdGhz cGVjLT5uYW1lLCBwYXRobmFtZSkpCisJCQlyZXR1cm4ganRjOworCX0KKworCXJldHVybiBOVUxM OworfQorCitzdGF0aWMgTm9kZSAqCit0cmFuc2Zvcm1OZXN0ZWRKc29uVGFibGVDb2x1bW4oSnNv blRhYmxlUGFyc2VDb250ZXh0ICogY3h0LCBKc29uVGFibGVDb2x1bW4gKmp0YywKKwkJCQkJCQkg ICBKc29uVGFibGVQbGFuU3BlYyAqcGxhbnNwZWMpCit7CisJaWYgKGp0Yy0+cGF0aHNwZWMtPm5h bWUgPT0gTlVMTCkKKwl7CisJCWlmIChjeHQtPnRhYmxlLT5wbGFuc3BlYyAhPSBOVUxMKQorCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJ CQkgZXJybXNnKCJpbnZhbGlkIEpTT05fVEFCTEUgZXhwcmVzc2lvbiIpLAorCQkJCQkgZXJyZGV0 YWlsKCJKU09OX1RBQkxFIHBhdGggbXVzdCBjb250YWluIgorCQkJCQkJCSAgICIgZXhwbGljaXQg QVMgcGF0aG5hbWUgc3BlY2lmaWNhdGlvbiBpZiIKKwkJCQkJCQkgICAiIGV4cGxpY2l0IFBMQU4g Y2xhdXNlIGlzIHVzZWQiKSwKKwkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0ZSwg anRjLT5sb2NhdGlvbikpKTsKKworCQlqdGMtPnBhdGhzcGVjLT5uYW1lID0gZ2VuZXJhdGVKc29u VGFibGVQYXRoTmFtZShjeHQpOworCX0KKworCXJldHVybiAoTm9kZSAqKSB0cmFuc2Zvcm1Kc29u VGFibGVDb2x1bW5zKGN4dCwgcGxhbnNwZWMsIGp0Yy0+Y29sdW1ucywKKwkJCQkJCQkJCQkJICBq dGMtPnBhdGhzcGVjKTsKK30KKworc3RhdGljIE5vZGUgKgorbWFrZUpzb25UYWJsZVNpYmxpbmdK b2luKGJvb2wgY3Jvc3MsIE5vZGUgKmxub2RlLCBOb2RlICpybm9kZSkKK3sKKwlKc29uVGFibGVT aWJsaW5nICpqb2luID0gbWFrZU5vZGUoSnNvblRhYmxlU2libGluZyk7CisKKwlqb2luLT5sYXJn ID0gbG5vZGU7CisJam9pbi0+cmFyZyA9IHJub2RlOworCWpvaW4tPmNyb3NzID0gY3Jvc3M7CisK KwlyZXR1cm4gKE5vZGUgKikgam9pbjsKK30KKworLyoKKyAqIFJlY3Vyc2l2ZWx5IHRyYW5zZm9y bSBjaGlsZCBKU09OX1RBQkxFIHBsYW4uCisgKgorICogRGVmYXVsdCBwbGFuIGlzIHRyYW5zZm9y bWVkIGludG8gYSBjcm9zcy91bmlvbiBqb2luIG9mIGl0cyBuZXN0ZWQgY29sdW1ucy4KKyAqIFNp bXBsZSBhbmQgb3V0ZXIvaW5uZXIgcGxhbnMgYXJlIHRyYW5zZm9ybWVkIGludG8gYSBKc29uVGFi bGVQbGFuIGJ5CisgKiBmaW5kaW5nIGFuZCB0cmFuc2Zvcm1pbmcgY29ycmVzcG9uZGluZyBuZXN0 ZWQgY29sdW1uLgorICogU2libGluZyBwbGFucyBhcmUgcmVjdXJzaXZlbHkgdHJhbnNmb3JtZWQg aW50byBhIEpzb25UYWJsZVNpYmxpbmcuCisgKi8KK3N0YXRpYyBOb2RlICoKK3RyYW5zZm9ybUpz b25UYWJsZUNoaWxkUGxhbihKc29uVGFibGVQYXJzZUNvbnRleHQgKiBjeHQsCisJCQkJCQkJSnNv blRhYmxlUGxhblNwZWMgKnBsYW4sCisJCQkJCQkJTGlzdCAqY29sdW1ucykKK3sKKwlKc29uVGFi bGVDb2x1bW4gKmp0YyA9IE5VTEw7CisKKwlpZiAoIXBsYW4gfHwgcGxhbi0+cGxhbl90eXBlID09 IEpTVFBfREVGQVVMVCkKKwl7CisJCS8qIHVuc3BlY2lmaWVkIG9yIGRlZmF1bHQgcGxhbiAqLwor CQlOb2RlCSAgICpyZXMgPSBOVUxMOworCQlMaXN0Q2VsbCAgICpsYzsKKwkJYm9vbAkJY3Jvc3Mg PSBwbGFuICYmIChwbGFuLT5qb2luX3R5cGUgJiBKU1RQSl9DUk9TUyk7CisKKwkJLyogdHJhbnNm b3JtIGFsbCBuZXN0ZWQgY29sdW1ucyBpbnRvIGNyb3NzL3VuaW9uIGpvaW4gKi8KKwkJZm9yZWFj aChsYywgY29sdW1ucykKKwkJeworCQkJSnNvblRhYmxlQ29sdW1uICpjb2wgPSBjYXN0Tm9kZShK c29uVGFibGVDb2x1bW4sIGxmaXJzdChsYykpOworCQkJTm9kZQkgICAqbm9kZTsKKworCQkJaWYg KGNvbC0+Y29sdHlwZSAhPSBKVENfTkVTVEVEKQorCQkJCWNvbnRpbnVlOworCisJCQlub2RlID0g dHJhbnNmb3JtTmVzdGVkSnNvblRhYmxlQ29sdW1uKGN4dCwgY29sLCBwbGFuKTsKKworCQkJLyog am9pbiB0cmFuc2Zvcm1lZCBub2RlIHdpdGggcHJldmlvdXMgc2libGluZyBub2RlcyAqLworCQkJ cmVzID0gcmVzID8gbWFrZUpzb25UYWJsZVNpYmxpbmdKb2luKGNyb3NzLCByZXMsIG5vZGUpIDog bm9kZTsKKwkJfQorCisJCXJldHVybiByZXM7CisJfQorCWVsc2UgaWYgKHBsYW4tPnBsYW5fdHlw ZSA9PSBKU1RQX1NJTVBMRSkKKwl7CisJCWp0YyA9IGZpbmROZXN0ZWRKc29uVGFibGVDb2x1bW4o Y29sdW1ucywgcGxhbi0+cGF0aG5hbWUpOworCX0KKwllbHNlIGlmIChwbGFuLT5wbGFuX3R5cGUg PT0gSlNUUF9KT0lORUQpCisJeworCQlpZiAocGxhbi0+am9pbl90eXBlID09IEpTVFBKX0lOTkVS IHx8CisJCQlwbGFuLT5qb2luX3R5cGUgPT0gSlNUUEpfT1VURVIpCisJCXsKKwkJCUFzc2VydChw bGFuLT5wbGFuMS0+cGxhbl90eXBlID09IEpTVFBfU0lNUExFKTsKKwkJCWp0YyA9IGZpbmROZXN0 ZWRKc29uVGFibGVDb2x1bW4oY29sdW1ucywgcGxhbi0+cGxhbjEtPnBhdGhuYW1lKTsKKwkJfQor CQllbHNlCisJCXsKKwkJCU5vZGUJICAgKm5vZGUxID0gdHJhbnNmb3JtSnNvblRhYmxlQ2hpbGRQ bGFuKGN4dCwgcGxhbi0+cGxhbjEsCisJCQkJCQkJCQkJCQkJCQljb2x1bW5zKTsKKwkJCU5vZGUJ ICAgKm5vZGUyID0gdHJhbnNmb3JtSnNvblRhYmxlQ2hpbGRQbGFuKGN4dCwgcGxhbi0+cGxhbjIs CisJCQkJCQkJCQkJCQkJCQljb2x1bW5zKTsKKworCQkJcmV0dXJuIG1ha2VKc29uVGFibGVTaWJs aW5nSm9pbihwbGFuLT5qb2luX3R5cGUgPT0gSlNUUEpfQ1JPU1MsCisJCQkJCQkJCQkJCW5vZGUx LCBub2RlMik7CisJCX0KKwl9CisJZWxzZQorCQllbG9nKEVSUk9SLCAiaW52YWxpZCBKU09OX1RB QkxFIHBsYW4gdHlwZSAlZCIsIHBsYW4tPnBsYW5fdHlwZSk7CisKKwlpZiAoIWp0YykKKwkJZXJl cG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJIGVy cm1zZygiaW52YWxpZCBKU09OX1RBQkxFIHBsYW4gY2xhdXNlIiksCisJCQkJIGVycmRldGFpbCgi UEFUSCBuYW1lIHdhcyAlcyBub3QgZm91bmQgaW4gbmVzdGVkIGNvbHVtbnMgbGlzdC4iLAorCQkJ CQkJICAgcGxhbi0+cGF0aG5hbWUpLAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24oY3h0LT5wc3Rh dGUsIHBsYW4tPmxvY2F0aW9uKSkpOworCisJcmV0dXJuIHRyYW5zZm9ybU5lc3RlZEpzb25UYWJs ZUNvbHVtbihjeHQsIGp0YywgcGxhbik7Cit9CisKKy8qIENoZWNrIHdoZXRoZXIgdHlwZSBpcyBq c29uL2pzb25iLCBhcnJheSwgb3IgcmVjb3JkLiAqLworc3RhdGljIGJvb2wKK3R5cGVJc0NvbXBv c2l0ZShPaWQgdHlwaWQpCit7CisJY2hhcgkJdHlwdHlwZTsKKworCWlmICh0eXBpZCA9PSBKU09O T0lEIHx8CisJCXR5cGlkID09IEpTT05CT0lEIHx8CisJCXR5cGlkID09IFJFQ09SRE9JRCB8fAor CQl0eXBlX2lzX2FycmF5KHR5cGlkKSkKKwkJcmV0dXJuIHRydWU7CisKKwl0eXB0eXBlID0gZ2V0 X3R5cHR5cGUodHlwaWQpOworCisJaWYgKHR5cHR5cGUgPT0gVFlQVFlQRV9DT01QT1NJVEUpCisJ CXJldHVybiB0cnVlOworCisJaWYgKHR5cHR5cGUgPT0gVFlQVFlQRV9ET01BSU4pCisJCXJldHVy biB0eXBlSXNDb21wb3NpdGUoZ2V0QmFzZVR5cGUodHlwaWQpKTsKKworCXJldHVybiBmYWxzZTsK K30KKworLyogQXBwZW5kIHRyYW5zZm9ybWVkIG5vbi1uZXN0ZWQgSlNPTl9UQUJMRSBjb2x1bW5z IHRvIHRoZSBUYWJsZUZ1bmMgbm9kZSAqLworc3RhdGljIHZvaWQKK2FwcGVuZEpzb25UYWJsZUNv bHVtbnMoSnNvblRhYmxlUGFyc2VDb250ZXh0ICogY3h0LCBMaXN0ICpjb2x1bW5zKQoreworCUxp c3RDZWxsICAgKmNvbDsKKwlQYXJzZVN0YXRlICpwc3RhdGUgPSBjeHQtPnBzdGF0ZTsKKwlKc29u VGFibGUgICpqdCA9IGN4dC0+dGFibGU7CisJVGFibGVGdW5jICAqdGYgPSBjeHQtPnRhYmxlZnVu YzsKKwlib29sCQlvcmRpbmFsaXR5X2ZvdW5kID0gZmFsc2U7CisJSnNvbkJlaGF2aW9yICpvbl9l cnJvciA9IGp0LT5vbl9lcnJvcjsKKwlib29sCQllcnJvck9uRXJyb3IgPSBvbl9lcnJvciAmJgor CQlvbl9lcnJvci0+YnR5cGUgPT0gSlNPTl9CRUhBVklPUl9FUlJPUjsKKworCWZvcmVhY2goY29s LCBjb2x1bW5zKQorCXsKKwkJSnNvblRhYmxlQ29sdW1uICpyYXdjID0gY2FzdE5vZGUoSnNvblRh YmxlQ29sdW1uLCBsZmlyc3QoY29sKSk7CisJCU9pZAkJCXR5cGlkOworCQlpbnQzMgkJdHlwbW9k OworCQlOb2RlCSAgICpjb2xleHByOworCisJCWlmIChyYXdjLT5uYW1lKQorCQkJdGYtPmNvbG5h bWVzID0gbGFwcGVuZCh0Zi0+Y29sbmFtZXMsCisJCQkJCQkJCSAgIG1ha2VTdHJpbmcocHN0cmR1 cChyYXdjLT5uYW1lKSkpOworCisJCS8qCisJCSAqIERldGVybWluZSB0aGUgdHlwZSBhbmQgdHlw bW9kIGZvciB0aGUgbmV3IGNvbHVtbi4gRk9SIE9SRElOQUxJVFkKKwkJICogY29sdW1ucyBhcmUg SU5URUdFUiBieSBzdGFuZGFyZDsgdGhlIG90aGVycyBhcmUgdXNlci1zcGVjaWZpZWQuCisJCSAq LworCQlzd2l0Y2ggKHJhd2MtPmNvbHR5cGUpCisJCXsKKwkJCWNhc2UgSlRDX0ZPUl9PUkRJTkFM SVRZOgorCQkJCWlmIChvcmRpbmFsaXR5X2ZvdW5kKQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkgZXJybXNnKCJjYW5u b3QgdXNlIG1vcmUgdGhhbiBvbmUgRk9SIE9SRElOQUxJVFkgY29sdW1uIiksCisJCQkJCQkJIHBh cnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIHJhd2MtPmxvY2F0aW9uKSkpOworCQkJCW9yZGluYWxp dHlfZm91bmQgPSB0cnVlOworCQkJCWNvbGV4cHIgPSBOVUxMOworCQkJCXR5cGlkID0gSU5UNE9J RDsKKwkJCQl0eXBtb2QgPSAtMTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBKVENfUkVHVUxBUjoK KwkJCQl0eXBlbmFtZVR5cGVJZEFuZE1vZChwc3RhdGUsIHJhd2MtPnR5cGVOYW1lLCAmdHlwaWQs ICZ0eXBtb2QpOworCisJCQkJLyoKKwkJCQkgKiBVc2UgaW1wbGljaXQgRk9STUFUIEpTT04gZm9y IGNvbXBvc2l0ZSB0eXBlcyAoYXJyYXlzIGFuZAorCQkJCSAqIHJlY29yZHMpIG9yIGlmIGEgbm9u LWRlZmF1bHQgV1JBUFBFUiAvIFFVT1RFUyBiZWhhdmlvcgorCQkJCSAqIGlzIHNwZWNpZmllZC4K KwkJCQkgKi8KKwkJCQlpZiAodHlwZUlzQ29tcG9zaXRlKHR5cGlkKSB8fAorCQkJCQlyYXdjLT5x dW90ZXMgIT0gSlNfUVVPVEVTX1VOU1BFQyB8fAorCQkJCQlyYXdjLT53cmFwcGVyICE9IEpTV19V TlNQRUMpCisJCQkJCXJhd2MtPmNvbHR5cGUgPSBKVENfRk9STUFUVEVEOworCisJCQkJLyogRkFM TFRIUk9VR0ggKi8KKwkJCWNhc2UgSlRDX0ZPUk1BVFRFRDoKKwkJCWNhc2UgSlRDX0VYSVNUUzoK KwkJCQl7CisJCQkJCU5vZGUJICAgKmplOworCQkJCQlDYXNlVGVzdEV4cHIgKnBhcmFtID0gbWFr ZU5vZGUoQ2FzZVRlc3RFeHByKTsKKworCQkJCQlwYXJhbS0+Y29sbGF0aW9uID0gSW52YWxpZE9p ZDsKKwkJCQkJcGFyYW0tPnR5cGVJZCA9IGN4dC0+Y29udGV4dEl0ZW1UeXBpZDsKKwkJCQkJcGFy YW0tPnR5cGVNb2QgPSAtMTsKKworCQkJCQlqZSA9IHRyYW5zZm9ybUpzb25UYWJsZUNvbHVtbihy YXdjLCAoTm9kZSAqKSBwYXJhbSwKKwkJCQkJCQkJCQkJCSAgTklMLCBlcnJvck9uRXJyb3IpOwor CisJCQkJCWNvbGV4cHIgPSB0cmFuc2Zvcm1FeHByKHBzdGF0ZSwgamUsIEVYUFJfS0lORF9GUk9N X0ZVTkNUSU9OKTsKKwkJCQkJYXNzaWduX2V4cHJfY29sbGF0aW9ucyhwc3RhdGUsIGNvbGV4cHIp OworCisJCQkJCXR5cGlkID0gZXhwclR5cGUoY29sZXhwcik7CisJCQkJCXR5cG1vZCA9IGV4cHJU eXBtb2QoY29sZXhwcik7CisJCQkJCWJyZWFrOworCQkJCX0KKworCQkJY2FzZSBKVENfTkVTVEVE OgorCQkJCWNvbnRpbnVlOworCisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJST1IsICJ1bmtub3du IEpTT05fVEFCTEUgY29sdW1uIHR5cGU6ICVkIiwgcmF3Yy0+Y29sdHlwZSk7CisJCQkJYnJlYWs7 CisJCX0KKworCQl0Zi0+Y29sdHlwZXMgPSBsYXBwZW5kX29pZCh0Zi0+Y29sdHlwZXMsIHR5cGlk KTsKKwkJdGYtPmNvbHR5cG1vZHMgPSBsYXBwZW5kX2ludCh0Zi0+Y29sdHlwbW9kcywgdHlwbW9k KTsKKwkJdGYtPmNvbGNvbGxhdGlvbnMgPSBsYXBwZW5kX29pZCh0Zi0+Y29sY29sbGF0aW9ucywg Z2V0X3R5cGNvbGxhdGlvbih0eXBpZCkpOworCQl0Zi0+Y29sdmFsZXhwcnMgPSBsYXBwZW5kKHRm LT5jb2x2YWxleHBycywgY29sZXhwcik7CisJfQorfQorCisvKgorICogQ3JlYXRlIHRyYW5zZm9y bWVkIEpTT05fVEFCTEUgcGFyZW50IHBsYW4gbm9kZSBieSBhcHBlbmRpbmcgYWxsIG5vbi1uZXN0 ZWQKKyAqIGNvbHVtbnMgdG8gdGhlIFRhYmxlRnVuYyBub2RlIGFuZCByZW1lbWJlcmluZyB0aGVp ciBpbmRpY2VzIGluIHRoZQorICogY29sdmFsZXhwcnMgbGlzdC4KKyAqLworc3RhdGljIEpzb25U YWJsZVBsYW4gKgorbWFrZVBhcmVudEpzb25UYWJsZVBsYW4oSnNvblRhYmxlUGFyc2VDb250ZXh0 ICogY3h0LCBKc29uVGFibGVQYXRoU3BlYyAqcGF0aHNwZWMsCisJCQkJCQlMaXN0ICpjb2x1bW5z KQoreworCUpzb25UYWJsZVBsYW4gKnBsYW4gPSBtYWtlTm9kZShKc29uVGFibGVQbGFuKTsKKwlK c29uQmVoYXZpb3IgKm9uX2Vycm9yID0gY3h0LT50YWJsZS0+b25fZXJyb3I7CisJY2hhcgkJICpw YXRoc3RyaW5nOworCUNvbnN0CQkgKnZhbHVlOworCisJQXNzZXJ0KElzQShwYXRoc3BlYy0+c3Ry aW5nLCBBX0NvbnN0KSk7CisJcGF0aHN0cmluZyA9IGNhc3ROb2RlKEFfQ29uc3QsIHBhdGhzcGVj LT5zdHJpbmcpLT52YWwuc3ZhbC5zdmFsOworCXZhbHVlID0gbWFrZUNvbnN0KEpTT05QQVRIT0lE LCAtMSwgSW52YWxpZE9pZCwgLTEsCisJCQkJCSAgRGlyZWN0RnVuY3Rpb25DYWxsMShqc29ucGF0 aF9pbiwKKwkJCQkJCQkJCQkgIENTdHJpbmdHZXREYXR1bShwYXRoc3RyaW5nKSksCisJCQkJCSAg ZmFsc2UsIGZhbHNlKTsKKwlwbGFuLT5wYXRoID0gbWFrZUpzb25UYWJsZVBhdGgodmFsdWUsIHBh dGhzcGVjLT5uYW1lKTsKKworCS8qIHNhdmUgc3RhcnQgb2YgY29sdW1uIHJhbmdlICovCisJcGxh bi0+Y29sTWluID0gbGlzdF9sZW5ndGgoY3h0LT50YWJsZWZ1bmMtPmNvbHZhbGV4cHJzKTsKKwor CWFwcGVuZEpzb25UYWJsZUNvbHVtbnMoY3h0LCBjb2x1bW5zKTsKKworCS8qIHNhdmUgZW5kIG9m IGNvbHVtbiByYW5nZSAqLworCXBsYW4tPmNvbE1heCA9IGxpc3RfbGVuZ3RoKGN4dC0+dGFibGVm dW5jLT5jb2x2YWxleHBycykgLSAxOworCisJcGxhbi0+ZXJyb3JPbkVycm9yID0gb25fZXJyb3Ig JiYgb25fZXJyb3ItPmJ0eXBlID09IEpTT05fQkVIQVZJT1JfRVJST1I7CisKKwlyZXR1cm4gcGxh bjsKK30KKworc3RhdGljIEpzb25UYWJsZVBsYW4gKgordHJhbnNmb3JtSnNvblRhYmxlQ29sdW1u cyhKc29uVGFibGVQYXJzZUNvbnRleHQgKiBjeHQsCisJCQkJCQkgIEpzb25UYWJsZVBsYW5TcGVj ICpwbGFuc3BlYywKKwkJCQkJCSAgTGlzdCAqY29sdW1ucywKKwkJCQkJCSAgSnNvblRhYmxlUGF0 aFNwZWMgKnBhdGhzcGVjKQoreworCUpzb25UYWJsZVBsYW4gKnBsYW47CisJSnNvblRhYmxlUGxh blNwZWMgKmNoaWxkUGxhblNwZWM7CisJYm9vbAkJZGVmYXVsdFBsYW4gPSBwbGFuc3BlYyA9PSBO VUxMIHx8CisJCXBsYW5zcGVjLT5wbGFuX3R5cGUgPT0gSlNUUF9ERUZBVUxUOworCisJaWYgKGRl ZmF1bHRQbGFuKQorCQljaGlsZFBsYW5TcGVjID0gcGxhbnNwZWM7CisJZWxzZQorCXsKKwkJLyog dmFsaWRhdGUgcGFyZW50IGFuZCBjaGlsZCBwbGFucyAqLworCQlKc29uVGFibGVQbGFuU3BlYyAq cGFyZW50UGxhblNwZWM7CisKKwkJaWYgKHBsYW5zcGVjLT5wbGFuX3R5cGUgPT0gSlNUUF9KT0lO RUQpCisJCXsKKwkJCWlmIChwbGFuc3BlYy0+am9pbl90eXBlICE9IEpTVFBKX0lOTkVSICYmCisJ CQkJcGxhbnNwZWMtPmpvaW5fdHlwZSAhPSBKU1RQSl9PVVRFUikKKwkJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJIGVycm1zZygi aW52YWxpZCBKU09OX1RBQkxFIHBsYW4gY2xhdXNlIiksCisJCQkJCQkgZXJyZGV0YWlsKCJFeHBl Y3RlZCBJTk5FUiBvciBPVVRFUi4iKSwKKwkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24oY3h0LT5w c3RhdGUsIHBsYW5zcGVjLT5sb2NhdGlvbikpKTsKKworCQkJcGFyZW50UGxhblNwZWMgPSBwbGFu c3BlYy0+cGxhbjE7CisJCQljaGlsZFBsYW5TcGVjID0gcGxhbnNwZWMtPnBsYW4yOworCisJCQlB c3NlcnQocGFyZW50UGxhblNwZWMtPnBsYW5fdHlwZSAhPSBKU1RQX0pPSU5FRCk7CisJCQlBc3Nl cnQocGFyZW50UGxhblNwZWMtPnBhdGhuYW1lKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCXBhcmVu dFBsYW5TcGVjID0gcGxhbnNwZWM7CisJCQljaGlsZFBsYW5TcGVjID0gTlVMTDsKKwkJfQorCisJ CWlmIChzdHJjbXAocGFyZW50UGxhblNwZWMtPnBhdGhuYW1lLCBwYXRoc3BlYy0+bmFtZSkgIT0g MCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9S KSwKKwkJCQkJIGVycm1zZygiaW52YWxpZCBKU09OX1RBQkxFIHBsYW4iKSwKKwkJCQkJIGVycmRl dGFpbCgiUEFUSCBuYW1lIG1pc21hdGNoOiBleHBlY3RlZCAlcyBidXQgJXMgaXMgZ2l2ZW4uIiwK KwkJCQkJCQkgICBwYXRoc3BlYy0+bmFtZSwgcGFyZW50UGxhblNwZWMtPnBhdGhuYW1lKSwKKwkJ CQkJIHBhcnNlcl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0ZSwgcGxhbnNwZWMtPmxvY2F0aW9uKSkp OworCisJCXZhbGlkYXRlSnNvblRhYmxlQ2hpbGRQbGFuKGN4dC0+cHN0YXRlLCBjaGlsZFBsYW5T cGVjLCBjb2x1bW5zKTsKKwl9CisKKwkvKiB0cmFuc2Zvcm0gb25seSBub24tbmVzdGVkIGNvbHVt bnMgKi8KKwlwbGFuID0gbWFrZVBhcmVudEpzb25UYWJsZVBsYW4oY3h0LCBwYXRoc3BlYywgY29s dW1ucyk7CisKKwlpZiAoY2hpbGRQbGFuU3BlYyB8fCBkZWZhdWx0UGxhbikKKwl7CisJCS8qIHRy YW5zZm9ybSByZWN1cnNpdmVseSBuZXN0ZWQgY29sdW1ucyAqLworCQlwbGFuLT5jaGlsZCA9IHRy YW5zZm9ybUpzb25UYWJsZUNoaWxkUGxhbihjeHQsIGNoaWxkUGxhblNwZWMsIGNvbHVtbnMpOwor CQlpZiAocGxhbi0+Y2hpbGQpCisJCQlwbGFuLT5vdXRlckpvaW4gPSBwbGFuc3BlYyA9PSBOVUxM IHx8CisJCQkJKHBsYW5zcGVjLT5qb2luX3R5cGUgJiBKU1RQSl9PVVRFUik7CisJCS8qIGVsc2U6 IGRlZmF1bHQgcGxhbiBjYXNlLCBubyBjaGlsZHJlbiBmb3VuZCAqLworCX0KKworCXJldHVybiBw bGFuOworfQorCisvKgorICogdHJhbnNmb3JtSnNvblRhYmxlIC0KKyAqCQkJVHJhbnNmb3JtIGEg cmF3IEpzb25UYWJsZSBpbnRvIFRhYmxlRnVuYy4KKyAqCisgKiBUcmFuc2Zvcm0gdGhlIGRvY3Vt ZW50LWdlbmVyYXRpbmcgZXhwcmVzc2lvbiwgdGhlIHJvdy1nZW5lcmF0aW5nIGV4cHJlc3Npb24s CisgKiB0aGUgY29sdW1uLWdlbmVyYXRpbmcgZXhwcmVzc2lvbnMsIGFuZCB0aGUgZGVmYXVsdCB2 YWx1ZSBleHByZXNzaW9ucy4KKyAqLworUGFyc2VOYW1lc3BhY2VJdGVtICoKK3RyYW5zZm9ybUpz b25UYWJsZShQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25UYWJsZSAqanQpCit7CisJSnNvblRhYmxl UGFyc2VDb250ZXh0IGN4dDsKKwlUYWJsZUZ1bmMgICp0ZiA9IG1ha2VOb2RlKFRhYmxlRnVuYyk7 CisJSnNvbkZ1bmNFeHByICpqZmUgPSBtYWtlTm9kZShKc29uRnVuY0V4cHIpOworCUpzb25FeHBy ICAgKmplOworCUpzb25UYWJsZVBsYW5TcGVjICpwbGFuID0ganQtPnBsYW5zcGVjOworCUpzb25U YWJsZVBhdGhTcGVjICpyb290UGF0aFNwZWMgPSBqdC0+cGF0aHNwZWM7CisJYm9vbAkJaXNfbGF0 ZXJhbDsKKworCUFzc2VydChJc0Eocm9vdFBhdGhTcGVjLT5zdHJpbmcsIEFfQ29uc3QpICYmCisJ CSAgIGNhc3ROb2RlKEFfQ29uc3QsIHJvb3RQYXRoU3BlYy0+c3RyaW5nKS0+dmFsLm5vZGUudHlw ZSA9PSBUX1N0cmluZyk7CisKKwljeHQucHN0YXRlID0gcHN0YXRlOworCWN4dC50YWJsZSA9IGp0 OworCWN4dC50YWJsZWZ1bmMgPSB0ZjsKKwljeHQucGF0aE5hbWVzID0gTklMOworCWN4dC5wYXRo TmFtZUlkID0gMDsKKworCWlmIChyb290UGF0aFNwZWMtPm5hbWUpCisJCXJlZ2lzdGVySnNvblRh YmxlUGF0aCgmY3h0LCByb290UGF0aFNwZWMtPm5hbWUsCisJCQkJCQkJICByb290UGF0aFNwZWMt Pm5hbWVfbG9jYXRpb24pOworCWVsc2UKKwl7CisJCWlmIChqdC0+cGxhbnNwZWMgIT0gTlVMTCkK KwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwK KwkJCQkJIGVycm1zZygiaW52YWxpZCBKU09OX1RBQkxFIGV4cHJlc3Npb24iKSwKKwkJCQkJIGVy cmRldGFpbCgiSlNPTl9UQUJMRSBwYXRoIG11c3QgY29udGFpbiIKKwkJCQkJCQkgICAiIGV4cGxp Y2l0IEFTIHBhdGhuYW1lIHNwZWNpZmljYXRpb24gaWYiCisJCQkJCQkJICAgIiBleHBsaWNpdCBQ TEFOIGNsYXVzZSBpcyB1c2VkIiksCisJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBy b290UGF0aFNwZWMtPmxvY2F0aW9uKSkpOworCisJCXJvb3RQYXRoU3BlYy0+bmFtZSA9IGdlbmVy YXRlSnNvblRhYmxlUGF0aE5hbWUoJmN4dCk7CisJfQorCisJcmVnaXN0ZXJBbGxKc29uVGFibGVD b2x1bW5zQW5kUGF0aHMoJmN4dCwganQtPmNvbHVtbnMpOworCisJamZlLT5vcCA9IEpTT05fVEFC TEVfT1A7CisJamZlLT5jb250ZXh0X2l0ZW0gPQlqdC0+Y29udGV4dF9pdGVtOworCWpmZS0+cGF0 aHNwZWMgPSAoTm9kZSAqKSByb290UGF0aFNwZWMtPnN0cmluZzsKKwlqZmUtPnBhdGhuYW1lID0g cm9vdFBhdGhTcGVjLT5uYW1lOworCWpmZS0+cGFzc2luZyA9IGp0LT5wYXNzaW5nOworCWpmZS0+ b25fZW1wdHkgPSBOVUxMOworCWpmZS0+b25fZXJyb3IgPSBqdC0+b25fZXJyb3I7CisJamZlLT5s b2NhdGlvbiA9IGp0LT5sb2NhdGlvbjsKKworCS8qCisJICogV2UgbWFrZSBsYXRlcmFsX29ubHkg bmFtZXMgb2YgdGhpcyBsZXZlbCB2aXNpYmxlLCB3aGV0aGVyIG9yIG5vdCB0aGUKKwkgKiBSYW5n ZVRhYmxlRnVuYyBpcyBleHBsaWNpdGx5IG1hcmtlZCBMQVRFUkFMLiAgVGhpcyBpcyBuZWVkZWQg Zm9yIFNRTAorCSAqIHNwZWMgY29tcGxpYW5jZSBhbmQgc2VlbXMgdXNlZnVsIG9uIGNvbnZlbmll bmNlIGdyb3VuZHMgZm9yIGFsbAorCSAqIGZ1bmN0aW9ucyBpbiBGUk9NLgorCSAqCisJICogKExB VEVSQUwgY2FuJ3QgbmVzdCB3aXRoaW4gYSBzaW5nbGUgcHN0YXRlIGxldmVsLCBzbyB3ZSBkb24n dCBuZWVkCisJICogc2F2ZS9yZXN0b3JlIGxvZ2ljIGhlcmUuKQorCSAqLworCUFzc2VydCghcHN0 YXRlLT5wX2xhdGVyYWxfYWN0aXZlKTsKKwlwc3RhdGUtPnBfbGF0ZXJhbF9hY3RpdmUgPSB0cnVl OworCisJdGYtPmZ1bmN0eXBlID0gVEZUX0pTT05fVEFCTEU7CisJdGYtPmRvY2V4cHIgPSB0cmFu c2Zvcm1FeHByKHBzdGF0ZSwgKE5vZGUgKikgamZlLCBFWFBSX0tJTkRfRlJPTV9GVU5DVElPTik7 CisKKwljeHQuY29udGV4dEl0ZW1UeXBpZCA9IGV4cHJUeXBlKHRmLT5kb2NleHByKTsKKworCXRm LT5wbGFuID0gKE5vZGUgKikgdHJhbnNmb3JtSnNvblRhYmxlQ29sdW1ucygmY3h0LCBwbGFuLCBq dC0+Y29sdW1ucywKKwkJCQkJCQkJCQkJCSAgcm9vdFBhdGhTcGVjKTsKKworCS8qIEFsc28gc2F2 ZSBhIGNvcHkgb2YgdGhlIFBBU1NJTkcgYXJndW1lbnRzIGluIHRoZSBUYWJsZUZ1bmMgbm9kZS4g Ki8KKwlqZSA9IChKc29uRXhwciAqKSB0Zi0+ZG9jZXhwcjsKKwl0Zi0+cGFzc2luZ3ZhbGV4cHJz ID0gY29weU9iamVjdChqZS0+cGFzc2luZ192YWx1ZXMpOworCisJdGYtPm9yZGluYWxpdHljb2wg PSAtMTsJCS8qIHVuZGVmaW5lIG9yZGluYWxpdHkgY29sdW1uIG51bWJlciAqLworCXRmLT5sb2Nh dGlvbiA9IGp0LT5sb2NhdGlvbjsKKworCXBzdGF0ZS0+cF9sYXRlcmFsX2FjdGl2ZSA9IGZhbHNl OworCisJLyoKKwkgKiBNYXJrIHRoZSBSVEUgYXMgTEFURVJBTCBpZiB0aGUgdXNlciBzYWlkIExB VEVSQUwgZXhwbGljaXRseSwgb3IgaWYKKwkgKiB0aGVyZSBhcmUgYW55IGxhdGVyYWwgY3Jvc3Mt cmVmZXJlbmNlcyBpbiBpdC4KKwkgKi8KKwlpc19sYXRlcmFsID0ganQtPmxhdGVyYWwgfHwgY29u dGFpbl92YXJzX29mX2xldmVsKChOb2RlICopIHRmLCAwKTsKKworCXJldHVybiBhZGRSYW5nZVRh YmxlRW50cnlGb3JUYWJsZUZ1bmMocHN0YXRlLAorCQkJCQkJCQkJCSAgdGYsIGp0LT5hbGlhcywg aXNfbGF0ZXJhbCwgdHJ1ZSk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfcmVsYXRpb24uYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jCmluZGV4 IDM0YTBlYzU5MDEuLjYyNTFjMzA5MzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9yZWxhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5j CkBAIC0yMDczLDcgKzIwNzMsOCBAQCBhZGRSYW5nZVRhYmxlRW50cnlGb3JUYWJsZUZ1bmMoUGFy c2VTdGF0ZSAqcHN0YXRlLAogCUFzc2VydChsaXN0X2xlbmd0aCh0Zi0+Y29sdHlwbW9kcykgPT0g bGlzdF9sZW5ndGgodGYtPmNvbG5hbWVzKSk7CiAJQXNzZXJ0KGxpc3RfbGVuZ3RoKHRmLT5jb2xj b2xsYXRpb25zKSA9PSBsaXN0X2xlbmd0aCh0Zi0+Y29sbmFtZXMpKTsKIAotCXJlZm5hbWUgPSBh bGlhcyA/IGFsaWFzLT5hbGlhc25hbWUgOiBwc3RyZHVwKCJ4bWx0YWJsZSIpOworCXJlZm5hbWUg PSBhbGlhcyA/IGFsaWFzLT5hbGlhc25hbWUgOgorCQlwc3RyZHVwKHRmLT5mdW5jdHlwZSA9PSBU RlRfWE1MVEFCTEUgPyAieG1sdGFibGUiIDogImpzb25fdGFibGUiKTsKIAogCXJ0ZS0+cnRla2lu ZCA9IFJURV9UQUJMRUZVTkM7CiAJcnRlLT5yZWxpZCA9IEludmFsaWRPaWQ7CkBAIC0yMDk2LDcg KzIwOTcsNyBAQCBhZGRSYW5nZVRhYmxlRW50cnlGb3JUYWJsZUZ1bmMoUGFyc2VTdGF0ZSAqcHN0 YXRlLAogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9DT0xV TU5fUkVGRVJFTkNFKSwKIAkJCQkgZXJybXNnKCIlcyBmdW5jdGlvbiBoYXMgJWQgY29sdW1ucyBh dmFpbGFibGUgYnV0ICVkIGNvbHVtbnMgc3BlY2lmaWVkIiwKLQkJCQkJCSJYTUxUQUJMRSIsCisJ CQkJCQl0Zi0+ZnVuY3R5cGUgPT0gVEZUX1hNTFRBQkxFID8gIlhNTFRBQkxFIiA6ICJKU09OX1RB QkxFIiwKIAkJCQkJCWxpc3RfbGVuZ3RoKHRmLT5jb2xuYW1lcyksIG51bWFsaWFzZXMpKSk7CiAK IAlydGUtPmVyZWYgPSBlcmVmOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X3RhcmdldC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCmluZGV4IGVhNWFj NmJhZmUuLmEzMzFlYTMyNzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90 YXJnZXQuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMKQEAgLTIwMDIs NiArMjAwMiw5IEBAIEZpZ3VyZUNvbG5hbWVJbnRlcm5hbChOb2RlICpub2RlLCBjaGFyICoqbmFt ZSkKIAkJCQljYXNlIEpTT05fVkFMVUVfT1A6CiAJCQkJCSpuYW1lID0gImpzb25fdmFsdWUiOwog CQkJCQlyZXR1cm4gMjsKKwkJCQljYXNlIEpTT05fVEFCTEVfT1A6CisJCQkJCSpuYW1lID0gImpz b25fdGFibGUiOworCQkJCQlyZXR1cm4gMjsKIAkJCX0KIAkJCWJyZWFrOwogCQlkZWZhdWx0Ogpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2V4ZWMuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9leGVjLmMKaW5kZXggNmQ2MWQ4N2YwMS4uN2E0ZmIz ZDI3YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2V4ZWMuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGhfZXhlYy5jCkBAIC02MSwxMCArNjEs MTIgQEAKIAogI2luY2x1ZGUgImNhdGFsb2cvcGdfY29sbGF0aW9uLmgiCiAjaW5jbHVkZSAiY2F0 YWxvZy9wZ190eXBlLmgiCisjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY0V4cHIuaCIKICNpbmNsdWRl ICJmdW5jYXBpLmgiCiAjaW5jbHVkZSAibGliL3N0cmluZ2luZm8uaCIKICNpbmNsdWRlICJtaXNj YWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9taXNjbm9kZXMuaCIKKyNpbmNsdWRlICJub2Rlcy9u b2RlRnVuY3MuaCIKICNpbmNsdWRlICJyZWdleC9yZWdleC5oIgogI2luY2x1ZGUgInV0aWxzL2J1 aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvZGF0ZS5oIgpAQCAtNzUsNiArNzcsOCBAQAogI2lu Y2x1ZGUgInV0aWxzL2d1Yy5oIgogI2luY2x1ZGUgInV0aWxzL2pzb24uaCIKICNpbmNsdWRlICJ1 dGlscy9qc29ucGF0aC5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgorI2luY2x1ZGUg InV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCiAjaW5jbHVk ZSAidXRpbHMvdmFybGVuYS5oIgogCkBAIC0xNTksNiArMTYzLDYwIEBAIHR5cGVkZWYgc3RydWN0 IEpzb25WYWx1ZUxpc3RJdGVyYXRvcgogCUxpc3RDZWxsICAgKm5leHQ7CiB9IEpzb25WYWx1ZUxp c3RJdGVyYXRvcjsKIAorLyogU3RydWN0dXJlcyBmb3IgSlNPTl9UQUJMRSBleGVjdXRpb24gICov CisKK3R5cGVkZWYgZW51bSBKc29uVGFibGVQbGFuU3RhdGVUeXBlCit7CisJSlNPTl9UQUJMRV9T Q0FOX1NUQVRFID0gMCwKKwlKU09OX1RBQkxFX0pPSU5fU1RBVEUsCit9CQkJSnNvblRhYmxlUGxh blN0YXRlVHlwZTsKKwordHlwZWRlZiBzdHJ1Y3QgSnNvblRhYmxlUGxhblN0YXRlCit7CisJSnNv blRhYmxlUGxhblN0YXRlVHlwZSB0eXBlOworCisJc3RydWN0IEpzb25UYWJsZVBsYW5TdGF0ZSAq cGFyZW50OworCXN0cnVjdCBKc29uVGFibGVQbGFuU3RhdGUgKm5lc3RlZDsKK30JCQlKc29uVGFi bGVQbGFuU3RhdGU7CisKK3R5cGVkZWYgc3RydWN0IEpzb25UYWJsZVNjYW5TdGF0ZQoreworCUpz b25UYWJsZVBsYW5TdGF0ZSBwbGFuOworCisJTWVtb3J5Q29udGV4dCBtY3h0OworCUpzb25QYXRo ICAgKnBhdGg7CisJTGlzdAkgICAqYXJnczsKKwlKc29uVmFsdWVMaXN0IGZvdW5kOworCUpzb25W YWx1ZUxpc3RJdGVyYXRvciBpdGVyOworCURhdHVtCQljdXJyZW50OworCWludAkJCW9yZGluYWw7 CisJYm9vbAkJY3VycmVudElzTnVsbDsKKwlib29sCQlvdXRlckpvaW47CisJYm9vbAkJZXJyb3JP bkVycm9yOworCWJvb2wJCWFkdmFuY2VOZXN0ZWQ7CisJYm9vbAkJcmVzZXQ7Cit9IEpzb25UYWJs ZVNjYW5TdGF0ZTsKKwordHlwZWRlZiBzdHJ1Y3QgSnNvblRhYmxlSm9pblN0YXRlCit7CisJSnNv blRhYmxlUGxhblN0YXRlIHBsYW47CisKKwlKc29uVGFibGVQbGFuU3RhdGUgKmxlZnQ7CisJSnNv blRhYmxlUGxhblN0YXRlICpyaWdodDsKKwlib29sCQljcm9zczsKKwlib29sCQlhZHZhbmNlUmln aHQ7Cit9IEpzb25UYWJsZUpvaW5TdGF0ZTsKKworLyogcmFuZG9tIG51bWJlciB0byBpZGVudGlm eSBKc29uVGFibGVFeGVjQ29udGV4dCAqLworI2RlZmluZSBKU09OX1RBQkxFX0VYRUNfQ09OVEVY VF9NQUdJQwkJNDE4MzUyODY3CisKK3R5cGVkZWYgc3RydWN0IEpzb25UYWJsZUV4ZWNDb250ZXh0 Cit7CisJaW50CQkJbWFnaWM7CisJSnNvblRhYmxlU2NhblN0YXRlICoqY29sZXhwcnNjYW5zOwor CUpzb25UYWJsZVNjYW5TdGF0ZSAqcm9vdDsKK30JCQlKc29uVGFibGVFeGVjQ29udGV4dDsKKwog Lyogc3RyaWN0L2xheCBmbGFncyBpcyBkZWNvbXBvc2VkIGludG8gZm91ciBbdW5dd3JhcC9lcnJv ciBmbGFncyAqLwogI2RlZmluZSBqc3BTdHJpY3RBYnNlbmNlT2ZFcnJvcnMoY3h0KQkoIShjeHQp LT5sYXhNb2RlKQogI2RlZmluZSBqc3BBdXRvVW53cmFwKGN4dCkJCQkJKChjeHQpLT5sYXhNb2Rl KQpAQCAtMjU4LDYgKzMxNiw3IEBAIHN0YXRpYyBKc29uUGF0aEV4ZWNSZXN1bHQgZ2V0QXJyYXlJ bmRleChKc29uUGF0aEV4ZWNDb250ZXh0ICpjeHQsCiAJCQkJCQkJCQkJSnNvblBhdGhJdGVtICpq c3AsIEpzb25iVmFsdWUgKmpiLCBpbnQzMiAqaW5kZXgpOwogc3RhdGljIEpzb25CYXNlT2JqZWN0 SW5mbyBzZXRCYXNlT2JqZWN0KEpzb25QYXRoRXhlY0NvbnRleHQgKmN4dCwKIAkJCQkJCQkJCQlK c29uYlZhbHVlICpqYnYsIGludDMyIGlkKTsKK3N0YXRpYyB2b2lkIEpzb25WYWx1ZUxpc3RDbGVh cihKc29uVmFsdWVMaXN0ICpqdmwpOwogc3RhdGljIHZvaWQgSnNvblZhbHVlTGlzdEFwcGVuZChK c29uVmFsdWVMaXN0ICpqdmwsIEpzb25iVmFsdWUgKmpidik7CiBzdGF0aWMgaW50CUpzb25WYWx1 ZUxpc3RMZW5ndGgoY29uc3QgSnNvblZhbHVlTGlzdCAqanZsKTsKIHN0YXRpYyBib29sIEpzb25W YWx1ZUxpc3RJc0VtcHR5KEpzb25WYWx1ZUxpc3QgKmp2bCk7CkBAIC0yNzUsNiArMzM0LDMyIEBA IHN0YXRpYyBKc29uYlZhbHVlICp3cmFwSXRlbXNJbkFycmF5KGNvbnN0IEpzb25WYWx1ZUxpc3Qg Kml0ZW1zKTsKIHN0YXRpYyBpbnQJY29tcGFyZURhdGV0aW1lKERhdHVtIHZhbDEsIE9pZCB0eXBp ZDEsIERhdHVtIHZhbDIsIE9pZCB0eXBpZDIsCiAJCQkJCQkJYm9vbCB1c2VUeiwgYm9vbCAqY2Fz dF9lcnJvcik7CiAKKworc3RhdGljIEpzb25UYWJsZVBsYW5TdGF0ZSAqIEpzb25UYWJsZUluaXRQ bGFuU3RhdGUoSnNvblRhYmxlRXhlY0NvbnRleHQgKiBjeHQsCisJCQkJCQkJCQkJCQkgICBOb2Rl ICpwbGFuLAorCQkJCQkJCQkJCQkJICAgSnNvblRhYmxlUGxhblN0YXRlICogcGFyZW50KTsKK3N0 YXRpYyBib29sIEpzb25UYWJsZVBsYW5OZXh0Um93KEpzb25UYWJsZVBsYW5TdGF0ZSAqIHN0YXRl KTsKK3N0YXRpYyBib29sIEpzb25UYWJsZVNjYW5OZXh0Um93KEpzb25UYWJsZVNjYW5TdGF0ZSAq c2Nhbik7CisKK3N0YXRpYyB2b2lkIEpzb25UYWJsZUluaXRPcGFxdWUoVGFibGVGdW5jU2NhblN0 YXRlICpzdGF0ZSwgaW50IG5hdHRzKTsKK3N0YXRpYyB2b2lkIEpzb25UYWJsZVNldERvY3VtZW50 KFRhYmxlRnVuY1NjYW5TdGF0ZSAqc3RhdGUsIERhdHVtIHZhbHVlKTsKK3N0YXRpYyBib29sIEpz b25UYWJsZUZldGNoUm93KFRhYmxlRnVuY1NjYW5TdGF0ZSAqc3RhdGUpOworc3RhdGljIERhdHVt IEpzb25UYWJsZUdldFZhbHVlKFRhYmxlRnVuY1NjYW5TdGF0ZSAqc3RhdGUsIGludCBjb2xudW0s CisJCQkJICBPaWQgdHlwaWQsIGludDMyIHR5cG1vZCwgYm9vbCAqaXNudWxsKTsKK3N0YXRpYyB2 b2lkIEpzb25UYWJsZURlc3Ryb3lPcGFxdWUoVGFibGVGdW5jU2NhblN0YXRlICpzdGF0ZSk7CisK K2NvbnN0IFRhYmxlRnVuY1JvdXRpbmUgSnNvbmJUYWJsZVJvdXRpbmUgPQoreworCUpzb25UYWJs ZUluaXRPcGFxdWUsCisJSnNvblRhYmxlU2V0RG9jdW1lbnQsCisJTlVMTCwKKwlOVUxMLAorCU5V TEwsCisJSnNvblRhYmxlRmV0Y2hSb3csCisJSnNvblRhYmxlR2V0VmFsdWUsCisJSnNvblRhYmxl RGVzdHJveU9wYXF1ZQorfTsKKwogLyoqKioqKioqKioqKioqKioqKiBVc2VyIGludGVyZmFjZSB0 byBKc29uUGF0aCBleGVjdXRvciAqKioqKioqKioqKioqKioqKioqKi8KIAogLyoKQEAgLTI2NjEs NiArMjc0NiwxMyBAQCBzZXRCYXNlT2JqZWN0KEpzb25QYXRoRXhlY0NvbnRleHQgKmN4dCwgSnNv bmJWYWx1ZSAqamJ2LCBpbnQzMiBpZCkKIAlyZXR1cm4gYmFzZU9iamVjdDsKIH0KIAorc3RhdGlj IHZvaWQKK0pzb25WYWx1ZUxpc3RDbGVhcihKc29uVmFsdWVMaXN0ICpqdmwpCit7CisJanZsLT5z aW5nbGV0b24gPSBOVUxMOworCWp2bC0+bGlzdCA9IE5VTEw7Cit9CisKIHN0YXRpYyB2b2lkCiBK c29uVmFsdWVMaXN0QXBwZW5kKEpzb25WYWx1ZUxpc3QgKmp2bCwgSnNvbmJWYWx1ZSAqamJ2KQog ewpAQCAtMzE5NiwzICszMjg4LDQ1OCBAQCBKc29uUGF0aFZhbHVlKERhdHVtIGpiLCBKc29uUGF0 aCAqanAsIGJvb2wgKmVtcHR5LCBib29sICplcnJvciwgTGlzdCAqdmFycykKIAogCXJldHVybiBy ZXM7CiB9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKiogSlNPTl9UQUJMRSBmdW5jdGlvbnMg KioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICogUmV0dXJucyBwcml2YXRlIGRh dGEgZnJvbSBleGVjdXRvciBzdGF0ZS4gRW5zdXJlIHZhbGlkaXR5IGJ5IGNoZWNrIHdpdGgKKyAq IE1BR0lDIG51bWJlci4KKyAqLworc3RhdGljIGlubGluZSBKc29uVGFibGVFeGVjQ29udGV4dCAq CitHZXRKc29uVGFibGVFeGVjQ29udGV4dChUYWJsZUZ1bmNTY2FuU3RhdGUgKnN0YXRlLCBjb25z dCBjaGFyICpmbmFtZSkKK3sKKwlKc29uVGFibGVFeGVjQ29udGV4dCAqcmVzdWx0OworCisJaWYg KCFJc0Eoc3RhdGUsIFRhYmxlRnVuY1NjYW5TdGF0ZSkpCisJCWVsb2coRVJST1IsICIlcyBjYWxs ZWQgd2l0aCBpbnZhbGlkIFRhYmxlRnVuY1NjYW5TdGF0ZSIsIGZuYW1lKTsKKwlyZXN1bHQgPSAo SnNvblRhYmxlRXhlY0NvbnRleHQgKikgc3RhdGUtPm9wYXF1ZTsKKwlpZiAocmVzdWx0LT5tYWdp YyAhPSBKU09OX1RBQkxFX0VYRUNfQ09OVEVYVF9NQUdJQykKKwkJZWxvZyhFUlJPUiwgIiVzIGNh bGxlZCB3aXRoIGludmFsaWQgVGFibGVGdW5jU2NhblN0YXRlIiwgZm5hbWUpOworCisJcmV0dXJu IHJlc3VsdDsKK30KKworLyogUmVjdXJzaXZlbHkgaW5pdGlhbGl6ZSBKU09OX1RBQkxFIHNjYW4g LyBqb2luIHN0YXRlICovCitzdGF0aWMgSnNvblRhYmxlSm9pblN0YXRlICoKK0pzb25UYWJsZUlu aXRKb2luU3RhdGUoSnNvblRhYmxlRXhlY0NvbnRleHQgKiBjeHQsIEpzb25UYWJsZVNpYmxpbmcg KnBsYW4sCisJCQkJCSAgIEpzb25UYWJsZVBsYW5TdGF0ZSAqIHBhcmVudCkKK3sKKwlKc29uVGFi bGVKb2luU3RhdGUgKmpvaW4gPSBwYWxsb2MwKHNpemVvZigqam9pbikpOworCisJam9pbi0+cGxh bi50eXBlID0gSlNPTl9UQUJMRV9KT0lOX1NUQVRFOworCS8qIHBhcmVudCBhbmQgbmVzdGVkIG5v dCBzZXQuICovCisKKwlqb2luLT5jcm9zcyA9IHBsYW4tPmNyb3NzOworCWpvaW4tPmxlZnQgPSBK c29uVGFibGVJbml0UGxhblN0YXRlKGN4dCwgcGxhbi0+bGFyZywgcGFyZW50KTsKKwlqb2luLT5y aWdodCA9IEpzb25UYWJsZUluaXRQbGFuU3RhdGUoY3h0LCBwbGFuLT5yYXJnLCBwYXJlbnQpOwor CisJcmV0dXJuIGpvaW47Cit9CisKK3N0YXRpYyBKc29uVGFibGVTY2FuU3RhdGUgKgorSnNvblRh YmxlSW5pdFNjYW5TdGF0ZShKc29uVGFibGVFeGVjQ29udGV4dCAqIGN4dCwKKwkJCQkJICAgSnNv blRhYmxlUGxhbiAqcGxhbiwKKwkJCQkJICAgSnNvblRhYmxlUGxhblN0YXRlICpwYXJlbnQsCisJ CQkJCSAgIExpc3QgKmFyZ3MsIE1lbW9yeUNvbnRleHQgbWN4dCkKK3sKKwlKc29uVGFibGVTY2Fu U3RhdGUgKnNjYW4gPSBwYWxsb2MwKHNpemVvZigqc2NhbikpOworCWludAkJCWk7CisKKwlzY2Fu LT5wbGFuLnR5cGUgPSBKU09OX1RBQkxFX1NDQU5fU1RBVEU7CisJc2Nhbi0+cGxhbi5wYXJlbnQg PSBwYXJlbnQ7CisKKwlzY2FuLT5vdXRlckpvaW4gPSBwbGFuLT5vdXRlckpvaW47CisJc2Nhbi0+ ZXJyb3JPbkVycm9yID0gcGxhbi0+ZXJyb3JPbkVycm9yOworCXNjYW4tPnBhdGggPSBEYXR1bUdl dEpzb25QYXRoUChwbGFuLT5wYXRoLT52YWx1ZS0+Y29uc3R2YWx1ZSk7CisJc2Nhbi0+YXJncyA9 IGFyZ3M7CisJc2Nhbi0+bWN4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShtY3h0LCAiSnNvblRh YmxlRXhlY0NvbnRleHQiLAorCQkJCQkJCQkJICAgQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CisK KwkvKgorCSAqIFNldCBhZnRlciBzZXR0aW5ncyBzY2FuLT5hcmdzIGFuZCBzY2FuLT5tY3h0LCBi ZWNhdXNlIHRoZSByZWN1cnNpdmUKKwkgKiBjYWxsIHdhbnRzIHRvIHVzZSB0aG9zZSB2YWx1ZXMu CisJICovCisJc2Nhbi0+cGxhbi5uZXN0ZWQgPSBwbGFuLT5jaGlsZCA/CisJCUpzb25UYWJsZUlu aXRQbGFuU3RhdGUoY3h0LCBwbGFuLT5jaGlsZCwgKEpzb25UYWJsZVBsYW5TdGF0ZSAqKSBzY2Fu KSA6CisJCU5VTEw7CisKKwlzY2FuLT5jdXJyZW50ID0gUG9pbnRlckdldERhdHVtKE5VTEwpOwor CXNjYW4tPmN1cnJlbnRJc051bGwgPSB0cnVlOworCisJZm9yIChpID0gcGxhbi0+Y29sTWluOyBp IDw9IHBsYW4tPmNvbE1heDsgaSsrKQorCQljeHQtPmNvbGV4cHJzY2Fuc1tpXSA9IHNjYW47CisK KwlyZXR1cm4gc2NhbjsKK30KKworLyogUmVjdXJzaXZlbHkgaW5pdGlhbGl6ZSBKU09OX1RBQkxF IHNjYW4gc3RhdGUgKi8KK3N0YXRpYyBKc29uVGFibGVQbGFuU3RhdGUgKgorSnNvblRhYmxlSW5p dFBsYW5TdGF0ZShKc29uVGFibGVFeGVjQ29udGV4dCAqIGN4dCwgTm9kZSAqcGxhbiwKKwkJCQkJ ICAgSnNvblRhYmxlUGxhblN0YXRlICogcGFyZW50KQoreworCUpzb25UYWJsZVBsYW5TdGF0ZSAq c3RhdGU7CisKKwlpZiAoSXNBKHBsYW4sIEpzb25UYWJsZVNpYmxpbmcpKQorCXsKKwkJSnNvblRh YmxlU2libGluZyAqam9pbiA9IChKc29uVGFibGVTaWJsaW5nICopIHBsYW47CisKKwkJc3RhdGUg PSAoSnNvblRhYmxlUGxhblN0YXRlICopCisJCQlKc29uVGFibGVJbml0Sm9pblN0YXRlKGN4dCwg am9pbiwgcGFyZW50KTsKKwl9CisJZWxzZQorCXsKKwkJSnNvblRhYmxlUGxhbiAqc2NhbiA9IGNh c3ROb2RlKEpzb25UYWJsZVBsYW4sIHBsYW4pOworCQlKc29uVGFibGVTY2FuU3RhdGUgKnBhcmVu dF9zY2FuID0gKEpzb25UYWJsZVNjYW5TdGF0ZSAqKSBwYXJlbnQ7CisKKwkJQXNzZXJ0KHBhcmVu dF9zY2FuKTsKKwkJc3RhdGUgPSAoSnNvblRhYmxlUGxhblN0YXRlICopCisJCQlKc29uVGFibGVJ bml0U2NhblN0YXRlKGN4dCwgc2NhbiwgcGFyZW50LCBwYXJlbnRfc2Nhbi0+YXJncywKKwkJCQkJ CQkJICAgcGFyZW50X3NjYW4tPm1jeHQpOworCX0KKworCXJldHVybiBzdGF0ZTsKK30KKworLyoK KyAqIEpzb25UYWJsZUluaXRPcGFxdWUKKyAqCQlGaWxsIGluIFRhYmxlRnVuY1NjYW5TdGF0ZS0+ b3BhcXVlIGZvciBKc29uVGFibGUgcHJvY2Vzc29yCisgKi8KK3N0YXRpYyB2b2lkCitKc29uVGFi bGVJbml0T3BhcXVlKFRhYmxlRnVuY1NjYW5TdGF0ZSAqc3RhdGUsIGludCBuYXR0cykKK3sKKwlK c29uVGFibGVFeGVjQ29udGV4dCAqY3h0OworCVBsYW5TdGF0ZSAgKnBzID0gJnN0YXRlLT5zcy5w czsKKwlUYWJsZUZ1bmNTY2FuICp0ZnMgPSBjYXN0Tm9kZShUYWJsZUZ1bmNTY2FuLCBwcy0+cGxh bik7CisJVGFibGVGdW5jICAqdGYgPSB0ZnMtPnRhYmxlZnVuYzsKKwlKc29uVGFibGVQbGFuICpy b290ID0gY2FzdE5vZGUoSnNvblRhYmxlUGxhbiwgdGYtPnBsYW4pOworCUpzb25FeHByICAgKmpl ID0gY2FzdE5vZGUoSnNvbkV4cHIsIHRmLT5kb2NleHByKTsKKwlMaXN0CSAgICphcmdzID0gTklM OworCisJY3h0ID0gcGFsbG9jMChzaXplb2YoSnNvblRhYmxlRXhlY0NvbnRleHQpKTsKKwljeHQt Pm1hZ2ljID0gSlNPTl9UQUJMRV9FWEVDX0NPTlRFWFRfTUFHSUM7CisKKwlpZiAoc3RhdGUtPnBh c3Npbmd2YWxleHBycykKKwl7CisJCUxpc3RDZWxsICAgKmV4cHJsYzsKKwkJTGlzdENlbGwgICAq bmFtZWxjOworCisJCUFzc2VydChsaXN0X2xlbmd0aChzdGF0ZS0+cGFzc2luZ3ZhbGV4cHJzKSA9 PQorCQkJICAgbGlzdF9sZW5ndGgoamUtPnBhc3NpbmdfbmFtZXMpKTsKKwkJZm9yYm90aChleHBy bGMsIHN0YXRlLT5wYXNzaW5ndmFsZXhwcnMsCisJCQkJbmFtZWxjLCBqZS0+cGFzc2luZ19uYW1l cykKKwkJeworCQkJRXhwclN0YXRlICAqc3RhdGUgPSBsZmlyc3Rfbm9kZShFeHByU3RhdGUsIGV4 cHJsYyk7CisJCQlTdHJpbmcJICAgKm5hbWUgPSBsZmlyc3Rfbm9kZShTdHJpbmcsIG5hbWVsYyk7 CisJCQlKc29uUGF0aFZhcmlhYmxlICp2YXIgPSBwYWxsb2Moc2l6ZW9mKCp2YXIpKTsKKworCQkJ dmFyLT5uYW1lID0gcHN0cmR1cChuYW1lLT5zdmFsKTsKKwkJCXZhci0+dHlwaWQgPSBleHByVHlw ZSgoTm9kZSAqKSBzdGF0ZS0+ZXhwcik7CisJCQl2YXItPnR5cG1vZCA9IGV4cHJUeXBtb2QoKE5v ZGUgKikgc3RhdGUtPmV4cHIpOworCisJCQkvKgorCQkJICogRXZhbHVhdGUgdGhlIGV4cHJlc3Np b24gYW5kIHNhdmUgdGhlIHZhbHVlIHRvIGJlIHJldHVybmVkIGJ5CisJCQkgKiBHZXRKc29uUGF0 aFZhcigpLgorCQkJICovCisJCQl2YXItPnZhbHVlID0gRXhlY0V2YWxFeHByKHN0YXRlLCBwcy0+ cHNfRXhwckNvbnRleHQsCisJCQkJCQkJCQkgICZ2YXItPmlzbnVsbCk7CisKKwkJCWFyZ3MgPSBs YXBwZW5kKGFyZ3MsIHZhcik7CisJCX0KKwl9CisKKwljeHQtPmNvbGV4cHJzY2FucyA9IHBhbGxv YyhzaXplb2YoSnNvblRhYmxlU2NhblN0YXRlICopICoKKwkJCQkJCQkgICBsaXN0X2xlbmd0aCh0 Zi0+Y29sdmFsZXhwcnMpKTsKKworCWN4dC0+cm9vdCA9IEpzb25UYWJsZUluaXRTY2FuU3RhdGUo Y3h0LCByb290LCBOVUxMLCBhcmdzLAorCQkJCQkJCQkJICAgQ3VycmVudE1lbW9yeUNvbnRleHQp OworCXN0YXRlLT5vcGFxdWUgPSBjeHQ7Cit9CisKKy8qIFJlc2V0IHNjYW4gaXRlcmF0b3IgdG8g dGhlIGJlZ2lubmluZyBvZiB0aGUgaXRlbSBsaXN0ICovCitzdGF0aWMgdm9pZAorSnNvblRhYmxl UmVzY2FuKEpzb25UYWJsZVNjYW5TdGF0ZSAqc2NhbikKK3sKKwlKc29uVmFsdWVMaXN0SW5pdEl0 ZXJhdG9yKCZzY2FuLT5mb3VuZCwgJnNjYW4tPml0ZXIpOworCXNjYW4tPmN1cnJlbnQgPSBQb2lu dGVyR2V0RGF0dW0oTlVMTCk7CisJc2Nhbi0+Y3VycmVudElzTnVsbCA9IHRydWU7CisJc2Nhbi0+ YWR2YW5jZU5lc3RlZCA9IGZhbHNlOworCXNjYW4tPm9yZGluYWwgPSAwOworfQorCisvKiBSZXNl dCBjb250ZXh0IGl0ZW0gb2YgYSBzY2FuLCBleGVjdXRlIEpTT04gcGF0aCBhbmQgcmVzZXQgYSBz Y2FuICovCitzdGF0aWMgdm9pZAorSnNvblRhYmxlUmVzZXRDb250ZXh0SXRlbShKc29uVGFibGVT Y2FuU3RhdGUgKnNjYW4sIERhdHVtIGl0ZW0pCit7CisJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CisJ SnNvblBhdGhFeGVjUmVzdWx0IHJlczsKKwlKc29uYgkgICAqanMgPSAoSnNvbmIgKikgRGF0dW1H ZXRKc29uYlAoaXRlbSk7CisKKwlKc29uVmFsdWVMaXN0Q2xlYXIoJnNjYW4tPmZvdW5kKTsKKwor CU1lbW9yeUNvbnRleHRSZXNldE9ubHkoc2Nhbi0+bWN4dCk7CisKKwlvbGRjeHQgPSBNZW1vcnlD b250ZXh0U3dpdGNoVG8oc2Nhbi0+bWN4dCk7CisKKwlyZXMgPSBleGVjdXRlSnNvblBhdGgoc2Nh bi0+cGF0aCwgc2Nhbi0+YXJncywKKwkJCQkJCSAgR2V0SnNvblBhdGhWYXIsIENvdW50SnNvblBh dGhWYXJzLAorCQkJCQkJICBqcywgc2Nhbi0+ZXJyb3JPbkVycm9yLCAmc2Nhbi0+Zm91bmQsCisJ CQkJCQkgIGZhbHNlIC8qIEZJWE1FICovICk7CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xk Y3h0KTsKKworCWlmIChqcGVySXNFcnJvcihyZXMpKQorCXsKKwkJQXNzZXJ0KCFzY2FuLT5lcnJv ck9uRXJyb3IpOworCQlKc29uVmFsdWVMaXN0Q2xlYXIoJnNjYW4tPmZvdW5kKTsJLyogRU1QVFkg T04gRVJST1IgY2FzZSAqLworCX0KKworCUpzb25UYWJsZVJlc2NhbihzY2FuKTsKK30KKworLyoK KyAqIEpzb25UYWJsZVNldERvY3VtZW50CisgKgkJSW5zdGFsbCB0aGUgaW5wdXQgZG9jdW1lbnQK KyAqLworc3RhdGljIHZvaWQKK0pzb25UYWJsZVNldERvY3VtZW50KFRhYmxlRnVuY1NjYW5TdGF0 ZSAqc3RhdGUsIERhdHVtIHZhbHVlKQoreworCUpzb25UYWJsZUV4ZWNDb250ZXh0ICpjeHQgPQor CQlHZXRKc29uVGFibGVFeGVjQ29udGV4dChzdGF0ZSwgIkpzb25UYWJsZVNldERvY3VtZW50Iik7 CisKKwlKc29uVGFibGVSZXNldENvbnRleHRJdGVtKGN4dC0+cm9vdCwgdmFsdWUpOworfQorCisv KiBSZWN1cnNpdmVseSByZXNldCBzY2FuIGFuZCBpdHMgY2hpbGQgbm9kZXMgKi8KK3N0YXRpYyB2 b2lkCitKc29uVGFibGVSZXNjYW5SZWN1cnNpdmUoSnNvblRhYmxlUGxhblN0YXRlICogc3RhdGUp Cit7CisJaWYgKHN0YXRlLT50eXBlID09IEpTT05fVEFCTEVfSk9JTl9TVEFURSkKKwl7CisJCUpz b25UYWJsZUpvaW5TdGF0ZSAqam9pbiA9IChKc29uVGFibGVKb2luU3RhdGUgKikgc3RhdGU7CisK KwkJSnNvblRhYmxlUmVzY2FuUmVjdXJzaXZlKGpvaW4tPmxlZnQpOworCQlKc29uVGFibGVSZXNj YW5SZWN1cnNpdmUoam9pbi0+cmlnaHQpOworCQlqb2luLT5hZHZhbmNlUmlnaHQgPSBmYWxzZTsK Kwl9CisJZWxzZQorCXsKKwkJSnNvblRhYmxlU2NhblN0YXRlICpzY2FuID0gKEpzb25UYWJsZVNj YW5TdGF0ZSAqKSBzdGF0ZTsKKworCQlBc3NlcnQoc3RhdGUtPnR5cGUgPT0gSlNPTl9UQUJMRV9T Q0FOX1NUQVRFKTsKKwkJSnNvblRhYmxlUmVzY2FuKHNjYW4pOworCQlpZiAoc2Nhbi0+cGxhbi5u ZXN0ZWQpCisJCQlKc29uVGFibGVSZXNjYW5SZWN1cnNpdmUoc2Nhbi0+cGxhbi5uZXN0ZWQpOwor CX0KK30KKworLyoKKyAqIEZldGNoIG5leHQgcm93IGZyb20gYSBjcm9zcy91bmlvbiBqb2luZWQg c2Nhbi4KKyAqCisgKiBSZXR1cm5zIGZhbHNlIGF0IHRoZSBlbmQgb2YgYSBzY2FuLCB0cnVlIG90 aGVyd2lzZS4KKyAqLworc3RhdGljIGJvb2wKK0pzb25UYWJsZVBsYW5OZXh0Um93KEpzb25UYWJs ZVBsYW5TdGF0ZSAqIHN0YXRlKQoreworCUpzb25UYWJsZUpvaW5TdGF0ZSAqam9pbjsKKworCWlm IChzdGF0ZS0+dHlwZSA9PSBKU09OX1RBQkxFX1NDQU5fU1RBVEUpCisJCXJldHVybiBKc29uVGFi bGVTY2FuTmV4dFJvdygoSnNvblRhYmxlU2NhblN0YXRlICopIHN0YXRlKTsKKworCWpvaW4gPSAo SnNvblRhYmxlSm9pblN0YXRlICopIHN0YXRlOworCWlmIChqb2luLT5hZHZhbmNlUmlnaHQpCisJ eworCQkvKiBmZXRjaCBuZXh0IGlubmVyIHJvdyAqLworCQlpZiAoSnNvblRhYmxlUGxhbk5leHRS b3coam9pbi0+cmlnaHQpKQorCQkJcmV0dXJuIHRydWU7CisKKwkJLyogaW5uZXIgcm93cyBhcmUg ZXhoYXVzdGVkICovCisJCWlmIChqb2luLT5jcm9zcykKKwkJCWpvaW4tPmFkdmFuY2VSaWdodCA9 IGZhbHNlOyAvKiBuZXh0IG91dGVyIHJvdyAqLworCQllbHNlCisJCQlyZXR1cm4gZmFsc2U7CQkv KiBlbmQgb2Ygc2NhbiAqLworCX0KKworCXdoaWxlICgham9pbi0+YWR2YW5jZVJpZ2h0KQorCXsK KwkJLyogZmV0Y2ggbmV4dCBvdXRlciByb3cgKi8KKwkJYm9vbAkJbW9yZSA9IEpzb25UYWJsZVBs YW5OZXh0Um93KGpvaW4tPmxlZnQpOworCisJCWlmIChqb2luLT5jcm9zcykKKwkJeworCQkJaWYg KCFtb3JlKQorCQkJCXJldHVybiBmYWxzZTsJLyogZW5kIG9mIHNjYW4gKi8KKworCQkJSnNvblRh YmxlUmVzY2FuUmVjdXJzaXZlKGpvaW4tPnJpZ2h0KTsKKworCQkJaWYgKCFKc29uVGFibGVQbGFu TmV4dFJvdyhqb2luLT5yaWdodCkpCisJCQkJY29udGludWU7CQkvKiBuZXh0IG91dGVyIHJvdyAq LworCisJCQlqb2luLT5hZHZhbmNlUmlnaHQgPSB0cnVlOwkvKiBuZXh0IGlubmVyIHJvdyAqLwor CQl9CisJCWVsc2UgaWYgKCFtb3JlKQorCQl7CisJCQlpZiAoIUpzb25UYWJsZVBsYW5OZXh0Um93 KGpvaW4tPnJpZ2h0KSkKKwkJCQlyZXR1cm4gZmFsc2U7CS8qIGVuZCBvZiBzY2FuICovCisKKwkJ CWpvaW4tPmFkdmFuY2VSaWdodCA9IHRydWU7CS8qIG5leHQgaW5uZXIgcm93ICovCisJCX0KKwor CQlicmVhazsKKwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworLyogUmVjdXJzaXZlbHkgc2V0ICdy ZXNldCcgZmxhZyBvZiBzY2FuIGFuZCBpdHMgY2hpbGQgbm9kZXMgKi8KK3N0YXRpYyB2b2lkCitK c29uVGFibGVQbGFuUmVzZXQoSnNvblRhYmxlUGxhblN0YXRlICogc3RhdGUpCit7CisJaWYgKHN0 YXRlLT50eXBlID09IEpTT05fVEFCTEVfSk9JTl9TVEFURSkKKwl7CisJCUpzb25UYWJsZUpvaW5T dGF0ZSAqam9pbiA9IChKc29uVGFibGVKb2luU3RhdGUgKikgc3RhdGU7CisKKwkJSnNvblRhYmxl UGxhblJlc2V0KGpvaW4tPmxlZnQpOworCQlKc29uVGFibGVQbGFuUmVzZXQoam9pbi0+cmlnaHQp OworCQlqb2luLT5hZHZhbmNlUmlnaHQgPSBmYWxzZTsKKwl9CisJZWxzZQorCXsKKwkJSnNvblRh YmxlU2NhblN0YXRlICpzY2FuOworCisJCUFzc2VydChzdGF0ZS0+dHlwZSA9PSBKU09OX1RBQkxF X1NDQU5fU1RBVEUpOworCQlzY2FuID0gKEpzb25UYWJsZVNjYW5TdGF0ZSAqKSBzdGF0ZTsKKwkJ c2Nhbi0+cmVzZXQgPSB0cnVlOworCQlzY2FuLT5hZHZhbmNlTmVzdGVkID0gZmFsc2U7CisKKwkJ aWYgKHNjYW4tPnBsYW4ubmVzdGVkKQorCQkJSnNvblRhYmxlUGxhblJlc2V0KHNjYW4tPnBsYW4u bmVzdGVkKTsKKwl9Cit9CisKKy8qCisgKiBGZXRjaCBuZXh0IHJvdyBmcm9tIGEgc2ltcGxlIHNj YW4gd2l0aCBvdXRlci9pbm5lciBqb2luZWQgbmVzdGVkIHN1YnNjYW5zLgorICoKKyAqIFJldHVy bnMgZmFsc2UgYXQgdGhlIGVuZCBvZiBhIHNjYW4sIHRydWUgb3RoZXJ3aXNlLgorICovCitzdGF0 aWMgYm9vbAorSnNvblRhYmxlU2Nhbk5leHRSb3coSnNvblRhYmxlU2NhblN0YXRlICpzY2FuKQor eworCS8qIHJlc2V0IGNvbnRleHQgaXRlbSBpZiByZXF1ZXN0ZWQgKi8KKwlpZiAoc2Nhbi0+cmVz ZXQpCisJeworCQlKc29uVGFibGVTY2FuU3RhdGUgKnBhcmVudF9zY2FuID0KKwkJCShKc29uVGFi bGVTY2FuU3RhdGUgKikgc2Nhbi0+cGxhbi5wYXJlbnQ7CisKKwkJQXNzZXJ0KHBhcmVudF9zY2Fu ICYmICFwYXJlbnRfc2Nhbi0+Y3VycmVudElzTnVsbCk7CisJCUpzb25UYWJsZVJlc2V0Q29udGV4 dEl0ZW0oc2NhbiwgcGFyZW50X3NjYW4tPmN1cnJlbnQpOworCQlzY2FuLT5yZXNldCA9IGZhbHNl OworCX0KKworCWlmIChzY2FuLT5hZHZhbmNlTmVzdGVkKQorCXsKKwkJLyogZmV0Y2ggbmV4dCBu ZXN0ZWQgcm93ICovCisJCXNjYW4tPmFkdmFuY2VOZXN0ZWQgPSBKc29uVGFibGVQbGFuTmV4dFJv dyhzY2FuLT5wbGFuLm5lc3RlZCk7CisKKwkJaWYgKHNjYW4tPmFkdmFuY2VOZXN0ZWQpCisJCQly ZXR1cm4gdHJ1ZTsKKwl9CisKKwlmb3IgKDs7KQorCXsKKwkJLyogZmV0Y2ggbmV4dCByb3cgKi8K KwkJSnNvbmJWYWx1ZSAqamJ2ID0gSnNvblZhbHVlTGlzdE5leHQoJnNjYW4tPmZvdW5kLCAmc2Nh bi0+aXRlcik7CisJCU1lbW9yeUNvbnRleHQgb2xkY3h0OworCisJCWlmICghamJ2KQorCQl7CisJ CQlzY2FuLT5jdXJyZW50ID0gUG9pbnRlckdldERhdHVtKE5VTEwpOworCQkJc2Nhbi0+Y3VycmVu dElzTnVsbCA9IHRydWU7CisJCQlyZXR1cm4gZmFsc2U7CQkvKiBlbmQgb2Ygc2NhbiAqLworCQl9 CisKKwkJLyogc2V0IGN1cnJlbnQgcm93IGl0ZW0gKi8KKwkJb2xkY3h0ID0gTWVtb3J5Q29udGV4 dFN3aXRjaFRvKHNjYW4tPm1jeHQpOworCQlzY2FuLT5jdXJyZW50ID0gSnNvbmJQR2V0RGF0dW0o SnNvbmJWYWx1ZVRvSnNvbmIoamJ2KSk7CisJCXNjYW4tPmN1cnJlbnRJc051bGwgPSBmYWxzZTsK KwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CisKKwkJc2Nhbi0+b3JkaW5hbCsrOwor CisJCWlmICghc2Nhbi0+cGxhbi5uZXN0ZWQpCisJCQlicmVhazsKKworCQlKc29uVGFibGVQbGFu UmVzZXQoc2Nhbi0+cGxhbi5uZXN0ZWQpOworCisJCXNjYW4tPmFkdmFuY2VOZXN0ZWQgPSBKc29u VGFibGVQbGFuTmV4dFJvdyhzY2FuLT5wbGFuLm5lc3RlZCk7CisKKwkJaWYgKHNjYW4tPmFkdmFu Y2VOZXN0ZWQgfHwgc2Nhbi0+b3V0ZXJKb2luKQorCQkJYnJlYWs7CisJfQorCisJcmV0dXJuIHRy dWU7Cit9CisKKy8qCisgKiBKc29uVGFibGVGZXRjaFJvdworICoJCVByZXBhcmUgdGhlIG5leHQg ImN1cnJlbnQiIHR1cGxlIGZvciB1cGNvbWluZyBHZXRWYWx1ZSBjYWxscy4KKyAqCQlSZXR1cm5z IGZhbHNlIGlmIG5vIG1vcmUgcm93cyBjYW4gYmUgcmV0dXJuZWQuCisgKi8KK3N0YXRpYyBib29s CitKc29uVGFibGVGZXRjaFJvdyhUYWJsZUZ1bmNTY2FuU3RhdGUgKnN0YXRlKQoreworCUpzb25U YWJsZUV4ZWNDb250ZXh0ICpjeHQgPQorCQlHZXRKc29uVGFibGVFeGVjQ29udGV4dChzdGF0ZSwg Ikpzb25UYWJsZUZldGNoUm93Iik7CisKKwlyZXR1cm4gSnNvblRhYmxlU2Nhbk5leHRSb3coY3h0 LT5yb290KTsKK30KKworLyoKKyAqIEpzb25UYWJsZUdldFZhbHVlCisgKgkJUmV0dXJuIHRoZSB2 YWx1ZSBmb3IgY29sdW1uIG51bWJlciAnY29sbnVtJyBmb3IgdGhlIGN1cnJlbnQgcm93LgorICoK KyAqIFRoaXMgbGVha3MgbWVtb3J5LCBzbyBiZSBzdXJlIHRvIHJlc2V0IG9mdGVuIHRoZSBjb250 ZXh0IGluIHdoaWNoIGl0J3MKKyAqIGNhbGxlZC4KKyAqLworc3RhdGljIERhdHVtCitKc29uVGFi bGVHZXRWYWx1ZShUYWJsZUZ1bmNTY2FuU3RhdGUgKnN0YXRlLCBpbnQgY29sbnVtLAorCQkJCSAg T2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QsIGJvb2wgKmlzbnVsbCkKK3sKKwlKc29uVGFibGVFeGVj Q29udGV4dCAqY3h0ID0KKwkJR2V0SnNvblRhYmxlRXhlY0NvbnRleHQoc3RhdGUsICJKc29uVGFi bGVHZXRWYWx1ZSIpOworCUV4cHJDb250ZXh0ICplY29udGV4dCA9IHN0YXRlLT5zcy5wcy5wc19F eHByQ29udGV4dDsKKwlFeHByU3RhdGUgICplc3RhdGUgPSBsaXN0X250aChzdGF0ZS0+Y29sdmFs ZXhwcnMsIGNvbG51bSk7CisJSnNvblRhYmxlU2NhblN0YXRlICpzY2FuID0gY3h0LT5jb2xleHBy c2NhbnNbY29sbnVtXTsKKwlEYXR1bQkJcmVzdWx0OworCisJaWYgKHNjYW4tPmN1cnJlbnRJc051 bGwpCS8qIE5VTEwgZnJvbSBvdXRlci91bmlvbiBqb2luICovCisJeworCQlyZXN1bHQgPSAoRGF0 dW0pIDA7CisJCSppc251bGwgPSB0cnVlOworCX0KKwllbHNlIGlmIChlc3RhdGUpCQkJLyogcmVn dWxhciBjb2x1bW4gKi8KKwl7CisJCURhdHVtCQlzYXZlZF9jYXNlVmFsdWUgPSBlY29udGV4dC0+ Y2FzZVZhbHVlX2RhdHVtOworCQlib29sCQlzYXZlZF9jYXNlSXNOdWxsID0gZWNvbnRleHQtPmNh c2VWYWx1ZV9pc051bGw7CisKKwkJLyogUGFzcyB0aGUgdmFsdWUgZm9yIENhc2VUZXN0RXhwciB0 aGF0IG1heSBiZSBwcmVzZW50IGluIGNvbGV4cHIgKi8KKwkJZWNvbnRleHQtPmNhc2VWYWx1ZV9k YXR1bSA9IHNjYW4tPmN1cnJlbnQ7CisJCWVjb250ZXh0LT5jYXNlVmFsdWVfaXNOdWxsID0gZmFs c2U7CisKKwkJcmVzdWx0ID0gRXhlY0V2YWxFeHByKGVzdGF0ZSwgZWNvbnRleHQsIGlzbnVsbCk7 CisKKwkJZWNvbnRleHQtPmNhc2VWYWx1ZV9kYXR1bSA9IHNhdmVkX2Nhc2VWYWx1ZTsKKwkJZWNv bnRleHQtPmNhc2VWYWx1ZV9pc051bGwgPSBzYXZlZF9jYXNlSXNOdWxsOworCX0KKwllbHNlCisJ eworCQlyZXN1bHQgPSBJbnQzMkdldERhdHVtKHNjYW4tPm9yZGluYWwpOwkvKiBvcmRpbmFsaXR5 IGNvbHVtbiAqLworCQkqaXNudWxsID0gZmFsc2U7CisJfQorCisJcmV0dXJuIHJlc3VsdDsKK30K KworLyoKKyAqIEpzb25UYWJsZURlc3Ryb3lPcGFxdWUKKyAqLworc3RhdGljIHZvaWQKK0pzb25U YWJsZURlc3Ryb3lPcGFxdWUoVGFibGVGdW5jU2NhblN0YXRlICpzdGF0ZSkKK3sKKwlKc29uVGFi bGVFeGVjQ29udGV4dCAqY3h0ID0KKwkJR2V0SnNvblRhYmxlRXhlY0NvbnRleHQoc3RhdGUsICJK c29uVGFibGVEZXN0cm95T3BhcXVlIik7CisKKwkvKiBub3QgdmFsaWQgYW55bW9yZSAqLworCWN4 dC0+bWFnaWMgPSAwOworCisJc3RhdGUtPm9wYXF1ZSA9IE5VTEw7Cit9CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv cnVsZXV0aWxzLmMKaW5kZXggMjczNTM0ODQxNi4uYTI3YzdhMzUwZSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9ydWxldXRpbHMuYwpAQCAtNTIyLDYgKzUyMiw4IEBAIHN0YXRpYyBjaGFyICpmbGF0dGVuX3Jl bG9wdGlvbnMoT2lkIHJlbGlkKTsKIHN0YXRpYyB2b2lkIGdldF9yZWxvcHRpb25zKFN0cmluZ0lu Zm8gYnVmLCBEYXR1bSByZWxvcHRpb25zKTsKIHN0YXRpYyB2b2lkIGdldF9qc29uX3BhdGhfc3Bl YyhOb2RlICpwYXRoX3NwZWMsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwKIAkJCQkJCQkgICBi b29sIHNob3dpbXBsaWNpdCk7CitzdGF0aWMgdm9pZCBnZXRfanNvbl90YWJsZV9jb2x1bW5zKFRh YmxlRnVuYyAqdGYsIEpzb25UYWJsZVBsYW4gKm5vZGUsCisJCQkJCQkJCSAgIGRlcGFyc2VfY29u dGV4dCAqY29udGV4dCwgYm9vbCBzaG93aW1wbGljaXQpOwogCiAjZGVmaW5lIG9ubHlfbWFya2Vy KHJ0ZSkgICgocnRlKS0+aW5oID8gIiIgOiAiT05MWSAiKQogCkBAIC04NjI3LDcgKzg2MjksOCBA QCBnZXRfanNvbl9iZWhhdmlvcihKc29uQmVoYXZpb3IgKmJlaGF2aW9yLCBkZXBhcnNlX2NvbnRl eHQgKmNvbnRleHQsCiAvKgogICogZ2V0X2pzb25fZXhwcl9vcHRpb25zCiAgKgotICogUGFyc2Ug YmFjayBjb21tb24gb3B0aW9ucyBmb3IgSlNPTl9RVUVSWSwgSlNPTl9WQUxVRSwgSlNPTl9FWElT VFMuCisgKiBQYXJzZSBiYWNrIGNvbW1vbiBvcHRpb25zIGZvciBKU09OX1FVRVJZLCBKU09OX1ZB TFVFLCBKU09OX0VYSVNUUyBhbmQKKyAqIEpTT05fVEFCTEUgY29sdW1ucy4KICAqLwogc3RhdGlj IHZvaWQKIGdldF9qc29uX2V4cHJfb3B0aW9ucyhKc29uRXhwciAqanNleHByLCBkZXBhcnNlX2Nv bnRleHQgKmNvbnRleHQsCkBAIC05ODc0LDYgKzk4NzcsOSBAQCBnZXRfcnVsZV9leHByKE5vZGUg Km5vZGUsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwKIAkJCQkJY2FzZSBKU09OX1ZBTFVFX09Q OgogCQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICJKU09OX1ZBTFVFKCIpOwogCQkJ CQkJYnJlYWs7CisJCQkJCWRlZmF1bHQ6CisJCQkJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBK c29uRXhwciB0eXBlOiAlZCIsIGpleHByLT5vcCk7CisJCQkJCQlicmVhazsKIAkJCQl9CiAKIAkJ CQlnZXRfcnVsZV9leHByKGpleHByLT5mb3JtYXR0ZWRfZXhwciwgY29udGV4dCwgc2hvd2ltcGxp Y2l0KTsKQEAgLTExMjQwLDE2ICsxMTI0NiwxNCBAQCBnZXRfc3VibGlua19leHByKFN1Ykxpbmsg KnN1YmxpbmssIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCkKIAogCiAvKiAtLS0tLS0tLS0tCi0g KiBnZXRfdGFibGVmdW5jCQkJLSBQYXJzZSBiYWNrIGEgdGFibGUgZnVuY3Rpb24KKyAqIGdldF94 bWx0YWJsZQkJCS0gUGFyc2UgYmFjayBhIFhNTFRBQkxFIGZ1bmN0aW9uCiAgKiAtLS0tLS0tLS0t CiAgKi8KIHN0YXRpYyB2b2lkCi1nZXRfdGFibGVmdW5jKFRhYmxlRnVuYyAqdGYsIGRlcGFyc2Vf Y29udGV4dCAqY29udGV4dCwgYm9vbCBzaG93aW1wbGljaXQpCitnZXRfeG1sdGFibGUoVGFibGVG dW5jICp0ZiwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LCBib29sIHNob3dpbXBsaWNpdCkKIHsK IAlTdHJpbmdJbmZvCWJ1ZiA9IGNvbnRleHQtPmJ1ZjsKIAotCS8qIFhNTFRBQkxFIGlzIHRoZSBv bmx5IGV4aXN0aW5nIGltcGxlbWVudGF0aW9uLiAgKi8KLQogCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoYnVmLCAiWE1MVEFCTEUoIik7CiAKIAlpZiAodGYtPm5zX3VyaXMgIT0gTklMKQpAQCAtMTEz NDAsNiArMTEzNDQsMjcxIEBAIGdldF90YWJsZWZ1bmMoVGFibGVGdW5jICp0ZiwgZGVwYXJzZV9j b250ZXh0ICpjb250ZXh0LCBib29sIHNob3dpbXBsaWNpdCkKIAlhcHBlbmRTdHJpbmdJbmZvQ2hh cihidWYsICcpJyk7CiB9CiAKKy8qCisgKiBnZXRfanNvbl9uZXN0ZWRfY29sdW1ucyAtIFBhcnNl IGJhY2sgbmVzdGVkIEpTT05fVEFCTEUgY29sdW1ucworICovCitzdGF0aWMgdm9pZAorZ2V0X2pz b25fdGFibGVfbmVzdGVkX2NvbHVtbnMoVGFibGVGdW5jICp0ZiwgTm9kZSAqbm9kZSwKKwkJCQkJ CQkgIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwgYm9vbCBzaG93aW1wbGljaXQsCisJCQkJCQkJ ICBib29sIG5lZWRjb21tYSkKK3sKKwlpZiAoSXNBKG5vZGUsIEpzb25UYWJsZVNpYmxpbmcpKQor CXsKKwkJSnNvblRhYmxlU2libGluZyAqbiA9IChKc29uVGFibGVTaWJsaW5nICopIG5vZGU7CisK KwkJZ2V0X2pzb25fdGFibGVfbmVzdGVkX2NvbHVtbnModGYsIG4tPmxhcmcsIGNvbnRleHQsIHNo b3dpbXBsaWNpdCwKKwkJCQkJCQkJCSAgbmVlZGNvbW1hKTsKKwkJZ2V0X2pzb25fdGFibGVfbmVz dGVkX2NvbHVtbnModGYsIG4tPnJhcmcsIGNvbnRleHQsIHNob3dpbXBsaWNpdCwgdHJ1ZSk7CisJ fQorCWVsc2UKKwl7CisJCUpzb25UYWJsZVBsYW4gKm4gPSBjYXN0Tm9kZShKc29uVGFibGVQbGFu LCBub2RlKTsKKworCQlpZiAobmVlZGNvbW1hKQorCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoY29u dGV4dC0+YnVmLCAnLCcpOworCisJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGNvbnRleHQtPmJ1Ziwg JyAnKTsKKwkJYXBwZW5kQ29udGV4dEtleXdvcmQoY29udGV4dCwgIk5FU1RFRCBQQVRIICIsIDAs IDAsIDApOworCQlnZXRfY29uc3RfZXhwcihuLT5wYXRoLT52YWx1ZSwgY29udGV4dCwgLTEpOwor CQlhcHBlbmRTdHJpbmdJbmZvKGNvbnRleHQtPmJ1ZiwgIiBBUyAlcyIsIHF1b3RlX2lkZW50aWZp ZXIobi0+cGF0aC0+bmFtZSkpOworCQlnZXRfanNvbl90YWJsZV9jb2x1bW5zKHRmLCBuLCBjb250 ZXh0LCBzaG93aW1wbGljaXQpOworCX0KK30KKworLyoKKyAqIGdldF9qc29uX3RhYmxlX3BsYW4g LSBQYXJzZSBiYWNrIGEgSlNPTl9UQUJMRSBwbGFuCisgKi8KK3N0YXRpYyB2b2lkCitnZXRfanNv bl90YWJsZV9wbGFuKFRhYmxlRnVuYyAqdGYsIE5vZGUgKm5vZGUsIGRlcGFyc2VfY29udGV4dCAq Y29udGV4dCwKKwkJCQkJYm9vbCBwYXJlbnRoZXNpemUpCit7CisJaWYgKHBhcmVudGhlc2l6ZSkK KwkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoY29udGV4dC0+YnVmLCAnKCcpOworCisJaWYgKElzQShu b2RlLCBKc29uVGFibGVTaWJsaW5nKSkKKwl7CisJCUpzb25UYWJsZVNpYmxpbmcgKm4gPSAoSnNv blRhYmxlU2libGluZyAqKSBub2RlOworCisJCWdldF9qc29uX3RhYmxlX3BsYW4odGYsIG4tPmxh cmcsIGNvbnRleHQsCisJCQkJCQkJSXNBKG4tPmxhcmcsIEpzb25UYWJsZVNpYmxpbmcpIHx8CisJ CQkJCQkJY2FzdE5vZGUoSnNvblRhYmxlUGxhbiwgbi0+bGFyZyktPmNoaWxkKTsKKworCQlhcHBl bmRTdHJpbmdJbmZvU3RyaW5nKGNvbnRleHQtPmJ1Ziwgbi0+Y3Jvc3MgPyAiIENST1NTICIgOiAi IFVOSU9OICIpOworCisJCWdldF9qc29uX3RhYmxlX3BsYW4odGYsIG4tPnJhcmcsIGNvbnRleHQs CisJCQkJCQkJSXNBKG4tPnJhcmcsIEpzb25UYWJsZVNpYmxpbmcpIHx8CisJCQkJCQkJY2FzdE5v ZGUoSnNvblRhYmxlUGxhbiwgbi0+cmFyZyktPmNoaWxkKTsKKwl9CisJZWxzZQorCXsKKwkJSnNv blRhYmxlUGxhbiAqbiA9IGNhc3ROb2RlKEpzb25UYWJsZVBsYW4sIG5vZGUpOworCisJCWFwcGVu ZFN0cmluZ0luZm9TdHJpbmcoY29udGV4dC0+YnVmLCBxdW90ZV9pZGVudGlmaWVyKG4tPnBhdGgt Pm5hbWUpKTsKKworCQlpZiAobi0+Y2hpbGQpCisJCXsKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoY29udGV4dC0+YnVmLAorCQkJCQkJCQkgICBuLT5vdXRlckpvaW4gPyAiIE9VVEVSICIgOiAi IElOTkVSICIpOworCQkJZ2V0X2pzb25fdGFibGVfcGxhbih0Ziwgbi0+Y2hpbGQsIGNvbnRleHQs CisJCQkJCQkJCUlzQShuLT5jaGlsZCwgSnNvblRhYmxlU2libGluZykpOworCQl9CisJfQorCisJ aWYgKHBhcmVudGhlc2l6ZSkKKwkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoY29udGV4dC0+YnVmLCAn KScpOworfQorCisvKgorICogZ2V0X2pzb25fdGFibGVfY29sdW1ucyAtIFBhcnNlIGJhY2sgSlNP Tl9UQUJMRSBjb2x1bW5zCisgKi8KK3N0YXRpYyB2b2lkCitnZXRfanNvbl90YWJsZV9jb2x1bW5z KFRhYmxlRnVuYyAqdGYsIEpzb25UYWJsZVBsYW4gKnBsYW4sCisJCQkJCSAgIGRlcGFyc2VfY29u dGV4dCAqY29udGV4dCwgYm9vbCBzaG93aW1wbGljaXQpCit7CisJU3RyaW5nSW5mbwlidWYgPSBj b250ZXh0LT5idWY7CisJSnNvbkV4cHIgICAqamV4cHIgPSBjYXN0Tm9kZShKc29uRXhwciwgdGYt PmRvY2V4cHIpOworCUxpc3RDZWxsICAgKmxjX2NvbG5hbWU7CisJTGlzdENlbGwgICAqbGNfY29s dHlwZTsKKwlMaXN0Q2VsbCAgICpsY19jb2x0eXBtb2Q7CisJTGlzdENlbGwgICAqbGNfY29sdmFs ZXhwcjsKKwlpbnQJCQljb2xudW0gPSAwOworCisJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAn ICcpOworCWFwcGVuZENvbnRleHRLZXl3b3JkKGNvbnRleHQsICJDT0xVTU5TICgiLCAwLCAwLCAw KTsKKworCWlmIChQUkVUVFlfSU5ERU5UKGNvbnRleHQpKQorCQljb250ZXh0LT5pbmRlbnRMZXZl bCArPSBQUkVUVFlJTkRFTlRfVkFSOworCisJZm9yZm91cihsY19jb2xuYW1lLCB0Zi0+Y29sbmFt ZXMsCisJCQlsY19jb2x0eXBlLCB0Zi0+Y29sdHlwZXMsCisJCQlsY19jb2x0eXBtb2QsIHRmLT5j b2x0eXBtb2RzLAorCQkJbGNfY29sdmFsZXhwciwgdGYtPmNvbHZhbGV4cHJzKQorCXsKKwkJY2hh cgkgICAqY29sbmFtZSA9IHN0clZhbChsZmlyc3QobGNfY29sbmFtZSkpOworCQlKc29uRXhwciAg ICpjb2xleHByOworCQlPaWQJCQl0eXBpZDsKKwkJaW50MzIJCXR5cG1vZDsKKwkJYm9vbAkJb3Jk aW5hbGl0eTsKKwkJSnNvbkJlaGF2aW9yVHlwZSBkZWZhdWx0X2JlaGF2aW9yOworCisJCXR5cGlk ID0gbGZpcnN0X29pZChsY19jb2x0eXBlKTsKKwkJdHlwbW9kID0gbGZpcnN0X2ludChsY19jb2x0 eXBtb2QpOworCQljb2xleHByID0gY2FzdE5vZGUoSnNvbkV4cHIsIGxmaXJzdChsY19jb2x2YWxl eHByKSk7CisKKwkJaWYgKGNvbG51bSA8IHBsYW4tPmNvbE1pbikKKwkJeworCQkJY29sbnVtKys7 CisJCQljb250aW51ZTsKKwkJfQorCisJCWlmIChjb2xudW0gPiBwbGFuLT5jb2xNYXgpCisJCQli cmVhazsKKworCQlpZiAoY29sbnVtID4gcGxhbi0+Y29sTWluKQorCQkJYXBwZW5kU3RyaW5nSW5m b1N0cmluZyhidWYsICIsICIpOworCisJCWNvbG51bSsrOworCisJCW9yZGluYWxpdHkgPSAhY29s ZXhwcjsKKworCQlhcHBlbmRDb250ZXh0S2V5d29yZChjb250ZXh0LCAiIiwgMCwgMCwgMCk7CisK KwkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIlcyAlcyIsIHF1b3RlX2lkZW50aWZpZXIoY29sbmFt ZSksCisJCQkJCQkgb3JkaW5hbGl0eSA/ICJGT1IgT1JESU5BTElUWSIgOgorCQkJCQkJIGZvcm1h dF90eXBlX3dpdGhfdHlwZW1vZCh0eXBpZCwgdHlwbW9kKSk7CisJCWlmIChvcmRpbmFsaXR5KQor CQkJY29udGludWU7CisKKwkJaWYgKGNvbGV4cHItPm9wID09IEpTT05fRVhJU1RTX09QKQorCQl7 CisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiBFWElTVFMiKTsKKwkJCWRlZmF1bHRf YmVoYXZpb3IgPSBKU09OX0JFSEFWSU9SX0ZBTFNFOworCQl9CisJCWVsc2UKKwkJeworCQkJaWYg KGNvbGV4cHItPm9wID09IEpTT05fUVVFUllfT1ApCisJCQl7CisJCQkJY2hhcgkJdHlwY2F0ZWdv cnk7CisJCQkJYm9vbAkJdHlwaXNwcmVmZXJyZWQ7CisKKwkJCQlnZXRfdHlwZV9jYXRlZ29yeV9w cmVmZXJyZWQodHlwaWQsICZ0eXBjYXRlZ29yeSwgJnR5cGlzcHJlZmVycmVkKTsKKworCQkJCWlm ICh0eXBjYXRlZ29yeSA9PSBUWVBDQVRFR09SWV9TVFJJTkcpCisJCQkJCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoYnVmLAorCQkJCQkJCQkJCSAgIGNvbGV4cHItPmZvcm1hdC0+Zm9ybWF0X3R5cGUg PT0gSlNfRk9STUFUX0pTT05CID8KKwkJCQkJCQkJCQkgICAiIEZPUk1BVCBKU09OQiIgOiAiIEZP Uk1BVCBKU09OIik7CisJCQl9CisKKwkJCWRlZmF1bHRfYmVoYXZpb3IgPSBKU09OX0JFSEFWSU9S X05VTEw7CisJCX0KKworCQlpZiAoamV4cHItPm9uX2Vycm9yLT5idHlwZSA9PSBKU09OX0JFSEFW SU9SX0VSUk9SKQorCQkJZGVmYXVsdF9iZWhhdmlvciA9IEpTT05fQkVIQVZJT1JfRVJST1I7CisK KwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIgUEFUSCAiKTsKKworCQlnZXRfanNvbl9w YXRoX3NwZWMoY29sZXhwci0+cGF0aF9zcGVjLCBjb250ZXh0LCBzaG93aW1wbGljaXQpOworCisJ CWdldF9qc29uX2V4cHJfb3B0aW9ucyhjb2xleHByLCBjb250ZXh0LCBkZWZhdWx0X2JlaGF2aW9y KTsKKwl9CisKKwlpZiAocGxhbi0+Y2hpbGQpCisJCWdldF9qc29uX3RhYmxlX25lc3RlZF9jb2x1 bW5zKHRmLCBwbGFuLT5jaGlsZCwgY29udGV4dCwgc2hvd2ltcGxpY2l0LAorCQkJCQkJCQkJICBw bGFuLT5jb2xNYXggPj0gcGxhbi0+Y29sTWluKTsKKworCWlmIChQUkVUVFlfSU5ERU5UKGNvbnRl eHQpKQorCQljb250ZXh0LT5pbmRlbnRMZXZlbCAtPSBQUkVUVFlJTkRFTlRfVkFSOworCisJYXBw ZW5kQ29udGV4dEtleXdvcmQoY29udGV4dCwgIikiLCAwLCAwLCAwKTsKK30KKworLyogLS0tLS0t LS0tLQorICogZ2V0X2pzb25fdGFibGUJCQktIFBhcnNlIGJhY2sgYSBKU09OX1RBQkxFIGZ1bmN0 aW9uCisgKiAtLS0tLS0tLS0tCisgKi8KK3N0YXRpYyB2b2lkCitnZXRfanNvbl90YWJsZShUYWJs ZUZ1bmMgKnRmLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsIGJvb2wgc2hvd2ltcGxpY2l0KQor eworCVN0cmluZ0luZm8JYnVmID0gY29udGV4dC0+YnVmOworCUpzb25FeHByICAgKmpleHByID0g Y2FzdE5vZGUoSnNvbkV4cHIsIHRmLT5kb2NleHByKTsKKwlKc29uVGFibGVQbGFuICpyb290ID0g Y2FzdE5vZGUoSnNvblRhYmxlUGxhbiwgdGYtPnBsYW4pOworCisJYXBwZW5kU3RyaW5nSW5mb1N0 cmluZyhidWYsICJKU09OX1RBQkxFKCIpOworCisJaWYgKFBSRVRUWV9JTkRFTlQoY29udGV4dCkp CisJCWNvbnRleHQtPmluZGVudExldmVsICs9IFBSRVRUWUlOREVOVF9WQVI7CisKKwlhcHBlbmRD b250ZXh0S2V5d29yZChjb250ZXh0LCAiIiwgMCwgMCwgMCk7CisKKwlnZXRfcnVsZV9leHByKGpl eHByLT5mb3JtYXR0ZWRfZXhwciwgY29udGV4dCwgc2hvd2ltcGxpY2l0KTsKKworCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoYnVmLCAiLCAiKTsKKworCWdldF9jb25zdF9leHByKHJvb3QtPnBhdGgt PnZhbHVlLCBjb250ZXh0LCAtMSk7CisKKwlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiBBUyAlcyIs IHF1b3RlX2lkZW50aWZpZXIocm9vdC0+cGF0aC0+bmFtZSkpOworCisJaWYgKGpleHByLT5wYXNz aW5nX3ZhbHVlcykKKwl7CisJCUxpc3RDZWxsICAgKmxjMSwKKwkJCQkgICAqbGMyOworCQlib29s CQluZWVkY29tbWEgPSBmYWxzZTsKKworCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICcgJyk7 CisJCWFwcGVuZENvbnRleHRLZXl3b3JkKGNvbnRleHQsICJQQVNTSU5HICIsIDAsIDAsIDApOwor CisJCWlmIChQUkVUVFlfSU5ERU5UKGNvbnRleHQpKQorCQkJY29udGV4dC0+aW5kZW50TGV2ZWwg Kz0gUFJFVFRZSU5ERU5UX1ZBUjsKKworCQlmb3Jib3RoKGxjMSwgamV4cHItPnBhc3NpbmdfbmFt ZXMsCisJCQkJbGMyLCBqZXhwci0+cGFzc2luZ192YWx1ZXMpCisJCXsKKwkJCWlmIChuZWVkY29t bWEpCisJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIsICIpOworCQkJbmVlZGNvbW1h ID0gdHJ1ZTsKKworCQkJYXBwZW5kQ29udGV4dEtleXdvcmQoY29udGV4dCwgIiIsIDAsIDAsIDAp OworCisJCQlnZXRfcnVsZV9leHByKChOb2RlICopIGxmaXJzdChsYzIpLCBjb250ZXh0LCBmYWxz ZSk7CisJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiBBUyAlcyIsCisJCQkJCQkJIHF1b3RlX2lk ZW50aWZpZXIoKGxmaXJzdF9ub2RlKFN0cmluZywgbGMxKSktPnN2YWwpCisJCQkJKTsKKwkJfQor CisJCWlmIChQUkVUVFlfSU5ERU5UKGNvbnRleHQpKQorCQkJY29udGV4dC0+aW5kZW50TGV2ZWwg LT0gUFJFVFRZSU5ERU5UX1ZBUjsKKwl9CisKKwlnZXRfanNvbl90YWJsZV9jb2x1bW5zKHRmLCBy b290LCBjb250ZXh0LCBzaG93aW1wbGljaXQpOworCisJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVm LCAnICcpOworCWFwcGVuZENvbnRleHRLZXl3b3JkKGNvbnRleHQsICJQTEFOICIsIDAsIDAsIDAp OworCWdldF9qc29uX3RhYmxlX3BsYW4odGYsIChOb2RlICopIHJvb3QsIGNvbnRleHQsIHRydWUp OworCisJaWYgKGpleHByLT5vbl9lcnJvci0+YnR5cGUgIT0gSlNPTl9CRUhBVklPUl9FTVBUWSkK KwkJZ2V0X2pzb25fYmVoYXZpb3IoamV4cHItPm9uX2Vycm9yLCBjb250ZXh0LCAiRVJST1IiKTsK KworCWlmIChQUkVUVFlfSU5ERU5UKGNvbnRleHQpKQorCQljb250ZXh0LT5pbmRlbnRMZXZlbCAt PSBQUkVUVFlJTkRFTlRfVkFSOworCisJYXBwZW5kQ29udGV4dEtleXdvcmQoY29udGV4dCwgIiki LCAwLCAwLCAwKTsKK30KKworLyogLS0tLS0tLS0tLQorICogZ2V0X3RhYmxlZnVuYwkJCS0gUGFy c2UgYmFjayBhIHRhYmxlIGZ1bmN0aW9uCisgKiAtLS0tLS0tLS0tCisgKi8KK3N0YXRpYyB2b2lk CitnZXRfdGFibGVmdW5jKFRhYmxlRnVuYyAqdGYsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwg Ym9vbCBzaG93aW1wbGljaXQpCit7CisJLyogWE1MVEFCTEUgYW5kIEpTT05fVEFCTEUgYXJlIHRo ZSBvbmx5IGV4aXN0aW5nIGltcGxlbWVudGF0aW9ucy4gICovCisKKwlpZiAodGYtPmZ1bmN0eXBl ID09IFRGVF9YTUxUQUJMRSkKKwkJZ2V0X3htbHRhYmxlKHRmLCBjb250ZXh0LCBzaG93aW1wbGlj aXQpOworCWVsc2UgaWYgKHRmLT5mdW5jdHlwZSA9PSBURlRfSlNPTl9UQUJMRSkKKwkJZ2V0X2pz b25fdGFibGUodGYsIGNvbnRleHQsIHNob3dpbXBsaWNpdCk7Cit9CisKIC8qIC0tLS0tLS0tLS0K ICAqIGdldF9mcm9tX2NsYXVzZQkJCS0gUGFyc2UgYmFjayBhIEZST00gY2xhdXNlCiAgKgpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rl cy9leGVjbm9kZXMuaAppbmRleCAyZThkZjIzMDFmLi5mYmJhNzlmOTRlIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVj bm9kZXMuaApAQCAtMTk2OCw2ICsxOTY4LDggQEAgdHlwZWRlZiBzdHJ1Y3QgVGFibGVGdW5jU2Nh blN0YXRlCiAJRXhwclN0YXRlICAqcm93ZXhwcjsJCS8qIHN0YXRlIGZvciByb3ctZ2VuZXJhdGlu ZyBleHByZXNzaW9uICovCiAJTGlzdAkgICAqY29sZXhwcnM7CQkvKiBzdGF0ZSBmb3IgY29sdW1u LWdlbmVyYXRpbmcgZXhwcmVzc2lvbiAqLwogCUxpc3QJICAgKmNvbGRlZmV4cHJzOwkvKiBzdGF0 ZSBmb3IgY29sdW1uIGRlZmF1bHQgZXhwcmVzc2lvbnMgKi8KKwlMaXN0CSAgICpjb2x2YWxleHBy czsJLyogc3RhdGUgZm9yIGNvbHVtbiB2YWx1ZSBleHByZXNzaW9uICovCisJTGlzdAkgICAqcGFz c2luZ3ZhbGV4cHJzOwkvKiBzdGF0ZSBmb3IgUEFTU0lORyBhcmd1bWVudCBleHByZXNzaW9uICov CiAJTGlzdAkgICAqbnNfbmFtZXM7CQkvKiBzYW1lIGFzIFRhYmxlRnVuYy5uc19uYW1lcyAqLwog CUxpc3QJICAgKm5zX3VyaXM7CQkvKiBsaXN0IG9mIHN0YXRlcyBvZiBuYW1lc3BhY2UgVVJJIGV4 cHJzICovCiAJQml0bWFwc2V0ICAqbm90bnVsbHM7CQkvKiBudWxsYWJpbGl0eSBmbGFnIGZvciBl YWNoIG91dHB1dCBjb2x1bW4gKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL21ha2Vm dW5jcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmgKaW5kZXggYTk2ZmQ2MmQ3Zi4u NjdhNmI3ZmM4NiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmgKKysr IGIvc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmgKQEAgLTEwMCw2ICsxMDAsNyBAQCBleHRl cm4gSW5kZXhJbmZvICptYWtlSW5kZXhJbmZvKGludCBudW1hdHRycywgaW50IG51bWtleWF0dHJz LCBPaWQgYW1vaWQsCiAJCQkJCQkJCWJvb2wgaXNyZWFkeSwgYm9vbCBjb25jdXJyZW50LAogCQkJ CQkJCQlib29sIHN1bW1hcml6aW5nKTsKIAorZXh0ZXJuIE5vZGUgKm1ha2VTdHJpbmdDb25zdChj aGFyICpzdHIsIGludCBsb2NhdGlvbik7CiBleHRlcm4gRGVmRWxlbSAqbWFrZURlZkVsZW0oY2hh ciAqbmFtZSwgTm9kZSAqYXJnLCBpbnQgbG9jYXRpb24pOwogZXh0ZXJuIERlZkVsZW0gKm1ha2VE ZWZFbGVtRXh0ZW5kZWQoY2hhciAqbmFtZVNwYWNlLCBjaGFyICpuYW1lLCBOb2RlICphcmcsCiAJ CQkJCQkJCQlEZWZFbGVtQWN0aW9uIGRlZmFjdGlvbiwgaW50IGxvY2F0aW9uKTsKQEAgLTExNCw2 ICsxMTUsMTIgQEAgZXh0ZXJuIEpzb25WYWx1ZUV4cHIgKm1ha2VKc29uVmFsdWVFeHByKEV4cHIg KnJhd19leHByLCBFeHByICpmb3JtYXR0ZWRfZXhwciwKIAkJCQkJCQkJCQlKc29uRm9ybWF0ICpm b3JtYXQpOwogZXh0ZXJuIEpzb25CZWhhdmlvciAqbWFrZUpzb25CZWhhdmlvcihKc29uQmVoYXZp b3JUeXBlIHR5cGUsIE5vZGUgKmV4cHIsCiAJCQkJIEpzb25Db2VyY2lvbiAqY29lcmNpb24sIGlu dCBsb2NhdGlvbik7CitleHRlcm4gSnNvblRhYmxlUGF0aCAqbWFrZUpzb25UYWJsZVBhdGgoQ29u c3QgKnBhdGh2YWx1ZSwgY2hhciAqcGF0aG5hbWUpOworZXh0ZXJuIEpzb25UYWJsZVBhdGhTcGVj ICptYWtlSnNvblRhYmxlUGF0aFNwZWMoY2hhciAqc3RyaW5nLCBjaGFyICpuYW1lLAorCQkJCQkJ CQkJCQkJaW50IHN0cmluZ19sb2NhdGlvbiwKKwkJCQkJCQkJCQkJCWludCBuYW1lX2xvY2F0aW9u KTsKK2V4dGVybiBOb2RlICptYWtlSnNvblRhYmxlSm9pbmVkUGxhbihKc29uVGFibGVQbGFuSm9p blR5cGUgdHlwZSwKKwkJCQkJCQkJCSBOb2RlICpwbGFuMSwgTm9kZSAqcGxhbjIsIGludCBsb2Nh dGlvbik7CiBleHRlcm4gTm9kZSAqbWFrZUpzb25LZXlWYWx1ZShOb2RlICprZXksIE5vZGUgKnZh bHVlKTsKIGV4dGVybiBOb2RlICptYWtlSnNvbklzUHJlZGljYXRlKE5vZGUgKmV4cHIsIEpzb25G b3JtYXQgKmZvcm1hdCwKIAkJCQkJCQkJIEpzb25WYWx1ZVR5cGUgaXRlbV90eXBlLCBib29sIHVu aXF1ZV9rZXlzLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIv c3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDAxODRjNzZjZTYuLjFlZjZjOGNh NGYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMv aW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTE3NDEsNiArMTc0MSw3IEBAIHR5cGVkZWYg c3RydWN0IEpzb25GdW5jRXhwcgogCUpzb25FeHByT3AJb3A7CQkJCS8qIGV4cHJlc3Npb24gdHlw ZSAqLwogCUpzb25WYWx1ZUV4cHIgKmNvbnRleHRfaXRlbTsJLyogY29udGV4dCBpdGVtIGV4cHJl c3Npb24gKi8KIAlOb2RlCSAgICpwYXRoc3BlYzsJCS8qIEpTT04gcGF0aCBzcGVjaWZpY2F0aW9u IGV4cHJlc3Npb24gKi8KKwljaGFyCSAgICpwYXRobmFtZTsJCS8qIHBhdGggbmFtZSwgaWYgYW55 ICovCiAJTGlzdAkgICAqcGFzc2luZzsJCS8qIGxpc3Qgb2YgUEFTU0lORyBjbGF1c2UgYXJndW1l bnRzLCBpZiBhbnkgKi8KIAlKc29uT3V0cHV0ICpvdXRwdXQ7CQkJLyogb3V0cHV0IGNsYXVzZSwg aWYgc3BlY2lmaWVkICovCiAJSnNvbkJlaGF2aW9yICpvbl9lbXB0eTsJCS8qIE9OIEVNUFRZIGJl aGF2aW9yICovCkBAIC0xNzUwLDYgKzE3NTEsMTExIEBAIHR5cGVkZWYgc3RydWN0IEpzb25GdW5j RXhwcgogCWludAkJCWxvY2F0aW9uOwkJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25v d24gKi8KIH0gSnNvbkZ1bmNFeHByOwogCisvKgorICogSnNvblRhYmxlUGF0aFNwZWMKKyAqCQl1 bnRyYW5zZm9ybWVkIHNwZWNpZmljYXRpb24gb2YgSlNPTiBwYXRoIGV4cHJlc3Npb24gd2l0aCBh biBvcHRpb25hbAorICoJCW5hbWUKKyAqLwordHlwZWRlZiBzdHJ1Y3QgSnNvblRhYmxlUGF0aFNw ZWMKK3sKKwlOb2RlVGFnCQl0eXBlOworCisJTm9kZQkgICAqc3RyaW5nOworCWNoYXIJICAgKm5h bWU7CisJaW50CQkJbmFtZV9sb2NhdGlvbjsKKwlpbnQJCQlsb2NhdGlvbjsJLyogbG9jYXRpb24g b2YgJ3N0cmluZycgKi8KK30gSnNvblRhYmxlUGF0aFNwZWM7CisKKy8qCisgKiBKc29uVGFibGVD b2x1bW5UeXBlIC0KKyAqCQllbnVtZXJhdGlvbiBvZiBKU09OX1RBQkxFIGNvbHVtbiB0eXBlcwor ICovCit0eXBlZGVmIGVudW0gSnNvblRhYmxlQ29sdW1uVHlwZQoreworCUpUQ19GT1JfT1JESU5B TElUWSwKKwlKVENfUkVHVUxBUiwKKwlKVENfRVhJU1RTLAorCUpUQ19GT1JNQVRURUQsCisJSlRD X05FU1RFRCwKK30gSnNvblRhYmxlQ29sdW1uVHlwZTsKKworLyoKKyAqIEpzb25UYWJsZUNvbHVt biAtCisgKgkJdW50cmFuc2Zvcm1lZCByZXByZXNlbnRhdGlvbiBvZiBKU09OX1RBQkxFIGNvbHVt bgorICovCit0eXBlZGVmIHN0cnVjdCBKc29uVGFibGVDb2x1bW4KK3sKKwlOb2RlVGFnCQl0eXBl OworCUpzb25UYWJsZUNvbHVtblR5cGUgY29sdHlwZTsJLyogY29sdW1uIHR5cGUgKi8KKwljaGFy CSAgICpuYW1lOwkJCS8qIGNvbHVtbiBuYW1lICovCisJVHlwZU5hbWUgICAqdHlwZU5hbWU7CQkv KiBjb2x1bW4gdHlwZSBuYW1lICovCisJSnNvblRhYmxlUGF0aFNwZWMgKnBhdGhzcGVjOyAvKiBK U09OIHBhdGggc3BlY2lmaWNhdGlvbiAqLworCUpzb25Gb3JtYXQgKmZvcm1hdDsJCQkvKiBKU09O IGZvcm1hdCBjbGF1c2UsIGlmIHNwZWNpZmllZCAqLworCUpzb25XcmFwcGVyIHdyYXBwZXI7CQkv KiBXUkFQUEVSIGJlaGF2aW9yIGZvciBmb3JtYXR0ZWQgY29sdW1ucyAqLworCUpzb25RdW90ZXMJ cXVvdGVzOwkJCS8qIG9taXQgb3Iga2VlcCBxdW90ZXMgb24gc2NhbGFyIHN0cmluZ3M/ICovCisJ TGlzdAkgICAqY29sdW1uczsJCS8qIG5lc3RlZCBjb2x1bW5zICovCisJSnNvbkJlaGF2aW9yICpv bl9lbXB0eTsJCS8qIE9OIEVNUFRZIGJlaGF2aW9yICovCisJSnNvbkJlaGF2aW9yICpvbl9lcnJv cjsJCS8qIE9OIEVSUk9SIGJlaGF2aW9yICovCisJaW50CQkJbG9jYXRpb247CQkvKiB0b2tlbiBs b2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLworfSBKc29uVGFibGVDb2x1bW47CisKKy8qCisg KiBKc29uVGFibGVQbGFuVHlwZSAtCisgKgkJZmxhZ3MgZm9yIEpTT05fVEFCTEUgcGxhbiBub2Rl IHR5cGVzIHJlcHJlc2VudGF0aW9uCisgKi8KK3R5cGVkZWYgZW51bSBKc29uVGFibGVQbGFuVHlw ZQoreworCUpTVFBfREVGQVVMVCwKKwlKU1RQX1NJTVBMRSwKKwlKU1RQX0pPSU5FRCwKK30gSnNv blRhYmxlUGxhblR5cGU7CisKKy8qCisgKiBKc29uVGFibGVQbGFuSm9pblR5cGUgLQorICoJCWZs YWdzIGZvciBKU09OX1RBQkxFIGpvaW4gdHlwZXMgcmVwcmVzZW50YXRpb24KKyAqLwordHlwZWRl ZiBlbnVtIEpzb25UYWJsZVBsYW5Kb2luVHlwZQoreworCUpTVFBKX0lOTkVSLAorCUpTVFBKX09V VEVSLAorCUpTVFBKX0NST1NTLAorCUpTVFBKX1VOSU9OLAorfSBKc29uVGFibGVQbGFuSm9pblR5 cGU7CisKKy8qCisgKiBKc29uVGFibGVQbGFuU3BlYyAtCisgKgkJdW50cmFuc2Zvcm1lZCByZXBy ZXNlbnRhdGlvbiBvZiBKU09OX1RBQkxFJ3MgUExBTiBjbGF1c2UKKyAqLwordHlwZWRlZiBzdHJ1 Y3QgSnNvblRhYmxlUGxhblNwZWMKK3sKKwlOb2RlVGFnCQl0eXBlOworCisJSnNvblRhYmxlUGxh blR5cGUgcGxhbl90eXBlOwkvKiBwbGFuIHR5cGUgKi8KKwlKc29uVGFibGVQbGFuSm9pblR5cGUg am9pbl90eXBlOwkvKiBqb2luIHR5cGUgKGZvciBqb2luZWQgcGxhbiBvbmx5KSAqLworCXN0cnVj dCBKc29uVGFibGVQbGFuU3BlYyAqcGxhbjE7CQkvKiBmaXJzdCBqb2luZWQgcGxhbiAqLworCXN0 cnVjdCBKc29uVGFibGVQbGFuU3BlYyAqcGxhbjI7CQkvKiBzZWNvbmQgam9pbmVkIHBsYW4gKi8K KwljaGFyCSAgICpwYXRobmFtZTsJCS8qIHBhdGggbmFtZSAoZm9yIHNpbXBsZSBwbGFuIG9ubHkp ICovCisJaW50CQkJbG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93 biAqLworfSBKc29uVGFibGVQbGFuU3BlYzsKKworLyoKKyAqIEpzb25UYWJsZSAtCisgKgkJdW50 cmFuc2Zvcm1lZCByZXByZXNlbnRhdGlvbiBvZiBKU09OX1RBQkxFCisgKi8KK3R5cGVkZWYgc3Ry dWN0IEpzb25UYWJsZQoreworCU5vZGVUYWcJCXR5cGU7CisJSnNvblZhbHVlRXhwciAqY29udGV4 dF9pdGVtOwkvKiBjb250ZXh0IGl0ZW0gZXhwcmVzc2lvbiAqLworCUpzb25UYWJsZVBhdGhTcGVj ICpwYXRoc3BlYzsJLyogSlNPTiBwYXRoIHNwZWNpZmljYXRpb24gKi8KKwlMaXN0CSAgICpwYXNz aW5nOwkJLyogbGlzdCBvZiBQQVNTSU5HIGNsYXVzZSBhcmd1bWVudHMsIGlmIGFueSAqLworCUxp c3QJICAgKmNvbHVtbnM7CQkvKiBsaXN0IG9mIEpzb25UYWJsZUNvbHVtbiAqLworCUpzb25UYWJs ZVBsYW5TcGVjICpwbGFuc3BlYzsgLyogam9pbiBwbGFuLCBpZiBzcGVjaWZpZWQgKi8KKwlKc29u QmVoYXZpb3IgICpvbl9lcnJvcjsJLyogT04gRVJST1IgYmVoYXZpb3IgKi8KKwlBbGlhcwkgICAq YWxpYXM7CQkJLyogdGFibGUgYWxpYXMgaW4gRlJPTSBjbGF1c2UgKi8KKwlib29sCQlsYXRlcmFs OwkJLyogZG9lcyBpdCBoYXZlIExBVEVSQUwgcHJlZml4PyAqLworCWludAkJCWxvY2F0aW9uOwkJ LyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KK30gSnNvblRhYmxlOworCiAv KgogICogSnNvbktleVZhbHVlIC0KICAqCQl1bnRyYW5zZm9ybWVkIHJlcHJlc2VudGF0aW9uIG9m IEpTT04gb2JqZWN0IGtleS12YWx1ZSBwYWlyIGZvcgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv bm9kZXMvcHJpbW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAppbmRleCBm ZTlkZmJiMDJhLi5kN2NmZTM0YjhlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmlt bm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaApAQCAtOTQsOCArOTQs MTQgQEAgdHlwZWRlZiBzdHJ1Y3QgUmFuZ2VWYXIKIAlpbnQJCQlsb2NhdGlvbjsKIH0gUmFuZ2VW YXI7CiAKK3R5cGVkZWYgZW51bSBUYWJsZUZ1bmNUeXBlCit7CisJVEZUX1hNTFRBQkxFLAorCVRG VF9KU09OX1RBQkxFLAorfSBUYWJsZUZ1bmNUeXBlOworCiAvKgotICogVGFibGVGdW5jIC0gbm9k ZSBmb3IgYSB0YWJsZSBmdW5jdGlvbiwgc3VjaCBhcyBYTUxUQUJMRS4KKyAqIFRhYmxlRnVuYyAt IG5vZGUgZm9yIGEgdGFibGUgZnVuY3Rpb24sIHN1Y2ggYXMgWE1MVEFCTEUgb3IgSlNPTl9UQUJM RS4KICAqCiAgKiBFbnRyaWVzIGluIHRoZSBuc19uYW1lcyBsaXN0IGFyZSBlaXRoZXIgU3RyaW5n IG5vZGVzIGNvbnRhaW5pbmcKICAqIGxpdGVyYWwgbmFtZXNwYWNlIG5hbWVzLCBvciBOVUxMIHBv aW50ZXJzIHRvIHJlcHJlc2VudCBERUZBVUxULgpAQCAtMTAzLDYgKzEwOSw4IEBAIHR5cGVkZWYg c3RydWN0IFJhbmdlVmFyCiB0eXBlZGVmIHN0cnVjdCBUYWJsZUZ1bmMKIHsKIAlOb2RlVGFnCQl0 eXBlOworCS8qIFhNTFRBQkxFIG9yIEpTT05fVEFCTEUgKi8KKwlUYWJsZUZ1bmNUeXBlIGZ1bmN0 eXBlOwogCS8qIGxpc3Qgb2YgbmFtZXNwYWNlIFVSSSBleHByZXNzaW9ucyAqLwogCUxpc3QJICAg Km5zX3VyaXMgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwogCS8qIGxpc3Qgb2Yg bmFtZXNwYWNlIG5hbWVzIG9yIE5VTEwgKi8KQEAgLTEyMyw4ICsxMzEsMTQgQEAgdHlwZWRlZiBz dHJ1Y3QgVGFibGVGdW5jCiAJTGlzdAkgICAqY29sZXhwcnM7CiAJLyogbGlzdCBvZiBjb2x1bW4g ZGVmYXVsdCBleHByZXNzaW9ucyAqLwogCUxpc3QJICAgKmNvbGRlZmV4cHJzIHBnX25vZGVfYXR0 cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKKwkvKiBsaXN0IG9mIGNvbHVtbiB2YWx1ZSBleHByZXNz aW9ucyAqLworCUxpc3QJICAgKmNvbHZhbGV4cHJzIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVf aWdub3JlKTsKKwkvKiBsaXN0IG9mIFBBU1NJTkcgYXJndW1lbnQgZXhwcmVzc2lvbnMgKi8KKwlM aXN0CSAgICpwYXNzaW5ndmFsZXhwcnMgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUp OwogCS8qIG51bGxhYmlsaXR5IGZsYWcgZm9yIGVhY2ggb3V0cHV0IGNvbHVtbiAqLwogCUJpdG1h cHNldCAgKm5vdG51bGxzIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKKwkvKiBK U09OX1RBQkxFIHBsYW4gKi8KKwlOb2RlCSAgICpwbGFuIHBnX25vZGVfYXR0cihxdWVyeV9qdW1i bGVfaWdub3JlKTsKIAkvKiBjb3VudHMgZnJvbSAwOyAtMSBpZiBub25lIHNwZWNpZmllZCAqLwog CWludAkJCW9yZGluYWxpdHljb2wgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwog CS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3duICovCkBAIC0xNTYxLDYgKzE1NzUs NyBAQCB0eXBlZGVmIGVudW0gSnNvbkV4cHJPcAogCUpTT05fVkFMVUVfT1AsCQkJCS8qIEpTT05f VkFMVUUoKSAqLwogCUpTT05fUVVFUllfT1AsCQkJCS8qIEpTT05fUVVFUlkoKSAqLwogCUpTT05f RVhJU1RTX09QLAkJCQkvKiBKU09OX0VYSVNUUygpICovCisJSlNPTl9UQUJMRV9PUCwJCQkJLyog SlNPTl9UQUJMRSgpICovCiB9IEpzb25FeHByT3A7CiAKIC8qCkBAIC0xODQ1LDYgKzE4NjAsNDkg QEAgdHlwZWRlZiBzdHJ1Y3QgSnNvbkV4cHIKIAlpbnQJCQlsb2NhdGlvbjsKIH0gSnNvbkV4cHI7 CiAKKy8qCisgKiBKc29uVGFibGVQYXRoCisgKgkJQSBKU09OIHBhdGggZXhwcmVzc2lvbiB0byBi ZSBjb21wdXRlZCBhcyBwYXJ0IG9mIGV2YWx1YXRpbmcKKyAqCQlhIEpTT05fVEFCTEUgcGxhbiBu b2RlCisgKi8KK3R5cGVkZWYgc3RydWN0IEpzb25UYWJsZVBhdGgKK3sKKwlOb2RlVGFnCQl0eXBl OworCisJQ29uc3QJICAgKnZhbHVlOworCWNoYXIJICAgKm5hbWU7Cit9CQkJSnNvblRhYmxlUGF0 aDsKKworLyoKKyAqIEpzb25UYWJsZVNwZWMgLQorICoJCXRyYW5zZm9ybWVkIHJlcHJlc2VudGF0 aW9uIG9mIGEgSlNPTl9UQUJMRSBwbGFuCisgKi8KK3R5cGVkZWYgc3RydWN0IEpzb25UYWJsZVBs YW4KK3sKKwlOb2RlVGFnCQl0eXBlOworCisJSnNvblRhYmxlUGF0aCAqcGF0aDsKKwlOb2RlCSAg ICpjaGlsZDsJCQkvKiBuZXN0ZWQgY29sdW1ucywgaWYgYW55ICovCisJYm9vbAkJb3V0ZXJKb2lu OwkJLyogb3V0ZXIgb3IgaW5uZXIgam9pbiBmb3IgbmVzdGVkIGNvbHVtbnM/ICovCisJaW50CQkJ Y29sTWluOwkJCS8qIG1pbiBjb2x1bW4gaW5kZXggaW4gdGhlIHJlc3VsdGluZyBjb2x1bW4KKwkJ CQkJCQkJICogbGlzdCAqLworCWludAkJCWNvbE1heDsJCQkvKiBtYXggY29sdW1uIGluZGV4IGlu IHRoZSByZXN1bHRpbmcgY29sdW1uCisJCQkJCQkJCSAqIGxpc3QgKi8KKwlib29sCQllcnJvck9u RXJyb3I7CS8qIEVSUk9SL0VNUFRZIE9OIEVSUk9SIGJlaGF2aW9yICovCit9IEpzb25UYWJsZVBs YW47CisKKy8qCisgKiBKc29uVGFibGVTaWJsaW5nIC0KKyAqCQl0cmFuc2Zvcm1lZCByZXByZXNl bnRhdGlvbiBvZiBqb2luZWQgc2libGluZyBKU09OX1RBQkxFIHBsYW4gbm9kZQorICovCit0eXBl ZGVmIHN0cnVjdCBKc29uVGFibGVTaWJsaW5nCit7CisJTm9kZVRhZwkJdHlwZTsKKwlOb2RlCSAg ICpsYXJnOwkJCS8qIGxlZnQgam9pbiBub2RlICovCisJTm9kZQkgICAqcmFyZzsJCQkvKiByaWdo dCBqb2luIG5vZGUgKi8KKwlib29sCQljcm9zczsJCQkvKiBjcm9zcyBvciB1bmlvbiBqb2luPyAq LworfSBKc29uVGFibGVTaWJsaW5nOworCiAvKiAtLS0tLS0tLS0tLS0tLS0tCiAgKiBOdWxsVGVz dAogICoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCBiL3NyYy9pbmNs dWRlL3BhcnNlci9rd2xpc3QuaAppbmRleCA5NGUxY2I0ZGNlLi5lMmJiZWViMjA5IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2Vy L2t3bGlzdC5oCkBAIC0yNDIsNiArMjQyLDcgQEAgUEdfS0VZV09SRCgianNvbl9vYmplY3RhZ2ci LCBKU09OX09CSkVDVEFHRywgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdP UkQoImpzb25fcXVlcnkiLCBKU09OX1FVRVJZLCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVM KQogUEdfS0VZV09SRCgianNvbl9zY2FsYXIiLCBKU09OX1NDQUxBUiwgQ09MX05BTUVfS0VZV09S RCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImpzb25fc2VyaWFsaXplIiwgSlNPTl9TRVJJQUxJ WkUsIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJqc29uX3RhYmxl IiwgSlNPTl9UQUJMRSwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQo Impzb25fdmFsdWUiLCBKU09OX1ZBTFVFLCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQog UEdfS0VZV09SRCgia2VlcCIsIEtFRVAsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkK IFBHX0tFWVdPUkQoImtleSIsIEtFWSwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQpA QCAtMjg0LDYgKzI4NSw3IEBAIFBHX0tFWVdPUkQoIm5hbWVzIiwgTkFNRVMsIFVOUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoIm5hdGlvbmFsIiwgTkFUSU9OQUwsIENP TF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJuYXR1cmFsIiwgTkFUVVJB TCwgVFlQRV9GVU5DX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoIm5jaGFy IiwgTkNIQVIsIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJuZXN0 ZWQiLCBORVNURUQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQo Im5ldyIsIE5FVywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgi bmV4dCIsIE5FWFQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQo Im5mYyIsIE5GQywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQpAQCAtMzM0LDcgKzMz Niw5IEBAIFBHX0tFWVdPUkQoInBhcnRpYWwiLCBQQVJUSUFMLCBVTlJFU0VSVkVEX0tFWVdPUkQs IEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXJ0aXRpb24iLCBQQVJUSVRJT04sIFVOUkVTRVJW RURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBhc3NpbmciLCBQQVNTSU5HLCBV TlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXNzd29yZCIsIFBB U1NXT1JELCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJwYXRo IiwgUEFUSCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGxh Y2luZyIsIFBMQUNJTkcsIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JE KCJwbGFuIiwgUExBTiwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09S RCgicGxhbnMiLCBQTEFOUywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZ V09SRCgicG9saWN5IiwgUE9MSUNZLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQ R19LRVlXT1JEKCJwb3NpdGlvbiIsIFBPU0lUSU9OLCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xB QkVMKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2NsYXVzZS5oIGIvc3Jj L2luY2x1ZGUvcGFyc2VyL3BhcnNlX2NsYXVzZS5oCmluZGV4IDM4MjlkYjBmYzQuLmU3MTc2MmIx MGMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9jbGF1c2UuaAorKysgYi9z cmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfY2xhdXNlLmgKQEAgLTUxLDQgKzUxLDcgQEAgZXh0ZXJu IExpc3QgKmFkZFRhcmdldFRvU29ydExpc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBUYXJnZXRFbnRy eSAqdGxlLAogZXh0ZXJuIEluZGV4IGFzc2lnblNvcnRHcm91cFJlZihUYXJnZXRFbnRyeSAqdGxl LCBMaXN0ICp0bGlzdCk7CiBleHRlcm4gYm9vbCB0YXJnZXRJc0luU29ydExpc3QoVGFyZ2V0RW50 cnkgKnRsZSwgT2lkIHNvcnRvcCwgTGlzdCAqc29ydExpc3QpOwogCisvKiBmdW5jdGlvbnMgaW4g cGFyc2VfanNvbnRhYmxlLmMgKi8KK2V4dGVybiBQYXJzZU5hbWVzcGFjZUl0ZW0gKnRyYW5zZm9y bUpzb25UYWJsZShQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25UYWJsZSAqanQpOworCiAjZW5kaWYJ CQkJCQkJLyogUEFSU0VfQ0xBVVNFX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxz L2pzb25wYXRoLmggYi9zcmMvaW5jbHVkZS91dGlscy9qc29ucGF0aC5oCmluZGV4IDg5N2RlMjFh NTEuLjgzOGRjOGUwZmUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25wYXRoLmgK KysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvanNvbnBhdGguaApAQCAtMTUsNiArMTUsNyBAQAogI2Rl ZmluZSBKU09OUEFUSF9ICiAKICNpbmNsdWRlICJmbWdyLmgiCisjaW5jbHVkZSAiZXhlY3V0b3Iv dGFibGVmdW5jLmgiCiAjaW5jbHVkZSAibm9kZXMvcGdfbGlzdC5oIgogI2luY2x1ZGUgIm5vZGVz L3ByaW1ub2Rlcy5oIgogI2luY2x1ZGUgInV0aWxzL2pzb25iLmgiCkBAIC0yOTIsNCArMjkzLDYg QEAgZXh0ZXJuIERhdHVtIEpzb25QYXRoUXVlcnkoRGF0dW0gamIsIEpzb25QYXRoICpqcCwgSnNv bldyYXBwZXIgd3JhcHBlciwKIGV4dGVybiBKc29uYlZhbHVlICpKc29uUGF0aFZhbHVlKERhdHVt IGpiLCBKc29uUGF0aCAqanAsIGJvb2wgKmVtcHR5LAogCQkJCQkJCQkgYm9vbCAqZXJyb3IsIExp c3QgKnZhcnMpOwogCitleHRlcm4gUEdETExJTVBPUlQgY29uc3QgVGFibGVGdW5jUm91dGluZSBK c29uYlRhYmxlUm91dGluZTsKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9l Y3BnL3Rlc3QvZWNwZ19zY2hlZHVsZSBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9lY3BnX3Nj aGVkdWxlCmluZGV4IDM5ODE0YTM5YzEuLjIyMDhmNDBkNjcgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRl cmZhY2VzL2VjcGcvdGVzdC9lY3BnX3NjaGVkdWxlCisrKyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcv dGVzdC9lY3BnX3NjaGVkdWxlCkBAIC01MSw2ICs1MSw3IEBAIHRlc3Q6IHNxbC9vbGRleGVjCiB0 ZXN0OiBzcWwvcXVvdGUKIHRlc3Q6IHNxbC9zaG93CiB0ZXN0OiBzcWwvc3FsanNvbgordGVzdDog c3FsL3NxbGpzb25fanNvbnRhYmxlCiB0ZXN0OiBzcWwvaW5zdXBkCiB0ZXN0OiBzcWwvcGFyc2Vy CiB0ZXN0OiBzcWwvcHJlcGFyZWFzCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rl c3QvZXhwZWN0ZWQvc3FsLXNxbGpzb25fanNvbnRhYmxlLmMgYi9zcmMvaW50ZXJmYWNlcy9lY3Bn L3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb25fanNvbnRhYmxlLmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMC4uMGJiZjQ0NDMxOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9p bnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbl9qc29udGFibGUuYwpAQCAt MCwwICsxLDEzMiBAQAorLyogUHJvY2Vzc2VkIGJ5IGVjcGcgKHJlZ3Jlc3Npb24gbW9kZSkgKi8K Ky8qIFRoZXNlIGluY2x1ZGUgZmlsZXMgYXJlIGFkZGVkIGJ5IHRoZSBwcmVwcm9jZXNzb3IgKi8K KyNpbmNsdWRlIDxlY3BnbGliLmg+CisjaW5jbHVkZSA8ZWNwZ2Vycm5vLmg+CisjaW5jbHVkZSA8 c3FsY2EuaD4KKy8qIEVuZCBvZiBhdXRvbWF0aWMgaW5jbHVkZSBzZWN0aW9uICovCisjZGVmaW5l IEVDUEdkZWJ1ZyhYLFkpIEVDUEdkZWJ1ZygoWCkrMTAwLChZKSkKKworI2xpbmUgMSAic3FsanNv bl9qc29udGFibGUucGdjIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKworI2xpbmUgMSAic3FsY2Eu aCIKKyNpZm5kZWYgUE9TVEdSRVNfU1FMQ0FfSAorI2RlZmluZSBQT1NUR1JFU19TUUxDQV9ICisK KyNpZm5kZWYgUEdETExJTVBPUlQKKyNpZiAgZGVmaW5lZChXSU4zMikgfHwgZGVmaW5lZChfX0NZ R1dJTl9fKQorI2RlZmluZSBQR0RMTElNUE9SVCBfX2RlY2xzcGVjIChkbGxpbXBvcnQpCisjZWxz ZQorI2RlZmluZSBQR0RMTElNUE9SVAorI2VuZGlmCQkJCQkJCS8qIF9fQ1lHV0lOX18gKi8KKyNl bmRpZgkJCQkJCQkvKiBQR0RMTElNUE9SVCAqLworCisjZGVmaW5lIFNRTEVSUk1DX0xFTgkxNTAK KworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCit7CisjZW5kaWYKKworc3RydWN0IHNx bGNhX3QKK3sKKwljaGFyCQlzcWxjYWlkWzhdOworCWxvbmcJCXNxbGFiYzsKKwlsb25nCQlzcWxj b2RlOworCXN0cnVjdAorCXsKKwkJaW50CQkJc3FsZXJybWw7CisJCWNoYXIJCXNxbGVycm1jW1NR TEVSUk1DX0xFTl07CisJfQkJCXNxbGVycm07CisJY2hhcgkJc3FsZXJycFs4XTsKKwlsb25nCQlz cWxlcnJkWzZdOworCS8qIEVsZW1lbnQgMDogZW1wdHkJCQkJCQkqLworCS8qIDE6IE9JRCBvZiBw cm9jZXNzZWQgdHVwbGUgaWYgYXBwbGljYWJsZQkJCSovCisJLyogMjogbnVtYmVyIG9mIHJvd3Mg cHJvY2Vzc2VkCQkJCSovCisJLyogYWZ0ZXIgYW4gSU5TRVJULCBVUERBVEUgb3IJCQkJKi8KKwkv KiBERUxFVEUgc3RhdGVtZW50CQkJCQkqLworCS8qIDM6IGVtcHR5CQkJCQkJKi8KKwkvKiA0OiBl bXB0eQkJCQkJCSovCisJLyogNTogZW1wdHkJCQkJCQkqLworCWNoYXIJCXNxbHdhcm5bOF07CisJ LyogRWxlbWVudCAwOiBzZXQgdG8gJ1cnIGlmIGF0IGxlYXN0IG9uZSBvdGhlciBpcyAnVycJKi8K KwkvKiAxOiBpZiAnVycgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBzdHJpbmcJCSovCisJLyogdmFs dWUgd2FzIHRydW5jYXRlZCB3aGVuIGl0IHdhcwkJCSovCisJLyogc3RvcmVkIGludG8gYSBob3N0 IHZhcmlhYmxlLiAgICAgICAgICAgICAqLworCisJLyoKKwkgKiAyOiBpZiAnVycgYSAoaG9wZWZ1 bGx5KSBub24tZmF0YWwgbm90aWNlIG9jY3VycmVkCisJICovCS8qIDM6IGVtcHR5ICovCisJLyog NDogZW1wdHkJCQkJCQkqLworCS8qIDU6IGVtcHR5CQkJCQkJKi8KKwkvKiA2OiBlbXB0eQkJCQkJ CSovCisJLyogNzogZW1wdHkJCQkJCQkqLworCisJY2hhcgkJc3Fsc3RhdGVbNV07Cit9OworCitz dHJ1Y3Qgc3FsY2FfdCAqRUNQR2dldF9zcWxjYSh2b2lkKTsKKworI2lmbmRlZiBQT1NUR1JFU19F Q1BHX0lOVEVSTkFMCisjZGVmaW5lIHNxbGNhICgqRUNQR2dldF9zcWxjYSgpKQorI2VuZGlmCisK KyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZgorCisjbGluZSAzICJzcWxq c29uX2pzb250YWJsZS5wZ2MiCisKKworI2xpbmUgMSAicmVncmVzc2lvbi5oIgorCisKKworCisK KworI2xpbmUgNCAic3FsanNvbl9qc29udGFibGUucGdjIgorCisKKy8qIGV4ZWMgc3FsIHdoZW5l dmVyIHNxbGVycm9yICBzcWxwcmludCA7ICovCisjbGluZSA2ICJzcWxqc29uX2pzb250YWJsZS5w Z2MiCisKKworaW50CittYWluICgpCit7CisgIEVDUEdkZWJ1ZyAoMSwgc3RkZXJyKTsKKworICB7 IEVDUEdjb25uZWN0KF9fTElORV9fLCAwLCAiZWNwZzFfcmVncmVzc2lvbiIgLCBOVUxMLCBOVUxM ICwgTlVMTCwgMCk7IAorI2xpbmUgMTMgInNxbGpzb25fanNvbnRhYmxlLnBnYyIKKworaWYgKHNx bGNhLnNxbGNvZGUgPCAwKSBzcWxwcmludCgpO30KKyNsaW5lIDEzICJzcWxqc29uX2pzb250YWJs ZS5wZ2MiCisKKyAgeyBFQ1BHc2V0Y29tbWl0KF9fTElORV9fLCAib24iLCBOVUxMKTsKKyNsaW5l IDE0ICJzcWxqc29uX2pzb250YWJsZS5wZ2MiCisKK2lmIChzcWxjYS5zcWxjb2RlIDwgMCkgc3Fs cHJpbnQoKTt9CisjbGluZSAxNCAic3FsanNvbl9qc29udGFibGUucGdjIgorCisKKyAgeyBFQ1BH ZG8oX19MSU5FX18sIDAsIDEsIE5VTEwsIDAsIEVDUEdzdF9ub3JtYWwsICJzZWxlY3QgKiBmcm9t IGpzb25fdGFibGUgKCBqc29uYiAnbnVsbCcgLCAnJFsqXScgYXMgcDAgY29sdW1ucyAoIG5lc3Rl ZCAnJCcgYXMgcDEgY29sdW1ucyAoIG5lc3RlZCBwYXRoICckJyBhcyBwMTEgY29sdW1ucyAoIGZv byBpbnQgKSAsIG5lc3RlZCBwYXRoICckJyBhcyBwMTIgY29sdW1ucyAoIGJhciBpbnQgKSApICwg bmVzdGVkIHBhdGggJyQnIGFzIHAyIGNvbHVtbnMgKCBuZXN0ZWQgcGF0aCAnJCcgYXMgcDIxIGNv bHVtbnMgKCBiYXogaW50ICkgKSApIHBsYW4gKCBwMSApICkganQiLCBFQ1BHdF9FT0lULCBFQ1BH dF9FT1JUKTsKKyNsaW5lIDI2ICJzcWxqc29uX2pzb250YWJsZS5wZ2MiCisKK2lmIChzcWxjYS5z cWxjb2RlIDwgMCkgc3FscHJpbnQoKTt9CisjbGluZSAyNiAic3FsanNvbl9qc29udGFibGUucGdj IgorCisgIC8vIGVycm9yCisKKyAgeyBFQ1BHZGlzY29ubmVjdChfX0xJTkVfXywgIkNVUlJFTlQi KTsKKyNsaW5lIDI5ICJzcWxqc29uX2pzb250YWJsZS5wZ2MiCisKK2lmIChzcWxjYS5zcWxjb2Rl IDwgMCkgc3FscHJpbnQoKTt9CisjbGluZSAyOSAic3FsanNvbl9qc29udGFibGUucGdjIgorCisK KyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhw ZWN0ZWQvc3FsLXNxbGpzb25fanNvbnRhYmxlLnN0ZGVyciBiL3NyYy9pbnRlcmZhY2VzL2VjcGcv dGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbl9qc29udGFibGUuc3RkZXJyCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjU4ODFmZGI1ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb25fanNvbnRhYmxlLnN0 ZGVycgpAQCAtMCwwICsxLDIwIEBACitbTk9fUElEXTogRUNQR2RlYnVnOiBzZXQgdG8gMQorW05P X1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBFQ1BHY29ubmVj dDogb3BlbmluZyBkYXRhYmFzZSBlY3BnMV9yZWdyZXNzaW9uIG9uIDxERUZBVUxUPiBwb3J0IDxE RUZBVUxUPiAgCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJ RF06IEVDUEdzZXRjb21taXQgb24gbGluZSAxNDogYWN0aW9uICJvbiI7IGNvbm5lY3Rpb24gImVj cGcxX3JlZ3Jlc3Npb24iCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAor W05PX1BJRF06IGVjcGdfZXhlY3V0ZSBvbiBsaW5lIDE2OiBxdWVyeTogc2VsZWN0ICogZnJvbSBq c29uX3RhYmxlICgganNvbmIgJ251bGwnICwgJyRbKl0nIGFzIHAwIGNvbHVtbnMgKCBuZXN0ZWQg JyQnIGFzIHAxIGNvbHVtbnMgKCBuZXN0ZWQgcGF0aCAnJCcgYXMgcDExIGNvbHVtbnMgKCBmb28g aW50ICkgLCBuZXN0ZWQgcGF0aCAnJCcgYXMgcDEyIGNvbHVtbnMgKCBiYXIgaW50ICkgKSAsIG5l c3RlZCBwYXRoICckJyBhcyBwMiBjb2x1bW5zICggbmVzdGVkIHBhdGggJyQnIGFzIHAyMSBjb2x1 bW5zICggYmF6IGludCApICkgKSBwbGFuICggcDEgKSApIGp0OyB3aXRoIDAgcGFyYW1ldGVyKHMp IG9uIGNvbm5lY3Rpb24gZWNwZzFfcmVncmVzc2lvbgorW05PX1BJRF06IHNxbGNhOiBjb2RlOiAw LCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2V4ZWN1dGUgb24gbGluZSAxNjogdXNpbmcg UFFleGVjCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06 IGVjcGdfY2hlY2tfUFFyZXN1bHQgb24gbGluZSAxNjogYmFkIHJlc3BvbnNlIC0gRVJST1I6ICBp bnZhbGlkIEpTT05fVEFCTEUgcGxhbgorTElORSAxOiAuLi50ZWQgcGF0aCAnJCcgYXMgcDIxIGNv bHVtbnMgKCBiYXogaW50ICkgKSApIHBsYW4gKCBwMSApICkganQKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorREVUQUlMOiAg UEFUSCBuYW1lIG1pc21hdGNoOiBleHBlY3RlZCBwMCBidXQgcDEgaXMgZ2l2ZW4uCitbTk9fUElE XTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IHJhaXNpbmcgc3Fsc3Rh dGUgNDI2MDEgKHNxbGNvZGUgLTQwMCk6IGludmFsaWQgSlNPTl9UQUJMRSBwbGFuIG9uIGxpbmUg MTYKK1tOT19QSURdOiBzcWxjYTogY29kZTogLTQwMCwgc3RhdGU6IDQyNjAxCitTUUwgZXJyb3I6 IGludmFsaWQgSlNPTl9UQUJMRSBwbGFuIG9uIGxpbmUgMTYKK1tOT19QSURdOiBlY3BnX2Zpbmlz aDogY29ubmVjdGlvbiBlY3BnMV9yZWdyZXNzaW9uIGNsb3NlZAorW05PX1BJRF06IHNxbGNhOiBj b2RlOiAwLCBzdGF0ZTogMDAwMDAKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVz dC9leHBlY3RlZC9zcWwtc3FsanNvbl9qc29udGFibGUuc3Rkb3V0IGIvc3JjL2ludGVyZmFjZXMv ZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uX2pzb250YWJsZS5zdGRvdXQKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZTY5ZGUyOWJiMgpkaWZmIC0tZ2l0IGEvc3Jj L2ludGVyZmFjZXMvZWNwZy90ZXN0L3NxbC9NYWtlZmlsZSBiL3NyYy9pbnRlcmZhY2VzL2VjcGcv dGVzdC9zcWwvTWFrZWZpbGUKaW5kZXggZDgyMTNiMjVjZS4uN2YwMzI2NTliOSAxMDA2NDQKLS0t IGEvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L3NxbC9NYWtlZmlsZQorKysgYi9zcmMvaW50ZXJm YWNlcy9lY3BnL3Rlc3Qvc3FsL01ha2VmaWxlCkBAIC0yNCw2ICsyNCw3IEBAIFRFU1RTID0gYXJy YXkgYXJyYXkuYyBcCiAgICAgICAgIHF1b3RlIHF1b3RlLmMgXAogICAgICAgICBzaG93IHNob3cu YyBcCiAgICAgICAgIHNxbGpzb24gc3FsanNvbi5jIFwKKyAgICAgICAgc3FsanNvbl9qc29udGFi bGUgc3FsanNvbl9qc29udGFibGUuYyBcCiAgICAgICAgIGluc3VwZCBpbnN1cGQuYyBcCiAgICAg ICAgIHR3b3BoYXNlIHR3b3BoYXNlLmMgXAogICAgICAgICBpbnN1cGQgaW5zdXBkLmMgXApkaWZm IC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L3NxbC9tZXNvbi5idWlsZCBiL3NyYy9p bnRlcmZhY2VzL2VjcGcvdGVzdC9zcWwvbWVzb24uYnVpbGQKaW5kZXggMTJmMjhlMGEyNC4uODhh M2FjYjlhZiAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L3NxbC9tZXNvbi5i dWlsZAorKysgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qvc3FsL21lc29uLmJ1aWxkCkBAIC0y Niw2ICsyNiw3IEBAIHBnY19maWxlcyA9IFsKICAgJ3Nob3cnLAogICAnc3FsZGEnLAogICAnc3Fs anNvbicsCisgICdzcWxqc29uX2pzb250YWJsZScsCiAgICd0d29waGFzZScsCiBdCiAKZGlmZiAt LWdpdCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9zcWwvc3FsanNvbl9qc29udGFibGUuYyBi L3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9zcWwvc3FsanNvbl9qc29udGFibGUuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4zNDRiNGEzMjM5Ci0tLSAvZGV2L251bGwK KysrIGIvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L3NxbC9zcWxqc29uX2pzb250YWJsZS5jCkBA IC0wLDAgKzEsMTMyIEBACisvKiBQcm9jZXNzZWQgYnkgZWNwZyAocmVncmVzc2lvbiBtb2RlKSAq LworLyogVGhlc2UgaW5jbHVkZSBmaWxlcyBhcmUgYWRkZWQgYnkgdGhlIHByZXByb2Nlc3NvciAq LworI2luY2x1ZGUgPGVjcGdsaWIuaD4KKyNpbmNsdWRlIDxlY3BnZXJybm8uaD4KKyNpbmNsdWRl IDxzcWxjYS5oPgorLyogRW5kIG9mIGF1dG9tYXRpYyBpbmNsdWRlIHNlY3Rpb24gKi8KKyNkZWZp bmUgRUNQR2RlYnVnKFgsWSkgRUNQR2RlYnVnKChYKSsxMDAsKFkpKQorCisjbGluZSAxICJzcWxq c29uX2pzb250YWJsZS5wZ2MiCisjaW5jbHVkZSA8c3RkaW8uaD4KKworCisjbGluZSAxICIuLy4u Ly4uL2luY2x1ZGUvc3FsY2EuaCIKKyNpZm5kZWYgUE9TVEdSRVNfU1FMQ0FfSAorI2RlZmluZSBQ T1NUR1JFU19TUUxDQV9ICisKKyNpZm5kZWYgUEdETExJTVBPUlQKKyNpZiAgZGVmaW5lZChXSU4z MikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKQorI2RlZmluZSBQR0RMTElNUE9SVCBfX2RlY2xzcGVj IChkbGxpbXBvcnQpCisjZWxzZQorI2RlZmluZSBQR0RMTElNUE9SVAorI2VuZGlmCQkJCQkJCS8q IF9fQ1lHV0lOX18gKi8KKyNlbmRpZgkJCQkJCQkvKiBQR0RMTElNUE9SVCAqLworCisjZGVmaW5l IFNRTEVSUk1DX0xFTgkxNTAKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCit7Cisj ZW5kaWYKKworc3RydWN0IHNxbGNhX3QKK3sKKwljaGFyCQlzcWxjYWlkWzhdOworCWxvbmcJCXNx bGFiYzsKKwlsb25nCQlzcWxjb2RlOworCXN0cnVjdAorCXsKKwkJaW50CQkJc3FsZXJybWw7CisJ CWNoYXIJCXNxbGVycm1jW1NRTEVSUk1DX0xFTl07CisJfQkJCXNxbGVycm07CisJY2hhcgkJc3Fs ZXJycFs4XTsKKwlsb25nCQlzcWxlcnJkWzZdOworCS8qIEVsZW1lbnQgMDogZW1wdHkJCQkJCQkq LworCS8qIDE6IE9JRCBvZiBwcm9jZXNzZWQgdHVwbGUgaWYgYXBwbGljYWJsZQkJCSovCisJLyog MjogbnVtYmVyIG9mIHJvd3MgcHJvY2Vzc2VkCQkJCSovCisJLyogYWZ0ZXIgYW4gSU5TRVJULCBV UERBVEUgb3IJCQkJKi8KKwkvKiBERUxFVEUgc3RhdGVtZW50CQkJCQkqLworCS8qIDM6IGVtcHR5 CQkJCQkJKi8KKwkvKiA0OiBlbXB0eQkJCQkJCSovCisJLyogNTogZW1wdHkJCQkJCQkqLworCWNo YXIJCXNxbHdhcm5bOF07CisJLyogRWxlbWVudCAwOiBzZXQgdG8gJ1cnIGlmIGF0IGxlYXN0IG9u ZSBvdGhlciBpcyAnVycJKi8KKwkvKiAxOiBpZiAnVycgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBz dHJpbmcJCSovCisJLyogdmFsdWUgd2FzIHRydW5jYXRlZCB3aGVuIGl0IHdhcwkJCSovCisJLyog c3RvcmVkIGludG8gYSBob3N0IHZhcmlhYmxlLiAgICAgICAgICAgICAqLworCisJLyoKKwkgKiAy OiBpZiAnVycgYSAoaG9wZWZ1bGx5KSBub24tZmF0YWwgbm90aWNlIG9jY3VycmVkCisJICovCS8q IDM6IGVtcHR5ICovCisJLyogNDogZW1wdHkJCQkJCQkqLworCS8qIDU6IGVtcHR5CQkJCQkJKi8K KwkvKiA2OiBlbXB0eQkJCQkJCSovCisJLyogNzogZW1wdHkJCQkJCQkqLworCisJY2hhcgkJc3Fs c3RhdGVbNV07Cit9OworCitzdHJ1Y3Qgc3FsY2FfdCAqRUNQR2dldF9zcWxjYSh2b2lkKTsKKwor I2lmbmRlZiBQT1NUR1JFU19FQ1BHX0lOVEVSTkFMCisjZGVmaW5lIHNxbGNhICgqRUNQR2dldF9z cWxjYSgpKQorI2VuZGlmCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRp ZgorCisjbGluZSAzICJzcWxqc29uX2pzb250YWJsZS5wZ2MiCisKKworI2xpbmUgMSAiLi8uLi9y ZWdyZXNzaW9uLmgiCisKKworCisKKworCisjbGluZSA0ICJzcWxqc29uX2pzb250YWJsZS5wZ2Mi CisKKworLyogZXhlYyBzcWwgd2hlbmV2ZXIgc3FsZXJyb3IgIHNxbHByaW50IDsgKi8KKyNsaW5l IDYgInNxbGpzb25fanNvbnRhYmxlLnBnYyIKKworCitpbnQKK21haW4gKCkKK3sKKyAgRUNQR2Rl YnVnICgxLCBzdGRlcnIpOworCisgIHsgRUNQR2Nvbm5lY3QoX19MSU5FX18sIDAsICJlY3BnMV9y ZWdyZXNzaW9uIiAsIE5VTEwsIE5VTEwgLCBOVUxMLCAwKTsgCisjbGluZSAxMyAic3FsanNvbl9q c29udGFibGUucGdjIgorCitpZiAoc3FsY2Euc3FsY29kZSA8IDApIHNxbHByaW50KCk7fQorI2xp bmUgMTMgInNxbGpzb25fanNvbnRhYmxlLnBnYyIKKworICB7IEVDUEdzZXRjb21taXQoX19MSU5F X18sICJvbiIsIE5VTEwpOworI2xpbmUgMTQgInNxbGpzb25fanNvbnRhYmxlLnBnYyIKKworaWYg KHNxbGNhLnNxbGNvZGUgPCAwKSBzcWxwcmludCgpO30KKyNsaW5lIDE0ICJzcWxqc29uX2pzb250 YWJsZS5wZ2MiCisKKworICB7IEVDUEdkbyhfX0xJTkVfXywgMCwgMSwgTlVMTCwgMCwgRUNQR3N0 X25vcm1hbCwgInNlbGVjdCAqIGZyb20ganNvbl90YWJsZSAoIGpzb25iICdudWxsJyAsICckWypd JyBhcyBwMCBjb2x1bW5zICggbmVzdGVkICckJyBhcyBwMSBjb2x1bW5zICggbmVzdGVkIHBhdGgg JyQnIGFzIHAxMSBjb2x1bW5zICggZm9vIGludCApICwgbmVzdGVkIHBhdGggJyQnIGFzIHAxMiBj b2x1bW5zICggYmFyIGludCApICkgLCBuZXN0ZWQgcGF0aCAnJCcgYXMgcDIgY29sdW1ucyAoIG5l c3RlZCBwYXRoICckJyBhcyBwMjEgY29sdW1ucyAoIGJheiBpbnQgKSApICkgcGxhbiAoIHAxICkg KSBqdCIsIEVDUEd0X0VPSVQsIEVDUEd0X0VPUlQpOworI2xpbmUgMjYgInNxbGpzb25fanNvbnRh YmxlLnBnYyIKKworaWYgKHNxbGNhLnNxbGNvZGUgPCAwKSBzcWxwcmludCgpO30KKyNsaW5lIDI2 ICJzcWxqc29uX2pzb250YWJsZS5wZ2MiCisKKyAgLy8gZXJyb3IKKworICB7IEVDUEdkaXNjb25u ZWN0KF9fTElORV9fLCAiQ1VSUkVOVCIpOworI2xpbmUgMjkgInNxbGpzb25fanNvbnRhYmxlLnBn YyIKKworaWYgKHNxbGNhLnNxbGNvZGUgPCAwKSBzcWxwcmludCgpO30KKyNsaW5lIDI5ICJzcWxq c29uX2pzb250YWJsZS5wZ2MiCisKKworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL3NyYy9p bnRlcmZhY2VzL2VjcGcvdGVzdC9zcWwvc3FsanNvbl9qc29udGFibGUucGdjIGIvc3JjL2ludGVy ZmFjZXMvZWNwZy90ZXN0L3NxbC9zcWxqc29uX2pzb250YWJsZS5wZ2MKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMDZmOGEyYjYzNAotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9zcWwvc3FsanNvbl9qc29udGFibGUucGdjCkBAIC0wLDAg KzEsMzIgQEAKKyNpbmNsdWRlIDxzdGRpby5oPgorCitFWEVDIFNRTCBJTkNMVURFIHNxbGNhOwor ZXhlYyBzcWwgaW5jbHVkZSAuLi9yZWdyZXNzaW9uOworCitFWEVDIFNRTCBXSEVORVZFUiBTUUxF UlJPUiBzcWxwcmludDsKKworaW50CittYWluICgpCit7CisgIEVDUEdkZWJ1ZyAoMSwgc3RkZXJy KTsKKworICBFWEVDIFNRTCBDT05ORUNUIFRPIFJFR1JFU1NEQjE7CisgIEVYRUMgU1FMIFNFVCBB VVRPQ09NTUlUID0gT047CisKKyAgRVhFQyBTUUwgU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpz b25iICdudWxsJywgJyRbKl0nIEFTIHAwCisJQ09MVU1OUyAoCisJCU5FU1RFRCAnJCcgQVMgcDEg Q09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICks CisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKwkJKSwKKwkJ TkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAy MSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDEpKSBqdDsKKyAgLy8gZXJy b3IKKworICBFWEVDIFNRTCBESVNDT05ORUNUOworCisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uX3NxbGpzb24ub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9qc29uX3NxbGpzb24ub3V0CmluZGV4IDA0ZDVjYzc0ZTMuLjVkMGM2 YjZmZGQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbl9zcWxqc29u Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25fc3FsanNvbi5vdXQKQEAg LTE2LDMgKzE2LDkgQEAgRVJST1I6ICBKU09OX1FVRVJZKCkgaXMgbm90IHlldCBpbXBsZW1lbnRl ZCBmb3IgdGhlIGpzb24gdHlwZQogTElORSAxOiBTRUxFQ1QgSlNPTl9RVUVSWShOVUxMIEZPUk1B VCBKU09OLCAnJCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICBeCiBISU5UOiAgVHJ5IGNh c3RpbmcgdGhlIGFyZ3VtZW50IHRvIGpzb25iCistLSBKU09OX1RBQkxFCitTRUxFQ1QgKiBGUk9N IEpTT05fVEFCTEUoTlVMTCBGT1JNQVQgSlNPTiwgJyQnIENPTFVNTlMgKGZvbyB0ZXh0KSk7CitF UlJPUjogIEpTT05fVEFCTEUoKSBpcyBub3QgeWV0IGltcGxlbWVudGVkIGZvciB0aGUganNvbiB0 eXBlCitMSU5FIDE6IFNFTEVDVCAqIEZST00gSlNPTl9UQUJMRShOVUxMIEZPUk1BVCBKU09OLCAn JCcgQ09MVU1OUyAoZm9vIC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgor SElOVDogIFRyeSBjYXN0aW5nIHRoZSBhcmd1bWVudCB0byBqc29uYgpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYl9zcWxqc29uLm91dCBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvanNvbmJfc3FsanNvbi5vdXQKaW5kZXggOTRjMWI0MzBmZS4uMjNhMzA2YjU3 NCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYl9zcWxqc29uLm91 dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iX3NxbGpzb24ub3V0CkBAIC0x MDcxLDMgKzEwNzEsMTIyMiBAQCBDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5 IChKU09OX1FVRVJZKGpzLCAnJFsxLCAwIHRvICQuYSA/IChALmRhdGV0aQogRVJST1I6ICBmdW5j dGlvbnMgaW4gaW5kZXggZXhwcmVzc2lvbiBtdXN0IGJlIG1hcmtlZCBJTU1VVEFCTEUKIENSRUFU RSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckWzEsICQu YSA/IChALmRhdGV0aW1lKCJISDpNSSIpID09ICR4KV0nIFBBU1NJTkcgJzEyOjM0Jzo6dGltZSBB UyB4KSk7CiBEUk9QIFRBQkxFIHRlc3RfanNvbmJfbXV0YWJpbGl0eTsKKy0tIEpTT05fVEFCTEUK Ky0tIFNob3VsZCBmYWlsIChKU09OX1RBQkxFIGNhbiBiZSB1c2VkIG9ubHkgaW4gRlJPTSBjbGF1 c2UpCitTRUxFQ1QgSlNPTl9UQUJMRSgnW10nLCAnJCcpOworRVJST1I6ICBzeW50YXggZXJyb3Ig YXQgb3IgbmVhciAiKCIKK0xJTkUgMTogU0VMRUNUIEpTT05fVEFCTEUoJ1tdJywgJyQnKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICBeCistLSBTaG91bGQgZmFpbCAobm8gY29sdW1ucykKK1NF TEVDVCAqIEZST00gSlNPTl9UQUJMRShOVUxMLCAnJCcgQ09MVU1OUyAoKSk7CitFUlJPUjogIHN5 bnRheCBlcnJvciBhdCBvciBuZWFyICIpIgorTElORSAxOiBTRUxFQ1QgKiBGUk9NIEpTT05fVEFC TEUoTlVMTCwgJyQnIENPTFVNTlMgKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSAoTlVMTDo6 anNvbmIsICckJyBDT0xVTU5TICh2MSB0aW1lc3RhbXApKSBBUyBmICh2MSwgdjIpOworRVJST1I6 ICBKU09OX1RBQkxFIGZ1bmN0aW9uIGhhcyAxIGNvbHVtbnMgYXZhaWxhYmxlIGJ1dCAyIGNvbHVt bnMgc3BlY2lmaWVkCistLSBOVUxMID0+IGVtcHR5IHRhYmxlCitTRUxFQ1QgKiBGUk9NIEpTT05f VEFCTEUoTlVMTDo6anNvbmIsICckJyBDT0xVTU5TIChmb28gaW50KSkgYmFyOworIGZvbyAKKy0t LS0tCisoMCByb3dzKQorCistLQorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcxMjMn LCAnJCcKKwlDT0xVTU5TIChpdGVtIGludCBQQVRIICckJywgZm9vIGludCkpIGJhcjsKKyBpdGVt IHwgZm9vIAorLS0tLS0tKy0tLS0tCisgIDEyMyB8ICAgIAorKDEgcm93KQorCistLSBKU09OX1RB QkxFOiBiYXNpYyBmdW5jdGlvbmFsaXR5CitDUkVBVEUgRE9NQUlOIGpzb25iX3Rlc3RfZG9tYWlu IEFTIHRleHQgQ0hFQ0sgKHZhbHVlIDw+ICdmb28nKTsKK0NSRUFURSBURU1QIFRBQkxFIGpzb25f dGFibGVfdGVzdCAoanMpIEFTCisJKFZBTFVFUworCQkoJzEnKSwKKwkJKCdbXScpLAorCQkoJ3t9 JyksCisJCSgnWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRy dWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXScpCisJKTsKKy0tIFJlZ3VsYXIg InVuZm9ybWF0dGVkIiBjb2x1bW5zCitTRUxFQ1QgKgorRlJPTSBqc29uX3RhYmxlX3Rlc3QgdmFs cworCUxFRlQgT1VURVIgSk9JTgorCUpTT05fVEFCTEUoCisJCXZhbHMuanM6Ompzb25iLCAnbGF4 ICRbKl0nCisJCUNPTFVNTlMgKAorCQkJaWQgRk9SIE9SRElOQUxJVFksCisJCQkiaW50IiBpbnQg UEFUSCAnJCcsCisJCQkidGV4dCIgdGV4dCBQQVRIICckJywKKwkJCSJjaGFyKDQpIiBjaGFyKDQp IFBBVEggJyQnLAorCQkJImJvb2wiIGJvb2wgUEFUSCAnJCcsCisJCQkibnVtZXJpYyIgbnVtZXJp YyBQQVRIICckJywKKwkJCSJkb21haW4iIGpzb25iX3Rlc3RfZG9tYWluIFBBVEggJyQnLAorCQkJ anMganNvbiBQQVRIICckJywKKwkJCWpiIGpzb25iIFBBVEggJyQnCisJCSkKKwkpIGp0CisJT04g dHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaWQgfCBpbnQgfCAgdGV4dCAg IHwgY2hhcig0KSB8IGJvb2wgfCBudW1lcmljIHwgZG9tYWluICB8ICAgICAganMgICAgICB8ICAg ICAgamIgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tKy0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0KKyAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEgfCAg IDEgfCAxICAgICAgIHwgMSAgICAgICB8ICAgICAgfCAgICAgICAxIHwgMSAgICAgICB8IDEgICAg ICAgICAgICB8IDEKKyBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgfCAgICAgfCAg ICAgICAgIHwgICAgICAgICB8ICAgICAgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAg ICB8IAorIHt9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMSB8ICAgICB8ICAgICAgICAg fCAgICAgICAgIHwgICAgICB8ICAgICAgICAgfCAgICAgICAgIHwge30gICAgICAgICAgIHwge30K KyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJh YWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgIDEgfCAgIDEgfCAxICAgICAgIHwgMSAg ICAgICB8ICAgICAgfCAgICAgICAxIHwgMSAgICAgICB8IDEgICAgICAgICAgICB8IDEKKyBbMSwg MS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAx MjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgIDIgfCAgIDEgfCAxLjIzICAgIHwgMS4yMyAgICB8 ICAgICAgfCAgICAxLjIzIHwgMS4yMyAgICB8IDEuMjMgICAgICAgICB8IDEuMjMKKyBbMSwgMS4y MywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9 LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgIDMgfCAgIDIgfCAyICAgICAgIHwgMiAgICAgICB8ICAg ICAgfCAgICAgICAyIHwgMiAgICAgICB8ICIyIiAgICAgICAgICB8ICIyIgorIFsxLCAxLjIzLCAi MiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJb MSwyXSIsICJcInN0clwiIl0gfCAgNCB8ICAgICB8IGFhYWFhYWEgfCBhYWFhICAgIHwgICAgICB8 ICAgICAgICAgfCBhYWFhYWFhIHwgImFhYWFhYWEiICAgIHwgImFhYWFhYWEiCisgWzEsIDEuMjMs ICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwg IlsxLDJdIiwgIlwic3RyXCIiXSB8ICA1IHwgICAgIHwgZm9vICAgICB8IGZvbyAgICAgfCAgICAg IHwgICAgICAgICB8ICAgICAgICAgfCAiZm9vIiAgICAgICAgfCAiZm9vIgorIFsxLCAxLjIzLCAi MiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJb MSwyXSIsICJcInN0clwiIl0gfCAgNiB8ICAgICB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICB8 ICAgICAgICAgfCAgICAgICAgIHwgbnVsbCAgICAgICAgIHwgbnVsbAorIFsxLCAxLjIzLCAiMiIs ICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwy XSIsICJcInN0clwiIl0gfCAgNyB8ICAgMCB8IGZhbHNlICAgfCBmYWxzICAgIHwgZiAgICB8ICAg ICAgICAgfCBmYWxzZSAgIHwgZmFsc2UgICAgICAgIHwgZmFsc2UKKyBbMSwgMS4yMywgIjIiLCAi YWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0i LCAiXCJzdHJcIiJdIHwgIDggfCAgIDEgfCB0cnVlICAgIHwgdHJ1ZSAgICB8IHQgICAgfCAgICAg ICAgIHwgdHJ1ZSAgICB8IHRydWUgICAgICAgICB8IHRydWUKKyBbMSwgMS4yMywgIjIiLCAiYWFh YWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAi XCJzdHJcIiJdIHwgIDkgfCAgICAgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgfCAgICAgICAg IHwgICAgICAgICB8IHsiYWFhIjogMTIzfSB8IHsiYWFhIjogMTIzfQorIFsxLCAxLjIzLCAiMiIs ICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwy XSIsICJcInN0clwiIl0gfCAxMCB8ICAgICB8IFsxLDJdICAgfCBbMSwyICAgIHwgICAgICB8ICAg ICAgICAgfCBbMSwyXSAgIHwgIlsxLDJdIiAgICAgIHwgIlsxLDJdIgorIFsxLCAxLjIzLCAiMiIs ICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwy XSIsICJcInN0clwiIl0gfCAxMSB8ICAgICB8ICJzdHIiICAgfCAic3RyICAgIHwgICAgICB8ICAg ICAgICAgfCAic3RyIiAgIHwgIlwic3RyXCIiICAgIHwgIlwic3RyXCIiCisoMTQgcm93cykKKwor LS0gImZvcm1hdHRlZCIgY29sdW1ucworU0VMRUNUICoKK0ZST00ganNvbl90YWJsZV90ZXN0IHZh bHMKKwlMRUZUIE9VVEVSIEpPSU4KKwlKU09OX1RBQkxFKAorCQl2YWxzLmpzOjpqc29uYiwgJ2xh eCAkWypdJworCQlDT0xVTU5TICgKKwkJCWlkIEZPUiBPUkRJTkFMSVRZLAorCQkJanN0IHRleHQg ICAgRk9STUFUIEpTT04gIFBBVEggJyQnLAorCQkJanNjIGNoYXIoNCkgRk9STUFUIEpTT04gIFBB VEggJyQnLAorCQkJanN2IHZhcmNoYXIoNCkgRk9STUFUIEpTT04gIFBBVEggJyQnLAorCQkJanNi IGpzb25iIEZPUk1BVCBKU09OIFBBVEggJyQnLAorCQkJanNicSBqc29uYiBGT1JNQVQgSlNPTiBQ QVRIICckJyBPTUlUIFFVT1RFUworCQkpCisJKSBqdAorCU9OIHRydWU7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqcyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IGlkIHwgICAgIGpzdCAgICAgIHwganNjICB8IGpzdiAgfCAgICAg anNiICAgICAgfCAgICAganNicSAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0rLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tCisgMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxIHwgMSAgICAgICAgICAg IHwgMSAgICB8IDEgICAgfCAxICAgICAgICAgICAgfCAxCisgW10gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgIHwgICAgICAgICAgICAgIHwgICAgICB8ICAgICAgfCAgICAgICAgICAgICAg fCAKKyB7fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEgfCB7fSAgICAgICAgICAgfCB7 fSAgIHwge30gICB8IHt9ICAgICAgICAgICB8IHt9CisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEi LCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3Ry XCIiXSB8ICAxIHwgMSAgICAgICAgICAgIHwgMSAgICB8IDEgICAgfCAxICAgICAgICAgICAgfCAx CisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsi YWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICAyIHwgMS4yMyAgICAgICAgIHwgMS4y MyB8IDEuMjMgfCAxLjIzICAgICAgICAgfCAxLjIzCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEi LCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3Ry XCIiXSB8ICAzIHwgIjIiICAgICAgICAgIHwgIjIiICB8ICIyIiAgfCAiMiIgICAgICAgICAgfCAy CisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsi YWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICA0IHwgImFhYWFhYWEiICAgIHwgImFh YSB8ICJhYWEgfCAiYWFhYWFhYSIgICAgfCAKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJm b28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJd IHwgIDUgfCAiZm9vIiAgICAgICAgfCAiZm9vIHwgImZvbyB8ICJmb28iICAgICAgICB8IAorIFsx LCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6 IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgNiB8IG51bGwgICAgICAgICB8IG51bGwgfCBu dWxsIHwgbnVsbCAgICAgICAgIHwgbnVsbAorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZv byIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0g fCAgNyB8IGZhbHNlICAgICAgICB8IGZhbHMgfCBmYWxzIHwgZmFsc2UgICAgICAgIHwgZmFsc2UK KyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJh YWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgIDggfCB0cnVlICAgICAgICAgfCB0cnVl IHwgdHJ1ZSB8IHRydWUgICAgICAgICB8IHRydWUKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIs ICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJc IiJdIHwgIDkgfCB7ImFhYSI6IDEyM30gfCB7ImFhIHwgeyJhYSB8IHsiYWFhIjogMTIzfSB8IHsi YWFhIjogMTIzfQorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNl LCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAxMCB8ICJbMSwyXSIg ICAgICB8ICJbMSwgfCAiWzEsIHwgIlsxLDJdIiAgICAgIHwgWzEsIDJdCisgWzEsIDEuMjMsICIy IiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsx LDJdIiwgIlwic3RyXCIiXSB8IDExIHwgIlwic3RyXCIiICAgIHwgIlwicyB8ICJcInMgfCAiXCJz dHJcIiIgICAgfCAic3RyIgorKDE0IHJvd3MpCisKKy0tIEVYSVNUUyBjb2x1bW5zCitTRUxFQ1Qg KgorRlJPTSBqc29uX3RhYmxlX3Rlc3QgdmFscworCUxFRlQgT1VURVIgSk9JTgorCUpTT05fVEFC TEUoCisJCXZhbHMuanM6Ompzb25iLCAnbGF4ICRbKl0nCisJCUNPTFVNTlMgKAorCQkJaWQgRk9S IE9SRElOQUxJVFksCisJCQlleGlzdHMxIGJvb2wgRVhJU1RTIFBBVEggJyQuYWFhJywKKwkJCWV4 aXN0czIgaW50IEVYSVNUUyBQQVRIICckLmFhYScsCisJCQlleGlzdHMzIGludCBFWElTVFMgUEFU SCAnc3RyaWN0ICQuYWFhJyBVTktOT1dOIE9OIEVSUk9SLAorCQkJZXhpc3RzNCB0ZXh0IEVYSVNU UyBQQVRIICdzdHJpY3QgJC5hYWEnIEZBTFNFIE9OIEVSUk9SCisJCSkKKwkpIGp0CisJT04gdHJ1 ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaWQgfCBleGlzdHMxIHwgZXhpc3Rz MiB8IGV4aXN0czMgfCBleGlzdHM0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tCisgMSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAxIHwgZiAgICAgICB8ICAgICAgIDAgfCAgICAgICAgIHwgZmFs c2UKKyBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgfCAgICAgICAgIHwgICAgICAg ICB8ICAgICAgICAgfCAKKyB7fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEgfCBmICAg ICAgIHwgICAgICAgMCB8ICAgICAgICAgfCBmYWxzZQorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFh IiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0 clwiIl0gfCAgMSB8IGYgICAgICAgfCAgICAgICAwIHwgICAgICAgICB8IGZhbHNlCisgWzEsIDEu MjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIz fSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICAyIHwgZiAgICAgICB8ICAgICAgIDAgfCAgICAgICAg IHwgZmFsc2UKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwg dHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgIDMgfCBmICAgICAgIHwg ICAgICAgMCB8ICAgICAgICAgfCBmYWxzZQorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZv byIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0g fCAgNCB8IGYgICAgICAgfCAgICAgICAwIHwgICAgICAgICB8IGZhbHNlCisgWzEsIDEuMjMsICIy IiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsx LDJdIiwgIlwic3RyXCIiXSB8ICA1IHwgZiAgICAgICB8ICAgICAgIDAgfCAgICAgICAgIHwgZmFs c2UKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwg eyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgIDYgfCBmICAgICAgIHwgICAgICAg MCB8ICAgICAgICAgfCBmYWxzZQorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51 bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgNyB8 IGYgICAgICAgfCAgICAgICAwIHwgICAgICAgICB8IGZhbHNlCisgWzEsIDEuMjMsICIyIiwgImFh YWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwg Ilwic3RyXCIiXSB8ICA4IHwgZiAgICAgICB8ICAgICAgIDAgfCAgICAgICAgIHwgZmFsc2UKKyBb MSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEi OiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgIDkgfCB0ICAgICAgIHwgICAgICAgMSB8ICAg ICAgIDEgfCB0cnVlCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFs c2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8IDEwIHwgZiAgICAg ICB8ICAgICAgIDAgfCAgICAgICAgIHwgZmFsc2UKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIs ICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJc IiJdIHwgMTEgfCBmICAgICAgIHwgICAgICAgMCB8ICAgICAgICAgfCBmYWxzZQorKDE0IHJvd3Mp CisKKy0tIE90aGVyIG1pc2NlbGxhbm91cyBjaGVja3MKK1NFTEVDVCAqCitGUk9NIGpzb25fdGFi bGVfdGVzdCB2YWxzCisJTEVGVCBPVVRFUiBKT0lOCisJSlNPTl9UQUJMRSgKKwkJdmFscy5qczo6 anNvbmIsICdsYXggJFsqXScKKwkJQ09MVU1OUyAoCisJCQlpZCBGT1IgT1JESU5BTElUWSwKKwkJ CWFhYSBpbnQsIC0tICJhYWEiIGhhcyBpbXBsaWNpdCBwYXRoICckLiJhYWEiJworCQkJYWFhMSBp bnQgUEFUSCAnJC5hYWEnLAorCQkJanMyIGpzb24gUEFUSCAnJCcsCisJCQlqc2IydyBqc29uYiBQ QVRIICckJyBXSVRIIFdSQVBQRVIsCisJCQlqc2IycSBqc29uYiBQQVRIICckJyBPTUlUIFFVT1RF UywKKwkJCWlhIGludFtdIFBBVEggJyQnLAorCQkJdGEgdGV4dFtdIFBBVEggJyQnLAorCQkJamJh IGpzb25iW10gUEFUSCAnJCcKKwkJKQorCSkganQKKwlPTiB0cnVlOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAganMgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCBpZCB8IGFhYSB8IGFhYTEgfCAgICAganMyICAgICAgfCAgICAganNi MncgICAgICB8ICAgIGpzYjJxICAgICB8IGlhIHwgdGEgfCBqYmEgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLSstLS0tLSstLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tKy0tLS0rLS0tLS0KKyAxICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgIDEgfCAgICAgfCAgICAgIHwgMSAgICAgICAgICAgIHwgWzFdICAgICAg ICAgICAgfCAxICAgICAgICAgICAgfCAgICB8ICAgIHwgCisgW10gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgIHwgICAgIHwgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg IHwgICAgICAgICAgICAgIHwgICAgfCAgICB8IAorIHt9ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgMSB8ICAgICB8ICAgICAgfCB7fSAgICAgICAgICAgfCBbe31dICAgICAgICAgICB8IHt9 ICAgICAgICAgICB8ICAgIHwgICAgfCAKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28i LCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwg IDEgfCAgICAgfCAgICAgIHwgMSAgICAgICAgICAgIHwgWzFdICAgICAgICAgICAgfCAxICAgICAg ICAgICAgfCAgICB8ICAgIHwgCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVs bCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICAyIHwg ICAgIHwgICAgICB8IDEuMjMgICAgICAgICB8IFsxLjIzXSAgICAgICAgIHwgMS4yMyAgICAgICAg IHwgICAgfCAgICB8IAorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZh bHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgMyB8ICAgICB8 ICAgICAgfCAiMiIgICAgICAgICAgfCBbIjIiXSAgICAgICAgICB8IDIgICAgICAgICAgICB8ICAg IHwgICAgfCAKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwg dHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgIDQgfCAgICAgfCAgICAg IHwgImFhYWFhYWEiICAgIHwgWyJhYWFhYWFhIl0gICAgfCAgICAgICAgICAgICAgfCAgICB8ICAg IHwgCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUs IHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICA1IHwgICAgIHwgICAgICB8ICJm b28iICAgICAgICB8IFsiZm9vIl0gICAgICAgIHwgICAgICAgICAgICAgIHwgICAgfCAgICB8IAor IFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFh YSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgNiB8ICAgICB8ICAgICAgfCBudWxsICAg ICAgICAgfCBbbnVsbF0gICAgICAgICB8IG51bGwgICAgICAgICB8ICAgIHwgICAgfCAKKyBbMSwg MS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAx MjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgIDcgfCAgICAgfCAgICAgIHwgZmFsc2UgICAgICAg IHwgW2ZhbHNlXSAgICAgICAgfCBmYWxzZSAgICAgICAgfCAgICB8ICAgIHwgCisgWzEsIDEuMjMs ICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwg IlsxLDJdIiwgIlwic3RyXCIiXSB8ICA4IHwgICAgIHwgICAgICB8IHRydWUgICAgICAgICB8IFt0 cnVlXSAgICAgICAgIHwgdHJ1ZSAgICAgICAgIHwgICAgfCAgICB8IAorIFsxLCAxLjIzLCAiMiIs ICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwy XSIsICJcInN0clwiIl0gfCAgOSB8IDEyMyB8ICAxMjMgfCB7ImFhYSI6IDEyM30gfCBbeyJhYWEi OiAxMjN9XSB8IHsiYWFhIjogMTIzfSB8ICAgIHwgICAgfCAKKyBbMSwgMS4yMywgIjIiLCAiYWFh YWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAi XCJzdHJcIiJdIHwgMTAgfCAgICAgfCAgICAgIHwgIlsxLDJdIiAgICAgIHwgWyJbMSwyXSJdICAg ICAgfCBbMSwgMl0gICAgICAgfCAgICB8ICAgIHwgCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEi LCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3Ry XCIiXSB8IDExIHwgICAgIHwgICAgICB8ICJcInN0clwiIiAgICB8IFsiXCJzdHJcIiJdICAgIHwg InN0ciIgICAgICAgIHwgICAgfCAgICB8IAorKDE0IHJvd3MpCisKKy0tIEpTT05fVEFCTEU6IFRl c3QgYmFja3dhcmQgcGFyc2luZworQ1JFQVRFIFZJRVcganNvbmJfdGFibGVfdmlldyBBUworU0VM RUNUICogRlJPTQorCUpTT05fVEFCTEUoCisJCWpzb25iICdudWxsJywgJ2xheCAkWypdJyBQQVNT SU5HIDEgKyAyIEFTIGEsIGpzb24gJyJmb28iJyBBUyAiYiBjIgorCQlDT0xVTU5TICgKKwkJCWlk IEZPUiBPUkRJTkFMSVRZLAorCQkJImludCIgaW50IFBBVEggJyQnLAorCQkJInRleHQiIHRleHQg UEFUSCAnJCcsCisJCQkiY2hhcig0KSIgY2hhcig0KSBQQVRIICckJywKKwkJCSJib29sIiBib29s IFBBVEggJyQnLAorCQkJIm51bWVyaWMiIG51bWVyaWMgUEFUSCAnJCcsCisJCQkiZG9tYWluIiBq c29uYl90ZXN0X2RvbWFpbiBQQVRIICckJywKKwkJCWpzIGpzb24gUEFUSCAnJCcsCisJCQlqYiBq c29uYiBQQVRIICckJywKKwkJCWpzdCB0ZXh0ICAgIEZPUk1BVCBKU09OICBQQVRIICckJywKKwkJ CWpzYyBjaGFyKDQpIEZPUk1BVCBKU09OICBQQVRIICckJywKKwkJCWpzdiB2YXJjaGFyKDQpIEZP Uk1BVCBKU09OICBQQVRIICckJywKKwkJCWpzYiBqc29uYiAgIEZPUk1BVCBKU09OIFBBVEggJyQn LAorCQkJanNicSBqc29uYiBGT1JNQVQgSlNPTiBQQVRIICckJyBPTUlUIFFVT1RFUywKKwkJCWFh YSBpbnQsIC0tIGltcGxpY2l0IHBhdGggJyQuImFhYSInLAorCQkJYWFhMSBpbnQgUEFUSCAnJC5h YWEnLAorCQkJZXhpc3RzMSBib29sIEVYSVNUUyBQQVRIICckLmFhYScsCisJCQlleGlzdHMyIGlu dCBFWElTVFMgUEFUSCAnJC5hYWEnIFRSVUUgT04gRVJST1IsCisJCQlleGlzdHMzIHRleHQgRVhJ U1RTIFBBVEggJ3N0cmljdCAkLmFhYScgVU5LTk9XTiBPTiBFUlJPUiwKKwkJCWpzMiBqc29uIFBB VEggJyQnLAorCQkJanNiMncganNvbmIgUEFUSCAnJCcgV0lUSCBXUkFQUEVSLAorCQkJanNiMnEg anNvbmIgUEFUSCAnJCcgT01JVCBRVU9URVMsCisJCQlpYSBpbnRbXSBQQVRIICckJywKKwkJCXRh IHRleHRbXSBQQVRIICckJywKKwkJCWpiYSBqc29uYltdIFBBVEggJyQnLAorCQkJTkVTVEVEIFBB VEggJyRbMV0nIEFTIHAxIENPTFVNTlMgKAorCQkJCWExIGludCwKKwkJCQlORVNURUQgUEFUSCAn JFsqXScgQVMgInAxIDEiIENPTFVNTlMgKAorCQkJCQlhMTEgdGV4dAorCQkJCSksCisJCQkJYjEg dGV4dAorCQkJKSwKKwkJCU5FU1RFRCBQQVRIICckWzJdJyBBUyBwMiBDT0xVTU5TICgKKwkJCQlO RVNURUQgUEFUSCAnJFsqXScgQVMgInAyOjEiIENPTFVNTlMgKAorCQkJCQlhMjEgdGV4dAorCQkJ CSksCisJCQkJTkVTVEVEIFBBVEggJyRbKl0nIEFTIHAyMiBDT0xVTU5TICgKKwkJCQkJYTIyIHRl eHQKKwkJCQkpCisJCQkpCisJCSkKKwkpOworXHN2IGpzb25iX3RhYmxlX3ZpZXcKK0NSRUFURSBP UiBSRVBMQUNFIFZJRVcgcHVibGljLmpzb25iX3RhYmxlX3ZpZXcgQVMKKyBTRUxFQ1QgaWQsCisg ICAgImludCIsCisgICAgdGV4dCwKKyAgICAiY2hhcig0KSIsCisgICAgYm9vbCwKKyAgICAibnVt ZXJpYyIsCisgICAgZG9tYWluLAorICAgIGpzLAorICAgIGpiLAorICAgIGpzdCwKKyAgICBqc2Ms CisgICAganN2LAorICAgIGpzYiwKKyAgICBqc2JxLAorICAgIGFhYSwKKyAgICBhYWExLAorICAg IGV4aXN0czEsCisgICAgZXhpc3RzMiwKKyAgICBleGlzdHMzLAorICAgIGpzMiwKKyAgICBqc2Iy dywKKyAgICBqc2IycSwKKyAgICBpYSwKKyAgICB0YSwKKyAgICBqYmEsCisgICAgYTEsCisgICAg YjEsCisgICAgYTExLAorICAgIGEyMSwKKyAgICBhMjIKKyAgIEZST00gSlNPTl9UQUJMRSgKKyAg ICAgICAgICAgICdudWxsJzo6anNvbmIsICckWypdJyBBUyBqc29uX3RhYmxlX3BhdGhfMAorICAg ICAgICAgICAgUEFTU0lORworICAgICAgICAgICAgICAgIDEgKyAyIEFTIGEsCisgICAgICAgICAg ICAgICAgJyJmb28iJzo6anNvbiBBUyAiYiBjIgorICAgICAgICAgICAgQ09MVU1OUyAoCisgICAg ICAgICAgICAgICAgaWQgRk9SIE9SRElOQUxJVFksCisgICAgICAgICAgICAgICAgImludCIgaW50 ZWdlciBQQVRIICckJywKKyAgICAgICAgICAgICAgICB0ZXh0IHRleHQgUEFUSCAnJCcsCisgICAg ICAgICAgICAgICAgImNoYXIoNCkiIGNoYXJhY3Rlcig0KSBQQVRIICckJywKKyAgICAgICAgICAg ICAgICBib29sIGJvb2xlYW4gUEFUSCAnJCcsCisgICAgICAgICAgICAgICAgIm51bWVyaWMiIG51 bWVyaWMgUEFUSCAnJCcsCisgICAgICAgICAgICAgICAgZG9tYWluIGpzb25iX3Rlc3RfZG9tYWlu IFBBVEggJyQnLAorICAgICAgICAgICAgICAgIGpzIGpzb24gUEFUSCAnJCcsCisgICAgICAgICAg ICAgICAgamIganNvbmIgUEFUSCAnJCcsCisgICAgICAgICAgICAgICAganN0IHRleHQgRk9STUFU IEpTT04gUEFUSCAnJCcsCisgICAgICAgICAgICAgICAganNjIGNoYXJhY3Rlcig0KSBGT1JNQVQg SlNPTiBQQVRIICckJywKKyAgICAgICAgICAgICAgICBqc3YgY2hhcmFjdGVyIHZhcnlpbmcoNCkg Rk9STUFUIEpTT04gUEFUSCAnJCcsCisgICAgICAgICAgICAgICAganNiIGpzb25iIFBBVEggJyQn LAorICAgICAgICAgICAgICAgIGpzYnEganNvbmIgUEFUSCAnJCcgT01JVCBRVU9URVMsCisgICAg ICAgICAgICAgICAgYWFhIGludGVnZXIgUEFUSCAnJC4iYWFhIicsCisgICAgICAgICAgICAgICAg YWFhMSBpbnRlZ2VyIFBBVEggJyQuImFhYSInLAorICAgICAgICAgICAgICAgIGV4aXN0czEgYm9v bGVhbiBFWElTVFMgUEFUSCAnJC4iYWFhIicsCisgICAgICAgICAgICAgICAgZXhpc3RzMiBpbnRl Z2VyIEVYSVNUUyBQQVRIICckLiJhYWEiJyBUUlVFIE9OIEVSUk9SLAorICAgICAgICAgICAgICAg IGV4aXN0czMgdGV4dCBFWElTVFMgUEFUSCAnc3RyaWN0ICQuImFhYSInIFVOS05PV04gT04gRVJS T1IsCisgICAgICAgICAgICAgICAganMyIGpzb24gUEFUSCAnJCcsCisgICAgICAgICAgICAgICAg anNiMncganNvbmIgUEFUSCAnJCcgV0lUSCBVTkNPTkRJVElPTkFMIFdSQVBQRVIsCisgICAgICAg ICAgICAgICAganNiMnEganNvbmIgUEFUSCAnJCcgT01JVCBRVU9URVMsCisgICAgICAgICAgICAg ICAgaWEgaW50ZWdlcltdIFBBVEggJyQnLAorICAgICAgICAgICAgICAgIHRhIHRleHRbXSBQQVRI ICckJywKKyAgICAgICAgICAgICAgICBqYmEganNvbmJbXSBQQVRIICckJywKKyAgICAgICAgICAg ICAgICBORVNURUQgUEFUSCAnJFsxXScgQVMgcDEKKyAgICAgICAgICAgICAgICBDT0xVTU5TICgK KyAgICAgICAgICAgICAgICAgICAgYTEgaW50ZWdlciBQQVRIICckLiJhMSInLAorICAgICAgICAg ICAgICAgICAgICBiMSB0ZXh0IFBBVEggJyQuImIxIicsCisgICAgICAgICAgICAgICAgICAgIE5F U1RFRCBQQVRIICckWypdJyBBUyAicDEgMSIKKyAgICAgICAgICAgICAgICAgICAgQ09MVU1OUyAo CisgICAgICAgICAgICAgICAgICAgICAgICBhMTEgdGV4dCBQQVRIICckLiJhMTEiJworICAgICAg ICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBORVNU RUQgUEFUSCAnJFsyXScgQVMgcDIKKyAgICAgICAgICAgICAgICBDT0xVTU5TICgKKyAgICAgICAg ICAgICAgICAgICAgTkVTVEVEIFBBVEggJyRbKl0nIEFTICJwMjoxIgorICAgICAgICAgICAgICAg ICAgICBDT0xVTU5TICgKKyAgICAgICAgICAgICAgICAgICAgICAgIGEyMSB0ZXh0IFBBVEggJyQu ImEyMSInCisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgIE5FU1RF RCBQQVRIICckWypdJyBBUyBwMjIKKyAgICAgICAgICAgICAgICAgICAgQ09MVU1OUyAoCisgICAg ICAgICAgICAgICAgICAgICAgICBhMjIgdGV4dCBQQVRIICckLiJhMjIiJworICAgICAgICAgICAg ICAgICAgICApCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICAgICAg UExBTiAoanNvbl90YWJsZV9wYXRoXzAgT1VURVIgKChwMSBPVVRFUiAicDEgMSIpIFVOSU9OIChw MiBPVVRFUiAoInAyOjEiIFVOSU9OIHAyMikpKSkKKyAgICAgICAgKQorRVhQTEFJTiAoQ09TVFMg T0ZGLCBWRVJCT1NFKSBTRUxFQ1QgKiBGUk9NIGpzb25iX3RhYmxlX3ZpZXc7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJqc29uX3RhYmxlIgorICAgT3V0cHV0OiAi anNvbl90YWJsZSIuaWQsICJqc29uX3RhYmxlIi4iaW50IiwgImpzb25fdGFibGUiLnRleHQsICJq c29uX3RhYmxlIi4iY2hhcig0KSIsICJqc29uX3RhYmxlIi5ib29sLCAianNvbl90YWJsZSIuIm51 bWVyaWMiLCAianNvbl90YWJsZSIuZG9tYWluLCAianNvbl90YWJsZSIuanMsICJqc29uX3RhYmxl Ii5qYiwgImpzb25fdGFibGUiLmpzdCwgImpzb25fdGFibGUiLmpzYywgImpzb25fdGFibGUiLmpz diwgImpzb25fdGFibGUiLmpzYiwgImpzb25fdGFibGUiLmpzYnEsICJqc29uX3RhYmxlIi5hYWEs ICJqc29uX3RhYmxlIi5hYWExLCAianNvbl90YWJsZSIuZXhpc3RzMSwgImpzb25fdGFibGUiLmV4 aXN0czIsICJqc29uX3RhYmxlIi5leGlzdHMzLCAianNvbl90YWJsZSIuanMyLCAianNvbl90YWJs ZSIuanNiMncsICJqc29uX3RhYmxlIi5qc2IycSwgImpzb25fdGFibGUiLmlhLCAianNvbl90YWJs ZSIudGEsICJqc29uX3RhYmxlIi5qYmEsICJqc29uX3RhYmxlIi5hMSwgImpzb25fdGFibGUiLmIx LCAianNvbl90YWJsZSIuYTExLCAianNvbl90YWJsZSIuYTIxLCAianNvbl90YWJsZSIuYTIyCisg ICBUYWJsZSBGdW5jdGlvbiBDYWxsOiBKU09OX1RBQkxFKCdudWxsJzo6anNvbmIsICckWypdJyBB UyBqc29uX3RhYmxlX3BhdGhfMCBQQVNTSU5HIDMgQVMgYSwgJyJmb28iJzo6anNvbmIgQVMgImIg YyIgQ09MVU1OUyAoaWQgRk9SIE9SRElOQUxJVFksICJpbnQiIGludGVnZXIgUEFUSCAnJCcsIHRl eHQgdGV4dCBQQVRIICckJywgImNoYXIoNCkiIGNoYXJhY3Rlcig0KSBQQVRIICckJywgYm9vbCBi b29sZWFuIFBBVEggJyQnLCAibnVtZXJpYyIgbnVtZXJpYyBQQVRIICckJywgZG9tYWluIGpzb25i X3Rlc3RfZG9tYWluIFBBVEggJyQnLCBqcyBqc29uIFBBVEggJyQnLCBqYiBqc29uYiBQQVRIICck JywganN0IHRleHQgRk9STUFUIEpTT04gUEFUSCAnJCcsIGpzYyBjaGFyYWN0ZXIoNCkgRk9STUFU IEpTT04gUEFUSCAnJCcsIGpzdiBjaGFyYWN0ZXIgdmFyeWluZyg0KSBGT1JNQVQgSlNPTiBQQVRI ICckJywganNiIGpzb25iIFBBVEggJyQnLCBqc2JxIGpzb25iIFBBVEggJyQnIE9NSVQgUVVPVEVT LCBhYWEgaW50ZWdlciBQQVRIICckLiJhYWEiJywgYWFhMSBpbnRlZ2VyIFBBVEggJyQuImFhYSIn LCBleGlzdHMxIGJvb2xlYW4gRVhJU1RTIFBBVEggJyQuImFhYSInLCBleGlzdHMyIGludGVnZXIg RVhJU1RTIFBBVEggJyQuImFhYSInIFRSVUUgT04gRVJST1IsIGV4aXN0czMgdGV4dCBFWElTVFMg UEFUSCAnc3RyaWN0ICQuImFhYSInIFVOS05PV04gT04gRVJST1IsIGpzMiBqc29uIFBBVEggJyQn LCBqc2IydyBqc29uYiBQQVRIICckJyBXSVRIIFVOQ09ORElUSU9OQUwgV1JBUFBFUiwganNiMnEg anNvbmIgUEFUSCAnJCcgT01JVCBRVU9URVMsIGlhIGludGVnZXJbXSBQQVRIICckJywgdGEgdGV4 dFtdIFBBVEggJyQnLCBqYmEganNvbmJbXSBQQVRIICckJywgTkVTVEVEIFBBVEggJyRbMV0nIEFT IHAxIENPTFVNTlMgKGExIGludGVnZXIgUEFUSCAnJC4iYTEiJywgYjEgdGV4dCBQQVRIICckLiJi MSInLCBORVNURUQgUEFUSCAnJFsqXScgQVMgInAxIDEiIENPTFVNTlMgKGExMSB0ZXh0IFBBVEgg JyQuImExMSInKSksIE5FU1RFRCBQQVRIICckWzJdJyBBUyBwMiBDT0xVTU5TICggTkVTVEVEIFBB VEggJyRbKl0nIEFTICJwMjoxIiBDT0xVTU5TIChhMjEgdGV4dCBQQVRIICckLiJhMjEiJyksIE5F U1RFRCBQQVRIICckWypdJyBBUyBwMjIgQ09MVU1OUyAoYTIyIHRleHQgUEFUSCAnJC4iYTIyIicp KSkgUExBTiAoanNvbl90YWJsZV9wYXRoXzAgT1VURVIgKChwMSBPVVRFUiAicDEgMSIpIFVOSU9O IChwMiBPVVRFUiAoInAyOjEiIFVOSU9OIHAyMikpKSkpCisoMyByb3dzKQorCitEUk9QIFZJRVcg anNvbmJfdGFibGVfdmlldzsKK0RST1AgRE9NQUlOIGpzb25iX3Rlc3RfZG9tYWluOworLS0gSlNP Tl9UQUJMRTogb25seSBvbmUgRk9SIE9SRElOQUxJVFkgY29sdW1ucyBhbGxvd2VkCitTRUxFQ1Qg KiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJzEnLCAnJCcgQ09MVU1OUyAoaWQgRk9SIE9SRElOQUxJ VFksIGlkMiBGT1IgT1JESU5BTElUWSwgYSBpbnQgUEFUSCAnJC5hJyBFUlJPUiBPTiBFTVBUWSkp IGp0OworRVJST1I6ICBjYW5ub3QgdXNlIG1vcmUgdGhhbiBvbmUgRk9SIE9SRElOQUxJVFkgY29s dW1uCitMSU5FIDE6IC4uLl9UQUJMRShqc29uYiAnMScsICckJyBDT0xVTU5TIChpZCBGT1IgT1JE SU5BTElUWSwgaWQyIEZPUiBPUi4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShq c29uYiAnMScsICckJyBDT0xVTU5TIChpZCBGT1IgT1JESU5BTElUWSwgYSBpbnQgUEFUSCAnJCcg RVJST1IgT04gRU1QVFkpKSBqdDsKKyBpZCB8IGEgCistLS0tKy0tLQorICAxIHwgMQorKDEgcm93 KQorCistLSBKU09OX1RBQkxFOiBPTiBFTVBUWS9PTiBFUlJPUiBiZWhhdmlvcgorU0VMRUNUICoK K0ZST00KKwkoVkFMVUVTICgnMScpLCAoJyJlcnIiJykpIHZhbHMoanMpLAorCUpTT05fVEFCTEUo dmFscy5qczo6anNvbmIsICckJyBDT0xVTU5TIChhIGludCBQQVRIICckJykpIGp0OworICBqcyAg IHwgYSAKKy0tLS0tLS0rLS0tCisgMSAgICAgfCAxCisgImVyciIgfCAgCisoMiByb3dzKQorCitT RUxFQ1QgKgorRlJPTQorCShWQUxVRVMgKCcxJyksICgnImVyciInKSkgdmFscyhqcykKKwkJTEVG VCBPVVRFUiBKT0lOCisJSlNPTl9UQUJMRSh2YWxzLmpzOjpqc29uYiwgJyQnIENPTFVNTlMgKGEg aW50IFBBVEggJyQnKSBFUlJPUiBPTiBFUlJPUikganQKKwkJT04gdHJ1ZTsKK0VSUk9SOiAgaW52 YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgaW50ZWdlcjogImVyciIKK1NFTEVDVCAqCitGUk9N CisJKFZBTFVFUyAoJzEnKSwgKCciZXJyIicpKSB2YWxzKGpzKQorCQlMRUZUIE9VVEVSIEpPSU4K KwlKU09OX1RBQkxFKHZhbHMuanM6Ompzb25iLCAnJCcgQ09MVU1OUyAoYSBpbnQgUEFUSCAnJCcg RVJST1IgT04gRVJST1IpKSBqdAorCQlPTiB0cnVlOworRVJST1I6ICBpbnZhbGlkIGlucHV0IHN5 bnRheCBmb3IgdHlwZSBpbnRlZ2VyOiAiZXJyIgorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpz b25iICcxJywgJyQnIENPTFVNTlMgKGEgaW50IFBBVEggJyQuYScgRVJST1IgT04gRU1QVFkpKSBq dDsKK0VSUk9SOiAgbm8gU1FML0pTT04gaXRlbQorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpz b25iICcxJywgJyQnIENPTFVNTlMgKGEgaW50IFBBVEggJ3N0cmljdCAkLmEnIEVSUk9SIE9OIEVN UFRZKSBFUlJPUiBPTiBFUlJPUikganQ7CitFUlJPUjogIGpzb25wYXRoIG1lbWJlciBhY2Nlc3Nv ciBjYW4gb25seSBiZSBhcHBsaWVkIHRvIGFuIG9iamVjdAorU0VMRUNUICogRlJPTSBKU09OX1RB QkxFKGpzb25iICcxJywgJyQnIENPTFVNTlMgKGEgaW50IFBBVEggJ2xheCAkLmEnIEVSUk9SIE9O IEVNUFRZKSBFUlJPUiBPTiBFUlJPUikganQ7CitFUlJPUjogIG5vIFNRTC9KU09OIGl0ZW0KK1NF TEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEgaW50IFBB VEggJyQnICAgREVGQVVMVCAxIE9OIEVNUFRZIERFRkFVTFQgMiBPTiBFUlJPUikpIGp0OworIGEg CistLS0KKyAyCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEi JywgJyQnIENPTFVNTlMgKGEgaW50IFBBVEggJ3N0cmljdCAkLmEnIERFRkFVTFQgMSBPTiBFTVBU WSBERUZBVUxUIDIgT04gRVJST1IpKSBqdDsKKyBhIAorLS0tCisgMgorKDEgcm93KQorCitTRUxF Q1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJhIicsICckJyBDT0xVTU5TIChhIGludCBQQVRI ICdsYXggJC5hJyBERUZBVUxUIDEgT04gRU1QVFkgREVGQVVMVCAyIE9OIEVSUk9SKSkganQ7Cisg YSAKKy0tLQorIDEKKygxIHJvdykKKworLS0gSlNPTl9UQUJMRTogRVhJU1RTIFBBVEggdHlwZXMK K1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEgaW50 NCBFWElTVFMgUEFUSCAnJC5hJykpOworIGEgCistLS0KKyAwCisoMSByb3cpCisKK1NFTEVDVCAq IEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEgaW50MiBFWElTVFMg UEFUSCAnJC5hJykpOworRVJST1I6ICBjYW5ub3QgY2FzdCB0eXBlIGJvb2xlYW4gdG8gc21hbGxp bnQKK0xJTkUgMTogLi4uRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJhIicsICckJyBD T0xVTU5TIChhIGludDIgRVhJLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpz b25iICciYSInLCAnJCcgQ09MVU1OUyAoYSBpbnQ4IEVYSVNUUyBQQVRIICckLmEnKSk7CitFUlJP UjogIGNhbm5vdCBjYXN0IHR5cGUgYm9vbGVhbiB0byBiaWdpbnQKK0xJTkUgMTogLi4uRUxFQ1Qg KiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJhIicsICckJyBDT0xVTU5TIChhIGludDggRVhJLi4u CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXgorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1O UyAoYSBmbG9hdDQgRVhJU1RTIFBBVEggJyQuYScpKTsKK0VSUk9SOiAgY2Fubm90IGNhc3QgdHlw ZSBib29sZWFuIHRvIHJlYWwKK0xJTkUgMTogLi4uRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNv bmIgJyJhIicsICckJyBDT0xVTU5TIChhIGZsb2F0NCBFLi4uCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNUICogRlJP TSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1OUyAoYSBjaGFyKDMpIEVYSVNUUyBQ QVRIICckLmEnKSk7CisgIGEgIAorLS0tLS0KKyBmYWwKKygxIHJvdykKKworU0VMRUNUICogRlJP TSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1OUyAoYSBqc29uIEVYSVNUUyBQQVRI ICckLmEnKSk7CitFUlJPUjogIGNhbm5vdCBjYXN0IHR5cGUgYm9vbGVhbiB0byBqc29uCitMSU5F IDE6IC4uLkVMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1OUyAo YSBqc29uIEVYSS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEi JywgJyQnIENPTFVNTlMgKGEganNvbmIgRVhJU1RTIFBBVEggJyQuYScpKTsKK0VSUk9SOiAgY2Fu bm90IGNhc3QgdHlwZSBib29sZWFuIHRvIGpzb25iCitMSU5FIDE6IC4uLkVMRUNUICogRlJPTSBK U09OX1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1OUyAoYSBqc29uYiBFWC4uLgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4K Ky0tIEpTT05fVEFCTEU6IFdSQVBQRVIvUVVPVEVTIGNsYXVzZXMgb24gc2NhbGFyIGNvbHVtbnMK K1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnIndvcmxkIicsICckJyBDT0xVTU5TIChp dGVtIHRleHQgUEFUSCAnJCcgS0VFUCBRVU9URVMgT04gU0NBTEFSIFNUUklORykpOworICBpdGVt ICAgCistLS0tLS0tLS0KKyAid29ybGQiCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gSlNPTl9U QUJMRShqc29uYiAnIndvcmxkIicsICckJyBDT0xVTU5TIChpdGVtIHRleHQgUEFUSCAnJCcgT01J VCBRVU9URVMgT04gU0NBTEFSIFNUUklORykpOworIGl0ZW0gIAorLS0tLS0tLQorIHdvcmxkCiso MSByb3cpCisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnIndvcmxkIicsICckJyBD T0xVTU5TIChpdGVtIHRleHQgRk9STUFUIEpTT04gUEFUSCAnJCcgS0VFUCBRVU9URVMpKTsKKyAg aXRlbSAgIAorLS0tLS0tLS0tCisgIndvcmxkIgorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIEpT T05fVEFCTEUoanNvbmIgJyJ3b3JsZCInLCAnJCcgQ09MVU1OUyAoaXRlbSB0ZXh0IEZPUk1BVCBK U09OIFBBVEggJyQnIE9NSVQgUVVPVEVTKSk7CisgaXRlbSAgCistLS0tLS0tCisgd29ybGQKKygx IHJvdykKKworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcid29ybGQiJywgJyQnIENP TFVNTlMgKGl0ZW0gdGV4dCBGT1JNQVQgSlNPTiBQQVRIICckJyBXSVRIT1VUIFdSQVBQRVIgS0VF UCBRVU9URVMpKTsKKyAgaXRlbSAgIAorLS0tLS0tLS0tCisgIndvcmxkIgorKDEgcm93KQorCitT RUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJ3b3JsZCInLCAnJCcgQ09MVU1OUyAoaXRl bSB0ZXh0IFBBVEggJyQnIFdJVEhPVVQgV1JBUFBFUiBPTUlUIFFVT1RFUykpOworIGl0ZW0gIAor LS0tLS0tLQorIHdvcmxkCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29u YiAnIndvcmxkIicsICckJyBDT0xVTU5TIChpdGVtIHRleHQgRk9STUFUIEpTT04gUEFUSCAnJCcg V0lUSCBXUkFQUEVSKSk7CisgICBpdGVtICAgIAorLS0tLS0tLS0tLS0KKyBbIndvcmxkIl0KKygx IHJvdykKKworLS0gRXJyb3I6IFFVT1RFUyBjbGF1c2UgbWVhbmluZ2xlc3Mgd2hlbiBXSVRIIFdS QVBQRVIgaXMgcHJlc2VudAorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcid29ybGQi JywgJyQnIENPTFVNTlMgKGl0ZW0gdGV4dCBGT1JNQVQgSlNPTiBQQVRIICckJyBXSVRIIFdSQVBQ RVIgS0VFUCBRVU9URVMpKTsKK0VSUk9SOiAgU1FML0pTT04gUVVPVEVTIGJlaGF2aW9yIG11c3Qg bm90IGJlIHNwZWNpZmllZCB3aGVuIFdJVEggV1JBUFBFUiBpcyB1c2VkCitMSU5FIDE6IC4uLlQg KiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJ3b3JsZCInLCAnJCcgQ09MVU1OUyAoaXRlbSB0ZXh0 IC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnIndvcmxkIicsICck JyBDT0xVTU5TIChpdGVtIHRleHQgUEFUSCAnJCcgV0lUSCBXUkFQUEVSIE9NSVQgUVVPVEVTKSk7 CitFUlJPUjogIFNRTC9KU09OIFFVT1RFUyBiZWhhdmlvciBtdXN0IG5vdCBiZSBzcGVjaWZpZWQg d2hlbiBXSVRIIFdSQVBQRVIgaXMgdXNlZAorTElORSAxOiAuLi5UICogRlJPTSBKU09OX1RBQkxF KGpzb25iICcid29ybGQiJywgJyQnIENPTFVNTlMgKGl0ZW0gdGV4dCAuLi4KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBK U09OX1RBQkxFOiBuZXN0ZWQgcGF0aHMgYW5kIHBsYW5zCistLSBTaG91bGQgZmFpbCAoSlNPTl9U QUJMRSBjb2x1bW5zIG11c3QgY29udGFpbiBleHBsaWNpdCBBUyBwYXRoCistLSBzcGVjaWZpY2F0 aW9ucyBpZiBleHBsaWNpdCBQTEFOIGNsYXVzZSBpcyB1c2VkKQorU0VMRUNUICogRlJPTSBKU09O X1RBQkxFKAorCWpzb25iICdbXScsICckJyAtLSBBUyA8cGF0aCBuYW1lPiByZXF1aXJlZCBoZXJl CisJQ09MVU1OUyAoCisJCWZvbyBpbnQgUEFUSCAnJCcKKwkpCisJUExBTiBERUZBVUxUIChVTklP TikKKykganQ7CitFUlJPUjogIGludmFsaWQgSlNPTl9UQUJMRSBleHByZXNzaW9uCitMSU5FIDI6 ICBqc29uYiAnW10nLCAnJCcgLS0gQVMgPHBhdGggbmFtZT4gcmVxdWlyZWQgaGVyZQorICAgICAg ICAgICAgICAgICAgICAgXgorREVUQUlMOiAgSlNPTl9UQUJMRSBwYXRoIG11c3QgY29udGFpbiBl eHBsaWNpdCBBUyBwYXRobmFtZSBzcGVjaWZpY2F0aW9uIGlmIGV4cGxpY2l0IFBMQU4gY2xhdXNl IGlzIHVzZWQKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnW10nLCAnJCcgQVMg cGF0aDEKKwlDT0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIENPTFVNTlMgKCAtLSBBUyA8cGF0 aCBuYW1lPiByZXF1aXJlZCBoZXJlCisJCQlmb28gaW50IFBBVEggJyQnCisJCSkKKwkpCisJUExB TiBERUZBVUxUIChVTklPTikKKykganQ7CitFUlJPUjogIGludmFsaWQgSlNPTl9UQUJMRSBleHBy ZXNzaW9uCitMSU5FIDQ6ICAgTkVTVEVEIFBBVEggJyQnIENPTFVNTlMgKCAtLSBBUyA8cGF0aCBu YW1lPiByZXF1aXJlZCBoZXJlCisgICAgICAgICAgXgorREVUQUlMOiAgSlNPTl9UQUJMRSBwYXRo IG11c3QgY29udGFpbiBleHBsaWNpdCBBUyBwYXRobmFtZSBzcGVjaWZpY2F0aW9uIGlmIGV4cGxp Y2l0IFBMQU4gY2xhdXNlIGlzIHVzZWQKKy0tIFNob3VsZCBmYWlsIChjb2x1bW4gbmFtZXMgbXVz dCBiZSBkaXN0aW5jdCkKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnW10nLCAn JCcgQVMgYQorCUNPTFVNTlMgKAorCQlhIGludAorCSkKKykganQ7CitFUlJPUjogIGR1cGxpY2F0 ZSBKU09OX1RBQkxFIGNvbHVtbiBuYW1lOiBhCitMSU5FIDQ6ICAgYSBpbnQKKyAgICAgICAgICBe CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ1tdJywgJyQnIEFTIGEKKwlDT0xV TU5TICgKKwkJYiBpbnQsCisJCU5FU1RFRCBQQVRIICckJyBBUyBhCisJCUNPTFVNTlMgKAorCQkJ YyBpbnQKKwkJKQorCSkKKykganQ7CitFUlJPUjogIGR1cGxpY2F0ZSBKU09OX1RBQkxFIHBhdGgg bmFtZTogYQorTElORSA1OiAgIE5FU1RFRCBQQVRIICckJyBBUyBhCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnW10nLCAn JCcKKwlDT0xVTU5TICgKKwkJYiBpbnQsCisJCU5FU1RFRCBQQVRIICckJyBBUyBiCisJCUNPTFVN TlMgKAorCQkJYyBpbnQKKwkJKQorCSkKKykganQ7CitFUlJPUjogIGR1cGxpY2F0ZSBKU09OX1RB QkxFIHBhdGggbmFtZTogYgorTElORSA1OiAgIE5FU1RFRCBQQVRIICckJyBBUyBiCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29u YiAnW10nLCAnJCcKKwlDT0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIEFTIGEKKwkJQ09MVU1O UyAoCisJCQliIGludAorCQkpLAorCQlORVNURUQgUEFUSCAnJCcKKwkJQ09MVU1OUyAoCisJCQlO RVNURUQgUEFUSCAnJCcgQVMgYQorCQkJQ09MVU1OUyAoCisJCQkJYyBpbnQKKwkJCSkKKwkJKQor CSkKKykganQ7CitFUlJPUjogIGR1cGxpY2F0ZSBKU09OX1RBQkxFIHBhdGggbmFtZTogYQorTElO RSAxMDogICAgTkVTVEVEIFBBVEggJyQnIEFTIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBeCistLSBKU09OX1RBQkxFOiBwbGFuIHZhbGlkYXRpb24KK1NFTEVDVCAqIEZST00gSlNP Tl9UQUJMRSgKKwlqc29uYiAnbnVsbCcsICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNU RUQgJyQnIEFTIHAxIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5T ICggZm9vIGludCApLAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGlu dCApCisJCSksCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgKKwkJCU5FU1RFRCBQ QVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQorCQkpCisJKQorCVBMQU4gKHAxKQor KSBqdDsKK0VSUk9SOiAgaW52YWxpZCBKU09OX1RBQkxFIHBsYW4KK0xJTkUgMTI6ICBQTEFOIChw MSkKKyAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBQQVRIIG5hbWUgbWlzbWF0Y2g6IGV4cGVj dGVkIHAwIGJ1dCBwMSBpcyBnaXZlbi4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29u YiAnbnVsbCcsICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcgQVMg cDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50 ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKwkJKSwK KwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFT IHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDApCispIGp0OworRVJS T1I6ICBpbnZhbGlkIEpTT05fVEFCTEUgc3BlY2lmaWNhdGlvbgorTElORSA0OiAgIE5FU1RFRCBQ QVRIICckJyBBUyBwMSBDT0xVTU5TICgKKyAgICAgICAgICBeCitERVRBSUw6ICBQTEFOIGNsYXVz ZSBmb3IgbmVzdGVkIHBhdGggcDEgd2FzIG5vdCBmb3VuZC4KK1NFTEVDVCAqIEZST00gSlNPTl9U QUJMRSgKKwlqc29uYiAnbnVsbCcsICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQg UEFUSCAnJCcgQVMgcDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVN TlMgKCBmb28gaW50ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIg aW50ICkKKwkJKSwKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVE IFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDAg T1VURVIgcDMpCispIGp0OworRVJST1I6ICBpbnZhbGlkIEpTT05fVEFCTEUgc3BlY2lmaWNhdGlv bgorTElORSA0OiAgIE5FU1RFRCBQQVRIICckJyBBUyBwMSBDT0xVTU5TICgKKyAgICAgICAgICBe CitERVRBSUw6ICBQTEFOIGNsYXVzZSBmb3IgbmVzdGVkIHBhdGggcDEgd2FzIG5vdCBmb3VuZC4K K1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnbnVsbCcsICckWypdJyBBUyBwMAor CUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDEgQ09MVU1OUyAoCisJCQlORVNURUQg UEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICksCisJCQlORVNURUQgUEFUSCAnJCcg QVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKwkJKSwKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAy IENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCAp CisJCSkKKwkpCisJUExBTiAocDAgVU5JT04gcDEgVU5JT04gcDExKQorKSBqdDsKK0VSUk9SOiAg aW52YWxpZCBKU09OX1RBQkxFIHBsYW4gY2xhdXNlCitMSU5FIDEyOiAgUExBTiAocDAgVU5JT04g cDEgVU5JT04gcDExKQorICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIEV4cGVjdGVkIElOTkVS IG9yIE9VVEVSLgorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdudWxsJywgJyRb Kl0nIEFTIHAwCisJQ09MVU1OUyAoCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMSBDT0xVTU5TICgK KwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwKKwkJCU5FU1RF RCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQorCQkpLAorCQlORVNURUQgUEFU SCAnJCcgQVMgcDIgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDIxIENPTFVNTlMg KCBiYXogaW50ICkKKwkJKQorCSkKKwlQTEFOIChwMCBPVVRFUiAocDEgQ1JPU1MgcDEzKSkKKykg anQ7CitFUlJPUjogIGludmFsaWQgSlNPTl9UQUJMRSBzcGVjaWZpY2F0aW9uCitMSU5FIDg6ICAg TkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorICAgICAgICAgIF4KK0RFVEFJTDogIFBM QU4gY2xhdXNlIGZvciBuZXN0ZWQgcGF0aCBwMiB3YXMgbm90IGZvdW5kLgorU0VMRUNUICogRlJP TSBKU09OX1RBQkxFKAorCWpzb25iICdudWxsJywgJyRbKl0nIEFTIHAwCisJQ09MVU1OUyAoCisJ CU5FU1RFRCBQQVRIICckJyBBUyBwMSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBw MTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1O UyAoIGJhciBpbnQgKQorCQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisJ CQlORVNURUQgUEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKwkJKQorCSkKKwlQ TEFOIChwMCBPVVRFUiAocDEgQ1JPU1MgcDIpKQorKSBqdDsKK0VSUk9SOiAgaW52YWxpZCBKU09O X1RBQkxFIHNwZWNpZmljYXRpb24KK0xJTkUgNTogICAgTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBD T0xVTU5TICggZm9vIGludCApLAorICAgICAgICAgICBeCitERVRBSUw6ICBQTEFOIGNsYXVzZSBm b3IgbmVzdGVkIHBhdGggcDExIHdhcyBub3QgZm91bmQuCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFC TEUoCisJanNvbmIgJ251bGwnLCAnJFsqXScgQVMgcDAKKwlDT0xVTU5TICgKKwkJTkVTVEVEIFBB VEggJyQnIEFTIHAxIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5T ICggZm9vIGludCApLAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGlu dCApCisJCSksCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgKKwkJCU5FU1RFRCBQ QVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQorCQkpCisJKQorCVBMQU4gKHAwIE9V VEVSICgocDEgVU5JT04gcDExKSBDUk9TUyBwMikpCispIGp0OworRVJST1I6ICBpbnZhbGlkIEpT T05fVEFCTEUgcGxhbiBjbGF1c2UKK0xJTkUgMTI6ICBQTEFOIChwMCBPVVRFUiAoKHAxIFVOSU9O IHAxMSkgQ1JPU1MgcDIpKQorICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIFBM QU4gY2xhdXNlIGNvbnRhaW5zIHNvbWUgZXh0cmEgb3IgZHVwbGljYXRlIHNpYmxpbmcgbm9kZXMu CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ251bGwnLCAnJFsqXScgQVMgcDAK KwlDT0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorCQkJTkVTVEVE IFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCApLAorCQkJTkVTVEVEIFBBVEggJyQn IEFTIHAxMiBDT0xVTU5TICggYmFyIGludCApCisJCSksCisJCU5FU1RFRCBQQVRIICckJyBBUyBw MiBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQg KQorCQkpCisJKQorCVBMQU4gKHAwIE9VVEVSICgocDEgSU5ORVIgcDExKSBDUk9TUyBwMikpCisp IGp0OworRVJST1I6ICBpbnZhbGlkIEpTT05fVEFCTEUgc3BlY2lmaWNhdGlvbgorTElORSA2OiAg ICBORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKyAgICAgICAgICAg XgorREVUQUlMOiAgUExBTiBjbGF1c2UgZm9yIG5lc3RlZCBwYXRoIHAxMiB3YXMgbm90IGZvdW5k LgorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdudWxsJywgJyRbKl0nIEFTIHAw CisJQ09MVU1OUyAoCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMSBDT0xVTU5TICgKKwkJCU5FU1RF RCBQQVRIICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICck JyBBUyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQorCQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMg cDIgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50 ICkKKwkJKQorCSkKKwlQTEFOIChwMCBPVVRFUiAoKHAxIElOTkVSIChwMTIgQ1JPU1MgcDExKSkg Q1JPU1MgcDIpKQorKSBqdDsKK0VSUk9SOiAgaW52YWxpZCBKU09OX1RBQkxFIHNwZWNpZmljYXRp b24KK0xJTkUgOTogICAgTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCAp CisgICAgICAgICAgIF4KK0RFVEFJTDogIFBMQU4gY2xhdXNlIGZvciBuZXN0ZWQgcGF0aCBwMjEg d2FzIG5vdCBmb3VuZC4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnbnVsbCcs ICdzdHJpY3QgJFsqXScgQVMgcDAKKwlDT0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAx IENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCAp LAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGludCApCisJCSksCisJ CU5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBw MjEgQ09MVU1OUyAoIGJheiBpbnQgKQorCQkpCisJKQorCVBMQU4gKHAwIE9VVEVSICgocDEgSU5O RVIgKHAxMiBDUk9TUyBwMTEpKSBDUk9TUyAocDIgSU5ORVIgcDIxKSkpCispIGp0OworIGJhciB8 IGZvbyB8IGJheiAKKy0tLS0tKy0tLS0tKy0tLS0tCisoMCByb3dzKQorCitTRUxFQ1QgKiBGUk9N IEpTT05fVEFCTEUoCisJanNvbmIgJ251bGwnLCAnc3RyaWN0ICRbKl0nIC0tIHdpdGhvdXQgcm9v dCBwYXRoIG5hbWUKKwlDT0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMg KAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCApLAorCQkJTkVT VEVEIFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGludCApCisJCSksCisJCU5FU1RFRCBQ QVRIICckJyBBUyBwMiBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1O UyAoIGJheiBpbnQgKQorCQkpCisJKQorCVBMQU4gKChwMSBJTk5FUiAocDEyIENST1NTIHAxMSkp IENST1NTIChwMiBJTk5FUiBwMjEpKQorKSBqdDsKK0VSUk9SOiAgaW52YWxpZCBKU09OX1RBQkxF IGV4cHJlc3Npb24KK0xJTkUgMjogIGpzb25iICdudWxsJywgJ3N0cmljdCAkWypdJyAtLSB3aXRo b3V0IHJvb3QgcGF0aCBuYW1lCisgICAgICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIEpT T05fVEFCTEUgcGF0aCBtdXN0IGNvbnRhaW4gZXhwbGljaXQgQVMgcGF0aG5hbWUgc3BlY2lmaWNh dGlvbiBpZiBleHBsaWNpdCBQTEFOIGNsYXVzZSBpcyB1c2VkCistLSBKU09OX1RBQkxFOiBwbGFu IGV4ZWN1dGlvbgorQ1JFQVRFIFRFTVAgVEFCTEUganNvbmJfdGFibGVfdGVzdCAoanMganNvbmIp OworSU5TRVJUIElOVE8ganNvbmJfdGFibGVfdGVzdAorVkFMVUVTICgKKwknWworCQl7ImEiOiAg MSwgICJiIjogW10sICJjIjogW119LAorCQl7ImEiOiAgMiwgICJiIjogWzEsIDIsIDNdLCAiYyI6 IFsxMCwgbnVsbCwgMjBdfSwKKwkJeyJhIjogIDMsICAiYiI6IFsxLCAyXSwgImMiOiBbXX0sCisJ CXsieCI6ICI0IiwgImIiOiBbMSwgMl0sICJjIjogMTIzfQorCSBdJworKTsKKy0tIHVuc3BlY2lm aWVkIHBsYW4gKG91dGVyLCB1bmlvbikKK3NlbGVjdAorCWp0LioKK2Zyb20KKwlqc29uYl90YWJs ZV90ZXN0IGp0dCwKKwlqc29uX3RhYmxlICgKKwkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAor CQljb2x1bW5zICgKKwkJCW4gZm9yIG9yZGluYWxpdHksCisJCQlhIGludCBwYXRoICdsYXggJC5h JyBkZWZhdWx0IC0xIG9uIGVtcHR5LAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFz IHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyApLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAk LmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisJCSkKKwkpIGp0OworIG4g fCBhICB8IGIgfCBjICAKKy0tLSstLS0tKy0tLSstLS0tCisgMSB8ICAxIHwgICB8ICAgCisgMiB8 ICAyIHwgMSB8ICAgCisgMiB8ICAyIHwgMiB8ICAgCisgMiB8ICAyIHwgMyB8ICAgCisgMiB8ICAy IHwgICB8IDEwCisgMiB8ICAyIHwgICB8ICAgCisgMiB8ICAyIHwgICB8IDIwCisgMyB8ICAzIHwg MSB8ICAgCisgMyB8ICAzIHwgMiB8ICAgCisgNCB8IC0xIHwgMSB8ICAgCisgNCB8IC0xIHwgMiB8 ICAgCisoMTEgcm93cykKKworLS0gZGVmYXVsdCBwbGFuIChvdXRlciwgdW5pb24pCitzZWxlY3QK KwlqdC4qCitmcm9tCisJanNvbmJfdGFibGVfdGVzdCBqdHQsCisJanNvbl90YWJsZSAoCisJCWp0 dC5qcywnc3RyaWN0ICRbKl0nIGFzIHAKKwkJY29sdW1ucyAoCisJCQluIGZvciBvcmRpbmFsaXR5 LAorCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKwkJCW5lc3Rl ZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwK KwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0 aCAnJCcgKQorCQkpCisJCXBsYW4gZGVmYXVsdCAob3V0ZXIsIHVuaW9uKQorCSkganQ7CisgbiB8 IGEgIHwgYiB8IGMgIAorLS0tKy0tLS0rLS0tKy0tLS0KKyAxIHwgIDEgfCAgIHwgICAKKyAyIHwg IDIgfCAxIHwgMTAKKyAyIHwgIDIgfCAxIHwgICAKKyAyIHwgIDIgfCAxIHwgMjAKKyAyIHwgIDIg fCAyIHwgMTAKKyAyIHwgIDIgfCAyIHwgICAKKyAyIHwgIDIgfCAyIHwgMjAKKyAyIHwgIDIgfCAz IHwgMTAKKyAyIHwgIDIgfCAzIHwgICAKKyAyIHwgIDIgfCAzIHwgMjAKKyAzIHwgIDMgfCAgIHwg ICAKKyA0IHwgLTEgfCAgIHwgICAKKygxMiByb3dzKQorCistLSBzcGVjaWZpYyBwbGFuIChwIG91 dGVyIChwYiB1bmlvbiBwYykpCitzZWxlY3QKKwlqdC4qCitmcm9tCisJanNvbmJfdGFibGVfdGVz dCBqdHQsCisJanNvbl90YWJsZSAoCisJCWp0dC5qcywnc3RyaWN0ICRbKl0nIGFzIHAKKwkJY29s dW1ucyAoCisJCQluIGZvciBvcmRpbmFsaXR5LAorCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVm YXVsdCAtMSBvbiBlbXB0eSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBj b2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypd JyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQorCQkpCisJCXBsYW4gKHAgb3V0ZXIg KHBiIHVuaW9uIHBjKSkKKwkpIGp0OworIG4gfCBhICB8IGIgfCBjICAKKy0tLSstLS0tKy0tLSst LS0tCisgMSB8ICAxIHwgICB8ICAgCisgMiB8ICAyIHwgMSB8ICAgCisgMiB8ICAyIHwgMiB8ICAg CisgMiB8ICAyIHwgMyB8ICAgCisgMiB8ICAyIHwgICB8IDEwCisgMiB8ICAyIHwgICB8ICAgCisg MiB8ICAyIHwgICB8IDIwCisgMyB8ICAzIHwgMSB8ICAgCisgMyB8ICAzIHwgMiB8ICAgCisgNCB8 IC0xIHwgMSB8ICAgCisgNCB8IC0xIHwgMiB8ICAgCisoMTEgcm93cykKKworLS0gc3BlY2lmaWMg cGxhbiAocCBvdXRlciAocGMgdW5pb24gcGIpKQorc2VsZWN0CisJanQuKgorZnJvbQorCWpzb25i X3RhYmxlX3Rlc3QganR0LAorCWpzb25fdGFibGUgKAorCQlqdHQuanMsJ3N0cmljdCAkWypdJyBh cyBwCisJCWNvbHVtbnMgKAorCQkJbiBmb3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xh eCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsq XScgYXMgcGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICksCisJCQluZXN0ZWQgcGF0aCAnc3Ry aWN0ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKKwkJKQorCQlwbGFu IChwIG91dGVyIChwYyB1bmlvbiBwYikpCisJKSBqdDsKKyBuIHwgYSAgfCBjICB8IGIgCistLS0r LS0tLSstLS0tKy0tLQorIDEgfCAgMSB8ICAgIHwgIAorIDIgfCAgMiB8IDEwIHwgIAorIDIgfCAg MiB8ICAgIHwgIAorIDIgfCAgMiB8IDIwIHwgIAorIDIgfCAgMiB8ICAgIHwgMQorIDIgfCAgMiB8 ICAgIHwgMgorIDIgfCAgMiB8ICAgIHwgMworIDMgfCAgMyB8ICAgIHwgMQorIDMgfCAgMyB8ICAg IHwgMgorIDQgfCAtMSB8ICAgIHwgMQorIDQgfCAtMSB8ICAgIHwgMgorKDExIHJvd3MpCisKKy0t IGRlZmF1bHQgcGxhbiAoaW5uZXIsIHVuaW9uKQorc2VsZWN0CisJanQuKgorZnJvbQorCWpzb25i X3RhYmxlX3Rlc3QganR0LAorCWpzb25fdGFibGUgKAorCQlqdHQuanMsJ3N0cmljdCAkWypdJyBh cyBwCisJCWNvbHVtbnMgKAorCQkJbiBmb3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xh eCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsq XScgYXMgcGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICksCisJCQluZXN0ZWQgcGF0aCAnc3Ry aWN0ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKKwkJKQorCQlwbGFu IGRlZmF1bHQgKGlubmVyKQorCSkganQ7CisgbiB8IGEgIHwgYiB8IGMgIAorLS0tKy0tLS0rLS0t Ky0tLS0KKyAxIHwgIDEgfCAgIHwgICAKKyAyIHwgIDIgfCAxIHwgMTAKKyAyIHwgIDIgfCAxIHwg ICAKKyAyIHwgIDIgfCAxIHwgMjAKKyAyIHwgIDIgfCAyIHwgMTAKKyAyIHwgIDIgfCAyIHwgICAK KyAyIHwgIDIgfCAyIHwgMjAKKyAyIHwgIDIgfCAzIHwgMTAKKyAyIHwgIDIgfCAzIHwgICAKKyAy IHwgIDIgfCAzIHwgMjAKKyAzIHwgIDMgfCAgIHwgICAKKyA0IHwgLTEgfCAgIHwgICAKKygxMiBy b3dzKQorCistLSBzcGVjaWZpYyBwbGFuIChwIGlubmVyIChwYiB1bmlvbiBwYykpCitzZWxlY3QK KwlqdC4qCitmcm9tCisJanNvbmJfdGFibGVfdGVzdCBqdHQsCisJanNvbl90YWJsZSAoCisJCWp0 dC5qcywnc3RyaWN0ICRbKl0nIGFzIHAKKwkJY29sdW1ucyAoCisJCQluIGZvciBvcmRpbmFsaXR5 LAorCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKwkJCW5lc3Rl ZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwK KwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0 aCAnJCcgKQorCQkpCisJCXBsYW4gKHAgaW5uZXIgKHBiIHVuaW9uIHBjKSkKKwkpIGp0OworIG4g fCBhICB8IGIgfCBjICAKKy0tLSstLS0tKy0tLSstLS0tCisgMiB8ICAyIHwgMSB8ICAgCisgMiB8 ICAyIHwgMiB8ICAgCisgMiB8ICAyIHwgMyB8ICAgCisgMiB8ICAyIHwgICB8IDEwCisgMiB8ICAy IHwgICB8ICAgCisgMiB8ICAyIHwgICB8IDIwCisgMyB8ICAzIHwgMSB8ICAgCisgMyB8ICAzIHwg MiB8ICAgCisgNCB8IC0xIHwgMSB8ICAgCisgNCB8IC0xIHwgMiB8ICAgCisoMTAgcm93cykKKwor LS0gZGVmYXVsdCBwbGFuIChpbm5lciwgY3Jvc3MpCitzZWxlY3QKKwlqdC4qCitmcm9tCisJanNv bmJfdGFibGVfdGVzdCBqdHQsCisJanNvbl90YWJsZSAoCisJCWp0dC5qcywnc3RyaWN0ICRbKl0n IGFzIHAKKwkJY29sdW1ucyAoCisJCQluIGZvciBvcmRpbmFsaXR5LAorCQkJYSBpbnQgcGF0aCAn bGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5i WypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKwkJCW5lc3RlZCBwYXRoICdz dHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQorCQkpCisJCXBs YW4gZGVmYXVsdCAoY3Jvc3MsIGlubmVyKQorCSkganQ7CisgbiB8IGEgfCBiIHwgYyAgCistLS0r LS0tKy0tLSstLS0tCisgMiB8IDIgfCAxIHwgMTAKKyAyIHwgMiB8IDEgfCAgIAorIDIgfCAyIHwg MSB8IDIwCisgMiB8IDIgfCAyIHwgMTAKKyAyIHwgMiB8IDIgfCAgIAorIDIgfCAyIHwgMiB8IDIw CisgMiB8IDIgfCAzIHwgMTAKKyAyIHwgMiB8IDMgfCAgIAorIDIgfCAyIHwgMyB8IDIwCisoOSBy b3dzKQorCistLSBzcGVjaWZpYyBwbGFuIChwIGlubmVyIChwYiBjcm9zcyBwYykpCitzZWxlY3QK KwlqdC4qCitmcm9tCisJanNvbmJfdGFibGVfdGVzdCBqdHQsCisJanNvbl90YWJsZSAoCisJCWp0 dC5qcywnc3RyaWN0ICRbKl0nIGFzIHAKKwkJY29sdW1ucyAoCisJCQluIGZvciBvcmRpbmFsaXR5 LAorCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKwkJCW5lc3Rl ZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwK KwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0 aCAnJCcgKQorCQkpCisJCXBsYW4gKHAgaW5uZXIgKHBiIGNyb3NzIHBjKSkKKwkpIGp0OworIG4g fCBhIHwgYiB8IGMgIAorLS0tKy0tLSstLS0rLS0tLQorIDIgfCAyIHwgMSB8IDEwCisgMiB8IDIg fCAxIHwgICAKKyAyIHwgMiB8IDEgfCAyMAorIDIgfCAyIHwgMiB8IDEwCisgMiB8IDIgfCAyIHwg ICAKKyAyIHwgMiB8IDIgfCAyMAorIDIgfCAyIHwgMyB8IDEwCisgMiB8IDIgfCAzIHwgICAKKyAy IHwgMiB8IDMgfCAyMAorKDkgcm93cykKKworLS0gZGVmYXVsdCBwbGFuIChvdXRlciwgY3Jvc3Mp CitzZWxlY3QKKwlqdC4qCitmcm9tCisJanNvbmJfdGFibGVfdGVzdCBqdHQsCisJanNvbl90YWJs ZSAoCisJCWp0dC5qcywnc3RyaWN0ICRbKl0nIGFzIHAKKwkJY29sdW1ucyAoCisJCQluIGZvciBv cmRpbmFsaXR5LAorCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwK KwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0 aCAnJCcgKSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICgg YyBpbnQgcGF0aCAnJCcgKQorCQkpCisJCXBsYW4gZGVmYXVsdCAob3V0ZXIsIGNyb3NzKQorCSkg anQ7CisgbiB8IGEgIHwgYiB8IGMgIAorLS0tKy0tLS0rLS0tKy0tLS0KKyAxIHwgIDEgfCAgIHwg ICAKKyAyIHwgIDIgfCAxIHwgMTAKKyAyIHwgIDIgfCAxIHwgICAKKyAyIHwgIDIgfCAxIHwgMjAK KyAyIHwgIDIgfCAyIHwgMTAKKyAyIHwgIDIgfCAyIHwgICAKKyAyIHwgIDIgfCAyIHwgMjAKKyAy IHwgIDIgfCAzIHwgMTAKKyAyIHwgIDIgfCAzIHwgICAKKyAyIHwgIDIgfCAzIHwgMjAKKyAzIHwg IDMgfCAgIHwgICAKKyA0IHwgLTEgfCAgIHwgICAKKygxMiByb3dzKQorCistLSBzcGVjaWZpYyBw bGFuIChwIG91dGVyIChwYiBjcm9zcyBwYykpCitzZWxlY3QKKwlqdC4qCitmcm9tCisJanNvbmJf dGFibGVfdGVzdCBqdHQsCisJanNvbl90YWJsZSAoCisJCWp0dC5qcywnc3RyaWN0ICRbKl0nIGFz IHAKKwkJY29sdW1ucyAoCisJCQluIGZvciBvcmRpbmFsaXR5LAorCQkJYSBpbnQgcGF0aCAnbGF4 ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypd JyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKwkJCW5lc3RlZCBwYXRoICdzdHJp Y3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQorCQkpCisJCXBsYW4g KHAgb3V0ZXIgKHBiIGNyb3NzIHBjKSkKKwkpIGp0OworIG4gfCBhICB8IGIgfCBjICAKKy0tLSst LS0tKy0tLSstLS0tCisgMSB8ICAxIHwgICB8ICAgCisgMiB8ICAyIHwgMSB8IDEwCisgMiB8ICAy IHwgMSB8ICAgCisgMiB8ICAyIHwgMSB8IDIwCisgMiB8ICAyIHwgMiB8IDEwCisgMiB8ICAyIHwg MiB8ICAgCisgMiB8ICAyIHwgMiB8IDIwCisgMiB8ICAyIHwgMyB8IDEwCisgMiB8ICAyIHwgMyB8 ICAgCisgMiB8ICAyIHwgMyB8IDIwCisgMyB8ICAzIHwgICB8ICAgCisgNCB8IC0xIHwgICB8ICAg CisoMTIgcm93cykKKworc2VsZWN0CisJanQuKiwgYjEgKyAxMDAgYXMgYgorZnJvbQorCWpzb25f dGFibGUgKGpzb25iCisJCSdbCisJCQl7ImEiOiAgMSwgICJiIjogW1sxLCAxMF0sIFsyXSwgWzMs IDMwLCAzMDBdXSwgImMiOiBbMSwgbnVsbCwgMl19LAorCQkJeyJhIjogIDIsICAiYiI6IFsxMCwg MjBdLCAiYyI6IFsxLCBudWxsLCAyXX0sCisJCQl7IngiOiAiMyIsICJiIjogWzExLCAyMiwgMzMs IDQ0XX0KKwkJIF0nLAorCQknJFsqXScgYXMgcAorCQljb2x1bW5zICgKKwkJCW4gZm9yIG9yZGlu YWxpdHksCisJCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVycm9yLAorCQkJ bmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKAorCQkJCWIgdGV4dCBm b3JtYXQganNvbiBwYXRoICckJywKKwkJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICRbKl0nIGFzIHBi MSBjb2x1bW5zICgKKwkJCQkJYjEgaW50IHBhdGggJyQnCisJCQkJKQorCQkJKSwKKwkJCW5lc3Rl ZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICgKKwkJCQljIHRleHQgZm9ybWF0 IGpzb24gcGF0aCAnJCcsCisJCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkWypdJyBhcyBwYzEgY29s dW1ucyAoCisJCQkJCWMxIGludCBwYXRoICckJworCQkJCSkKKwkJCSkKKwkJKQorCQktLXBsYW4g ZGVmYXVsdChvdXRlciwgY3Jvc3MpCisJCXBsYW4ocCBvdXRlciAoKHBiIGlubmVyIHBiMSkgY3Jv c3MgKHBjIG91dGVyIHBjMSkpKQorCSkganQ7CisgbiB8IGEgIHwgICAgICBiICAgICAgIHwgYjEg IHwgIGMgICB8IGMxIHwgIGIgIAorLS0tKy0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0rLS0tLS0t Ky0tLS0rLS0tLS0KKyAxIHwgIDEgfCBbMSwgMTBdICAgICAgfCAgIDEgfCAxICAgIHwgICAgfCAx MDEKKyAxIHwgIDEgfCBbMSwgMTBdICAgICAgfCAgIDEgfCBudWxsIHwgICAgfCAxMDEKKyAxIHwg IDEgfCBbMSwgMTBdICAgICAgfCAgIDEgfCAyICAgIHwgICAgfCAxMDEKKyAxIHwgIDEgfCBbMSwg MTBdICAgICAgfCAgMTAgfCAxICAgIHwgICAgfCAxMTAKKyAxIHwgIDEgfCBbMSwgMTBdICAgICAg fCAgMTAgfCBudWxsIHwgICAgfCAxMTAKKyAxIHwgIDEgfCBbMSwgMTBdICAgICAgfCAgMTAgfCAy ICAgIHwgICAgfCAxMTAKKyAxIHwgIDEgfCBbMl0gICAgICAgICAgfCAgIDIgfCAxICAgIHwgICAg fCAxMDIKKyAxIHwgIDEgfCBbMl0gICAgICAgICAgfCAgIDIgfCBudWxsIHwgICAgfCAxMDIKKyAx IHwgIDEgfCBbMl0gICAgICAgICAgfCAgIDIgfCAyICAgIHwgICAgfCAxMDIKKyAxIHwgIDEgfCBb MywgMzAsIDMwMF0gfCAgIDMgfCAxICAgIHwgICAgfCAxMDMKKyAxIHwgIDEgfCBbMywgMzAsIDMw MF0gfCAgIDMgfCBudWxsIHwgICAgfCAxMDMKKyAxIHwgIDEgfCBbMywgMzAsIDMwMF0gfCAgIDMg fCAyICAgIHwgICAgfCAxMDMKKyAxIHwgIDEgfCBbMywgMzAsIDMwMF0gfCAgMzAgfCAxICAgIHwg ICAgfCAxMzAKKyAxIHwgIDEgfCBbMywgMzAsIDMwMF0gfCAgMzAgfCBudWxsIHwgICAgfCAxMzAK KyAxIHwgIDEgfCBbMywgMzAsIDMwMF0gfCAgMzAgfCAyICAgIHwgICAgfCAxMzAKKyAxIHwgIDEg fCBbMywgMzAsIDMwMF0gfCAzMDAgfCAxICAgIHwgICAgfCA0MDAKKyAxIHwgIDEgfCBbMywgMzAs IDMwMF0gfCAzMDAgfCBudWxsIHwgICAgfCA0MDAKKyAxIHwgIDEgfCBbMywgMzAsIDMwMF0gfCAz MDAgfCAyICAgIHwgICAgfCA0MDAKKyAyIHwgIDIgfCAgICAgICAgICAgICAgfCAgICAgfCAgICAg IHwgICAgfCAgICAKKyAzIHwgLTEgfCAgICAgICAgICAgICAgfCAgICAgfCAgICAgIHwgICAgfCAg ICAKKygyMCByb3dzKQorCistLSBTaG91bGQgc3VjY2VlZCAoSlNPTiBhcmd1bWVudHMgYXJlIHBh c3NlZCB0byByb290IGFuZCBuZXN0ZWQgcGF0aHMpCitTRUxFQ1QgKgorRlJPTQorCWdlbmVyYXRl X3NlcmllcygxLCA0KSB4LAorCWdlbmVyYXRlX3NlcmllcygxLCAzKSB5LAorCUpTT05fVEFCTEUo anNvbmIKKwkJJ1tbMSwyLDNdLFsyLDMsNCw1XSxbMyw0LDUsNl1dJywKKwkJJ3N0cmljdCAkWypd ID8gKEBbKl0gPCAkeCknCisJCVBBU1NJTkcgeCBBUyB4LCB5IEFTIHkKKwkJQ09MVU1OUyAoCisJ CQl5IHRleHQgRk9STUFUIEpTT04gUEFUSCAnJCcsCisJCQlORVNURUQgUEFUSCAnc3RyaWN0ICRb Kl0gPyAoQCA+PSAkeSknCisJCQlDT0xVTU5TICgKKwkJCQl6IGludCBQQVRIICckJworCQkJKQor CQkpCisJKSBqdDsKKyB4IHwgeSB8ICAgICAgeSAgICAgICB8IHogCistLS0rLS0tKy0tLS0tLS0t LS0tLS0tKy0tLQorIDIgfCAxIHwgWzEsIDIsIDNdICAgIHwgMQorIDIgfCAxIHwgWzEsIDIsIDNd ICAgIHwgMgorIDIgfCAxIHwgWzEsIDIsIDNdICAgIHwgMworIDMgfCAxIHwgWzEsIDIsIDNdICAg IHwgMQorIDMgfCAxIHwgWzEsIDIsIDNdICAgIHwgMgorIDMgfCAxIHwgWzEsIDIsIDNdICAgIHwg MworIDMgfCAxIHwgWzIsIDMsIDQsIDVdIHwgMgorIDMgfCAxIHwgWzIsIDMsIDQsIDVdIHwgMwor IDMgfCAxIHwgWzIsIDMsIDQsIDVdIHwgNAorIDMgfCAxIHwgWzIsIDMsIDQsIDVdIHwgNQorIDQg fCAxIHwgWzEsIDIsIDNdICAgIHwgMQorIDQgfCAxIHwgWzEsIDIsIDNdICAgIHwgMgorIDQgfCAx IHwgWzEsIDIsIDNdICAgIHwgMworIDQgfCAxIHwgWzIsIDMsIDQsIDVdIHwgMgorIDQgfCAxIHwg WzIsIDMsIDQsIDVdIHwgMworIDQgfCAxIHwgWzIsIDMsIDQsIDVdIHwgNAorIDQgfCAxIHwgWzIs IDMsIDQsIDVdIHwgNQorIDQgfCAxIHwgWzMsIDQsIDUsIDZdIHwgMworIDQgfCAxIHwgWzMsIDQs IDUsIDZdIHwgNAorIDQgfCAxIHwgWzMsIDQsIDUsIDZdIHwgNQorIDQgfCAxIHwgWzMsIDQsIDUs IDZdIHwgNgorIDIgfCAyIHwgWzEsIDIsIDNdICAgIHwgMgorIDIgfCAyIHwgWzEsIDIsIDNdICAg IHwgMworIDMgfCAyIHwgWzEsIDIsIDNdICAgIHwgMgorIDMgfCAyIHwgWzEsIDIsIDNdICAgIHwg MworIDMgfCAyIHwgWzIsIDMsIDQsIDVdIHwgMgorIDMgfCAyIHwgWzIsIDMsIDQsIDVdIHwgMwor IDMgfCAyIHwgWzIsIDMsIDQsIDVdIHwgNAorIDMgfCAyIHwgWzIsIDMsIDQsIDVdIHwgNQorIDQg fCAyIHwgWzEsIDIsIDNdICAgIHwgMgorIDQgfCAyIHwgWzEsIDIsIDNdICAgIHwgMworIDQgfCAy IHwgWzIsIDMsIDQsIDVdIHwgMgorIDQgfCAyIHwgWzIsIDMsIDQsIDVdIHwgMworIDQgfCAyIHwg WzIsIDMsIDQsIDVdIHwgNAorIDQgfCAyIHwgWzIsIDMsIDQsIDVdIHwgNQorIDQgfCAyIHwgWzMs IDQsIDUsIDZdIHwgMworIDQgfCAyIHwgWzMsIDQsIDUsIDZdIHwgNAorIDQgfCAyIHwgWzMsIDQs IDUsIDZdIHwgNQorIDQgfCAyIHwgWzMsIDQsIDUsIDZdIHwgNgorIDIgfCAzIHwgWzEsIDIsIDNd ICAgIHwgMworIDMgfCAzIHwgWzEsIDIsIDNdICAgIHwgMworIDMgfCAzIHwgWzIsIDMsIDQsIDVd IHwgMworIDMgfCAzIHwgWzIsIDMsIDQsIDVdIHwgNAorIDMgfCAzIHwgWzIsIDMsIDQsIDVdIHwg NQorIDQgfCAzIHwgWzEsIDIsIDNdICAgIHwgMworIDQgfCAzIHwgWzIsIDMsIDQsIDVdIHwgMwor IDQgfCAzIHwgWzIsIDMsIDQsIDVdIHwgNAorIDQgfCAzIHwgWzIsIDMsIDQsIDVdIHwgNQorIDQg fCAzIHwgWzMsIDQsIDUsIDZdIHwgMworIDQgfCAzIHwgWzMsIDQsIDUsIDZdIHwgNAorIDQgfCAz IHwgWzMsIDQsIDUsIDZdIHwgNQorIDQgfCAzIHwgWzMsIDQsIDUsIDZdIHwgNgorKDUyIHJvd3Mp CisKKy0tIFNob3VsZCBmYWlsIChKU09OIGFyZ3VtZW50cyBhcmUgbm90IHBhc3NlZCB0byBjb2x1 bW4gcGF0aHMpCitTRUxFQ1QgKgorRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdbMSwyLDNdJywK KwknJFsqXSA/IChAIDwgJHgpJworCQlQQVNTSU5HIDEwIEFTIHgKKwkJQ09MVU1OUyAoeSB0ZXh0 IEZPUk1BVCBKU09OIFBBVEggJyQgPyAoQCA8ICR4KScpCisJKSBqdDsKK0VSUk9SOiAgY291bGQg bm90IGZpbmQganNvbnBhdGggdmFyaWFibGUgIngiCistLSBFeHRlbnNpb246IG5vbi1jb25zdGFu dCBKU09OIHBhdGgKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAneyJhIjogMTIzfScsICckJyB8 fCAnLicgfHwgJ2EnKTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cp CisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICd7ImEiOiAxMjN9JywgJyQnIHx8ICcuJyB8fCAn YScpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAxMjMKKygxIHJvdykKKworU0VMRUNU IEpTT05fVkFMVUUoanNvbmIgJ3siYSI6IDEyM30nLCAnJCcgfHwgJy4nIHx8ICdiJyBERUZBVUxU ICdmb28nIE9OIEVNUFRZKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgZm9vCisoMSBy b3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICd7ImEiOiAxMjN9JywgJyQnIHx8ICcuJyB8 fCAnYScpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyAxMjMKKygxIHJvdykKKworU0VM RUNUIEpTT05fUVVFUlkoanNvbmIgJ3siYSI6IDEyM30nLCAnJCcgfHwgJy4nIHx8ICdhJyBXSVRI IFdSQVBQRVIpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyBbMTIzXQorKDEgcm93KQor CistLSBTaG91bGQgZmFpbCAoaW52YWxpZCBwYXRoKQorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIg J3siYSI6IDEyM30nLCAnZXJyb3InIHx8ICcgJyB8fCAnZXJyb3InKTsKK0VSUk9SOiAgc3ludGF4 IGVycm9yIGF0IG9yIG5lYXIgIiAiIG9mIGpzb25wYXRoIGlucHV0CistLSBTaG91bGQgZmFpbCAo bm90IHN1cHBvcnRlZCkKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAneyJhIjogMTIz fScsICckJyB8fCAnLicgfHwgJ2EnIENPTFVNTlMgKGZvbyBpbnQpKTsKK0VSUk9SOiAgb25seSBz dHJpbmcgY29uc3RhbnRzIGFyZSBzdXBwb3J0ZWQgaW4gSlNPTl9UQUJMRSBwYXRoIHNwZWNpZmlj YXRpb24KK0xJTkUgMTogU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICd7ImEiOiAxMjN9 JywgJyQnIHx8ICcuJyB8fCAnLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pz b25fc3FsanNvbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uX3NxbGpzb24uc3FsCmlu ZGV4IDRmMzBmYTQ2YjkuLmRmNGE0MzBkODggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2pzb25fc3FsanNvbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbl9zcWxq c29uLnNxbApAQCAtOSwzICs5LDcgQEAgU0VMRUNUIEpTT05fVkFMVUUoTlVMTCBGT1JNQVQgSlNP TiwgJyQnKTsKIC0tIEpTT05fUVVFUlkKIAogU0VMRUNUIEpTT05fUVVFUlkoTlVMTCBGT1JNQVQg SlNPTiwgJyQnKTsKKworLS0gSlNPTl9UQUJMRQorCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUo TlVMTCBGT1JNQVQgSlNPTiwgJyQnIENPTFVNTlMgKGZvbyB0ZXh0KSk7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYl9zcWxqc29uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2pzb25iX3NxbGpzb24uc3FsCmluZGV4IGI2NGM5MDE3ZjUuLjZlNTljY2ZiZDAgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iX3NxbGpzb24uc3FsCisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iX3NxbGpzb24uc3FsCkBAIC0zNDgsMyArMzQ4LDY4NCBAQCBD UkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJFsx LCAkLmEgPyAoQC5kYXRldGltZSgpCiBDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmls aXR5IChKU09OX1FVRVJZKGpzLCAnJFsxLCAwIHRvICQuYSA/IChALmRhdGV0aW1lKCkgPT0gJHgp XScgUEFTU0lORyAnMTI6MzQnOjp0aW1lIEFTIHgpKTsKIENSRUFURSBJTkRFWCBPTiB0ZXN0X2pz b25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckWzEsICQuYSA/IChALmRhdGV0aW1lKCJI SDpNSSIpID09ICR4KV0nIFBBU1NJTkcgJzEyOjM0Jzo6dGltZSBBUyB4KSk7CiBEUk9QIFRBQkxF IHRlc3RfanNvbmJfbXV0YWJpbGl0eTsKKworLS0gSlNPTl9UQUJMRQorCistLSBTaG91bGQgZmFp bCAoSlNPTl9UQUJMRSBjYW4gYmUgdXNlZCBvbmx5IGluIEZST00gY2xhdXNlKQorU0VMRUNUIEpT T05fVEFCTEUoJ1tdJywgJyQnKTsKKworLS0gU2hvdWxkIGZhaWwgKG5vIGNvbHVtbnMpCitTRUxF Q1QgKiBGUk9NIEpTT05fVEFCTEUoTlVMTCwgJyQnIENPTFVNTlMgKCkpOworCitTRUxFQ1QgKiBG Uk9NIEpTT05fVEFCTEUgKE5VTEw6Ompzb25iLCAnJCcgQ09MVU1OUyAodjEgdGltZXN0YW1wKSkg QVMgZiAodjEsIHYyKTsKKworLS0gTlVMTCA9PiBlbXB0eSB0YWJsZQorU0VMRUNUICogRlJPTSBK U09OX1RBQkxFKE5VTEw6Ompzb25iLCAnJCcgQ09MVU1OUyAoZm9vIGludCkpIGJhcjsKKworLS0K K1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnMTIzJywgJyQnCisJQ09MVU1OUyAoaXRl bSBpbnQgUEFUSCAnJCcsIGZvbyBpbnQpKSBiYXI7CisKKy0tIEpTT05fVEFCTEU6IGJhc2ljIGZ1 bmN0aW9uYWxpdHkKK0NSRUFURSBET01BSU4ganNvbmJfdGVzdF9kb21haW4gQVMgdGV4dCBDSEVD SyAodmFsdWUgPD4gJ2ZvbycpOworQ1JFQVRFIFRFTVAgVEFCTEUganNvbl90YWJsZV90ZXN0IChq cykgQVMKKwkoVkFMVUVTCisJCSgnMScpLAorCQkoJ1tdJyksCisJCSgne30nKSwKKwkJKCdbMSwg MS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAx MjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdJykKKwkpOworCistLSBSZWd1bGFyICJ1bmZvcm1hdHRl ZCIgY29sdW1ucworU0VMRUNUICoKK0ZST00ganNvbl90YWJsZV90ZXN0IHZhbHMKKwlMRUZUIE9V VEVSIEpPSU4KKwlKU09OX1RBQkxFKAorCQl2YWxzLmpzOjpqc29uYiwgJ2xheCAkWypdJworCQlD T0xVTU5TICgKKwkJCWlkIEZPUiBPUkRJTkFMSVRZLAorCQkJImludCIgaW50IFBBVEggJyQnLAor CQkJInRleHQiIHRleHQgUEFUSCAnJCcsCisJCQkiY2hhcig0KSIgY2hhcig0KSBQQVRIICckJywK KwkJCSJib29sIiBib29sIFBBVEggJyQnLAorCQkJIm51bWVyaWMiIG51bWVyaWMgUEFUSCAnJCcs CisJCQkiZG9tYWluIiBqc29uYl90ZXN0X2RvbWFpbiBQQVRIICckJywKKwkJCWpzIGpzb24gUEFU SCAnJCcsCisJCQlqYiBqc29uYiBQQVRIICckJworCQkpCisJKSBqdAorCU9OIHRydWU7CisKKy0t ICJmb3JtYXR0ZWQiIGNvbHVtbnMKK1NFTEVDVCAqCitGUk9NIGpzb25fdGFibGVfdGVzdCB2YWxz CisJTEVGVCBPVVRFUiBKT0lOCisJSlNPTl9UQUJMRSgKKwkJdmFscy5qczo6anNvbmIsICdsYXgg JFsqXScKKwkJQ09MVU1OUyAoCisJCQlpZCBGT1IgT1JESU5BTElUWSwKKwkJCWpzdCB0ZXh0ICAg IEZPUk1BVCBKU09OICBQQVRIICckJywKKwkJCWpzYyBjaGFyKDQpIEZPUk1BVCBKU09OICBQQVRI ICckJywKKwkJCWpzdiB2YXJjaGFyKDQpIEZPUk1BVCBKU09OICBQQVRIICckJywKKwkJCWpzYiBq c29uYiBGT1JNQVQgSlNPTiBQQVRIICckJywKKwkJCWpzYnEganNvbmIgRk9STUFUIEpTT04gUEFU SCAnJCcgT01JVCBRVU9URVMKKwkJKQorCSkganQKKwlPTiB0cnVlOworCistLSBFWElTVFMgY29s dW1ucworU0VMRUNUICoKK0ZST00ganNvbl90YWJsZV90ZXN0IHZhbHMKKwlMRUZUIE9VVEVSIEpP SU4KKwlKU09OX1RBQkxFKAorCQl2YWxzLmpzOjpqc29uYiwgJ2xheCAkWypdJworCQlDT0xVTU5T ICgKKwkJCWlkIEZPUiBPUkRJTkFMSVRZLAorCQkJZXhpc3RzMSBib29sIEVYSVNUUyBQQVRIICck LmFhYScsCisJCQlleGlzdHMyIGludCBFWElTVFMgUEFUSCAnJC5hYWEnLAorCQkJZXhpc3RzMyBp bnQgRVhJU1RTIFBBVEggJ3N0cmljdCAkLmFhYScgVU5LTk9XTiBPTiBFUlJPUiwKKwkJCWV4aXN0 czQgdGV4dCBFWElTVFMgUEFUSCAnc3RyaWN0ICQuYWFhJyBGQUxTRSBPTiBFUlJPUgorCQkpCisJ KSBqdAorCU9OIHRydWU7CisKKy0tIE90aGVyIG1pc2NlbGxhbm91cyBjaGVja3MKK1NFTEVDVCAq CitGUk9NIGpzb25fdGFibGVfdGVzdCB2YWxzCisJTEVGVCBPVVRFUiBKT0lOCisJSlNPTl9UQUJM RSgKKwkJdmFscy5qczo6anNvbmIsICdsYXggJFsqXScKKwkJQ09MVU1OUyAoCisJCQlpZCBGT1Ig T1JESU5BTElUWSwKKwkJCWFhYSBpbnQsIC0tICJhYWEiIGhhcyBpbXBsaWNpdCBwYXRoICckLiJh YWEiJworCQkJYWFhMSBpbnQgUEFUSCAnJC5hYWEnLAorCQkJanMyIGpzb24gUEFUSCAnJCcsCisJ CQlqc2IydyBqc29uYiBQQVRIICckJyBXSVRIIFdSQVBQRVIsCisJCQlqc2IycSBqc29uYiBQQVRI ICckJyBPTUlUIFFVT1RFUywKKwkJCWlhIGludFtdIFBBVEggJyQnLAorCQkJdGEgdGV4dFtdIFBB VEggJyQnLAorCQkJamJhIGpzb25iW10gUEFUSCAnJCcKKwkJKQorCSkganQKKwlPTiB0cnVlOwor CistLSBKU09OX1RBQkxFOiBUZXN0IGJhY2t3YXJkIHBhcnNpbmcKKworQ1JFQVRFIFZJRVcganNv bmJfdGFibGVfdmlldyBBUworU0VMRUNUICogRlJPTQorCUpTT05fVEFCTEUoCisJCWpzb25iICdu dWxsJywgJ2xheCAkWypdJyBQQVNTSU5HIDEgKyAyIEFTIGEsIGpzb24gJyJmb28iJyBBUyAiYiBj IgorCQlDT0xVTU5TICgKKwkJCWlkIEZPUiBPUkRJTkFMSVRZLAorCQkJImludCIgaW50IFBBVEgg JyQnLAorCQkJInRleHQiIHRleHQgUEFUSCAnJCcsCisJCQkiY2hhcig0KSIgY2hhcig0KSBQQVRI ICckJywKKwkJCSJib29sIiBib29sIFBBVEggJyQnLAorCQkJIm51bWVyaWMiIG51bWVyaWMgUEFU SCAnJCcsCisJCQkiZG9tYWluIiBqc29uYl90ZXN0X2RvbWFpbiBQQVRIICckJywKKwkJCWpzIGpz b24gUEFUSCAnJCcsCisJCQlqYiBqc29uYiBQQVRIICckJywKKwkJCWpzdCB0ZXh0ICAgIEZPUk1B VCBKU09OICBQQVRIICckJywKKwkJCWpzYyBjaGFyKDQpIEZPUk1BVCBKU09OICBQQVRIICckJywK KwkJCWpzdiB2YXJjaGFyKDQpIEZPUk1BVCBKU09OICBQQVRIICckJywKKwkJCWpzYiBqc29uYiAg IEZPUk1BVCBKU09OIFBBVEggJyQnLAorCQkJanNicSBqc29uYiBGT1JNQVQgSlNPTiBQQVRIICck JyBPTUlUIFFVT1RFUywKKwkJCWFhYSBpbnQsIC0tIGltcGxpY2l0IHBhdGggJyQuImFhYSInLAor CQkJYWFhMSBpbnQgUEFUSCAnJC5hYWEnLAorCQkJZXhpc3RzMSBib29sIEVYSVNUUyBQQVRIICck LmFhYScsCisJCQlleGlzdHMyIGludCBFWElTVFMgUEFUSCAnJC5hYWEnIFRSVUUgT04gRVJST1Is CisJCQlleGlzdHMzIHRleHQgRVhJU1RTIFBBVEggJ3N0cmljdCAkLmFhYScgVU5LTk9XTiBPTiBF UlJPUiwKKworCQkJanMyIGpzb24gUEFUSCAnJCcsCisJCQlqc2IydyBqc29uYiBQQVRIICckJyBX SVRIIFdSQVBQRVIsCisJCQlqc2IycSBqc29uYiBQQVRIICckJyBPTUlUIFFVT1RFUywKKwkJCWlh IGludFtdIFBBVEggJyQnLAorCQkJdGEgdGV4dFtdIFBBVEggJyQnLAorCQkJamJhIGpzb25iW10g UEFUSCAnJCcsCisKKwkJCU5FU1RFRCBQQVRIICckWzFdJyBBUyBwMSBDT0xVTU5TICgKKwkJCQlh MSBpbnQsCisJCQkJTkVTVEVEIFBBVEggJyRbKl0nIEFTICJwMSAxIiBDT0xVTU5TICgKKwkJCQkJ YTExIHRleHQKKwkJCQkpLAorCQkJCWIxIHRleHQKKwkJCSksCisJCQlORVNURUQgUEFUSCAnJFsy XScgQVMgcDIgQ09MVU1OUyAoCisJCQkJTkVTVEVEIFBBVEggJyRbKl0nIEFTICJwMjoxIiBDT0xV TU5TICgKKwkJCQkJYTIxIHRleHQKKwkJCQkpLAorCQkJCU5FU1RFRCBQQVRIICckWypdJyBBUyBw MjIgQ09MVU1OUyAoCisJCQkJCWEyMiB0ZXh0CisJCQkJKQorCQkJKQorCQkpCisJKTsKKworXHN2 IGpzb25iX3RhYmxlX3ZpZXcKKworRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKSBTRUxFQ1Qg KiBGUk9NIGpzb25iX3RhYmxlX3ZpZXc7CisKK0RST1AgVklFVyBqc29uYl90YWJsZV92aWV3Owor RFJPUCBET01BSU4ganNvbmJfdGVzdF9kb21haW47CisKKy0tIEpTT05fVEFCTEU6IG9ubHkgb25l IEZPUiBPUkRJTkFMSVRZIGNvbHVtbnMgYWxsb3dlZAorU0VMRUNUICogRlJPTSBKU09OX1RBQkxF KGpzb25iICcxJywgJyQnIENPTFVNTlMgKGlkIEZPUiBPUkRJTkFMSVRZLCBpZDIgRk9SIE9SRElO QUxJVFksIGEgaW50IFBBVEggJyQuYScgRVJST1IgT04gRU1QVFkpKSBqdDsKK1NFTEVDVCAqIEZS T00gSlNPTl9UQUJMRShqc29uYiAnMScsICckJyBDT0xVTU5TIChpZCBGT1IgT1JESU5BTElUWSwg YSBpbnQgUEFUSCAnJCcgRVJST1IgT04gRU1QVFkpKSBqdDsKKworLS0gSlNPTl9UQUJMRTogT04g RU1QVFkvT04gRVJST1IgYmVoYXZpb3IKK1NFTEVDVCAqCitGUk9NCisJKFZBTFVFUyAoJzEnKSwg KCciZXJyIicpKSB2YWxzKGpzKSwKKwlKU09OX1RBQkxFKHZhbHMuanM6Ompzb25iLCAnJCcgQ09M VU1OUyAoYSBpbnQgUEFUSCAnJCcpKSBqdDsKKworU0VMRUNUICoKK0ZST00KKwkoVkFMVUVTICgn MScpLCAoJyJlcnIiJykpIHZhbHMoanMpCisJCUxFRlQgT1VURVIgSk9JTgorCUpTT05fVEFCTEUo dmFscy5qczo6anNvbmIsICckJyBDT0xVTU5TIChhIGludCBQQVRIICckJykgRVJST1IgT04gRVJS T1IpIGp0CisJCU9OIHRydWU7CisKK1NFTEVDVCAqCitGUk9NCisJKFZBTFVFUyAoJzEnKSwgKCci ZXJyIicpKSB2YWxzKGpzKQorCQlMRUZUIE9VVEVSIEpPSU4KKwlKU09OX1RBQkxFKHZhbHMuanM6 Ompzb25iLCAnJCcgQ09MVU1OUyAoYSBpbnQgUEFUSCAnJCcgRVJST1IgT04gRVJST1IpKSBqdAor CQlPTiB0cnVlOworCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJzEnLCAnJCcgQ09M VU1OUyAoYSBpbnQgUEFUSCAnJC5hJyBFUlJPUiBPTiBFTVBUWSkpIGp0OworU0VMRUNUICogRlJP TSBKU09OX1RBQkxFKGpzb25iICcxJywgJyQnIENPTFVNTlMgKGEgaW50IFBBVEggJ3N0cmljdCAk LmEnIEVSUk9SIE9OIEVNUFRZKSBFUlJPUiBPTiBFUlJPUikganQ7CitTRUxFQ1QgKiBGUk9NIEpT T05fVEFCTEUoanNvbmIgJzEnLCAnJCcgQ09MVU1OUyAoYSBpbnQgUEFUSCAnbGF4ICQuYScgRVJS T1IgT04gRU1QVFkpIEVSUk9SIE9OIEVSUk9SKSBqdDsKKworU0VMRUNUICogRlJPTSBKU09OX1RB QkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1OUyAoYSBpbnQgUEFUSCAnJCcgICBERUZBVUxUIDEg T04gRU1QVFkgREVGQVVMVCAyIE9OIEVSUk9SKSkganQ7CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFC TEUoanNvbmIgJyJhIicsICckJyBDT0xVTU5TIChhIGludCBQQVRIICdzdHJpY3QgJC5hJyBERUZB VUxUIDEgT04gRU1QVFkgREVGQVVMVCAyIE9OIEVSUk9SKSkganQ7CitTRUxFQ1QgKiBGUk9NIEpT T05fVEFCTEUoanNvbmIgJyJhIicsICckJyBDT0xVTU5TIChhIGludCBQQVRIICdsYXggJC5hJyBE RUZBVUxUIDEgT04gRU1QVFkgREVGQVVMVCAyIE9OIEVSUk9SKSkganQ7CisKKy0tIEpTT05fVEFC TEU6IEVYSVNUUyBQQVRIIHR5cGVzCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJh IicsICckJyBDT0xVTU5TIChhIGludDQgRVhJU1RTIFBBVEggJyQuYScpKTsKK1NFTEVDVCAqIEZS T00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEgaW50MiBFWElTVFMgUEFU SCAnJC5hJykpOworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09M VU1OUyAoYSBpbnQ4IEVYSVNUUyBQQVRIICckLmEnKSk7CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFC TEUoanNvbmIgJyJhIicsICckJyBDT0xVTU5TIChhIGZsb2F0NCBFWElTVFMgUEFUSCAnJC5hJykp OworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1OUyAoYSBj aGFyKDMpIEVYSVNUUyBQQVRIICckLmEnKSk7CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNv bmIgJyJhIicsICckJyBDT0xVTU5TIChhIGpzb24gRVhJU1RTIFBBVEggJyQuYScpKTsKK1NFTEVD VCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEganNvbmIgRVhJ U1RTIFBBVEggJyQuYScpKTsKKworLS0gSlNPTl9UQUJMRTogV1JBUFBFUi9RVU9URVMgY2xhdXNl cyBvbiBzY2FsYXIgY29sdW1ucworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcid29y bGQiJywgJyQnIENPTFVNTlMgKGl0ZW0gdGV4dCBQQVRIICckJyBLRUVQIFFVT1RFUyBPTiBTQ0FM QVIgU1RSSU5HKSk7CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJ3b3JsZCInLCAn JCcgQ09MVU1OUyAoaXRlbSB0ZXh0IFBBVEggJyQnIE9NSVQgUVVPVEVTIE9OIFNDQUxBUiBTVFJJ TkcpKTsKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnIndvcmxkIicsICckJyBDT0xV TU5TIChpdGVtIHRleHQgRk9STUFUIEpTT04gUEFUSCAnJCcgS0VFUCBRVU9URVMpKTsKK1NFTEVD VCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnIndvcmxkIicsICckJyBDT0xVTU5TIChpdGVtIHRl eHQgRk9STUFUIEpTT04gUEFUSCAnJCcgT01JVCBRVU9URVMpKTsKK1NFTEVDVCAqIEZST00gSlNP Tl9UQUJMRShqc29uYiAnIndvcmxkIicsICckJyBDT0xVTU5TIChpdGVtIHRleHQgRk9STUFUIEpT T04gUEFUSCAnJCcgV0lUSE9VVCBXUkFQUEVSIEtFRVAgUVVPVEVTKSk7CitTRUxFQ1QgKiBGUk9N IEpTT05fVEFCTEUoanNvbmIgJyJ3b3JsZCInLCAnJCcgQ09MVU1OUyAoaXRlbSB0ZXh0IFBBVEgg JyQnIFdJVEhPVVQgV1JBUFBFUiBPTUlUIFFVT1RFUykpOworCitTRUxFQ1QgKiBGUk9NIEpTT05f VEFCTEUoanNvbmIgJyJ3b3JsZCInLCAnJCcgQ09MVU1OUyAoaXRlbSB0ZXh0IEZPUk1BVCBKU09O IFBBVEggJyQnIFdJVEggV1JBUFBFUikpOworCistLSBFcnJvcjogUVVPVEVTIGNsYXVzZSBtZWFu aW5nbGVzcyB3aGVuIFdJVEggV1JBUFBFUiBpcyBwcmVzZW50CitTRUxFQ1QgKiBGUk9NIEpTT05f VEFCTEUoanNvbmIgJyJ3b3JsZCInLCAnJCcgQ09MVU1OUyAoaXRlbSB0ZXh0IEZPUk1BVCBKU09O IFBBVEggJyQnIFdJVEggV1JBUFBFUiBLRUVQIFFVT1RFUykpOworU0VMRUNUICogRlJPTSBKU09O X1RBQkxFKGpzb25iICcid29ybGQiJywgJyQnIENPTFVNTlMgKGl0ZW0gdGV4dCBQQVRIICckJyBX SVRIIFdSQVBQRVIgT01JVCBRVU9URVMpKTsKKworLS0gSlNPTl9UQUJMRTogbmVzdGVkIHBhdGhz IGFuZCBwbGFucworCistLSBTaG91bGQgZmFpbCAoSlNPTl9UQUJMRSBjb2x1bW5zIG11c3QgY29u dGFpbiBleHBsaWNpdCBBUyBwYXRoCistLSBzcGVjaWZpY2F0aW9ucyBpZiBleHBsaWNpdCBQTEFO IGNsYXVzZSBpcyB1c2VkKQorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdbXScs ICckJyAtLSBBUyA8cGF0aCBuYW1lPiByZXF1aXJlZCBoZXJlCisJQ09MVU1OUyAoCisJCWZvbyBp bnQgUEFUSCAnJCcKKwkpCisJUExBTiBERUZBVUxUIChVTklPTikKKykganQ7CisKK1NFTEVDVCAq IEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnW10nLCAnJCcgQVMgcGF0aDEKKwlDT0xVTU5TICgK KwkJTkVTVEVEIFBBVEggJyQnIENPTFVNTlMgKCAtLSBBUyA8cGF0aCBuYW1lPiByZXF1aXJlZCBo ZXJlCisJCQlmb28gaW50IFBBVEggJyQnCisJCSkKKwkpCisJUExBTiBERUZBVUxUIChVTklPTikK KykganQ7CisKKy0tIFNob3VsZCBmYWlsIChjb2x1bW4gbmFtZXMgbXVzdCBiZSBkaXN0aW5jdCkK K1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnW10nLCAnJCcgQVMgYQorCUNPTFVN TlMgKAorCQlhIGludAorCSkKKykganQ7CisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlq c29uYiAnW10nLCAnJCcgQVMgYQorCUNPTFVNTlMgKAorCQliIGludCwKKwkJTkVTVEVEIFBBVEgg JyQnIEFTIGEKKwkJQ09MVU1OUyAoCisJCQljIGludAorCQkpCisJKQorKSBqdDsKKworU0VMRUNU ICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdbXScsICckJworCUNPTFVNTlMgKAorCQliIGlu dCwKKwkJTkVTVEVEIFBBVEggJyQnIEFTIGIKKwkJQ09MVU1OUyAoCisJCQljIGludAorCQkpCisJ KQorKSBqdDsKKworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdbXScsICckJwor CUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcgQVMgYQorCQlDT0xVTU5TICgKKwkJCWIgaW50 CisJCSksCisJCU5FU1RFRCBQQVRIICckJworCQlDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICck JyBBUyBhCisJCQlDT0xVTU5TICgKKwkJCQljIGludAorCQkJKQorCQkpCisJKQorKSBqdDsKKwor LS0gSlNPTl9UQUJMRTogcGxhbiB2YWxpZGF0aW9uCisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJM RSgKKwlqc29uYiAnbnVsbCcsICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgJyQn IEFTIHAxIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9v IGludCApLAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGludCApCisJ CSksCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICck JyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQorCQkpCisJKQorCVBMQU4gKHAxKQorKSBqdDsK KworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdudWxsJywgJyRbKl0nIEFTIHAw CisJQ09MVU1OUyAoCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMSBDT0xVTU5TICgKKwkJCU5FU1RF RCBQQVRIICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICck JyBBUyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQorCQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMg cDIgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50 ICkKKwkJKQorCSkKKwlQTEFOIChwMCkKKykganQ7CisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJM RSgKKwlqc29uYiAnbnVsbCcsICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgUEFU SCAnJCcgQVMgcDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMg KCBmb28gaW50ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50 ICkKKwkJKSwKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBB VEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDAgT1VU RVIgcDMpCispIGp0OworCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ251bGwn LCAnJFsqXScgQVMgcDAKKwlDT0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVN TlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCApLAorCQkJ TkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGludCApCisJCSksCisJCU5FU1RF RCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09M VU1OUyAoIGJheiBpbnQgKQorCQkpCisJKQorCVBMQU4gKHAwIFVOSU9OIHAxIFVOSU9OIHAxMSkK KykganQ7CisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnbnVsbCcsICckWypd JyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDEgQ09MVU1OUyAoCisJ CQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICksCisJCQlORVNURUQg UEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKwkJKSwKKwkJTkVTVEVEIFBBVEgg JyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICgg YmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDAgT1VURVIgKHAxIENST1NTIHAxMykpCispIGp0 OworCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ251bGwnLCAnJFsqXScgQVMg cDAKKwlDT0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorCQkJTkVT VEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCApLAorCQkJTkVTVEVEIFBBVEgg JyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGludCApCisJCSksCisJCU5FU1RFRCBQQVRIICckJyBB UyBwMiBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBp bnQgKQorCQkpCisJKQorCVBMQU4gKHAwIE9VVEVSIChwMSBDUk9TUyBwMikpCispIGp0OworCitT RUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ251bGwnLCAnJFsqXScgQVMgcDAKKwlD T0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorCQkJTkVTVEVEIFBB VEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCApLAorCQkJTkVTVEVEIFBBVEggJyQnIEFT IHAxMiBDT0xVTU5TICggYmFyIGludCApCisJCSksCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMiBD T0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQor CQkpCisJKQorCVBMQU4gKHAwIE9VVEVSICgocDEgVU5JT04gcDExKSBDUk9TUyBwMikpCispIGp0 OworCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ251bGwnLCAnJFsqXScgQVMg cDAKKwlDT0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorCQkJTkVT VEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCApLAorCQkJTkVTVEVEIFBBVEgg JyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGludCApCisJCSksCisJCU5FU1RFRCBQQVRIICckJyBB UyBwMiBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBp bnQgKQorCQkpCisJKQorCVBMQU4gKHAwIE9VVEVSICgocDEgSU5ORVIgcDExKSBDUk9TUyBwMikp CispIGp0OworCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ251bGwnLCAnJFsq XScgQVMgcDAKKwlDT0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAor CQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCApLAorCQkJTkVTVEVE IFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGludCApCisJCSksCisJCU5FU1RFRCBQQVRI ICckJyBBUyBwMiBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAo IGJheiBpbnQgKQorCQkpCisJKQorCVBMQU4gKHAwIE9VVEVSICgocDEgSU5ORVIgKHAxMiBDUk9T UyBwMTEpKSBDUk9TUyBwMikpCispIGp0OworCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJ anNvbmIgJ251bGwnLCAnc3RyaWN0ICRbKl0nIEFTIHAwCisJQ09MVU1OUyAoCisJCU5FU1RFRCBQ QVRIICckJyBBUyBwMSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTEgQ09MVU1O UyAoIGZvbyBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAoIGJhciBp bnQgKQorCQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisJCQlORVNURUQg UEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKwkJKQorCSkKKwlQTEFOIChwMCBP VVRFUiAoKHAxIElOTkVSIChwMTIgQ1JPU1MgcDExKSkgQ1JPU1MgKHAyIElOTkVSIHAyMSkpKQor KSBqdDsKKworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdudWxsJywgJ3N0cmlj dCAkWypdJyAtLSB3aXRob3V0IHJvb3QgcGF0aCBuYW1lCisJQ09MVU1OUyAoCisJCU5FU1RFRCBQ QVRIICckJyBBUyBwMSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTEgQ09MVU1O UyAoIGZvbyBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAoIGJhciBp bnQgKQorCQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisJCQlORVNURUQg UEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKwkJKQorCSkKKwlQTEFOICgocDEg SU5ORVIgKHAxMiBDUk9TUyBwMTEpKSBDUk9TUyAocDIgSU5ORVIgcDIxKSkKKykganQ7CisKKy0t IEpTT05fVEFCTEU6IHBsYW4gZXhlY3V0aW9uCisKK0NSRUFURSBURU1QIFRBQkxFIGpzb25iX3Rh YmxlX3Rlc3QgKGpzIGpzb25iKTsKKworSU5TRVJUIElOVE8ganNvbmJfdGFibGVfdGVzdAorVkFM VUVTICgKKwknWworCQl7ImEiOiAgMSwgICJiIjogW10sICJjIjogW119LAorCQl7ImEiOiAgMiwg ICJiIjogWzEsIDIsIDNdLCAiYyI6IFsxMCwgbnVsbCwgMjBdfSwKKwkJeyJhIjogIDMsICAiYiI6 IFsxLCAyXSwgImMiOiBbXX0sCisJCXsieCI6ICI0IiwgImIiOiBbMSwgMl0sICJjIjogMTIzfQor CSBdJworKTsKKworLS0gdW5zcGVjaWZpZWQgcGxhbiAob3V0ZXIsIHVuaW9uKQorc2VsZWN0CisJ anQuKgorZnJvbQorCWpzb25iX3RhYmxlX3Rlc3QganR0LAorCWpzb25fdGFibGUgKAorCQlqdHQu anMsJ3N0cmljdCAkWypdJyBhcyBwCisJCWNvbHVtbnMgKAorCQkJbiBmb3Igb3JkaW5hbGl0eSwK KwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisJCQluZXN0ZWQg cGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICksCisJ CQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoIGMgaW50IHBhdGgg JyQnICkKKwkJKQorCSkganQ7CisKKy0tIGRlZmF1bHQgcGxhbiAob3V0ZXIsIHVuaW9uKQorc2Vs ZWN0CisJanQuKgorZnJvbQorCWpzb25iX3RhYmxlX3Rlc3QganR0LAorCWpzb25fdGFibGUgKAor CQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCisJCWNvbHVtbnMgKAorCQkJbiBmb3Igb3JkaW5h bGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisJCQlu ZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQn ICksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoIGMgaW50 IHBhdGggJyQnICkKKwkJKQorCQlwbGFuIGRlZmF1bHQgKG91dGVyLCB1bmlvbikKKwkpIGp0Owor CistLSBzcGVjaWZpYyBwbGFuIChwIG91dGVyIChwYiB1bmlvbiBwYykpCitzZWxlY3QKKwlqdC4q Citmcm9tCisJanNvbmJfdGFibGVfdGVzdCBqdHQsCisJanNvbl90YWJsZSAoCisJCWp0dC5qcywn c3RyaWN0ICRbKl0nIGFzIHAKKwkJY29sdW1ucyAoCisJCQluIGZvciBvcmRpbmFsaXR5LAorCQkJ YSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKwkJCW5lc3RlZCBwYXRo ICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKwkJCW5l c3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcg KQorCQkpCisJCXBsYW4gKHAgb3V0ZXIgKHBiIHVuaW9uIHBjKSkKKwkpIGp0OworCistLSBzcGVj aWZpYyBwbGFuIChwIG91dGVyIChwYyB1bmlvbiBwYikpCitzZWxlY3QKKwlqdC4qCitmcm9tCisJ anNvbmJfdGFibGVfdGVzdCBqdHQsCisJanNvbl90YWJsZSAoCisJCWp0dC5qcywnc3RyaWN0ICRb Kl0nIGFzIHAKKwkJY29sdW1ucyAoCisJCQluIGZvciBvcmRpbmFsaXR5LAorCQkJYSBpbnQgcGF0 aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3Qg JC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKwkJCW5lc3RlZCBwYXRo ICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQorCQkpCisJ CXBsYW4gKHAgb3V0ZXIgKHBjIHVuaW9uIHBiKSkKKwkpIGp0OworCistLSBkZWZhdWx0IHBsYW4g KGlubmVyLCB1bmlvbikKK3NlbGVjdAorCWp0LioKK2Zyb20KKwlqc29uYl90YWJsZV90ZXN0IGp0 dCwKKwlqc29uX3RhYmxlICgKKwkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorCQljb2x1bW5z ICgKKwkJCW4gZm9yIG9yZGluYWxpdHksCisJCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0 IC0xIG9uIGVtcHR5LAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVt bnMgKCBiIGludCBwYXRoICckJyApLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFz IHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisJCSkKKwkJcGxhbiBkZWZhdWx0IChpbm5l cikKKwkpIGp0OworCistLSBzcGVjaWZpYyBwbGFuIChwIGlubmVyIChwYiB1bmlvbiBwYykpCitz ZWxlY3QKKwlqdC4qCitmcm9tCisJanNvbmJfdGFibGVfdGVzdCBqdHQsCisJanNvbl90YWJsZSAo CisJCWp0dC5qcywnc3RyaWN0ICRbKl0nIGFzIHAKKwkJY29sdW1ucyAoCisJCQluIGZvciBvcmRp bmFsaXR5LAorCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKwkJ CW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAn JCcgKSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBp bnQgcGF0aCAnJCcgKQorCQkpCisJCXBsYW4gKHAgaW5uZXIgKHBiIHVuaW9uIHBjKSkKKwkpIGp0 OworCistLSBkZWZhdWx0IHBsYW4gKGlubmVyLCBjcm9zcykKK3NlbGVjdAorCWp0LioKK2Zyb20K Kwlqc29uYl90YWJsZV90ZXN0IGp0dCwKKwlqc29uX3RhYmxlICgKKwkJanR0LmpzLCdzdHJpY3Qg JFsqXScgYXMgcAorCQljb2x1bW5zICgKKwkJCW4gZm9yIG9yZGluYWxpdHksCisJCQlhIGludCBw YXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5LAorCQkJbmVzdGVkIHBhdGggJ3N0cmlj dCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyApLAorCQkJbmVzdGVkIHBh dGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisJCSkK KwkJcGxhbiBkZWZhdWx0IChjcm9zcywgaW5uZXIpCisJKSBqdDsKKworLS0gc3BlY2lmaWMgcGxh biAocCBpbm5lciAocGIgY3Jvc3MgcGMpKQorc2VsZWN0CisJanQuKgorZnJvbQorCWpzb25iX3Rh YmxlX3Rlc3QganR0LAorCWpzb25fdGFibGUgKAorCQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBw CisJCWNvbHVtbnMgKAorCQkJbiBmb3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAk LmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScg YXMgcGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0 ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKKwkJKQorCQlwbGFuIChw IGlubmVyIChwYiBjcm9zcyBwYykpCisJKSBqdDsKKworLS0gZGVmYXVsdCBwbGFuIChvdXRlciwg Y3Jvc3MpCitzZWxlY3QKKwlqdC4qCitmcm9tCisJanNvbmJfdGFibGVfdGVzdCBqdHQsCisJanNv bl90YWJsZSAoCisJCWp0dC5qcywnc3RyaWN0ICRbKl0nIGFzIHAKKwkJY29sdW1ucyAoCisJCQlu IGZvciBvcmRpbmFsaXR5LAorCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBl bXB0eSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBp bnQgcGF0aCAnJCcgKSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1 bW5zICggYyBpbnQgcGF0aCAnJCcgKQorCQkpCisJCXBsYW4gZGVmYXVsdCAob3V0ZXIsIGNyb3Nz KQorCSkganQ7CisKKy0tIHNwZWNpZmljIHBsYW4gKHAgb3V0ZXIgKHBiIGNyb3NzIHBjKSkKK3Nl bGVjdAorCWp0LioKK2Zyb20KKwlqc29uYl90YWJsZV90ZXN0IGp0dCwKKwlqc29uX3RhYmxlICgK KwkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorCQljb2x1bW5zICgKKwkJCW4gZm9yIG9yZGlu YWxpdHksCisJCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5LAorCQkJ bmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICck JyApLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGlu dCBwYXRoICckJyApCisJCSkKKwkJcGxhbiAocCBvdXRlciAocGIgY3Jvc3MgcGMpKQorCSkganQ7 CisKKworc2VsZWN0CisJanQuKiwgYjEgKyAxMDAgYXMgYgorZnJvbQorCWpzb25fdGFibGUgKGpz b25iCisJCSdbCisJCQl7ImEiOiAgMSwgICJiIjogW1sxLCAxMF0sIFsyXSwgWzMsIDMwLCAzMDBd XSwgImMiOiBbMSwgbnVsbCwgMl19LAorCQkJeyJhIjogIDIsICAiYiI6IFsxMCwgMjBdLCAiYyI6 IFsxLCBudWxsLCAyXX0sCisJCQl7IngiOiAiMyIsICJiIjogWzExLCAyMiwgMzMsIDQ0XX0KKwkJ IF0nLAorCQknJFsqXScgYXMgcAorCQljb2x1bW5zICgKKwkJCW4gZm9yIG9yZGluYWxpdHksCisJ CQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVycm9yLAorCQkJbmVzdGVkIHBh dGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKAorCQkJCWIgdGV4dCBmb3JtYXQganNv biBwYXRoICckJywKKwkJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICRbKl0nIGFzIHBiMSBjb2x1bW5z ICgKKwkJCQkJYjEgaW50IHBhdGggJyQnCisJCQkJKQorCQkJKSwKKwkJCW5lc3RlZCBwYXRoICdz dHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICgKKwkJCQljIHRleHQgZm9ybWF0IGpzb24gcGF0 aCAnJCcsCisJCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkWypdJyBhcyBwYzEgY29sdW1ucyAoCisJ CQkJCWMxIGludCBwYXRoICckJworCQkJCSkKKwkJCSkKKwkJKQorCQktLXBsYW4gZGVmYXVsdChv dXRlciwgY3Jvc3MpCisJCXBsYW4ocCBvdXRlciAoKHBiIGlubmVyIHBiMSkgY3Jvc3MgKHBjIG91 dGVyIHBjMSkpKQorCSkganQ7CisKKy0tIFNob3VsZCBzdWNjZWVkIChKU09OIGFyZ3VtZW50cyBh cmUgcGFzc2VkIHRvIHJvb3QgYW5kIG5lc3RlZCBwYXRocykKK1NFTEVDVCAqCitGUk9NCisJZ2Vu ZXJhdGVfc2VyaWVzKDEsIDQpIHgsCisJZ2VuZXJhdGVfc2VyaWVzKDEsIDMpIHksCisJSlNPTl9U QUJMRShqc29uYgorCQknW1sxLDIsM10sWzIsMyw0LDVdLFszLDQsNSw2XV0nLAorCQknc3RyaWN0 ICRbKl0gPyAoQFsqXSA8ICR4KScKKwkJUEFTU0lORyB4IEFTIHgsIHkgQVMgeQorCQlDT0xVTU5T ICgKKwkJCXkgdGV4dCBGT1JNQVQgSlNPTiBQQVRIICckJywKKwkJCU5FU1RFRCBQQVRIICdzdHJp Y3QgJFsqXSA/IChAID49ICR5KScKKwkJCUNPTFVNTlMgKAorCQkJCXogaW50IFBBVEggJyQnCisJ CQkpCisJCSkKKwkpIGp0OworCistLSBTaG91bGQgZmFpbCAoSlNPTiBhcmd1bWVudHMgYXJlIG5v dCBwYXNzZWQgdG8gY29sdW1uIHBhdGhzKQorU0VMRUNUICoKK0ZST00gSlNPTl9UQUJMRSgKKwlq c29uYiAnWzEsMiwzXScsCisJJyRbKl0gPyAoQCA8ICR4KScKKwkJUEFTU0lORyAxMCBBUyB4CisJ CUNPTFVNTlMgKHkgdGV4dCBGT1JNQVQgSlNPTiBQQVRIICckID8gKEAgPCAkeCknKQorCSkganQ7 CisKKy0tIEV4dGVuc2lvbjogbm9uLWNvbnN0YW50IEpTT04gcGF0aAorU0VMRUNUIEpTT05fRVhJ U1RTKGpzb25iICd7ImEiOiAxMjN9JywgJyQnIHx8ICcuJyB8fCAnYScpOworU0VMRUNUIEpTT05f VkFMVUUoanNvbmIgJ3siYSI6IDEyM30nLCAnJCcgfHwgJy4nIHx8ICdhJyk7CitTRUxFQ1QgSlNP Tl9WQUxVRShqc29uYiAneyJhIjogMTIzfScsICckJyB8fCAnLicgfHwgJ2InIERFRkFVTFQgJ2Zv bycgT04gRU1QVFkpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ3siYSI6IDEyM30nLCAnJCcg fHwgJy4nIHx8ICdhJyk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAneyJhIjogMTIzfScsICck JyB8fCAnLicgfHwgJ2EnIFdJVEggV1JBUFBFUik7CistLSBTaG91bGQgZmFpbCAoaW52YWxpZCBw YXRoKQorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ3siYSI6IDEyM30nLCAnZXJyb3InIHx8ICcg JyB8fCAnZXJyb3InKTsKKy0tIFNob3VsZCBmYWlsIChub3Qgc3VwcG9ydGVkKQorU0VMRUNUICog RlJPTSBKU09OX1RBQkxFKGpzb25iICd7ImEiOiAxMjN9JywgJyQnIHx8ICcuJyB8fCAnYScgQ09M VU1OUyAoZm9vIGludCkpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCBiYzZkYTRiNGQy Li4yZDI2NDg4YmNkIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMTMxNyw2ICsxMzE3 LDcgQEAgSnNvblBhdGhNdXRhYmxlQ29udGV4dAogSnNvblBhdGhQYXJzZUl0ZW0KIEpzb25QYXRo UGFyc2VSZXN1bHQKIEpzb25QYXRoUHJlZGljYXRlQ2FsbGJhY2sKK0pzb25QYXRoU3BlYwogSnNv blBhdGhTdHJpbmcKIEpzb25QYXRoVmFyQ2FsbGJhY2sKIEpzb25QYXRoVmFyaWFibGUKQEAgLTEz MjYsNiArMTMyNywyMCBAQCBKc29uUmV0dXJuaW5nCiBKc29uU2NhbGFyRXhwcgogSnNvblNlbUFj dGlvbgogSnNvblNlcmlhbGl6ZUV4cHIKK0pzb25UYWJsZQorSnNvblRhYmxlQ29sdW1uCitKc29u VGFibGVDb2x1bW5UeXBlCitKc29uVGFibGVDb250ZXh0CitKc29uVGFibGVQYXJzZUNvbnRleHQK K0pzb25UYWJsZUpvaW5TdGF0ZQorSnNvblRhYmxlUGxhbgorSnNvblRhYmxlUGxhblNwZWMKK0pz b25UYWJsZVBsYW5TdGF0ZQorSnNvblRhYmxlUGxhblN0YXRlVHlwZQorSnNvblRhYmxlUGxhbkpv aW5UeXBlCitKc29uVGFibGVQbGFuVHlwZQorSnNvblRhYmxlU2NhblN0YXRlCitKc29uVGFibGVT aWJsaW5nCiBKc29uVG9rZW5UeXBlCiBKc29uVHJhbnNmb3JtU3RyaW5nVmFsdWVzQWN0aW9uCiBK c29uVHlwZUNhdGVnb3J5CkBAIC0yNzkyLDYgKzI4MDcsNyBAQCBUYWJsZUZ1bmMKIFRhYmxlRnVu Y1JvdXRpbmUKIFRhYmxlRnVuY1NjYW4KIFRhYmxlRnVuY1NjYW5TdGF0ZQorVGFibGVGdW5jVHlw ZQogVGFibGVJbmZvCiBUYWJsZUxpa2VDbGF1c2UKIFRhYmxlU2FtcGxlQ2xhdXNlCi0tIAoyLjM1 LjMKCg== --000000000000aae962060f3871e9--