diff --git a/CHANGELOG.md b/CHANGELOG.md index 2bd12c1..28797b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ Cambios notables de la librería TypeScript y de la página. El proyecto usa ver ## Especificación 0.10, en la rama `v0.10` — sin versión +### `testdata` en `spec-v0.11` (01-10-2026) + +- `testdata` se sincroniza con el tag `spec-v0.11` de `datekeys-go` (`ae33434`), y `SPEC_VERSION` pasa a `0.11`. Trae tres fixtures (`format3_signed`, con firma de clave propia; `format3_signed_cms`, con dos certificados sellados; `format3_sealed`, con firma y sello RFC 3161) y tres ficheros de vectores (`ed25519_strict.json`, `security_cms.json` y `locator.json`). El corpus de mutaciones pasa a 210 casos, con uno fuera del §64: una firma de `alg` 1 que no verifica, F2. `ibe-vectors.json` añade los tres fixtures y rehace los de `format3_signature_unsupported` y `format3_seal_unsupported`; `mutation-texts.json` se rehace con el `capsule.Open` de esa referencia. +- **Lo que esta biblioteca no hace todavía:** lee el área de seguridad como un lector de la v0.10, así que una firma o un sello que la referencia comprueba da F1 o S1 aquí, y la referencia da F2 a F6 y S3 a S5. El tipo `Verdict` y los textos ya los conocen. Los tests lo dicen en lugar de ocultarlo: `testing/pending.ts` da lo que esta biblioteca devuelve donde la referencia registra una verificación, y un bloque de `vectors.test.ts` comprueba la estructura de los vectores que aún no se portan. Portar la verificación (§29.8 a §29.11 y el localizador del §44.1) hace esas funciones la identidad. + El formato 3 de la especificación 0.10, según `PLAN_formato3_ts.md` (en `../docs`). La versión que lo publique la decide el autor. ### Llave de palabras y firma de drand diff --git a/README.md b/README.md index 185729d..94db07a 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # datekeys-ts -Implementación en TypeScript del protocolo DateKeys v0.10 y página de prueba en el navegador. Sustituye al prototipo, archivado en `../archive/prototype` (API Quicknet en Go, CLI tlock y cliente Svelte, commit `4d2b0a1`). +Implementación en TypeScript del protocolo DateKeys (formato 3 de la v0.10; con los datos de prueba de la v0.11, cuya verificación de firmas y sellos está pendiente) y página de prueba en el navegador. Sustituye al prototipo, archivado en `../archive/prototype` (API Quicknet en Go, CLI tlock y cliente Svelte, commit `4d2b0a1`). La implementación de referencia es la librería Go `g.activething.com/go/DateKeys`, en `../datekeys-go`. Los planes y el estado del trabajo están en `../docs`, el repositorio privado de documentación del proyecto. @@ -21,7 +21,7 @@ Hay tres números de versión, cada uno con su significado, como en la referenci | Versión | Dónde | Cambia cuando | |---|---|---| | Formato | Dentro de los objetos: el formato de la cápsula, el `VERSION` del prelude de DKC1, 1, 2 o 3 al leer, que fija también la versión de schema de CONTROL_CBOR; y 1 en la trama DKK1 y en el schema de los demás objetos | Cambia el formato. Un lector rechaza una versión que no conoce (§22, §70) | -| Especificación | `SPEC_VERSION` de `src/lib/dkc/version.ts`, hoy `0.10`: la del tag `spec-v0.10` de `datekeys-go` | Cambia el texto normativo | +| Especificación | `SPEC_VERSION` de `src/lib/dkc/version.ts`, hoy `0.11`: la del tag `spec-v0.11` de `datekeys-go` | Cambia el texto normativo | | Librería | `VERSION` de `src/lib/dkc/version.ts`, igual al campo `version` de `package.json` | Cambia la API o el comportamiento. Versionado semántico, sin promesa de estabilidad antes de 1.0.0 | `version.test.ts` comprueba que `VERSION` coincide con `package.json` y con su lockfile, y que `SPEC_VERSION` es la versión que nombran los vectores y fixtures compartidos; `vectors.test.ts` exige esa versión a cada fichero. El pie de la página muestra las dos. @@ -81,7 +81,7 @@ Los tests (`*.test.ts`) están junto a cada fichero. El comportamiento se contrastó con la librería Go en `3820066` (`692cf87` solo cambia la regla de UTF-8 de `dk1_` descrita abajo) mediante un oráculo diferencial fuera del repositorio: 483 527 entradas de tres semillas. Son mutaciones de los cinco `.dkc` oficiales de todas las clases (bits, bytes, truncados, inserciones, borrados, longitudes y campos del prelude, cabeceras reescritas con cambios de CBOR, DateKeys, arrays de extensiones con y sin registro de extensiones, cabeceras `age` de SEALED_CONTROL y de PAYLOAD_AGE, argumentos del stanza tlock, rondas, secciones cambiadas de sitio y combinaciones de varios defectos); CBOR de cada esquema (PUBLIC_HEADER, CONTROL_CBOR, cuerpo y fichero `.dkk`, Provider Profile, arrays de extensiones); `walk`, `peek` y `checkSchema`; cabeceras `age`, preludes, cadenas `dk1_`, rondas y fechas. En todas coinciden el veredicto, el código y el paso, y también el texto del error, el valor decodificado y la salida entera de `datekeys inspect -json`, byte a byte. Un segundo diferencial con otro generador, de 407 196 entradas, se repitió contra `f6f2e9f` (la enmienda de canonicidad de puntos) con el mismo resultado, textos incluidos. -Con la v0.9 se contrastaron contra `spec-v0.9` los 125 casos de `mutations.json`, en memoria y desde un `Blob` con salida, y coinciden el código, el paso y el texto del error de `capsule.Open` en todos. Desde la v0.10 ese contraste está en el repositorio: `src/lib/dkc/testing/mutation-texts.json` congela el texto de `capsule.Open` en `spec-v0.10` para los 209 casos, y `vectors.test.ts` exige el mismo en las dos aperturas. El validador de extensiones del arnés da los textos de `testkit.KnownExtensions`, así que ya coinciden también los casos de extensiones conocidas con datos inválidos. +Con la v0.9 se contrastaron contra `spec-v0.9` los 125 casos de `mutations.json`, en memoria y desde un `Blob` con salida, y coinciden el código, el paso y el texto del error de `capsule.Open` en todos. Desde la v0.10 ese contraste está en el repositorio: `src/lib/dkc/testing/mutation-texts.json` congela el texto de `capsule.Open` en `spec-v0.11` para los 210 casos, y `vectors.test.ts` exige el mismo en las dos aperturas. El validador de extensiones del arnés da los textos de `testkit.KnownExtensions`, así que ya coinciden también los casos de extensiones conocidas con datos inválidos. Como la referencia desde `f6f2e9f`, los errores no copian el texto de una librería: una cabecera `age` que no se puede leer da siempre `agewrap: not an age v1 header: malformed, truncated or beyond the parser limits` (`ERR_INTEGRITY`). El motivo del parser, con las palabras de `age`, queda en `cause` del error, fuera del mensaje, y los tests lo comparan con los textos de `age` para comprobar que se rechaza por la misma razón. @@ -279,7 +279,7 @@ Umbrales de cobertura (`vitest.config.ts`), al 100 % en líneas, ramas, funcione Para regenerarlo: `node scripts/tlock-ts-samples.mjs > ts-samples.json`, y desde el mismo módulo Go temporal, `go run tlock-go-vectors.go ts-samples.json > tlock-vectors.json`. - En `ibe-vectors.json`, H2, H3 y H4 no son públicas en kyber: el script las reescribe con sus etiquetas y las comprueba en cada fixture contra la file key de tlock y contra U = r·G2. Los cifrados de kyber usan un sigma aleatorio, así que el fichero se genera una vez y se congela. Para regenerarlo, desde un módulo Go temporal que requiera la referencia (`replace g.activething.com/go/DateKeys => ../datekeys-go`, `GOFLAGS=-mod=mod`, y la directiva `go` de la referencia, para que se use su toolchain): `go run ibe-go-vectors.go ../datekeys-ts/testdata/fixtures > ibe-vectors.json`. Los siete fixtures del formato 2 se añadieron el 29-09-2026 así, sobre `spec-v0.9`, tomando solo el bloque `fixtures`: los valores de los cinco anteriores salieron idénticos, y el resto del fichero no cambió. Los nueve del formato 3 se añadieron igual el 30-09-2026, sobre `spec-v0.10`, con los doce anteriores idénticos. + En `ibe-vectors.json`, H2, H3 y H4 no son públicas en kyber: el script las reescribe con sus etiquetas y las comprueba en cada fixture contra la file key de tlock y contra U = r·G2. Los cifrados de kyber usan un sigma aleatorio, así que el fichero se genera una vez y se congela. Para regenerarlo, desde un módulo Go temporal que requiera la referencia (`replace g.activething.com/go/DateKeys => ../datekeys-go`, `GOFLAGS=-mod=mod`, y la directiva `go` de la referencia, para que se use su toolchain): `go run ibe-go-vectors.go ../datekeys-ts/testdata/fixtures > ibe-vectors.json`. Los siete fixtures del formato 2 se añadieron el 29-09-2026 así, sobre `spec-v0.9`, tomando solo el bloque `fixtures`: los valores de los cinco anteriores salieron idénticos, y el resto del fichero no cambió. Los nueve del formato 3 se añadieron igual el 30-09-2026, sobre `spec-v0.10`, con los doce anteriores idénticos. El 01-10-2026, sobre `spec-v0.11`, se añadieron `format3_signed`, `format3_signed_cms` y `format3_sealed`, y se rehicieron los dos de `format3_signature_unsupported` y `format3_seal_unsupported`, que Go regeneró con `alg` 4294967295; los demás salieron idénticos. - El writer (`encrypt.test.ts`, `encrypt.stream.test.ts`, `encrypt.internal.test.ts`, `encrypt.property.test.ts`): - con los valores de su registro, reproduce byte a byte el PRELUDE, PUBLIC_HEADER, `header_binding` y CONTROL_CBOR de los siete fixtures de formato 2 de Go, con las mismas longitudes; cada credencial cae en el hueco del registro y la `.dkk` sale igual, salvo su `capsule_digest`; - lo que escribe se abre con `open`: las dos políticas, de 1 a 16 credenciales, cada una sola y todas juntas; contenidos en todos los bordes de trozo y de relleno, hasta 5 000 000 de bytes, con las dos reglas; rondas 1000, 1001 y 2000; @@ -397,7 +397,7 @@ Comprueba que los ficheros coinciden con `SOURCE.json`, sin faltantes ni sobrant `.gitattributes` marca `testdata/**` como binario para que git no altere ningún byte. -Copia actual: la de `testdata/SOURCE.json` (tag `spec-v0.10`, `cc35d2c`), que se sincroniza con `node scripts/sync-testdata.mjs sync --commit spec-v0.10`. +Copia actual: la de `testdata/SOURCE.json` (tag `spec-v0.11`, `ae33434`), que se sincroniza con `node scripts/sync-testdata.mjs sync --commit spec-v0.11`. ## Licencia diff --git a/src/lib/dkc/fixtures.test.ts b/src/lib/dkc/fixtures.test.ts index 5dbc2ce..a2d774a 100644 --- a/src/lib/dkc/fixtures.test.ts +++ b/src/lib/dkc/fixtures.test.ts @@ -16,6 +16,7 @@ import { checkHeadEnd, decodeHead, encodeHead } from './head.ts'; import { inspect, inspectView } from './inspect.ts'; import { paddedLength, type Padding, payloadAgeLength } from './padding.ts'; import { evaluateSecurity, type Verdict, verdictLines } from './security.ts'; +import { isPending, ported } from './testing/pending.ts'; import { h, hx, listTestdata, readBytes, readJSON } from './testing/testdata.ts'; interface FixtureExt { @@ -207,8 +208,11 @@ describe.each(dkcFixtures)('$json.file', ({ json: fx }) => { } expect(hx(encodeHead(decoded))).toBe(fx.head_cbor); const verdicts = evaluateSecurity(security); - expect(verdicts).toEqual({ signature: fx.verdicts!.signature, seal: fx.verdicts!.seal }); - expect(verdictLines(verdicts)).toEqual(fx.verdicts!.lines); + // Where the reference checks a signature or a seal, this library gives what + // a reader of v0.10 gives, until it ports the verification (testing/pending.ts). + const want = ported(fx.verdicts!); + expect(verdicts).toEqual(want); + if (!isPending(fx.verdicts!)) expect(verdictLines(verdicts)).toEqual(fx.verdicts!.lines); }); }); diff --git a/src/lib/dkc/open.test.ts b/src/lib/dkc/open.test.ts index 27f67b7..7ca1547 100644 --- a/src/lib/dkc/open.test.ts +++ b/src/lib/dkc/open.test.ts @@ -26,6 +26,7 @@ import { type Release, type ReleaseSource, suppliedRelease } from './release.ts' import { type Verdict, verdictLines } from './security.ts'; import { MemorySink, type Sink } from './sink.ts'; import { frame, split } from './testing/capsule.ts'; +import { isPending, ported } from './testing/pending.ts'; import { h, hx, listTestdata, readBytes, readJSON } from './testing/testdata.ts'; import { applyEdits, edits } from './testing/vectors.ts'; import { parseX25519Identity, unwrapX25519, x25519PublicKey } from './x25519.ts'; @@ -101,8 +102,8 @@ function expectFiles(f: Fixture, r: Opened, sink: MemorySink): void { f.name, ).toEqual(f.side.files ?? []); expect(opened.files.map(hx), f.name).toEqual(r.head!.files.map((x) => hx(f.plaintext.subarray(f.side.content_offset! + x.start, f.side.content_offset! + x.end)))); - expect(r.verdicts, f.name).toEqual({ signature: f.side.verdicts!.signature, seal: f.side.verdicts!.seal }); - expect(verdictLines(r.verdicts!), f.name).toEqual(f.side.verdicts!.lines); + expect(r.verdicts, f.name).toEqual(ported(f.side.verdicts!)); + if (!isPending(f.side.verdicts!)) expect(verdictLines(r.verdicts!), f.name).toEqual(f.side.verdicts!.lines); expect(r.areaLen, f.name).toBe(f.side.area_len); expect([r.plaintext, r.unusableHeadExtensions], f.name).toEqual([undefined, []]); } diff --git a/src/lib/dkc/security.test.ts b/src/lib/dkc/security.test.ts index c5686d8..49ded30 100644 --- a/src/lib/dkc/security.test.ts +++ b/src/lib/dkc/security.test.ts @@ -82,4 +82,14 @@ describe('verdictLines', () => { expect(lines('F1', 'S2')).toEqual([F1, S2]); expect(verdictText('S0')).toBe(''); }); + + // The verdicts of spec v0.11 (§29.7) that this library does not reach yet: it knows their fixed texts, and leaves to whoever shows + // F3, F4, F6 and S4 the text that names a key, a holder or a time. + it('has the text of the verdicts of v0.11 that do not name anything, and none for those that do', () => { + expect(verdictText('F2')).toBe('La firma no corresponde a este contenido.'); + expect(verdictText('F5')).toBe('Faltan firmas o sellos que la propia cápsula exige: trátala como no firmada.'); + expect(verdictText('S3')).toBe('El sello no corresponde a este contenido.'); + expect(verdictText('S5')).toBe('Sellado después de la fecha de apertura: no prueba nada anterior.'); + for (const v of ['F3', 'F4', 'F6', 'S4'] as const) expect(verdictText(v), v).toBe(''); + }); }); diff --git a/src/lib/dkc/security.ts b/src/lib/dkc/security.ts index f34e4f3..7437de6 100644 --- a/src/lib/dkc/security.ts +++ b/src/lib/dkc/security.ts @@ -30,7 +30,7 @@ const MAX_ALG = 2 ** 32 - 1; * - S1: a seal_type this reader does not implement; * - S2: a seal that does not decode or breaks its schema. */ -export type Verdict = 'X' | 'F0' | 'F1' | 'S0' | 'S1' | 'S2'; +export type Verdict = 'X' | 'F0' | 'F1' | 'F2' | 'F3' | 'F4' | 'F5' | 'F6' | 'S0' | 'S1' | 'S2' | 'S3' | 'S4' | 'S5'; /** The verdicts of the security area of a format 3 capsule. */ export interface Verdicts { @@ -51,6 +51,19 @@ export function verdictText(v: Verdict): string { return 'Lleva un sello de tiempo que esta versión no sabe comprobar: aquí no prueba nada.'; case 'S2': return 'El sello de tiempo es ilegible: no prueba nada.'; + case 'F2': + return 'La firma no corresponde a este contenido.'; + case 'F5': + return 'Faltan firmas o sellos que la propia cápsula exige: trátala como no firmada.'; + case 'S3': + return 'El sello no corresponde a este contenido.'; + case 'S5': + return 'Sellado después de la fecha de apertura: no prueba nada anterior.'; + // F3, F4, F6 and S4 name a key, a holder or a time: whoever shows them writes the text (spec §29.7). + case 'F3': + case 'F4': + case 'F6': + case 'S4': case 'S0': return ''; } diff --git a/src/lib/dkc/testing/ibe-vectors.json b/src/lib/dkc/testing/ibe-vectors.json index 632393e..8400b95 100644 --- a/src/lib/dkc/testing/ibe-vectors.json +++ b/src/lib/dkc/testing/ibe-vectors.json @@ -208,11 +208,21 @@ "name": "format3_seal_unsupported", "round": 2000, "signature": "b6cb8f482a0b15d45936a4c4ea08e98a087e71787caee3f4d07a8a9843b1bc5423c6b3c22f446488b3137eaca799c77e", - "body": "b07b6d9607a20f7f5fc773bea1a8f77a9ad42fffaa359e1449a0412fc657c467bcbfa115bc63ac1ea9bd4285ced4dbd40a5e9559e83c8624c1b99e0a9bf3509ab7c00a12de474f334b900a52307d78cb5968ba02e9b44888a5cc4b444ab31f1477683fac56082e39d2f83e9a1061cbb67e3bd7b05d9475e0f070703733d3afc7", - "gt": "04d467ae9024b08afd732304fd9868df5bbda57bfa9d5bfebf65d031e905d2bf857f8a88fcee62952d39e65c799055d404d766707bb062e52e3c8eea4f66163c20ba7817f9fe5a111cf36ef5fd844386f7ae7bd4d11d6d5c93e2926c8da91fc502b35641a7f0190002912096edc9c76d49962360d2bad1911df467eb86fd72b9c09285f1add48191dff6347f20bd44c50648b4a3bf87eed4d8d7d95a60165d2e946e1ea6fed6810ee4f94d52d953f066c0422adfd4b236f4421c074fb974bec00c4c618c0583f7c2f28e408feb9f90a52e264e5eecf79f00d7ca9a3b4c77008506cf3f0cc7585409ff2d59136776dbb30ff91083ab27c3180009db81de239ad3fc4b9f02ad3d216e582422dcfb82dfa57ef09e4a294cb2190f7a6080193c8c2c0d0f01c1873d1c1d73d955b1e2fb050f943a1fdb1e891e2957985f3bbffd6d7903fa7d9ae10c759bc4024e692c16243e09b054b35400ca1b83f1c3cd6ebf0474315b18f122064eae18a3a76e36ec0261f42fdc6af5117ffc31fbcfcb13d0990319b37af84e940338613f7ec5237fc2fd99830ba1982d4553a85b7039baeb2cd5dc4c3506f64d77b5c181fab62b0552f6092dc25e5ab457a2507c0cf2981130a94390ed662b93141656cf6f62c8345420524d7b17bf4b021b5375b17b6646dbd810f754dd221c39f521b1d1f7bf5b196faff6d7264c00d9971703b0d754c122ebc3eee3ad4c380e4c0cadde7a2207966500b1fcc9f1d5fce28a74457f08bb52d0fe611e970f9fd3b0720245c5a702efb71e71063831d96d4807448f9ac083249d", - "sigma": "bcd006607f91de520e715d7188d07be4", - "r": "6c6bf922679e1ca92f2527fa5874adf3837ddf35851c0d92f79997f9c1cfa987", - "file_key": "d09d6d78026155a099f10861789c5601" + "body": "8f2cb7577b036e54ca2019d01c6941d0ea9f18e3caade81e41c8f77f1514c0a5c75583d6372db607f902d5056c942b0c16c48999c5897a1b44953499a2da59eabc7fbd6ec27886882ce0bf2becdb259b8c62b940dcdfa43865e8de37c74dc49bffa90f04530e33134cc4ee5a843aae112b49ea99eaefc5645b5f963866ed94cb", + "gt": "0a6e979e201b2e75f93ab0af0d266ac7cc8a3617b6aff1e69b65b22dc64055057ce04a5b011c9575306692d12c7673c300aa12d22ecfbf09672bb412f563e8fded84b9a21751c88acffe5802d9a7df55a66be413cd3d2212633403270b96ad32142cc55923292008525f833f2d7b747dbb6f9c7653e219bff4e9c9e0516ebef129884263c4121939b278118d94a42d901045dc777ad453d5d0fe2733da0d22659d61391e6bce2b2cf285ccda5ccbd4d55c7b4d6173131e7fc67d9abd4849f67916e95986d61a47008f4c999f4181b6bf252ad1e82a4e8d28b197d76c08d533427159b66b7e1b2f9b07fda931aa2c5055059ec52f03addc43093aa3e4a9128f8853f2f13cafadf09ceb83a6e2a03c4c289fca5a290db1f1ff03037ad33fee894a0ad29276146cbccdf7433b8c24a1be750355e7c4f9c5d8ffc9824596530677d7fbe31da1424572493ab046340201c20708ae6c523eee32e21fc5ecd62de2fd764180372f617b7fb3fc960554cc4594fa31d74041a3fda4c1291a47a853bcbd3714d9735ee0b398de27283f571d68e37dfcf947d135c0f8db36556318a580de154f874271a4ebdde23bb966d3ef9977640e3b0943c1ee44872ddd379b2a307d1c3baae21bf9546b625f6f2a0aa11bd15c63df7d2315cfa16cf1b59629babca09818e8baab411f7943b1d16ca53df07a417eaeb19b1fb48c3451fe53c0b8d00398872b83f6836e7dc37b3005624488cf81123bfc106d79e3f41e8cfc338b9f960153b4f7a011d90cd0eb81ef3bf6264be3fb165f8989621ee8543ca1741e87091d", + "sigma": "25fedf2e4e3d2db30d94a0b468b90e38", + "r": "51d85fb4996c5c96c33e15def42a07200863bcda50cb31b102ac1e062e361e8a", + "file_key": "ad1ef55f85be2eb6be3b14c2e29d3b10" + }, + { + "name": "format3_sealed", + "round": 1000, + "signature": "b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39", + "body": "a997ce105da38e371d30e785139a09988fa76d996731b452b367b2f162e45e7e50d6b637ba7859285c30d2c4f820af1b102a566baedafd449bf5822b312e47687e42c0415c75d6a1c28f53535f030161d7f76ed21ad0559c06c944134f76171b999565fdc59b95d4ed7e86cde4d69425cc468c85b1034a7b9b9a59bca57851ec", + "gt": "001c6f2698d3a4bc7f23c878263702983399303c88873844513fe85d10955c2b7e69936c732c1077c153c6601d825cf7062afd39ff72904bf52af7a30585da8cb4f0f6ee9d2ac12baf3814c278c09c1742b36a40705b91fe0b227e06497f8083102a98bd58616c3bbb4fb0aad092bb87ba93e3d86b9a9e68140036de255647436b4accad045b329e91fbf432621b28c413e0ca8716dae6632087060a2925f7714d649528aac5b42071c4252435ec7591fd4c7dd13b99e25a1f9e53d3d2ed51c00a4fa88689bdf09ecd5f4ba2900ea126e217e73192188618cb1f458c9e9f7eceb05fd552fc01d1e51197164ed04a84640745cded02537d0586f312159d36ef30e0d7f67b166159a3cac2d6c7de7b9d3d106bd35bde3336ee925cbd3201056c0a0f8437f0bc1acc98afd51c0f0f729f271cbdccd1481da059f6854efe3843897997353495e4b769de981eb57c5639257b0d3b7a8c53f45c42cee145a111e86abd6def541e2bc10a5626499d4f4aa697c64c005e0b1f3b87944ce8267f3e0dad6a012b5c49b77b9917ffa0bad6983b19370c4cbe51c2af02cb987240faf1bac6492214ea3fa45ec28e075ed88df84553660c63ea07fd57c53ce6342d58b9f41025f252e5344ebba00f0df57fd477604b48516c722c5c11f3bfa0eb5d09b8709711190135845ffd12c9e4fb9f90a2f630006304a92e51412710aa7e4dec55628584aa39a84713225957a9bec21771697bd501b4b3b3c0d17725736a05883e1420af57f4985ea2127f7f088250d4fa1470a50fc37311f01ad479d34f6c58c7fb27ab", + "sigma": "561ecf99d0ee7b65b9b8eabdf1326d49", + "r": "2cb8d938e57ac3f488a86ae32e8b8cf337e53d1dc4026251fbb765c7d55a5f56", + "file_key": "e28fad3c090481bd1c51bbe29c1e51e3" }, { "name": "format3_security_v2", @@ -228,11 +238,31 @@ "name": "format3_signature_unsupported", "round": 1001, "signature": "b33bf3667cbd5a82de3a24b4e0e9fe5513cc1a0e840368c6e31f5fcfa79bea03f73896b25883abf2853d10337fb8fa41", - "body": "85ddc68a8dcec80a9e9d123d066b83dc0c16283cb740cfc36ce35d2196ba4826be94684aab2555c03c269fcaf624274419dfe8b4d1dba7a9a04e326decb075d7420688adb9ce607dd827549ef3d089d43b4106818de6e75b8b55360305cc7623cd12ab07ae61078c8b91bf5baf00fe3cb8603745428506a3b78b325dfede923a", - "gt": "0d43b966f4f1f1a43e4bdf25a60b60eedf15cc1f7dc698de7b6d042072d1265b5e501dbb7f0c746c3095682b2e86fda305cf124564884f21141871d5185898cfb7317513c357f95a8fa2755db12fa0eaeb794b157a870a4225df6a0626537cdf1055f6226bd8e3d1abac2688f5511d7e07c9ac7dac5e345fc70a018cbff6f399621d8005e145b9b021142149d4870621140503d9db1e8208b4e8ee73f0091368a3a9e84e8960a611814c63af01ad09140abfb4e1dc5c307af0c308e72ea004571179484e7f6f3de09e88a36de8e979bb4dbeec4371e533ff21efecbc3b56d945e032f5b229908f11bd409c4591adfa850c767c96aa8d3583247a0d2c17afb47861f21766175b7c7b6c6870247aa3750253f17d01603ec0108c633970a2b65ce50733126a7b9af02d813168206328058b7522c1bb09b77ace44a35a2df3a96501440bef3fcd0bab7842d02932771cdf56010035abebd08058b988dc959c722e83bde308eb10a08da4723c21ca948c8823c890d27e84bf0c5943ff0579f958af7002154a40d6481bef47c9b09638dd4f59a704b09c1965e009e5c5109436611d4e763e1db38ef66f66bd2c911cac21dd83038822faaf86b2831099093ed1af66cecb24f7255d3023bedbd26cc79f094c2a388ff7089e59e970f42a6eb64e9d50bb07448cbb244d810db75642ef82cc21b59b42614228a81d85a29159730f96485bc39207dcd0861bdea4b1349026271b4817d8977da1d306dd135e5f7ab85f3f2b5a8e46f71052efa32c0c8e22e38c541ac28c516fa6259a97d0f26db37ae3e25f", - "sigma": "ac43dcfd4164774fc61831d88d384157", - "r": "5bebc6873b788ffcca50e40aad9a76566d44c2240c12f1db6c546a48c08b4ae9", - "file_key": "b48f1a33fd384618c3e5316af390311d" + "body": "956a20295b5d8ff897cdf7fc9e533de6fcb6057fa10b755893897c4c6fb3fb72374e60eec44a7f2389b6b49972e368160c1479b4a14ecaf4ea8c27fb160c585f3c2ac8357be1005d783aa174ffac39775b5f51e4f6f7623fc82b77969cbe6186e5d95281941b126463673b5d33ed12972719d40fc8602bc1952750a42f0d6ea2", + "gt": "14700225b064ece17f372d5137af4c4242db24d8c3bd506b1259ecd21ae3c2845cd56b84fadc5723771e18ae2cc94285051cda39cf875302162539268801b7e9143809495233e5a77842edcbe0baf59ffe085f971329b670b17b0bcf84d8d74b088b75aaf80aae14e624de290d416fa31abe62dedb1c9dd2155d2dc026c4b5eb68121276680026783a36472429454f7f17cecd5400cf6356659665e72b200f750aa9047e84fd5721b5cc40a077dca09d2b9b6b126689439731b196ef1eef50b0095f10ea1f86cdc4d3db1d7ff339584f614f4eaef8463a35c40b6b9025d390dbafde382e73f3394690a3814cdfa65a6615bc8c8bdc4f3a010c6884bc7ff56268d301b4b631698df49a8a8153440cac5a37dda08280dc8bdfce96cbc3193862bb092955dcccd05445bd6fda0b30ef07177a12f241b2b80751528b136bcfd2b92ce0f8d00f892d7523bdb7de3f6f1ab59008d716fe3eaea532f8d76fc46350cb08cab7b28c4aedaa6536ed2023ce0ad4b124f9f734cb8ea7f555510cafb4808e9111a92d0565798da927e5931f6112a132b7e7976c65373e42edbe8444a2f81882e16326c244d6b3bb338dfc54e2c01fe4100a9a2965a72a1d812ecd45fe7d687b2123bd5e2ad48363ebfabe7368c709ee0ae934fe01c4d8328f877f080f334b761568ef4d037787ad6024c736d783c5e10152c2764e6371df3c9d62fd38ad3a5868a46ecb9413ea8f444e25cbf2e655880004d7773e1a83f1396610bee578b948cecab442db420df57323ea0d092001112a10809b0681797825abac68cfd3553f", + "sigma": "d0cc7b69b9ff4006bfff36a70c7987e2", + "r": "42793a9f250083ed5340c13d093381f71f800fdcaa65bf0058c7893e9f29a56a", + "file_key": "7043ce939cf88f8fd50476bb8fc45014" + }, + { + "name": "format3_signed", + "round": 1000, + "signature": "b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39", + "body": "a633e4d9d6b63893e7441848e2e8530fa4aa912d86df7644feee085701a3bb1269a640556de1b08f233397edc405969e006d17781bf2e447a0d23c75ed8b8b5dbb14aec6d2b485ee4a58487a5b6c51645dd9bde14f62ab4676ced2da368e3eae4f292d6ba505506c8c854ff0df690005d909ad470606ab6780d56ddb77e09f3e", + "gt": "08afd5eb35cc1269ffcb356ed60fc50514363f9c7ac28e310558bbfd129f039fe4abdcccfd5294ebdbcce0bd61484a8d0533dd91cfe34dd9871a498e3e7e1ad410993906255df086d2c5112b603941f01e9813f94ad6da342c8a699bc83cee7308fcf55b062be1141aa2a9be56f66dc1ed15d9fcf48310aaf1f614844c206d2b10ebba135df7a55f017233fb362896e00f3d95613ca8ee5dc62bd02fdc87cfc074839593157c74afdda2960d65b5c025dbbc4f2949e2e347a743dd0b3b6ad15c11cd03f50f84c7e67a2d02f8831c2da4a07b64b8981742dab4586b1be1b53145624aa83c44447b7d56b725e288fb4ddd195a69cae2e84b3ac99b9d779f1d174f926528198669acda970e8dfafc2252e96501c92d29e62097da1dab49ffd679ee08c86b5c002068cfcac503d945701b94a27056d9474eacb32e7f1d5c20f81c31c77d77315d3b65239f537c7b728c32dd01d991e294dac259982a5b8ecf5c954574f886dfadc91b76fa981229bebd46183b6f098de205dc203e001494d7aa04a017a9939c3a6398651d3bd58b09f93ce42a4831b1e337a923c451dc1b58c174ed709d2a4b65cfbaa86e545d96ab9744cc05daa4e03fe2484769236636e2c014a767c4fa4aa1b34e5fa0e04da48e7d50ebd8f7957a4a656ec35d5670d2f88fbf561827704a5eed2156f22a7e34458ac470095930f2d816c8a128faf5f89bd22f987f355b94012c7b03823c7f3505986cb917e21873b81d2f71ff0ca7deca1de541ceb4821550edb824aea7be01e8b9d3ca69d248a2c2cbb726776661d3965377b0", + "sigma": "05def51763185fe63e7fe7f2ae189eea", + "r": "222d8e58e9e99a41cb3d32f3aa8dce673ed42ddeb04fad64c3a2251c5ca64d85", + "file_key": "956e9ef859948545f4adb5e8d6c76e0e" + }, + { + "name": "format3_signed_cms", + "round": 1000, + "signature": "b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39", + "body": "9504af06ca444a66940de36d5c15d197d828d2e5f8de834a29190c4d61efe831d719a5acaf7b598b3338134baf78846e139247bf66b694f39d4b6c756c51d8c22264de003d1188485c8ab853438a01eed8acd71beaec168e8507586b56f9216120bec147e04e1c6e2c1c9faa0a0dc5a9f28ba97f3fca64ce81cf4bfe9f7f56e9", + "gt": "194557dea3992a89e3f3c9e18bd7830dcfa80e6ce353e6a978df7f0747790286aa441c1d6625e7a078f93d3d430bd3d5186a9d396b29f82ef16a9d491bd6a7f95ccbb0e67dbbdf387cdaa98f6a8466932bb879d56cde79f2642184087b89bdac020f1902e5b89e119b611134d2de3dadbfe28573bca6fac7e3bace78ace8a10104643f5ba979a0ff1fe78d92c9f1265c12cb2b75750e810c30ef56da94cc08ab70a728526d541eba29659b3a61924fe6e300231f16de4f0e54add69d0020e256032ea3f894c5de0b39bf15fb6e0851931b78579990d9f339032ef7906834e0173bc7149735a716f3f1f22c3d8741e1ca0af3b81cbde5a78bba9116a9f4700de4b6ea6e38681eac76a113a4a5fda67b6b4742faeb7b18396630e045fee91131f70da39c61e72730299206fed44981f8d5ebfb9cf42b60330db1602d6a91f529e4eb0f6fd312f20db3fdc6b5b1066d5e92019ee088f5e8a2cc8351ad059e5d44831cdf4cdfb2b4c4b5e55ea36c6a02c98bfb38b5353b9fcc55409df61050e9d26f0f5113f8bc466a6a875f44ff724391e2c33df0723ff631e0c12f01d9c85be7a987e7a9b755560b07e40cd74a3cf4e481128c4da457ef651a5b439405ec92507fdfe5dfa15f6d93c0369606427896156a6788672f70fbdcdfde021fc706b1f074130af3acb4b84d1e6c08ebf0ffe331d68db84803e1d6ad49ec9a1903e634a5d25607e0d48425cfab07168615bebac1a60793b2e6b11df0594cd7cb6616f6c412946f364fad59057432b7f635bac46ed65a5cd10ccc6eeb429edc5779bb058471", + "sigma": "644b74a1d11765ce2aea0b119b0bc161", + "r": "12b28076640c9005c18ded711e0d83e826039657477a9ab9c2c0973018d9bd6a", + "file_key": "7a27fbf3d45ec8133a3d27340f76f8b3" }, { "name": "format3_single", diff --git a/src/lib/dkc/testing/mutation-texts.json b/src/lib/dkc/testing/mutation-texts.json index 8013d8a..52d93c2 100644 --- a/src/lib/dkc/testing/mutation-texts.json +++ b/src/lib/dkc/testing/mutation-texts.json @@ -1,7 +1,7 @@ { "description": "The text of the error of capsule.Open for every case of testdata/vectors/mutations.json, or ok for a capsule that opens; see the header of scripts/mutation-go-texts.go.", "generator": "scripts/mutation-go-texts.go", - "spec": "0.10", + "spec": "0.11", "cases": [ { "name": "PUBLIC_HEADER_A + SEALED_CONTROL_B", @@ -820,7 +820,11 @@ "text": "ok" }, { - "name": "a signature of alg 1 opens with the verdict F1", + "name": "a signature of alg 4294967295 opens with the verdict F1", + "text": "ok" + }, + { + "name": "a signature of alg 1 that does not verify opens with the verdict F2", "text": "ok" }, { diff --git a/src/lib/dkc/testing/pending.ts b/src/lib/dkc/testing/pending.ts new file mode 100644 index 0000000..0abc9d3 --- /dev/null +++ b/src/lib/dkc/testing/pending.ts @@ -0,0 +1,32 @@ +// What this library does not do yet of spec v0.11: it reads the security area +// of a format 3 capsule as a reader of v0.10 does, so a signature or a seal that +// the reference checks gives F1 or S1 here. The shared fixtures and vectors +// already record the verdicts of the reference (F2 to F6, S3 to S5), and these +// helpers say what this library gives meanwhile, so that the tests state the +// gap instead of hiding it. Porting the verification (spec §29.8 to §29.11) +// makes every function here the identity, and the guard test fails until the +// entries are removed. +import type { Verdict } from '../security'; + +/** Verdicts that a reader of v0.10 cannot reach: those of a signature or a seal that is checked. */ +const SIGNATURE_CHECKED: readonly Verdict[] = ['F2', 'F3', 'F4', 'F5', 'F6']; +const SEAL_CHECKED: readonly Verdict[] = ['S3', 'S4', 'S5']; + +export interface Recorded { + readonly signature: Verdict; + readonly seal: Verdict; +} + +/** The verdicts that this library gives where the reference records `recorded`. */ +export function ported(recorded: Recorded): Recorded { + return { + signature: SIGNATURE_CHECKED.includes(recorded.signature) ? 'F1' : recorded.signature, + seal: SEAL_CHECKED.includes(recorded.seal) ? 'S1' : recorded.seal, + }; +} + +/** Whether the verification of the reference is something this library does not do yet for `recorded`. */ +export function isPending(recorded: Recorded): boolean { + const p = ported(recorded); + return p.signature !== recorded.signature || p.seal !== recorded.seal; +} diff --git a/src/lib/dkc/testing/vectors.ts b/src/lib/dkc/testing/vectors.ts index 746145b..27bdeb1 100644 --- a/src/lib/dkc/testing/vectors.ts +++ b/src/lib/dkc/testing/vectors.ts @@ -80,14 +80,14 @@ export function result(v: unknown, where: string): string { return s === 'ok' ? s : code(s, where); } -/** A verdict of the security area of format 3 (spec §29.7): X, F0, F1, S0, S1 or S2. */ +/** A verdict of the security area of format 3 (spec §29.7): X, F0 to F6 or S0 to S5. */ export function verdict(v: unknown, where: string): Verdict { const s = str(v, where); if (!(VERDICTS as readonly string[]).includes(s)) throw new FormatError(where, `"${s}" is not a verdict`); return s as Verdict; } -const VERDICTS: readonly Verdict[] = ['X', 'F0', 'F1', 'S0', 'S1', 'S2']; +const VERDICTS: readonly Verdict[] = ['X', 'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'S0', 'S1', 'S2', 'S3', 'S4', 'S5']; /** A step of the reading flow of spec §63, 1 to 18. */ export function step(v: unknown, where: string): number { diff --git a/src/lib/dkc/vectors.test.ts b/src/lib/dkc/vectors.test.ts index 4c37956..a8dd15f 100644 --- a/src/lib/dkc/vectors.test.ts +++ b/src/lib/dkc/vectors.test.ts @@ -61,6 +61,7 @@ import { import type { Release, ReleaseSource } from './release.ts'; import { evaluateSecurity, type Verdict, verdictLines } from './security.ts'; import { MemorySink } from './sink.ts'; +import { isPending, ported } from './testing/pending.ts'; import { hasTestdata, hx, listTestdata, readBytes, readJSON } from './testing/testdata.ts'; import { applyEdits, @@ -584,22 +585,25 @@ describe('vectors/mutations.json', () => { const inspected = f.filter((c) => c.error !== 'ok' && c.step <= LAST_INSPECT_STEP); const opened = f.filter((c) => c.step > LAST_INSPECT_STEP); - it('has the cases README counts: 209, 169 of §64 in their runs, 57 in steps 1 to 8 (39 of them from §64), 3 that open', () => { + it('has the cases README counts: 210, 169 of §64 in their runs, 57 in steps 1 to 8 (39 of them from §64), 4 that open', () => { // v0.8.2 had 65 cases, which stay first; v0.9 ran the 33 mutations of the // first two lists of §64 on the format 2 fixtures, the 22 of its third // list and 5 companions with a .dkk; v0.10 adds a case to that list, the // same 33 on the format 3 fixtures, the 47 of the list of format 3 and 3 - // further cases. - expect(f).toHaveLength(209); + // further cases. v0.11 adds one outside §64, a signature of alg 1 that + // does not verify, before the seal of seal_type 1: 205 of the 210 cases. + expect(f).toHaveLength(210); const run = (from: number, to: number, spec: boolean): boolean => f.slice(from, to).every((c) => c.spec === spec); expect([ run(0, 33, true), run(33, 65, false), run(65, 121, true), run(121, 126, false), - run(126, 206, true), - run(206, 209, false), - ]).toEqual([true, true, true, true, true, true]); + run(126, 205, true), + run(205, 206, false), + run(206, 207, true), + run(207, 210, false), + ]).toEqual([true, true, true, true, true, true, true, true]); expect(f.filter((c) => c.spec).length).toBe(169); // README: the same 33 on the fixtures of formats 2 and 3 are named // "format 2: …" and "format 3: …". @@ -610,6 +614,7 @@ describe('vectors/mutations.json', () => { expect(opens.map((c) => [c.spec, c.verdicts!.signature, c.verdicts!.seal])).toEqual([ [true, 'X', 'X'], [true, 'F1', 'S0'], + [false, 'F2', 'S0'], [true, 'F0', 'S1'], ]); expect(inspected.length + opened.length + opens.length).toBe(f.length); @@ -676,7 +681,8 @@ describe('vectors/mutations.json', () => { expect(r.error?.message ?? 'ok', 'the text of capsule.Open').toBe(TEXTS.cases[c.index]!.text); if (c.error === 'ok') { expect({ step: last.step, ok: last.ok, error: r.error }).toEqual({ step: 18, ok: true, error: undefined }); - expect([r.verdicts, verdictLines(r.verdicts!)]).toEqual([{ signature: c.verdicts!.signature, seal: c.verdicts!.seal }, c.verdicts!.lines]); + expect(r.verdicts).toEqual(ported(c.verdicts!)); + if (!isPending(c.verdicts!)) expect(verdictLines(r.verdicts!)).toEqual(c.verdicts!.lines); expect(sink.opened?.head).toBe(r.head); } else { expect({ step: last.step, ok: last.ok, error: last.error }).toEqual({ step: c.step, ok: false, error: c.error }); @@ -716,7 +722,7 @@ describe('vectors/mutations.json', () => { expect(r.error?.message ?? 'ok', 'the text of capsule.Open').toBe(TEXTS.cases[c.index]!.text); if (c.error === 'ok') { // A format 3 capsule that opens leaves the output untouched. - expect([last.step, last.ok, r.verdicts?.signature, r.verdicts?.seal, closed, aborted]).toEqual([18, true, c.verdicts!.signature, c.verdicts!.seal, false, false]); + expect([last.step, last.ok, r.verdicts?.signature, r.verdicts?.seal, closed, aborted]).toEqual([18, true, ported(c.verdicts!).signature, ported(c.verdicts!).seal, false, false]); } else { expect({ step: last.step, ok: last.ok, error: last.error }).toEqual({ step: c.step, ok: false, error: c.error }); expect([closed, aborted, sink.opened]).toEqual([false, true, undefined]); @@ -1145,8 +1151,10 @@ describe('vectors/security.json', () => { const VECTOR_FILES = [ 'vectors/cbor.json', 'vectors/dk1.json', + 'vectors/ed25519_strict.json', 'vectors/head_schema.json', 'vectors/inspect_differential.json', + 'vectors/locator.json', 'vectors/mutations.json', 'vectors/padding.json', 'vectors/path_fold.json', @@ -1154,6 +1162,7 @@ const VECTOR_FILES = [ 'vectors/profile_quicknet.json', 'vectors/quicknet_rounds.json', 'vectors/security.json', + 'vectors/security_cms.json', 'vectors/tlock_ibe.json', ]; @@ -1186,6 +1195,38 @@ describe('testdata/', () => { for (const f of VECTOR_FILES) expect(readme, f).toContain(`\`${f}\``); }); + // The vectors of spec v0.11 for the verification of the signature, the seal + // and the locator (§29.8 to §29.11, §44.1) that this library does not port + // yet: their structure is checked here, and what a reader of v0.10 gives on + // them, so that the gap is stated. Porting makes these blocks check the + // verdicts and the locator themselves. + describe('vectors of v0.11 not ported yet', () => { + it('security_cms.json: every case has a context and verdicts of the table, and the cases without a context are read as the reference reads them', () => { + const f = object(readJSON('vectors/security_cms.json'), 'security_cms.json'); + expect(f.spec).toBe(SPEC_VERSION); + const cases = array(f.cases, 'cases').map((c, i) => object(c, `cases[${i}]`)); + expect(cases.length).toBeGreaterThanOrEqual(20); + for (const [i, c] of cases.entries()) { + const at = `cases[${i}] ${String(c.name)}`; + const recorded = { signature: verdict(c.signature, `${at}.signature`), seal: verdict(c.seal, `${at}.seal`) }; + const ctx = object(c.context, `${at}.context`); + expect(hexOf(ctx.control_commit), at).toHaveLength(32); + expect(hexOf(ctx.head_digest), at).toHaveLength(32); + // Read without the context of a capsule, as a reader of v0.10 does, the reference says exactly what this library says. + if (c.no_context === true) { + expect(evaluateSecurity(hexOf(c.security_cbor)), at).toEqual(recorded); + expect(isPending(recorded), at).toBe(false); + } + } + }); + + it('locator.json and ed25519_strict.json name this specification', () => { + for (const name of ['vectors/locator.json', 'vectors/ed25519_strict.json']) { + expect(object(readJSON(name), name).spec, name).toBe(SPEC_VERSION); + } + }); + }); + it('checks the harness itself', () => { const base = Uint8Array.of(0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39); const ed = (list: unknown): Edit[] => edits(list, 'test'); @@ -1211,9 +1252,15 @@ describe('testdata/', () => { expect(() => keys({ b: 2 }, 'x', ['a'], ['b'])).toThrow(/missing "a"/); expect(() => code('ERR_NOPE', 'x')).toThrow(/not a normative code/); expect(() => step(19, 'x')).toThrow(/outside 1..18/); - expect(() => checkSpec({ spec: '0.8.2' }, 'x')).toThrow(/want 0\.10/); - expect(() => verdict('F2', 'x')).toThrow(/not a verdict/); + expect(() => checkSpec({ spec: '0.8.2' }, 'x')).toThrow(new RegExp(`want ${SPEC_VERSION.replace('.', '\\.')}`)); + expect(() => verdict('F7', 'x')).toThrow(/not a verdict/); expect(hasTestdata('README.md')).toBe(true); expect(errorCode(new Error('x'))).toBe(''); }); }); + +/** The bytes of a hexadecimal string of a vector file. */ +function hexOf(v: unknown): Uint8Array { + if (typeof v !== 'string' || !/^([0-9a-f]{2})*$/.test(v)) throw new FormatError('vector', 'not a hexadecimal string'); + return Uint8Array.from(v.match(/../g) ?? [], (b) => parseInt(b, 16)); +} diff --git a/src/lib/dkc/version.ts b/src/lib/dkc/version.ts index 87867b0..d561f91 100644 --- a/src/lib/dkc/version.ts +++ b/src/lib/dkc/version.ts @@ -12,7 +12,7 @@ export const VERSION = '0.2.0-dev'; /** * The version of the DateKeys Protocol Specification that this library - * implements: the tag spec-v0.10 of the Go reference, whose shared vectors + * implements: the tag spec-v0.11 of the Go reference, whose shared vectors * and fixtures (testdata/) all name it. */ -export const SPEC_VERSION = '0.10'; +export const SPEC_VERSION = '0.11'; diff --git a/testdata/README.md b/testdata/README.md index ba4b909..bf27b4c 100644 --- a/testdata/README.md +++ b/testdata/README.md @@ -44,6 +44,7 @@ Conventions for every file: | `vectors/path_fold.json` | the key of R7 of segments, and their NFD | §29.5, §29.5.1 | | `vectors/head_schema.json` | heads of format 3 and the result of decoding them | §29.4 to §29.6, §69.1 | | `vectors/security.json` | security areas of format 3 and their verdicts | §29.3, §29.7 | +| `vectors/ed25519_strict.json` | Ed25519 signatures and the result of the strict profile of the author signature | v0.11 §29.9 | | `vectors/mutations.json` | the mutation corpus: the 169 mutations of §64 and further cases | §63, §64 | | `vectors/inspect_differential.json` | 5110 mutations of fourteen fixtures with the verdict of steps 1 to 8 | §63 | | `fixtures/.dkc`, `.json` | official capsules and every intermediate value | §67 | @@ -72,7 +73,7 @@ extension and a noncritical CONTROL_CBOR extension. The release that opens each capsule, a published Quicknet signature, is in its `.json`, so they all decrypt offline. -Nine are in format 3. Their plaintext file is BODY, L bytes: the frame, the +Twelve are in format 3. Their plaintext file is BODY, L bytes: the frame, the security area, the head and the files (spec §29.2). | Fixture | Policy | Files | Comment | L | Padding code | P | Area | Verdicts | @@ -86,14 +87,45 @@ security area, the head and the files (spec §29.2). | `format3_security_v2` | `time_only` | 1 | — | 659 | 2 | 768 | 512 | X | | `format3_signature_unsupported` | `time_only` | 1 | — | 659 | 2 | 768 | 512 | F1, S0 | | `format3_seal_unsupported` | `time_only` | 1 | — | 659 | 2 | 768 | 512 | F1, S1 | +| `format3_signed` | `time_only` | 1, `nota.txt`, with mtime | — | 32915 | 2 | 34816 | 32768 | F4, S0 | +| `format3_signed_cms` | `time_only` | 1, `nota.txt`, with mtime | — | 32915 | 2 | 34816 | 32768 | F6, S0 | +| `format3_sealed` | `time_only` | 1, `nota.txt`, with mtime | — | 32915 | 2 | 34816 | 32768 | F4, S4 | -The first five are what `capsule.EncryptFiles` writes. The other four only a +The first five were written by a writer of v0.10, with the area of 512 bytes; +a writer of v0.11 writes the area of 32768 bytes, as in the last three, which +`capsule.EncryptFiles` writes with a signer and a sealer. The next four only a generator of test vectors may write (spec §62.1 rule 13): an area larger than -the 512 bytes of this version, which a reader accepts, a security map of -version 2, which a reader of this version cannot read, an author signature of -`alg` 1 with a random key of 32 bytes and a random signature of 64, and that +512 bytes, a security map of version 2, which a reader of this version cannot +read, an author signature of `alg` 4294967295, an `alg` that no version +defines, with a random key of 32 bytes and a random signature of 64, and that with a seal of `seal_type` 1 and a random token of 32 bytes. None of them has -a verdict that stops the opening. The BODY of `format3_tree` is over two STREAM +a verdict that stops the opening. + +The last three are signed and sealed with test keys (spec v0.11, §29.8 to +§29.11), and their record has a `signature` object, and `seal` in the third: + +- `format3_signed`: `alg` 1. The seed of the test key, which is not a secret, + is in `secret_seed`: Ed25519 is deterministic, so signing `author_message` + with it gives `signature` again. Opening it gives F4 and the key `author_key`, + `dkauthor1…`; with that key among the saved ones, F3. +- `format3_signed_cms`: `alg` 2, two certificates, an ECDSA P-256 one and an + RSA 2048 one, each with a seal CAdES-T from a test authority, dated before + the round time. The record has `signers` (SIGNERS in hexadecimal), + `certificates` (the DER of each), `signature` (the DER of the CMS signature) + and `signer_results`, one for each required signer in the order of SIGNERS: + holder, issuer that the certificate says, result, seal time, and whether the + seal, with its accuracy, precedes the round time. The private keys are not + kept: ECDSA and RSA-PSS are not deterministic, and a reader only verifies. +- `format3_sealed`: `alg` 1 as the first, and a seal of `seal_type` 2 over + `SEAL_SUBJECT`. The record has `seal`: `seal_subject`, the `token` in + hexadecimal, the `holder` of the authority as §29.7 shows it, and the time. + +In the three, the record gives the commitments `control_commit`, `head_digest` +and `signers_digest`, the text `author_message` and its `author_code`, and the +exact content of key 2 of `SECURITY_CBOR`. An implementation checks them from +the control, the head and the security area of the fixture, and the verdicts +from `verdicts`. The certificates and the tokens are random, so these fixtures +are frozen once written like the others. The BODY of `format3_tree` is over two STREAM chunks, with its head in the first. ## Edited files @@ -380,6 +412,76 @@ signature and the seal are evaluated apart, and the first row of the table of give F1 with the seal intact, and a seal that breaks its schema gives S2 even with an unknown `seal_type`, which is read only from a seal that meets it. +## `vectors/security_cms.json` + +Security areas with an author signature of `alg` 2, a CMS signature with +certificates, or a time seal of `seal_type` 2, an RFC 3161 token, each with +the context of its capsule and the verdicts of spec v0.11 §29.7, §29.10 and +§29.11. They complete `security.json`, whose areas have no valid signature or +seal. The file is frozen: the certificates and the tokens are made once, with +test keys, so a second implementation reads them and must reach the same +verdicts. Delete the file to make it again. + +```json +{ "name": "alg 2: a required signer is absent", "security_cbor": "a4…", + "context": { "control_commit": "…", "head_digest": "…", "round_time": "2030-01-01T00:00:00Z" }, + "signature": "F5", "seal": "S0", "signers": [ { "holder": "Ana López", "result": "valid", … }, { "holder": "", "result": "absent", … } ] } +``` + +`context` is what a verdict needs besides `SECURITY_CBOR`; with `no_context` +the area is read as a reader of v0.10 does, without a capsule, and any +signature is F1 and any seal S1. `signers` are the results of the required +signers in the order of SIGNERS, and `foreign_signers` those that are not +required and never count. A valid seal gives `seal_holder` and `seal_time`. +The cases cover F6 with two signers, with a seal after the round time and +with a signer who is not required; F5 for an absent signer, no seal, a seal +from before the certificate was valid and a key 3 beside the signature; F2 in +the context of another head; F1 for SIGNERS out of order or empty, a signature +that is not a CMS, and the lack of a context; and, over an `alg` 1 signature, +the seals S4, S5 (also when the accuracy reaches the round time), S3 (another +subject, an authority expired at its time), S2 (a TSTInfo of version 2, not +DER), S1 (a SHA-384 imprint) and a seal over a capsule without a signature. + +## `vectors/locator.json` + +The extension `datekeys.capsule` of a `.dkk` and what it points to (spec +v0.11, §44.1): a `.dkc` of patterned bytes in an envelope of age whose header +(`envelope_header`) goes in the locator and whose `rest`, without a mark, is +hidden in a `host` file at `host_offset`; the locator sealed with tlock for +round 1000 (`locator_sealed`), with its plaintext of 4096 bytes +(`locator_plaintext`) and its fields; and the data of the extension +(`extension_data`), with the note `note` and the DateKey `datekey`. A reader +opens the locator with the release of round 1000 (`quicknet_rounds.json`), +finds the rest in the host, checks `rest_size`, `rest_digest` and +`capsule_digest`, and gets the `.dkc` back. The file is frozen: the envelope +and the locator hold randomness. + +`padding_cases` give the length of the plaintext of the locator for the length +of its CBOR without the padding of key 6: the least multiple of 4096 that key 6 +can fill exactly, which skips a multiple where the CBOR length of key 6 jumps +(a base of 4070 gives 8192). `uri_cases` give the verdict of the rules of §44.1 +on an address: the scheme `https` or `ipfs`, the raw ASCII authority with no +percent sign or userinfo, a host of letters, digits and hyphens or a public IP +literal, and a port from 1 to 65535. + +## `vectors/ed25519_strict.json` + +Ed25519 signatures, in hexadecimal, and whether the strict profile of the +author signature accepts them (spec v0.11, §29.9): the equation of RFC 8032 +without the cofactor, A and R canonical, S below ℓ and A not of small order. +They follow the cases of «Taming the many EdDSAs»: S + ℓ, the top bits of S, a +non-canonical R, the eight points of small order as A, non-canonical +encodings of A, a key of mixed order with and without the cofactor, and an R +of small order with a key of prime order, which this profile accepts. + +```json +{ "name": "A of small order, the point 0 of the torsion, R the identity and S = 0", "message": "…", "public_key": "0100…", "signature": "0100…", "valid": false, "stdlib": true } +``` + +`stdlib` is what `crypto/ed25519` of Go answers, for the record: where it is +true and `valid` is false, an implementation needs the checks of the profile +before the equation, as `internal/ed25519strict` does. + ## `vectors/mutations.json` The mutation corpus of spec §64, as frozen data. Each case is a `.dkc`, what diff --git a/testdata/SOURCE.json b/testdata/SOURCE.json index f55a4f5..3185cde 100644 --- a/testdata/SOURCE.json +++ b/testdata/SOURCE.json @@ -1,115 +1,130 @@ { "module": "g.activething.com/go/DateKeys", - "commit": "2213b8c3fd7e20dac09b82ae3fba383d8993edd6", + "commit": "ae334343bfa2433bd82b679c8119596dbd4840a4", "files": { - "README.md": "e6d0c3a0fe0fcfdefec609d2c02c4ac667430e45b2eb3756b17d745cb056ae03", + "README.md": "bc32fe488a0e4d2298a9048711c235661187ba57dc3f156767f8cb5b2f3e6416", "fixtures/empty_payload.dkc": "871e9bf05b52bbae17f3adfbbf97b46e7f0e53aa8f57bcaa506e43f36f53a9d4", "fixtures/empty_payload.inspect.json": "373e5d012b023ad58bbb54cbdffe0bed9e50c637438a4083ddb74d5414c59f59", - "fixtures/empty_payload.json": "aa83c8380496b41baf92e582b4cec2a8433a8ec151ee9ebd83b24533dbb9a839", + "fixtures/empty_payload.json": "588c2573d99b953d490e3d9caaa392b804398b1f91d4f95492a01dd5e7e1f8ba", "fixtures/empty_payload.plaintext": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "fixtures/format2_empty_payload.dkc": "7aea2b5aa48b1a46053716f733d50fab9cd0b80b1be67631bcc06c5bb765dc21", "fixtures/format2_empty_payload.inspect.json": "d0bb7356d3970986e6b197640f0b3b38abe9fabf1740b745171b358aa28903ff", - "fixtures/format2_empty_payload.json": "ad76dbc182318553f8ef320bf64018366d30d20e85d5d24dab250457a88d35f9", + "fixtures/format2_empty_payload.json": "0ddce7b0888be7220d1de108d645cfec9fe15d2e33bc00180ae0a0f417a0f1a9", "fixtures/format2_empty_payload.plaintext": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "fixtures/format2_time_and_key_portable.dkc": "600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43", "fixtures/format2_time_and_key_portable.dkk": "095b7bc516a22bf0c2366f0af3cd48bfe857a2354d6e2a9b285278b95e450fe0", - "fixtures/format2_time_and_key_portable.dkk.json": "341c824f6046d9aaa53f7ef5b8f2848cb711a303ae394f1959e9a84445a46f7b", + "fixtures/format2_time_and_key_portable.dkk.json": "7365f2050bd124daf15b3c623254073389e47e43b13e09fc6e03e79b292ecf0a", "fixtures/format2_time_and_key_portable.inspect.json": "522c9a98e5911c86f5f24f278971cf7c7588f6c88aaede3dd1129ee4e042868a", - "fixtures/format2_time_and_key_portable.json": "02077acd5b03b48f9b2f2b92b5c59196004eea85eb9282ed6d556ca578c55e82", + "fixtures/format2_time_and_key_portable.json": "203e39ef29d74a2f28fb7d8530e01869ece0fa8c8e2c86e81a758eca15f39268", "fixtures/format2_time_and_key_portable.plaintext": "937492203d207d6fe36161b8696bf1f05b8b4cc56d855c44853f4b76aad3a05b", "fixtures/format2_time_and_key_recipients.dkc": "1a44fd8708c92e2e0a10cfcb1d864a71331ea9af25d97e1a42e969dc898959e3", "fixtures/format2_time_and_key_recipients.dkk": "2ad99b1556086ec311d7f0b3bd3aaba05e75f45c4fa22490b0d5e8bb0b1a222e", - "fixtures/format2_time_and_key_recipients.dkk.json": "64fdfdbe30bdba18ccd1168e373c8c7bb2882ae0f645aae9545240f87b89e9e2", + "fixtures/format2_time_and_key_recipients.dkk.json": "57edcc56c16ba7e17e6b7ba079688f04431967a90ce3592f065c838a0c9b2a35", "fixtures/format2_time_and_key_recipients.inspect.json": "d975a9eddd45f5d59618ea2455d574d807e57daf08585e840d07986f261bf099", - "fixtures/format2_time_and_key_recipients.json": "3675d94a03fa28539fe84790602d87f7c022bc3247e40555b70c69a106316b15", + "fixtures/format2_time_and_key_recipients.json": "2a1dd1fa810f0b76ccee04320061ffc664c744da1206d60dbb14e0ac01b9635a", "fixtures/format2_time_and_key_recipients.plaintext": "0e9fd50e98a85953aa9cf07a11ee3c62bb3d7622f344f1c6ce744d1ed111659f", "fixtures/format2_time_and_key_sixteen.dkc": "7aaac5c18f216bf53df326ecc817179640a53408cf25dfd50488910a762dc381", "fixtures/format2_time_and_key_sixteen.inspect.json": "492cd0b0dca0030df9332b098d22b4f6aa4adfb57d5540de5325e3e6d5aa3667", - "fixtures/format2_time_and_key_sixteen.json": "f07523610cb7747d1a6c9ce85ca40e807777b357701cbe90ac0debe3383aaa31", + "fixtures/format2_time_and_key_sixteen.json": "5686913ae6c4dd94fc90a96d28d2f7f7ef6fdd5213416d27c7fd85a423be1023", "fixtures/format2_time_and_key_sixteen.plaintext": "e5abfb7b5fdbf297277b6cc4729c15d85435e890b653c2e2342b7031ecd9eab9", "fixtures/format2_time_only.dkc": "f5a40ac6b8a08a0c12db6114c2bca23522d6a77b512b509a217fb15f367813c4", "fixtures/format2_time_only.inspect.json": "40a8683f5204c7b6369558e4775ae6bb6fed978097e9e660de64c06c167b043e", - "fixtures/format2_time_only.json": "63ce6c0888241414c96b39897aabb25fb1170b0560963e5e12f5c8ea82c6bd60", + "fixtures/format2_time_only.json": "db863e7480eae1e1a4df985aa0cfb8456de67a1f0f5a6bcb3dd5fadf2837eb06", "fixtures/format2_time_only.plaintext": "53b8ee821fb7b678e89d4f93da1812339f6cc1ab83aac6ed1432db99df784be5", "fixtures/format2_time_only_bloque256.dkc": "aae769c30d04920801d8b293d30864fbe223c9c9353ec2b4907a1ee1996e39f9", "fixtures/format2_time_only_bloque256.inspect.json": "767766414ad547f0ba95b40059e14b62c81b5489a2afcbc683bf227334d61be7", - "fixtures/format2_time_only_bloque256.json": "8331cd25a8fa504ae9c36cb196eece0e582a0622134e9565118c57937d38e0a9", + "fixtures/format2_time_only_bloque256.json": "9c7db52db560ec1203e811a214d3c6dd5324dac586331332f774a3fccc6ad515", "fixtures/format2_time_only_bloque256.plaintext": "53b8ee821fb7b678e89d4f93da1812339f6cc1ab83aac6ed1432db99df784be5", "fixtures/format2_time_only_extensions.dkc": "fb406100d5703a2e888983b3175ed34a09a34469cc722256e5cf535dd728fbe9", "fixtures/format2_time_only_extensions.inspect.json": "1595d793c1d35bfdaa36576b75f53d734a9e07c2a8a12036295dbaee7f5a7f5a", - "fixtures/format2_time_only_extensions.json": "3c88e91aee4c0e29b212777d910f9d3ba7cfb8875f0b5c510ce5715a4c3d4a9e", + "fixtures/format2_time_only_extensions.json": "5f48a438c8220951df7734fb4fd2172206827145597c43307d12514ce6c3c85a", "fixtures/format2_time_only_extensions.plaintext": "1129768e195e2f1e50b7a6f926b6eebef120212c29b5642c8a662c503b2a9131", "fixtures/format3_area_1024.dkc": "41ea2eed0293e4fef7f4a307b7f16aaf1339f5bf6f4ded7a6a9ae1aebeb0133c", "fixtures/format3_area_1024.inspect.json": "06e6b347926242ae5540f16a053f6a3545743986989bc0be8c39918bce968686", - "fixtures/format3_area_1024.json": "6699df0c349508aab2b604c5387e1e7460b3e5d408832162be9e85e3e430e727", + "fixtures/format3_area_1024.json": "d2722c99bf6c543a1eeb1fdd9cf57506d71b0a324b33458865b043698b7729d3", "fixtures/format3_area_1024.plaintext": "043830350a287cba1fd50f6c063f70a74209895ff0cf03147bb4e5ccdfc206b5", "fixtures/format3_bloque256.dkc": "ff18444f434164ba8e7b26d38c76c7855dc6b0593b2fc8b4e9a95dbf9252d55d", "fixtures/format3_bloque256.inspect.json": "d0007080da5ce079c6ffa3a56bf8ce519d2846a31cc1082fd027f401e4f7bade", - "fixtures/format3_bloque256.json": "c8e25c23ad75935cf40b87300e13a97ca494f3d659ef99c6df7abf8b4edd93ab", + "fixtures/format3_bloque256.json": "9fe4131d6e108a8ed2206ae33ced33ed6ca770b7a0111748cf208fcdd4a916c4", "fixtures/format3_bloque256.plaintext": "9ff2843e40bc1280dbfea8dce9386a42d06e8b43742c2cc6257540770cb53c73", "fixtures/format3_comment_only.dkc": "7f98a89413f08655bbbab28b96585dfa6173c1705dd81a900deba2100d19f2ef", "fixtures/format3_comment_only.inspect.json": "fb56eca8bf42c8c47fde4a1d6b2580fcff386f2f58b566820731dce388542196", - "fixtures/format3_comment_only.json": "2a07ae3535feddb3fab50a449254f702a62269611b296276e85fdc4832decee7", + "fixtures/format3_comment_only.json": "8731bcb3641d7f99f63729e85f1e2960d3f38a6ac64bb3321369bfe3e21fa2b1", "fixtures/format3_comment_only.plaintext": "bc5b05885e608f036d8a14fde8738a8c53b395b71c3bcee99c1eab37ea23e80e", - "fixtures/format3_seal_unsupported.dkc": "9e729c4d523aa8235c1f94b6c4366500a442a7ce69a5f92b9780662daca070e3", - "fixtures/format3_seal_unsupported.inspect.json": "c1adce954b84fd0f43313dc5bec6f294d24aee5b0a26e4deaeafcab3ed41d17e", - "fixtures/format3_seal_unsupported.json": "0e96f0118694149794c9dd2475df551885ef78c65099293cae116daedeeb47f4", - "fixtures/format3_seal_unsupported.plaintext": "b7e84ded53528372d35ef5aef5c7935eff5827824832f8556e6ed06eb2951ef5", + "fixtures/format3_seal_unsupported.dkc": "cd3f68e430c8d41df92a364d65fe29b4aed8ec50e5129595735ede6a8d7df88b", + "fixtures/format3_seal_unsupported.inspect.json": "3300ec8a6024c4b7d4569e31100f8ee9b7d6ef6483120e79c60c4d7d3fec9d8c", + "fixtures/format3_seal_unsupported.json": "593310199c21384c393332de177dddf04ade56d8dd9891d4679fc5fd38e139c6", + "fixtures/format3_seal_unsupported.plaintext": "18e5a8d45af211d036dfe64fc4065c8ada927265200f48a3094aa7ded519b94e", + "fixtures/format3_sealed.dkc": "dde5a072d8783227d28279d06d3d226a1fb967c766da626f889d1c6fd76ac9c7", + "fixtures/format3_sealed.inspect.json": "b984a0755332bad838025e47f8e917b9f18b9bb5c068c2d1ef0070db8e42849c", + "fixtures/format3_sealed.json": "52cda41e8d665c8c734124f9eeb8d4e81b15c59693dff62b3aba497d4aec910e", + "fixtures/format3_sealed.plaintext": "aea0f5feb40acd81ca3b02dd21ea15510234da3ab52b374322f3206e7632d47b", "fixtures/format3_security_v2.dkc": "3d02b39ace010d74604554e378d22fe5ce00cecd998c0f797d657b17620b8912", "fixtures/format3_security_v2.inspect.json": "dba4d21f1d4e228a17c761bae9a4b8c5a91cd9c0123e3141d3782a43c139321e", - "fixtures/format3_security_v2.json": "9edf6cf16d4895d9c34a7f875d9e4d6345a8a143f7c0c42f2200fdc57b13669b", + "fixtures/format3_security_v2.json": "78218ca96fdfe6629853c4b8826e2ba11ee010677e54169ba8286ff9d00c9d6a", "fixtures/format3_security_v2.plaintext": "0c58ef40e4b1c7afde0f6e0a1f4ed7e3d45405757c5143a095f0c2b58042669f", - "fixtures/format3_signature_unsupported.dkc": "83dc0f3b71cd57f2c06b5ea5860c1fd709627c2ab11c86ca1fc3b5a16d89c497", - "fixtures/format3_signature_unsupported.inspect.json": "92ff22c1679229c6ff05345a6d75be6614cefc8b6f41ee151a9697f3c88db34d", - "fixtures/format3_signature_unsupported.json": "1887025edf235540fbe516ac65ca4ac11e401059f2645fb31f53f21ae0603b76", - "fixtures/format3_signature_unsupported.plaintext": "414deeb8dc9f45fcf5f3883154e9f0e5a872ee9438a01b997d2f513b3d5a1eb7", + "fixtures/format3_signature_unsupported.dkc": "e8e3106d8d73bb7b845062e0fe42af21df7d7cd8f63c335cab8dedb3e690df31", + "fixtures/format3_signature_unsupported.inspect.json": "6db653db27604cb07e2cb2c23545fb68542c121e85002762f26c6d39e63bf00c", + "fixtures/format3_signature_unsupported.json": "427dd9201e57c2c6242722bc5b2882dd310225c40b883f9339cdd6c04f87b751", + "fixtures/format3_signature_unsupported.plaintext": "9fe05e6b3a463371b33fc6a81b81d538e572789a8d03ace9f752a931f4ca4728", + "fixtures/format3_signed.dkc": "3c7d3c9e24c02853a0c7761b93bea1120b27fce396468d8d0f68e53aeb668c5e", + "fixtures/format3_signed.inspect.json": "7c37054d542869e766147350e2fa72695f209d39a03726757008e2c2291b0e97", + "fixtures/format3_signed.json": "9d602cda39ce124b604410101a63bd981d21677f9bebb4eda5e4dedbd93531bb", + "fixtures/format3_signed.plaintext": "3de3ccab0ac74f95a76aa45c0f85e1749d4b4a051d87e81828eff6bf24372000", + "fixtures/format3_signed_cms.dkc": "d658f8d5ac2c5550c07b8f8fd6883b2f6dc02ceafc47d436ea02d8950b2548d2", + "fixtures/format3_signed_cms.inspect.json": "afadf530e8146687b25c03f26100ebff18e7f481e0ef09378816bad582270de5", + "fixtures/format3_signed_cms.json": "e88e549a0d0351df83c065a11101e3158b48d473aa9f6dfce1b8adbca96b26d7", + "fixtures/format3_signed_cms.plaintext": "31c35eeeee856277b605fe44203a8f4786bb8f591eda3b6ee58252df5b3cf2f0", "fixtures/format3_single.dkc": "9f68664af8733255084be9036a100b75d27bd16106bf0acff94ce469dd1d1743", "fixtures/format3_single.inspect.json": "7878da921c17aada50e00d5911ea97e8558633a1684fb96acbd00d6f1b117529", - "fixtures/format3_single.json": "dc04aac307230279d004edea594ed2000999a3f207b8b775a62fd0abea6084c4", + "fixtures/format3_single.json": "c99a175287c9555b74e8ae813326f3d7cdce0692a0144ee8e47158775970bcd4", "fixtures/format3_single.plaintext": "74f9dd84d07e95a31e6dc063bf65ce414197acf84aac445eabc76fa4e3f24936", "fixtures/format3_time_and_key_portable.dkc": "680d29962e575689a31543df28433dae7737abd9a793e9cae92ef40920d09636", "fixtures/format3_time_and_key_portable.dkk": "54cc64d849395234b3e093e47f432b72781ccc13f455c9ef394e3554ab566751", - "fixtures/format3_time_and_key_portable.dkk.json": "89c9b07f2089dd8949b8116c69228ad7a2fd8fbf17b9135807d7a3f570544cdf", + "fixtures/format3_time_and_key_portable.dkk.json": "36d343d729d126990754be34f0f67c9faf1529b7d8946e6b34b4d0de5b46b744", "fixtures/format3_time_and_key_portable.inspect.json": "f269af86f5bf84c22a1038fd78db146af93166150755eb1ca35cf15e224035b4", - "fixtures/format3_time_and_key_portable.json": "042965163bb269cab1dd5916629932bd03d24902957b9af8313b982f3edb532b", + "fixtures/format3_time_and_key_portable.json": "ca6623323ada21445c1c131cf278b060c2b22abc670f0889b30540f0abbb8dc6", "fixtures/format3_time_and_key_portable.plaintext": "e6684cf607c102bfa4d6977742d5a7520b0e09483282181bd6d8f5f4ba5f7726", "fixtures/format3_tree.dkc": "217f378faaf795f6a9c416b564fb8931bb2e896918aee870120fd14f9a5da7d1", "fixtures/format3_tree.inspect.json": "643a9dfdc2d0c44b8a1636909c66ed81bfd8c50df2a4cad6566832a8e47ba938", - "fixtures/format3_tree.json": "7ad0c3c54fab4da8b22fb9b9a8bcd4b4752817cb75f89565921995926ae81c53", + "fixtures/format3_tree.json": "1d11d2f12603542039ac6b396ffec69e92bde2689fd54dfc9ef800b6b9f7746b", "fixtures/format3_tree.plaintext": "f69ac5f450966f7d0e9161aa37451d4260b194a750e3e132c02e8a15ba561cfa", "fixtures/time_and_key_portable.dkc": "2e97878078bae6358037a9c264f379a3cbe839f767d69836b0343f35657b2972", "fixtures/time_and_key_portable.dkk": "e528fa2c832c91119f0684bb9d6fb3c4c2d0d55183482890e7c4fe92f668426a", - "fixtures/time_and_key_portable.dkk.json": "1bfbfbc8a24c8169f67aba7706478d722d41057a7522c587cc8c397872db40f4", + "fixtures/time_and_key_portable.dkk.json": "b057c25c9950533c01122cb907a43242b7538a7d427f8fa3cfa34ab6dfb7e390", "fixtures/time_and_key_portable.inspect.json": "238c1f8ca6a6bf69f20bf26f5676e89a0b07e83b4362628560fc2f7522a202c9", - "fixtures/time_and_key_portable.json": "f9db3833709e4cb3f58a96c8ff14fd2b37b0574bcfa44f41a7a564b06ff6f06e", + "fixtures/time_and_key_portable.json": "26467c1b6feafde9b6b49742a87bdb648c1effff6ac99b824561566282ea60ba", "fixtures/time_and_key_portable.plaintext": "937492203d207d6fe36161b8696bf1f05b8b4cc56d855c44853f4b76aad3a05b", "fixtures/time_and_key_portable_extension.dkk": "0bf463a7c65627b7dda2234d728df89ec5b835816a2a37b91497d8fecc5ea548", - "fixtures/time_and_key_portable_extension.dkk.json": "1b2e6eb9ecbeece13b9ec4b9ebf94df6af58792731e690bf571170f631d68402", + "fixtures/time_and_key_portable_extension.dkk.json": "89a96dd9dd1fe30187758d78211a6fbcb4b8cb7487e3a2f224e38874b246e834", "fixtures/time_and_key_recipients.dkc": "69ac110380f5d768b5b6afaa157a50ed17d8ceccfbd4604ffa5b6da38539b635", "fixtures/time_and_key_recipients.dkk": "19f6c47150c3194712d454f43c7392b7344e6b4e7b074d83e9ca5f563a8e072f", - "fixtures/time_and_key_recipients.dkk.json": "8f2bb78f972ccff8d2e2f68ea8e005bd6c1b52435ba92b889c796f018dab8e16", + "fixtures/time_and_key_recipients.dkk.json": "c3712a6afc1e0ad73615ec4329a0009261b32536fd630aff3b01f28b9384b6e9", "fixtures/time_and_key_recipients.inspect.json": "4b32c63d18febe0772837fbcd75a0c971e31378bf799201b720a9d32bdcd8c2b", - "fixtures/time_and_key_recipients.json": "fac88a0fbaabcf0f39191fbbce4bf3882e4bbce68f13e4d8238c2535b5447bc7", + "fixtures/time_and_key_recipients.json": "a00a49e7140fff35f253e42d13d221cfb339a2e59b7b53dbb3b8a32dd00cfe4b", "fixtures/time_and_key_recipients.plaintext": "0e9fd50e98a85953aa9cf07a11ee3c62bb3d7622f344f1c6ce744d1ed111659f", "fixtures/time_only.dkc": "99e915810d595f1092700b728f5e5081d78efe83f5343e76325b1bcc2c33ccf2", "fixtures/time_only.inspect.json": "a4d45f945d6ba6616c01e120ac1133785e5279fea7dcab706b5feee287be8884", - "fixtures/time_only.json": "b1279806b96467cd26b881e4bd7186e92053e210317b4fd974d065c3610a0882", + "fixtures/time_only.json": "cfb7a43154189692ef3a1f08e9a12b5855df1b95c10ae13e05935160a3f9aaaa", "fixtures/time_only.plaintext": "53b8ee821fb7b678e89d4f93da1812339f6cc1ab83aac6ed1432db99df784be5", "fixtures/time_only_extensions.dkc": "0446c9b73e267adcb24e5cc89afba2544a386ec9a050016e06517a4a57aa2085", "fixtures/time_only_extensions.inspect.json": "6f957b028da8a4a495b5e951ced0b91e0678128dac4e962b02d024b9439a0ba1", - "fixtures/time_only_extensions.json": "9f4dca446768b2a523ad0a5ee95de825ee63a0da6c4798b3b3302dd5936ef9d5", + "fixtures/time_only_extensions.json": "c5b6b253c03a95a3878538d98c8114041042f8dce8dbbb382727651781f4a146", "fixtures/time_only_extensions.plaintext": "1129768e195e2f1e50b7a6f926b6eebef120212c29b5642c8a662c503b2a9131", - "vectors/cbor.json": "a955ae65b6e17019992fd3b5348600c5bbb029a462a1f3900c021d934c6aef19", - "vectors/dk1.json": "767e14f10c72efe335b52baf18129a79fe0e33d8f118ed92efeb9b78251826ab", - "vectors/head_schema.json": "f6e5901a15bafdc9c5f6879c46a9c784a50ad23730ce09390475f2c95a6c04d9", - "vectors/inspect_differential.json": "f4215d4ffff091f09ee9bc056a761898d059e073286e4d95841868e447c72e37", - "vectors/mutations.json": "6550d80c4de1e0e72ed5c78be773eb9e101a7e29e42c4ef338723ce0e97500c2", - "vectors/padding.json": "2396fc02db96857de9cdb054ea22b898ab2cda964960d1a00761706a59998f6f", - "vectors/path_fold.json": "bdfad44d28076a48418d9ab18c7f001fd7adc2e27f70330c3d285a779ce58c7d", - "vectors/paths.json": "e8ad92847ded09d4f67c61477dd8403864d04f54a15af6bd7203b514eb342dc2", - "vectors/profile_quicknet.json": "6e67ac8956295229fe1bbe639877c89f4bb4d06b769ff8c0c4c0e186f1b6570b", - "vectors/quicknet_rounds.json": "c1a4c7d9240d438c770cb386c489409b05029df4185a617ff65555128fb4c830", - "vectors/security.json": "425ae16dfd95b9c1eb4f911db6232b6a6e3b29d9f3ea14fecbf1bda9d900957d", - "vectors/tlock_ibe.json": "4f2eb44f3b46387afc35cd92c556ae4c584b7e3aed1cbe53df730b0b07e0a40c" + "vectors/cbor.json": "79d750994eafc4fa718b0997fbb0a70673dc08a129efcd7d0ddc2db922406913", + "vectors/dk1.json": "f5547be887d6ca405518636925018fdec22a5027009651705b07aec80151314a", + "vectors/ed25519_strict.json": "342d866584435b291832d34deb9ce17aef10d99db148b85443e39e9bed321d0a", + "vectors/head_schema.json": "3c7bcf57aa22943cd17005ea9ce426c0b3e7c365a0527a790b5e9e1973f9753f", + "vectors/inspect_differential.json": "e8c99d025ec761690e71ee0c6adfcfd5b680cdcb89024463d8ebbc24be6b0774", + "vectors/locator.json": "a378453dadbafad4c18b5d9fdf4e49cd69f391e08cf16a04935c446395a9767f", + "vectors/mutations.json": "bd2f86fc13d50acd759acf36374df513687566bfdc5b391759c2040a0d796fb3", + "vectors/padding.json": "53d71fc9679d6eda3ba7b7a15752927a1a5fe026bdbd7f93b0ce3569a6a4b22a", + "vectors/path_fold.json": "94c708bf04379984326f786ba1a954a94dc958fa06013c525e7f7a2c14f856bc", + "vectors/paths.json": "3466da7dd82d82c1c43fe956eb91e674065d159c9326e3bc0dcbbe2c6b774251", + "vectors/profile_quicknet.json": "c15ecb111635ecae2084da8511efbee133e97ff07c1c951658b036ce05b69781", + "vectors/quicknet_rounds.json": "0f11bf5c5da88b1e929bb39439001a3a1f8447a85a4b3a25296d40d71a261e50", + "vectors/security.json": "c5c7a0a508daf6a56ee0d2a9a3c1982e8b2d5104621fb78e768bb2a69e5c4c85", + "vectors/security_cms.json": "c29458496bf58ad01514d7d0e0c2a3223a2a95a81d8c426ce642827363b43b68", + "vectors/tlock_ibe.json": "27e9d9ebac4f07700661d2b4c524b10d065c9698e9acc68baa3d2c01bdbb24f2" } } diff --git a/testdata/fixtures/empty_payload.json b/testdata/fixtures/empty_payload.json index 3899f77..5635a6a 100644 --- a/testdata/fixtures/empty_payload.json +++ b/testdata/fixtures/empty_payload.json @@ -1,6 +1,6 @@ { "description": "time_only capsule with an empty payload", - "spec": "0.10", + "spec": "0.11", "format": 1, "file": "empty_payload.dkc", "sha256": "871e9bf05b52bbae17f3adfbbf97b46e7f0e53aa8f57bcaa506e43f36f53a9d4", diff --git a/testdata/fixtures/format2_empty_payload.json b/testdata/fixtures/format2_empty_payload.json index 8fdf39f..e8fdf9b 100644 --- a/testdata/fixtures/format2_empty_payload.json +++ b/testdata/fixtures/format2_empty_payload.json @@ -1,6 +1,6 @@ { "description": "format 2 time_only capsule with an empty content: L = 0, P = 256", - "spec": "0.10", + "spec": "0.11", "format": 2, "file": "format2_empty_payload.dkc", "sha256": "7aea2b5aa48b1a46053716f733d50fab9cd0b80b1be67631bcc06c5bb765dc21", diff --git a/testdata/fixtures/format2_time_and_key_portable.dkk.json b/testdata/fixtures/format2_time_and_key_portable.dkk.json index 79fcb68..174c9a6 100644 --- a/testdata/fixtures/format2_time_and_key_portable.dkk.json +++ b/testdata/fixtures/format2_time_and_key_portable.dkk.json @@ -1,6 +1,6 @@ { "description": "portable X25519 .dkk of format2_time_and_key_portable.dkc", - "spec": "0.10", + "spec": "0.11", "file": "format2_time_and_key_portable.dkk", "sha256": "095b7bc516a22bf0c2366f0af3cd48bfe857a2354d6e2a9b285278b95e450fe0", "credential_id": "e3c7be83cbf1fbd6b115c96411b3bd01", diff --git a/testdata/fixtures/format2_time_and_key_portable.json b/testdata/fixtures/format2_time_and_key_portable.json index 48599df..48e9301 100644 --- a/testdata/fixtures/format2_time_and_key_portable.json +++ b/testdata/fixtures/format2_time_and_key_portable.json @@ -1,6 +1,6 @@ { "description": "format 2 time_and_key capsule with one credential, a portable .dkk, and 15 dummies", - "spec": "0.10", + "spec": "0.11", "format": 2, "file": "format2_time_and_key_portable.dkc", "sha256": "600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43", diff --git a/testdata/fixtures/format2_time_and_key_recipients.dkk.json b/testdata/fixtures/format2_time_and_key_recipients.dkk.json index 5cd0a66..077f928 100644 --- a/testdata/fixtures/format2_time_and_key_recipients.dkk.json +++ b/testdata/fixtures/format2_time_and_key_recipients.dkk.json @@ -1,6 +1,6 @@ { "description": "portable X25519 .dkk of format2_time_and_key_recipients.dkc", - "spec": "0.10", + "spec": "0.11", "file": "format2_time_and_key_recipients.dkk", "sha256": "2ad99b1556086ec311d7f0b3bd3aaba05e75f45c4fa22490b0d5e8bb0b1a222e", "credential_id": "93cedf68421710e83908ec683b104436", diff --git a/testdata/fixtures/format2_time_and_key_recipients.json b/testdata/fixtures/format2_time_and_key_recipients.json index d453028..9cf68cf 100644 --- a/testdata/fixtures/format2_time_and_key_recipients.json +++ b/testdata/fixtures/format2_time_and_key_recipients.json @@ -1,6 +1,6 @@ { "description": "format 2 time_and_key capsule for three known X25519 recipients and a portable .dkk, and 12 dummies", - "spec": "0.10", + "spec": "0.11", "format": 2, "file": "format2_time_and_key_recipients.dkc", "sha256": "1a44fd8708c92e2e0a10cfcb1d864a71331ea9af25d97e1a42e969dc898959e3", diff --git a/testdata/fixtures/format2_time_and_key_sixteen.json b/testdata/fixtures/format2_time_and_key_sixteen.json index 4cbd5c5..f68f0e8 100644 --- a/testdata/fixtures/format2_time_and_key_sixteen.json +++ b/testdata/fixtures/format2_time_and_key_sixteen.json @@ -1,6 +1,6 @@ { "description": "format 2 time_and_key capsule for sixteen known X25519 recipients, without dummies", - "spec": "0.10", + "spec": "0.11", "format": 2, "file": "format2_time_and_key_sixteen.dkc", "sha256": "7aaac5c18f216bf53df326ecc817179640a53408cf25dfd50488910a762dc381", diff --git a/testdata/fixtures/format2_time_only.json b/testdata/fixtures/format2_time_only.json index b653845..b512421 100644 --- a/testdata/fixtures/format2_time_only.json +++ b/testdata/fixtures/format2_time_only.json @@ -1,6 +1,6 @@ { "description": "format 2 time_only capsule, padding code 2 (reforzado): L = 78000, P = 79872, two STREAM chunks", - "spec": "0.10", + "spec": "0.11", "format": 2, "file": "format2_time_only.dkc", "sha256": "f5a40ac6b8a08a0c12db6114c2bca23522d6a77b512b509a217fb15f367813c4", diff --git a/testdata/fixtures/format2_time_only_bloque256.json b/testdata/fixtures/format2_time_only_bloque256.json index e8ffc84..e33a559 100644 --- a/testdata/fixtures/format2_time_only_bloque256.json +++ b/testdata/fixtures/format2_time_only_bloque256.json @@ -1,6 +1,6 @@ { "description": "format 2 time_only capsule with the content of format2_time_only and padding code 1 (bloque256): L = 78000, P = 78080", - "spec": "0.10", + "spec": "0.11", "format": 2, "file": "format2_time_only_bloque256.dkc", "sha256": "aae769c30d04920801d8b293d30864fbe223c9c9353ec2b4907a1ee1996e39f9", diff --git a/testdata/fixtures/format2_time_only_extensions.json b/testdata/fixtures/format2_time_only_extensions.json index 2bba812..5ed3d23 100644 --- a/testdata/fixtures/format2_time_only_extensions.json +++ b/testdata/fixtures/format2_time_only_extensions.json @@ -1,6 +1,6 @@ { "description": "format 2 time_only capsule with a noncritical PUBLIC_HEADER extension and a noncritical CONTROL_CBOR extension", - "spec": "0.10", + "spec": "0.11", "format": 2, "file": "format2_time_only_extensions.dkc", "sha256": "fb406100d5703a2e888983b3175ed34a09a34469cc722256e5cf535dd728fbe9", diff --git a/testdata/fixtures/format3_area_1024.json b/testdata/fixtures/format3_area_1024.json index 54a0756..b3a0fd8 100644 --- a/testdata/fixtures/format3_area_1024.json +++ b/testdata/fixtures/format3_area_1024.json @@ -1,6 +1,6 @@ { "description": "format 3 time_only capsule with a security area of 1024 bytes, as a later version may write it, holding the empty security", - "spec": "0.10", + "spec": "0.11", "format": 3, "file": "format3_area_1024.dkc", "sha256": "41ea2eed0293e4fef7f4a307b7f16aaf1339f5bf6f4ded7a6a9ae1aebeb0133c", diff --git a/testdata/fixtures/format3_bloque256.json b/testdata/fixtures/format3_bloque256.json index 4dc1d3b..71902ca 100644 --- a/testdata/fixtures/format3_bloque256.json +++ b/testdata/fixtures/format3_bloque256.json @@ -1,6 +1,6 @@ { "description": "format 3 time_only capsule with padding code 1 (bloque256) and one file of 20000 bytes", - "spec": "0.10", + "spec": "0.11", "format": 3, "file": "format3_bloque256.dkc", "sha256": "ff18444f434164ba8e7b26d38c76c7855dc6b0593b2fc8b4e9a95dbf9252d55d", diff --git a/testdata/fixtures/format3_comment_only.json b/testdata/fixtures/format3_comment_only.json index a67fa75..455aa3e 100644 --- a/testdata/fixtures/format3_comment_only.json +++ b/testdata/fixtures/format3_comment_only.json @@ -1,6 +1,6 @@ { "description": "format 3 time_only capsule with a comment of two lines, the second one with a TAB, a declared author and no files", - "spec": "0.10", + "spec": "0.11", "format": 3, "file": "format3_comment_only.dkc", "sha256": "7f98a89413f08655bbbab28b96585dfa6173c1705dd81a900deba2100d19f2ef", diff --git a/testdata/fixtures/format3_seal_unsupported.dkc b/testdata/fixtures/format3_seal_unsupported.dkc index 307edba..fcdb590 100644 Binary files a/testdata/fixtures/format3_seal_unsupported.dkc and b/testdata/fixtures/format3_seal_unsupported.dkc differ diff --git a/testdata/fixtures/format3_seal_unsupported.inspect.json b/testdata/fixtures/format3_seal_unsupported.inspect.json index 747ccfa..36c8bef 100644 --- a/testdata/fixtures/format3_seal_unsupported.inspect.json +++ b/testdata/fixtures/format3_seal_unsupported.inspect.json @@ -1,7 +1,7 @@ { "file": "format3_seal_unsupported.dkc", "format": 3, - "capsule_id": "48da6a985c7bf92b0fbf2042c36b1039", + "capsule_id": "3517684914fad908ad9e46d7f7b811d5", "datekey": "dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MjAwMH0", "profile": "datekeys:quicknet:v1", "round": 2000, @@ -31,7 +31,7 @@ "step": 4, "name": "header validation", "ok": true, - "detail": "capsule_id=48da6a985c7bf92b0fbf2042c36b1039 datekey=dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MjAwMH0 policy=time_only profile=datekeys:quicknet:v1" + "detail": "capsule_id=3517684914fad908ad9e46d7f7b811d5 datekey=dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MjAwMH0 policy=time_only profile=datekeys:quicknet:v1" }, { "step": 5, diff --git a/testdata/fixtures/format3_seal_unsupported.json b/testdata/fixtures/format3_seal_unsupported.json index 0948250..a82f20c 100644 --- a/testdata/fixtures/format3_seal_unsupported.json +++ b/testdata/fixtures/format3_seal_unsupported.json @@ -1,21 +1,21 @@ { - "description": "format 3 time_only capsule with an author-signature of alg 1, as in format3_signature_unsupported, and a seal of seal_type 1 with a random token of 32 bytes: verdicts F1 and S1", - "spec": "0.10", + "description": "format 3 time_only capsule with an author-signature of alg 4294967295, as in format3_signature_unsupported, and a seal of seal_type 1 with a random token of 32 bytes: verdicts F1 and S1", + "spec": "0.11", "format": 3, "file": "format3_seal_unsupported.dkc", - "sha256": "9e729c4d523aa8235c1f94b6c4366500a442a7ce69a5f92b9780662daca070e3", + "sha256": "cd3f68e430c8d41df92a364d65fe29b4aed8ec50e5129595735ede6a8d7df88b", "release": { "round": 2000, "signature": "b6cb8f482a0b15d45936a4c4ea08e98a087e71787caee3f4d07a8a9843b1bc5423c6b3c22f446488b3137eaca799c77e" }, "prelude": "444b43310300000000000079000001ca", - "public_header": "a5006a646174656b65796361700101025048da6a985c7bf92b0fbf2042c36b1039037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d6a41774d48300400", + "public_header": "a5006a646174656b6579636170010102503517684914fad908ad9e46d7f7b811d5037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d6a41774d48300400", "datekey": "dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MjAwMH0", - "capsule_id": "48da6a985c7bf92b0fbf2042c36b1039", + "capsule_id": "3517684914fad908ad9e46d7f7b811d5", "access_policy": "time_only", "structure": "time_only", "unlock_at": "2023-08-23T16:49:24Z", - "header_binding": "bc80975e44978cb51465890b4499f591ad0b7af61337bb35b25ad2d1d500b6b3", + "header_binding": "2c34950c31c80b62c31da9aa1ca72cf46d38361a60fdf37519c1f734c6646fb9", "outer_stanzas": [ { "type": "tlock", @@ -29,21 +29,21 @@ { "type": "X25519", "args": [ - "irINIJ7PYPkx0Asd7r+Nw3GfeeEnQc6M1u2QWGBtIyc" + "sfu28SAWdZaPq6c3v4bLopEk8YveD80i8b59V4JMfkM" ] } ], - "control_cbor": "a60070646174656b6579732d636f6e74726f6c0103025820bc80975e44978cb51465890b4499f591ad0b7af61337bb35b25ad2d1d500b6b303582075b43a62e103df83789f741e0b2cc4b22a15e948d9105902cae0c735bbf9fa86064800000000000002930702", - "payload_identity": "75b43a62e103df83789f741e0b2cc4b22a15e948d9105902cae0c735bbf9fa86", + "control_cbor": "a60070646174656b6579732d636f6e74726f6c01030258202c34950c31c80b62c31da9aa1ca72cf46d38361a60fdf37519c1f734c6646fb9035820a0cae1dd0fb24ae1ea350ad408afa77bb040fe4553ca5a5e6283be84f1775184064800000000000002930702", + "payload_identity": "a0cae1dd0fb24ae1ea350ad408afa77bb040fe4553ca5a5e6283be84f1775184", "payload_length": 659, "padding": 2, "padded_length": 768, "plaintext_file": "format3_seal_unsupported.plaintext", - "plaintext_sha256": "b7e84ded53528372d35ef5aef5c7935eff5827824832f8556e6ed06eb2951ef5", + "plaintext_sha256": "18e5a8d45af211d036dfe64fc4065c8ada927265200f48a3094aa7ded519b94e", "area_len": 512, - "security_cbor": "a40071646174656b6579732d73656375726974790101025869a30001015820296414f1ab39ebe5d7f366597d677ee979e2071266a1a9d59fd4688810795bde025840eb7530c2c468fd7d86dd2238551c436a713a978219baec42f7b4763ef2a9f3977d52353e8783875a4ee8d03e504883ff1390be2dde82ac86c182b5a79ad4d624035826a2000101582029bdc2748984e5be979d7c79e6c382cb29cfd8924a645fd8c2446f686700f343", - "head_cbor": "a4006d646174656b6579732d686561640101025820ac66fed2ff62fd1bb417ee393b4476a5694b859e7feceb37aaf6cb49401895400581a600686e6f74612e7478740116020003160458205d596d5f49c179f0ec337f4610155fc237e727f9dee85377a5fce67a3c853510051a6abcf9c0", - "salt": "ac66fed2ff62fd1bb417ee393b4476a5694b859e7feceb37aaf6cb4940189540", + "security_cbor": "a40071646174656b6579732d7365637572697479010102586da3001affffffff0158208beec85fe1db5d53dfa1fa5b95afe208c355a1fabe0d3637c1acc09fef0f04c10258400ccc209b32e7826b70b4befbe7bbe504584631422a3b51086e9491885e8aac6d2a0c92c4c85d6c03750ddaa2d873f6d4dce20030b31669f347ee6b9b4f3abd56035826a20001015820c19dc75c9766f13383b991f54a7cfcb16701ad0299fa68d84c5ce2e82a8f18d7", + "head_cbor": "a4006d646174656b6579732d6865616401010258208eb5e2f0920209323e39c54391a74cc873690cd6d7ce94a45b12772f2a5081c10581a600686e6f74612e7478740116020003160458205d596d5f49c179f0ec337f4610155fc237e727f9dee85377a5fce67a3c853510051a6abcf9c0", + "salt": "8eb5e2f0920209323e39c54391a74cc873690cd6d7ce94a45b12772f2a5081c1", "content_offset": 637, "files": [ { diff --git a/testdata/fixtures/format3_seal_unsupported.plaintext b/testdata/fixtures/format3_seal_unsupported.plaintext index 6057caf..d9f916e 100644 Binary files a/testdata/fixtures/format3_seal_unsupported.plaintext and b/testdata/fixtures/format3_seal_unsupported.plaintext differ diff --git a/testdata/fixtures/format3_sealed.dkc b/testdata/fixtures/format3_sealed.dkc new file mode 100644 index 0000000..7d3f26a Binary files /dev/null and b/testdata/fixtures/format3_sealed.dkc differ diff --git a/testdata/fixtures/format3_sealed.inspect.json b/testdata/fixtures/format3_sealed.inspect.json new file mode 100644 index 0000000..b20ea4d --- /dev/null +++ b/testdata/fixtures/format3_sealed.inspect.json @@ -0,0 +1,61 @@ +{ + "file": "format3_sealed.dkc", + "format": 3, + "capsule_id": "b3d25bb6c74cda4e014c65e3d2f43a69", + "datekey": "dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MTAwMH0", + "profile": "datekeys:quicknet:v1", + "round": 1000, + "unlock_at": "2023-08-23T15:59:24Z", + "access_policy": "time_only", + "valid": true, + "checks": [ + { + "step": 1, + "name": "parse DKC1", + "ok": true, + "detail": "magic DKC1" + }, + { + "step": 2, + "name": "prelude", + "ok": true, + "detail": "DKC1 v3, PUBLIC_HEADER_LEN=121, SEALED_CONTROL_LEN=458" + }, + { + "step": 3, + "name": "public header", + "ok": true, + "detail": "121 bytes" + }, + { + "step": 4, + "name": "header validation", + "ok": true, + "detail": "capsule_id=b3d25bb6c74cda4e014c65e3d2f43a69 datekey=dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MTAwMH0 policy=time_only profile=datekeys:quicknet:v1" + }, + { + "step": 5, + "name": "sealed control structure", + "ok": true, + "detail": "one tlock stanza" + }, + { + "step": 6, + "name": "payload structure", + "ok": true, + "detail": "one X25519 stanza" + }, + { + "step": 7, + "name": "condition", + "ok": true, + "detail": "round 1000, unlock at 2023-08-23T15:59:24Z" + }, + { + "step": 8, + "name": "tlock stanza", + "ok": true, + "detail": "round 1000, chain 52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971" + } + ] +} diff --git a/testdata/fixtures/format3_sealed.json b/testdata/fixtures/format3_sealed.json new file mode 100644 index 0000000..4b61906 --- /dev/null +++ b/testdata/fixtures/format3_sealed.json @@ -0,0 +1,173 @@ +{ + "description": "format 3 time_only capsule with a single file, nota.txt, signed with alg 1 by the test key of format3_signed and sealed with seal_type 2 by a test time-stamping authority before the round time: verdicts F4 and S4, with SEAL_SUBJECT and the token in the record", + "spec": "0.11", + "format": 3, + "file": "format3_sealed.dkc", + "sha256": "dde5a072d8783227d28279d06d3d226a1fb967c766da626f889d1c6fd76ac9c7", + "release": { + "round": 1000, + "signature": "b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39" + }, + "prelude": "444b43310300000000000079000001ca", + "public_header": "a5006a646174656b657963617001010250b3d25bb6c74cda4e014c65e3d2f43a69037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d48300400", + "datekey": "dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MTAwMH0", + "capsule_id": "b3d25bb6c74cda4e014c65e3d2f43a69", + "access_policy": "time_only", + "structure": "time_only", + "unlock_at": "2023-08-23T15:59:24Z", + "header_binding": "c108d8b34eb0a4237e6aff192364a28d544cb79c84ac5c80d88c26f8bd5560d8", + "outer_stanzas": [ + { + "type": "tlock", + "args": [ + "1000", + "52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971" + ] + } + ], + "payload_stanzas": [ + { + "type": "X25519", + "args": [ + "PQPwIpsXx8ZNHf1Xpr7gnPamVYWLPgD8zIGmXqvSkjY" + ] + } + ], + "control_cbor": "a60070646174656b6579732d636f6e74726f6c0103025820c108d8b34eb0a4237e6aff192364a28d544cb79c84ac5c80d88c26f8bd5560d803582087351091f87f94f2c1155e5bde726116123e321f6cc2c3f2bb934298e0d02ea8064800000000000080930702", + "payload_identity": "87351091f87f94f2c1155e5bde726116123e321f6cc2c3f2bb934298e0d02ea8", + "payload_length": 32915, + "padding": 2, + "padded_length": 34816, + "plaintext_file": "format3_sealed.plaintext", + "plaintext_sha256": "aea0f5feb40acd81ca3b02dd21ea15510234da3ab52b374322f3206e7632d47b", + "area_len": 32768, + "security_cbor": "a40071646174656b6579732d73656375726974790101025869a3000101582092d3a82b1e2387a860d57cae4cc55091d43904fdd625e4d2b285e3a1b4ba674002584024c8a0fd4ef7338a2607c1489e33eb32b2d2c6a9438e8d01d5beb04911acd5bdf7eb4bd958141293e5fe4074276097cd0df21d8ca12b9c2e6cb5164304666c060359038ba20002015903843082038006092a864886f70d010702a08203713082036d020101310d300b06096086480165030402013065060b2a864886f70d0109100104a0560454305202010106032a0304302f300b060960864801650304020104201ce5a87549e8bed1af2238888c5a4e942b3b3de1fa8d757c70941cd21522638d02012a180f32303233303832333135303932375a3003020101a08201b8308201b430820159a0030201020208074ecca73c287e79300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d03010703420004aa2eb21e68c810b6271dadcc25575401ceccac2461de40cb2bfde25bceaa384abbbba098880bf14316b62769b3596d701d60c8dd1f1313f257d93c4d5f213a53a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100a05f22801b8432108d6330dd777a25bcfdd1b32db72bc8feb9be522291559e11022100cfd71b1445e68079aa98af90ac7037ab938eb7e4f11279f1476a93ce0b693aff3182013430820130020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562610208074ecca73c287e79300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a30183016041426e0465376bf0d652c266e5940c9d01ba8cea5e9302f06092a864886f70d01090431220420545889d11d3289646f8156538dbcc608e8cc543fa052056a56a85eb7356523f1300a06082a8648ce3d04030204473045022100883cfcc51038245652e767fdfecea1b7153b9158df02d95f3fcfc2b58e575cb1022029b9727ead61a3022bcddd62d704ee26f71de738556d97796de3ce1c408c7419", + "head_cbor": "a4006d646174656b6579732d686561640101025820990d6781941d508558b06652f4c4db8fc56da5a443811b723adfe4370ea139710581a600686e6f74612e7478740116020003160458205d596d5f49c179f0ec337f4610155fc237e727f9dee85377a5fce67a3c853510051a6abcf9c0", + "salt": "990d6781941d508558b06652f4c4db8fc56da5a443811b723adfe4370ea13971", + "content_offset": 32893, + "files": [ + { + "path": "nota.txt", + "size": 22, + "start": 0, + "end": 22, + "sha256": "5d596d5f49c179f0ec337f4610155fc237e727f9dee85377a5fce67a3c853510", + "mtime": 1790769600 + } + ], + "verdicts": { + "signature": "F4", + "seal": "S4", + "lines": [ + "Firmado con la clave dkauthor1jtf6s2c7ywr6scx40jhye32sj82rjp8a6cj7f54jsh36rd96vaqqcg54xg. No prueba quién la tiene.", + "Según un sello a nombre de Autoridad de Sellado de prueba, existía el 2023-08-23T15:09:27Z, antes de que la cápsula pudiera abrirse. DateKeys no comprueba quién emitió el sello." + ], + "author_key": "dkauthor1jtf6s2c7ywr6scx40jhye32sj82rjp8a6cj7f54jsh36rd96vaqqcg54xg" + }, + "signature": { + "alg": 1, + "secret_seed": "294b60d256e79fc4c18b4bcc0a156810b44144619969dadedcbf01d3b37c1054", + "author_key": "dkauthor1jtf6s2c7ywr6scx40jhye32sj82rjp8a6cj7f54jsh36rd96vaqqcg54xg", + "control_commit": "1793cc0adaba31bdbf18cb4c97ba86dcff05bec498c8ecf11668a74bfd71718a", + "head_digest": "a5537946c281a8e22ca9d3a4deb1aebcddf0d299abe47bded31c90157dd72d3a", + "signers_digest": "1665c6f3f1afb37b1a87d87e4265f156d7108c3c1762972d2a4241e6e5ab824e", + "author_message": "datekeys:dkc3:author-signature:v1\n111b174e204e0eaa73b87601e1e1d9b3d60799b5a0a5c0e371a9dc65d1d39f38\n", + "author_code": "111b-174e", + "signature": "24c8a0fd4ef7338a2607c1489e33eb32b2d2c6a9438e8d01d5beb04911acd5bdf7eb4bd958141293e5fe4074276097cd0df21d8ca12b9c2e6cb5164304666c06", + "security_key_2": "a3000101582092d3a82b1e2387a860d57cae4cc55091d43904fdd625e4d2b285e3a1b4ba674002584024c8a0fd4ef7338a2607c1489e33eb32b2d2c6a9438e8d01d5beb04911acd5bdf7eb4bd958141293e5fe4074276097cd0df21d8ca12b9c2e6cb5164304666c06" + }, + "seal": { + "seal_type": 2, + "seal_subject": "8e60fd12a9475d95f77adacf81772774f4a8f508ffc7edda2e15df9ccebf163e", + "token": "3082038006092a864886f70d010702a08203713082036d020101310d300b06096086480165030402013065060b2a864886f70d0109100104a0560454305202010106032a0304302f300b060960864801650304020104201ce5a87549e8bed1af2238888c5a4e942b3b3de1fa8d757c70941cd21522638d02012a180f32303233303832333135303932375a3003020101a08201b8308201b430820159a0030201020208074ecca73c287e79300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d03010703420004aa2eb21e68c810b6271dadcc25575401ceccac2461de40cb2bfde25bceaa384abbbba098880bf14316b62769b3596d701d60c8dd1f1313f257d93c4d5f213a53a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100a05f22801b8432108d6330dd777a25bcfdd1b32db72bc8feb9be522291559e11022100cfd71b1445e68079aa98af90ac7037ab938eb7e4f11279f1476a93ce0b693aff3182013430820130020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562610208074ecca73c287e79300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a30183016041426e0465376bf0d652c266e5940c9d01ba8cea5e9302f06092a864886f70d01090431220420545889d11d3289646f8156538dbcc608e8cc543fa052056a56a85eb7356523f1300a06082a8648ce3d04030204473045022100883cfcc51038245652e767fdfecea1b7153b9158df02d95f3fcfc2b58e575cb1022029b9727ead61a3022bcddd62d704ee26f71de738556d97796de3ce1c408c7419", + "holder": "Autoridad de Sellado de prueba", + "time": "2023-08-23T15:09:27Z" + }, + "stages": [ + { + "step": 1, + "name": "parse DKC1", + "ok": true + }, + { + "step": 2, + "name": "prelude", + "ok": true + }, + { + "step": 3, + "name": "public header", + "ok": true + }, + { + "step": 4, + "name": "header validation", + "ok": true + }, + { + "step": 5, + "name": "sealed control structure", + "ok": true + }, + { + "step": 6, + "name": "payload structure", + "ok": true + }, + { + "step": 7, + "name": "condition", + "ok": true + }, + { + "step": 8, + "name": "tlock stanza", + "ok": true + }, + { + "step": 9, + "name": "release", + "ok": true + }, + { + "step": 10, + "name": "release verification", + "ok": true + }, + { + "step": 11, + "name": "open sealed control", + "ok": true + }, + { + "step": 12, + "name": "policy structure", + "ok": true + }, + { + "step": 14, + "name": "control", + "ok": true + }, + { + "step": 15, + "name": "header binding", + "ok": true + }, + { + "step": 16, + "name": "payload identity", + "ok": true + }, + { + "step": 17, + "name": "open payload", + "ok": true + }, + { + "step": 18, + "name": "commit", + "ok": true + } + ] +} diff --git a/testdata/fixtures/format3_sealed.plaintext b/testdata/fixtures/format3_sealed.plaintext new file mode 100644 index 0000000..8f5ebf0 Binary files /dev/null and b/testdata/fixtures/format3_sealed.plaintext differ diff --git a/testdata/fixtures/format3_security_v2.json b/testdata/fixtures/format3_security_v2.json index 2ad6a5e..15700b5 100644 --- a/testdata/fixtures/format3_security_v2.json +++ b/testdata/fixtures/format3_security_v2.json @@ -1,6 +1,6 @@ { "description": "format 3 time_only capsule whose security is of version 2: verdict X", - "spec": "0.10", + "spec": "0.11", "format": 3, "file": "format3_security_v2.dkc", "sha256": "3d02b39ace010d74604554e378d22fe5ce00cecd998c0f797d657b17620b8912", diff --git a/testdata/fixtures/format3_signature_unsupported.dkc b/testdata/fixtures/format3_signature_unsupported.dkc index c7b425e..15eeb2c 100644 Binary files a/testdata/fixtures/format3_signature_unsupported.dkc and b/testdata/fixtures/format3_signature_unsupported.dkc differ diff --git a/testdata/fixtures/format3_signature_unsupported.inspect.json b/testdata/fixtures/format3_signature_unsupported.inspect.json index 4894d57..74e31a7 100644 --- a/testdata/fixtures/format3_signature_unsupported.inspect.json +++ b/testdata/fixtures/format3_signature_unsupported.inspect.json @@ -1,7 +1,7 @@ { "file": "format3_signature_unsupported.dkc", "format": 3, - "capsule_id": "d2296b10c37ba96cd7cf2af7f1b95717", + "capsule_id": "a6bf56d5084eb0054779492620b8af34", "datekey": "dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MTAwMX0", "profile": "datekeys:quicknet:v1", "round": 1001, @@ -31,7 +31,7 @@ "step": 4, "name": "header validation", "ok": true, - "detail": "capsule_id=d2296b10c37ba96cd7cf2af7f1b95717 datekey=dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MTAwMX0 policy=time_only profile=datekeys:quicknet:v1" + "detail": "capsule_id=a6bf56d5084eb0054779492620b8af34 datekey=dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MTAwMX0 policy=time_only profile=datekeys:quicknet:v1" }, { "step": 5, diff --git a/testdata/fixtures/format3_signature_unsupported.json b/testdata/fixtures/format3_signature_unsupported.json index 86ae86b..0b7aaae 100644 --- a/testdata/fixtures/format3_signature_unsupported.json +++ b/testdata/fixtures/format3_signature_unsupported.json @@ -1,21 +1,21 @@ { - "description": "format 3 time_only capsule with an author-signature of alg 1, a random key of 32 bytes and a random signature of 64: verdicts F1 and S0", - "spec": "0.10", + "description": "format 3 time_only capsule with an author-signature of alg 4294967295, a random key of 32 bytes and a random signature of 64: verdicts F1 and S0", + "spec": "0.11", "format": 3, "file": "format3_signature_unsupported.dkc", - "sha256": "83dc0f3b71cd57f2c06b5ea5860c1fd709627c2ab11c86ca1fc3b5a16d89c497", + "sha256": "e8e3106d8d73bb7b845062e0fe42af21df7d7cd8f63c335cab8dedb3e690df31", "release": { "round": 1001, "signature": "b33bf3667cbd5a82de3a24b4e0e9fe5513cc1a0e840368c6e31f5fcfa79bea03f73896b25883abf2853d10337fb8fa41" }, "prelude": "444b43310300000000000079000001ca", - "public_header": "a5006a646174656b657963617001010250d2296b10c37ba96cd7cf2af7f1b95717037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d58300400", + "public_header": "a5006a646174656b657963617001010250a6bf56d5084eb0054779492620b8af34037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d58300400", "datekey": "dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MTAwMX0", - "capsule_id": "d2296b10c37ba96cd7cf2af7f1b95717", + "capsule_id": "a6bf56d5084eb0054779492620b8af34", "access_policy": "time_only", "structure": "time_only", "unlock_at": "2023-08-23T15:59:27Z", - "header_binding": "fdb39427d6f10d3ad89a81161fa1f65293c73291a45d18ca139e6d12a44f919e", + "header_binding": "bc6877680d44462fd92546d3f82eeaea2234505721c3b588dd7676a2eb7fc7a7", "outer_stanzas": [ { "type": "tlock", @@ -29,21 +29,21 @@ { "type": "X25519", "args": [ - "6nefFx+947eX7B7qEcU6R9btIgMg69ldm+3OS6hOPns" + "qxmJwwotwDawKgsGMI+wJv5XlldCGOUP4qutXZJbQ20" ] } ], - "control_cbor": "a60070646174656b6579732d636f6e74726f6c0103025820fdb39427d6f10d3ad89a81161fa1f65293c73291a45d18ca139e6d12a44f919e035820ba8f5da6c9464c35f9680be7a7948bc6d61522ccba72123cc5a187b248673132064800000000000002930702", - "payload_identity": "ba8f5da6c9464c35f9680be7a7948bc6d61522ccba72123cc5a187b248673132", + "control_cbor": "a60070646174656b6579732d636f6e74726f6c0103025820bc6877680d44462fd92546d3f82eeaea2234505721c3b588dd7676a2eb7fc7a70358200d50b7c8f4aa63f49c590f417b410dc3c71941e6827f407ee7921c99aba3ccdd064800000000000002930702", + "payload_identity": "0d50b7c8f4aa63f49c590f417b410dc3c71941e6827f407ee7921c99aba3ccdd", "payload_length": 659, "padding": 2, "padded_length": 768, "plaintext_file": "format3_signature_unsupported.plaintext", - "plaintext_sha256": "414deeb8dc9f45fcf5f3883154e9f0e5a872ee9438a01b997d2f513b3d5a1eb7", + "plaintext_sha256": "9fe05e6b3a463371b33fc6a81b81d538e572789a8d03ace9f752a931f4ca4728", "area_len": 512, - "security_cbor": "a30071646174656b6579732d73656375726974790101025869a30001015820dd7f33121df820b64504dcb4f63133fbf7fefc26b9a79cdc83000540d8b3c35d025840a9717fe754465361c6d1a9a781628d8c11eda5a46b4a80f574328fa2a9d566a9923a4a796e3c52fdefa05daea4f135a4a4b73206f52643396aee6bfd29558f97", - "head_cbor": "a4006d646174656b6579732d6865616401010258206dd3b33fb1a390aa6d63404a29b677aec03285f97da6625a3a3ecae612f9d94e0581a600686e6f74612e7478740116020003160458205d596d5f49c179f0ec337f4610155fc237e727f9dee85377a5fce67a3c853510051a6abcf9c0", - "salt": "6dd3b33fb1a390aa6d63404a29b677aec03285f97da6625a3a3ecae612f9d94e", + "security_cbor": "a30071646174656b6579732d7365637572697479010102586da3001affffffff015820da2a88c336770633057e3b53daed5bc074fc8dc1679bc43eb6a173e3ef10a93102584053c88f03105b77470a999d92a268c7964be74ae856ba87a6cf6756ccae09631d0e971d3356bf39862540dd11476fc98e4fc75686dcd43742f0f6ea0105f4e47e", + "head_cbor": "a4006d646174656b6579732d686561640101025820e5e946ad436f63f659a1660ab7022355f4724d593e55766ec571776d73e3a6520581a600686e6f74612e7478740116020003160458205d596d5f49c179f0ec337f4610155fc237e727f9dee85377a5fce67a3c853510051a6abcf9c0", + "salt": "e5e946ad436f63f659a1660ab7022355f4724d593e55766ec571776d73e3a652", "content_offset": 637, "files": [ { diff --git a/testdata/fixtures/format3_signature_unsupported.plaintext b/testdata/fixtures/format3_signature_unsupported.plaintext index 8cd8548..d83970a 100644 Binary files a/testdata/fixtures/format3_signature_unsupported.plaintext and b/testdata/fixtures/format3_signature_unsupported.plaintext differ diff --git a/testdata/fixtures/format3_signed.dkc b/testdata/fixtures/format3_signed.dkc new file mode 100644 index 0000000..14c2d3f Binary files /dev/null and b/testdata/fixtures/format3_signed.dkc differ diff --git a/testdata/fixtures/format3_signed.inspect.json b/testdata/fixtures/format3_signed.inspect.json new file mode 100644 index 0000000..bd2134b --- /dev/null +++ b/testdata/fixtures/format3_signed.inspect.json @@ -0,0 +1,61 @@ +{ + "file": "format3_signed.dkc", + "format": 3, + "capsule_id": "681476c1bfa81dd12fec810ee44fe7f7", + "datekey": "dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MTAwMH0", + "profile": "datekeys:quicknet:v1", + "round": 1000, + "unlock_at": "2023-08-23T15:59:24Z", + "access_policy": "time_only", + "valid": true, + "checks": [ + { + "step": 1, + "name": "parse DKC1", + "ok": true, + "detail": "magic DKC1" + }, + { + "step": 2, + "name": "prelude", + "ok": true, + "detail": "DKC1 v3, PUBLIC_HEADER_LEN=121, SEALED_CONTROL_LEN=458" + }, + { + "step": 3, + "name": "public header", + "ok": true, + "detail": "121 bytes" + }, + { + "step": 4, + "name": "header validation", + "ok": true, + "detail": "capsule_id=681476c1bfa81dd12fec810ee44fe7f7 datekey=dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MTAwMH0 policy=time_only profile=datekeys:quicknet:v1" + }, + { + "step": 5, + "name": "sealed control structure", + "ok": true, + "detail": "one tlock stanza" + }, + { + "step": 6, + "name": "payload structure", + "ok": true, + "detail": "one X25519 stanza" + }, + { + "step": 7, + "name": "condition", + "ok": true, + "detail": "round 1000, unlock at 2023-08-23T15:59:24Z" + }, + { + "step": 8, + "name": "tlock stanza", + "ok": true, + "detail": "round 1000, chain 52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971" + } + ] +} diff --git a/testdata/fixtures/format3_signed.json b/testdata/fixtures/format3_signed.json new file mode 100644 index 0000000..b24064c --- /dev/null +++ b/testdata/fixtures/format3_signed.json @@ -0,0 +1,165 @@ +{ + "description": "format 3 time_only capsule with a single file, nota.txt, signed with alg 1 by a test key whose seed the record gives: verdict F4, and the commitments and the message of the signature", + "spec": "0.11", + "format": 3, + "file": "format3_signed.dkc", + "sha256": "3c7d3c9e24c02853a0c7761b93bea1120b27fce396468d8d0f68e53aeb668c5e", + "release": { + "round": 1000, + "signature": "b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39" + }, + "prelude": "444b43310300000000000079000001ca", + "public_header": "a5006a646174656b657963617001010250681476c1bfa81dd12fec810ee44fe7f7037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d48300400", + "datekey": "dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MTAwMH0", + "capsule_id": "681476c1bfa81dd12fec810ee44fe7f7", + "access_policy": "time_only", + "structure": "time_only", + "unlock_at": "2023-08-23T15:59:24Z", + "header_binding": "10c269d7fcc8ae1f92c9854b8d01b23781fd6c615474c018b5e75c8620d476eb", + "outer_stanzas": [ + { + "type": "tlock", + "args": [ + "1000", + "52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971" + ] + } + ], + "payload_stanzas": [ + { + "type": "X25519", + "args": [ + "TO8ryXIRUX0S1odrqs9IZJ43q7yYotzn/fMycGebKGQ" + ] + } + ], + "control_cbor": "a60070646174656b6579732d636f6e74726f6c010302582010c269d7fcc8ae1f92c9854b8d01b23781fd6c615474c018b5e75c8620d476eb0358203ffe484f443014980f2b2ee8bb66095f6ea418d4c2fce2ae6ad74c550bbefc21064800000000000080930702", + "payload_identity": "3ffe484f443014980f2b2ee8bb66095f6ea418d4c2fce2ae6ad74c550bbefc21", + "payload_length": 32915, + "padding": 2, + "padded_length": 34816, + "plaintext_file": "format3_signed.plaintext", + "plaintext_sha256": "3de3ccab0ac74f95a76aa45c0f85e1749d4b4a051d87e81828eff6bf24372000", + "area_len": 32768, + "security_cbor": "a30071646174656b6579732d73656375726974790101025869a3000101582092d3a82b1e2387a860d57cae4cc55091d43904fdd625e4d2b285e3a1b4ba67400258406f8efe0dfadaf89bf71295167f8d8cc4890de0441a37a26d1f7d0b1f56b79c43c4010861e11742a5431b072b21490d4a976dc9ff385d36242047ad4cb996270b", + "head_cbor": "a4006d646174656b6579732d68656164010102582092a0fe390ff1063d9e93bbafe3ca75be219d950128e2e5aca6a9c12d5c1f1c9b0581a600686e6f74612e7478740116020003160458205d596d5f49c179f0ec337f4610155fc237e727f9dee85377a5fce67a3c853510051a6abcf9c0", + "salt": "92a0fe390ff1063d9e93bbafe3ca75be219d950128e2e5aca6a9c12d5c1f1c9b", + "content_offset": 32893, + "files": [ + { + "path": "nota.txt", + "size": 22, + "start": 0, + "end": 22, + "sha256": "5d596d5f49c179f0ec337f4610155fc237e727f9dee85377a5fce67a3c853510", + "mtime": 1790769600 + } + ], + "verdicts": { + "signature": "F4", + "seal": "S0", + "lines": [ + "Firmado con la clave dkauthor1jtf6s2c7ywr6scx40jhye32sj82rjp8a6cj7f54jsh36rd96vaqqcg54xg. No prueba quién la tiene." + ], + "author_key": "dkauthor1jtf6s2c7ywr6scx40jhye32sj82rjp8a6cj7f54jsh36rd96vaqqcg54xg" + }, + "signature": { + "alg": 1, + "secret_seed": "294b60d256e79fc4c18b4bcc0a156810b44144619969dadedcbf01d3b37c1054", + "author_key": "dkauthor1jtf6s2c7ywr6scx40jhye32sj82rjp8a6cj7f54jsh36rd96vaqqcg54xg", + "control_commit": "9f296b40049889c944be75c61827b694a0104eb5c5424e17217ff1fd32529efe", + "head_digest": "0111835cdde5ef15710cea96fc600757e1695ddc8f44b2b20e57eead31278b92", + "signers_digest": "1665c6f3f1afb37b1a87d87e4265f156d7108c3c1762972d2a4241e6e5ab824e", + "author_message": "datekeys:dkc3:author-signature:v1\n58aedcded250af5f798eeace817f8a5bbd0c245d05627949970b5eb998bb0413\n", + "author_code": "58ae-dcde", + "signature": "6f8efe0dfadaf89bf71295167f8d8cc4890de0441a37a26d1f7d0b1f56b79c43c4010861e11742a5431b072b21490d4a976dc9ff385d36242047ad4cb996270b", + "security_key_2": "a3000101582092d3a82b1e2387a860d57cae4cc55091d43904fdd625e4d2b285e3a1b4ba67400258406f8efe0dfadaf89bf71295167f8d8cc4890de0441a37a26d1f7d0b1f56b79c43c4010861e11742a5431b072b21490d4a976dc9ff385d36242047ad4cb996270b" + }, + "stages": [ + { + "step": 1, + "name": "parse DKC1", + "ok": true + }, + { + "step": 2, + "name": "prelude", + "ok": true + }, + { + "step": 3, + "name": "public header", + "ok": true + }, + { + "step": 4, + "name": "header validation", + "ok": true + }, + { + "step": 5, + "name": "sealed control structure", + "ok": true + }, + { + "step": 6, + "name": "payload structure", + "ok": true + }, + { + "step": 7, + "name": "condition", + "ok": true + }, + { + "step": 8, + "name": "tlock stanza", + "ok": true + }, + { + "step": 9, + "name": "release", + "ok": true + }, + { + "step": 10, + "name": "release verification", + "ok": true + }, + { + "step": 11, + "name": "open sealed control", + "ok": true + }, + { + "step": 12, + "name": "policy structure", + "ok": true + }, + { + "step": 14, + "name": "control", + "ok": true + }, + { + "step": 15, + "name": "header binding", + "ok": true + }, + { + "step": 16, + "name": "payload identity", + "ok": true + }, + { + "step": 17, + "name": "open payload", + "ok": true + }, + { + "step": 18, + "name": "commit", + "ok": true + } + ] +} diff --git a/testdata/fixtures/format3_signed.plaintext b/testdata/fixtures/format3_signed.plaintext new file mode 100644 index 0000000..fc5f258 Binary files /dev/null and b/testdata/fixtures/format3_signed.plaintext differ diff --git a/testdata/fixtures/format3_signed_cms.dkc b/testdata/fixtures/format3_signed_cms.dkc new file mode 100644 index 0000000..551b473 Binary files /dev/null and b/testdata/fixtures/format3_signed_cms.dkc differ diff --git a/testdata/fixtures/format3_signed_cms.inspect.json b/testdata/fixtures/format3_signed_cms.inspect.json new file mode 100644 index 0000000..632cda7 --- /dev/null +++ b/testdata/fixtures/format3_signed_cms.inspect.json @@ -0,0 +1,61 @@ +{ + "file": "format3_signed_cms.dkc", + "format": 3, + "capsule_id": "fb1b4917149f996c9c9561997593d37d", + "datekey": "dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MTAwMH0", + "profile": "datekeys:quicknet:v1", + "round": 1000, + "unlock_at": "2023-08-23T15:59:24Z", + "access_policy": "time_only", + "valid": true, + "checks": [ + { + "step": 1, + "name": "parse DKC1", + "ok": true, + "detail": "magic DKC1" + }, + { + "step": 2, + "name": "prelude", + "ok": true, + "detail": "DKC1 v3, PUBLIC_HEADER_LEN=121, SEALED_CONTROL_LEN=458" + }, + { + "step": 3, + "name": "public header", + "ok": true, + "detail": "121 bytes" + }, + { + "step": 4, + "name": "header validation", + "ok": true, + "detail": "capsule_id=fb1b4917149f996c9c9561997593d37d datekey=dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MTAwMH0 policy=time_only profile=datekeys:quicknet:v1" + }, + { + "step": 5, + "name": "sealed control structure", + "ok": true, + "detail": "one tlock stanza" + }, + { + "step": 6, + "name": "payload structure", + "ok": true, + "detail": "one X25519 stanza" + }, + { + "step": 7, + "name": "condition", + "ok": true, + "detail": "round 1000, unlock at 2023-08-23T15:59:24Z" + }, + { + "step": 8, + "name": "tlock stanza", + "ok": true, + "detail": "round 1000, chain 52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971" + } + ] +} diff --git a/testdata/fixtures/format3_signed_cms.json b/testdata/fixtures/format3_signed_cms.json new file mode 100644 index 0000000..2d4813e --- /dev/null +++ b/testdata/fixtures/format3_signed_cms.json @@ -0,0 +1,185 @@ +{ + "description": "format 3 time_only capsule with a single file, nota.txt, signed with alg 2 by two test certificates, an ECDSA P-256 one and an RSA 2048 one, each sealed by a test time-stamping authority before the round time: verdict F6, with the certificates, the commitments, SIGNERS and the result of each signer in the record", + "spec": "0.11", + "format": 3, + "file": "format3_signed_cms.dkc", + "sha256": "d658f8d5ac2c5550c07b8f8fd6883b2f6dc02ceafc47d436ea02d8950b2548d2", + "release": { + "round": 1000, + "signature": "b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39" + }, + "prelude": "444b43310300000000000079000001ca", + "public_header": "a5006a646174656b657963617001010250fb1b4917149f996c9c9561997593d37d037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d48300400", + "datekey": "dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MTAwMH0", + "capsule_id": "fb1b4917149f996c9c9561997593d37d", + "access_policy": "time_only", + "structure": "time_only", + "unlock_at": "2023-08-23T15:59:24Z", + "header_binding": "2e91168b24ae6fa37bbf6c4514b30cb5961779fb50e5a6cd49622969b9d291e5", + "outer_stanzas": [ + { + "type": "tlock", + "args": [ + "1000", + "52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971" + ] + } + ], + "payload_stanzas": [ + { + "type": "X25519", + "args": [ + "NRzdmZvmKaB9wip9mMxWA1L384Kl1kIsoEO7eAgBVAg" + ] + } + ], + "control_cbor": "a60070646174656b6579732d636f6e74726f6c01030258202e91168b24ae6fa37bbf6c4514b30cb5961779fb50e5a6cd49622969b9d291e50358208d26d67eb6ffa0d2aed0a32ecfbddd6e48ab6f2b6e73dc36cff0a74a36f87e82064800000000000080930702", + "payload_identity": "8d26d67eb6ffa0d2aed0a32ecfbddd6e48ab6f2b6e73dc36cff0a74a36f87e82", + "payload_length": 32915, + "padding": 2, + "padded_length": 34816, + "plaintext_file": "format3_signed_cms.plaintext", + "plaintext_sha256": "31c35eeeee856277b605fe44203a8f4786bb8f591eda3b6ee58252df5b3cf2f0", + "area_len": 32768, + "security_cbor": "a30071646174656b6579732d7365637572697479010102590f5aa300020158458258204692ef5fb3ea8320c1cdce7bbdd31003aed069bb04cc1a5cde9b15625dbd4fc35820aa2c7e3a8cfa6a6ec5374a1bf0d427bd9e833352e825984298190fa96b543cfb02590f0b30820f0706092a864886f70d010702a0820ef830820ef4020101310d300b0609608648016503040201300b06092a864886f70d010701a0820483308201763082011da003020102020801cafe20c83b2715300a06082a8648ce3d040302302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a301e170d3230303130313030303030305a170d3430303130313030303030305a302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a3059301306072a8648ce3d020106082a8648ce3d03010703420004b2103f0f0a2654afa291a4a435f2bfff8ed018e1c6892281ae497bd9aa2686dbc9fd7254c94f2ef6701d1a2777613878a053c827e6ae105f9d8b1145af7753eca3273025300e0603551d0f0101ff04040302078030130603551d0e040c040a416e61204cc3b370657a300a06082a8648ce3d040302034700304402206de47fe26d900dae4860e57d29af0c9e3aba7421aebc91219e2e5697071092e6022020e6fad2707773e75a7c747ffeb2704f12db27898ccf75a5483f0a87c5fffda930820305308201eda0030201020207277dda070cc49c300d06092a864886f70d01010b0500302e31163014060355040a130d446174654b65797320746573743114301206035504030c0b4c7569732047c3b36d657a301e170d3230303130313030303030305a170d3430303130313030303030305a302e31163014060355040a130d446174654b65797320746573743114301206035504030c0b4c7569732047c3b36d657a30820122300d06092a864886f70d01010105000382010f003082010a0282010100b3316a351ac48d907aae9631ebc67182edab8c7f2f23a30d503060148fc475eba1e2d9cee063638849dc234e271bde03c28ef8afe53082abd4728aa74ad46aa220304a291058c20ec982bec051fa211243999dde73797e209ee554fcef9d03deab323fa39067883bcdd2c45f563a746ba954536d97b0f2fc5e108ebc293a94dfd566529d01b23096326a31e92199418490c4f76943a08fafa5069406a298db95d88c2f1678573d109ddd72af723dcdc5ae2df62cb09002e30b286256ae7bc1c8690e03dcea5936829f5a549e7ac090bb54602c82637414d71d60818b1f15f54144718e9384fe12c692d709f560d90bf7f090b344a0e13c24ccf32a6f13bd804d0203010001a3283026300e0603551d0f0101ff04040302078030140603551d0e040d040b4c7569732047c3b36d657a300d06092a864886f70d01010b050003820101008259b9cabd6f8e59d97bbbc3456f4d325d2dc37ae42feca2e46bb6b21140a59b823b3192b87f59c9f63c17dcce2192aa5682e37183cb47325e5e7f5bcbc9000b083177f0ba29b6735830f22bab56a872f126a41afde0d50952c3cd39d935751b260eef0368f23209e55a26beb5f93af3782637cf4a1d683eb942fbc008f1ccc339566e761a3269b9fe8277f970736699141caa5c3382020c9efc53fe798ed303f7bd97ad4fc41ec941489f7efa474afb89281178fa94c43ca4a3398edad9cc113c9206a503195922fae3505899206434f89186ee1f9314dd5454e96163ece8f358dc1a07482cd81ce02ec5b778c8e612458a2e540b1cfd90a1965c51c3b75e4a31820a4a308204c20201013039302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a020801cafe20c83b2715300b0609608648016503040201a08184301806092a864886f70d010903310b06092a864886f70d010701302f06092a864886f70d01090431220420e875ea68e624cbb640b846729f3693dc54ae38de3e7fb0e10a8a5a879fe2df783037060b2a864886f70d010910022f31283026302430220420aa2c7e3a8cfa6a6ec5374a1bf0d427bd9e833352e825984298190fa96b543cfb300a06082a8648ce3d0403020447304502206225e91f9358d8605076090d4f274400ea4563cf31d998ed23ff42f731927d65022100fac4c2ec5a8d50c24aa0b426fd15a833a70b55d95bc373d8352383c2f06b5826a182039730820393060b2a864886f70d010910020e318203823082037e06092a864886f70d010702a082036f3082036b020101310d300b06096086480165030402013065060b2a864886f70d0109100104a0560454305202010106032a0304302f300b06096086480165030402010420c86ee56a958ac3033f9df8c204eadd19324a66bd8d00aaf069b872c4e204293d02012a180f32303233303832333135303932375a3003020101a08201b7308201b330820159a003020102020820fea3aef45f161b300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200041abc8a59e7def8a3cff4c99a08c30f7028c3af6b389cec3632cb34db5f206ad8a3931bb2c886e536e01efee7ad5817b029ddc29863228531735da0da9ddc2572a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020348003045022100b1a985b9b6c2831f174648a19b4900cd0bb3fcd3f67cc04b2494131d6a00426502204577ebcd3b8a14c252ef528b2e77b20369507753ba5ca543253dd9fed3238ce2318201333082012f020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020820fea3aef45f161b300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a3018301604141e1ab18975babe77d30e68003c717b89935b9dfe302f06092a864886f70d01090431220420ae2f3d372b417904643ba5da53b50e5eb317c274794d31bae41428a064c20866300a06082a8648ce3d0403020446304402204174c537862c0d25e8ff825d41855cd7c712a2c2d7bbf3526646ece0702ed221022000d464e2059934132ec5e7c457771ab7d9074db018ff9fae12dc632446e7b988308205800201013039302e31163014060355040a130d446174654b65797320746573743114301206035504030c0b4c7569732047c3b36d657a0207277dda070cc49c300b0609608648016503040201a08184301806092a864886f70d010903310b06092a864886f70d010701302f06092a864886f70d01090431220420e875ea68e624cbb640b846729f3693dc54ae38de3e7fb0e10a8a5a879fe2df783037060b2a864886f70d010910022f312830263024302204204692ef5fb3ea8320c1cdce7bbdd31003aed069bb04cc1a5cde9b15625dbd4fc3300d06092a864886f70d0101010500048201004a82ea15c88391de20c5a8cc23ef3dcd9211505d29e989e4465a1bd9d6d98d538e7338b23fa3bcb352ac4150b63f4266e757a9237a94ab618c33e8d9327f37cc2ebdf0ef2a5293bba592631a653f334b18f66947d4af56f5f3c2eee2ca8788310b686e3035002d73807c8a64528dc2ff5b0665337c8252dcbc893bf177d424cea09648043a7bf995a33303d1c65064f77a2274993e4b5bc6b0d9c99d1f4c5bd07de2b69c83e158847aebaedfaffd68c1b8bc2fe39c8afb5c90d778061c7a6bbd0e73275dc04eb58c91aa17570acd51cc6b1cd29aa03a830242eb3b708e52cdbf8777766a35d7bae992fdfb5e44ba40ee72e859dd0c2f8ed893f7f56203e3fd12a182039730820393060b2a864886f70d010910020e318203823082037e06092a864886f70d010702a082036f3082036b020101310d300b06096086480165030402013065060b2a864886f70d0109100104a0560454305202010106032a0304302f300b06096086480165030402010420037fb73e4818e6577882813a718130f0d686ec9f3412477d89183f9f4c56210902012a180f32303233303832333135303932375a3003020101a08201b7308201b330820159a003020102020820fea3aef45f161b300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200041abc8a59e7def8a3cff4c99a08c30f7028c3af6b389cec3632cb34db5f206ad8a3931bb2c886e536e01efee7ad5817b029ddc29863228531735da0da9ddc2572a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020348003045022100b1a985b9b6c2831f174648a19b4900cd0bb3fcd3f67cc04b2494131d6a00426502204577ebcd3b8a14c252ef528b2e77b20369507753ba5ca543253dd9fed3238ce2318201333082012f020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020820fea3aef45f161b300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a3018301604141e1ab18975babe77d30e68003c717b89935b9dfe302f06092a864886f70d010904312204204214a1d3804eba0b407ebaaf0fb82ca0358a7c57384c677fe45ec01375ad842c300a06082a8648ce3d04030204463044022053e8abc782e01746c6a890eb397f591386e53f5dce014f0f1c6c1a5bbaca5a5e022045b17f83760fe6453244663fe8c52a9a49e33637652f3bacb7aee4524c37ad89", + "head_cbor": "a4006d646174656b6579732d68656164010102582067dab55c558d5de166ecaa2fbb9e74f85aa83e5505f14c8c1b7e821bcf92a9a00581a600686e6f74612e7478740116020003160458205d596d5f49c179f0ec337f4610155fc237e727f9dee85377a5fce67a3c853510051a6abcf9c0", + "salt": "67dab55c558d5de166ecaa2fbb9e74f85aa83e5505f14c8c1b7e821bcf92a9a0", + "content_offset": 32893, + "files": [ + { + "path": "nota.txt", + "size": 22, + "start": 0, + "end": 22, + "sha256": "5d596d5f49c179f0ec337f4610155fc237e727f9dee85377a5fce67a3c853510", + "mtime": 1790769600 + } + ], + "verdicts": { + "signature": "F6", + "seal": "S0", + "lines": [ + "Firmado con un certificado a nombre de Luis Gómez, Ana López. DateKeys no comprueba quién lo emitió: para eso, exporta la firma a un validador oficial.", + " Luis Gómez (emisor según su certificado: Luis Gómez), sellado el 2023-08-23T15:09:27Z, antes de la fecha de apertura.", + " Ana López (emisor según su certificado: Ana López), sellado el 2023-08-23T15:09:27Z, antes de la fecha de apertura." + ] + }, + "signature": { + "alg": 2, + "control_commit": "8405238a907ff83b4e3166ac25a4199d39d8d2af760670a7c2b25f75b6ef3e12", + "head_digest": "56c0fa647bffd5f97a30496ab396c39065c5c84707decc9d910716e43403926d", + "signers_digest": "95ca5c19d30dc0750e13f0ad621a789ba326498a7ea570fd0b7e76d49f4d578d", + "author_message": "datekeys:dkc3:author-signature:v1\n0e0f0eef6ce290deeb1d6de071eb65ca566331c5b1f07be40b906d655b9a72f3\n", + "author_code": "0e0f-0eef", + "signature": "30820f0706092a864886f70d010702a0820ef830820ef4020101310d300b0609608648016503040201300b06092a864886f70d010701a0820483308201763082011da003020102020801cafe20c83b2715300a06082a8648ce3d040302302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a301e170d3230303130313030303030305a170d3430303130313030303030305a302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a3059301306072a8648ce3d020106082a8648ce3d03010703420004b2103f0f0a2654afa291a4a435f2bfff8ed018e1c6892281ae497bd9aa2686dbc9fd7254c94f2ef6701d1a2777613878a053c827e6ae105f9d8b1145af7753eca3273025300e0603551d0f0101ff04040302078030130603551d0e040c040a416e61204cc3b370657a300a06082a8648ce3d040302034700304402206de47fe26d900dae4860e57d29af0c9e3aba7421aebc91219e2e5697071092e6022020e6fad2707773e75a7c747ffeb2704f12db27898ccf75a5483f0a87c5fffda930820305308201eda0030201020207277dda070cc49c300d06092a864886f70d01010b0500302e31163014060355040a130d446174654b65797320746573743114301206035504030c0b4c7569732047c3b36d657a301e170d3230303130313030303030305a170d3430303130313030303030305a302e31163014060355040a130d446174654b65797320746573743114301206035504030c0b4c7569732047c3b36d657a30820122300d06092a864886f70d01010105000382010f003082010a0282010100b3316a351ac48d907aae9631ebc67182edab8c7f2f23a30d503060148fc475eba1e2d9cee063638849dc234e271bde03c28ef8afe53082abd4728aa74ad46aa220304a291058c20ec982bec051fa211243999dde73797e209ee554fcef9d03deab323fa39067883bcdd2c45f563a746ba954536d97b0f2fc5e108ebc293a94dfd566529d01b23096326a31e92199418490c4f76943a08fafa5069406a298db95d88c2f1678573d109ddd72af723dcdc5ae2df62cb09002e30b286256ae7bc1c8690e03dcea5936829f5a549e7ac090bb54602c82637414d71d60818b1f15f54144718e9384fe12c692d709f560d90bf7f090b344a0e13c24ccf32a6f13bd804d0203010001a3283026300e0603551d0f0101ff04040302078030140603551d0e040d040b4c7569732047c3b36d657a300d06092a864886f70d01010b050003820101008259b9cabd6f8e59d97bbbc3456f4d325d2dc37ae42feca2e46bb6b21140a59b823b3192b87f59c9f63c17dcce2192aa5682e37183cb47325e5e7f5bcbc9000b083177f0ba29b6735830f22bab56a872f126a41afde0d50952c3cd39d935751b260eef0368f23209e55a26beb5f93af3782637cf4a1d683eb942fbc008f1ccc339566e761a3269b9fe8277f970736699141caa5c3382020c9efc53fe798ed303f7bd97ad4fc41ec941489f7efa474afb89281178fa94c43ca4a3398edad9cc113c9206a503195922fae3505899206434f89186ee1f9314dd5454e96163ece8f358dc1a07482cd81ce02ec5b778c8e612458a2e540b1cfd90a1965c51c3b75e4a31820a4a308204c20201013039302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a020801cafe20c83b2715300b0609608648016503040201a08184301806092a864886f70d010903310b06092a864886f70d010701302f06092a864886f70d01090431220420e875ea68e624cbb640b846729f3693dc54ae38de3e7fb0e10a8a5a879fe2df783037060b2a864886f70d010910022f31283026302430220420aa2c7e3a8cfa6a6ec5374a1bf0d427bd9e833352e825984298190fa96b543cfb300a06082a8648ce3d0403020447304502206225e91f9358d8605076090d4f274400ea4563cf31d998ed23ff42f731927d65022100fac4c2ec5a8d50c24aa0b426fd15a833a70b55d95bc373d8352383c2f06b5826a182039730820393060b2a864886f70d010910020e318203823082037e06092a864886f70d010702a082036f3082036b020101310d300b06096086480165030402013065060b2a864886f70d0109100104a0560454305202010106032a0304302f300b06096086480165030402010420c86ee56a958ac3033f9df8c204eadd19324a66bd8d00aaf069b872c4e204293d02012a180f32303233303832333135303932375a3003020101a08201b7308201b330820159a003020102020820fea3aef45f161b300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200041abc8a59e7def8a3cff4c99a08c30f7028c3af6b389cec3632cb34db5f206ad8a3931bb2c886e536e01efee7ad5817b029ddc29863228531735da0da9ddc2572a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020348003045022100b1a985b9b6c2831f174648a19b4900cd0bb3fcd3f67cc04b2494131d6a00426502204577ebcd3b8a14c252ef528b2e77b20369507753ba5ca543253dd9fed3238ce2318201333082012f020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020820fea3aef45f161b300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a3018301604141e1ab18975babe77d30e68003c717b89935b9dfe302f06092a864886f70d01090431220420ae2f3d372b417904643ba5da53b50e5eb317c274794d31bae41428a064c20866300a06082a8648ce3d0403020446304402204174c537862c0d25e8ff825d41855cd7c712a2c2d7bbf3526646ece0702ed221022000d464e2059934132ec5e7c457771ab7d9074db018ff9fae12dc632446e7b988308205800201013039302e31163014060355040a130d446174654b65797320746573743114301206035504030c0b4c7569732047c3b36d657a0207277dda070cc49c300b0609608648016503040201a08184301806092a864886f70d010903310b06092a864886f70d010701302f06092a864886f70d01090431220420e875ea68e624cbb640b846729f3693dc54ae38de3e7fb0e10a8a5a879fe2df783037060b2a864886f70d010910022f312830263024302204204692ef5fb3ea8320c1cdce7bbdd31003aed069bb04cc1a5cde9b15625dbd4fc3300d06092a864886f70d0101010500048201004a82ea15c88391de20c5a8cc23ef3dcd9211505d29e989e4465a1bd9d6d98d538e7338b23fa3bcb352ac4150b63f4266e757a9237a94ab618c33e8d9327f37cc2ebdf0ef2a5293bba592631a653f334b18f66947d4af56f5f3c2eee2ca8788310b686e3035002d73807c8a64528dc2ff5b0665337c8252dcbc893bf177d424cea09648043a7bf995a33303d1c65064f77a2274993e4b5bc6b0d9c99d1f4c5bd07de2b69c83e158847aebaedfaffd68c1b8bc2fe39c8afb5c90d778061c7a6bbd0e73275dc04eb58c91aa17570acd51cc6b1cd29aa03a830242eb3b708e52cdbf8777766a35d7bae992fdfb5e44ba40ee72e859dd0c2f8ed893f7f56203e3fd12a182039730820393060b2a864886f70d010910020e318203823082037e06092a864886f70d010702a082036f3082036b020101310d300b06096086480165030402013065060b2a864886f70d0109100104a0560454305202010106032a0304302f300b06096086480165030402010420037fb73e4818e6577882813a718130f0d686ec9f3412477d89183f9f4c56210902012a180f32303233303832333135303932375a3003020101a08201b7308201b330820159a003020102020820fea3aef45f161b300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200041abc8a59e7def8a3cff4c99a08c30f7028c3af6b389cec3632cb34db5f206ad8a3931bb2c886e536e01efee7ad5817b029ddc29863228531735da0da9ddc2572a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020348003045022100b1a985b9b6c2831f174648a19b4900cd0bb3fcd3f67cc04b2494131d6a00426502204577ebcd3b8a14c252ef528b2e77b20369507753ba5ca543253dd9fed3238ce2318201333082012f020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020820fea3aef45f161b300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a3018301604141e1ab18975babe77d30e68003c717b89935b9dfe302f06092a864886f70d010904312204204214a1d3804eba0b407ebaaf0fb82ca0358a7c57384c677fe45ec01375ad842c300a06082a8648ce3d04030204463044022053e8abc782e01746c6a890eb397f591386e53f5dce014f0f1c6c1a5bbaca5a5e022045b17f83760fe6453244663fe8c52a9a49e33637652f3bacb7aee4524c37ad89", + "security_key_2": "a300020158458258204692ef5fb3ea8320c1cdce7bbdd31003aed069bb04cc1a5cde9b15625dbd4fc35820aa2c7e3a8cfa6a6ec5374a1bf0d427bd9e833352e825984298190fa96b543cfb02590f0b30820f0706092a864886f70d010702a0820ef830820ef4020101310d300b0609608648016503040201300b06092a864886f70d010701a0820483308201763082011da003020102020801cafe20c83b2715300a06082a8648ce3d040302302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a301e170d3230303130313030303030305a170d3430303130313030303030305a302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a3059301306072a8648ce3d020106082a8648ce3d03010703420004b2103f0f0a2654afa291a4a435f2bfff8ed018e1c6892281ae497bd9aa2686dbc9fd7254c94f2ef6701d1a2777613878a053c827e6ae105f9d8b1145af7753eca3273025300e0603551d0f0101ff04040302078030130603551d0e040c040a416e61204cc3b370657a300a06082a8648ce3d040302034700304402206de47fe26d900dae4860e57d29af0c9e3aba7421aebc91219e2e5697071092e6022020e6fad2707773e75a7c747ffeb2704f12db27898ccf75a5483f0a87c5fffda930820305308201eda0030201020207277dda070cc49c300d06092a864886f70d01010b0500302e31163014060355040a130d446174654b65797320746573743114301206035504030c0b4c7569732047c3b36d657a301e170d3230303130313030303030305a170d3430303130313030303030305a302e31163014060355040a130d446174654b65797320746573743114301206035504030c0b4c7569732047c3b36d657a30820122300d06092a864886f70d01010105000382010f003082010a0282010100b3316a351ac48d907aae9631ebc67182edab8c7f2f23a30d503060148fc475eba1e2d9cee063638849dc234e271bde03c28ef8afe53082abd4728aa74ad46aa220304a291058c20ec982bec051fa211243999dde73797e209ee554fcef9d03deab323fa39067883bcdd2c45f563a746ba954536d97b0f2fc5e108ebc293a94dfd566529d01b23096326a31e92199418490c4f76943a08fafa5069406a298db95d88c2f1678573d109ddd72af723dcdc5ae2df62cb09002e30b286256ae7bc1c8690e03dcea5936829f5a549e7ac090bb54602c82637414d71d60818b1f15f54144718e9384fe12c692d709f560d90bf7f090b344a0e13c24ccf32a6f13bd804d0203010001a3283026300e0603551d0f0101ff04040302078030140603551d0e040d040b4c7569732047c3b36d657a300d06092a864886f70d01010b050003820101008259b9cabd6f8e59d97bbbc3456f4d325d2dc37ae42feca2e46bb6b21140a59b823b3192b87f59c9f63c17dcce2192aa5682e37183cb47325e5e7f5bcbc9000b083177f0ba29b6735830f22bab56a872f126a41afde0d50952c3cd39d935751b260eef0368f23209e55a26beb5f93af3782637cf4a1d683eb942fbc008f1ccc339566e761a3269b9fe8277f970736699141caa5c3382020c9efc53fe798ed303f7bd97ad4fc41ec941489f7efa474afb89281178fa94c43ca4a3398edad9cc113c9206a503195922fae3505899206434f89186ee1f9314dd5454e96163ece8f358dc1a07482cd81ce02ec5b778c8e612458a2e540b1cfd90a1965c51c3b75e4a31820a4a308204c20201013039302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a020801cafe20c83b2715300b0609608648016503040201a08184301806092a864886f70d010903310b06092a864886f70d010701302f06092a864886f70d01090431220420e875ea68e624cbb640b846729f3693dc54ae38de3e7fb0e10a8a5a879fe2df783037060b2a864886f70d010910022f31283026302430220420aa2c7e3a8cfa6a6ec5374a1bf0d427bd9e833352e825984298190fa96b543cfb300a06082a8648ce3d0403020447304502206225e91f9358d8605076090d4f274400ea4563cf31d998ed23ff42f731927d65022100fac4c2ec5a8d50c24aa0b426fd15a833a70b55d95bc373d8352383c2f06b5826a182039730820393060b2a864886f70d010910020e318203823082037e06092a864886f70d010702a082036f3082036b020101310d300b06096086480165030402013065060b2a864886f70d0109100104a0560454305202010106032a0304302f300b06096086480165030402010420c86ee56a958ac3033f9df8c204eadd19324a66bd8d00aaf069b872c4e204293d02012a180f32303233303832333135303932375a3003020101a08201b7308201b330820159a003020102020820fea3aef45f161b300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200041abc8a59e7def8a3cff4c99a08c30f7028c3af6b389cec3632cb34db5f206ad8a3931bb2c886e536e01efee7ad5817b029ddc29863228531735da0da9ddc2572a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020348003045022100b1a985b9b6c2831f174648a19b4900cd0bb3fcd3f67cc04b2494131d6a00426502204577ebcd3b8a14c252ef528b2e77b20369507753ba5ca543253dd9fed3238ce2318201333082012f020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020820fea3aef45f161b300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a3018301604141e1ab18975babe77d30e68003c717b89935b9dfe302f06092a864886f70d01090431220420ae2f3d372b417904643ba5da53b50e5eb317c274794d31bae41428a064c20866300a06082a8648ce3d0403020446304402204174c537862c0d25e8ff825d41855cd7c712a2c2d7bbf3526646ece0702ed221022000d464e2059934132ec5e7c457771ab7d9074db018ff9fae12dc632446e7b988308205800201013039302e31163014060355040a130d446174654b65797320746573743114301206035504030c0b4c7569732047c3b36d657a0207277dda070cc49c300b0609608648016503040201a08184301806092a864886f70d010903310b06092a864886f70d010701302f06092a864886f70d01090431220420e875ea68e624cbb640b846729f3693dc54ae38de3e7fb0e10a8a5a879fe2df783037060b2a864886f70d010910022f312830263024302204204692ef5fb3ea8320c1cdce7bbdd31003aed069bb04cc1a5cde9b15625dbd4fc3300d06092a864886f70d0101010500048201004a82ea15c88391de20c5a8cc23ef3dcd9211505d29e989e4465a1bd9d6d98d538e7338b23fa3bcb352ac4150b63f4266e757a9237a94ab618c33e8d9327f37cc2ebdf0ef2a5293bba592631a653f334b18f66947d4af56f5f3c2eee2ca8788310b686e3035002d73807c8a64528dc2ff5b0665337c8252dcbc893bf177d424cea09648043a7bf995a33303d1c65064f77a2274993e4b5bc6b0d9c99d1f4c5bd07de2b69c83e158847aebaedfaffd68c1b8bc2fe39c8afb5c90d778061c7a6bbd0e73275dc04eb58c91aa17570acd51cc6b1cd29aa03a830242eb3b708e52cdbf8777766a35d7bae992fdfb5e44ba40ee72e859dd0c2f8ed893f7f56203e3fd12a182039730820393060b2a864886f70d010910020e318203823082037e06092a864886f70d010702a082036f3082036b020101310d300b06096086480165030402013065060b2a864886f70d0109100104a0560454305202010106032a0304302f300b06096086480165030402010420037fb73e4818e6577882813a718130f0d686ec9f3412477d89183f9f4c56210902012a180f32303233303832333135303932375a3003020101a08201b7308201b330820159a003020102020820fea3aef45f161b300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200041abc8a59e7def8a3cff4c99a08c30f7028c3af6b389cec3632cb34db5f206ad8a3931bb2c886e536e01efee7ad5817b029ddc29863228531735da0da9ddc2572a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020348003045022100b1a985b9b6c2831f174648a19b4900cd0bb3fcd3f67cc04b2494131d6a00426502204577ebcd3b8a14c252ef528b2e77b20369507753ba5ca543253dd9fed3238ce2318201333082012f020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020820fea3aef45f161b300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a3018301604141e1ab18975babe77d30e68003c717b89935b9dfe302f06092a864886f70d010904312204204214a1d3804eba0b407ebaaf0fb82ca0358a7c57384c677fe45ec01375ad842c300a06082a8648ce3d04030204463044022053e8abc782e01746c6a890eb397f591386e53f5dce014f0f1c6c1a5bbaca5a5e022045b17f83760fe6453244663fe8c52a9a49e33637652f3bacb7aee4524c37ad89", + "signers": "8258204692ef5fb3ea8320c1cdce7bbdd31003aed069bb04cc1a5cde9b15625dbd4fc35820aa2c7e3a8cfa6a6ec5374a1bf0d427bd9e833352e825984298190fa96b543cfb", + "certificates": [ + "308201763082011da003020102020801cafe20c83b2715300a06082a8648ce3d040302302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a301e170d3230303130313030303030305a170d3430303130313030303030305a302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a3059301306072a8648ce3d020106082a8648ce3d03010703420004b2103f0f0a2654afa291a4a435f2bfff8ed018e1c6892281ae497bd9aa2686dbc9fd7254c94f2ef6701d1a2777613878a053c827e6ae105f9d8b1145af7753eca3273025300e0603551d0f0101ff04040302078030130603551d0e040c040a416e61204cc3b370657a300a06082a8648ce3d040302034700304402206de47fe26d900dae4860e57d29af0c9e3aba7421aebc91219e2e5697071092e6022020e6fad2707773e75a7c747ffeb2704f12db27898ccf75a5483f0a87c5fffda9", + "30820305308201eda0030201020207277dda070cc49c300d06092a864886f70d01010b0500302e31163014060355040a130d446174654b65797320746573743114301206035504030c0b4c7569732047c3b36d657a301e170d3230303130313030303030305a170d3430303130313030303030305a302e31163014060355040a130d446174654b65797320746573743114301206035504030c0b4c7569732047c3b36d657a30820122300d06092a864886f70d01010105000382010f003082010a0282010100b3316a351ac48d907aae9631ebc67182edab8c7f2f23a30d503060148fc475eba1e2d9cee063638849dc234e271bde03c28ef8afe53082abd4728aa74ad46aa220304a291058c20ec982bec051fa211243999dde73797e209ee554fcef9d03deab323fa39067883bcdd2c45f563a746ba954536d97b0f2fc5e108ebc293a94dfd566529d01b23096326a31e92199418490c4f76943a08fafa5069406a298db95d88c2f1678573d109ddd72af723dcdc5ae2df62cb09002e30b286256ae7bc1c8690e03dcea5936829f5a549e7ac090bb54602c82637414d71d60818b1f15f54144718e9384fe12c692d709f560d90bf7f090b344a0e13c24ccf32a6f13bd804d0203010001a3283026300e0603551d0f0101ff04040302078030140603551d0e040d040b4c7569732047c3b36d657a300d06092a864886f70d01010b050003820101008259b9cabd6f8e59d97bbbc3456f4d325d2dc37ae42feca2e46bb6b21140a59b823b3192b87f59c9f63c17dcce2192aa5682e37183cb47325e5e7f5bcbc9000b083177f0ba29b6735830f22bab56a872f126a41afde0d50952c3cd39d935751b260eef0368f23209e55a26beb5f93af3782637cf4a1d683eb942fbc008f1ccc339566e761a3269b9fe8277f970736699141caa5c3382020c9efc53fe798ed303f7bd97ad4fc41ec941489f7efa474afb89281178fa94c43ca4a3398edad9cc113c9206a503195922fae3505899206434f89186ee1f9314dd5454e96163ece8f358dc1a07482cd81ce02ec5b778c8e612458a2e540b1cfd90a1965c51c3b75e4a" + ], + "signer_results": [ + { + "holder": "Luis Gómez", + "issuer": "Luis Gómez", + "result": "valid", + "seal_time": "2023-08-23T15:09:27Z", + "before_round_time": true + }, + { + "holder": "Ana López", + "issuer": "Ana López", + "result": "valid", + "seal_time": "2023-08-23T15:09:27Z", + "before_round_time": true + } + ] + }, + "stages": [ + { + "step": 1, + "name": "parse DKC1", + "ok": true + }, + { + "step": 2, + "name": "prelude", + "ok": true + }, + { + "step": 3, + "name": "public header", + "ok": true + }, + { + "step": 4, + "name": "header validation", + "ok": true + }, + { + "step": 5, + "name": "sealed control structure", + "ok": true + }, + { + "step": 6, + "name": "payload structure", + "ok": true + }, + { + "step": 7, + "name": "condition", + "ok": true + }, + { + "step": 8, + "name": "tlock stanza", + "ok": true + }, + { + "step": 9, + "name": "release", + "ok": true + }, + { + "step": 10, + "name": "release verification", + "ok": true + }, + { + "step": 11, + "name": "open sealed control", + "ok": true + }, + { + "step": 12, + "name": "policy structure", + "ok": true + }, + { + "step": 14, + "name": "control", + "ok": true + }, + { + "step": 15, + "name": "header binding", + "ok": true + }, + { + "step": 16, + "name": "payload identity", + "ok": true + }, + { + "step": 17, + "name": "open payload", + "ok": true + }, + { + "step": 18, + "name": "commit", + "ok": true + } + ] +} diff --git a/testdata/fixtures/format3_signed_cms.plaintext b/testdata/fixtures/format3_signed_cms.plaintext new file mode 100644 index 0000000..379469e Binary files /dev/null and b/testdata/fixtures/format3_signed_cms.plaintext differ diff --git a/testdata/fixtures/format3_single.json b/testdata/fixtures/format3_single.json index 3b45683..002ad2a 100644 --- a/testdata/fixtures/format3_single.json +++ b/testdata/fixtures/format3_single.json @@ -1,6 +1,6 @@ { "description": "format 3 time_only capsule with a single file, nota.txt, with its mtime", - "spec": "0.10", + "spec": "0.11", "format": 3, "file": "format3_single.dkc", "sha256": "9f68664af8733255084be9036a100b75d27bd16106bf0acff94ce469dd1d1743", diff --git a/testdata/fixtures/format3_time_and_key_portable.dkk.json b/testdata/fixtures/format3_time_and_key_portable.dkk.json index 9ded6e4..0882b2b 100644 --- a/testdata/fixtures/format3_time_and_key_portable.dkk.json +++ b/testdata/fixtures/format3_time_and_key_portable.dkk.json @@ -1,6 +1,6 @@ { "description": "portable X25519 .dkk of format3_time_and_key_portable.dkc", - "spec": "0.10", + "spec": "0.11", "file": "format3_time_and_key_portable.dkk", "sha256": "54cc64d849395234b3e093e47f432b72781ccc13f455c9ef394e3554ab566751", "credential_id": "bdb483fba42daf0b409f44d23033f362", diff --git a/testdata/fixtures/format3_time_and_key_portable.json b/testdata/fixtures/format3_time_and_key_portable.json index c577e8b..b17e49e 100644 --- a/testdata/fixtures/format3_time_and_key_portable.json +++ b/testdata/fixtures/format3_time_and_key_portable.json @@ -1,6 +1,6 @@ { "description": "format 3 time_and_key capsule with one credential, a portable .dkk, and 15 dummies", - "spec": "0.10", + "spec": "0.11", "format": 3, "file": "format3_time_and_key_portable.dkc", "sha256": "680d29962e575689a31543df28433dae7737abd9a793e9cae92ef40920d09636", diff --git a/testdata/fixtures/format3_tree.json b/testdata/fixtures/format3_tree.json index 34d418e..19145d1 100644 --- a/testdata/fixtures/format3_tree.json +++ b/testdata/fixtures/format3_tree.json @@ -1,6 +1,6 @@ { "description": "format 3 time_only capsule with five files in three folders, one of them over two STREAM chunks and one without mtime, a comment of two lines and a declared author", - "spec": "0.10", + "spec": "0.11", "format": 3, "file": "format3_tree.dkc", "sha256": "217f378faaf795f6a9c416b564fb8931bb2e896918aee870120fd14f9a5da7d1", diff --git a/testdata/fixtures/time_and_key_portable.dkk.json b/testdata/fixtures/time_and_key_portable.dkk.json index 4a2ff4d..32c7264 100644 --- a/testdata/fixtures/time_and_key_portable.dkk.json +++ b/testdata/fixtures/time_and_key_portable.dkk.json @@ -1,6 +1,6 @@ { "description": "portable X25519 .dkk of time_and_key_portable.dkc", - "spec": "0.10", + "spec": "0.11", "file": "time_and_key_portable.dkk", "sha256": "e528fa2c832c91119f0684bb9d6fb3c4c2d0d55183482890e7c4fe92f668426a", "credential_id": "3955e944a3c60cfa1fd6485e9693c77d", diff --git a/testdata/fixtures/time_and_key_portable.json b/testdata/fixtures/time_and_key_portable.json index d57efe6..535b9e9 100644 --- a/testdata/fixtures/time_and_key_portable.json +++ b/testdata/fixtures/time_and_key_portable.json @@ -1,6 +1,6 @@ { "description": "time_and_key capsule whose only recipient is a portable .dkk", - "spec": "0.10", + "spec": "0.11", "format": 1, "file": "time_and_key_portable.dkc", "sha256": "2e97878078bae6358037a9c264f379a3cbe839f767d69836b0343f35657b2972", diff --git a/testdata/fixtures/time_and_key_portable_extension.dkk.json b/testdata/fixtures/time_and_key_portable_extension.dkk.json index 1ed6121..904069d 100644 --- a/testdata/fixtures/time_and_key_portable_extension.dkk.json +++ b/testdata/fixtures/time_and_key_portable_extension.dkk.json @@ -1,6 +1,6 @@ { "description": "portable X25519 .dkk of time_and_key_portable.dkc with a noncritical extension: the credential of time_and_key_portable.dkk re-issued with org.example.delivery", - "spec": "0.10", + "spec": "0.11", "file": "time_and_key_portable_extension.dkk", "sha256": "0bf463a7c65627b7dda2234d728df89ec5b835816a2a37b91497d8fecc5ea548", "credential_id": "3955e944a3c60cfa1fd6485e9693c77d", diff --git a/testdata/fixtures/time_and_key_recipients.dkk.json b/testdata/fixtures/time_and_key_recipients.dkk.json index 4fd9722..8d63d98 100644 --- a/testdata/fixtures/time_and_key_recipients.dkk.json +++ b/testdata/fixtures/time_and_key_recipients.dkk.json @@ -1,6 +1,6 @@ { "description": "portable X25519 .dkk of time_and_key_recipients.dkc", - "spec": "0.10", + "spec": "0.11", "file": "time_and_key_recipients.dkk", "sha256": "19f6c47150c3194712d454f43c7392b7344e6b4e7b074d83e9ca5f563a8e072f", "credential_id": "b89292aedf6d05d584cec9a871ce8735", diff --git a/testdata/fixtures/time_and_key_recipients.json b/testdata/fixtures/time_and_key_recipients.json index 1ea76ed..5d83caa 100644 --- a/testdata/fixtures/time_and_key_recipients.json +++ b/testdata/fixtures/time_and_key_recipients.json @@ -1,6 +1,6 @@ { "description": "time_and_key capsule for two known X25519 recipients and a portable .dkk", - "spec": "0.10", + "spec": "0.11", "format": 1, "file": "time_and_key_recipients.dkc", "sha256": "69ac110380f5d768b5b6afaa157a50ed17d8ceccfbd4604ffa5b6da38539b635", diff --git a/testdata/fixtures/time_only.json b/testdata/fixtures/time_only.json index dc11d03..ac9576d 100644 --- a/testdata/fixtures/time_only.json +++ b/testdata/fixtures/time_only.json @@ -1,6 +1,6 @@ { "description": "time_only capsule, two STREAM chunks, no extensions", - "spec": "0.10", + "spec": "0.11", "format": 1, "file": "time_only.dkc", "sha256": "99e915810d595f1092700b728f5e5081d78efe83f5343e76325b1bcc2c33ccf2", diff --git a/testdata/fixtures/time_only_extensions.json b/testdata/fixtures/time_only_extensions.json index 10fddeb..65e2fd9 100644 --- a/testdata/fixtures/time_only_extensions.json +++ b/testdata/fixtures/time_only_extensions.json @@ -1,6 +1,6 @@ { "description": "time_only capsule with a noncritical PUBLIC_HEADER extension and a noncritical CONTROL_CBOR extension", - "spec": "0.10", + "spec": "0.11", "format": 1, "file": "time_only_extensions.dkc", "sha256": "0446c9b73e267adcb24e5cc89afba2544a386ec9a050016e06517a4a57aa2085", diff --git a/testdata/vectors/cbor.json b/testdata/vectors/cbor.json index 4202ede..fafd867 100644 --- a/testdata/vectors/cbor.json +++ b/testdata/vectors/cbor.json @@ -1,5 +1,5 @@ { - "spec": "0.10", + "spec": "0.11", "description": "CBOR profile of spec §58 and the schemas of spec/datekeys.cddl, generated by the reference implementation. accept and reject are walked as one data item of the profile with the limits of walk; schemas are decoded with the decoder of their schema. See testdata/README.md.", "walk": { "max_depth": 3, diff --git a/testdata/vectors/dk1.json b/testdata/vectors/dk1.json index e5ba4fc..f9e4d3e 100644 --- a/testdata/vectors/dk1.json +++ b/testdata/vectors/dk1.json @@ -1,5 +1,5 @@ { - "spec": "0.10", + "spec": "0.11", "description": "Canonical dk1_ strings and rejected encodings (spec §18, §19, §66), generated by the reference implementation.", "vectors": [ { diff --git a/testdata/vectors/ed25519_strict.json b/testdata/vectors/ed25519_strict.json new file mode 100644 index 0000000..027ba46 --- /dev/null +++ b/testdata/vectors/ed25519_strict.json @@ -0,0 +1,150 @@ +{ + "spec": "0.11", + "description": "Ed25519 signatures and the result of the strict profile of the author signature (spec v0.11, §29.9), after the cases of «Taming the many EdDSAs»; stdlib is the result of crypto/ed25519 of Go, for the record. Generated by the reference implementation. See testdata/README.md.", + "vectors": [ + { + "name": "a valid signature", + "message": "446174654b657973", + "public_key": "10770005d22145b75334902d3dbd10491a6f210afa80d3937d761a56c308d5ea", + "signature": "5119b0822de6d25331d7c21c528f4945b8b77253241cc6b83c16ba265409ff0f1fdd979c37e18f4bd6bc9c1c18d4b8746ffdee1ce723e404feb1ca90288c3900", + "valid": true, + "stdlib": true + }, + { + "name": "S + ℓ", + "message": "446174654b657973", + "public_key": "10770005d22145b75334902d3dbd10491a6f210afa80d3937d761a56c308d5ea", + "signature": "5119b0822de6d25331d7c21c528f4945b8b77253241cc6b83c16ba265409ff0f0cb18df95144a2a3ac5994bff6cd97896ffdee1ce723e404feb1ca90288c3910", + "valid": false, + "stdlib": false + }, + { + "name": "S with bit 253 set", + "message": "446174654b657973", + "public_key": "10770005d22145b75334902d3dbd10491a6f210afa80d3937d761a56c308d5ea", + "signature": "5119b0822de6d25331d7c21c528f4945b8b77253241cc6b83c16ba265409ff0f1fdd979c37e18f4bd6bc9c1c18d4b8746ffdee1ce723e404feb1ca90288c3920", + "valid": false, + "stdlib": false + }, + { + "name": "R not canonical", + "message": "446174654b657973", + "public_key": "10770005d22145b75334902d3dbd10491a6f210afa80d3937d761a56c308d5ea", + "signature": "edffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f1fdd979c37e18f4bd6bc9c1c18d4b8746ffdee1ce723e404feb1ca90288c3900", + "valid": false, + "stdlib": false + }, + { + "name": "A of small order, the point 0 of the torsion, R the identity and S = 0", + "message": "446174654b657973200000000000000002", + "public_key": "0100000000000000000000000000000000000000000000000000000000000000", + "signature": "01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "valid": false, + "stdlib": true + }, + { + "name": "A of small order, the point 1 of the torsion, R the identity and S = 0", + "message": "446174654b65797320000000000000000d", + "public_key": "c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac037a", + "signature": "01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "valid": false, + "stdlib": true + }, + { + "name": "A of small order, the point 2 of the torsion, R the identity and S = 0", + "message": "446174654b657973200000000000000001", + "public_key": "0000000000000000000000000000000000000000000000000000000000000080", + "signature": "01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "valid": false, + "stdlib": true + }, + { + "name": "A of small order, the point 3 of the torsion, R the identity and S = 0", + "message": "446174654b657973200000000000000002", + "public_key": "26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc05", + "signature": "01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "valid": false, + "stdlib": true + }, + { + "name": "A of small order, the point 4 of the torsion, R the identity and S = 0", + "message": "446174654b65797320000000000000000f", + "public_key": "ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f", + "signature": "01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "valid": false, + "stdlib": true + }, + { + "name": "A of small order, the point 5 of the torsion, R the identity and S = 0", + "message": "446174654b657973200000000000000019", + "public_key": "26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc85", + "signature": "01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "valid": false, + "stdlib": true + }, + { + "name": "A of small order, the point 6 of the torsion, R the identity and S = 0", + "message": "446174654b657973200000000000000002", + "public_key": "0000000000000000000000000000000000000000000000000000000000000000", + "signature": "01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "valid": false, + "stdlib": true + }, + { + "name": "A of small order, the point 7 of the torsion, R the identity and S = 0", + "message": "446174654b657973200000000000000001", + "public_key": "c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac03fa", + "signature": "01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "valid": false, + "stdlib": true + }, + { + "name": "A not canonical, y = p, sign 0, R the identity and S = 0", + "message": "446174654b657973200000000000000002", + "public_key": "edffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f", + "signature": "01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "valid": false, + "stdlib": true + }, + { + "name": "A not canonical, y = p, sign 1, R the identity and S = 0", + "message": "446174654b657973200000000000000001", + "public_key": "edffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "signature": "01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "valid": false, + "stdlib": true + }, + { + "name": "A the identity with the sign bit, R the identity and S = 0", + "message": "446174654b657973200000000000000000", + "public_key": "0100000000000000000000000000000000000000000000000000000000000080", + "signature": "01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "valid": false, + "stdlib": true + }, + { + "name": "A of mixed order, 8 divides k: the equation without the cofactor holds", + "message": "446174654b657973200000000000000006", + "public_key": "b95f1903e3141ba54412bd1138119fbc7ab21aba35be980650ec3337b0a5c5e1", + "signature": "57890b19a0fb99cfa5fae15f2f8364a4d2d70474bea04f66c611aa5e250026a60ccf279cc11141ef368a21cfdad37a727e43f59936c20d753dea73a0e508d60e", + "valid": true, + "stdlib": true + }, + { + "name": "A of mixed order, 8 does not divide k: only the equation with the cofactor holds", + "message": "446174654b657973200000000000000000", + "public_key": "b95f1903e3141ba54412bd1138119fbc7ab21aba35be980650ec3337b0a5c5e1", + "signature": "57890b19a0fb99cfa5fae15f2f8364a4d2d70474bea04f66c611aa5e250026a642a681ccd920aa6da440dc535484ec7ec2904a332dd86256e024a37f6040900f", + "valid": false, + "stdlib": false + }, + { + "name": "R the identity, A of prime order", + "message": "446174654b6579733a205220746865206964656e74697479", + "public_key": "0368d6193d5242089bb4a5c019cceffe6a55d83495e57de52d7711ed864ca77d", + "signature": "01000000000000000000000000000000000000000000000000000000000000007b2ee545c254e47cbe2f2774f74d640944034cc59d1ba903de7ecb767cf95304", + "valid": true, + "stdlib": true + } + ] +} diff --git a/testdata/vectors/head_schema.json b/testdata/vectors/head_schema.json index cc79b19..ea79eef 100644 --- a/testdata/vectors/head_schema.json +++ b/testdata/vectors/head_schema.json @@ -1,5 +1,5 @@ { - "spec": "0.10", + "spec": "0.11", "description": "HEAD_CBOR of format 3 (spec §29.4 to §29.6) and the result of decoding it with no extension known, generated by the reference implementation: layer 2 (type tag and version), layer 3 (the CDDL with R1 and R8), then layer 4 in key order (spec §69.1). See testdata/README.md.", "heads": [ { diff --git a/testdata/vectors/inspect_differential.json b/testdata/vectors/inspect_differential.json index a6f8ecc..dbd21d3 100644 --- a/testdata/vectors/inspect_differential.json +++ b/testdata/vectors/inspect_differential.json @@ -1,5 +1,5 @@ { - "spec": "0.10", + "spec": "0.11", "description": "Differential corpus of the pre-unlock checks (spec §63 steps 1 to 8): deterministic mutations of the official .dkc fixtures with the verdict of the reference implementation. See testdata/README.md.", "format": "Each mutation is bases[base].file (in testdata/fixtures) with its edits applied. An edit is [at, delete, insert]: the delete bytes at offset at of the base are replaced by the bytes of the hex string insert. The edits of one mutation refer to offsets of the unmodified base, are sorted by offset and do not overlap. result is the verdict of steps 1 to 8 of spec §63 (capsule.Inspect, the Quicknet profile pinned, no extension known, no network, no secret): ok, or the normative error code, with step the step that failed. kind names the generator of the mutation and is informative.", "seed": 20260925, diff --git a/testdata/vectors/locator.json b/testdata/vectors/locator.json new file mode 100644 index 0000000..a2b72aa --- /dev/null +++ b/testdata/vectors/locator.json @@ -0,0 +1,207 @@ +{ + "description": "The extension datekeys.capsule of a .dkk and what it points to (spec v0.11, 44.1): an envelope of age with its header apart from its rest, the rest hidden in a host file, the locator sealed with tlock for round 1000, and the data of the extension. Frozen. See testdata/README.md.", + "spec": "0.11", + "round": 1000, + "datekey": "dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MTAwMH0", + "note": "Cartas del viaje a Lisboa", + "dkc": "ee03814d73b55af618455bc90321bd0c27b16b8b440f1b954664218ecddcf4f33d3838f839d7549fcacc8ab912af943afead15c99524c0bf9a637099db4164c0c010e8201b3ca44f1c2563670910c5dc76aacad8d31a939be742afb6f985971cbc3167a73f7b5700213f35758b8981f210dcab1252433673930e4f7fe2cfc048270c2af4f9e22b8ff2cb2e09c6cc964b02b21b83a0fd293c446c55e1a2ebdd2cbcf997c264602c92d42524b1cd712a506634090180608822f4360d733be5b47bb4ea4018bc3eefe429c1745c809e2a08aeeb897563ab46c9d2fdf834e57d7f1fd5d76f2e583d571ce055a52e2fa15000a0cc387f088767f1177c68af7141f338b71499c05488e90f0c5440c775eff25469a30bee7568b1a1faf998d865f7894bf8b677739e191612774ae8dccc30c8ebc0983edccbfc817cda3b74438bf6f7d761377592db4f52100a19e3b0bbc69273b01d54e2bcd843b5936841cebab1a20d8986b6ba3c23248ce762ac072032cf85a36a3f9cf4059b41f0b0fc2ccf96723552f2a20f6baafa661d1a202bdab2c22028020152d3c5118387ca32b8da9928d303bd2f2a1d1845c01c679d47c31bcbf823dbca5556c7e66315751ddf0e1f97dee3c703b7545cd84217d680470b01f0d57c7a902eacce78e25374fe13b4d7a001e660df9f0a5eaa1499483d08554ab314e6222288e55e1f1c3ed93d897fa3424fee8e13140407950dfc68ba1db731b72028fefd21d8c368fac10a186a73a1310b9d9a65637d54ec9f0a022fe0cca3a2cc81818510568b94c4531ce6c00017b9303c202ff40dc3dd70fb9a8e221773fd57c77b82ae7f4bcaa71fce11edc7e6bed299f5d8b306e2f3ab0f6952f62fe7b61f2358966eaf9f933b538e960ba7536a87ceba023881f1ee66fd9c5c4a7a05548ef93916a32f0d735dc517fde4e787b85c430a1eaf7442f0b71dad8f46c097f624c64b6d3c8bba7824e1d5cda3c43376f0125638b905abc0e0a6be8c3637095c6664df17d234c077a78e6a588c259db83ef42df60744df33c6c7f184092d169a3b4eb703d5936fee55ddf83be09944a6af840ad6d1507c5888111288cd898d6e3a2fb9746c0b62d7ffd7b486e6a507a9cabd14f47b431f26de3470be86021f5a16ea48b7740f9745d29f1cf0bde23a4b639464ceee378bfd3b45040609b27cfd57c31334ef011d94d971b9a5395384d3fb15ead0d7a0e7c01155f0a142b77d85f8196056a55aeac01fa01bc9c33632f242eca3413af62e105448d60c63b84d83f13ce52875c205c8a680f588e6971ac0bc70650a2126e8c105d66b8fd8c812c10f8513238c140bd5c91532e45341b77df32f5f3370f813408f7c3ead91dc17db1d93a722e992fc9539d5a6186d4ccbeca31478286b9891fb9513a961127546c55f3255168fc3cebdd6266837d2bc41e2e5f015f4f7686b6c3fb213e856b47946f6d9f682c4fceb30485dca116067a37090b8c01c45db406fbb920e6825d5cbfe8bad8f965630bb645146d966e8d326d0e24cd330b8d9774ad36a8204e427c6b0ba20db20d03b80d9b94b9e72305a0ee69ca6339df880f329a2a628b1dddf2e90c344c2db01e559332916533a4ef4f4c7d9404da29436b31b81280739fe15eab10d1b4dca7f28b342a25e15f9c21a1bee2b9a10264a2de383a9f1e9aa2bad94366a7eca3764d7fca5bb21a772a70af20a9b8fa02da25a0061fcb7d70b1e819a617b26811a657d9be611c36ea1f9cf15957b50cc4d215db052809e9796f089f4c94e94e852313c7a36b6aaca542090e1d64eeca08b42b266974053a85cc955c0cbe326a5d862ad4a5de60b51957a71c5c49633c7c838c8f5846d85a6f76ad8087c27df203c39997e4efee96a240fefe5900405d91a400d98392cd45079af48b149ec7c95e99a22e8cf024f52f759d47595d6c90c0619a7c9f2001fbaf92a0d43655a3e62653c04c99d56b50503a9487c45e6eb019e926ae451e6eda6ec9f0d4184e0a5dcab7264aa3ccd3df08c482d00bc5b5effe623accd1516dffca98376b9fd596b3eb9e6af0d6d390fc16ec011192ae73d681ce540a19522c19a283d6ccb9906893a222f598d782bc7fa1069011d9e9c5225280c26572ef0e37554ad877d2b64cc8a6f86f06e6fae2009827be6111a88160c98b2980b5c4c16497de5a1e75a307ff9ac581c52e9508916b9138e9df24298d79f280e6003c174c8f88dbcfef977a6309f7db96c44e99b9f43268d2367ef12f879b2ea906c3a555bfb9c09e6e3d10d6b742adb6b4e90bca6572fb4ed3651acfd81642954936e7dc97f034b7e42c08e1838e9032e982e705dce629b00204bf862b7e254a8b49c7b940647f5cf27b5673d4eb1b723ebafaae178acdb5b2e2d4a4176a944e7922ea81f175c6ca09970f602782ed17f71635c4679fb19fe64d9896982575ba2e7ed4f5913dff51d0fdc99b25ef51c88cf3922b85b1615e1943b0d9b69599711e9f0a3664d1d1beeeb81648b579b8965104a0242ac4eebd2c20fb2756dbbe6358a09da0bd4dd543232aa54a92d2a4027b620b51eb80fe8e169061442fc742a70ba449575a3bb83c2a91bff8d249151d99712bc4c413a455ecfeaeaafe14e5ef8f02398d75c1ab697fb2a98c08ed58abe46808445528722b2cd532e08492826d6b9d13a3e564f51a99608d28d13a16a5082a7e20600fc229f7736b3f555f84a49499b15c812b2880842dd0b2cb9865ad9d9499d8304ce32ae6437bbc3dfcd53b7cbb3c07d4b719b48be8ab6848ab4cc7455c5a08c94fb48c003cb65231cf619cba729d9735acd842b3f5dd01809875dd287b6f4bf27f3e4a8e9a796eeb8b80709fed6ef83e598281e679294d32e77ea15927d8f777a8fee3e9e00fef8a4de04a58feb64fed01ca14ced9dea6ee4eea43a0960a5e9e5803b7c778e1125cc981b935099854696c874c7be4d63be2ba06b185b99c949a18b261a72ef52aaf371dd241391c920737ac1dfe17a200d1fcb9a1cc16ed72c5df1b7af3b5ed4f7b3f718d28fb4b6f27bd49175d2a6946b5940cb8bf1dbd0d786cc0a968c0044ff3c172d5841a28c14bdd611fad3029b7601206404594b29adf1efb0d5640fb7422a7ea2d3db8c2c65a3e8bcc65cb2fe7ef724f9cf82159ea6984ec85a4a172d689f614e9a0a0c5893b019fa0701ef339de724395b9f9fce48402f2bf069e2ae51fb23c6cacf58ce3f0dbf927f3ebe888f63b7f3dd10895c99dda8fe60820e8beb18b3490797575fc2ed009f777f9f205b7001cc47fe03d45d022f726376fc9908e66b4659a218e7106929c0443c0deb51c1d36b8783bd4fb91956d80ef2820d6806c2594fdebe33ae620e5e9e816649a6f3ded5943ad676b57d2e8180444d23fdc94c1245008c26e7c726fe1c35d7c33b9a48e3f456317006ed0c8651331b50797f85e22c49e5e3fa34dec19ac7efa9bbd4fe6d529c5e59213c2b1b51657ddb051fc52eb1c6eb24a718d7053a7ddedad40822adff1bdd7957e85b7170eb743fc579aea19daad4f7a6388273916cb66c69e90c9ede83ac8f88fe097d2b752da0c3b2b5d3ca98d4498aca32169b3e7fbe5d8d14a51983a5cfe8f9b775654b244243584278213ee6c5807c67e845213049ceb02ab4b9a52ec1cff8f69ee53794f637aefa865a1f0f3649a14eacf03edb19c777876cbf8c959cb41f86ccb6d5451a1a1c4b3159d89127c6d1f04a1c751c2aba4289d629112e54e2bb119110cc180f6d4ad9857620081813268c50fbf850437e5940843c62c3efaa210a2a318c4e6b4cf89dff2c886d1495043cc9fa1eadf7c852114817f3df7cd1adc0915777e8f83f1bfdfa056f2dcf3d4cebedd888bc70e4f762399ae8979288333be650d00349ebaab3da70e2b48b3a42d9225ed0dec5ccb24e6f73028032763cce6b645abc50af5588c052539ccbae09159b9d5ce17abd7d491aafa904f5c2b4f284f7b19be9a91ab6bb9542cdef9bbb217767e65d38769602e3a6a355889fbda04679e78cb1b4e7b880014f81b623c4c38e19c7b013c8992a0c103dcddb68c0a6d35376d132550a1e06d590e55f4e7bfbc7b8eba4d5d7c923e428551cbafa3d5e31f94ccb38d2b40fbb07cfe35ae7d1538871707a1aff5b91c33e1420a4632d91c5c2cca2838f30768c60ab6a26261d3d74b59b7173a38917b06f866d11b89ef999a2df8b3592f5ce42fb230a095626be28a46015d4106b78a41829f8455fe4e36d473c78bab24cfbbcdc7e11ee6cab0703abd82d86fe0ee1e7c07b82515f453a7bc5cccf67240456b00305908fa926945718b9bedb8c007d59b103e8dcdcc42e2941489e6ce51bde77cc5e556337f08be392181e9325b60e32bb3bac79c1cde2a6bb671ae5bb35d108f676f963feca6aa0eb47de54903ecedbbd46bca7fda54d6854bad92b98e66fafbdaad17c23f9e1b2998b6760cadd57b91182a4e43735a47de9006905a29dd73347592ccb5c4a5230b5e2d4059ed055eb3034f3bfc018360f0549b1a6b2367d6323af05038dfab8db4b35acbec3297ff5e9751185641fc6d772a1e617a615be2d18ba1ee9499851d63b0b921a7ac15e04c4a2507ef25775510fee6b051b5d0c2d210309b1ead2d3f91bbe319032b647dcd7b0ba9563c2800b49c5c5b91a1ac8a2f9032e52f1edbaf2a5ae492b34011e58870d712eb29bfa6b1562cefda3fa1fc0edf17c518446b1b120ce11b416a596cd381eb0be752a5b7ce1d23cea27ad1792667d182bdd11281e80ed8ed9dccc94ba98fd2e6c3895a4f21cf99c11ae36e40ce03c37496ebc2cab7b808b394557266d3ab1d8386abc04ff79bfb38d7fdb4a0e5dd32308475e9860d1a9d73d282c377f35ca76a0a99edcc3140d990cc85dc9a40be0920913ed67e4c4957d728ba038e4b43f983b727e7be0ca5b866bc403f4395e3eed91f224f7cbc0cefda0fcab8681489e56be77bd61ab269805b07d025806c5d74f8c858597960150442688bf97565826146dfbc6a2932580caf1a8a527d27cf8ecabaf9145862ca57f2a5a775cf6b534c186d5ae06ab1e5b82f91931eb07f163f23c04ec8230ba5d1a8930c31d3e622f2c83bd593489c56d6aef562d518a155e28ee6e2b5ac5577a44754b3bd631dc2a643af50cbb9eb6ad5bb21291980f64d7b91348f1aa2fcd8acafa1de5ae890d5143648a2d2bcea7053ea58d3a48d4b3222c36069cdadcba4bf94fca38b406138e4ba188602b286dd7222b86c15146f4e04bae67abcaf5c6cf802d0fade9190dd4aceb47f41e2177c2254a67f4c3fe5d30430d2385094d99da73d98b5c6adcce3b0b4091baa14f522115c145c31f7c9eabe4317d3dc335d2d472df9b250b2c9fc0d1fd1ee15155eca4de87397c5815329069d655d2974e5ef5737d1153a78ea1fcbedb03bcbca663d750e32365f3ed527738c66ac34b5d0fdd1f65afa77c2a322cecd27ceadd2559b1edc51eb44a529011955866d2ac01d3bfdeacb247e8e0fd219492ebc68287849370d5fadb9c1b71b7f4ff4c645ffb6c7ddacea49ab0e79f9c7c83311635593f6a9326877cefe284902e3de0f0d339af7692fe39aef0b3304e4dc45419ac816e61c6090dccec275b1efeed2debdc589a0e4923432469ac24cebe6a0a05fb7d9f0fac9a5f3f88f31cf4d3d725feb6c0066f6fc6c13464a0b2c22e48633dd1ef9c87b18609618fdc5ce4a78358fc82cd6182b286f7a3c915fd0d3732885769332af100f89359f6ce5e4611db542ecd2b9cb751e2e6cd8a5cb0c878886eb84c0d0702cae0a837d161de86aefef6089b2281d6986d478a6edd9a2873106ec42818d6bc2bc2c6de0b10f90354a0733dcaf1c1553cb5e49eed6f24dc15bca702c9502660404d249dc15eda4a854a60c08d4f6e51e291275a53ffb4be824036b3cccd792a67121dc6287ddd70f520447f274459b90d08151ff71ce9b81ce328970359aa7e9278ef85b7a4c8b73a6c9cf1bd8b64ecc8a5d6a5ae859bb8ac5599b20f55b201a389f01aaa7c9933bd79ea7f4cda9a6d0dd5fab81b5559cf9baa549aa74b22a458959b4a925399415693403a2d75e524b5465985cc05f856a7418bce674d642195cbd7d6d3bd5e2cd0ac57fbf293695a9f6d1dab534623665ea31a666cb633497fc597f6a51014ee58c0cca27c2ea8daacdc77770b16178092df935ce9616c95e5ba77e23662f79b6cab6af60c00096361bdd43c94005baf3a321ac3515f6858c60207305f6bd2e28e913354a20d7d5f98a09dba318899d2c9b553129ec2c0673dac849a05c086d6b9fe58b449000c198705cf982fb8ffde27b429ba51103c8d9cafa25b2d34f2a08b28f32d4f3bce6595c4cd9d8c6a482372b0b2c2544036dd43c8ceea748e1b92017a9a03db8719db6560a16e5d88b175fafce2d180c9516db3ed1c627dc3043e0a9aa3ce5bfab086d1bffb5e7efca18803fa0112cb281901e9a77bb7eeefc25169473b99049c06faa36c3306101689f4892bb5056513ce7e73dac906bcc0b721f34266470af08220737f7eb458403746cfc0571fd021e52a87ea03120ab19723a746805ccfa7a445ec25f4eb234a5f18856589012b86f7d3cce63c04faa1097c2e91c829d290dde41734f4cc11f0340423e1c9072348ba80a68846bf61b619a82b956ef6e7d41feb24ccf000a50a159beda6276cae4d18f98dd56fb7dd25e773ed147e7198663ba077382a6ebb9ff9aa07612ca04d0126de1dee66d3ba8c4e2019c6fda91a3b716dedf61f6db20c2a2a1183efd18e70cf584c0696c02e594bf43575c6f23f4383b42f05619853af66f769a756b59ad1f469a480924994cf514e5b6a5474ea5b642477f3a9f30214193a3e778988b98f7942cdc1212d718123a1f9b35af90c611e736dd1adeade640686502b69f9ae534e7c9df7f0fd03bb3eed5f81042c2df16ae1c26e302d8fb5c6caaecdbc8c1ff8ce2dcdac4325eddde37a8a0e060a0054e4be2b5e8cf589f458b69610a873369419b5d67aada89f77330d08b2f8b71f9fc7cce6597ee8f29088f5a89d8ae7611550f5dcca4674e4a7ed1743", + "rest": "8a2689c9bc0a0d9773da3d14f6ff6f14f730dd4a5462e5a47597997bbc6b96bff60fe1a55e2ba4089545184c0b0a973847130fc1324aa7dcdd29896f185fdd77b4800ef385de9d6a6259401f342400c314fc223a1bcbecded2dc7d0b7e34e0fd4c6d2c4d76a36a18cdd0b3f25e98707ed0c1c36859a635b5a09807fbb62edab178e17e42fb4fc7d415d0efde0e643b1cca0e10e05ae67fc93224aaa6287e068d12132f6c26ed78f756d566f83c833413cf9be11b74fabd3bbcfc5a09c346c656149b35ada313d71103862466e18abfece1b5de30d7d2da04ccbd68933cbffdfa3ef38317d0499bf04924582dc6f54edeef6b39df149eb3f386a602a812a01b998c2d54745feca7647c7ab6aba562dce1ce38aa499cad7c2c31bac32c5f2ccf512eb1bdfecc2949e44e9e8e0d718a9f11eb7d8226f8f6a0ca8d2ba55f76f5f52585aba2040797e4936af23bd8409dac6c2a9e72a25fd656889d2f85cb1ca61b4bc97eb4400c63a868af10fe6e0bba88260ec6f9631b6cf1f43c321e5a8507f2c9388173e113573737513dafc8b169bae1d3ad447e1f63d318d33f7c6a36008598aaf236f4cecb705e8925a140a53f4c935a269788b80c55d97571d2526f9fe7e1e88e3d76a2b9820f8ca6e590daec76c9e1d94b1e0e7d87f1160e3be70c3544e5620131fe3cde24da788b4f8e6c466a1525369829d563c21e6f38ea9ef40ee3a31a44bd11f48824dd6019c590ded7f60cde7d61dd36c122f187252f5af081090f14557ca930d061799beb24c67fbefcce03f21440f5d8631bac2419a5b3f56bd1bde054a8096bf16cfe0885d0ef33dc56fcfb951a371eaff0d5cf6e099e512d0d6e16afe5b753bfcb85e325262e2faf6e843478a060a64b5adf2c6038688c37e7e3a8a0bed370b3f8d847e77543413aed6cbec13ac64d6f751d18a3a805ef6741594111b068012a10e5ae943b821069c48efb76c9e9a57e6cfac6a1cf9bef28478d40cd259831aec9d088a2eb5c65ef2361df3e9f657dcd258af93d0780a0be390ebc532ffb45e5999c028f3e762849f9e20e9ecba400539c24ee9fcf5175868b6d876edeed19295640c2acc0852573a89f356ff43f0098439c81800dba4af9c666fd865790e73801ca4e010c12e65495cedfeb6669f7fc149b3b4e6da63b91ecd11bd8dabdd8fa15b2c885a1522a674e34aca1bdc9f5fd3551d0e20a49541d59b653d6a84a2e73289ba8506c1226d60a8c5aa3da866d1f88b75451a893a1e4d456712bfc53aac071dcaad92cfdce420d177a3405a7d89650c29a9040f6517cfdd93a10a6d7e40ce5cb131f0b1569d5a76fb6d51500dcb096d40faa5c04f7220b16f92e465a0de6e3f952e98a55250f02c9bee794825b9d2214f08839e65dd0a3a33af28258e53888926a18cf9168c24a6cece5932e7e114a1351949bead203b8a7912d5c6a5f2e00772ea18fca970e6d02b8113198ead9c36a73b2fe4d12cea0469cb28cbbe45f31e99608e18eca6ad113d12e2ef89e1f5ba3a6eca32288b1be7f951670c7d44f1017dd6f757fab16740c3c3622735a2d8ae90f0bdeca0c4c8e7ef203e2a08868f3755c21fa2fadd4121531344127022f046b34e1ad1c9066afc744fe1bfa5dbfa8c0ffef4ac6fe9960f06b4defad72ecf6efc39204a95f3d27aaf967d43543cf0b3e3dcc932bfdf6234f852b4817e6c21d0289445ace8c7749e314a8256e81c2a82cc414ab60948b1a9a60dab4b86e694689e4d160f2ed1c39971b27171bc7fd1928aa80404433eddad382f92e672c1b92578be6494bc13694be1c165bcbfddc4228957afceb5c867b85bd11c00d50e9c5722907f56dee6f3c45445be0283512aa65b0214ae2927823e941eae8ebfc215cf34e9b14bfc29645e2a63548f022deb49becdf344f1362890c1b3c39123e172c5092bc329a525d3386bea40c6a22d0bf8a8865387496126e63406d163a1f02944418fd8373afd863334ea510534e115e7f4999b4f4a4314ba43955a743a678d211b61b8a1e8619550bcb90816f18845989d80e9994b0ffc1c02236bc8651d5a1a520578df7368ac97715a8d88812944b4d97dfb57959722460388cd39d1d5e06a125653062ea6351943cff52fb7f6350538b80cdea1f3f2370385e87b9ec1aa6916174c4487036787ad62183706cf88b2b9eba7cff2a5a0eca6c1577fa2ed872c7f333e0e18e6479e8ae7060b7dad0a78ba89248c8db0412f251181ee6054c1e67ec4e5f3536610a8acb4cc03e8b06c378c294af6d58acbd8a5ba5629617b90b0fbf01b158d487d2d76d889268feabec421b222e30ab3fbd8cbe6be9ab2dad2b67e1c871d1ee7de65eb160b674262a57a6942e24e1a4210658183eba1dda62dab40c9811e34416ccb9bf977e1a3c5dbb51f0b1cd6d7e855cde268bcfd361a646b2cf65f5e7c6ae0f18001ca16a97ca11c60fbda5146e5574409d06d24a0892a0bde605f5ff0fc84354a2fcd38abe7a9da7049d8fdc966aebaa213cc8bd9e73b1773b6efbc51110865fe1c4464998d682ee08942f48dc01b376edfd42d6223c7dba44a9e5833d1484626072272915ce7f552e92e78d5552919adec3c5508c2084cdfca99228dee9e7e01f7fad976e2dcaced6c82c04f05aad40c7bf04ce6cbfb6f76ccf77cecaadf70f5bed8aa5e202c3dfc23c02174ae385d455d3fcc95df4d5ce5677c9c4e644d5a0384d33db5dbc670e2bb6dda99d1fa53dd7ce86e10eb8f49cb380931ae38a1fbc00b37503dbdbe66d93545b407cde600cf5e9b62c8494dec574b1826e4bed048fe406a96757e19080f8fc935ec05f626a6b3542048f3a678db1f684fb9471c388de7d3bfd3bac2e9dbbde3000c0745d7021b73cb1dc1bf60b91a9df32716819978f7a319d054baf47d2f2739c1ada3c52e228c45c648f3798915259e6ce30d737fe40cc33bb5883e2a2b65a5c97b8bfb4b83e1a8b145b8e3e47f9bf625cb4267268ed30565cf6f908c88a60dc709176fe5b61e32ec48db47a9746b507a7f43566e1a7decacf3e48a40c97c44f57a102df4aadc13a1ef52892a3ff39e59e9cf7cfca6165f09976171db6929b8c523164569c210c924392048b924a6940652b288cc4a40f49ee4b0cf5048e8ac88202582694c27ebd99f0498b07e15df6246444f180cb77936e69d41e6d1ea4a34a2177dd462d1ae229d4f26f07ff46cd673449e5066220c32a2ee1b6b19574b274ce19236b60154ba033a5060b6438f4d4e1508268d8d0a66d6bc465982a2652cb10c107fc676709d3ad2dbbd45c6761c224efe4f83b8a82524fbdedccfb1b47d5ac7d0de640e54068fc1cad6f115baed2e563506d2acdea6b7448263a62b929537f5fd0ae4a5201d5e62fc9e68280df3384ffe146de950c48b2343bab91a901988b1ed8ea9df2c336b404a6fa82010858bc6636ea4c179cd170cdf346a96a79c42ca8f2689d85e698309ab4f67e475a5e0c8bea103e65f885b109b1d9829ff01d36f8ff3e0af6967943ecd2d084bdeb46c808ab9f88d8b6a8305b5a4f42950ec953ec67acaccc0b556f2dbf43f00e2d57172cb81c4f45017af7f0889b981776dacda2c471832d3c82e359453f968f547c00831c5372f48ca9ed8f9be4389311c663522e6ac7d71c3dd048a8206e639f3dcbeb5956c33936da13711310b544d55c5cbedca0feeba63e6f8f334411c84695905046447705cd7ddf69e486475d78c2b342c00d55c18e9345c976196b3d2c4a15ecfa08a20ab0364e20ba311416ca4564a453294854d50cbd279d126e0fb3d0daf277d3dafe419167b9568289eb74f9d132af205c50b518444b11b579d05332d28bd00811e1a7182e436fc5403f0aae620e85ffee1dbcbb09f654fd89509e814d23319c31458ebf130bd31ce9c22cc00d512072dca567e499b2e533372329eb10064f353bfe2fd37be568a73e3687816c36bf3f8f5843d333a88ad81be636a1353950c2e22ebee07ea2b8d295061e7917789aeea9d1b5ecf4f7f9263d55d67d5f02ea35969fdb6a82def84fa43135c46fb9b1a06e744b80d85df2d235a23058802b6e8759a336e06a4d81594abba3c2f9affda78eac173d12c414a6647715c433f532d43bdae6325c8217765b5a152a5765baec0b285a5a6831dab84ebfc0efa475872d60f3fd68be45ee8db5fc3cc9f07c757bafa0d3eefdbca887ba284dd0a9293a0fbda15fc53fdecc2948efa68547ab69954313a26f9f7782ebaab3741322350b8b94a8b77d2c70b0b4e804cd272f3664aede252a57caccdad2c9196d491ba6cc9212805d07c0d4f09c3473c38ecadca31df2f6c854f4fb9fec1c09f36a3310fdf01a989fcfc3085d3fe001cc1417828f3c637f1a8ae74d0855228f7589b2ed9d271bfd0afa35700350019bca855412ac67732011e0329b0eefb750bfd6c95d836ccad627456c4acb763239ff0870043d35f9d07aaa7b78ecd8fa8aad02ab32d8e2a0ced0d5804de487890142ec3ec4342752f8ec51a2721bf7b4a314bfc4c97284f6c6e8f9b95311ef62c9e648ceada0e95374c1561c4735360ef1532afcca6b55975ed60b45005d1b15772d6b689c3a7a20de22a808937d3c6ceea64c21a733a187bd9fc26c94288f43c85517358d882a72f715a759dabdcfa1fc8a88d7a641ecc430d20a3623874147104be2a3a428d7995e992f19164279497af17689fa2348f81eeae75b3b68defab457fa89703d173fdd91e21d56e26f95d5de00f5aae3618cf8e5d00b3d7e9f86435001acb51729a13462a45eb759b11e8a3a597387dc51491bb8617561e1a49477a70207b16f406535f234ab0e2bf718d4a69f9f6c77da9c9ce0c3ca5878601b5665ee02f285d7989c7d800abcdb7bfc9685e164bfbf8f34666fb3013f89f25441af4582bdbfe4137d5ca39202c822965c4c99c75e5e098dbcbabcef3b1ed74a6307ad35d439033c073e874c2be1ce2acc0b88364034ba7724d08112bb7ba2012cd3ff2b71785ba2c589a882bfbdc8521872370e75c5c26a7f3727725ff745f1eedf18cd8e8adfb4c4a1e038846b420c68972bfc316a6ce3619d54c49739182551882a0ff9cfa9113034f61e165184f1304ed8f8b1a35a19a84c529782939f7fd4db5a963ffbab3c75053b377fbc57bd12dd3fbd7a78e721b0c6e75120c97cb2951120f1ca4f16a9fb9dd21f3a0bbf555db943c9c914497c08362e37db3a8abb90c31b03910c3be9feb6da9ee62480fa70b5234e14930981adec95ad16d9785e2555bac9e54c44cb276ac220a2eaffe70aad67051a2aa7b8bb70eb9110265476a3c467eab2d4b62b26efcc480ed161fe831e9ead1765b6c68678a2c7cd938c39409fd468aa8bd3f11c2bcec6266f9667d5054e6d6cb1b50f7f42069de7be18be7a9a332d80ccd4df2089a8636fc463ee0156a5842e9964bf1c5ed932233c5e1b69ff8bfcd8f749ad2753d39aba399401a37e66938a16f35387ad51bd5de670e7fa31616a39ba07c1e8d2c5844ccbd3d54baac735d11a505457c4d8378b7b86116736dedfd85b3edb30f5640f50ac4f3cadfb83476d76c4f676ad3f124e57f0dbaf046815a27bf9a7d26695fea3737cf087006312dd52ae127853dcb3c867406629109e2d40e1c3697c3aafa36bf3802ee0919a066cb2d459cb2e63a6511dbcc0bd432a04181f5fabb101305b298ca232841e1c61a4a1b702b019e83a841832dbeeddbb6f2f1995c2b3f218a0329f536ba9624b5abc22a05476bba6a61de07c4959608db220d82c8a2d8419234b9e0f6a1566ff30ddc200e2313206fc02e185fe297fb5ebf10ee8c078b9dc6fd5a74b96d37ba3bcd26293af7c86505ed83d903696f7df00d85498309043e65eb04ada8b3c62f0f36d2bc20bd32d8adfec149e0984678be5cc95c3cc8d74f3616aa18d3be44217d4ccb740f96ec68bf8e710f8a1f75091917b507a334dc54acd8f1724bff9bfb153ae6120cc2ca0d8281d5db03c5b6940a31a4bb105fc284e7281750ca98e55d08ab4ddc60bf9493ecef3f5224d5a9fbd967af80ec5c7bc1ef55dc9d2e53876522096543f85d498ecbbc67bf876b74c032ce1bb29aaedaf37abd85239c3a1b216ec408996d42ff81e4b32b0ba62a87ed680f0a66f231b4d94fe6cc700376e2f4487ac3a348b1ad9b2d19387115ef97baea23ed9d4dd1d32425db1fe39d8180d7a04efcba5e09272261da3efebdb4ad26e36e33753ac2de6caeb797a6601f8c84ceded75595b877eeee7e59e2c8e0c57c66b815ecca4f82874c2fd4c3346750d37eeecfa68a3dae7d86568301895b72185fe688d83d03b370a8d9dfdc71e41e6684cdd6104e55ff145b3acb485fd2bbfcdd8099c55b8a41aa74b959d575e001dbf29992ebbac2e46ec9831cb5b93c5d9d13e4ba37697c2cf7768b5c8cc5098b36d41c855b7438c62cc38d1b278032e4114702c2c225151393ba1b8465990680bfb426f0c9333f3dc66c08828d9d9aedf6bab9aa199611eeaf7d1fe9cbdd4e4539de06c04a97d442f98299a5a6d0b3b900f3d3efde518d51d47be8afb76a1bbb791d01a08953754fdadc3ad36ae716a3aeada5c63775c91d0faee5fe024c955d934c667390e118189912a72d6a6e502b836e3ad88e5b87c7dacb6f4e619586b69aad976bfd391b0b025f9753c88468631c7a31781ca59f5b874708d3a281c61255b6568d25db7d992f97febfc2e207346cedb7fe37821f1798f331b66fde4c6388f73688f54cd8f25a2c38766c53c48d0f6fca3c43d34a846bfc334116b0a5819daeedefcafe4f73864519359c2fbcafd11012a5f82b9a3e64faef074d675091d7d1a859a822118e3c8632f61c8559f7c41e5172ed3df2684192521a6de5656c75bcbae65301b4cbde6452b88baa02bd0bb3e9eca87f302508b63c58f58b438e47b38dca84d2783214d5087e2001d15a92f62765067138893e7a80428ad3c95ccc614b3e42dcaa35000d20201cb0c48e18b2898acbd8d34690cdb0c0cf74654301389a3d306ec0c6ae78bad5cf8087ee118a1f83159518cb63bcd13c541f9a231203174e4c09cab8f94141bccba3266aef3323b4cee7d2aeaf55236d71f9976b13ffcee890358c5cb634be1", + "envelope_header": "6167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392049417861374664446e6836324d526b444b6a46375a7856543871326a4c5a6c5545384f5955654b31726b6b0a4b4e303753547769492f644865395861644833325a664674674e67584a532b3637752b50466b57646c466f0a2d2d2d2071796b634a7476302b3376324b646d2f437a535631784a4d704e5a582f49776e446c62526d3630767861670a", + "host": "d3b9b166a9b2b304971bf45a4e02d185ecc0b1d0920d6b67914e5651c823a2f6dca4595cb1a87480253a442ba86bd32fa6296b5a76723ead55a8f5484eec66d3cae15537801eb8b919370232e1bc423a6c14ea1b918ce4421e103913e6e72b49d6200421c6a6a95a0e48e029a691ca4137ce54e66ccd9a2bf257d9f24e3a57d5ada874b85b3961e0eac4384c62366bda9d0abcd8dc3bcc53fc63bdba5a64b4f3220f4a82afacfbd21259e5caaa17246ac90c8f30fd046dd99c7a89cf1f57a1c299f35da6c97cf3f5b91dda9230670762f366f9f0fb408ddf2d2c285ddf89e678f8a9489f88b5968af5cec162bc1197dc183cdd11c04684d1fa06d5ffd8d96986fe94ded9a4a54dba13ef82da01fac5b9a2795a738f966242849a81fd47a9df1dbed7781fd1171194282539fc9877a6a36a5a0a097eae7003b30a8778c90a6e675cc961c83ae203cef7ba380b4dbf6fb9a53faac2694b4486f319fa4560c5a4099db0c98bc095cc59d3beb2f2c9cd14e935674494128b2912b310c437a7b58e3cebfdee72eb0c70428936c1a0c959fa2ff33efd6559167538ce22e9e949c122330a9d038073b6cfc7e38bddcb8bf91b62ee79772c7886058e2d949c29327433cdeba1c79aa951b049c0908f1d33e2669b93f810455a921f1cfe0a0ed591da7d0059ce518b10a111ba85814c1b6bc674d25443604c171626f1781aaf8b9bb5f11abffbc2ec6c3061c7e6d52b7a4039ca43e341f33a2aad5c2452fd1f02e24ede2f4c4829f8c5a0194a7f67660eaad4ba2340976596218662e03dcafad12f67c544b6b35e285fd4b2ea02e08702ff1dde2058c9f3cd87a18939fa316327584bb82c891aa44b135ed843286d4eccbbaa3b032b677022328380cc246feb9ddcae8789e1e00e1f1fa2cbf5d5b704f7af8e2c3a82430dad07f9f472b2a017e6f460c2b326f090d18601eecc9b1b513a6024e3103b1e316d66aa315b73974051a4415cd7ae35f4128b9866638529c59a2c123bdbb9c5da7aeb40618052c1c2d983cca3a61e2c44e4c59a2e86fd1a17395522ee77ba4e88fa9c29b91e7bf569c06a762ad074a852244ffb4f4fd2d80ff6cc6a16077d8cebb2463c95e3eed915cce30dece6486ea72a2786a25de419a8dce67d8b59b92cd83609af6d45b20fdcb6dd793a1d5f8041cd718a18c145443aa67b5370ad48007d0b5f91daa6e34be851ef02baa81a873ec50949ad11db4665c3e822e94eafce39c204c4a3215958bfe90471fe509f8f66caaeb6e3024b72d4c78925e044acd6e069b173ccdd9409decb6b99d03b889e1959a5f7e63c9e62e7fb33b811e2c1c59407345030481ec0d4783bce6d7bcffb085da831842a04cfa871850f61ffc0fabbc0b40cfac70c5b6203dc09e7e5cc1e6b2a628e22db3444c57edbc00d413b53075ef2a73908dcd92d9240e3163bbd7c1ea40a084570b9968ef9d961e9c3c7b6e18c4435059750b987148911ab80e02938f3d64829e91d8ec8f4bdeb141108a877eba448738f656fe6c6b14f37bc4218678c2b40d229b4c4c2ae44b8d514f73daa3398ac6000be2583af541bc4529d161d6706da9d1f0d349bcfb4ff89b55a509363c54a95635c6ff94e9c7091faa96eeb891a8efadd54b2e235219088e0e1eeb55e3917ea312102a74baafd2124d5e3a2dab587fbd0d9e2167526ebc800d49ffa05bff6ff5677226d85eb4d1f21279806b3d254e277eb322e16514f2528b48f1b5d6d7da4c3fbeba0377238bb6c7bb12ed444c94df49879de1c2f2b13ba08578b81e3d08d92f2a772b02eb2259a307e7d97757f22c079db4b32e06e71df15b0502de748580f68ca7e89f6eca6955e6ae73554614396e9386073eac4ddda9a4dc6b9c07f2a597abc3a3f5d9c480d0774548bfa1d21b51b3b7b82e4938375c879bb2eeba02db7d027ebdd9f411ac012023b320da8bd69f601d0c7649696e2ec8d77f6449ed50ce03c2e09970f71b88193d02bf066b9737929928f208a25da5b102733e453b406e2b1bf6bca3a61ab6b6617077db9cae417a139da15fb44039af66e45c1ec284450e3f7869f62d510727c94a4e33ef75be901a2e4baecf61fd65180cd9ab588f62253f176c6d32ed48ab91e00720e761944ce735771ff83c7d7d6ae2b6d96db8c08c3bed240c1d7394a73635cc1fa352c22aad357ec8355a969ab07cc08a99106ec0879e9af70ca3c4affa1bc2fb0477046ceb3f7db8407cd05d7ef5264842769b09075f6aca28c7539f754f2ab43d8ac966547e199b27d458baa39df20e32f1c609eee59291778c3c6d85de8b18d7cf92fbfdefe76c1bb8b612c61be39c3c301c8d19ad5de56e749ec44dd94773388d7fa8b50cf75bcdb59ce97c0b87f6f23949f60c97ed889b81731d6ae155574ce2e71521e6c05fd994dde4e984340de4b71d875c1e6fdad9b46307c2a350fb3df9e03a8d2f596591c1681caa54dd07752519f79acedff294348a920ff4dd925fa8c27cf0477a4934d4201f51871fef4378cc76dcfaa985062ce2a53c031896ff649dd8aa69b6f6eb76e70647599f424744483837e97e6a302128200c304b4d7a8058495cd5434afd3f58eca2014be54c072c7041c510a8e105906a90ba1898d46a0b0d1f211b5c576435e47626d9deb4ebad549a102990059125474e4a7393e35aba91b38d00cb44ee06318f64199c3506fc53b209504b76b73181a4d2b4d298e04f5764e13b3a992300efb3caf2794b5a54637f316a603f0b50aaf478bb3ceff2ac3a77e309a7592a498eb9577eb8d7ccb989513f628f478415901dd02a072bd437257098c4c9cc8e67c1837ef13c38c49f791261c487391463886c815cb37f173176d8bb41b9c80a215545f84d28a77a58c3211d0a7324a06b9eeb2576eaeca7761efe1c3235b14190f6e34eef87bf857130f65d2764c703cce9883dfc3a8d8c90c99f4ee765f68263b073d26bb585cd2de50c8c98ab9605f91e95a820b82051b95dfcfad1ec4f26df443417c7c0727890e79d3e14203dab694f1fdc1e29e020173efd3dac567c0fa67890118ba630fd212e4a8bf1688d1e622e392c784e2d36ba887777a2df13ae43555cb71d9591cadd5c5b77b3e93f12f03ab91d1946d11b532385bc0eeb79d323f9bf263ba04e5d74b66b95316e07eb73f2196f4f9bba906b59306098cc85cc7958c8d240538668a5a49c480a3f4ce8ff05aa19b6f1b96816a94004314e7a021fabec880ff79a7366be4df988206cce768d0c222ff50737069137524acdf02ffe2be4dfb7e5ede03c0a011f8ce1a9952184154fdab1bb9767f715089897294a2db972899e56b270698cd8c6e3abd4432c9a7b05e2bf1980ed3b9fc5e3e4e446668467b4cc418276533791a569305bb33feab43a85a81cb743de78baf5f5ed8206db1a9db4af041c599caed6cfa9d2a6bc6101e8346ff65b861547487de89bdf6d67f6b21ef79e124d2a544721a8f545a658e7c9c0010d0b926912488b101c9e975f878d9fec63b7abe2998a11f12b9a76f35fd727e732954e15881217bf9b9539c1a5f85494d9e7fd43ce04350deda64793fcec67bf2f5250a2710b33689e135159fc339ee75ed2cb0c756f862c9aae981ed78b1cae302a96414a44e90c7b6a59311ab62508d614560e4534dd7e49dd3f8f010e5186a916853fba9dbc0f1f67cdda894de813250f80e49c1419871e6b77c20c13dbf8ea78c05f25c7ffb6918fd99e0eb3e406a0e99a44ad5121dd88977be14dc883b2e955a050c34ca9bda58205924aa7ec2659b374e9db003466710da6bc5d854646573e26e6dd3a30773cbca9c3e4013fe63e3b754bf72d48d0a0772082241db5442b557ddab94f0372d8753df7c45f58e6ea8227954e6e2842efb44b51da6ebfde2ebd0ca97fae3981280b370f2e298006559e4dd264be171da97e5b1d673c30d5ddb17c76fdd894710658f58583a7ce27cc04dbf3b3de8723df896c0c70c04a1f3397ebae43441b81290e52263beed66030d163b6efe5523fccec4d8cf5bb0f108bfb5cdb482fe0b381c0c2b93ae336957ff08408ec19d90a37fa97b175e8caa459d26cf689e3ee704e1ac0dddda1c91417ffe6ae2ffb4a85be359cb18244ec750d542e7afe343ea999d4ea882da7731d60766f81902b768d281ee47ee0cbc302ba28eea2ed34fe4bd4121f85f7918adc92b3fd67e749340787e17359ab3db802fb14e4c2897a2f2e30c40823a3b3bcd110ad78a2689c9bc0a0d9773da3d14f6ff6f14f730dd4a5462e5a47597997bbc6b96bff60fe1a55e2ba4089545184c0b0a973847130fc1324aa7dcdd29896f185fdd77b4800ef385de9d6a6259401f342400c314fc223a1bcbecded2dc7d0b7e34e0fd4c6d2c4d76a36a18cdd0b3f25e98707ed0c1c36859a635b5a09807fbb62edab178e17e42fb4fc7d415d0efde0e643b1cca0e10e05ae67fc93224aaa6287e068d12132f6c26ed78f756d566f83c833413cf9be11b74fabd3bbcfc5a09c346c656149b35ada313d71103862466e18abfece1b5de30d7d2da04ccbd68933cbffdfa3ef38317d0499bf04924582dc6f54edeef6b39df149eb3f386a602a812a01b998c2d54745feca7647c7ab6aba562dce1ce38aa499cad7c2c31bac32c5f2ccf512eb1bdfecc2949e44e9e8e0d718a9f11eb7d8226f8f6a0ca8d2ba55f76f5f52585aba2040797e4936af23bd8409dac6c2a9e72a25fd656889d2f85cb1ca61b4bc97eb4400c63a868af10fe6e0bba88260ec6f9631b6cf1f43c321e5a8507f2c9388173e113573737513dafc8b169bae1d3ad447e1f63d318d33f7c6a36008598aaf236f4cecb705e8925a140a53f4c935a269788b80c55d97571d2526f9fe7e1e88e3d76a2b9820f8ca6e590daec76c9e1d94b1e0e7d87f1160e3be70c3544e5620131fe3cde24da788b4f8e6c466a1525369829d563c21e6f38ea9ef40ee3a31a44bd11f48824dd6019c590ded7f60cde7d61dd36c122f187252f5af081090f14557ca930d061799beb24c67fbefcce03f21440f5d8631bac2419a5b3f56bd1bde054a8096bf16cfe0885d0ef33dc56fcfb951a371eaff0d5cf6e099e512d0d6e16afe5b753bfcb85e325262e2faf6e843478a060a64b5adf2c6038688c37e7e3a8a0bed370b3f8d847e77543413aed6cbec13ac64d6f751d18a3a805ef6741594111b068012a10e5ae943b821069c48efb76c9e9a57e6cfac6a1cf9bef28478d40cd259831aec9d088a2eb5c65ef2361df3e9f657dcd258af93d0780a0be390ebc532ffb45e5999c028f3e762849f9e20e9ecba400539c24ee9fcf5175868b6d876edeed19295640c2acc0852573a89f356ff43f0098439c81800dba4af9c666fd865790e73801ca4e010c12e65495cedfeb6669f7fc149b3b4e6da63b91ecd11bd8dabdd8fa15b2c885a1522a674e34aca1bdc9f5fd3551d0e20a49541d59b653d6a84a2e73289ba8506c1226d60a8c5aa3da866d1f88b75451a893a1e4d456712bfc53aac071dcaad92cfdce420d177a3405a7d89650c29a9040f6517cfdd93a10a6d7e40ce5cb131f0b1569d5a76fb6d51500dcb096d40faa5c04f7220b16f92e465a0de6e3f952e98a55250f02c9bee794825b9d2214f08839e65dd0a3a33af28258e53888926a18cf9168c24a6cece5932e7e114a1351949bead203b8a7912d5c6a5f2e00772ea18fca970e6d02b8113198ead9c36a73b2fe4d12cea0469cb28cbbe45f31e99608e18eca6ad113d12e2ef89e1f5ba3a6eca32288b1be7f951670c7d44f1017dd6f757fab16740c3c3622735a2d8ae90f0bdeca0c4c8e7ef203e2a08868f3755c21fa2fadd4121531344127022f046b34e1ad1c9066afc744fe1bfa5dbfa8c0ffef4ac6fe9960f06b4defad72ecf6efc39204a95f3d27aaf967d43543cf0b3e3dcc932bfdf6234f852b4817e6c21d0289445ace8c7749e314a8256e81c2a82cc414ab60948b1a9a60dab4b86e694689e4d160f2ed1c39971b27171bc7fd1928aa80404433eddad382f92e672c1b92578be6494bc13694be1c165bcbfddc4228957afceb5c867b85bd11c00d50e9c5722907f56dee6f3c45445be0283512aa65b0214ae2927823e941eae8ebfc215cf34e9b14bfc29645e2a63548f022deb49becdf344f1362890c1b3c39123e172c5092bc329a525d3386bea40c6a22d0bf8a8865387496126e63406d163a1f02944418fd8373afd863334ea510534e115e7f4999b4f4a4314ba43955a743a678d211b61b8a1e8619550bcb90816f18845989d80e9994b0ffc1c02236bc8651d5a1a520578df7368ac97715a8d88812944b4d97dfb57959722460388cd39d1d5e06a125653062ea6351943cff52fb7f6350538b80cdea1f3f2370385e87b9ec1aa6916174c4487036787ad62183706cf88b2b9eba7cff2a5a0eca6c1577fa2ed872c7f333e0e18e6479e8ae7060b7dad0a78ba89248c8db0412f251181ee6054c1e67ec4e5f3536610a8acb4cc03e8b06c378c294af6d58acbd8a5ba5629617b90b0fbf01b158d487d2d76d889268feabec421b222e30ab3fbd8cbe6be9ab2dad2b67e1c871d1ee7de65eb160b674262a57a6942e24e1a4210658183eba1dda62dab40c9811e34416ccb9bf977e1a3c5dbb51f0b1cd6d7e855cde268bcfd361a646b2cf65f5e7c6ae0f18001ca16a97ca11c60fbda5146e5574409d06d24a0892a0bde605f5ff0fc84354a2fcd38abe7a9da7049d8fdc966aebaa213cc8bd9e73b1773b6efbc51110865fe1c4464998d682ee08942f48dc01b376edfd42d6223c7dba44a9e5833d1484626072272915ce7f552e92e78d5552919adec3c5508c2084cdfca99228dee9e7e01f7fad976e2dcaced6c82c04f05aad40c7bf04ce6cbfb6f76ccf77cecaadf70f5bed8aa5e202c3dfc23c02174ae385d455d3fcc95df4d5ce5677c9c4e644d5a0384d33db5dbc670e2bb6dda99d1fa53dd7ce86e10eb8f49cb380931ae38a1fbc00b37503dbdbe66d93545b407cde600cf5e9b62c8494dec574b1826e4bed048fe406a96757e19080f8fc935ec05f626a6b3542048f3a678db1f684fb9471c388de7d3bfd3bac2e9dbbde3000c0745d7021b73cb1dc1bf60b91a9df32716819978f7a319d054baf47d2f2739c1ada3c52e228c45c648f3798915259e6ce30d737fe40cc33bb5883e2a2b65a5c97b8bfb4b83e1a8b145b8e3e47f9bf625cb4267268ed30565cf6f908c88a60dc709176fe5b61e32ec48db47a9746b507a7f43566e1a7decacf3e48a40c97c44f57a102df4aadc13a1ef52892a3ff39e59e9cf7cfca6165f09976171db6929b8c523164569c210c924392048b924a6940652b288cc4a40f49ee4b0cf5048e8ac88202582694c27ebd99f0498b07e15df6246444f180cb77936e69d41e6d1ea4a34a2177dd462d1ae229d4f26f07ff46cd673449e5066220c32a2ee1b6b19574b274ce19236b60154ba033a5060b6438f4d4e1508268d8d0a66d6bc465982a2652cb10c107fc676709d3ad2dbbd45c6761c224efe4f83b8a82524fbdedccfb1b47d5ac7d0de640e54068fc1cad6f115baed2e563506d2acdea6b7448263a62b929537f5fd0ae4a5201d5e62fc9e68280df3384ffe146de950c48b2343bab91a901988b1ed8ea9df2c336b404a6fa82010858bc6636ea4c179cd170cdf346a96a79c42ca8f2689d85e698309ab4f67e475a5e0c8bea103e65f885b109b1d9829ff01d36f8ff3e0af6967943ecd2d084bdeb46c808ab9f88d8b6a8305b5a4f42950ec953ec67acaccc0b556f2dbf43f00e2d57172cb81c4f45017af7f0889b981776dacda2c471832d3c82e359453f968f547c00831c5372f48ca9ed8f9be4389311c663522e6ac7d71c3dd048a8206e639f3dcbeb5956c33936da13711310b544d55c5cbedca0feeba63e6f8f334411c84695905046447705cd7ddf69e486475d78c2b342c00d55c18e9345c976196b3d2c4a15ecfa08a20ab0364e20ba311416ca4564a453294854d50cbd279d126e0fb3d0daf277d3dafe419167b9568289eb74f9d132af205c50b518444b11b579d05332d28bd00811e1a7182e436fc5403f0aae620e85ffee1dbcbb09f654fd89509e814d23319c31458ebf130bd31ce9c22cc00d512072dca567e499b2e533372329eb10064f353bfe2fd37be568a73e3687816c36bf3f8f5843d333a88ad81be636a1353950c2e22ebee07ea2b8d295061e7917789aeea9d1b5ecf4f7f9263d55d67d5f02ea35969fdb6a82def84fa43135c46fb9b1a06e744b80d85df2d235a23058802b6e8759a336e06a4d81594abba3c2f9affda78eac173d12c414a6647715c433f532d43bdae6325c8217765b5a152a5765baec0b285a5a6831dab84ebfc0efa475872d60f3fd68be45ee8db5fc3cc9f07c757bafa0d3eefdbca887ba284dd0a9293a0fbda15fc53fdecc2948efa68547ab69954313a26f9f7782ebaab3741322350b8b94a8b77d2c70b0b4e804cd272f3664aede252a57caccdad2c9196d491ba6cc9212805d07c0d4f09c3473c38ecadca31df2f6c854f4fb9fec1c09f36a3310fdf01a989fcfc3085d3fe001cc1417828f3c637f1a8ae74d0855228f7589b2ed9d271bfd0afa35700350019bca855412ac67732011e0329b0eefb750bfd6c95d836ccad627456c4acb763239ff0870043d35f9d07aaa7b78ecd8fa8aad02ab32d8e2a0ced0d5804de487890142ec3ec4342752f8ec51a2721bf7b4a314bfc4c97284f6c6e8f9b95311ef62c9e648ceada0e95374c1561c4735360ef1532afcca6b55975ed60b45005d1b15772d6b689c3a7a20de22a808937d3c6ceea64c21a733a187bd9fc26c94288f43c85517358d882a72f715a759dabdcfa1fc8a88d7a641ecc430d20a3623874147104be2a3a428d7995e992f19164279497af17689fa2348f81eeae75b3b68defab457fa89703d173fdd91e21d56e26f95d5de00f5aae3618cf8e5d00b3d7e9f86435001acb51729a13462a45eb759b11e8a3a597387dc51491bb8617561e1a49477a70207b16f406535f234ab0e2bf718d4a69f9f6c77da9c9ce0c3ca5878601b5665ee02f285d7989c7d800abcdb7bfc9685e164bfbf8f34666fb3013f89f25441af4582bdbfe4137d5ca39202c822965c4c99c75e5e098dbcbabcef3b1ed74a6307ad35d439033c073e874c2be1ce2acc0b88364034ba7724d08112bb7ba2012cd3ff2b71785ba2c589a882bfbdc8521872370e75c5c26a7f3727725ff745f1eedf18cd8e8adfb4c4a1e038846b420c68972bfc316a6ce3619d54c49739182551882a0ff9cfa9113034f61e165184f1304ed8f8b1a35a19a84c529782939f7fd4db5a963ffbab3c75053b377fbc57bd12dd3fbd7a78e721b0c6e75120c97cb2951120f1ca4f16a9fb9dd21f3a0bbf555db943c9c914497c08362e37db3a8abb90c31b03910c3be9feb6da9ee62480fa70b5234e14930981adec95ad16d9785e2555bac9e54c44cb276ac220a2eaffe70aad67051a2aa7b8bb70eb9110265476a3c467eab2d4b62b26efcc480ed161fe831e9ead1765b6c68678a2c7cd938c39409fd468aa8bd3f11c2bcec6266f9667d5054e6d6cb1b50f7f42069de7be18be7a9a332d80ccd4df2089a8636fc463ee0156a5842e9964bf1c5ed932233c5e1b69ff8bfcd8f749ad2753d39aba399401a37e66938a16f35387ad51bd5de670e7fa31616a39ba07c1e8d2c5844ccbd3d54baac735d11a505457c4d8378b7b86116736dedfd85b3edb30f5640f50ac4f3cadfb83476d76c4f676ad3f124e57f0dbaf046815a27bf9a7d26695fea3737cf087006312dd52ae127853dcb3c867406629109e2d40e1c3697c3aafa36bf3802ee0919a066cb2d459cb2e63a6511dbcc0bd432a04181f5fabb101305b298ca232841e1c61a4a1b702b019e83a841832dbeeddbb6f2f1995c2b3f218a0329f536ba9624b5abc22a05476bba6a61de07c4959608db220d82c8a2d8419234b9e0f6a1566ff30ddc200e2313206fc02e185fe297fb5ebf10ee8c078b9dc6fd5a74b96d37ba3bcd26293af7c86505ed83d903696f7df00d85498309043e65eb04ada8b3c62f0f36d2bc20bd32d8adfec149e0984678be5cc95c3cc8d74f3616aa18d3be44217d4ccb740f96ec68bf8e710f8a1f75091917b507a334dc54acd8f1724bff9bfb153ae6120cc2ca0d8281d5db03c5b6940a31a4bb105fc284e7281750ca98e55d08ab4ddc60bf9493ecef3f5224d5a9fbd967af80ec5c7bc1ef55dc9d2e53876522096543f85d498ecbbc67bf876b74c032ce1bb29aaedaf37abd85239c3a1b216ec408996d42ff81e4b32b0ba62a87ed680f0a66f231b4d94fe6cc700376e2f4487ac3a348b1ad9b2d19387115ef97baea23ed9d4dd1d32425db1fe39d8180d7a04efcba5e09272261da3efebdb4ad26e36e33753ac2de6caeb797a6601f8c84ceded75595b877eeee7e59e2c8e0c57c66b815ecca4f82874c2fd4c3346750d37eeecfa68a3dae7d86568301895b72185fe688d83d03b370a8d9dfdc71e41e6684cdd6104e55ff145b3acb485fd2bbfcdd8099c55b8a41aa74b959d575e001dbf29992ebbac2e46ec9831cb5b93c5d9d13e4ba37697c2cf7768b5c8cc5098b36d41c855b7438c62cc38d1b278032e4114702c2c225151393ba1b8465990680bfb426f0c9333f3dc66c08828d9d9aedf6bab9aa199611eeaf7d1fe9cbdd4e4539de06c04a97d442f98299a5a6d0b3b900f3d3efde518d51d47be8afb76a1bbb791d01a08953754fdadc3ad36ae716a3aeada5c63775c91d0faee5fe024c955d934c667390e118189912a72d6a6e502b836e3ad88e5b87c7dacb6f4e619586b69aad976bfd391b0b025f9753c88468631c7a31781ca59f5b874708d3a281c61255b6568d25db7d992f97febfc2e207346cedb7fe37821f1798f331b66fde4c6388f73688f54cd8f25a2c38766c53c48d0f6fca3c43d34a846bfc334116b0a5819daeedefcafe4f73864519359c2fbcafd11012a5f82b9a3e64faef074d675091d7d1a859a822118e3c8632f61c8559f7c41e5172ed3df2684192521a6de5656c75bcbae65301b4cbde6452b88baa02bd0bb3e9eca87f302508b63c58f58b438e47b38dca84d2783214d5087e2001d15a92f62765067138893e7a80428ad3c95ccc614b3e42dcaa35000d20201cb0c48e18b2898acbd8d34690cdb0c0cf74654301389a3d306ec0c6ae78bad5cf8087ee118a1f83159518cb63bcd13c541f9a231203174e4c09cab8f94141bccba3266aef3323b4cee7d2aeaf55236d71f9976b13ffcee890358c5cb634be1", + "host_offset": 3000, + "locator_plaintext": "a70082a200781c68747470733a2f2f656a656d706c6f2e6f72672f666f746f2e6a706701190bb8a1007842697066733a2f2f62616679626569676479727a74357366703775646d37687537367568377932366e6633656675796c71616266336f636c67747179353566627a64690158200ac808598a3da15de6cb7044f8a7ac60a55c2f1a64d7a36d17c79b74579467810258a86167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392049417861374664446e6836324d526b444b6a46375a7856543871326a4c5a6c5545384f5955654b31726b6b0a4b4e303753547769492f644865395861644833325a664674674e67584a532b3637752b50466b57646c466f0a2d2d2d2071796b634a7476302b3376324b646d2f437a535631784a4d704e5a582f49776e446c62526d3630767861670a035820a62604fb56d89d37627c9070de21dd62ae22ce26fe28ae01a6b5ed782fd543a8041913a8055820da2c0d2b02e604e0741faa44d90abebe7dcf83dc376addbca1d46782c89ed9cd06590e7700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "locator_sealed": "6167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6b4e67484f775a434135654b516832444c516c55753949464d7869654f702f784f61457a734f5161535333782f65523734586c6470696b64643730616c6c712b0a416e343454377876385334456f65796965526f4f6d5a43376a4c396256394469506e564d3046385a5264436d3245576868496548685551726574374b774a444d0a64687a756862494f49353964556e4b6764696566795038505a656b7a6b43527758596862456f67485957770a2d2d2d2059337534684437433451557a34507378436a5951514e42526a64746a7a6834656b544e4c726f6c78426e590a65ea20b4bbc9da9f24a8b9f18cc00c6bc50207140801897dc9ce71b8012bc3b126f5510fd01f818d6852f8ddc117a3152a3e760eb634928de17e708f5194f5b20a0a3067e418b57a95df7b2c9cb2de42c603399a1056bfc65f38152bfcd58501b252a5f5b36996eab5b63e8c44fa72b28c60e913caf3579123d5c1b167749830b7adac1c12a9059295725ed717d50f1d0065c111bd9958177408aa585d905a530ba41aadde33da6d9ac5f4976e55894829a955d143a94cb63d8c12b134704c707a9e4b696226a44a9efe4fe156425727d9c9e0f67b79a206581d02c771a0443da59207a4d1a4d40376ea0c8cff8444d41bbfcf228cc2d044ac5e1c834206e036b44cf9fbc8930f146b9cc1ddbea46f173c9ebffe705de2afed9a730c9e702090ba0104641199449b917916e45e7b7365bd8a7cee9f39f728801984b39fced931e6b326a3a30bb17b41697dee57bacf01578d86852efb16a9c0d8ababcbb38c8cca7bcb90d8bcce8cd1b7740360c21ce702c0948ab9747bbbe57042117d9e24f5b46d847d893ab1ba61c6f5e857794219db7f1c620e27e80f040282287fb47894766babc1178356c3918cbccbc4ce29e04315ff80a5f2de8c8cc6e47809ab9e0455406e761219f11ab80f85241e9bc870427d04b1568ea973fb46f57446d3ddfe2a774ebd1afbe82d56cf88df8ee24b34d4f788ba03e4c28eee79726a48140e4f7545253d8a0116b81e876e05530f9efd7754a63242d6a514975235b73e14dbd154d9b44c1a192f134e20b38f90fa5b856853d3a4297dfc48d8b43916cb3eb902d95d6f8a5f45457ad49dae3de83ff8614befc6a351205e66d8f812a528db70b6b53a52be8a4f1f30ecf2486e57cd6c7ce7cdf363328fa058c4b0b03007b89d1cf9257142a7ddd52a7d5ab4aab79a151e62d10835a4c00410968e41c951644a7d2772334a097a997a1b6031fa59376c0e0932cf71312c71c630b53c53d345315f369961260f8ebb92610f9bdce1413c6cb2be47885093f278008f349f3e5df44b925db20c1caa9afdcba837d5a6ca1f4f4b2e83b81bb3e62fb5053ec4fff01ab6f8a39bef140c4f35287ec105dccef8dc7d9f8736ed475f916b3e20767bb4067b9b7624a3ca81a6719662bdaeff3c757e81f8865cbd42dd84b93db2a3bc758e9a0d82c6c88827c5a27ace0c565ce22edf458d9ae008eb69abf74bdf36f883860aabbba9b5912856c9d32fab5c5c2b2b242a64a1f9d0d3ca466207b4553586a242f81c396de605fcb001e2d34e25d1c81bf14f5e31842c071fafdb6d2a0552b57d6eb08843d0b3fd8f7e9807723e3e404ea7e5a0275df61ef6be9cbf4ff74ef5df0184531641084bdf7bc8dcb13085d77581dc3035ae73e59ac1f9289eea23808c7bda710232230e7f2342df1657e3d302bde341b8c52a56cea90dd4727991386670ac765a27573806a738152e5432a7acbb34453c0f438a6359e9b966084a9180c692a3a212b8ad5ddf52286d4768203a2cb2e602812688a696b1b17de688ce5839d6d89252f30f90641f0a730840f2c105ea68518c8dbb74d82dcc5115b2fdba5cd16c146eb0963d2575600e22f87b1f914268583b19602d92e2ec5e76ca338fd1e15a61fa92ccc3475283e291185a23de78ec9064092afa5f2a4cbed83b56c2d75784f4764e8fdd04548a4e1cf849bf4e2bcab8c412767fb8507b4af37aa9873ab0ace2993848acf670727c327367c20defc285f1153e17283daec4ec28164ae028ba1183f23b32c971fb4248809c2cdda32c5fc74aa291665e5bc3703536f5ad60514948deae0e3994a76cb305bf666c9e8b255d0e4de7330613d650faeb8ff3f797e618a8a6f5622c3c9f7d645c4cf94d7aac1494c5260eaa6b4957a5cc5e0096697c8989a87b61b50d7dcb487b4f183578741bcde8df3c2b6602a251703ac8522e1b4a7ecba0a458f7832e1f4abddeff1ea7d8390158778248c81f9aea12c78dd9eccf08c16700d006fe80e3aa92af343dd1f67c46868f6da781b983c6ae567fc2213864b0a89d1da73a1b72f61d6e07d3bc987bf2dcb36a9e981ede9115b7714d52c1514774a631448240333c8e98ea2915ac5d7b2e300df3d7da8ca9d73c3753bfb0999b59cf9ff24a28c976c454d0e878c3422bb32c5bf0aa413a2f2c232df71ccf4f9412bfac58d9186dfb820c47fabb747ae3828600d6409af0ef2baeca226cd435f5eb4316a867e56627ac723380e6e4df463b3065f821129bace999a509ffbc30bc8fbb741f71f4f0aa9ceba9855a75ea9297eec9f834ff3cf6ed44a3712e2724a9a94716ef2a8d4a0225a5a3dd3894848be32f3a7e1bf14605bb0d1a91297e96ada0589171b0aa20666efc9e38965fea23f567d61b96185364cb53a4ca03c7e54b6c47fcc8ff7197a3f777ce01623627dc2d526151e65c408ab742c4c30cd7145a290b00893e9a312cb34c9205315173ab5696fa02be95641c306b5459c7cd9b01a5a93ef55ad0099db0cf081f069a2f7f7984f69574b9a9c7623c32f0f3da774fd0901ddacdd89acfbc27810efbcae4a0706fb8d597a6138404a823533ed6156377fe2b445c6c7819503cf29f5291912d68ecff2a27f0b79e3052a3950ce1c14fefa538cf11992e14ef4bec75fcbcdfeea29100014455309ef600711b6d4ebb43c7de994b3024be852832cbb06e2b67faf9d1c5596d3f719d9b42f9b182945ffffef6d1cfa0c77b1acb6bbaa25ed6d8d8e7416264baa7cea0290ff066e71f44f4fa0eed8ba79bb13b76496666cdac31faf864022e9fd00cb485c54cfe1662a9e773c51c3726464f4f131138ca23b577ce7ca60c5635d3230971a150afa6d9a3dd812783baf22abdd1709db9091a373be04067dad575357085e343349261dbf3fe963a95a3898f2ce34334262bed0fce9ed3c4141b31430bff947b7bbc7233af4a2937361a1bc8a39e978ea76928befced13e78733abdb7585a5e38ba2e164487ec92b23dab673573f6e9bf335fdf466c011380f81822e9f0cfceb27072e08324fd1936feb33bfdd8012af9d31d79be5c7e9c3caf635df1e6d9490943f66cf0d688c84ce8f4e631e22c118d0841446f8e16338f876c7ed3575cf4990c104ec14d2149772079b71e2913193410b81e068e058b71852e80b3425101cdd66436ad475cdd792a67e9244b8cb752893624fe96446c10a3b6cea8c85ce27b54ac8d650dc9a612edde9790b0f8cd859309c35f10e120e70770e931a7198b33f2a0b128d1aa5874cb8ac17b55a3aa2446e0c29d7bc07d341819fb3ac7084ef6fa6c2ccd1f7edc1be590878e8c22ea882b08a8877a7ea16e3bea6ce6a59e45095a90992a6497eb92454a75f24e78ea0c462d28757f0296261f1524027a8cace29dcd2882054c2de59820b37ceb81b4c74574f8e7272fa01771e9f26c2202d017094dcf9ba6dfdc83b6cd58aea5f3ccf5e6e065c1521e55eec06d06ed137e418bf371652eaf02a3f283d55725330edb40a33b02717e8c6bcb437b4aca7f6e1373f8f33f251c15d3f064c3ca5cb4a1696ef0e0dbac3572d760598bd2a9783b1d33e9f19f3dee0b2b4b6218a94a446d1b1bdb3bdb57d70675b434cdf87721bb910bd808e34498ff6566ba84d328afefe95b0ebc3f8a2e0bde53f02c729ed4f5a5151d0ad1aef4b5741808e955f50a3dcaedeb80c3b33494ac2d94b54881349efa1b9b560185bb6039588efcfb8b63c8538f48700f5d592cb08afa2b7cca34a5d3d972faca8553f74f8ded46b3dbb85f92f976dbb59ea59f72606daf1a62e164f37febdf44111a88b19ff1ccd01afb4adf6dc0fe59c2ded959e18e5cfd4ad37398d23e1aa672b67442c5cbc9ac31d3f94dd78976b3b6271e427c7a3d5d0defc4f5dfc7e61a10a6cf460195c551241327e42cb21a4a6bb448175b8bb3210efbb95eb9a69d94b03eb36233aceb58cdb1ddaaba9b4bf0bcfbb252063200f1829f30bf895e652c1062950117cd6f5662ed29c75a162ff60fad395b386337c8a4390bf0a7b4bd86e146404126265bd511909438f1503edcba451286d9a550e86b4a23125819510423af3097d3f786d7e3d6a7309245468eb8be478d7c627425b3b8c46ea2cf2b63169cc7906a4f879b60d5101baaa72b7a5a61fdd00c44bdf2d129d305779909730a9a49854c8f40c87f709c828591d926adaee844e5060ba168fecd5d8a07ca859d96683e61756a83bd2b2c21abca699c0df9a79784f12ce860868ad93d064f0577d6810bc0447e97de386d3df5956cdc534813cb5a6a0eb52c06855d69b0d16b3e086b1ad1c262a1c6022893c3c456a68f5ae083b229bed0b4422c0ca92285fc12913d83c6e6dd5b81dd1145848be2b44f638e7a97a7bb7b6141ad402c62e02104dd953d9cf3f26a10a1f869d873d2e4485b1c072ebae52f0dfb5a7c76e1b9d4bf2994862ebef8d0b64ed6b9bdb70dfd858277dbae2fd2c930ba5f7a6f946f75d9c10708eb099f81382875dd39e422e73387575eb8c8fcfb1b47e69e695aca4384d43fb0dda680b641612a5354bd5f51433607a6825850c83344fb789e929a29b09b45f2bbab2e42be4b02fc2a9ee4901e23211b72cded2fc852fb03aa434a4e24e6fa32b89622a4269c89494870a79a7c32c932cb1bf49124367a6b28b8a3b41f07f210e4267c386bff7bd84437d680e8cf0a2c5e98fbae26397fc7c6aba6de55105568196b7101c0d9042f1ab21b56db460b865cf8512516939ffad9232afc6776345412a28693b0d69a0ae0fd2f4524d8f0bfaa4b9cbc7d3690cec950034197b3f3b3ddc8aa9a54fd80b565aaa4994e4b9cbe8de6a61a21808ea77751f85e8af0d2894363b45771b2e1016c37bec7966383d46640855fb06fb7405bdbe07ecfdfdc5b3e1f035cb8db4ff47ec73dd6fb7c50abd8e977b60cf968f0c1139ad632aa27fd0ec2e57f15e5d947be0249d5d6c3c512bb8d4b4472b888529ac34f3de2d158a72956d1fd6c598e69e4bea43d94f483071f17cb800c47ddb388342b1cf9e5d0fe56576f01d9c790b801db2ccb393bd9b4c7ce03fac2c3bebe3927513e20f63f07aadc9cc3d14d6cc8f34ef2f8b64b02ad30c69f5643a1ecd2424efaa31f5c090a7bbfc07e16e5307ed5e6750c8fe47ac50620e1f8e17d996a19a41b7563cc83f48169d95ede33983f1d08145ab763056b1efb71367bf46eb3efc2ac7915886987ce7d0e6c3c096b5e3cd79979a318676ef03e94bc09e167cc39b5d07ac2af1e37b6046e5e9a9a95a6d5d0f377618a2619b182f8c4edeb94b0c97f00a44dedc6c708722687ba3de5fa5090e59c911a5b79db584b8bea5552234bd057ffcc303eb5fced6a7990d1da11911041a0a3c4b7c8d5687af57b0195150ac0dc604b71e00ecd76463704cd2a553019c65032adea9406e56169323aa57ed2fb4736c2e5dca1076f539e6169115c43d5f55634bd1c96979620f4ec3bb7cc5c0cbbc0dbe8c67f04e74df97be8c618d75940a95dd1e05bef1fa2cacb6663a1646df626f013a715a81cc93b5e04fa7ec874f529c1e6ea0140e1022e046ab99c34a8e44750f8e0f8be5644767604c708a1f866b33a80bb2df3c545899f66fb8732e432ea53358ee2612460d57cb960f5440c75b5b2a9cd4b6bfc09f67e861377ab4608ad9bd80dd76a40d172cdfd20784213451fb0dbd023b610efb47bf9d0c0e79c3841947af24a42e37d95c0725afa92b5eb1740cf6d73c39701343dff1e8efb18023fd680a116112a4c0536afecec0f8ba648576eacce35eb946c3ed6b804d0446fd46b89fb80f4288c349d0ee58ee523f3219106f1e18fe9e2d4c983fb6", + "extension_data": "a30078194361727461732064656c207669616a652061204c6973626f61017853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d4830025911636167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6b4e67484f775a434135654b516832444c516c55753949464d7869654f702f784f61457a734f5161535333782f65523734586c6470696b64643730616c6c712b0a416e343454377876385334456f65796965526f4f6d5a43376a4c396256394469506e564d3046385a5264436d3245576868496548685551726574374b774a444d0a64687a756862494f49353964556e4b6764696566795038505a656b7a6b43527758596862456f67485957770a2d2d2d2059337534684437433451557a34507378436a5951514e42526a64746a7a6834656b544e4c726f6c78426e590a65ea20b4bbc9da9f24a8b9f18cc00c6bc50207140801897dc9ce71b8012bc3b126f5510fd01f818d6852f8ddc117a3152a3e760eb634928de17e708f5194f5b20a0a3067e418b57a95df7b2c9cb2de42c603399a1056bfc65f38152bfcd58501b252a5f5b36996eab5b63e8c44fa72b28c60e913caf3579123d5c1b167749830b7adac1c12a9059295725ed717d50f1d0065c111bd9958177408aa585d905a530ba41aadde33da6d9ac5f4976e55894829a955d143a94cb63d8c12b134704c707a9e4b696226a44a9efe4fe156425727d9c9e0f67b79a206581d02c771a0443da59207a4d1a4d40376ea0c8cff8444d41bbfcf228cc2d044ac5e1c834206e036b44cf9fbc8930f146b9cc1ddbea46f173c9ebffe705de2afed9a730c9e702090ba0104641199449b917916e45e7b7365bd8a7cee9f39f728801984b39fced931e6b326a3a30bb17b41697dee57bacf01578d86852efb16a9c0d8ababcbb38c8cca7bcb90d8bcce8cd1b7740360c21ce702c0948ab9747bbbe57042117d9e24f5b46d847d893ab1ba61c6f5e857794219db7f1c620e27e80f040282287fb47894766babc1178356c3918cbccbc4ce29e04315ff80a5f2de8c8cc6e47809ab9e0455406e761219f11ab80f85241e9bc870427d04b1568ea973fb46f57446d3ddfe2a774ebd1afbe82d56cf88df8ee24b34d4f788ba03e4c28eee79726a48140e4f7545253d8a0116b81e876e05530f9efd7754a63242d6a514975235b73e14dbd154d9b44c1a192f134e20b38f90fa5b856853d3a4297dfc48d8b43916cb3eb902d95d6f8a5f45457ad49dae3de83ff8614befc6a351205e66d8f812a528db70b6b53a52be8a4f1f30ecf2486e57cd6c7ce7cdf363328fa058c4b0b03007b89d1cf9257142a7ddd52a7d5ab4aab79a151e62d10835a4c00410968e41c951644a7d2772334a097a997a1b6031fa59376c0e0932cf71312c71c630b53c53d345315f369961260f8ebb92610f9bdce1413c6cb2be47885093f278008f349f3e5df44b925db20c1caa9afdcba837d5a6ca1f4f4b2e83b81bb3e62fb5053ec4fff01ab6f8a39bef140c4f35287ec105dccef8dc7d9f8736ed475f916b3e20767bb4067b9b7624a3ca81a6719662bdaeff3c757e81f8865cbd42dd84b93db2a3bc758e9a0d82c6c88827c5a27ace0c565ce22edf458d9ae008eb69abf74bdf36f883860aabbba9b5912856c9d32fab5c5c2b2b242a64a1f9d0d3ca466207b4553586a242f81c396de605fcb001e2d34e25d1c81bf14f5e31842c071fafdb6d2a0552b57d6eb08843d0b3fd8f7e9807723e3e404ea7e5a0275df61ef6be9cbf4ff74ef5df0184531641084bdf7bc8dcb13085d77581dc3035ae73e59ac1f9289eea23808c7bda710232230e7f2342df1657e3d302bde341b8c52a56cea90dd4727991386670ac765a27573806a738152e5432a7acbb34453c0f438a6359e9b966084a9180c692a3a212b8ad5ddf52286d4768203a2cb2e602812688a696b1b17de688ce5839d6d89252f30f90641f0a730840f2c105ea68518c8dbb74d82dcc5115b2fdba5cd16c146eb0963d2575600e22f87b1f914268583b19602d92e2ec5e76ca338fd1e15a61fa92ccc3475283e291185a23de78ec9064092afa5f2a4cbed83b56c2d75784f4764e8fdd04548a4e1cf849bf4e2bcab8c412767fb8507b4af37aa9873ab0ace2993848acf670727c327367c20defc285f1153e17283daec4ec28164ae028ba1183f23b32c971fb4248809c2cdda32c5fc74aa291665e5bc3703536f5ad60514948deae0e3994a76cb305bf666c9e8b255d0e4de7330613d650faeb8ff3f797e618a8a6f5622c3c9f7d645c4cf94d7aac1494c5260eaa6b4957a5cc5e0096697c8989a87b61b50d7dcb487b4f183578741bcde8df3c2b6602a251703ac8522e1b4a7ecba0a458f7832e1f4abddeff1ea7d8390158778248c81f9aea12c78dd9eccf08c16700d006fe80e3aa92af343dd1f67c46868f6da781b983c6ae567fc2213864b0a89d1da73a1b72f61d6e07d3bc987bf2dcb36a9e981ede9115b7714d52c1514774a631448240333c8e98ea2915ac5d7b2e300df3d7da8ca9d73c3753bfb0999b59cf9ff24a28c976c454d0e878c3422bb32c5bf0aa413a2f2c232df71ccf4f9412bfac58d9186dfb820c47fabb747ae3828600d6409af0ef2baeca226cd435f5eb4316a867e56627ac723380e6e4df463b3065f821129bace999a509ffbc30bc8fbb741f71f4f0aa9ceba9855a75ea9297eec9f834ff3cf6ed44a3712e2724a9a94716ef2a8d4a0225a5a3dd3894848be32f3a7e1bf14605bb0d1a91297e96ada0589171b0aa20666efc9e38965fea23f567d61b96185364cb53a4ca03c7e54b6c47fcc8ff7197a3f777ce01623627dc2d526151e65c408ab742c4c30cd7145a290b00893e9a312cb34c9205315173ab5696fa02be95641c306b5459c7cd9b01a5a93ef55ad0099db0cf081f069a2f7f7984f69574b9a9c7623c32f0f3da774fd0901ddacdd89acfbc27810efbcae4a0706fb8d597a6138404a823533ed6156377fe2b445c6c7819503cf29f5291912d68ecff2a27f0b79e3052a3950ce1c14fefa538cf11992e14ef4bec75fcbcdfeea29100014455309ef600711b6d4ebb43c7de994b3024be852832cbb06e2b67faf9d1c5596d3f719d9b42f9b182945ffffef6d1cfa0c77b1acb6bbaa25ed6d8d8e7416264baa7cea0290ff066e71f44f4fa0eed8ba79bb13b76496666cdac31faf864022e9fd00cb485c54cfe1662a9e773c51c3726464f4f131138ca23b577ce7ca60c5635d3230971a150afa6d9a3dd812783baf22abdd1709db9091a373be04067dad575357085e343349261dbf3fe963a95a3898f2ce34334262bed0fce9ed3c4141b31430bff947b7bbc7233af4a2937361a1bc8a39e978ea76928befced13e78733abdb7585a5e38ba2e164487ec92b23dab673573f6e9bf335fdf466c011380f81822e9f0cfceb27072e08324fd1936feb33bfdd8012af9d31d79be5c7e9c3caf635df1e6d9490943f66cf0d688c84ce8f4e631e22c118d0841446f8e16338f876c7ed3575cf4990c104ec14d2149772079b71e2913193410b81e068e058b71852e80b3425101cdd66436ad475cdd792a67e9244b8cb752893624fe96446c10a3b6cea8c85ce27b54ac8d650dc9a612edde9790b0f8cd859309c35f10e120e70770e931a7198b33f2a0b128d1aa5874cb8ac17b55a3aa2446e0c29d7bc07d341819fb3ac7084ef6fa6c2ccd1f7edc1be590878e8c22ea882b08a8877a7ea16e3bea6ce6a59e45095a90992a6497eb92454a75f24e78ea0c462d28757f0296261f1524027a8cace29dcd2882054c2de59820b37ceb81b4c74574f8e7272fa01771e9f26c2202d017094dcf9ba6dfdc83b6cd58aea5f3ccf5e6e065c1521e55eec06d06ed137e418bf371652eaf02a3f283d55725330edb40a33b02717e8c6bcb437b4aca7f6e1373f8f33f251c15d3f064c3ca5cb4a1696ef0e0dbac3572d760598bd2a9783b1d33e9f19f3dee0b2b4b6218a94a446d1b1bdb3bdb57d70675b434cdf87721bb910bd808e34498ff6566ba84d328afefe95b0ebc3f8a2e0bde53f02c729ed4f5a5151d0ad1aef4b5741808e955f50a3dcaedeb80c3b33494ac2d94b54881349efa1b9b560185bb6039588efcfb8b63c8538f48700f5d592cb08afa2b7cca34a5d3d972faca8553f74f8ded46b3dbb85f92f976dbb59ea59f72606daf1a62e164f37febdf44111a88b19ff1ccd01afb4adf6dc0fe59c2ded959e18e5cfd4ad37398d23e1aa672b67442c5cbc9ac31d3f94dd78976b3b6271e427c7a3d5d0defc4f5dfc7e61a10a6cf460195c551241327e42cb21a4a6bb448175b8bb3210efbb95eb9a69d94b03eb36233aceb58cdb1ddaaba9b4bf0bcfbb252063200f1829f30bf895e652c1062950117cd6f5662ed29c75a162ff60fad395b386337c8a4390bf0a7b4bd86e146404126265bd511909438f1503edcba451286d9a550e86b4a23125819510423af3097d3f786d7e3d6a7309245468eb8be478d7c627425b3b8c46ea2cf2b63169cc7906a4f879b60d5101baaa72b7a5a61fdd00c44bdf2d129d305779909730a9a49854c8f40c87f709c828591d926adaee844e5060ba168fecd5d8a07ca859d96683e61756a83bd2b2c21abca699c0df9a79784f12ce860868ad93d064f0577d6810bc0447e97de386d3df5956cdc534813cb5a6a0eb52c06855d69b0d16b3e086b1ad1c262a1c6022893c3c456a68f5ae083b229bed0b4422c0ca92285fc12913d83c6e6dd5b81dd1145848be2b44f638e7a97a7bb7b6141ad402c62e02104dd953d9cf3f26a10a1f869d873d2e4485b1c072ebae52f0dfb5a7c76e1b9d4bf2994862ebef8d0b64ed6b9bdb70dfd858277dbae2fd2c930ba5f7a6f946f75d9c10708eb099f81382875dd39e422e73387575eb8c8fcfb1b47e69e695aca4384d43fb0dda680b641612a5354bd5f51433607a6825850c83344fb789e929a29b09b45f2bbab2e42be4b02fc2a9ee4901e23211b72cded2fc852fb03aa434a4e24e6fa32b89622a4269c89494870a79a7c32c932cb1bf49124367a6b28b8a3b41f07f210e4267c386bff7bd84437d680e8cf0a2c5e98fbae26397fc7c6aba6de55105568196b7101c0d9042f1ab21b56db460b865cf8512516939ffad9232afc6776345412a28693b0d69a0ae0fd2f4524d8f0bfaa4b9cbc7d3690cec950034197b3f3b3ddc8aa9a54fd80b565aaa4994e4b9cbe8de6a61a21808ea77751f85e8af0d2894363b45771b2e1016c37bec7966383d46640855fb06fb7405bdbe07ecfdfdc5b3e1f035cb8db4ff47ec73dd6fb7c50abd8e977b60cf968f0c1139ad632aa27fd0ec2e57f15e5d947be0249d5d6c3c512bb8d4b4472b888529ac34f3de2d158a72956d1fd6c598e69e4bea43d94f483071f17cb800c47ddb388342b1cf9e5d0fe56576f01d9c790b801db2ccb393bd9b4c7ce03fac2c3bebe3927513e20f63f07aadc9cc3d14d6cc8f34ef2f8b64b02ad30c69f5643a1ecd2424efaa31f5c090a7bbfc07e16e5307ed5e6750c8fe47ac50620e1f8e17d996a19a41b7563cc83f48169d95ede33983f1d08145ab763056b1efb71367bf46eb3efc2ac7915886987ce7d0e6c3c096b5e3cd79979a318676ef03e94bc09e167cc39b5d07ac2af1e37b6046e5e9a9a95a6d5d0f377618a2619b182f8c4edeb94b0c97f00a44dedc6c708722687ba3de5fa5090e59c911a5b79db584b8bea5552234bd057ffcc303eb5fced6a7990d1da11911041a0a3c4b7c8d5687af57b0195150ac0dc604b71e00ecd76463704cd2a553019c65032adea9406e56169323aa57ed2fb4736c2e5dca1076f539e6169115c43d5f55634bd1c96979620f4ec3bb7cc5c0cbbc0dbe8c67f04e74df97be8c618d75940a95dd1e05bef1fa2cacb6663a1646df626f013a715a81cc93b5e04fa7ec874f529c1e6ea0140e1022e046ab99c34a8e44750f8e0f8be5644767604c708a1f866b33a80bb2df3c545899f66fb8732e432ea53358ee2612460d57cb960f5440c75b5b2a9cd4b6bfc09f67e861377ab4608ad9bd80dd76a40d172cdfd20784213451fb0dbd023b610efb47bf9d0c0e79c3841947af24a42e37d95c0725afa92b5eb1740cf6d73c39701343dff1e8efb18023fd680a116112a4c0536afecec0f8ba648576eacce35eb946c3ed6b804d0446fd46b89fb80f4288c349d0ee58ee523f3219106f1e18fe9e2d4c983fb6", + "addresses": [ + { + "uri": "https://ejemplo.org/foto.jpg", + "offset": 3000, + "host": "ejemplo.org" + }, + { + "uri": "ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi", + "offset": 0, + "host": "bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi" + } + ], + "envelope_key": "0ac808598a3da15de6cb7044f8a7ac60a55c2f1a64d7a36d17c79b7457946781", + "rest_digest": "a62604fb56d89d37627c9070de21dd62ae22ce26fe28ae01a6b5ed782fd543a8", + "rest_size": 5032, + "capsule_digest": "da2c0d2b02e604e0741faa44d90abebe7dcf83dc376addbca1d46782c89ed9cd", + "padding_cases": [ + { + "base": 100, + "total": 4096 + }, + { + "base": 3000, + "total": 4096 + }, + { + "base": 4000, + "total": 4096 + }, + { + "base": 4060, + "total": 4096 + }, + { + "base": 4066, + "total": 4096 + }, + { + "base": 4067, + "total": 4096 + }, + { + "base": 4068, + "total": 4096 + }, + { + "base": 4069, + "total": 4096 + }, + { + "base": 4070, + "total": 8192 + }, + { + "base": 4071, + "total": 4096 + }, + { + "base": 4072, + "total": 4096 + }, + { + "base": 4090, + "total": 4096 + }, + { + "base": 4094, + "total": 8192 + }, + { + "base": 4095, + "total": 8192 + }, + { + "base": 4096, + "total": 4096 + }, + { + "base": 4097, + "total": 8192 + }, + { + "base": 4100, + "total": 8192 + }, + { + "base": 8160, + "total": 8192 + }, + { + "base": 8190, + "total": 12288 + }, + { + "base": 8192, + "total": 8192 + }, + { + "base": 8193, + "total": 12288 + }, + { + "base": 12000, + "total": 12288 + } + ], + "uri_cases": [ + { + "uri": "https://ejemplo.org/a.bin", + "ok": true + }, + { + "uri": "https://ejemplo.org:8443/x?y=1", + "ok": true + }, + { + "uri": "ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi", + "ok": true + }, + { + "uri": "ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi/ruta", + "ok": true + }, + { + "uri": "", + "ok": false + }, + { + "uri": "http://ejemplo.org/a", + "ok": false + }, + { + "uri": "file:///etc/passwd", + "ok": false + }, + { + "uri": "ftp://x/y", + "ok": false + }, + { + "uri": "https://user:pass@ejemplo.org/", + "ok": false + }, + { + "uri": "https://", + "ok": false + }, + { + "uri": "ipfs://notacid", + "ok": false + }, + { + "uri": "https://ejemplo.org/ñ", + "ok": false + }, + { + "uri": "https://ejemplo.org/a b", + "ok": false + }, + { + "uri": "https://%D0%B0pple.com/x", + "ok": false + }, + { + "uri": "https://ejemplo.org%E2%80%AEtxt.exe/", + "ok": false + }, + { + "uri": "https://127.0.0.1/", + "ok": false + }, + { + "uri": "https://[::1]/", + "ok": false + }, + { + "uri": "https://0x7f000001/", + "ok": false + }, + { + "uri": "https://a.com:99999999/", + "ok": false + }, + { + "uri": "https://a.com:0/", + "ok": false + }, + { + "uri": "https://xn--pple-43d.com/", + "ok": true + } + ] +} diff --git a/testdata/vectors/mutations.json b/testdata/vectors/mutations.json index 2418822..7bc7e37 100644 --- a/testdata/vectors/mutations.json +++ b/testdata/vectors/mutations.json @@ -1,5 +1,5 @@ { - "spec": "0.10", + "spec": "0.11", "description": "Mutation corpus of spec §64 and further cases of capsule.TestMutationCorpus, generated by the reference implementation: each case is a .dkc and what the reader is given, with the normative error and the step of spec §63 at which capsule.Open fails. See testdata/README.md.", "cases": [ { @@ -7,7 +7,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b43310100000000000079000001bea5006a646174656b657963617001010250ad4d676812b134ff8a3de263f77018b4037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a734c34384c747739622b5638494e4230387a67436743796f543063365334726651346a48564172494d764b717a556b2f507947394c622f787137737168386e790a4472745547474a3232784d7552396c7641397974457653355468425669596c3161626b7841304f61737a3775464c556237413531726a3936647a7766505870350a6541674162684b75476b7342327352693537376f35324b45506a46705556666a7a3179495541544d4d374d0a2d2d2d2066784c4e656832744651734e707a6f31782f59794d6e7635526f38416c654243516e667071693772446c380ab98ff74adc6c83dc1f8abdd5d8accd5e4b03c62c1157bbe9a881712164d94628aecf4e8d276d55ff090c783177b34f5f5fb8ad75cfe256008aea660ba04487968842d0dbf8f60525f94f9be3413dde0c360f1d2b72339d178605e9f05162cb5ffeafa1b2ffe65deee09b6f6c3025ac63525873293565a662c840a16167652d656e6372797074696f6e2e6f72672f76310a2d3e2058323535313920514f4d767377585969535368313430654e38545345486a6b513236496544586b2b636570506d4f2b53536b0a50466d4849322f446865496b3233314951546f7257635764656870706b6c6634505172764c6765764c6a510a2d2d2d2049726c735279574b72466e325876754841714f4c30324244547a664e6e30527436376945767a4d4335796f0a245dbacd7990d0847915e76f52faaaf447864a03f75c2514fee56fa7778b76486730ed0e7e7094"] + [0, 0, "444b43310100000000000079000001bea5006a646174656b657963617001010250ad4d676812b134ff8a3de263f77018b4037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a744376364f5244346b53426d46596537415141614761456a566e594d515675506e4e7463592b4d48535636746738585a77456e715136534851316b2b3378534c0a4561504d6e6f6974314c503037472b4e7a325a2f457a386c64576e556a6a464c376a4e352b7065694c5a3942335a594c70514469346b2b6c7150704c464e62630a76614f7a2f58634e354f5736534246535373674e512f4f49354d38346c4c75786b576946796146676355380a2d2d2d20377573674e443075364a485130726b576364357168675042434f7a52475763795833496767714b5a466b6f0ace479127b9eba1b173dee3f0766dd2faf51b795e75df95bf021a6e65d3a609f31b931c4df516406d680fe7b7250e61af1fd9993420d1702b6589808da69749b70730fb52d04f5a2f100f7affd0e8c124a1f4dd667e886e420d4b2b6ea6f274e6add3486b87da71be72d21622f9639d21e3a450a717e76eb1b6c1016167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392065705076694d31416d3871396e7779466b322b375658352f5a666a5931737353784a626c41484f4d7258450a666533724d7a764630707764397865303238455a2b666363346a3059594e4d30416e7269414d39496b7a510a2d2d2d207135674e2b68785344746f386a4771706675352f4a3455684c6b45636553614b75436a4169672b424c39630a40165418a8936e3f984ab908bc911a9d86ddb22b204c697acede40fa09b098f9d1dc97ccc38b5b"] ] }, "release": { @@ -26,7 +26,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b43310100000000000079000001bea5006a646174656b657963617001010250ad4d676812b134ff8a3de263f77018b4037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a67492b4f36746b50507576754c6d3456314a4369713563794644554e463532634b662f49424f59532b50335557385053725068564c437337746d5a7634776c490a4564706c48647773384a5268715645484a686d65474f67583369712f445051684b574366584b564773396441437a654c69657352534c74796467582f6f416b380a62435948626e705136755561775854674a5342647748507232587a4e56733234454758492b3676375543770a2d2d2d204d696c6341336d6a3241486d6f2f54697257546e4930336354636c4d4f4c77382f534a6c6a686a7a5752450aacc6c2fbec0f13737228d95ea397df3a692a31594ca786e6c5666a76f652ad5f406f33660d664b94fc69a462763585489e3bc0b16f6f64995812014174cf818973841c6cc1ae4a449d14f58c7fa20aad0706451946bf4d093378491a71890c750bf31bbcd972d754d105ac97528422e621fb43815c3fd3280075776167652d656e6372797074696f6e2e6f72672f76310a2d3e2058323535313920514f4d767377585969535368313430654e38545345486a6b513236496544586b2b636570506d4f2b53536b0a50466d4849322f446865496b3233314951546f7257635764656870706b6c6634505172764c6765764c6a510a2d2d2d2049726c735279574b72466e325876754841714f4c30324244547a664e6e30527436376945767a4d4335796f0a245dbacd7990d0847915e76f52faaaf447864a03f75c2514fee56fa7778b76486730ed0e7e7094"] + [0, 0, "444b43310100000000000079000001bea5006a646174656b657963617001010250ad4d676812b134ff8a3de263f77018b4037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a67492b4f36746b50507576754c6d3456314a4369713563794644554e463532634b662f49424f59532b50335557385053725068564c437337746d5a7634776c490a4564706c48647773384a5268715645484a686d65474f67583369712f445051684b574366584b564773396441437a654c69657352534c74796467582f6f416b380a62435948626e705136755561775854674a5342647748507232587a4e56733234454758492b3676375543770a2d2d2d204d696c6341336d6a3241486d6f2f54697257546e4930336354636c4d4f4c77382f534a6c6a686a7a5752450aacc6c2fbec0f13737228d95ea397df3a692a31594ca786e6c5666a76f652ad5f406f33660d664b94fc69a462763585489e3bc0b16f6f64995812014174cf818973841c6cc1ae4a449d14f58c7fa20aad0706451946bf4d093378491a71890c750bf31bbcd972d754d105ac97528422e621fb43815c3fd3280075776167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392065705076694d31416d3871396e7779466b322b375658352f5a666a5931737353784a626c41484f4d7258450a666533724d7a764630707764397865303238455a2b666363346a3059594e4d30416e7269414d39496b7a510a2d2d2d207135674e2b68785344746f386a4771706675352f4a3455684c6b45636553614b75436a4169672b424c39630a40165418a8936e3f984ab908bc911a9d86ddb22b204c697acede40fa09b098f9d1dc97ccc38b5b"] ] }, "release": { @@ -311,7 +311,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b4331010000000000007900000220a5006a646174656b657963617001010250cf1c8ae418eff0f668d7f12d583bf8cd037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a722b3546693932457845426a7378735a37412b7766387650356d326c343845426f306871384a4f614544556a497a5755736b746e302f2b334153727355694a430a46645a41492f465053786d676a45426a4d354276344b555978787a52356d6d5031334269493831554c69504932467647656d6339467a745030365a615a5442410a675163737531484c6770445a5244556e5473374f436c4a784e5254664d427330444a694f67675959616e550a2d3e20583235353139203251422b626e7750305347555653386848306e754362786f74442f4e6c73667949556a61596b63536e42630a38457241556e65542f594645634e6346464358437747547253556a755949557143632b6746424f377733730a2d2d2d2039534471755649444549384d45556271342f7a48764a4a503643334c75356c714849767a7a724267514a380a2048104484808179e97fdf12c12c589ffb81512f3c65b82683079fcbe64991a1306bd0243a848c5fdba78bc4ad90573e1b65cd334b175b95d67b7bcc94e517cb694c716023a49aafa0d318d8eea1753ab4812440af7daa663fdf3504f2a0cfe9924bb0e40b706600e471bc46c2132ed1973bc7719b9f26d19daa6e6167652d656e6372797074696f6e2e6f72672f76310a2d3e2058323535313920504934394a636c33556c6761666c532f7077565673565552326c684b5143566a525138656670524868544d0a776179557646495137594761735044597750774536317556454e762b58533235316a516f557458623151550a2d2d2d20504753645671536e4c6e6137776b556e66554a494f7055497133325a6f4a5a6452414e4b44503763634d490aafae0228c816da4648807696b39104d16b68ed2d505b7269ac69c76321d4ed43b1e44e92d69b9eb651b8a4280174e9f7ec"] + [0, 0, "444b4331010000000000007900000220a5006a646174656b657963617001010250ac64a02dff47ec22aaf1a44b1a89605d037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a68767130433237775347434a74376745584342595a714a444270556b37436733396b756c4c73584468354a75337354776b734f4146642b537177697a6e45726e0a43547472664754784a4459352b70495679596c4e654b6e435a6e4c4e4f4859336e722b39592b5178424975512f46765671526652465765474648346b54357a710a544641636f4d4269773846614b6c567a3348645933306e757654356f706f464379474864442b4f76526d6f0a2d3e205832353531392063725a766d6b55492b6635457375777652325031484e592f6133744677354d33414732645763452b546b550a2f43664f39437941526c305274436f4255716147384c677231564741416362414a3868384c75566f7962550a2d2d2d20702f396733335a4b43646634546e44534779354633677a7364444167747751427137524754704e547655590a2ba09c52636965e1044d0e1efb695e8604db5416960329759a621c74e888dd0a6c9329c0b094cf3d05b8d41e720553631b140600a745756cc10d336971301eac7ed41a7b6b998fae0a02d8b0d8b1425d559598d7584a65cdb760dedf825e3396149e145eb5cf5252c9750f3d721bb43b92d5d3114fc36d217f78496167652d656e6372797074696f6e2e6f72672f76310a2d3e2058323535313920616a4f4538414932645177536e514e756f677a583731747875725a623845422b636a7253333151374d57770a4e547a3648364f755462343831624d64383041506f685a79356132757a65774c7637596e39664a666a48340a2d2d2d203247677a736e344773317661555845526c6f737859356348653163796c4a625436714149435261393645510af7db1532a00544a0b43d9b03a4f76aea5cf5c4d692bbcbb41d85dced37cf7301263ec638c34bf77b6e6a290c14804a8128"] ] }, "release": { @@ -330,7 +330,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b43310100000000000079000001bea5006a646174656b657963617001010250e3a16b6e6f0336acd890d979fea4ecb3037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6c4d72326b35654d72564c4e44344576334a50347064597a6456574d4d496c4c6b517443704e2b7a727542392b775a774b6a726d34542b2b71456c374c79786d0a412f71486546512b412b785a704773687556514734574d32525252345054366e786f7a6e36573552593470536e5a58586c71416e763043413361444b416558620a4e745762674a39522b39645631796c4c4d584e7430444a67654251787450643135575563424f304e4370340a2d2d2d20557276696c5a38394865416474417a5474616d72473935724135573644713570616c3336755a6f755848550aacce4f981e3c57fa797ebe1a01613b5b9de05bbda109b7b83c54c6e2c63c33e81a0298e88d08e47184156670f5216f867c23e471b8b0229dcca8ee7e71649756e6a5feea270f56c0e0985416e9234023028114aa128e0b2bdf4f5c8e1cec4662eea2044cca845c6156dc127f9cf33a005aebef1a8a57c1f1515cb76167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392056707356532b37794a7463724976304756786748382f39526d4a434368513571706a5158677771324341490a734d4c39585a354a38523742624b74653135326a425a686a623078546665726a5677332f4e5047666f39590a2d3e20583235353139202b74566b4231753266553658784f666c474b354e4a306d6d686a71376a582b72475a7868696963465356450a78654e54413867786a6554363565722b4170704f3739695753326834457844565364786a463667796451410a2d2d2d20456c506a7a47303464654246344b50686d364378744153756a484f7474686c732b447a374574476c7a436f0a99892829c9f6c1191c249e4c91e536df4ea667166d7b369b2ec62153d4c1164e7b095dea99e31c7f73f6863910b5ffe096"] + [0, 0, "444b43310100000000000079000001bea5006a646174656b6579636170010102503f985af7af37ad62b40ec5ccc3c6b8d1037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a72535a7556584d773838434e535569776746546568424b7342327a362b2f5576376b484c644f502b375375365356336b71616c4f4946375175652f45395356330a426e4541356c31626f45696a524934554d67695648414b62745833686c64744e36376a58507931596e4f3875396e346c445033674845415539423972566d70770a51324a73463543434571474f786f4d68564b6e514d52592b58524e56705a57492b31512b573432736449670a2d2d2d2053692f724e663674344d6833374d33383949546d78786c386e6a667367667341386942446a714e4d3764630a26ff94a0e249fea283ab9d4e8b74a704d66a07a97f85e321ca93b534e7dbf90ceac83c5301e8f8aff0717045f3bbfef4af645186de574d37be73bee41e183438dcc5e8288e5e4b4a1f639803d365e6338b27d340fb80620d372e446c8b379d4c263e8084be50d91c97c9bac5cd4bc7f19e9805fbf1f23d3da7fea26167652d656e6372797074696f6e2e6f72672f76310a2d3e2058323535313920734f7a3373443372772b324f4b614a5533454b505851416736315456336b52716571324f366279443454770a31536f796b4449495a65504a5870496c2f624774746252464e4a4256354966702b622f49564873593632490a2d3e2058323535313920502f35586c485551503548456a485a394d76574c4f314c6c4a766547457a6161583168595962336346306f0a69782b54616370572b784d4c473633366c615039772f4a3273727a437a4e526e496e4466584c71375156410a2d2d2d204f7749452b6270666f746b554a797756656e31686e36685936356d775156665553774e494c5544555279380a00c7e8ab57f200fce774b9424da02c5640392510592575ceb853ac547d00a3ad59a532831f988ade2c35df16cf3204394c"] ] }, "release": { @@ -349,7 +349,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b43310100000000000079000002d6a5006a646174656b657963617001010250abd437cb5d8c8b56e96e2a163b11f560037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004016167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a743551754a6c384e3459536b616d59455a4a4943744645635661564d794b4e2b5646796f68504f37566e6c75325248306c4579614967376957315157542f48720a462b5a6752797656423438554543375865516d37416174712f6a53352f456d4232716d35416350745856616859666e786738612f7239435a344a5746614644730a4d5a6143434168634c477367306b65776e356a644c6877386545372f7572785a5470676d6244465542766b0a2d2d2d206b5741613768397368485141647a6e4f70666b6742447a4757476775366d38675441647973357a414146410a41e2ccbfbd78709e144ba877fcfbf975a857453dc4709fc2247ff57a356a4cdabe616e5c2431b04f7b720e800b5b9e91935e27035a4532bdb542a100ca254f812c4619dd5f7ffc744eaa3de875b5ddb21be1a4b0611bdc9e01eb1081c34e28a9f2d9887e891b475e06b369f633c95bc5f1c5fe961c286cb75cea3a7acd08422a9690744e5529b41965b5306ca65d729a2d1df678407e0e20d8fe819a8f0af46bb6301e5aa84558f6ab5a29766497478160344419170ca9003c1911f25eca48df8bf52bbe313b5630b0d0298bd91a624776cae3b7cfae8ee47e30bdc02016675b066db933ddda49b0fd76ac244011d090492caaebb4af136899377a9f681d6c21fbae8e3bd5cbc1f6056cd3ea5b0080314dbd6290addcade3ef8f42451181a060c767e79cd1a34a37a0b3594e402f9b5d5987b9c46dfac2d36f5f1581ad2e544ea1dd035e094562e621acbb22d97f2b90c6b1ba6d3e3685bd61082a68c3dbbe2bfb5e788a3aded25a1aef3fd2b68c1abde24c7ced78e83c26f4dbe40cc2ea587b99a2f1d7e0569dfb5c0714918bde9aef55c48d6167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392047695a49474f4d71386a4e5a3034633851675770694e7a704a5774733539744451325241346e5a4f5a33380a7333664b413376376f39427a6d347864782b616f7058476e705755475751436a326e7937532f52307256410a2d2d2d20305035624734416d453976553248674e495232486a6b7a4e6f74367844667942544c6d49442b6b6f4f59630a816a62bd612b6dee169cf465bf1519af7be6ec0255937c5752428cc5b7d969bddef5047f5ba1fb2f4c5ef1dd465e578b34"] + [0, 0, "444b43310100000000000079000002d6a5006a646174656b657963617001010250c800935c81d094a93d56b9fad957b18b037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004016167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a7176367034705646773564633853442b396e71623638745964676e5a6b436c39646b5573305a6c2f45484e7036443863397a63526e586472536762385a2f54790a4376442b5269734d47647a526b335232543650794a4a65616c696679384d584c5839417342422f7948564a585a464172654749424259397048734936566477360a6478452f6f644d514e36776a7a5138482f67766d46556a6c7a362b6f566c7a6a6d4537344b7750596863380a2d2d2d205a354d5866734e41556e363653674f7a4e68544b6646776a5839576a6a6c5a586837394d633568756c68380a7ae6cdf03b64354b013c75b59d4b9612d89e29429713d10fb3da6823d330d25ef4db2e811ba54be8777e145a96b4c247bb7fe11432c929edb1627a7ecfaffec3b8af5d84a00c8705c39970600f3a4b7f2c31240a017eabb7e4c68ff8daa4f3fb04385c8e0c8e28bec90cf335090663101144c45cbf8698068e0c38203a2d7e6e3d2ca6c42d965c835db0469a920bb1a33ee455f80e712557dc912d033585004280c45f60b2cf5a7bfbe49426696d4683ca5edeb74cc46ed9bcc907668854974e8ecf9c5e3d93faa061cf81ac6201dfb2a72adc83516a2cbc5d960215627537facc271e25b10784854f5b78dd36ee71738d81ff5c8a8ddc4069ee092ecadbb66cc82f8bd0e4de2ab41fb837a6241583ff6545ffc53c08a558a8f8ef31e8231a0b3b72feceece26f0c5da15ed07b191375336c21fa8c5bc52586a21c85dfe52b8514b1872c8fd8f25b6682f7169471bb30cad79db5536d02c83ce6ec48b0ad8bffd4cab0d1888470c6a5f4c27d71b7e9d865cd5f51a58813f9f09e506ffc8309d3934cb7b820b788cf3d2bf36f08e0cf091326366167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139204165504267554974516f50362b765753446841676f56342f443371756b6e614c4638763648306c426b33490a31783261346d524452744c5959735362634d4b4d4e39734f64787261474c584a69386b79476233517a6b6b0a2d2d2d20425475756333484c656c617934674f4c2b7162483147374b41616e6b31774d6a7a61546b2f3733624b6e4d0a178bb05309a72a9729d9c1d18194140455a5257fb10f0b6d934759dc41be209bab219ea1ff246066ca19f7c8727c1a773c"] ] }, "identities": [ @@ -371,7 +371,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b43310100000000000079000001bea5006a646174656b657963617001010250e07930029f3f1c94936b910c293c3942037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303120353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a736664414f48784c4146475531796e714268444e6f7143302f33347359386b5664386e6a7a536952306276476b303158766e77514d7250575952364b6f7844320a425359584b5a4a594e3536454e346b436768334669437554496e356f4f346233486444636e467231686a43634b5442304f5362424a376847317345647a3945500a43394b6a466d365051325375706a69594b6d7a324c5259756867374c57366e47655a3241515665526a77380a2d2d2d20724279505962786f395071784c356f31553047556754386672476659754d4d6d4c30342f394833464352550abce15c9d03f838d7039650fdfbad0a3708b4ae795abedee03c3c5db9a178e46dd335c7776be7717f1ad69ec405632ef53614afe339bd2be071002cdb214e6fa3f927eee33fb639024be3206c428dfbd1924572eaed4d22de0d080846cd512b6ab20f0a2da4c923d496518ba79e18148f82d6d84fc39b0203ec76d96167652d656e6372797074696f6e2e6f72672f76310a2d3e2058323535313920496b4e77464f53765239516b366766554449694464562b6c4c5745334c71636f4c6e524d6c6e50537658730a6579795075416a4135345759556d5654336f615255724d486531724563753249634d716830426a656e66670a2d2d2d206135465a4e742b616951464d56474a426d797856765042474558725033457a6974766851472f372f3062770a7ec588991e7188748aa479f6244a93cbacdd822c3d794f6f7ce52c8f91fa6452e6fc4cbb79b7e94e9320c1f889cb5a2701"] + [0, 0, "444b43310100000000000079000001bea5006a646174656b65796361700101025008f94a0475441b20180762647ee71902037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303120353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a71524867577976397033525958546133574f7475324655422b6c42664c636a4239376e6e4774315441437970566a3459665767794867694a4c305861562f62630a4363617a67486a576e624f2b49626172725069626c47653353714951424d44586c76486b697345464a5a7255754f3553612b423071437a5a34503770464170510a645a6a5a347244626835747434487530377858377a4b595245614c655867596545426e38656752395273630a2d2d2d206646456c5275527a3242556f584869437376362f4c33756c7773724c6164586d323272462f7654424f30590ab73671cf5923dfca79ccae9b62bd2a6e773cd2646562934cd65123ecf129a98eb0cd0f6961cc0550bc3e2c5a04bf7c6de0a31bcfaec8b2a9dad8461dc27343af0381d45968c373c8e6a03cbe18a04d7455470a5ffd88c5d4290eb47baf022a523239155562c68b808351c1111386dfdbfcdd3ca412245797eee16a6167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139206a517479704546655849757564546f35677a5145713043796e79562f4f44425138684d69357939694b7a730a66333250657359584932716c6d4e522f455763306533656b7a55764e6a6d4e5846583165532f75767065630a2d2d2d20547746584a554f53524549757a5963556f62306f6550494e65466c552b3671614f436e596a6557783130300a584524bf4c682309dac3175618a4c671f10a6ffa4c3adfb2757ec80745539886340dc7ebd423754d0d4ba7439236edd3aa"] ] }, "release": { @@ -390,7 +390,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b43310100000000000079000001bea5006a646174656b6579636170010102502f016f62cddb637be4531196fd858abe037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020646264353036643665663736653566333836663431633635316463623830386335626362643735343731636334656166613366346466376164346534633439330a716757425a2f4c5979676e44744374753361632b336e4b6941426562797449455672624d714748363936786e6d705365676f4b734146563747787242477164340a4353756b3544636634356e5759542b556f7233346b7834547646706643635a37466168656168754574576e366f685a61666a4b3170394d52554a4345384546780a4a4f49316152336e55465170652b4c43793548527a4c57444270556e7a4355567a313757435966762b476b0a2d2d2d202b4e74654358434e2b6a6a464c67496f41727535764d4d44663931504e71794b52764378415531353675340a5c5ec56d687e72385d8e3c6f1fd80ef6051f155ae24c1888f94446835abcbbdf1b766b478bbac3f13669772680284dd8e0f59223b29689f93d9dbe3ed167a5f0925b34b62118d75ad82dee01f4ac593c15f5ab3f02c7e7b5a739c244d44a8047591fdc6e1e7f4652938cfee5449dec8c9c63c2036a46cc210f8bb96167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139206438785051576c787141506443346933443937375878483770565038472f4c644b426a74496e6b7a6a30550a446a4c4e4d6267655030746e534679685268467758562b384b7575345530542f34584a4e564a35446e52340a2d2d2d203762654579567638516170784c796c52347359356270776468645634676a4c374d764f546b6b4f775933550a931edca87d78ed596118b696d083f749058d1ef73f8c6b6b1024244998bcb44104be86579f168b0119eb058d3e10760e97"] + [0, 0, "444b43310100000000000079000001bea5006a646174656b6579636170010102505d6090f141146d36ba274b96b44eb941037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020646264353036643665663736653566333836663431633635316463623830386335626362643735343731636334656166613366346466376164346534633439330a6a776d34753269326c797a654b764d754268626954366f74642b5238635378614743442f6a3675534b662f6a2b2f52624c523872535a2b4567624955697544580a4369796c4264467865766c504b415a674c6b6e6547482f3930373248336d73443458326156345463464668474e50584a674e51474e782b75554d3544703775640a7032614c67752f387939636869474a78627148653533514f326c61496a33336f7770464543454349615a770a2d2d2d205464647a684338714142763251315a594c2b2b4d68766c453238424c5550393666654a446e6f4d72752b6f0abfc4d9ad388fb2d3699c69d385a97705e3e1a9dcea072e4d76a211e420ca3545c24cfdb5439cfc8e68e20db7034c7087b9f417cccbb6eed5d94482b75c3cf1d92d08b5eb0e36eb91fa8d02cff034c9c155cf47537395adb30821fa0784f0a434a114120b79ba0b42ff55766adfc9c0941aabee9775be3fd50655746167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139204f756c766c764a4c706f562b3569334768383434685351354b45754d647473396f4f5753575153433253630a33665747774447696866467a2f7671767a77364d667a685254426875614e7151674d3548526a72696b376b0a2d2d2d2073695154577639354b635237576e48414f38547858746b7a45556272387458426c71614d514371347747630a2a9da42ad38e7ea56b45632f351cbf9cd9252ca816517b458154b4ce7c774a6e3df70375e73b07e26d95f783b9a45e020d"] ] }, "release": { @@ -579,7 +579,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b43310100000000000079000001bea5006a646174656b657963617001010250a7336e7ec2e3ae0b86694ddd7be97da9037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774e483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303420353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a7439545361546770564a6e392b4861653971615944366a5a746e2f493243716d4b542b77756732614a51394c612f4855474d515a337475412f713846475571510a41712b48753433514e6a6f5062703647727678526461354448532f6a50714667504736485a6a3259387a4771523274714c2f692b744a5a46464e44684e375a620a6d5a796e7a55717a6d7659346753324c48507342686c504c792b57766f6d694f5643784d6b35334c612f670a2d2d2d205173416550494e6e34734247574f525258596a6579614d52364a4e644f734259646d6351416e65516e6b410a15bc97bcfc7d847e72586753b8c90e8d39a7d42905a881f8e6152c51d7dc51e41c1d5c81df60fa04c03ba568ef6ec0962867c157c2422f6e04327433ba2c741b8a9217a58d27376a1e7280c1ec7fe6eebadb72ee0882b55d32e167fd72491ac77407b4aaff6c5b972bc61a07401988371fbb0b2b6ebf1307cb8b576167652d656e6372797074696f6e2e6f72672f76310a2d3e2058323535313920573365486f4233743353593277524f46506c6d326e47594e33627363714c714a7a476d35754575787748300a665333744877494255434d36497241336b4a4179353663483836756d7a5436477a63497268526b466a51670a2d2d2d2074694d326b676a652f384c2b494b69736930397076525555304450593371564758493437356831413969380ad2636c0ca74ce080748ad38ba4abe73f7527099ed68830e9fa83512290bcb69401acb6a51ef8017216a42c0fe6da88a310"] + [0, 0, "444b43310100000000000079000001bea5006a646174656b657963617001010250250416bc1e6d8da84f5a69e47a9f66f2037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774e483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303420353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6969572f64347332684b4964736e71757a69657763522f79354a7544634378506d516b61354c5636332b542f7a686436706d4f46774133736d325655373775720a4663677557416a424976526678676372323841596a685569626a566330744e6d327a4767314e6c766c412b5348463235423472304b532b2f504864674e5463680a627a694d4f417251636b7166702b506d4f585563756b61793659435a4e3069484a62647678564b545345770a2d2d2d20474132673036764f686e3944574e454955374879586e6d533648494c6534666e356a56663357446a4532450a4357b131f0c89f68f84123fcf5ca1a62c50949d3e49fca8563e4e6259fd2bac5a427924211f878883782708204890673b361669cb98f8314aa9cd136ab1373eb76734495dedb036c412c853cb6becf01570da327eac5306ddb8e254f166d838d3fd4b54f945d0f7266550de2332a41fea90a9bfaf91aa6752f36836167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392033615136485379414b59494874634e326b625479734455614f38724d4d48695648316d3032612f575445380a6b55616b7a4e714757376a51705374696c6b59785071314e6f4143514f5778794b4367506672316c4466380a2d2d2d2078633856624f6c6d51374b644b2b583468644a4869726168633834652b39354a73416633616b2b706959730ac4caca9a5d2043086011a178e248061d647837ecc36701c3e2143efff01e3045d1c3c5a95c07971c103a930d6925ee0d7e"] ] }, "release": { @@ -874,7 +874,7 @@ "spec": false, "dkc": { "edits": [ - [0, 0, "444b4331010000000000007b000001bea5006a646174656b6579636170010102504139c505614668ac638ccd277b8ac858037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d4830041901006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a716735774a69597a35414e6e3057443858326159465559593868684e654b4562747a6e38327649496871344b32366f79347865317537525233596c6d686879380a4367636a52516f4b4e413556674b65322f3138455139786573422f464953657a336d3458496a614e714166543075756f616a58665163716c565173514e61376f0a7032586f3255416c525955647477423961706152795975775364646741795737636237674b39656769736b0a2d2d2d2073516f5a69636875486738666947764361345a31764638495a4c4c41764c526a644232693749615344526b0a2984fc77430f02f662ca5b4bee9312746ef7de9fe4b16ffca613dc5112f3777108dfb9d3caafc478037a76e6bf8d5648799f867f5447ed7d08330edd5e6625dc65c121ab8b8f85f4037d721ad0d7f152e18f4c889319a313446fe8309de882cbef7fb82632ee7d61ac5c6d1d50fe517008e6ccc0a329f8651d21b66167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139204c4b69506a484f566d7a4450773352536649753841676d5950327a52457875527a38572f6e4142553178550a59314d447658474e526b465966337367764f745469597577344c3769496a6474342b656772542f4d426f510a2d2d2d2043424934544a616e4c4168635564713248376d4b72577a7a4f6c37485a357770585068317a563646526d380a7cdfaa7c546b7b3d7369041837af39b5f37623bbb0aa8b52bb750a739e030fc1299a8735b07220723713ad1b1518544bce"] + [0, 0, "444b4331010000000000007b000001bea5006a646174656b6579636170010102500c85abf16c0f2bcc709c0da0e1cc08fc037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d4830041901006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a7265383037565842584449747676526a43466f65753175323653464f4266304f734762677065756967617a6c626b5a737a4135446876744e75734c73524771320a444375532b6d2f58454b4352644b3350674551564c792b59754b6d636f376a4d4f5578747432466a76572b487437784e675146614e6679656a544c4d333452390a394e2b78655057576e6253534845464d4d4b6f4c4451654f436b77726b694d725764696c4e6463503469630a2d2d2d2056444737647277595354386638396f75346c6134335570353075376d77367a36465572472f7144556157630aa5e35b7b1bb3e53848d54e131a5178a366e127645a4120ea4edc031de27a4d943a4673bed7ae752c958cbbc064f83d36894ae0775c4f9e16b413ee042cd5d686d53713484aa9280cfa5169bf87dc1b9aae0a2f04c6a76e6903d51b311e6c03d5d9664176f1769e7885c56594ae4122b66b07620f8a31114e9663456167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139204e6c6b377277574f4f3466427469597774622b6f35526678716a514638727a384e665768544442363269340a79583178317465616e596949423155434a4a64532f71564d5074427274636563624a49576a6d447177544d0a2d2d2d2045512f727939453048786a416831795a47757564473353787a6f6e4f716d3276574e6f506b52684c6a6f340ae549c4592942f75d80f703118656a4a65cabc1cfdbae6a29ba48fe5173036fe17b73b7bb5e7f76b748ad5e3394e1278973"] ] }, "release": { @@ -893,7 +893,7 @@ "spec": false, "dkc": { "edits": [ - [0, 0, "444b4331010000000000007b000001bea5006a646174656b6579636170010102502dc4f9e83148633f8f6caa8f2bbea7e5037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d4830041901016167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6b64483338556c314f684b35625a454d7879307a7a4c2f42504c335a6e4b6443683235736c634438736d6f425652665644686a6938746c5141685076456b38530a434b4e535a4967656f527558637a61617362344c4a454d704543334e483636722b49675338347850787651735a546f506c4a314e427170615a532f4d693669520a35307863754753737535575239694c4f714a4348506b7836706c62443434382b3042682b6f684b62485a4d0a2d2d2d20322b73524c3961787a4c68774652385542416f776d4c6c7044432f4f48594f53582b776639492f632b69450ad915d67c3c659115bf2e4ee1888216a31a5901a1bfb3610b9e37b69eeaaed3bc8233e8191bdd3fdc065d388d2c577100b49f6297261b425c41f4ee60f1986b45213ecba95be0c29b255221c32ff0fb0dd5cf77c149726f1e2c3da103a5ff90bdf3570d4e1c2fa20bdc8190fe7f6920969c07743999c41be3126db06167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139207936452f302b4b712b3747567775554d307941384f5336467a68724f6e6368744f5577663741376f757a590a7376387739314e47455a72575654336a6b30393238386d514670596553526b305655667346526c356356670a2d2d2d20587a79673667594274514f5832504775764368336b5253424a4c4a674b73444b55324852376c523072746f0a2c16b48c2582a61a3fa7b70582095d5b89562e0b37b0f40abe69d9bce4bb841fcb63552de5208549e2ff54135d25a57e72"] + [0, 0, "444b4331010000000000007b000001bea5006a646174656b657963617001010250885d52a7545000fb6f8e93096285fe25037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d4830041901016167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6f76473876746f4958476f4579564a576e466537693763356763486e70333866586f312b71412b586a2b4b5145496656304875524263656a75337434356b7a620a423459633242395650466f2b38674871616c706a38335969484638787076786b74426d4574332b6a447847617249477845416f695a45505238385a69363557430a2f6d7776464368346158724b462f41654d45636a423068417877526677457430576763325668356b4341510a2d2d2d2068587a4e71574467562b6d6c303350734c4b506a6b436745586f55323836664e584f7153616648576869630a174c6be5aa4c300c097fb94a8b53f90f7be231584dc75900a50e007d9bbec6ae7f42cc56f6cc31cdefd68fd91fcb5b2240294e66eb1595ff90796fcfa414414ffacf503dc39d4ca510b476df9d28e32a1f502a9da87497dd42ecc4de068b84c1dd327541c12f847399eed7badaa4e6ff1fb7dd24f163be5048026e6167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139203873623156314f744339396d74664e67424b753036543972614e6556656558764d386e473157587a3758450a5278656b5841596d316a7032644e482f3144546b79714e555176396a4e664d5670443278343454487952670a2d2d2d20713668736f776f7349325a4e514d586a573354614673336a43745a2f36745942594b79662f654e2f41674d0a1e885d09d61b5b6310c724c13e5081d8e8e3af2cb32548d63162dcf2c74b93c3df0134fd7598cf4caa717aecd6fc527a68"] ] }, "release": { @@ -912,7 +912,7 @@ "spec": false, "dkc": { "edits": [ - [0, 0, "444b4331010000000000009c000001bea6006a646174656b657963617001010250923d1b8e0cbb78fbb8b891db77327959037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004000581a200781b6f72672e6578616d706c652e6d7573742d756e6465727374616e6401016167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a736d484d6c3453434930437a666a702b442b54644c65755a51346c59675a417552544d4a364b46687a7a4153644453754f4646365149736e437349334f65386d0a466738707a6564627a4672774a4d38734f3941696e446344494d664d48495472777a4165556850612f385054384a6c4e37565445315a322b6665576f725549780a466f5136316f5165616a75727447706b304f4c344b5a4f6e4f49315967356b6b4a634a746764636c4147450a2d2d2d2030536268574f4656786c344555674363346a4a4178462b6e68374f495a4e3370516a6f723359422b6c50590acbbc28a6bbce6406e2decf3fa61a89952dc3ff3e82769ddcc62c5be78b5a506339601bbc2f8c699b39dc8af00267618bfa7566c172424d7f5cf7bac2d3cc600ca24d813e6b8c1cf572f428f60efde5987a7d20e38a6f3f0d55afa5abb41f8aafa65aff4b2cb4708385ed18a05ea4e034440fc0e2f74232ba3171656167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392037672f63454e626a7333575a54635675396b65584770597838346533326c427679344c746d704a524f52380a7556316a356e62364f354f4379652b4442536844686f4f556746396b4a5a53507461426b485333546538590a2d2d2d2039436a4275774f612b4f58656463552b6366377333793666742f4e54362f444b57597846674a37494e386f0af98e5d15848e6e2348798e9abf71ea85bd2850feb29a05d46bf6e386a9fa7ba492658cfe055c08d92c955a79f996cf1d09"] + [0, 0, "444b4331010000000000009c000001bea6006a646174656b657963617001010250ac0da3c51aa9c0191dc83f6d7f965397037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004000581a200781b6f72672e6578616d706c652e6d7573742d756e6465727374616e6401016167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a7046726d45523941354b587768656c716863305576583141426e444f76392b52785575485973545545712f45496a7176574f565a747a4e6a4978654a737150500a464858694f5a6a49464f4d6a35687036626a4b4c65744364475474356c717a77462b6c33786e372b327568434476433741432f34434755755634714d7a6b6f5a0a77753055494630794653684c6951656b394a3361334852697273626f6557693648634f34506343467371300a2d2d2d204154616e516770344e7a614a6535344a2b57725673472b364f767172516e765a41586d742b7564546655410aaa8009a0d36ca25a2239a80f08981817e6fed49f739f1c9196d00b9527ac59094b8b55cabdd66b11c59939b9f192c0313a2aec74e76ea2c2c644e8b88d13b2acc7eeb475f704a0a274dff497cd69833571dbb4b5294e55571ae9834305f3c816a44aea56b1db81f7285f680df2f5547b1b78cc458eee0b4f464ab16167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392057734a6b65365a58753159582f7a36442f414f477a67655a7830543934615976585376306551656a5344380a6c6d5873462b4f465a4957302b6c50774c39586134395364756c63666d2f44742f416b526c336a4673584d0a2d2d2d2057646d36364933474972596c323655594c4e57314b73737663412f33334a6b4f45464b4e566a79366b2b340a98c20fbb4cd9ef22576120e7e9fc1da8a2af8dc90bfe8a6c1e7573183b7bdaafa6cc329031f94b8da482a1fd29618e3f48"] ] }, "release": { @@ -931,7 +931,7 @@ "spec": false, "dkc": { "edits": [ - [0, 0, "444b43310100000000000079000001e1a5006a646174656b657963617001010250fe4642a48817441a59752c6ddfcaf52a037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6d47337473504c7759564a4a364e446d634a4546436b392b325a764d477947732f30505461324842774a6d32506a667064474b32387056324b3251755069542f0a45556969766c6e2f347a336671706c67356832544f2f6252557a644a38463146344a333234774562626655626a6b6f44344e5a4e4674513950714f6f67766a7a0a424161356532443042307a4b74766638364b375a7536524f3543462b47776f4373727230436c3339654d730a2d2d2d2062585351797153613168494973624b49564e4650624e41554672345663757a46417730595631746e6b50450ad04ae72d83d84ae257b1451461fdb72ec89de974b9c9dfdd7356e376608d056b0cd6a9c39feac40045c8e5541a0c3d30228d8d381020aa3c475497c492ea6f8ab37f32505c5b1f50625c910082116fe224e1f4860b872517e55041e2f9240cf2ff39d5ea104e1a1958d9497c5e241d70ee980e73af62f4fb8847cf2374bd61f5f0e3b68b6c6afe83fae7d74bef2df1b7a0484a9c8d2395ed8e486d5567e66167652d656e6372797074696f6e2e6f72672f76310a2d3e2058323535313920456c67706471496e532f63765842564c5258434f71786c707a4c30664e764e2b594b552b6a736656566a340a3263474d39754c79784a354f37477643753753584649446c68697471424459626154786f677a5231632b6b0a2d2d2d204e72615a483079326c774576715a493751785848776f50666f706d514b344a4d365a4978545852785834450aca028d443b8048915916bb338e96de3842e7765ed90bfb8ea125ace7bcb05e71fabc19d7bdc561210c88d46adcb3fd6e8b"] + [0, 0, "444b43310100000000000079000001e1a5006a646174656b6579636170010102506946e5bb3f531636f39c35aaa686a627037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a724154457a304c782b557835787252456870717751683859374734437761437a3765483553315766486f78746646636d3257316c456b78654677436d6571735a0a424d69496578764665303870504e727041367a52596c4b653164596a6248366a6b6a5353784e684c483065316a5337526a61317a2f6c6a64347250306a57312b0a7252664d42397576347a5856383073326645454561594f454f69515939667a4258666e4941545a493262510a2d2d2d20625865366f543648656f524730676b64384f7047363346394450336a534b72452b726b4a44546c556e644d0a7abc6e9823d4012f01694a534e96de47a81bde8c670e10cd63a394b5ec9aadcb223756e8d7007f2dd90a26c117c384511caf8878aa9cca1b116e4087311bc2b4373c92263cc72d4e9acd77b36ef063ffcd21de534579d1b19e3a4f14d88be8a3ea793f2cff2c66b363c6a00a53e39b0a28f558b7a7dd26c4f2256dd4dd1af0371c200f2a37ff1e47f10ce2116ca7b592bb4776533989e4959853e63f62986167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139204552457179397738667348464e456d7554776a64797538663356436e6d6d2f2b534e4f30353273563341300a4c572f625a484633487377304563794d794c725947416e4c51304d745055567a79652b44747676396e57550a2d2d2d2068716f5039444d5853623742752f37714e6f704f624b3071707546496257794b30674556516d76753079770a962abfd95efdd0ffc1d94da0f7742d1f0243fb5ceeafc271fd8f1491074deb48cbfb48ed4e0c3b2725012659214233e05e"] ] }, "release": { @@ -950,7 +950,7 @@ "spec": false, "dkc": { "edits": [ - [0, 0, "444b433101000000000000a0000001bea6006a646174656b657963617001010250abca02675b1fe7d19a66802ff3b6c2dd037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004000581a300781b6f72672e6578616d706c652e6d7573742d756e6465727374616e64010102426b6f6167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a75502b416442592b7870786b6c6a525062326c674a424c4c4a2b4d386a316f2f502b31653349527956314a6d52394a4d56327136714b446f62717047703663700a42786467787a3059595967375862677a475741575972645a41706f473761727658717955656b4867445373644b504b4643667532654e425649452b432f412b680a2f76565359747a486c703661516a376f666663526d7542736e48513968687a54706c4363563345384963510a2d2d2d206c4a69696247715a34644442757a454e7a462f64476c41595a753544496f526c365179684145673461636b0a9cdb7fe6c5a2f869227dc1e388717d76d61393e86522cdc190bc743856be5c2b319855cd48bbda837728553b6adc74386b5919f1d5ac99f1c44b2f9952c4a28cf54b89317e82b6e6f53adade004fd9cd1c596fdf016128854b7c6d5598e12c85c254d4f7ce6bfe79a5b56751948c5bee687e7798997f4288a4cd236167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139204d44636636346d4c7a47423032536231392f78706575637851394a3941385a6b6b396d453271536a6330590a553045684743597665394e5751544c47615176304c726243367a493845727672434566574c4749644433410a2d2d2d205875422f45574662656f794a7a356d413857364b35664b39795a79425368444546394137746b6e396543300a395c678a98a7dfd7aaa913e9b684a2f60419336e8a3a6a10e88db9276c7ebaab6b6e52a2294a3cc5e830d9b5aa99b50890"] + [0, 0, "444b433101000000000000a0000001bea6006a646174656b6579636170010102509678dc7be79306cfdb99f5152e8dccec037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004000581a300781b6f72672e6578616d706c652e6d7573742d756e6465727374616e64010102426b6f6167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a696b7a4d70577a504b707875645234696e4847653370666f2b65332f592b73722b736543597879647450546152506177317a2b783137416a43642b49764c45680a41446e4d764974493834524a59516973496e6a74357062753246733171305470446b37666c5850686837744f3974585859502b4a7744773977625754644265560a505a754f714c6270725746417352696b413237586d7234354979537a376e57454254766d357772614c6a450a2d2d2d20583968566443684c42767344764b666f59765434394165586679454364317732346b4a334d546e50775a670a4b73526ea334b8e38695ca28c372651f018854024c7c766d5e4aae3870c8d5bc5293e29bdba2152709b7d7ff7dc6ae4354ea34d6310b95d8d698c1d6f7ace64b27e89b4d616577fe4a7d413bd82aaa9813301060faab93116a9271a325272d28bc629c508f2e7902b4c3d131a74493d51cc91323cac4dac6118ceb6167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392054586f755a6e55717975446b6343344178786870456349633348584961524c35707a64673257565959484d0a50396a2b377431545a6d5a6a58556b58353238664162647558656f507a63567835595265666b76715349630a2d2d2d206e6b4d7a68584c2f38495a59364242595546673434724354746a4f734853514f5034683274493545354c300a49060ad0729e8bbb82f2e3fd4971baf03a3b726f384a3ff0354dbc47a14e9055f27c35f5e7c6922cc03a18ce912e5a2b3e"] ] }, "release": { @@ -976,7 +976,7 @@ "spec": false, "dkc": { "edits": [ - [0, 0, "444b43310100000000000079000001e5a5006a646174656b6579636170010102507c3c0bcb1c53370edeb09fc7a00df30d037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6739486953774e4c38342f686e544f415a746a53434138484e784c5762456d2f326f79495638416172367255736575426e54427a3246574b70454c536f3053540a4244415a33473352323254353647657a306b6f2f6b30675a626878554e76457455525670676f45317448777865465a4438614e3639366c54756d5048686f6d350a5045704c734b74444465677a645842326b765166536436753859476f495842747236645a5a4668306847590a2d2d2d203746435438376e697a7a326863773866745a4d4a35314e3248336a717378523470537377617a6e41704a670a53a3c590c9e1832a645f2ec5348a4efde9bd18bbb11d82efb96d258cb0c9a92e1333407e622403a971d68e04abd5d724583cc28b6e89548c11c0524f35b294c1d93ee68b21e3128e63c6af8ae9442aaa5c74436d8fb7ae2d6b48bd5b67f1b495a6658e0ef36f52f9f46d0e9cb0241e9457fb190dd747f0c81068d7c25b77d523e68bf4972ce3259f489c4f4ed30170c70fb3fb9e67eaee5eefd15cfce13e1fe3f93f6167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392059345355544337426a6c344239562f483043667a647a7478535145484979793048326d4b4c64413035426b0a3930457938764d56314e774333332f674b6157344e324d7874556f6c4c714d2b632f3162775a31397875770a2d2d2d206169624e576738766c6f57674c307a37656c4a3179475237494b6f6c2b41486272712f37345953615366380a116ff5faec36dc3ce211f2aec467b79fb39217da00ba25286cc220855bfc5429f95b06ea4f3ae396d7bf75b3faaa88f42c"] + [0, 0, "444b43310100000000000079000001e5a5006a646174656b657963617001010250150c4bed590fa8b69b37b24fe7449e74037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a70334d69537132514d6961786e7748714d634751642f48565241504a6d3949546b4e6477664d692b676768423944736d32576c364d51374c58325277665749590a435764752b36647a6763696d6475517243676c4d61725164654e6a486433513771624e6a4b73465a66414c583965447355544654704c656931734a7838596f6b0a64375832307557434b6f594d2f744f446c2f626542455255557864764d534b324945776c57434554317a770a2d2d2d203763532f66597a71484f322f426c616e6f4e437565594b665771584f573945316d7a2b5143577638654d6f0aeeb5fb7b4db2e6e42e6d3c200c696c6bdeb9504c65725280bf42774d5abe00fa34a86562a9888e0bd6d4942fdac56b4e66bac743dd201f6a73b13fe9def0d938eccd486b73dfb4c2caad35cdcdf0fd9936f4368a8e4ca4d22eda33bd9ed47d07ca8094eaa7c4fa95ef18b4794783b8b6e87b29beb7055fe05e9cebbe3c6cde8928e4b3cedbac127226aeeb9e5fadfe30c80a5cadfdda0e4ec1280349d5f1643fa1e76167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392069586436427564694c4f792b3855366b7446665a5079434f4335534951503863774e6231773436423142670a496d6b2f69716f67336d5a586a4643395435345030626f556a56612f75466e66376a625033584a4a416f510a2d2d2d204e724f526555422f497545796375446f536a6f796838384e6c5341546e356674546d6b5535304d62676e6b0a15ea15cd7225a5a36f61cec1ed1939f0ffb0c535e413a6eac9c178e9baa6ee28ab677603b4ff666a83f360c9caa2b1bc53"] ] }, "release": { @@ -1260,7 +1260,7 @@ "spec": false, "dkc": { "edits": [ - [0, 0, "444b4331010000000000007900000286a5006a646174656b657963617001010250eba68e8138355246ac01d9911932042c037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a71444851786647764964397a4169354b76344e3735564d36302b5a64434e45446f5a68394e6a464f454d6a5a51625a6346536447664e653933777a374c376d2b0a416e5148624938317368384b4d4157782f2b333254736357637735584c526e72764447564e483042363254655049356434563157627971544463577849346f300a3830327442683663515a4537384a6933446e67656f4c65757459693263774a395966357078664e675462380a2d2d2d203330692f617771576866747a56564a3272445959303333374a754241724e7167316767554a3541737068770a58405e1215be567ddfea9fea50dc37a21bbe197d0bbd4196dc1043d9eb43320ca4e8b66a5b6620e1bb93f7d3a6bfb6de32b79b680895b91140e1db9484bc6f9aa023a88dedea23cf3bb871141903165e5e965921933658c0056bef6862e19bea2357c6236205b59be9b222841dd6d3fbc6ac8a0e72efbf39bc1ed6a197f1617ee005b8391c119631fec327df1239cd1401d959742af7ac7eda493d7689ae56ba82a4d1c6c0c2f64c92819f34bb35525c0a3ce122fc31cd8fd9dea81ca4871f6a068e8c9c79b3a6837bdaa9651217ada3d1cbf7d02eb7cf1631ec2688eea893f81439fcc11af68413a9c58d2c4a120dcc4ae999e7d0a993bb2a0c21ae7513515d53b35152cc5995a97650164c9eab0120b4be5f3645b061c1fed088839ed4691b997a214d95134c123db5b4f6d571e31647c518c97e5d9d11bed4a19e9e047b1907e1206167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392032674f2f784a506139626e7370346e706830563741783652385648434a63526e4e645134357961687852340a6133426143304e33326c45456958487374494c4e54735531673256427a36775a5a79536c465546573142630a2d2d2d2069712f58645a6a61772f4254485a6e7749663077322f6872524b496c4a4c4753682b7847524d57437457490a08845c17518f84c3c169c3ed5449984d5c815efbb55890d2d6870a598bd2a951d99668c7e3c61fcc3e11c3df1fd6128ca5"] + [0, 0, "444b4331010000000000007900000286a5006a646174656b657963617001010250238e2912d6448dce358dec034cc73984037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6f7a6b4942556462446f506f4e384449386b5a6b2b3152443053365a3275456752774f48327643764b66494470746331487530553370376f63466f72766352310a44545a37427847535541514f43333845744a734f577a4c676f6b307259316158692b7156714641426442686e784638646c646a4f303562562f67784c693163470a56303545306d7631354d3456396b506948436c69733773766e537a70647961692b7a3132492f68766e56450a2d2d2d20544d77356e5863794e4b6e5864307a66425541587041784d4c70464737415758382b3034374b537853746b0a53271f0f3c6804b29c8c0eaa94a2a8f07614ba1fefdf7ea874dc22c4d52460b845f85001c3c8f5552624376736787f68d618502b4734ca836d1c1edd57f505a9f69c46e59b56505091758a69f73cef35cf1a396274cbfeed30ba1f4603d4dc93a1fa8bd349705fb8a77f9d0ce78f27aa440b66cb31121c6f371f51a97362c68e33bb9054092eafb0785d1ccd8e1ae22f1cb019145a03e20c8cce849c6de0305fa8ccd32f0e93736fe1a53023b16f77250b8ed1e59fdcbce13bfca0d0254083660986fc703b86e1e7bde4522ad9a892662519114a53cdbc968c5fd01a5fe3b78d1ee6977b4b3362e9d6e8aae7ba63cab256a2ea18f0bfef75ebd350de869ab11e9a4ab3c897a1eefdd2b950778c0b7941015af5488e47e472aae0744c751b1823f7d6f923f2e27dffbd4c6e69542ad73a9b75c6d32a4170e4a0099bca1fdb65b2159e4d6167652d656e6372797074696f6e2e6f72672f76310a2d3e2058323535313920567a7161575a2b505844334658513071676b78687873635a536344396d2f765a51317867356d6d474f77770a5167335a7672435375757336676d554663356b7a366f776b506971457853496b70654c6b4471432f7947340a2d2d2d202f49442f4e304a7a4e48512f4e7043776d642f75354f68764242646d61544a4a5a352b315a6e66575541410ad35f0213c77497d92a8fb2e5f34b6e9fe1ab97e1508449ed20985a3fc775153b0fac0aaa2b4cb43e9eee51a42db0f5031f"] ] }, "release": { @@ -1279,7 +1279,7 @@ "spec": false, "dkc": { "edits": [ - [0, 0, "444b43310100000000000079000001bea5006a646174656b65796361700101025057eacaff7bc9814a98046c4c68ca468d037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004016167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6c78796337346f6b4e3338796255486e796f7548345a585044626a365867474a4e69713968585838575851387a555855335349772b504c687a4c705a386a76730a443778382b3054764537584f38424e6b7365342f34476b72534d346a59724b377431494f6a627070754249696d3352394674692b2f61724b2b76486d51414d740a4b4873384a7a4d58744a53683773334e4a31344a3377726345564c564941303637305061594668652b61300a2d2d2d206b7454684f63646130563553374f5938644a767a746f30304d4b74786a7a724539612b69352b524a3578550a410f1bf2f34fa60a13c27607991777b928180c9cadca7d845f36a931eed847b56ebc12d1363493a794e5e7c1a6c552d30d0414900576c82578a0435aacf48b40ec10ed7f35e1efda3e210fafa365e78c1aa2917cc7dfba2846ff40ffabeaf0640a8910449409d77570178880e7f7e5563e1922e37aa3e0e46a9f626167652d656e6372797074696f6e2e6f72672f76310a2d3e2058323535313920594d444c6f705051466c73425a507466564f4a31374e38556e764656492b6d64564d32472b5563643847410a50533370574f3633304f6e526a7030682f614e564e492f4b4b5836436f3832626554753856366c377076300a2d2d2d20686658517378423864364c4d506b63456d3254754d75776d725042437248715555697270594e70666a6f6f0a4262ed452b397e38cb5f4f4280f9ceea7fff2bce2dfebe440ebb89f5e53a8469f22933a717e199942022ceb130766ce362"] + [0, 0, "444b43310100000000000079000001bea5006a646174656b657963617001010250a44c9b18fda29aea727f5398ecf967ce037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004016167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6c63594b7261596b51354e557a47317754473534504f723451564551544f33776f724e686c473958763548644a392f586e616a632b38763861475754727859430a47433451544e46326470686859426a786c584759342f626933462f44652f51387a6b326f6a505943614b4f64686b315162713536735a70462b553734425631690a6853376b3068665875307a56784a793730383362525a47514255646d51327770786d374f5175347150426b0a2d2d2d206b4f56306272485667747469364b37386957305463794635304e4c30734e5a674c43596c554458737833410afaff86b4cfe31e63c8a8b360650b864a7fcba198d55b30a3524c9370c874831599108ba46272731fec572558bee41ca296eccea63765fc76edb94faedf7ae2764864d8407f5533c89d66f50eb85976a984dce0183e12bf1fd44495dc6eab3d0a97dcee74ffefdc030bcead0c91e75bd356195a93f581aef95b7fab6167652d656e6372797074696f6e2e6f72672f76310a2d3e2058323535313920747151414b6973347757355a374a57314647446135685a78695642565854756e34696877425175496179630a316d4f4a30652b5439454f53333271587272766e3458614c745a4a34537870764c4f6136614431357379300a2d2d2d20314a6f555851314a43536a767730747851776d58566a6851715356743079546d57426a447564496b6c6b6f0abc50d7be64019eff475ba9913433030b11f821ae0258d42799a9c91e9ec959d7be1a2650e9375e4d8a58ef9cfced9b725b"] ] }, "identities": [ @@ -1301,7 +1301,7 @@ "spec": false, "dkc": { "edits": [ - [0, 0, "444b43310100000000000079000002e8a5006a646174656b65796361700101025065cb0d1fc1c72d136707c2285d34d602037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004016167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a696a34504775343173586c755a2b7943614c7743516f34357438517565687936694a384b527854703349324461486136626b6261585367675073776a687041610a416e756949674f5a6d6f36384249667a75347a6c412b6e57717a537745754d4242703636326d5339436a4f58663038483758656271464c3464367562524244320a797247517768417a484f42386d4a4f6d4f77596230466132726f7861512b2f66586a6d5944723053386a4d0a2d2d2d202b367a795958676b686a4a59484c454d746a4b70683571456c43486b716465346b62636d375639654458380aa9cd9c84e7cfac5bbd3d3b7894da6e579c56b720c7bd6de0c59e41e8cfdd0340d4045b285513107bc3247e6a5e2e54df7e1b96560de030f2af33d772d0ece5eae89681f26193bdfb066570af4d61708bb3461095cf57f5015a24dc21980bf0c0acc9bc3ea234ff9bf5b36ecdd78e78ac14528549d4a095063ee2b032fda952f48a4114e3b5313a8cb6f8150295ee1a275cd67897a57150a0c1c04c0ce56e5ee7ed5a4f4d0adfa203bf9adcecb8a1a94bd079d0a5d2080608a3181dedfe789c4c82001276066c849042a9cc7b286f2cbc2966fc196a43f13a3f8a5526f45e49d55189f831f1c5e1e14f78baa7eba6584ab6a0bde54bbc549541b6743d87a701a6b596940923a52861c4292fcd7e2ba081aa3a3277834df696aa80f012a08b535ccf185b3f38b2a889a0b67adf212af660f56e4444098ef3d9f0246566106f155f0b363a99c13af732d31707665cb70706b7c04ff8679f19db77683927443cb442cdeecb970775185e6f4d35e47e6adb764bc6d997f9c264133cf457b2b3abd01cb7cd0e4dcea0d71c7b24dab09611e8d59a8620c864af749e74b847306f3f55ce3a8d126f6e6167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139206d4a64704730666b3134764767337853556c445665645a7152644a497735694576693866484e466b5a52630a3065496e4f4f53792b30476d78515746506b335333344845685061734c696e4d4974456435456e6f5a336b0a2d2d2d206277344d34446a4459715879686553704f70314f746e6a344a4f363375574643657a3743315470635a47550a3ad4815c963d290c955dddc03d99ed4fda4a45acefe13c99efb5cc2dcc935641e7431274273aa210bcc8a44f0fa77c35fe"] + [0, 0, "444b43310100000000000079000002e8a5006a646174656b6579636170010102501d983beefec16c1a312696440735330c037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004016167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a69446a755a45755974753163303752634756664f65366a6230485378364c664b3933597778386f424e53665352635061332b4758683437716f32627a317355670a476572634a6875506856674b76795137386652465a714339643051534a4546494b6f4f543946596534383164696d76567468325a6d4f733969424469716532490a364f37444445625a36676b4546396f4150784736526578544246664f7748413248507136464d444a7673550a2d2d2d20324d7a364b314a487767506c2b474c74624866484544446735426e46366e424e546d4561616464562b59510a27cb3d15dbe289a224a6dd80ceb66efb4dc6fb517f7e53f585c5e4c93c900989c84ad7c41ceaf9e537af3ed0ce6882a671cd6a840055e9a6ca7df08aa1fa21b1abc2b96624c2cfd748da69b63101ae8e37cca2430725a66645e11ee9f791ea2e633513a1ad37903654e2682043c47f919b2625247a3855519e2cb01192b0b8018a6d7913ee415b54ed4431d2a8de56e8871dce625189d254de34a290091babd44d59271e9e4943fafb56b56758a09e79e27e311261f572be56a59ed24dce10622306a7d2257f8f7cc30d0e1830fd6e2e2313246a608288eab1feae61e1840defe7adf23f925a55689c3a5dbcbef720ed653ec07819af71819ba163dc4a0c71f3f20a54479575f1cdc39c60d5e4a1dc0e18703bff878e311881c1106c27fb40050efd36174ecdf932a23849355ca31a2bcdef7ac522c3bb96e57d7c99dfd38ccd13934d01022b3626f753104652aac296586f02860707873650962cd3f54526969537aef2dfcd03ed0c0c54376f3fd2af298b6b7b7c6289deee061c76517f36b739e5f279bce68d9debc1d977bfbeb604e447c9dd4c75e590fa5ac4e315f8ccd0f4cdd6a02d6167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392066524965746e724667663776656456524c47384d746e32444e74707655445a36334755396b5737764d77510a3341357939422b762f594653643250316e7570634467714f7471384b675a3571667869665a6e306244716b0a2d2d2d2054333453676e56766a4e554a4a4e6e3555644855457346394b45774f4c4d3846625a4379622b4d77337a300a2876bbc497d30aad89b7a398c450b2ec4379051454812064220876920857c12b6bb9879ecd56878524050dac76ec3d8bd6"] ] }, "identities": [ @@ -1323,7 +1323,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b43310200000000000079000001caa5006a646174656b657963617001010250c8cfc53d45c879da916edddf71f3bddd037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6b656b454639304a4f4d42577a482f5a423659377833734e507a67657239652f6372326e39664e4435484e78413737335244696b313248386435684f494275710a4258524f494c544d6c68717268533569337735635672572f657877684233786151467a3238497a4c4f45525a78753733626a764f395136546439474c4a6a46590a7236765253534c4d515a73754355436f4673386d6d54497068742b76484f6f6f59456f2f6c593261702b4d0a2d2d2d20366775632b59383659546c332f565a456a49784d563734626e6a5162432b68555a335a683149397a4f63590aba78f76d8c46510923279837319ca4da795ff50969ba6c42c3d2b1016f73d19eeb18072dacdd1a82e51ef3826da652e7d4fe10f67b49c972076a54b99b2c3f71d24f1058b9e0e850191ec8aabe3b859bb91c7cec684587ee8489aaae5f1541209077e02915c7b612afc609708ed16bfa1b44e429d8bf587e7979b3b484cd9bdaa7fa8e70d732f86167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139205455765a74436b5343347579546c68554e3957547037616b4547435771434a38525666324d764663466e380a4a6e426c4e57366b4c563366453775535333617347446a6e6a34384c374763484d494c4d466e30335774590a2d2d2d204d58484371435442755151662b63657a4b7656427247334f652f776d7557464543457641525a33666965730a469b5531efc2e60ba2e9ca5b79f6707a8fc21a8e7b4b30d35dafe591620f97738f65ee136cb794ea861fee4e355663dc7aba867a1d589de1c70ce01130c3913a21d8e0fded6031c39c18bee50a398822f7c158ba056d9cdc9ec3aabdf3dfde811650f700360b5ad90bad271b17501d661d0d1799b9bc2140312ede8fee194b1c6b516cde97587011cc69ac19b9ad9d1f16113d4930fcda1299b783ee0d15c9ca538be7f8ecc43c296d13fef4d4740ac34c631837580ef8871a92163574509e248d7919cebac2502899ab4098a046a7664984f962580d5953572e129874f28f1ed6f8bf44f46fb06cca5e995acf6fef20c706e5042e36a23d7c2a301ee1b5eb0fbae0a33c74b6120d08704fd856db0816041674f2ffeac3dec052dad43be2949d"] + [0, 0, "444b43310200000000000079000001caa5006a646174656b657963617001010250c8cfc53d45c879da916edddf71f3bddd037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a747169434d6e35774a344853417548703361596c314e54686a4d67526934593737454c474d3058546c6c306852724e715745745a796d717032564778373748590a46676557557158705235686d7574674c676a61613561665462796e624437324c2b6e754d2f613835797452387841572b5a333936734d54384c2b772b487339480a306b453875366152727279384b6f4353525a6f32634656397767687a2b41336b574c596e42496a614448670a2d2d2d204348783455737050492b38457949444d41626f43304a36304f31447364785356306b716731626d344a526b0a20d9ca389ded14e028fc98ad637c8a95fd0c3ebadbdf395c93b98d3a0a9914d9ab07bcd0b7a64a4f349d9d7d999d6d13b1d84ad4ad4024a1db6fec29c0e0eea1e9787f0a45cfd7ead1cb034e27ffc10b377486845de87d1a358b01ff690e1b48dc584d0b570fa38500e98cae61bb3fb0e38867a6bb6f4862f6caef9ec6be7d5ec50fd06ec90c6c6167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139206579636f762f6a55467a78377065625576534758746166306c7058466b71726f44416f49316e397535436f0a762f3244613867505973355a645a4368724459514f4a545543786373435435617759486c31792b38554c410a2d2d2d2064746c4f4f69556d304844384e4743517561484d663146413454327350425637636c795841686d4846626b0a6531c80ae76fa240364583de6b60c4705324a3fd1bd8c642dd14cebab8939e57b970526958d36b8a4516c0c9e0eed6c896d34809e368417446aafa99cb1ced91446985f9e862076395405c13da232e957096f066cad56feeae9b605e21131f39becfebedb8a54ab7395614ac45145d82e99ca395bb9b7b9841f12eeb4efd3a69666010a28f1722199a59196db2e7e2c9faef2eb3a4eb7aa9929862b87c257198fd1d34d9962fe900aa492613b71e5781298aa479289234157f042a7b6e7a1ed8e1aade69d89d16f9ee8dc2f4807b4f2712549f7b0b59f28a4da8a1dd6050c303f7d4817b878fde6a56b87bfece395984524937a38ce15fefe455891cae24c835bd8dc8ec2b5f03082901c23a0780135d5ef55a04b7c01067a4995ec5c6ab1695"] ] }, "release": { @@ -1342,7 +1342,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b43310200000000000079000001caa5006a646174656b657963617001010250c8cfc53d45c879da916edddf71f3bddd037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a7042756e7061565a6d64544968414131704954704632797252584c67616d597872353146647a4d2f3955516d7776306c506f624f616f44503933787757486a740a41506f442b62626b434a5532324e61664d3957367a6a6a704a364c71385773423645387233456c6d7746434b373057597958756e7638426f30632b4b627731340a6d364f332f777967703971495a43496f534775304c427a5737435a673945394d315648322f684a7173476f0a2d2d2d20687979676a2f692b777347494f316b394a7652656574416a56774d34332f4e736a67704e6333434f6361670a5eecba56ad5b1b89b5795934b152d3c7a02b958b75c5d115516b01bab5a296cd7c83b956144f17be87fe38c445d05bd3cfd637cf8922286c13a9d2112e1451adaaefc9b21a1c52ffc45ab9338a1325d6344c84f56498e861a153c826f192e332d331dcfcc67596f80bbb64e9502f9c6b6c48c20547580f4f33940820c195ae5a1947cae2559d516167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139205455765a74436b5343347579546c68554e3957547037616b4547435771434a38525666324d764663466e380a4a6e426c4e57366b4c563366453775535333617347446a6e6a34384c374763484d494c4d466e30335774590a2d2d2d204d58484371435442755151662b63657a4b7656427247334f652f776d7557464543457641525a33666965730a469b5531efc2e60ba2e9ca5b79f6707a8fc21a8e7b4b30d35dafe591620f97738f65ee136cb794ea861fee4e355663dc7aba867a1d589de1c70ce01130c3913a21d8e0fded6031c39c18bee50a398822f7c158ba056d9cdc9ec3aabdf3dfde811650f700360b5ad90bad271b17501d661d0d1799b9bc2140312ede8fee194b1c6b516cde97587011cc69ac19b9ad9d1f16113d4930fcda1299b783ee0d15c9ca538be7f8ecc43c296d13fef4d4740ac34c631837580ef8871a92163574509e248d7919cebac2502899ab4098a046a7664984f962580d5953572e129874f28f1ed6f8bf44f46fb06cca5e995acf6fef20c706e5042e36a23d7c2a301ee1b5eb0fbae0a33c74b6120d08704fd856db0816041674f2ffeac3dec052dad43be2949d"] + [0, 0, "444b43310200000000000079000001caa5006a646174656b657963617001010250c8cfc53d45c879da916edddf71f3bddd037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a7042756e7061565a6d64544968414131704954704632797252584c67616d597872353146647a4d2f3955516d7776306c506f624f616f44503933787757486a740a41506f442b62626b434a5532324e61664d3957367a6a6a704a364c71385773423645387233456c6d7746434b373057597958756e7638426f30632b4b627731340a6d364f332f777967703971495a43496f534775304c427a5737435a673945394d315648322f684a7173476f0a2d2d2d20687979676a2f692b777347494f316b394a7652656574416a56774d34332f4e736a67704e6333434f6361670a5eecba56ad5b1b89b5795934b152d3c7a02b958b75c5d115516b01bab5a296cd7c83b956144f17be87fe38c445d05bd3cfd637cf8922286c13a9d2112e1451adaaefc9b21a1c52ffc45ab9338a1325d6344c84f56498e861a153c826f192e332d331dcfcc67596f80bbb64e9502f9c6b6c48c20547580f4f33940820c195ae5a1947cae2559d516167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139206579636f762f6a55467a78377065625576534758746166306c7058466b71726f44416f49316e397535436f0a762f3244613867505973355a645a4368724459514f4a545543786373435435617759486c31792b38554c410a2d2d2d2064746c4f4f69556d304844384e4743517561484d663146413454327350425637636c795841686d4846626b0a6531c80ae76fa240364583de6b60c4705324a3fd1bd8c642dd14cebab8939e57b970526958d36b8a4516c0c9e0eed6c896d34809e368417446aafa99cb1ced91446985f9e862076395405c13da232e957096f066cad56feeae9b605e21131f39becfebedb8a54ab7395614ac45145d82e99ca395bb9b7b9841f12eeb4efd3a69666010a28f1722199a59196db2e7e2c9faef2eb3a4eb7aa9929862b87c257198fd1d34d9962fe900aa492613b71e5781298aa479289234157f042a7b6e7a1ed8e1aade69d89d16f9ee8dc2f4807b4f2712549f7b0b59f28a4da8a1dd6050c303f7d4817b878fde6a56b87bfece395984524937a38ce15fefe455891cae24c835bd8dc8ec2b5f03082901c23a0780135d5ef55a04b7c01067a4995ec5c6ab1695"] ] }, "release": { @@ -1627,7 +1627,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b433102000000000000790000022ca5006a646174656b6579636170010102507d965df193d494fde4ee98c20f4465c3037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6b365641313277544a4f744679425a7a5a2b7a774d704a697735787955446c4a4c73564b62644739465879716a34766a6a69542b5376524a507a78424c2f6d680a464a2b6c4e666c6957726e55756271736139586e7959585562484b64416648654d39383064573772774b7a503877694e41714b67437848486a6f575549524a6a0a64564671514e57493433766968643775696d684f62726d65616254336c575652726e5761686166446266550a2d3e20583235353139205a76385075384a465a5a48636749692b6f4b573671384a496250484b4a645270594646556b62685244546f0a67304b646572587a435545676b503168627169696d5a4c6c6e4e706b763136717576777042536e446842450a2d2d2d206c564f72355a4c74624e707662413670317a6a686a385055512f3538593876716b687431456241586e71550a1cc8cea5a51dee728945c44dbb55f5cc6d7bc34ef07cf389224c753065d502a7e86e68396bf5ba7e68310f58988ebfde618c633ea2a09623feb08c2e3eb3b89b46aae5b611a8814df7214f2b5eb73c316c618d466b0735c40086a36df23a12c52b8c774907c4cce86803ba2a9a65ad40d507f5673115629f2e2ecb90e6ff2de9f97feeb06adeb86167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139204674785a4c434f68794c504d686565502f4c556d7632395572544978484f724f32754c6e484576712f54730a33446e7855424a675950697441624c7a754b3167756a41355a576b39676563523458636f415662776451300a2d2d2d2065446241336d5657312b46355457483467727833472f497a554357566669417138627135416a4f386231670af172099346600583f15edbbf24840f56f3d5441129772e44978c99f139ba6898109c5e86229e21283f25f4f7f5ffbfba815153ff2d78a5b2cdfb8edd933db2b07db2b64db04a07261e9a2a4db71a9898dcfe0b6bf75623a3462233a5998367a2c0979c5e5cfee9733a02a68609b74995c487f33196d054c0cf4d80c8028820e21d0d3d41f796c05d5828999c33f93c5bd20d4f2a782bb734abcaf8e2653eb429dfd305e5d68de4290b3e645022af501e389ed821f80f0656c22074571132552ebe3572889d6cf84d393257c09ec466743b3085f9a078540a292c4dee3d823ee7a8ee0c0276055a11e599359e996e95ea07d12e315f4147351b58019e653647367422ed8a934beb1261ea0d2bc4ad4555efbd0aac40adea788495ff24800f3bb6"] + [0, 0, "444b433102000000000000790000022ca5006a646174656b6579636170010102509667d509fc51ccede898d232ce74d47f037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6f7730745778654453483335466a5645596669326357644148314d5571524a4e42662b4f674f55302f44356845453548546c4f6f79382b3357394b7a624f764a0a4564484e484b4e5958477537384e46614c744a5a6856616e6a324f374f427076743645346450525a62764d5732702f527535707662796c664d31464133534c540a4845562b7248656a677343436e5872634b4438534d626b62624750356153755479327669354b635961346f0a2d3e205832353531392051755a35655a7173507353436541774a6d2f5a366554534c4c356d617854524f512b7952695647446868490a686b2f4352324d6155742b6449483377524344644b4b4962615044355141503076704e4a584350327266550a2d2d2d204e354d6145445a676d4d4475346d546c6a5544454e74756a356977632f72544138394d477156426a484a380af5a609b3e1c6c07c495009ef8ab8be3b1a40624c44501693d249c61c44a90e75afbc4a61e8a178a642072ba9e159655b290668e9758ee39aa32dec8cb6ad9c69d30ae510acbce156cb41cdae9ded15f14c49c88bb0285ae754fcd5c28ff60e9b00829421a472f4afe094e32193d13fa778eaafe6f4c4e68292e0e7fb30a6b7125d82bbe133a5426167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392046506762587a524e4c6458545332544d2b44566b33322b326b734643746b69636457774958737a704f67450a717765706f71434569463532484b6e534b3776306379744e547956615879423654316b7270573372664e300a2d2d2d204b6a6a4678647847664e486b364669427a3245394b756c693530337030445833714d3536674e4b2b7762300a3363ec5bcf70c969c5a42574d0398610b451fd550e4bfe06d7c5991423f1de59208316847e91d902bb42e2dd6e40ca2af922ee0fe19b231b7ce2713a557ddc7ba7312e7525294eefda6368299ba57164a30c1bc9de72b1a86c675858b9f0b367dbd9e3b63640f5b2cae0405b751f30e24a664706f9d4e617e166dab34cc948605463ac930dac800b882f36aeb82dd26032031cae611d07299a0cca510f7282738e1ab504b9bc03e457e7b39ed14b6d1940ad2268b58d97d9de26eda8817cee478b6b25c682b30d9afbaa8fb31754275ba1137fc4cdfbc7ca8de64e6f807a192484f96bc46c1145eb6d642b5f820ab15689a43ab9be9e93044846520dccc4fc6d35bae408de5b2164c1e04d7394cd43e6540936e7548a42916995331b913d8f6d"] ] }, "release": { @@ -1646,7 +1646,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b43310200000000000079000001caa5006a646174656b657963617001010250b95e3e9843b73c6316dfca167b6a0515037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6b6c335773644b364e75615039354f43756d7431396e61636f323764596f4e632b4752527438445756736a6e4e6f70414f5876552b7838302b2b3366444537370a41547a4f45655a4f70706f2f7448466733717367786e63706f5475557039486c5654644d766b725a42634d7631484347772f3961324f474e54517851315364550a47424444565356724b727a66714c78764131714f62507131566e42744f322f765257774b66554538335a510a2d2d2d20536654655078535a714a59666b36335a3453732b654d32354b4b414a2b2b5a5a6634754141557133394a490a5c5688c7b3dab00a78585607ac15ce2ae5650a73fc3a9ea33b2065c684b8a5e9e8d29de2c95570993f2ca577e72b44ff93d56d236e3538d2f23678191f28fb106c45953b059af7541d64067d143a8b02087faf290cd704ef0a05e89a652b73e255575d3540955c81ac5b0efafff22fb73b85dd4c0de9a596c9ecad5ecf35f2339e3c6aec52629d6167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392046657039356c66327a655077783970726a646c563069796b746176524b43486849555a74467861314d6b340a7958776778686d656e7477506a706c4d677079776379474b594d2b5a622f57764c6d426f4f436a4f4b6d550a2d3e20583235353139204350636165716e7963624f76524434654c455733436134335a476555304a34583956505a6135574a5a69730a774d566f4e3654425946456f423273325a635539314341765852536f744374553031626b4d39644458444d0a2d2d2d2062576f44514f476c552f3157446145577366646a557a712b6c6834595075792b484b5663596d4b79322b510a99c9cb8ecbbd5498e783e17e9abbad26e5a647d0b2cab86560fefa2efac640a21a6de5152cdb19f4a54fd8956a2d2829aab5941bac1211ee5111839483d1255bda15c58fefb68124bdea126c6ff639fe80da29589b9a727df5ac7e2a5d62f9b90a431a9a333d64e4ab3d5ea690d3c27002d02b64cae39c9fa50e25aadf1beadb43ff35b73ae636baf697ed6a4d96eb718592a3152651c6e57aef7adc8b7f94d54847ddf87986fd08c7153161804295e730111a21a9a2e74d5a2cb5abe47091c81b47cfda46287b3e0fa45b788d3d3636154ec7627909f2705b3ead28b789f1f1e355ba9369d81b5234382603c1f2f85918f0c67b1548ac106753ddf14bfc0a46d8da23a061388aba9c8059c225a996d1338c4e2f9aa44f80718c78a9de80bb9c"] + [0, 0, "444b43310200000000000079000001caa5006a646174656b6579636170010102504938a3c96f0d6e9a5e0d81dc533705c2037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a71383353427754574f644e414b56714664452f396b7a455145527731414f6d355544536d704478734f306546526f47762b4e325139514f766e714849346356480a4362504a4f5974696a39734f32565034307578615167755552796471422b4f656761635837763350792f6751386646555a64736c55304d6e447558344f5934680a784a50536f7577426155436c38524a6c68487851516144396752677874713234354b304c793731315831630a2d2d2d204b596857444f5639465145515777516c7a6f6f78557478487546476751375476372b39475067632f504b490afe9c3c063fb3524d534637f2d690a45654a0bb5e8ef32f21b48be6c7e07bc93afec5622bef34118cfbe8350c92b7f8d51b748e4c897337fd5634cf315896d79fe6436be333dbd0f0f0e575f8e30fb9891c23496c93fb6bfc9a476360eb14be58aa598968f18054502769a2178172653865596c4964300a22b667017996af7b263d2e85f42f2b4a6167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139204837302b3341595570564d37794b756c34424279662f793547306a322f675362534e4e5473747148327a770a4c5947344136624c362f5454365378726d58355a4f31636c35574e7154424d4f7235384833675241775a450a2d3e2058323535313920754e61645761433059427a447a49626454664b3950584a4d6c5536564766725a4741685379694e317277300a486368726f6b6968454567506d6d4e5443776273726e31526741492b6b7158397551455178356a382b77630a2d2d2d2073596d44496b356855706b315a392f366c4f6146596b686849304954644348757a504d3777524267304f380a99a11cc1dd687dd7284048468cb9d4e39aa1f66d8cc162907ffc7376497f87c12206cc2fa115c64016fc7698d3f619d9db3fe99a93bf67d8180f0e61bdc2f4baa584548a6285f2c00d2eff7fe1239e595c3da69c5acc7e2375ad5b9a1f27d05c666f9d74083ed8e21a8590ee14275bb3416033eaf49aa8b5e3d8bc8be7c913a946410b07abd4216d9c4235b7c85355f17b6858372155964d1be8c60159ee7c1dc6e943ef0a69e837e31f586b595eb081ce83cd8ff132d213a35082ca82e30c7a95b5816f6a1184ba1e2a35353288435b08dfea1637d764ad391613aa37aa9c30748aec83b48dd99d690ac3024b2469edd4e05712b7eb4fbd5bbe871b116f72148a55c87e266b51f948e5954e37b839f6e32c77aaad8f884c52ef8553a6067bb7"] ] }, "release": { @@ -1665,7 +1665,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b433102000000000000790000083ea5006a646174656b6579636170010102507101efd33d947a5f5c312d8b4f20b80d037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004016167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a7075795968655144322f4c776b4d5150353451696d4459396b41556431544d67475a56513231704f5a4f77484d4a576a665848624c3043696464494a7a4a69360a45516c7656746a667a446e6b33374e4a5661386c445635485974516862546a65774b6f59706c413674597962647377477966626352424d4633527454344955300a73525a6f2b5a486f336d4659592b39645a5971596334424d334d624c3441774f472f466d515574686e34510a2d2d2d207435556a545554304e46354365664f3633755a437844612f5441584938366f416e6c38596a3274644458670a3b1c80bd2304bc673d6f2edd941c69cde8b5897def30e3d36c440d64d3c72236dc5fd04ca932daf26ad70efe2f7a319b31bae8780fb87a5605812de8e650d202cb77a9aecd1089b645eed51945cdf6a84e6db88404d7f232e38d4469d7e0813e5333e21564c5ea777d3eea0200459d0fcb647461d5ae47fa30a375cfa9c720a713533586b55a7ef547110f853cb845ebbfb807023537752b6f69e5e34818674f331cfa54bd9aa5d1710af7f71ef970e2ae11a12e4c9598724cdd7f8409b33dd8d3523767948d0ff3dc906dd138977eff8677c50cb32a632a2654e18f30c92c302dbe18b61dda1fceffaf6f2e21fe05314ac6ac98836294e16584f67124ff7a1d0ace79aa96832cb4aa5c488160a41a9b4159fda552fe172be6c8e71b57870c41630e90008b24dabc5cbf3532265ee39647e0580a3c302ee53e1877cf328e6e567493681b7b1067b70d78893198af4679f7f65a24cab69e11a4ac8044b4b8bb69eedb3d3ae49a2f1711b59dd0620095942fdcaaca816a3929382b1afb5daec96aaf54a252e65d90255e063d4af36a9a391a9078b464980cf2c9f981b207f9b0c28052e47e283e70ee90b6506e2ad4766408026015393e4c04a83c5cc598d5a68143dd049f9e32a6bd7415d985114328cd33e6dd01bb2a83cd6eca8011d5da74e2a8a575368cbaaa82542a44f8c876f43c812b5f3e3444f8994b10ab3e5f9db8481d5038e0d037de0ec0ece641a49aea6ddd82973ab433e8265ed8aa80c2f0bffd1b138be7e89ae4e735bf5ecad6042e26e9f050625958b11bac23333d4f3dad4e387bd4ac86a0d1cd267c39acfe6efee718c214337a076ba9e0834911accd474f2c81fed78b94964c65b6a5bbf04f4000bff8504d3300f372ed89a792a537d4c5c235b822fd102f4b59c8af59a416210dc5182737ccf23e2b5f6b0a18537c60893a88e22818ad33cc5a1b37c57612b3c999458eb1f518902e137f2ee6d44524df253178898690d8aa5f454c184d1d8d75389186bdf01468a38dd4c7307c4c3fe4448a92e82e812eb20ab1bf17859436b768a438fcc4e2a2f2d3ec05ae493ad46e171bf37dc0e6050763c9df0d1b0a6c638b21a01fa756063b3fb105b05fcb83555a0c2609c39f9ebb65846e156890cf83779f9bf83a25aade2e742a26cc3e2ded117ebea279d47be0f622cb205c76ea9b22560be5423737e135edfd9921f409d728b8d1dbbca9dbaf84e214e8e4db5633a404c05f4fde3916fe11175aef9b3668a51cd32746d8cf362041d2ecaca49299465c160f048aa1f8dc706eab34517ed61de9b6053496a3b336417c6f46b16d365ffc9dac9f6cb73608bb039cc97899bc29702a6f0a23ebf7391ef114955ff2196a07e49e71de787c90a5309c56a05c8d48e6045c3707f5d386e5a7d913fbc56140a6f48fe9eda2c827426fab163b03573862ddabca76b07ff366d0452701969f713f0b1bab70e10be82c8e6866797b255fcd77811d217d4ed2c0c61030d2b3a80ecbe261e5627aedf915d6217ba382afb11007bd7c39439796fa32971e31694b7f9037141e0c71406c128bb72a67dc57dc870f3e957dfe1ccc7468a21c388e4501287b72266c2cb263746ca5c8f451433f040b416eaa7e46c3e5c21312f3ca8208410ed0604fe5ebe7d74b41c0edd7c0b6c42ba00ff147572cd29f0651e7076890e22b6c9942dfdd8bf3b1e60c102ca0957dd8afb65ebdd950daed16ebc0f4c76287115a52530f0a1b1b226fdfa581b3f512a95a9e2ed84162e04803eb07a304872262d382d155939fe97f41a00ea3b190c95729fd255f7316136eb9aa395cc797ba0b8de59c955772072787f3e7cdadc6723cc6369fa4b21c060537221007353110c32a12698f31020398b650613bfee2121ee77bf6ba4f38d7ea08d22716dcb16cafae957b748c89b7e55677791b946fa1f1f5f182bd761e90b77cb99f3920b8e737f58de2cc8204942ccf14155f673092c495507dfccf0d9785cad1aed168d825cfe13d858851dfb81dd6287cbcea171ecd0370f45741ed43ed384dfd442518b1b2bad864540cf24ff5dcf928df1ddc1f43ea45a6b559aac8dbbb902738bcebb84349773465bfe5f8e70363182c836d822c933ee120f758dc72ca210f4b805615b86977394d9563b7761e17d2389158ad4e33934861812393202451eb85fe4146edb60328c393dd4da9d50471a81ace01f683d796179c398a649a93c91cbe1c93aab01a0d4324f3b51067560819ad08c4b47fc34920fb6c6a1936d5b63bbff08418ad8c7ce6ded42e1313f749f74e8652590c119965d9cd4c8d24e5cf4ae65273cc015e657e15fcd1bcc4be8d33f6af986a0c53b1aed4dc82bbb0a4b616739aa5455b9cf9158330a32624aa8e3b1f0b4a37f947228b094a772cfbc7945630cc402e70fc14ee53bf2c7cb15b0b2368ae1e26acc167fbe01d7cf05697a7fa306e33a37c6cf2770e2d45e08307b264e4f560acd968b5104570bf2c0fbf27259e23662cb51c02011a39830d6167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139205736566f6964786b5a63636f6e355158303831735036646c377846522f7468706e44516c4e6e42374b47300a536f4266436c34554e5649637a6c4579667063693679562b4156434f6375787741574b31627868325571630a2d2d2d204a794f4b673677334d666d74654a6b304e4455634a337a6b4b70706a77616851695757534279357836764d0a0e5d8fabd6ab24fef1774cf3dfd2e338a7f0bd5d0f6dd019c78a8271012ad078225c923b6af8f3c81c1567b12ee2ec8619aae06f19917bdc5cfb9d03d6cc6d6ec742e79807a05053a1adabf73a06bb6c28f42c98306efe8f2c3fbc05929a3bf6c98f87f68572bfdf712fca299937c4deaea77947caa95905b82dfa872cfa14c20fe91f4ede3a16f0d2bd3bfe4398946f36d6aff987032356ceced04f68c8ea1e15834333727ff914f378bdb04bd56c430f39283fa9d52823f6381a0f80a3d1fe63841b56d8c28b071e4ea5672250c283c4929e3287ca99bfb6dc0a978c3edc6187e13975c8cc852876c176328107f7f049cbb2d7410d417f8a8de3a09e1bd2cd342debb397d5984208091f24f27253ef41997e52ac9253b86c1b22fe4e7c6b5f"] + [0, 0, "444b433102000000000000790000083ea5006a646174656b6579636170010102504100a310fc7101779e8af7d1c91669c6037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004016167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a694e6735636b342f4a47463851452b346d623755676f2b65703161596e2f5477726d42356c6a4b4d353741424f6f694f374e68615a46682b72755736413268520a4277724b6e354643654f3141742b7733765334796d4f5073453638454b325a53584b4d61716b362f3872314f68516b6b794153334d43746f58726a646a5567660a674579353975796343303245694e62676c67306e4e4e7a5773464c72634c784270653567684b344b6937590a2d2d2d204135544b4b2b6844363969792f5a6d47624b713279466a773779786e52517352786865304b7a78416f53410ad25fbea9b049ad9675bdd188f80e551bc8fd6f8a9b2fd0e905580050955e10b6eb13ce037cde954db4a808e8f2fb54b29c9cbe7aee8b10dcbdf6af61e9c6168dee89b97080f49f5a84daeb7f8b512ebe8aa293b9df035a4ccce08cda049572edf697ce8e791b8acb0063ab4bc93bd2c9cb2532ac9f1f07aeaec622e6e012e9ae6c31fc3223aeb1edf1ade45a47be51b76946014d14b8f8123f3aa670283a204fd79f385a049e7a03e947a619a85d6074013229c51674071f6b9f1fe74524dcbcdf9edf228d4b346fa582fabf81170b469c573e05046572735eb25aafabf6a74275d4ff3d0a5d27715280cdc472d8f346e7d8c4a777cf0e31f2c35ce4c05aba7501988668719e14eeaa6c07478e602fa77c6303238c13c24bc4a5e60148d3019ff45549650e17aed05a47de04f6a775b12e84f351c874925626e0349184ed6fdea1ab34e5317a809cffa0bc872dca0b0c40755157fe506d3e75890ff860eced4f72c93516a44d91be605728f9dd649a478deea8f83c092445d4fe70e6ec7b080b6f8f98b37f6a39815ec514976c255f25fd37dfa52fe2d8c82919b9377355ffa1eb49191f91548cd95e3443b1caef4f43380d184d8bce2344c8fc1cd805a6947a34c4dc358aa30b9803613e6b6db50042062b5b204a61fdd4bfdb0a46daaea72ba79d79dca0f1d1575fd57c6f3e585350d324fef1be94f78c924b014378451cd669c47fa8efa2e3ac85a9ec310fbf4b1a6066e22bb18edb8e82908d134097ed1234b473b41dcd02c3ef485160364150052bd52ef4498e71dc72c8f32a3c624bdea53adf19a6df1a52edd29632db62208f6a37b78aaccf6198a43c9dd476ac22115a15a96ca0e3aa51a649ce6f424d50bf0bf5412461e6df2e730e3914373ae9dc1ac9bb313f754c24cb54a0f70e2637eaac94e34f10b0d5e887288faa36ed4cf4b8e62e06cbeded83f3efb9e83a5b7275c382b40b3afc29effaed9a266beb8545fb520b862b3b23d35e287d3b627d11978e531afe24d906ad6b13fa8c7a001f3d4461abfd1bfed49bd19820964d16d86e95e50764ea4d17d2c2a725b27936ddf579acd1184a9ff461c5f0fe16a443c44a4e46e75dd00895067514ea49856bbabb7c5840537daedcde487bfc1ebd6b75a5f5f9fb3a6bc91a9a261e8146f3bf125cd48d3768e0aa2d238e313c8fb24244642c8fab942eff7c90931bbff6a221f815b6230b8a4df95583cf6c3cb2e3c6664a6b20b508f6e2c700a30a2f80962185a894dbca51d1f4c919bf218bfba0c7d72203d90aa25215bcda43f56966bfd65f2c8e6d95f05eab3343ceadcbf7150110286f982c32cc66ab52c361c9dea05d6577da92e5e13b64b514c994b13b37522ae339f438e4a5071f97277a0d4b77889208c31985f02976dc59e68584bcebfb1062718235e891036f53997c976bd475622b6c0d02171a17c763280defbae80d2b95a271ce4c3b93184426134b9f44094ca9f4bd2fd1344bcab1562575052e5fbf948fe8b3898602ca8b357da687309d441a0e4ede014d6f0209aff4490bb45b82bd287acb5935ec391ce98e3aa88e567d7b7a84a4170956936778d2f3ebf373e8c8b43deb48be3f24233366af071ec604a78a288d18ab17f4e70b98b1827da019bbc29119124f260b0039dfd9b6e184a7e80988a12bb7862feabf5d2e0e849f7c67f49cbf20a752337b95e2ef6f48c1fce0c34d1a5cc383e475e2f71f452d5043e5eb9d6c2af94284c06d39b139f1ea3eb528f5ea9af52989c26e545cc575da4682ba7e6fd3af38cce466993e312881735bce4ae851b0c6a8a185139faac9ce86355a85e12e249c46a947b9a6f03d00d8396608480c8ae4b03233bca1e7f5b186bf373ab748e2d738de36f215efbf5dd98b5d65d60a3979a569c3f2ddfe6e170000967ed2b1cc7b9def3f9a5cf8d418ff75c110a0930df801a052e439e6d456904f6828812e5e26f14b22a4563512dbd1e5ae7e0b9a42510dc6a7c41c3d87d770d7c55840fba790c29f3fdabd7eb4c6bf1d41bbe0eb1bcd9eef0d859f139157c0ad6572e991c6174a5461208c4b898840ec035668ac7bfcd6e36dd01713d0232c89ffcd870c54ef6b8bca7fbeec8c6b089baaeb5b1a6c5e944406923569ee2f87eb41dc0378990167b632e87606ed9d3053fa5aa680b0c450b4e9c3403acc95365efbb5374360f254ad0a50e7ed1e7e23485dc6f6490456a3ff4f3d7f2f8b0d6decf33b824bc045a0b452b200f4665bb544cf031f3c0debfaf74c78357e95e7f2bb48f16215e4f971003f61e7ffca956815c13dc5090f018a8c176114e3c7c62f63ec5ac1e00391df4b33cb688531a1a677ebe813cce76f9640197a431b003e03a55d6956c896518364a19e80d6f878ff5891b466ad539a5f847bff2f9b2d5a03ce2d4a7f20678af1200d17097e77b2294eab68ca76fcf9cbaf4ae245c28428ccfd8229c361b9c5c1c46594c91d48778faee8d71313fb593c9a18d54ea508fc1be48b92cda430ab1554da387c6167652d656e6372797074696f6e2e6f72672f76310a2d3e2058323535313920394c47397a56614a75307a4d5a50424270466a52564a5479582b63326e4f48707a3459366947654c31456f0a46744e78416d426b364a4d6c2f685634466b33663332383871776b43575573386268784f5a4463666263510a2d2d2d2045353941364634736e626259325a386c484c5070626d477836366551717830314c3737526831646f586c4d0a0d29294f627e114f2b73d56d777cf4fd592bb000470e7f56992d8527ac3d22384cec684092afb4b4039e30d8506e27ddb026e635addc527e9df5de915f3ee84b67b8a050a117b2200d8f0f77a5b39a258039b4a0284d242a2be3445997ada061e55b4e0ee95f3ecf6121934df8dbb223a0e25d098c2c4e76bb90c8993a482e6a779a26cb795fea1d948b60af0f22a3f72c217360d1c4d35f3d9b7bce4923d68cad8363e458788f0538103f85a935751664db65b5693d528cd0b1d710df4b7041cb5a0dc51620e6ee2429f4218bca9a94c6f24c5873ed523463412138a0e0780552f0dc60ce254e5cfb3a8863e9505885678fb0345ed041505e6c15f26b839af709f1474cfbf2a169344225cceb20016fd4e00fb5dcb712ce7e1ca9a62c1d5fee"] ] }, "identities": [ @@ -1687,7 +1687,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b43310200000000000079000001caa5006a646174656b6579636170010102503ff8ffc4c4ce0514a55489e588f739a9037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303120353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a73442b7065616a59734a5566666f4c466f337736706944486e6854647239535277497a6737364c3256765165472b7a512f5638796c587130466b4a4a4b7a306a0a423862357a35486a414444305353654f37646c644f4b52783152592f6563675948736e414c37543472446b4c4d34636436336341692f304a7942414f50596f740a57556c7735574a4733312b41703678747441375633633050594c50436e73774c3556565a633041356461590a2d2d2d206254416732476f494a2f776a37533771687852583256474a666551325434684a6d39734b306b4d306d38380a9feba4618ffba32b09cd22ca80342096164fd09c507db777cc5a8d3db4447ab4d2653d2cfdf5a079572e264758cd414652b95534ecac3e894b2d683eb11d03c81de99e4f1d8298b90af782e81814595aced85a5a2244de7a69ac0d344d890992924bbef6fb1849f5ffd192c815f6244722f4c81a4e9527cc0a54883e1add7124e3d2e6cbd36b696167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139203069744c4966694f4649617562743759324a7a6d48347239594f4d57755648793446727135734a764848670a633542417641614254553275612b4c6137336b59486556476b316d6b2f686f3849732f66747834554947770a2d2d2d2046324c4678636a332b356955446273456d43524d526e51712f792f76706d527a31587862453848544645410a03240ce6df868def9bbdf6b2844fe6dae0612dd1c3aedc25d448a3fbef6925679b3dbf117edf4e336f21fe87724623a9cd4b85b4937a79c50f0fb7f182100a355fe5d872ef24469b01f9f7c4bae2223316ead16ff4efff1e59c9145ea2fe3222fa4e3b3f31a1b00bf6d7ea6444955d5ecaa575248735c39cf5df909c44477cdfd74e75887bdf463b6c697126b90a6b05a300106ba2580fe36f31c4951226c221a6ccd13d9a6925b8c8477a4e18bdb0e762c6db9429f5f938685ec88dec98898c02e556cd9858bef17ed6c76cf2764a069c12f15e614eed958fa5ee7c78439519cffcb764557b6ff5b64497e66b480d47cda16a909057eaa03d1deef821c1db037fb284d5803f53a98bddfde9127a17c905d141ab3ec302a428976adcc703231f"] + [0, 0, "444b43310200000000000079000001caa5006a646174656b657963617001010250218abdaca3c0fec6e495e75ebd783d80037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303120353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6b564d32346331386e6e43535979732f41737838526d626835462f6e6a2f536d6f4f575439557144786c533337323973304858796f49646458657871662f39320a4572754344385973455a7230737a6f56714a4259793043744752796d74722b614946565636735948686c7164324475595662666d696348585056576d474c4e410a36705271394b704730363535764948506c55357143635270416938687a50514e4f74362f3659746475326f0a2d2d2d2073504a314d425539497355514b6969396f4d6730775a333971703134555539342f4f4279484d61776f4c590a832911586ddb59a290244afb86d3c45b7190a54a660483d25e25d96310deb04ce1b0e2d67ff00f7a6911e47aef8251f057d23fae4849128ca900a23aecbf12685e265b0c9b54085644573d4148cb4fc624ee3efbe8bd257330db206aea79f92f03a9c3c82572ea74e62904bf66bfe35ae0b89b0da7a0ee1186449296134ab38388a8dffe3db7436167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392051632f456a4a2f6141384f4b7a514c695a6269432b523562372b676667466d7947495549546d79553447550a3431513246674857315953717a4a41485a51496a6c512b574a4335386876334946626865394c6c5633374d0a2d2d2d20326e614a656133375a6b345a686c796965736f576d544c6e42744158526644676651466b545069674271490aa3d0d3672157c9af39b0e08ba32d8a56d7db921d0b07d17b79c164a8c0de6cddc418af10ccfa79431be4ed268eaa5213dbc72a7797677b565020fb55ef6c568dc99a0afc8b9d824abd739a4aec059f10d901181bf71bff0a281e60e95d19203fee3e41da97bb8e0b7476d0d5020f56fd8d8d4772eea625ddaadcf28fc887022bb02064d775e9e514941730dcf6867f4ab9724989e5524123fc840b6b9f40df0448243f84fb830fd405abb7564205928a3956e59dfd4e8984463f8db22390984e3599277c670ae70ef14f05e41a799faf1a0ab90bf9afe1393a4c357257984a7b4318d46d20b3e6af0b2f5a5148479c509c042b279b1fd3784d5e0d3ef10e48504afe7c9acb6d6fad55224546e19a58122e9157e38349159f92524106aa644ab2"] ] }, "release": { @@ -1706,7 +1706,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b43310200000000000079000001caa5006a646174656b657963617001010250613dcacd9848dfcbf28e47bc2ba4d54e037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020646264353036643665663736653566333836663431633635316463623830386335626362643735343731636334656166613366346466376164346534633439330a73694a444d4555476c6468726b474d3133454f6c316c506c33577053497a41354e39454237303469413276556f3273647132702f41336332697652354a752f720a444f39486a6437373850346d584e344a75356d52736e476e4c336f63393955686a6e726168654c39424d76794f38633844486574444e4153517373616863497a0a6c7048546e6d4c496734713743625679546543646f7a38375a776c4253333761624834736c31572b4658340a2d2d2d20734d59743932527a7342726d432b655a6467666156734a4f5141374d624b4b55384b4c78345a7a455934300a8c06824a83d81931ca5df84df127a2c26e3936933da4386fbd8fd6d6c68200af8ff3609bc11b22f4dbc5a0dce29e98bff1aac1da049df48026671abe50a21532712aabd35c25f1c50795efa5ff68926e89e80796f6f0a3262c835ce8c5ff3f6e94d789c98b11c9a191f8583e2d43801469618e89cbdcb43b1976f18e10fb74691d06fc894d8a276167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392032642f74514751634348746f2b555832734f4f53684a51787231767579434937792b56445158736f6177410a5a515338384b614249677869636a414c4e305559614d4a666d54566a306a4c517150734c715a346d4476670a2d2d2d20543368706e74753239315835642b7347475a4d615066626a4362476e776d4d654270747837326c566635510a0f58d9c991084148b9b6be0117b3c8faae96f6ba65a40357ae2fbc4f15fc81a2764394024ab48f839cb21a91f88cf194af7a0cba39b95997ff625c4d5b0cd5d9d5eaf2e11234ac8cc114612903d6d245bb3746dd1561550203edc0dcbed1d3e9899185ab544afdb7fba31ce5a63404b8dabdb9ccb0ea59383d289f695f3f654f2fb0faa1207a505f0d50f8809c431606496048ba1ee0f1937d9a97b44d48523f50ad15ea3b67b32374edc9759ff521296eb05f185000531df1bb22f13aef4007a5d821caf990f6faaa1d8bafd82e4b12d8657cb3470276002c4f3c18671d0e8956885f4f8b3bc186e4055f746f5cf64ae0b93044ad3c95515e3d8ab082d315b5e2fb71692efc107cc19276ff5e26f690261461910377d2a5485909bfe711196c"] + [0, 0, "444b43310200000000000079000001caa5006a646174656b6579636170010102501a9e26924b25a9b70ecd24fa769672d8037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020646264353036643665663736653566333836663431633635316463623830386335626362643735343731636334656166613366346466376164346534633439330a694e46476b3072445062474147315646544a74337750477a766a4c546c3035555444664d725754764a74306852546e5a366e365859626f3248574d42346c63570a413976722f54396b76576c54436e576947496a5539564d5965426f4c76626b4a6878735877433965304c4d4731517942626e6352514a46334435336f337066560a47524a71436933526a77634c594a4d30597874387035493353796b442b6c63354c6e4f3156396c617334770a2d2d2d207032556c7072446f644446554a6a456775704d2b3543656b30556232343973415465766c6d4c5a5669794d0a78afc14f4c0ed70ded614e1ba0dd396ed3f50e60152e2ebf04ff26d8b56587e2ca062c1dba946c783e79e75dc5b26a7c22a46198a122d6ad24c1ab99a0952b8bc875a0d5c7ed7be9d540935ae10d452959107a843fcc963e745492c9623bf271270352a3cf71efdfec5b0190d75e7cfbb39d5a1e91445b78f3f56325c7755df2f004a760740c716167652d656e6372797074696f6e2e6f72672f76310a2d3e2058323535313920624d6637576b5a31704441703958333178306c5a7949635a566958664a56325675443634326f32666c566f0a346b4a3056394b69685572586e464858564b4b4854366a77346f666f74686378502b6b4e396f31466162770a2d2d2d207a423337425a30516c5a496462724977337a4d55473258636b544a6f514b7971327653432b45464d68586b0afadfe24005b62684df97ffd987daa6ffc18e2b31077452e4128c380626d5dd3b751a08ff2cd99529f169568dcba2c7e98d44e7a23bac3d868271e43a24db7f435adeb3c517b981e1203ea4311cf3e062fc2fafb80567d6eb9b6a3b11e41ca825db4c86a081affb216a9f67ef237941d9729385ceb249fbe9d7b0191120908df87213ad64148a73a6e198467f85271b72f8c5c2be43cb26c5b1f3eebf08567b7550690f8a06e30d60b95b5651b43060d6336d5d804385dfcdbcb4fa111d57063fdcf880f05e5e5555ab741c5337ccd766b784b9d34c9c7ce16592f6ddac56eacebea37cdbc9723a6952ef7232de7aac46f535a113a305ad53469567a631b549fe95e1de732baf6bec76ec785267d0ed68be45a1e16a27e9e1ed3d431bcf1a1925"] ] }, "release": { @@ -1895,7 +1895,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b43310200000000000079000001caa5006a646174656b657963617001010250ef7e3f60d1f2eb0bd85931df923b1fe3037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774e483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303420353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a673656776c454572337a676e55766f6771686476397736626e52493844497432306a34493568395a727a31516d37496955333358416769617569626972424c380a45356876586c5849755a343448652b6b743867757941306f6f775547707142387a6f686d6a4861723042546a7630664f72624252455066456a756c534c572f640a4333393138516c583677372b6f557668616474684c6b2b48596c4450534a7a657655716936577a33576f6b0a2d2d2d20663949306577586e3857706b642f53426b5241744a62797537546f6b58502b694b3632776e65476b495a490a10f1eddf383a4019120ba4ddc8def7177b6e645764bfb51cbd03c4420b4d1d1ee7fc5b2ad7d566340642b38d1ad4ef9f72ea6cbe575b94db31737770b09bd19688794045fabc4d6dbfd1f98d91250c492cf8e0bf2f12d0254d60d194147ddc114680f4a7a62f31889caaf65bb7a6e3d19587da989ab6a2ac201d6efd8241001561ecc7288368a46167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139205667702f2b48776c48426d2f34492b5474545a67556c476e6a67794a5773676a5a426b6e34364c6c326c770a4d36656a6b2b36655a446e3739757930584670707a644978366f77766e7139767757534555437a536c774d0a2d2d2d20544371714133354b3830672b50395143776a7132742f754874766c654e46554f655a6f7841413238334f6b0a8a548b92651a12bef4bf25221f1ee8e3a751356ef03e861e654d642083a7c9311dd09f460be9cef2868a2d99b26c8509c079e05b266d0a70f678d02a4ed3ed5f9db6d45607e5f880e039429bd53486562fe510c4a5a33bad9bacd0ba6fd74c87f1e4f1dec8aef3f81b8369b980dcd04573c27444d7ca2a1162247d682821d43738de9bbd3eea13ddd611b6a2c9110e24cc3e9a605b31377724ea9fc367c425ebcd0d1abdc8246ccfa2cf4ed9ceeeeb4d41bc57fb6b85fe98b7739840ee8ed8763209b4298015c0d5f1d4a72d337e9e2772f130b37335ae7c6fde9772e91d2dd84ad275dfb573a599b81ca0fb70f9b745743b252a2489d12dace0daa1db532c5faae1a512b538921bc5dd2f1d5a2ea292c6f12ecc97fcb907f03f2d0cded8fe83"] + [0, 0, "444b43310200000000000079000001caa5006a646174656b657963617001010250dbb9bc102bb15061d58e9c17d302e06f037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774e483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303420353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6d444352704671466c504e332b4677673178783575756c45594c313766586e592b56416c464e6245473964667449345047597a3268577931786a6162584c52310a4352434445556e58377439577a344378447a69734f75644b457138753246412f47504e496f58734b2f38323067566f446b35615543636479656b4872504833530a694b525962593372664d784b3361764f474442416657536272795059704b58694d646f594a646c527357550a2d2d2d206853776d546f585831736e6862784b494448305935345239554d6270426669652b7937664d6e674c5232510a3c1177789c1a5cdf23984f1ac07a5de6fee172c95c42bbf8fcf776419acb23db87cfe5a129aac8db2d551c089fd36a78889c22007b4ad4488f6a4c42ee35f0242b4507c239e872c43e88f98c55e7b1c67cb8198258e47495a614eae168fadebcd11723c25104896a0189d7c7eac3caf0a6d48b903d523b4f4817b40d9ecb17e96c3fab13afef6e6167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392033476b7278676c663265535850644d6832483670326a337538686939776f41534963376d6e3377516e424d0a5556705352516c443337744666642f546c376969317255464430762b2f66754770334e323534524a5654450a2d2d2d205a72347833736230336d4134586935476c41492b452b6b636e4970592f4c783933324e733845753273726b0a5d69fe61aacb5b8eb01f95a5129bb69d9837e785984273f5d2885b9ca0f38db89010f6d595f468bc42187f97e64332312f35291cbca0da1254a0ea26570282a8223402100a9e684975f7452f0cbb01620b3b611d464c2741ecbe2e8c6daa8cf95beb55ef837147421c000df1e8d65b9fd677e1d330b0315442c3fca9a78c4001fe64671df76532f7cc33a69fe7cf75d25740c70c5174969f96fba987efa980552a6a2723526245714dda3b17525a5175f3c5c539137dae3d3257d49f2c338311af54fbf8d213d16ee03254f8d1e30e06998a9685bf6fa88eeb997862ac1baea7d44bcd5ddf763f93690cc352ac28d053f5a7992fa2e552778e4c17c479fbbebc6a1349c0e6d41f841f3e190295b14d17b107b3f9dbe62c85e17d8747ea95388c"] ] }, "release": { @@ -2602,7 +2602,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b43310300000000000079000001caa5006a646174656b657963617001010250ff23599acbe9b0a742792dcb7cb1bc4c037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6f54544f4e35495567376134512f3742376c6e6b434a444d385645342b39346a7748384a68356d4979354e4e4555434f62712b5955366d636c584a7775562f310a42327a7a6a4964736c504d504559626879587379584c7457736b34596b6265654a55487176383547346d56703174524b753479674f716e786841414f614131690a79317377337952436c4b6b366353322b5954563669515257426c787358394e4667414834366b7337332b670a2d2d2d207a4e376172395a546d726e49425771665a6a3261396a4b3759596e5465696367646337525974686c5167510a61e079224ca4130fc7e1fca2ccf4b6a8e183a68c536705864abaaba92771d39b97c468f066473381bed9b4b5ab728ec0c7cc775f8bc0df19fbfb00e4bb4a3d226f68d105d458779434d47e34bf8a28d262c7dfa26e53ad2fdf62911323cb26f0fbad600cddb45d197624d29f236e81f0df104b636aad7cbe4f0d04aaedef100302dacb6c73958b6167652d656e6372797074696f6e2e6f72672f76310a2d3e2058323535313920655935564741343653316435424b2b313274707a6e375a6a6e7145647636764d63455452787443587933300a4a416b62434c776c6a753957572f574c534b484c50344247306b3650494d4170496145346f7a67482f44670a2d2d2d204250554f4f53544469766d4a6f47775a7632725652342b437578482f2b3955684c476d30583345305264630ac607927980e0f5926614a475def0a999d790502dd80d453bbdd777f054609bdb35d8fdfa730f34adbbbd770374d47c24b699b084dd6cea5d45a6899dc8531592608d911eed5a0afec11e4ce00b0717076a579e46944181b08d09e4585176458bacead74c4d770d73515100d6ab688900fb78352573a4cfff7481f9faa005ed8191d673785d749c5cfa7f38ccf99cd7e8095a8676d171c0a5349fc3e1316eb6dfc4c68fea888e10022cfd15cd88aef77cd37bfe100f3428e660c8fb6d4b7941245e3b743d6a35f1dc38abcedfb67c7ed218b09ba249d347f378495eef3c899c2779858a521bca2d45a484c34f70b5bec44b1cc48fb4d29c9e1105b72ff56ddc41206aa6244ef18ccc8b2e3ef3afcdb39d1a186a958d5c91f6f583347941753652c90c203e30aefe2d71506dabd2b87c7e7cc2e85574c0b9b213950c3fb8ee304a8ffdf2935e3543a9ec815cda495178efc5a18110bddcfa45e5bdc43ef2074d4e1893567faa429d2b23f7edfbd33fc33e6362e18ee963a9826a44ac0c9431eb79b99a6f4c7680384ac5c105b5f9ef135f731f68c3873f0f94634b603e29fd26f0a31d063e1caa8d861030265bb9f5254ef108605bf5fecc07a116544bee0054230695ffacfb4c2332e4164257cbe0590cd2467cc760cf968384865240e00001e057b905cd0d5b8e0bae31dd7d4c344b92976f0e024f6bbe22f66d8485807800bcbce0b8c80790decca65ef2a013e489dc2079650d77eb2a2ed71dd641cf771ddee5c5a0344020978230ab7025ec90e26e4e949c1f4a787c883817f01e0b0415e9e50ab5fb2ddedfb8b8557ea92db898800d4389f2ce8a3d0a43e18180b35efa1f5e17b8366bce40cbed6175191f6f17f2bd2b9538a5d6c814d52505d3b1482c8855f2ddb876224e3e725f7933d45167c74ede6bcda2b6a186a7ae265ffc3108b34a1c691419411303aee854611f64124791dc32b334eb94041a322c108cb38cb391639e0bca79350a70f309e5cbc06e94ab6282e1aa38f356aa437def537eb13c953267a18775fa0fc93af4c8055ac1f0901058a6d6677829e455d08e3bb662dc9bbe6ccad5cdcebc8848bf9325abb61c96c844e7c6653305aa03b1ff87498db2"] + [0, 0, "444b43310300000000000079000001caa5006a646174656b657963617001010250ff23599acbe9b0a742792dcb7cb1bc4c037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a69482f2b625830375a474751485a78777030562f513235744e2f67616965346f6252507666693536414f6b44464638597a6d30397042794c635742537656592f0a436361764e4d666a33716257787a317162436a6a362f797056766a4551574c6a6959334f766752763236735a6d4a6d654e414e384661623057526253485a57660a6c387165674d756f68564c557237785342355957566b614a694f5451763168554d515172397357657338490a2d2d2d204f7551367951753537786f4e6766474347683434394f5855716b7146742f58626a2b7339463671736d35300a0dcea1e9fddffdb3604196b98ef8f191fcc525f36d49f0e88f6d7b6a585f650b7f204d5bcdf974de21a118b91221b2bf716c0316495217a2a5629077fa642c6140662342a9b0854cf9dcd61d7ee1ae25b83fd47d72eb86340aadc36d1f40ffb07502b0b71c4211ccb7c1f6fe70eee4155cd9d385ae5c8f326e792f5296e1fec44a33f781e0549f6167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139202b3330354a444c6d5a544935654837763248596764336d7477546d7a466137507831642f76396c6c4253410a3059487839476c496c6c756b673848734a33496f5375376e5737712f7458647a572f714c737537494a77410a2d2d2d206f3574695a44612f4f71762b627838397555695767734872642b68494f472b6131366d6d445245754779490a3a241b6017007c9eb642e7a3d0ef653ee677b3c92cf12e71ec09264990b093d8806bf25885c3532761d80a5f8b7ae64bc302c62ab7a9179f5318a40076c6c6ea13d57eb79667e155e7ea71a54953bfeca7df6f75b8c46e6cc38b6795e0f439b1607eb5376d7fd3622a5e2d26259edd73b044eeef1dffc2f16fd83e6c65c3902a280158e4c15bb8aa614054f8aa144f4b6e3082015797445887b93320d7b8a25dee09cac4c18a1b80b841953f0142cb9d9cbf22bb06f315689a79e142e31c007a4729afbfa4f80c5745e35598ed92dc28b7c498af01ae5630f729ee912e5f4d98f8e6f8f4c1d06db91992c915436c12d0d0a855807de9cab2c90e92566838a69ee544ff12130b7f4f5d547e35dc1dd5e3d63b3e286942b1c5a17340d254b8aa2429ba268bbbde86c6ac46b0bf91155dbb9b539b01387310b3a94109e5218324aeb371bbca06d938ca790294f94604ad0e524c4b5b0fd0c0b06dd3bad084f185742d7c43c62c30cd20933ff104b4840216bde32afc611379ee0296097aba18da4c1cf2f4303d889d2115acaf86de01005e4d4b2a410e51ddf459f05e4cae27920fdff77576cf91bbc6e2894811ef61001fa3b52f70a72844bc58e7eb0529343b8df97f2359cdac9a9bea5eea301769390a27bda75582c8460251c142225d6a07ae5ac34dbb3d9ace2280b52fba68d6b4d79950a7d107bba78e21d19d5726d02859aa32f6091da08dbed70bf355b302831ca544cb8e9ce509fd8fee316d4d6156f0e4e8bdf6b89c09b7d4703874a3935f36a20c0432a7a30971e1d67f7f7911dd04a5566bbd20552944622356e2dc8dbacf6fe401f3b402b6aab705d9e25ba0dad7a6113635ce5f113dd8a556efadce46e55de876a07d523d292b998f3f9baa273c693d25db0d2c679368e770216bcdc8ea02c08eca5a288fad27e3c41b2cfe66b21f36f9d44d07767e620f8c28b8ab16874efbd1bb6e0113c65de9f44b94f2930fb1ea483b78c82db38bf12eb2eb28f82762a4753fc62d7dbcf7ba8fe4120a1ecf6fc904c77ccecaeda48f6936fcb9d776e6551b2e610b20f239a70af2c98cfe492fed69f462025a629215356eec9521c440173af802a79ddfc02018a6ac0665945634276f42e6de536fd3cea4dda0a864f983010c67a28e2da6886d18083fd380bd797db4a5dd787673da36d482158f83ff03c682508838c91163ff641204d07058913fc70ff6739b7d56a037ec423a64a62af949d973ece5af4f12da59d7460e2e26af7f3e247bf24b88b948ae86f95eb1597c1c617dcc73bf83807cbfaa502621118da0be66d748b299db60b6c47c7074132a5072cd7d37a6e66ee672132d173bdf7fd8d9400d25adec081661462eddd5cf98ced8d8cdfcb68c6473d4f9f305551f36bf8ab1716296a1f8d3ee1b4fde555af42310a0585a325ee3418d7b198715e500d3a64771dd59366be05bbe73665bd321f619732912fc3ef5351caf2702b53601a963b9acdfa1fcea580346127343d2bd8a74d017ef0134ac1ec9534afcfd227020ca7b83ed0bc181c811228322aff24d79355e9119dcb2aef9829d41d9c0a87b75dc407ad9724f6a37331f546220c87deac943cd5dcf42f80c88d802062b11948dc117220362077a70cbafcc789b172b8c45c99c97667e4bc4eaccd97ba07474e7591242bd882a96f4c13d20d0e4c28f5461094d75f6db83efc78715410c51262f3283452f3227e71cda4406223cd83ec7e7d7e5f03b6b4d26c0bb42e2d1c4efc771297ad5a857bf9f9c6285e1843d5396970c58e15de6ee2cdef0ad6cd0264e33f6a451fff2d40309700bcc272c72df75794ae4ff8a89769c438025deaca148dd7bfb43dcb280205322d137d552651cbbfb798335df24f7a1e2164802247c7149af68b1128b7b3b9a8ffde24c572cab5715628d6471437414edd2ec1dd5925aa82e827cab71819e86dbf6c25275f6fbdaab1ec01ef8ee63e08c69e015397cf24527af855015dfef4e1611476c4f7c054ed76ffe0fd51d12f3489de91a574a2126c453eb51e115a527f810191102cf2ec6dacd1c0fa245b4a33ff3f4bfe19310c315bad5588bdfea2f862643b189ddd5c3ae3fb220f37b50d7159a8bc4f256729ea89557cb21dbe79e1acfb3bb6f4b3676b2f754c832bc8ce6a80cd3b8fd89209eb3ffacc90ebb3bdc50b25ae623c86505da6ec62f9d4dafecc94f1845815769e22f898957a53f0a67c0fba2107445c406356f381f0cc1b96b2bdd2b6627e9cc688a78be9b56a0f639396d166dd6ecb5c55ae7b03606eb676084f8c8c343164ca2904c474bda5605d3e8b19e73b0f1b7b3c0f81c397440a6be9a3fca1f96ee787e12e00d7549c95a7585ab0549297e31bbdbb60c4e4dc8ab57a1516d60a1b0e3555484ac34b8d8f80cdd0a84943d25eead1da0a521aa84a71b85247644f899f862595daa05b5a5cc1f1b0ff21320dc4afac237e721cd4db5a94ef41aab92e44bd08e26cfff443efb527b45ab660147e400ff8b9c7248485e239d737046b43249e9a243d4918e37448c801fc24ecf256fcdc1658c1ae5a31c979b102f489a75059367a9613c35b442f2cb6c8831ef3da14f779a4852e6c66906eb0935c94cdc4d7982e83fcc002343d2015696d678330606643a0ca2009adf0011249c60f1619770afb1cd19f0f5199c97cdd89285213f4258482e6e083a5997be125e4133af9009179235db292a826b4d4763341b64460764877ed741a6b972c6f01d900fb7dbf894db6eb0877cd29e684dd0ce906626f2fea77c7a217239f13670279599d78a888387176da97d3c6a8ebced385dd88069f348d1b9a4e82cc0803a276909e798df3a20f2d425277886991e701cccb5061aad6d48f42b2b8c66c64686652af8ce25bd0ba81c473a35ad6400b79d676b3b15685db23e707bfec491eb581d24465a170b7d8f589ff275b2fe2f0f8bf7ea8162154a79271286664cce394d2fc9ae8b6872193cbab06e8809df7d1b6c9ec1c8c2be776082b1593839083f3442ffec0ebfe9317e1e5902dd5e4f9de4cc5fdd952d626fa92730a476199bb1e5c624578dfe23f85179caa934db12e76f5c5d1f7e099730a8bffd53e02d5c6cbd023e8c75077823cbe95955d18479efafdbdf748e8f1ffc8876064e280ab3c5c60a30ac31992c1ae0d275aeb2bdd8feecc4aeb933b7dab2511a49ebade445fe57940d0a0ebb5f913a33f5dfbdf6b47d968f0053612dcf67d603dbb8059dd9c4f1b9473229b5afb062f2b521e041dc24ebac8daaadd73d3563523962e132aec52773b56139771d3df0ec294882ee72000113a1fb38198f764022fad0aba919584f11704ed737674c8a228227cebd97d5d4006577e5073ffa4486b0bb9e699b32691cac4454ca03a68a21e2a542f3ba0e9ba11eae09c7948b53489451a87fc0def25c6f8261fd9146e9635dcca0d1612a04ff44b52396ac384c6dc5ccbfb381b54df8579df55cc3c4d6e922000e24fbe1e8919fbdbd99841e9d7b864aefdb55cf40f634b2bbf6bb5a0f5621123f1b25080532ad49fa12b91961317bc3f5815bae29bad68186111de1c75aef4161a25717147c1bc92733b866811f7501c3cddf8129277b841339e38609fbeda796e214f377d35199c79298184f34a298ecaed7c0b5200eb73da898085d7e297f9f4e85f97d0159ac5bf45f4a4ac97c58c767c176ad9869857de86a77199984b5103f2d8138ee5f97cb161ae07f51c7259b3513fc6a7565aa9d3329ce939ad6b34680653e8497ca77672715a8b7e495cb46a028d507ec4103d8c6fa5acddcbbc0048099a312b2daa62d25f10eb021434e69ad9d6916209a1d1aca8107f1e96bbcd4e7d3f66afa8f93141dbd8a5efaa5ac5d6ffc74c50a90161840045d46f0dd2ab106e77e21446646eb07662ddd37ac8e9ee1e16bef87b7c34f9cb4d2492c5a7d8915ff9def57cd3434cd23cf228ca665338586ebfc13ee405b9a9b1d7f0b134d95000438d17e42a82b63d158b76a2b7d693f49efd9f77837d4f9ddced86db49e6dd665b9fbf5f72e976b13ed0d44e6504bac4b1ea50e5371fa2a6ada8400070f9d39fa3e3911b9d524eba00800fa2a68827aed0bd5640edfa27a134f1bab7bf82510ff13529281186bc57297d369ee58f044ebb12dcb9149b4236ea0216a96714344c1f4dbef01d4f26cd62f557273c83f6280a52abeb10818c7f4c876255f1c09c3101248942025d89feb41256ae2e30c110d88a87b7505abfb054a52e09cfcf258c135440c6670fc48922bdf35f5f720385a6fb79f1d26a6531cc6f5e7da63389fbd913e52866061f634f1fabebffece10a57823d7faec50f0349c4cb216fbbfd248a888d1e32352819dd8b1484a0561b120cb7165e35d229d859272e39ecba8e5f138b32dabcfb80242a1ebc080f04fb24072226a951a0d3a8716cf83513632a8cc396b955e0b5074dab7a03bd37db7497b6a291f88994bd59a62b350179988e961847723936c31c7e5f25cd692f40df13b3f7926d2e0b838fa5ee4adf10d21b7311f19ce154f542b2e6223f9f48c481025c03e8f83bd54ac0a04fac237f2acba11e0a76a910f5aef292e6ca4d5162b891b74f6ca7464dfc15946d2253216056132c31a075b5370eb9970574e1b1456b1268705fad5ee9f37fd7b9e85c60c7b1aec121a45463e6dff32b57476c77025af3e33bc8003634c6716f8be7dd02265146362fc0e15773978ed132f58f943450080245523137d35abf88b77e180fd1d7fd6f8fa8a820856063a8739403ca591a8875ed1af405fe6663be021af6f09a7c61387c75001ffe4d7e64a4058b7c662dfd1a88be92f6287ce0f93b3af6c6bad1d156535a7a3cc4423970f0a2181d112feb2cb43126b505a98ba991a18f39d814533ba2ea643bf6da2aa9e5d0dbb71ad2aa3c1015d80f5887b718bd3f199ecbf19b8c7d9bc987e1f0befbc8973225039f639ba7950d365c36cc98843d195368f1f0591d6064d623a1f0da46c2f1f3a8a5a2150ac607b92d49683b8573cc2e4933ff5b161e60c12ef978575c2d81dc3169460ccaa7723bf114db1fd509ec155f5eee09e28c199eae15e4dfad386ec97456467adfa985f9d211dac8a8d0997e0e13b5572ef85a90df6994bf302b62b48906ef3905db69320db9724aaf96c7504bad99f53492f19c7c61e551905feb192d2d0529a0619605ebedd0d433f0bafb66c5e43d0be6297cef9de73d0088736676fdc6e07ce32db7a9ed838a37438a673c6b82d6baa5c04d7f0cf9c908bc15c3fe4f2bb445d30cb9b16381a16ee05e4222787572c7538e640edd0a7565e7b7d06941a936fdec5af01ef7b83dfe84063fc091cfdb4e780244bd9eada39cd562691c1fc483b0f2d7763aa00144f81295b066ce8af0e7d63796a9f134664af47abc80801569d86f7056380380a83d63efeeaefdf6fb7f8e71fcf2ecdefcc14e39619e436974b9ea4e732d116ad3615578f0dc1faeb0ef6dd08bc7dca2e783efc005811da6c89a6ecc8dce5144f6bd47951ce72800d01f6a5e87d9e4a9e0a77453dfe297030bc39c22a24ce06994aa40570f7c32ce0aa372a3ff376f5e94518c3c7ce52bd6e50daab6218f8ad781846d0f025e59adea42f0e07178308c37a900c0540de77a16cf999cd2d4c26708e4b90cd46284a73324695b6c591e186aeef56959d2c1b1b4437e861a4a736b19aa7b497e09527ddbd71b31ee48b0e3501c765647828aea64fc2c979b3ffb3e430cb6a42d138fc60d8ac0340f4bb72812a85ae32a84db184608161db33532a4750c0a3129afd3a3265d420a7a90319ca161c12976b4c7c3b209ea835fe1ec6ab95f28df1a9759b78347d52343d7b0773d4deb32146d064048480f48d1e5d151ca945bc3b9cd487c43d14a072a1c95ca441c5a86671251804ec8b14f5eeb214e4b420569b247a4c92ec0f042dde5af7ad1030ec0b6b737830ec20bdb5f025d05e7c3a20e2dd595030529de429216323b924e36a1e4c4e6fe3eb7963305c1d85ed496340bfa87654477b2f9fd4c6356657f49f07d37b974117280e448e5919532be9b06db7d694cfad246466c7e7ac86f6520db9ea83c8ad664ceae58f9e8028561a24bcc4d5f328122abc8694cdf22adbff8a94e230ff8dce75dd4257ea0d99c6b8684d07b94e1d6680a4bd781edc21006b8b6f75b342bea4b2b486e59aa3e0df121740923182595d1084cac7487c89cbe360986e1354c8eae6670c1c1454cbbad265aff01491e47ba1b0d2e5cce12f90467698ca95766f1ec586b4554bedef84ec7ec8627a26ebbd5b35b75e697943f0b5a7d185b0d0e14f1d00a476b4c1975948f8008d65b06207ed284b7d9138c04ae1ced8f20d0c045cfc7b18d2e4894f282b2a830a2adf9017ee424b90907cfdc49ad84128bdd3500eb01c7c2beb6e168c8c139648482fde677adf80db176af394121cb95f9619a5d23ed879c2a86f142c986d80a0f6fe3e9301ec8f7014d088c8c70e7aa01198bead7afec04e4a9542e6714982d48dbbfd774a62c1a79c92d5feb3a8834b0e00c0f49cf47ae551b2133a514c5685e443c03f754213680c8d316914244acaa11d0d0ef1f283ec5a37bb804a2e474f648f2b60999e1859379290ad45b2f10e8d9924a070826f2a10f83570443cd1bc62e6697643722ea7051bcea41e701ee9befbd3b9d47c89c2720e7a8f1f086ffddc2cb4944ca1e9cffaa75158fcd4359501c5802d3f718862b1727cd5cf4aa1db2756907305f897b3bd6f3bbd66ece63e22ce7f68f19d435c315f4432d76e668d624d54fcb3d43fda4cb623a58116d85f7d2f1ad98f0edfa69dbe57e3262ce22d13dbe3e25ce394b451a190abd60defe04fbef14dd03a917f628fbbdd9148b1f9fc72a95852482a91175ae24e5556485401f7e03ce3564fee0646008e36994ac46ed0ff27e6066a65a8a81a6c8b18d1230e956259eb41063b2b736adf4d509939ba44ca613841be2a2b6daedce16db3ff5e5dcb9a908f48c96c79655426e41139cb735d057fa1c83a8dc66272c3c9b2e650e45acf2a48ead55f32adcef397d58b17f9a7b3db05248d7fa0105abf53b134931a0a3f5170b4957d801bdb4dc8fd1fbca5e74fa28384b7ff4f3e155184d83c057f2789bd917ddb06be7fbe4fc6821ba49b5c4c41408afd110ec87c3160f27133566dc10022f34d0974f66732c4f164d718b20eb12fa6c526cceca4e9f9c1b9700d24d811cf944e365e52500ef1b0280c2b6ec81363f3d7cf1bc49046b725b1d70c26101ce6d2241fbbf95ab8af1a52025137f71d990420af87ba3d1ddc683bb1070eb1220ff378436ee7538152ac1ce3fddb1605449d562d4698837a693902d9eac2bad78dfb5aafb71d61810120934c5e48b0868d7fdb63d6e529f1feecd4a4f4ac1cbe31a4899e79da4b80c5ae6a8ae49499e3831d301a159c34eb0eaede0ad4675485c2fb5bfd41d2457cb059f8af43adee607bb301f2fcdc5b488662b6dfc13e9c931003c5d4a6eb37258461eb23b0eff55e6f484aa6ef8cbcbc7b3e35db551d89f94778eb456cc98d2e513f779e7570d8f63cfd288bb3fd6b974bf776dc6085052084b3a51fa9a57509db4237638692a9fb8ce9d97a300acfb7fc0de552a6f1a3d1091210fe193a6e83efd9b692d1c3477dcce6083b453c7d24ce05f04c6325ce06b95b8fe233ee8a47838e44854b6aa508588fab1467c76288b20c7ba6235517df984d68954e088ef1c6879ca7ce7ea2fb0e0f2d9d3d4b9708e34620b660a96718577490b14d339cf6433066ca07c2cb335f0cba1bfe416f6a219aab930dceaf2ec32583b44ee6c10b0d52b681efd3c95c3ffd854a5e46ab47029ede3ce66dbd5198a92fa9ff0ed681b1542b49d3e2f9ddad13b611d67247a516425b1d09bbfd59184801381f8a656374ebdcd27795042b93296fb4334ab1d310c0f4af93d87b11d48a3d6627cb517c8e308a56cc9d0c5d9956cc3bfaebaa35bb01e0b087f266ff021a311636cef702c93e3399955177feb0addbb8cd0b2363b55bc40dce2b4549936d77f137b16bcc2fe06934c7206d731a70524251d5ed0ac38efb1d4bf743099d003fdf575b33b04ef94d26ee5ea32a09ef763869eb3ec74d196bdce04ddda54c71d6342922b77ec3ce18ab2ca63c89bdad2b80db5e7a81bc6f91ed7aee6e2dd192c61d5709f96bccf29249ce08c4db0dc0b7bb40f1c96bef4d5592b4526018484a8ccbcd43fcf182d3bb075435141f69ac02e8c43d52fb536983cc340ca07631e1b0a782880ffd0b902651d51c782a55b35fbb220e5f1f4d0ff8acabcf7a0d9c8db0e4d3a07224b6eb7c2659509d94bf8b4969364426a38470a04812f579ce7bcacc1918b660afe7cc378d542f7924019f934f0824865d9560e81b784cbea288a8b94f49c827cf809f5a7c199ff9091ef5226ab1f5a9d6ac860d0a4d48f34d80eadffe5ce8250e40cff971327b8a4121c55a5bb583009f6c09172c01b7222e1385a35739b5a99ad7d31aafda1d5b346507f20aea80241de01e37a54ffcf0ea84e88fefa059c4e2f4866f603389d604c697f3cadbbe6b5a9ce24d657f9ffe6c7347132ee0725d10afb656a14c376450d6603ad7e6d9085f68f1bb30c7687f22bfd97f601d79bcc0a23a1ef4ed8c144e4de73fd3459bde8dbb6a14e6db721b13f0710e04af5bba4c6d085bf9d4871be21f1a7af994506da986103a21f5021eba45bd7964020834fcb163faa362923316b2b9907465e6ee7e7ed0d555a5222a1c4ec700953a3d0b2a06173bd3e2a35ed80b878e065d74daa3beb3f2fd65c3e197a7774cfeb0afd054b02b047c3e20114a2d89de12678c4278181c2d569debf71c0c9b9a9facd137ac0d601bf93afff3f48a364308601c7d666309f16e467fd1d4861cfa0519333aacd63a8b0bba4a2955ae38626314f22b5957d3b33eadd1ef5eab631656f5df972551ffcd037ffd354ce78106f217ff11df7a6e7ad476d5674e89162f704b4950b69adec8d135011e399b4ab0d40605572786b0c118f183772173dbcec5d6d9e410bd4c64e60140242d45820755557f25a789337c272b8f9e125bc82d88dd0db1cec4ab01341f46975ff8aa08de3b13826844ab90b3d503b238d0612af16141cb59da96fbdb743368340456e10f54eb2ae2fac43944a0fdc5e09701965268276b4c7e65802d7bcadbb17f543033292b365047e4ea3318e5805a6fe8d7c3a17d668df6be81b1a05d192dbe11f2493f19dc2dbbc3cbece6c2164f1811f19ca8315ae80239baa9540a88f002a995197f8a19f1d96162b4c5329adc9794c594255cf41ab715bb1211608cda8bc5bfc653112807f2e3cf7ab9022ac4b30d72c4a34d9db1ef66248e462c7d68db3d594b6677ce564d87627fc65e75cebf297f559603bf16f29567b5aaa0e7f4e685aa982aef941084ccc7c199256710f5309f1838d745000ca7dbdf47529df1ff9abd1b42f726f0bb2183ddc9355706957a5bd9e3077dc489256659e39445bc5fdeec623d2e49ddad868b5601369efe725a954c88a069359e29853d0d21bf828ef54fe00eeca85708fd8a319c3edf842c97d4c7ab3c13d00652f9ba62663145a03ec1d789cca4336c4ea46f527f4a3d49dea5848675984739219c5bca73647dacf8eb1a077cee0d0ea627e8553cf506c20c35f394da72cac5d06d59d8924edb687b6ec40d4d3876082709f91dabee222b580ac27d957150a99c0e1370206d992f7dc82069d225af45cb9999111b8d7da53bfaae969386796c915753c94f1073acb19132a53fd07218449e501e072a50c6709a9ad30339b86e56e507edefac8454fd909024e6d521ecf1ac619252d099727dc598975edb4fe1718acf97f6ad6eced0d16815a3c25be4406edc9fd2b2865e1e90b230da5988c81c03f755bfc12c18e16d4ce6c6cab07d11d1b2b6e77cd0485d2f7b09b5d731f1a110a2454ef19b3649137cd56231dd670b0adb7cd5a10ebf89c98a68c5f12818f8b8a55308639cb0b6c36f80359dbedb565ffd271e9003aceb8e5d8dc13491df891a590d8384f7a9046487d01531478a673eef410d9effde70aa613940f7620119d65eea3db2a3c66948b9f8778a5af34f0018a3786e17c614697a1b66d9294943b1f79877944e525a93344f68485d19d789079a0451cf267c5ade2a143399423a8d45df175de4f76089ce8065799d33d52f748864b7b3510dd5127d6f23b45aa4ab1bbb0820ac799ced817784a5d86d2fbc3c5b176f6d8b7b0779d1ac068e148e75ec5017c5fc895d8256a84c669c65eed0ceaca7cd2caf41502f072993f65fcb391acd9d7818b5a69ecde04348e9c67368a5cc06ea16a3eb3cd83e2602034cc9d2187b73891f5e3844ac6878ba8f35b7d013bd0e772da871db41ecd2a7a68c681c4c5cf54d102b7e7991e72808f43386b1711dd07be6f6411511ed1ec0748722f40de119c2416720bffbf97fc11a6fdb75fd4def06fd9b01fc7e4c87a55193ab6e0ff4ca54a33cc9a23e71289f2e19a37e78a0a69760aec985d011b968eb6d1307b2b78d69dd9e723ee5857167172e51b7f3bf6ce90b191e75d261cb3bbae6c2d0515b7e24b4b4e6158f66cd0bdec1f18364ca53cf9f55dba4705c38f50d141749fadae8fd47b8d76ace6696e61548202f9ba4196912b67beab2443510011f6509830589a918250d221deca833eb466202fce53b35f28434d2a9554b5f5ae049ffd2a2c0288b5f765f6c57f7fa51f3e5b3d33114022452ec70cd11812d720001fa284bfdd79d0df26c108950a4313c3c5a6f26688705e1c7b0080fe297a4cf5e0ed13ad313e87b192087efc70d1dc7e81fac06e416e0efb94402e2437d31ae7ae0042c8cb1d5d72d152ebcd15869554f113fe17d590fd2bc738d375059791e70a0af2ec05484e4806a546f1b398ca508b9df1a70b1b20636a96c7982cb7648a9aa31e3624281f273413111c02bb1fed5d4200c691ba7b5c727dae8cb6a92edfa96dd579e89039500aa0fe747013dc770392d6b221ea9f5d7568918631de7760deabfa31c54e3bc1e6655d5daabd868617601145a35689029d98c3b70f91d306a76cbba62c61f9dd5990eea191732c05093628e4bc5691d8dfe440a4f92d80953e90a7abfcfc0e2f99f082fcde92eda5afb99a0786bd6735bab503a6c299ab75af18e920af5cfee9f3dc3e24c1a954a79bca135e132f974fe84dab9787631dbf4ebe823f6c070f5a4c4992dd03a4ca0c36a0e760f52b596083d911474113a52d95038a87f2313c407298cf0432eee548bf7954a74bfdd425d8adbd19442bc9638b2a81b4d02d6b6b0011a4f360c3512fcb7f4068aeb4c1eb7e0dc3e0d7ffc3b6ab46bfd5bed494bd136fdb90c9c3d77c30a6bc95e7561381ba5df5042aacf944bb3532740670a5ec76b91b5cf183d352fecfbe5ae318ea7bc8d84f8f71ca3547482b09c8d1a1edcd4f6d529fcd9c2196cbfa90ee1161b99f8510f23b6b201d9785123d6b3dc92dcec0b960bc1bc9e1f0ef27a6e032dee7b6565781a8a8338b0d3c1bd30b14a8585db5d060bd5e8c06113b05461cd77e200a30d849863bfce81079f79dae28337a5f606cfdacef0baa3a1a6f8aad576e69fe0b1026e106b6c8a8d8d27caeba605a0ea936a6f08a7a713cf9ee0edcb305ee07f0d4f4cb62995fdacd1d34bd3d2759400b6fe65e7a45d33cc424c43a6d0dee9a49d6cc01a470a7e6c2377dbce6b863a70c5f933ef0bd1383b5391324533ea20c06748150dca349112404f291f35454d20d0cc20550ca1b4ad3b1619fd81c44b0d6f343da518472eeab69fac5bd11cd3a3856268e3d098346e3cb93ba92bd698326cc0a2eff9d9d3b821c08dc885d459cefdab146b5df40c7f09bc306944d4150f7cfd47b041c0fd768da42b224c54f584263eb724ff5d67d555dbbc7671da1ebc1628b80cd769365b0d2734007f9f66c3915cbc2f73c26eea4428857e9b4ee4a51fed151d1f68e28be2bc222a6b18e8b6b095417c9465693bd7ab6bee8f1811604697fd68b635b0200d0c71ee76ef35312eab7f6c676f8a2e04edb6000b81161389eea85a382fc233d9ce963cb25aedd8f111da12a155f9ce9892f1e9a2a5b08de3d5677e3e74a28caa17a183d596fb42464eb0a9fb37c5dc666ea9dea43f385c0a714420fa3aae2dd4f28ed36c95492f2c4c563a0bbb380c6d33c3162a436eb8b03203178f3512d8b50f08366ca23c1e3333425c474003486fffda9089128e50172ad2c383900fc6e3721c639ba4101dbc06f81ca9245080d1d1d7af2ec7f98fcbd058b211bb1c3d5ed0c72b740c3474cda9a7e8397999ceddfbde8f2907fa1a68d0f172099fac280e5033dffcecda8dd7142662313b2ca787d582e92d38dfc68d8c79119cc9e19b3a6b06239969b406ee4fc41704a8445de1e921d02bcc2a61198a3b01cf5d3f919ea92c7d50a6d4b2b69f4b5704094d882a036353736dc4a4c8c17344694774a2e2c450299064efc4a176055c9826f1b1a696e78a2be9ea7212554e43c0b7f7c089930c8fc0a4750ab70d574e92e54ed92416b61e667b192e18eaee51343abfa7458ce7bc73dc8a9d1cdf241cc3f74f923d27b8124a87c71cd2aadfdae8d9bdac52a01692ede816dcba9262cc6c95709907f7e7c997d512974d1c1ce6304d383576adcc00dd5f7921a9ff382b5333b9646a43edaea729259d73b4a5ec396b3a47752e9e5516f3e6fc43c25598bb2c48bcff844b51580145bac326346e04107a07a3e085ed33a0b73ea9467cf377f20132cb22c0433394d2e9f933371149e4cb787c9361f6bc18242696fb6ac23a46ab6739af45083fd35edb3d2b27a9b577ce247d03dc567f2e002fdcd7aba0e59a2e71c073371675f367d52736fe3627a1695edbb80884956f98e93cd5473ca992e20c3b8ffc2fac16d247948f18b3885dcfd6db16415cd3192a66b4937ca7cfd6cbc641405a70640ff4ac1e0dfb40e003b2ffcd940d3dd0880fda11e6f593a4fd6403b327fb85058de55c844419b8b777e28b4f8073e34abb13fd033065f956cc655a5177eb110278b2620eddf3f7ac064a6da0bccec983e68558cd8f833672b757d9c6d3f448d39727ea3f82bd88a56f2ffeb7e2ce7e4ab7588cbde53fc2750fa00b7728fa7789258c3fa5cd10db8f28411795c8f5878899c1207d19615600834db51ea738d3f6cf8abb17fd1743ab5e84fbc4dcef823147cebd4a32a36e9c684258cf4d752a39d68e1b2199f79de3cca1c45b2252cd92083b4a653c667db62076445cff4abd1e5ee10f893a983e7971d93a8c33b95478a07cc9fdff2c3b7e6db6ba38e27db825df4724df2b5aa584165798758d8d78281f38647645ac0c19e3e10fb6a494fa0231e031dd3f64804e5058246a031c8dcb948fbdcca40c65b0315e3094441c15db9b3147e4a13729f3e7face780f7da5ca6da3e957cc1d9da5172483ea31ae6eee89c7858bdcb9bb4f1807ed819a976c43c6b183db9d93aceba0f5c908189fc8babeeabfc584588dedb7b73e51579eb06487a87f47667315f5884156ab12cbae0d005a924cd8cb01ea7b4ce8d8435df8b332aa7118e489bcacb1910068f95fcc8ae0fb87f14310981952e3cb6f5c454722e25bc87877f445a901f4ee19436ae6226668a410cf053e01944d2f7cfd179cf8608971907eb583f9033ee94639f71a4c65c2c8a36de54006fdbe859b4cbcef78ec18c7bbccaa40754ab364a0722c44582b431b5cce20625d75962f33794e02ca103ea07fb46c9503c415c8182beb32ab4d2d43a42d424d0ec76e6374a2306a31543b479348fe1b86ed2944fa6a194165aa774f688515a6adfc6443b960e1c46895cf846d13761e174dcf2fbee588d28b25e15abb243bbff24720e9b48aa926d3afecfe02077d614fac90bdbb1a87ed5dd8bc224baba8162f30893106f9d4ad9a020965e28de7da9e62b2cce9975db6285a514b028ac3c06760c263650f74b5ae589617742c60aeab625e2295b5e36560505b5755a873fc3c58aef29810737679824279ce9df0b8252a3417493fa23c179039a276f02b628e9606d7655b7609ed559fe262eb63c636da38f44ecec453cfb6c355a8baa65b536f4a6201e53d1002869083705d237700c3ae9970e8f28a5cb970d67d036836f22368fdb75b1cf2eaf11329ce7e0cf8907ffbcd42b000f159955be33043d397dd540db89102542c0717ec65bf305cf29117f741e92a6978ab833f4f944372feb3623b646c9b6120769de3b64e547521052bc3e70d7015ca6dc233f699589e60364ef08405762d2ddc188dbad23a11ad12e71790498874fdd62f369230e07a198356e629744334bcd5280eee671c83a532980fd017bbf12c1ef05d8baff44d979a41847b86dfc9521bc9c532d15ef85713fe7d4c02201d20393fa378fa59e0910b752720a9713c70eb8f799b7e6e78b83d09baa559b8155f266b60686b1181789722efc9181e14cab89ee1fad88337843b87160e918e2239c06b1f3c69d8178d3a0e8b39ba9bd9b9776c3e14fcd22e778ed1474dba2a8d1d33f78611f950da7112feb692549e57a77d82d008f10245019ee58fab826242112e3651f2229dfad3ec64d4c4c044bbebc808530a1ee668f3c72aa1e071808a34174352e00ffb7e77f057cddf3c60df1715f77e30c9e897a9245b3f394b64149865d6f8ceb029eb2e7f8be8b98b134447aece2d447641638a4cf0b086986d7d748aa617fada09271df5c5b103cd30a3cba42c92baf07be1b49efd6ae8aaf6de280acc11e8985ba07318231d8aaa9829476611d4144b034cf00a59462a22927d5b64272b32d70d1931d04eb526af5866b9a72acd39e628062be5c69d30182730c556f2105c95af6d5b729534654b92e97450e14c89c52ec7fd991681e079a6f00b9af36a0e3df1e2b12ddc7d8bc77f7cd57204d1860905e979f7d251f0fcaa7938a0ef89ddfcdc825a52068f5bcb60a49669ef515bce685f628accf73e93f694fecef6c25d5d3deaf63dbf2cec1e98197282a6c1f02d2aef3578a3063678278de50c061cb559f4c3f65b5ff4bb52dc54e6ff247c6664ead3a3b924622f6729e72693a339f059961366c56ebbd94cd591819602094a1851eb40a409632a682a586f73791290a12b79cff253bf93cbea046b64c95244b7287436bb7f7460b957f2b91ae9aaad8e11d7b20f15457decb18a9cafe7473f046e266ca8cb2714ac6cb3b594a11d8bb4954cce36d122bfd422c83ada75090fba158ac9086338ee02b4b82e6da95159007ce1ef23c66e0ec85c1fa435fc7d2e4455b884299a188c514713100862534744e0b8911db65bc13f7286d6ff02d79a19421179a5c64c99618a5f556cbc83249cd0c7ddd40eab5c13444e6f8e690900f16a2fe0d5cfe95b061755ac77e5125b9bb01ffe6784058187b922638869acbc54b9218d928c9e74cd4a533bb38b79e5f4b82b4faa9108b6b4edb745adf68dcd241b57c87c94441ff2de2b615692ee7ed1f86ddae645deb61dc6c7a9ed3ab1f448b8641c0066e0602b4d4f9973ee49ff1a96c62ff7fd5d77c276e219450bfc169a2207657ea3c498f663c45d0d1331fd105e92642ce714910afe68f8b19e0f9c7fbe04fb3d0dfc01d7f593a550aafd874c3b147413b51daeb3a7571605229d98fdc06b9959a1aeed01adaad43fc552676bf1896fb682f63bbb2631a3d62ba1fd2d3f05b70fb8274312ce275184e73aa336b1808457c4ffe0ac8971aa8ec633065abae747a992a3bb0e546446f45c073f720f0d88d21ffb1f2d2347840dafcaa488c82c63830143dbb7b63beabf1cfe4e2206393ea7ed72851b444b7d5da1b1ddfe034273b7f319398279b673dcc8964ad89d841b200e290cbd60f770b7136129d01aa0744fcfa329cc22e09a5396e9e182eb8aeecd82cfb155e6b913ce104babe059fd58fcbf721ae3b51b95f868c9fd08920861d9e8d8dc01ba2f4c42067787dd445e76d3ca49c14005a96c7efa8e7b759a6be4d78f627b34b33534df1f967e6d1a67fdf99dbe42c366c451ea83c99e2b0f725231aaa19cac4aa6da13a07dda19c7461f34c18077f4596732de27efed9ce1e7067f99ea777b0f8c338732c41a4d30c72ac346500051a11ac2057955daeb78264d0ae981c8227b8463a64f031ec34372da87f0c74eee7c667e0d540a406feeeb4a051312c183f97e3b9676d9dc7d03f0517a1018530ffa33b50e564de9b05d65ee96776adfa76d3270c5371f764c37e76ba6e62316ce013ec950927532dc4069444d5746f0b7d2632db8fa30095fcfb627c8d19b9785250d5ce8bf2131b36eb1ad38a04fac262522e53917779cc95e1137427c784356656829c341f6c8523d00a1d6ecd7ae345bb673d192c09f0a3ae9342392b83cfc8855cae2da58a77f48bedfae51147923353fffcc6c9a2ca9299955c0b40e7076ab36706f718ef838f4190bead7a73a9c99d8a8f4001e78de4a7e5ba6f38665f969b753e24806a77338ff653d79b7f107fd26bb776121fbee61e77e8dcc669012ff13c1332369021e5e8f1d352ee20fab6b8476f8564941f2f8f1bdd90800366b115e100e530579730c9bf39c53421556f212ec8a51a5eef3fbee5d882a25fe11baeb5175315e00badfe84ec788ed04e71f1f20781c9051db79cb76db461a6ad5dd0b884eac3780ec61c40f6e85235b7ed16e77b361570a2930ec20bb84864f6505fd5a5e56766ec04dbb800db9980c344a243a74189fefc63a8c596265ad26f5c89ec8b9827a50b0de3ef0365b61d55e52fc28df17e391ef3f2bec55954602b13730ac72e2ae725d252f26510299c87fdab6702a79b314b8b8c9a41b1a89197e4637920880e3683b3896a537d301204b3ed1ae962ca1d7bd46e26ce8c5720409293faea9a5f630e463f9ae99eb97b730dc721eb905120ac332f80902e14cc9d3c5f2390d116a3aff08d30f20a05026775ea9a72b86243c98d9e042258d129a580ae1b11da6dcdc9c59a229d577acdfa019179e757c6900051e7a2ccc4d1275b6e53d22d3c8d21aafd89f3e500642eaec623af18a3260f5798da953b9931fc4ebbdda0afa1f1996de3ed54e77aec9eb30882da1d77fcf2f5cbf445c9fdd1840eb620c2475c20e8b766e5ef691bd534b575e0b140ca641091f98b9245228e1d31faf48cb00c0e5744a8957cc7301705e619cce07db9218fd3160b41c55eb9f3f45832f3d7b79e058f2fb443f30cfa480e94abdccda2e3382650f0226d14251eaab914f7d1db1d5eea173bcb68dd7bd91350c3e119c9d07a68bedec8243890118ae1abcc6fe8239ba68c6a15c09d10900bfcced356c71abfe7dc520e912554cd4b11e011fe06b5a2490e72ba4b6149af139c61a7da0763ab38d3d71517a851815b494b04b47caf7079d614d7963b276a8a8a0a357aee0fe88e6f9d49946b0939e0fb8ddfd6e2e4a864609cd34d8a978a8dcad7389e2d69100e8bbc038f82fdc2456ee498bc64360d294a9021b797f72dc4cd096758c3626bf57ee7df2247e6a348516f22aaf94c4d62ce79f3fe1d81c6b9e252c525fc8745b42fec873d230b5b4896ce89bbfb15aaff0e3ad1a5a7b6812bc76af57c4ea4ff9629d2b2a11b50ad2954ef0a4dd1cdf1275917f91c905dac81edff3fad8ef17ed3dc3cebbad9174d0537e2d471249eb2e8bced3d3cee84d3aa343f8fca83ec093415762580c684b25dd59b5243f8202da57b82d35086c17dc156d9cfc19c905274112cc4312979b312b224c525ff7da1a74140c2fd3520f8a835a49132197e4eafe7c73673a017d5bc3f8d6393d817ea52ddb2e42cc21901bdf0a923d4ad1cb41b583692bc8014607150c770d482bf8d213b3403ace5f4b7bdbd317ca00c63096c044f61f99823a0368d41f5c87f056acb80848bbaaa7c14207b88f4762b67b19756efaa71ec840dd63bfc237b6e2801e3e4f15eff453f6383917e97bc7b5782f34e2fcf8835d46754579e918023a968f6aa27216488cbcf58625a16d0a4ed2e1dc43e7bf8890308bd5caf99b96845f99bc8845e7f005330f253aa378aa51c3cd4d54a26070b003389653c3c3bcd655588f103d9337a752523db0fd86a42729dc23990bb3468eb0992df8ab37fdd29608a9820856be9a0c7486638170cca4dc961ff8a7dfb392cdc32faf36d4d4eea0aafee79b639b0c5031e32a70a665fb0a98b62fec8cae25b89867a07f512eb71b80a2f90f3b90046c8717100dd2ddd21947b80ec32ae9500fa301e0c97fb2020dba89f97fd564176b439f6ac2dc50b6270c4dc1e4dcedd3c498614932ea1793b93b1261bb134805afc1422bf181b26ea90e492a333980ed71a5fa5c41cfc62775e7544c99c73f5262f65b4aad6c336ab25fe599e30e44bda3fedaa8c72356c6662205aee23687d16286b8117ab356a7dec0a47d832296c988b7f31c47902c597c403b02d3f2a4c942ec8ddf077273dda92aa160b1974e456e54063ed5e8bb084c17ca3af455692a02f3a2368979a001ea443b192e3c59f1df7eba595fe57f64fc429e661fa6503c93695ea2b842df7f480a21576d2f19b78e75867d975d40e62d65cd817bef002dd7d605f72541329bf0ce98f0a5c3dac77243c9cad9a3441c823f361383eddeebeaefaf9a41a0f51cabb10b16029357b4bb5b8fbc6a1696cdb6bdd2a0b55191e930bfcd195953eef84fcbda165cc28dc19eaf7d8bbfdf6296f243e1659e214e8f65e19028ff538848a9968f2d85c9dd14951f3f22f747f6de8aa9ac92a01d52e4d31bfdda8f9ac6fe755142c1bdf210d2cd2baa6b76357f95b89e905ef584b7615a332080adbec8c43b5e7af3819f53bd679292d2134a17a8eab8411d0957f1de01c85bb9934729357a4db3f960c3bb41b00397401a0ea7914065a050cf2aa84d81304364a53adcf066e9b1ea26c06bb08b27909bb64c5054c2876891eb11af5571d5f978c7f8f9ce3aa4574cf57393443a6aabb25cd6779a9c224c75bc463122346f385c9f95810e4f3694d29c2251fcc6fb0c15fb58e21add4f36a025e44732e87e94c3c2ae2a1128744d9776333fb6253b4169a832e4626e453899db212447ac088c720b6f252063440de5daa13042eceaccf7e35a56d3380736a18d79f75ec1ee876dff7bcde1711711b87a88e4e54932d5ab24782481cfd472f88535787ee94c4c66888c6b898b4b79cc8f31c89779ce9da7b31c6dfd4882c60ef5d0b9c380183936697e38cf85dc837bb0f06c198c4264c8a79c827b53c30cb76159b9eb991bc475b3239e84265181a280892dec3b199c59334d2a65852f824eb840793b6fa880d37141114185c845f316f49ea0552932fae526d19ee546563fd42747001a4c22dbfdfe58de27ffc955de2db29ab5366f574dda339e4bc2af61ebbafd33e3cafd5a77ff06f7ec36eec8ed441adff9ab0a1655f702403876d1551621531a5285e364887e6c75999a20f9e5da10ba4de4eac5680ed72cf95a6cca8eecf3acd05a5a0c2977c4edb0846c0eb23089b155db4943c8fbcc78e779bac3c92d23ff0a30b64f75ffb906cd8420341e103aca3a11a04430fc39f44f723f2281870d74978e4b5394178017b3a20b73bc1af3dfe06c7e034d4b56c8a62b92e6b991db7428b76668287f0b4128958a37e7d232f10c5ed8a13b1daed6a5b7ea40f083e34a3e21b9105c1c2c26257126ae13a0540634f69b7c43f8b9f67864f55b47b73b630fd4fb153d702def4a40e0e7e513d69b98df59724f1888044b7a439b6d6d1c643ba83f344fc3ee77380c28810f75ee4053256a38d3c27256c0a64864907ac766a850d113004d4c3534b751b905ba32801678a3668ab70e0ecc75c6913202bbcfecf0580df39c43c5161dbf743e9e05c450e2a6e7c2c269b11ebbbc595e1b5d2be403d87e394982f179dacacd785083d114864d03842eba22ca12c4b29bf978702e49b686ee8bc02ce3949c2fc279a97fa20bee731d93568a1c425e98626c78676f3093136e6f0cb585fea6126b513309085849e543e9693d1a0c8081288c83ee193b791c0a75b33f586c606f85b27c2a9c708f7bda8e283f77d694f3c4f0dd99cdfa1d044a5ee8ef481a4b25b7edc6760b748fa720324fdac0d75e95541750d5abc74b5dd7f66e745ce17903b1a83158ce98b3e575529e3c5c74d33f68d969fca727120259fe7a28d52657f61718d69cc649459e5f0b833900e27015fe92cec45c550483a3963f98a9ec242d522e3baec0adfd73abd609cad76efef8a61310d9d4871526a715c148a0e0d0b4135599220f2e4accf0707881a2dcd6b3a40dee3542f44b18c6287e85dda019429d7b46a668ad7e8b2aa6b6c05607ba75e89fe6927b071b72dd9b3a5f0b5cba8107f630e9b694ec26457fe57b9a2294be57df023f5ba326850600182b51d5a5340930a3d1f8443ae9b897278c1208c8596c7a6314c8320c090b68b06d3b4844dffebd5966719528e215d9c2efa4271564ee507e197baf8a17aab36b92466e9668fb92ce24c2bf929f5a26d47ab822dfd309eb7e7ec2bd7d410beeba1b998e85b3674a6e6ae2b9994d401b66e8ff51af4c7c0d2920216ba90e57830f2d3493ae5c012c4e7ce26086c8b841e130fb65f05e6280890675015037c8f1d5c4efc8e9aecdcc9e16634ce54b32a30e86d795e1cce3a4ce8596edadfc47b715ac1b6fbc145726b9883278580388aae32cde5014306610ea6c3284c5a539be332e22ff6ccb062f33f0ab10187d5718efcf035c4634e20b572eda559731c3f1d7588a55a917c9b1fb1755c29198485c9e9d80cf9fa8a440406d03b2874194aa76145fc59225fc3bc14b55466366eac27e50f947824a7764a51a3aa93f17f47dd7f2340398c90d8889051b9594c5c4f9eef1968d488c6124d61f9fc1b2992c9f19d84669851bd9083244390fcd18b62d89befc8132d02d06ef63a5f076c6886a371b6656d07f47b739996affceb259ba7dc2a8e00eba99a7bc7fb53e637d68b3fb1ba37dd9ad4a599c7bde23461207796fcf691227901ca2d41eceb238d35423ae34b9383893f30184ffacf48982757e4f40da603bc2162b7819373c1f33e02c31b85a52fd816e171404cff34e671152100b02fde7cad03bdc39108ce5ac4e9de549fc5ed329807b88242ed82dfcaf5954c2a01cc2188a38e5139fac1ea187a82095a0577f49abe1635571ff6bf5c4d7c7acfb6c389b520e6229de7e4c99baa077c5540ce6a8b1e2b70852013302bd7272dd530c763de5f2a809bada02013c9a42c576ef0cf8c6406393a2f7cd03b2ddaed72cc6877d2a4c293c3d84dde0c8f6393f10c218f841cee410e203c0b16eb96605695d556c6bcde188b0552d56f9212a0fa7c90719d67729162e0fa2b1868840d9a709d6d91d15cdce6441ac2788e7cf67c58697459452b0c0083e7d83f0109551078e0aff531ffb9f8a82bd3f0ab2e04e3c5b11b8bf052ee5625989f763b462b2b04726fa259bde492a6350f07a669415545593069901c72ca1fe18ed9c238b821cf981e8fd86d8d2ceff6ba05bd583c18800800a626deff50d3c39f07661046fd50f7ad34032fbff697f26c99ec9b8c702bf30f8e5c5639c43efadfb4d98d47659680a054fab1cc20f1340095977316ba4bd62163841f6eea978fa0387431a1fa7f6ac650c2894b1034bc7fbce8fb5cfc20bb64de4d68c0e63860ef6cf20fbcb6b4c57410af38f36f71b09ea40732ae8167b32aee5037bf3b47a56145f9202400d4d01e52e79b2d655e639831a74247d150889c26d57375d397155f6d4ed5a14b4d51c022c7ca892beab30ad23476ecfd535acc66f55d6e6f180a65cd9a7d90818ed8acaad0f6787b8c1f5e586e61d94a6c96c511e5581df649fa4d9ad2333520213da2623fabfe5b3dad2c2237ddd2a54e2922f88a0954047480bec7adb5b51883d4f30a2cb48498d8d544622d2cfb3dec2f7dd06d0dc6a2532ad062b1ad4d5803d55fd5a135390b67b93a56c223610382d06e7f24f6ec5e8d4d68973a7f1e04a859a1eaf67863535cdbb327230b7433a128ee0126c451cbb643abde194f363ad0e8c4314db56bebcb386a103948bd9213c4fcf716aab3e2074bf7051d2a32b83e7a21827cc420f4d5b21e944503c6b5a8d728f33f9c0e6c455a231eed59b88d1d3243dd6d4f1a81027c08059d58ac0713e7ad1486958a6886072627ba03b7736e95a136b671bfa1349de3d71de9a996d27990bfb5239c9555dec5ceba43e34542ffbf7e5fffe5c7869a8c3379823d7d2291cb04503d10dae9fdf5feaf799f182adb483899fa89d5b6370ebba2fce809d7eb9bed6528755c7d1ef3552a6c37e99ebd9e5650a2d07a0049d6901a0c159b2ec7053637aa8c96415641ec83bdd93e2ac877a0a1af8d1a9df3efa07ff8f8c69465c65fbb7aedef2a9e53bf47cfd0d22bb614ff8e2c88fbf40ee3d5fee48f9c91e9ab45882123547f8996a8211dedde3d4d5e59c3c969f67e00423155d7ba9c0e985d1ebb37603766f10be25c118990e10d13e1b6919fa02ed019225436809fdce4d164397148ed1fb9896ed95a8e45e3663cd9d11095a7b7f7e5cf72ca4293acf02dfeb003c28d5af9442939f8d71c104bce2c409bf5daa7948ab9bfd53b6f2ea0eab6ad3fc675fb67017a7848a29b0f1e1b774d4afea63f24fd1a54a33967331d66c3bf3a385898b330c2fa3aa0a1f06a4351392ac907dbd9024e0a9947272be459adec26d134ba74a15c636243204f17c8a2d2489fd0439a971404951c3e1f5ad7a83dcb9d70a3ee1afa283742f520e6750065a3ec4e21125e6d717dbaa5dc3a2420692267c4cf3e28f5265f80d6058bd7c116f2642549e187b07f38ea735bdd6abe674ed6121153a684ab4d77e807066ab5fc76c21720cdb4f39ffd3281fb828719800135ef42b7b0363b54a174c8e04a14529ffa1a54c587ec26c41d2a9df2e5d7679386f83105f166c28ffc341c08763f04d671cbe404b1221adab71c36cae22826ff7151090604effe00718550482c571e7884e23d37095b1a47ad33845a12842a5302dcd7bb7477a95b7827b411e000f120cf065cae5f2c63d77aaea672534f5284a082da84b90657f37f99f17133dc04f7c5e85c076669be9d5f44f2481d12f9ca39b9f030b1c87010fbe2ebc22d8dff0606328f2527d6620fa0d0fcbd80531a0d8eb747cda38534ec96ee7e6231e5a79d3ac6dad7f93db92581521c808a9108004e54738434fda78cf803a76d8799e86a0e2d9b2e62935ee8e0d4d4c7cbb8623d033164b1a0a934dda6dd73adb6e026bb8f9c81789b08cb1b91c1a4c61188708d5752fe01fb88867ab3f04af009de4e73190bb272df892bf9c37da663e9ce3a53f7d5a8e8d0d5febc5c2eafbd1738c326782c2cc90a7c593c687c38da3603e9fe89eef570fddde8c5d2a87b4f1c65c8dd4fc673a134964789e6071553db1293afe4344a031af9d44559426dc800eff195cc324bea157e48239f2effe7dea4e36dc6bb5a433f28d78dbec7fb35c72b1f852179717ea3363652850fed4ecbd66dc85ab91c04c8bd16956e776860c648e33642a06ebbf4c72ebf8e27a9d6e7a0cfaec6cdb32d8917310e761106f91b8d7886c26bc7033a001fe25e8ab46dbfdd34d3cd3d6c3487ed879e9793d0d9a3ebccdb033654ddac2092bae34c499931976c8e9a28b59e785a141f02783b7eea7bba100845b8bf100729b121b5bd82df654d9b99626f88148564677ec8ddb29e0a2048143199cbea1f4cc7d2d7ea3dde4f6b8f37dc82c0408990d491f410218b7d08d49d2cb3403d53268bf30bc3490a16b69ada1f666613961a038b0808d5664fa4dcdc5c7b5850d4b46a75f317b067f740ef89fde6016301ba76cc9955fda16b9f2664955079477286c7bed36242628ec89c6d8c3e2568b3a4f58f621c323fccc75ddbae200a694485ff0e75732fb8b80dbfdb1d85642698dc16eb8a16dfa59cb5e0c3b402c5b3206b20948ffaaf6fad92ebce592c0ed746b07e3a35dc1225822ac5395a33f4569609bdbff1b4e6c9086c631c5be775fe6a064eecb3bb88b5049c10732a7cd32b76e7624f136994c43f6ddaa84d542f75b0cc24af559c2affa9762dadd040ae07b25419127b96eca0cbc2cc17d6d8af44dc82155cefb605a91e5d4694fda3e8fd4d1e556b73833894f3d82dc62c71754a19a0031b98f3b8837026ae3b1bc01112a3a8f964c0bee3f04e82e76a76fe43d237bb1ed5a4405aeba0335e52674cd1a54e4a00c36a3128cc0571105fa2d00167772f7bfbdd83bc81798007ec0b1e93c42ce014d5224660217dc14f5f52dbc6b0bae29e2649997d27bdd6b3d6c16a1018be389feb9d9e73ac4981a88d095f9e26646f270cb14388068776ea3d9173ba2dba223dfedd59268c995f6e2106e5c4a6201808b657157eb6715cce6c3650a12677ea2fd35c2e94a41b102aaf24d01c673a44ad5110d25a5cb54af0c56834eb8298593cbe0416f29721745a408bfdfd10497bacd5f2e4dfd051bcfaa4924d327b722e72a8c78195722fe548172f432cded80fcff506b1dc60750ab240eb062048599d39aea9d0235d8d4888b1bbb89daf7863fe795cc7aa9fc1b7dfd0a0e80ca159fe2c924c92c7ba9360f912e6b1ded36b9d51b4cc0c3c3bc98e4cea65443571b39d6281c6699b0175e2d3a8f16f824c04625f5580afd55c65d01388790ae49b3fb76c419446cdec6a2ad567f4a4befc91a7eaff893b8dcad5b5cf4934ea80f0342e8ad358588a37b0197d5ee3f9ca483fbbb2dc86adbafc5b3b0557d8b9314ba091fb6c1bd34f015c3d2de3ec8df83554ff85410160f2acec058e5b923e996e7e77d7cbea29dd7c530e6ea77982c7edcc2f0a71ba491325963355d2dff08bd8647ca16d0e8de14d46e6487b49328a6e8911541855d597668ae251284e04e1010512b7370c4bb3edb06f77f2a083c5a9efab3d3ab0b800c5bf78c03fd81785c1c44f376abd9e0f520d32a824a5ea3b8313d4072c33d130d217fd81348ee0c757eb12467c6972fc739da22e03dad798718ef1024d3335514dae7e9711488bf7e62c5ea5a0d1689220f61107e819eddb6074a2bdd760833fa6e234264060d5fd58ee9147644c1dd97c191011a8c65c54d19396bcae73295df31a0f494e31919fd28010432aaf84900b8d14cf8b98698f4c59a2c79e04634e9397856a4910b7fb0c7b0be3de5e8ee18a4886bbaf53f29ae4a79a6cb76abd6a50c1951a846764bd2f6bb3f31b61f6dc621e6b653d830b2bec08595267051d9722c036aebec8dda5e7001ef4755a4fc07e4f21eae80c02aeb0cb5074becdda39988c3fc6a1a09bcaffb8c3e2aaa788d6bd5e654f9277eaf3d8451e2c22f78168514156bec01df4265fba266be676c79f295d9659e64cf73e28fe16bc4cec0c5625985cafa9805d2b7b98a66944f5a3b8b0ceba4618e1d14021ea0df66b41a9f1e5b2a131e924529c2d6ca0b3220a45b39856a09dd9bba8edf911261b214d73331d3a22a4ebe0c5b2bb91ae409a87dbb95598e8c21e4d494c4eb278c09f816ea58d62e837ed031c76817d479c8117bad62550549aaf2ffcc87a67726e5082fea12301fcb3f19c7aa341d7db2af0de17326efd400b8da7d82d0c7039f3402273fd15fd6a8a814b1a34e707c165a0584700e591af050a2d320c2eeb73463d626e24bd701cd11d1bd1f99dced8aaf788120f0193625281d2fa2226c5104e973bdf53e0600f1e45be4819bd5fd30c58996108a1307165b417116debd70966adc74113a3bb8a38ed72e34b6e29ebb4a483fa1a97748fe205d42f17a2f3c738784e8b4c21632552f498a35673dcc5dbb98494291e07c9f46fe7a80481a8f7e2adb08fc6be2a1c8aafcf9ed15da244584f8c8c1060f3a714912c3d34cf5d352a1a902874f7cdd5fe0063ada05f48e5bec1c5fb07ae10ef30485380367e20c0b1ae27fb32a126480b73d26159d08efb15d408fdba61368ec46e9d366d1f90104f719f2e653381072e7fd3df2e81bfa03aaffdeebacb022f774e8fb9f8a5f1b79d1f2a0ec716b3364e5fc7b6839a3a23f63b1330b14c1c4d76f870917f1a943eceb20dc6d05e9648831b122526841034e87f06db164e3bc77f3af46803230938ce8612b09204e6de193ee2efe458e79a7a256a969f89780312d489750263237dc952f23c0564a480a653a062f47c50a839f9acdbb57c7b1363e1f34d4813a47861a3b1b3fbafb7f2d4aa33168f21b677e778c9466fceb5c74d4a96e8a5695ff5267d01c7a79c361b97ed93e3d76c80fb2b531d1f8cd6bdb39abc77cb7a11b007523a62cd69e3d62dc2256816ae309299cebf40bc5d731a6ef182bcf4d6b223ca4527759cff62a07df961127bb06eb5e6efd024b5f2e394d8c85a1f429c6e62c5af41a18f8d60ac1342576e1dbe6427e476de1bee7998a8c9464d97fa101150943a694f87ef2bcf9c0bf7db360bd2aa060f68704aa5cd659d0e593fd8fc139e5dc2b3b77c3d93dc78540ccc00b940d6f7e60ef58b7f6c1a2b16b1a31a9bff8622fad06edc05b8b86cc3096106acc286076a1b45245301114a37168016e975ba94b8d167b53dde034778978018732d36bdaee006bf2b32c00607c3f7be2c4a3de8f6656c74512d3a7867cfa3a2071749f7089c0784846ea4bdcea83f804e95d6f6367c202dcec33422305fc90c96ac6f2e08eaf3c80fe18cecb30bb29ab083629239fe9d0f46dc6696b90f7e872f16fcff489d269f92979b5095116770fc9837144c56e98aaaa8c13d356aeb99544df55a410d60bf5a1ebefe2b12796db3740eadada0951aad22da66d828f94305b03efc6b45131db33c915cef4afddd6be5c999fc3bd9bd90781461b8347c5dd9177341c3d16a4e12d24720e98efd2aceb44dfd063da53a311a7f458d8ca845e17b232b3489780445e6d8800ee399dfbe65e0721b9923bd2612e6b2a40e2d79d8b4b6f99485a64238334586f47657fac540db0a9af6b8ba644cd4813ffea553b285c7e47cec313307c3590ba39149ad9e503bcc002e42c38de3bcb2bb3bf72d7d5e6a3fa76c5428bfea92548055beab89c349ae301e4030b28b3b61ef318b28e4d312650596ec32926521a010b3caea5cc5e4d9c953acdbb4515c6f90cb5d712499efe015042eabf7db7204c3979190548c2790abff1720acf8e84f9a392bdfa8361b45d842a79e0cfae7c6b0bb6082a42b363a64c03ce528d47af673d4704afb597bb43826ee6702a8033ffaca2ae8441b3177ee811afec30131f9b1548cf27122b597dc024c7449aa9377c6ebea807a2eb8764df860ecbda7f56d7af578c4ee18f2c42c5d319bc14c1384245d8cb977017752ad32c177bb19fba967251dbcedc6276425ce3d1d318fc2a889b45b7979b424014d97fa1027f208f091847cb695d3be11cc55ae48a32cbb21f48018a03ce736fc92ce71970101dee89e6d1549517802f6df5939401701f27519f8e82cb9d7e2f45d80ef5dce556fa07842eed426cca6aca9e011cdcccadbba4d00704530151b957b7bf61b94b49239696f849a583497a03decefc01a37eaf72b5a92c78f4f3e21542b50278539a94dbfbb64d0553f7d93b7e61b863f49c04ee4db5c2692f6f029776b1d520a895648a7e7e5a481e8777b8c87b9dfd68d44bb63994a87e0f3a324fc816025017a0d20bf6e3212f4cf275d16f8fe33dbb2616d94b9d9f6add94d25c91b40eea296450897cdff9decac8666116c482e5768473bc5c40d4d516787c8820ddc05ac57ff972fb1312495e31b61e90a613186892c3108f21f2f552ca29f1840591ca01f623c5bd101358b705f9f4d184a9662485f8467bebe1c2845c691b81132369dae391db4b94bf9daacfd10fec5bd7187ed1a217ad95bc79257d72e79804aa0cd3231ea5ef43b8d2e55717cc646f40d7ae64946ef669ec7432f8b3235a5ae1e9c6d0f2845354770ab6fd01101baba996f81410fc18c4375f2ad25549929a0b309f25d860326658cac08a0c410d6f07e6d074ba00ac02360db409fb46ab8dfeacc56f351975b9dad4304eb91c6043c5b32adfaca6f71d78da254e6deca42efb7a48eccd5f60a43e9d7cb30536ce7709bcd6bb003613c6fa08a6a4dad0ae73b3649fef118ac0bc9b4f65be2a93ff44ea5a95c64a628f2291b93cabad9ec23a75599d9d31957d0069736c17f168d7e25c93de9ea5a64c24d6857c650ac685f6fe80b8c472e9c56901c93b586a4071c469e3acfe53cb1ba941e551ab2cb7002cf4346f4cedc111861d8f9dae3adef136d68bfa7541287a710d8b7fcd6684256fc5ca4c66ac7cb872a85f0f9780b2f41c6f62586899904470661a09fd3b71d06baccc8883a1e9b78e585c6144252848f56120b50cfc4003ed99c4bd43f5e0b853c0288c9de57eab709bd5e78f0e1b12d1340e42bef782c2f4ffb39c358d7cefc7b43f57033a84bcf0bdcc21584b5e335044ef2140a62e453df99dfd4666dfa7d5c0a816867052c37f7164d5f2198bd95eb0572c71c0df38efcb81a39b12338e3f17e2c89a13a868e3477ff4aa5e9beb0e83098fe48278211d5cb5367b54beff06b9134260c46fefa0c752fd1b1337ac44f4ea911f31599a87c7e1b672f51fc568c91c40d2be4a8839d96e56cfba165821a5869295dc760eea880405ececbf58a5cc48aba7ad3bd77e810ad5f94f6e726ad2b6d408956eaa2ebd78ecf5b99858754caa53b7be181d9530f8117b1e974e9757e2f6ee3f1b6110c0cc721fd15499b897a7a20e192b87ca5ef0bf0e5571ae1273b728bdcebe58648a1a9189a5d947a3ec5fc56fa3d519dd96e30b13b348dd7c19005b71b4b73cc704d4c0f52fc54f6ddbeaef3cabbf6b335cc7bc9c607025d47bfc152617e65c39fa6770981d3232235a3be3a266b7311a7a1c3344fea67ae61e7f9cdd4555f14f71358b02f78e9edc0e9225f2ad2f7bc11c43cce3c3bf491b42f6357bb5a5b33b41408386911995acc8914c50432761bfcff24314c57fb33176d11d2b6f6ea10290bd2f41b83270e679b828b07260514cd37ab043529ad18e6121b4aab13eebaf3e1c3707adcb5cdc7d2cfb1e954b8bee514e9365f634dd82fe47994f0c7035df7c6c8800ed07055202f0a093949b9124fa0c8d83f7275d8cdd01787828fb2757d6f50aeecba3a385f1f36cc9d923101eb7b9022a392ac6025fad21eacf7a8802a94543fbbe01b581cd59545e3776fa22cf84f2947fb9c46823a49da2d7441dc820aba40ce9a2d1622db6a207df58304d357bb542ba379b90bc63410a6e50aa8a37720431e8bf71914afff3bd4b27eede1545ebcc39f9d50725082466a54077b4adfa05f955f96a44f26eb6179213229eae72b386fd7d12a48f1c7cc88ac2e719a6bbe2cbc599fadd9b75273c1b582b670e5a32a7f0b677000de0bf97e1fd1e050da91d434032c6030072d3045906e32cc46fa2522a936e50aafe17339585e0ab4c2b7bee5fa1182ebe89cb3e83efb6bb1ea9c1643e6444d6d57d7b6f8645c1e537d4ebda3e5d484e5c723ab5a40014ed5541fe2ddd9f6cdaf0604400a4388cc04365cc6fb939d475503552d8133c1d4cf101fd0590303a93d9f4c1cfbd3f150ae6e2060c15194db1825736086db33b5e6986da8a00abe13366c46f916368222bef0cf8b85790bee9b0ed89bd24741aa203fc805024a98e2d74b854dc9e0a465e2ef5969a510d81e242c9125921dc3ff5ef3b0bef48694ca4b694ba200df919f392c787dc3efc659ba1ba8a4ce5c095842462560207dfeabf8797e6913c7ec0aa65d2d1c34cf944b967275004d8f7e973d8c575d2414dc7d29014d5d7497cd498de6e650eb3f8ae40f827f3a2576baed2aec9dedf352e71c9a2e99b53d5b204afad9bc89522a512f4fd1147cd9bc2b86435bd6183817c9a4435c6e28b4aa91f6cc8110ce52d9f30b644256ef828068a8aa7da669b3a1f492cb8c9b6c127b955e0b15ddc3c1deb9c05a9b108e2f12918de9b887d71379bc5643a66a1373c36097d3f744bdfacaa1684f202a0535043f7be433c41d7c0c42d02439b3f16a223c7cc6192432f318c9a4430f24e8d30987a238d71cba6df06eaf932bfae1cd09aee274ac152075b9e7d96470f814068f7fcaf90992478ef3343215d472e5daac020412f7f6354176f06637398630590155ec088bff4c2588df753fbcad4d88dab44b1beaf6ba5da7ca47aed40a19dac580ec9924462f1a9c14432f8f90dbcc84ab28a764895e433fe87cd3d60c3cbeea93816c8846c2c4f38628a182abd7854b7f511a39f5735850303dcd0267c039484f47886a6dbbe1eb81dfc84ae0539d71971df29c82fe2dfdb0e5a08b0143bca1dee60fee5cc8bacefda54451b39a33c031d2cf84425deca818650e29903afa9e5c15aaa67c4eb75e18a1ec94044de210c1512a0bf52c5389c7305d48ed512eeb8414f344e767e40ce323cdaf5135b5e807a2cfef2ac77b256a6539eabc39c25076357ced8f5366d410626bdd61d19c688ec4e2e666f7436c24be571ba6213f2cda8f00197f268dd154027df499eea808ba9ff78b2b430441ad21d1c0ddaccbcd36d2e4e197f3c60817e89a8a8aa617f9ec1d6be9c0bab6c19723ac68120e4477e8e031a2d0f457d62804b8b0e6b3bb1f6f1db7fee4151b4263b2763a59e9038609390fd9707d7f330d2c9074a47c6780dc908722245e75e09bfde2f3f6fcdc13a910ee5caa69e22a9ab7bac6960b8cb00c68f18083f103ea79425088c0aa7f23ef6bdfdd1f51f0d23d019382ff96d3e7f1ea09f509d1e5593b3fee81848baa54fe62f76cfdf60dabaa4c14a84bde8fc8f8eda5d98eeef770736cbb412fccbca75c0ae34f73781b002c022690cbf287bf32a1e705e8a3d9a0a0be3937dc837d2bc8d592d58b12d2e17029e08fd26a56855a79b919d369df64b67584dcdc6f883c77ba93c4e0ab99cf4c307a167bedb15c4c7c962288bb8d1b97b646ffc3b7d0e840608f4aa2c941b810edc41081e7a06ce5a5c2b273fcbe32043c3d87a4dec1013effebc8dfc92b12e516d497093fe6277ce0a702e2caecabae7c9720db260ccfede9f68b6b5954f83d7a0e66afecb9cb60a4565424eb8317d096f70478185d1f40aaa155bf8cf92cd4b8236c02de4a466f2d78412b2a1fb7e267de895c35d0129553d73604acf6482eeaf0711592f53ca1213038d4f12667de3b82bf611895c1c3b8337a2fa6db0c244d6e877c2328b8c1e549c2c68ae65b4ed20f91231517f16107238c3d73f27b8100d03def9394f3d5286daac2c3cab3b78f223111faf08e1941861e6d46666be23f65f2aafecb4f99016e5383abb45ece2c54cc843d28e0d5a82fe533e569f582ff5e2521e6be93510247c0bbfc49f8c49af278d9cda8be208f757a64f464ea4ebe2f0ad6b740dcff761a391020ca58d6562d8326d99180a5fd1565b7c9d6d875b65bc6cf357699b5e9a9a7348133818d24e781465eeeca22a30bae7c591fdcde3cfc7ba9c68e9c2601b57a305cf7b68d0a74a637c115ddf62a74dc6dfa7df901943136ed0a5f41fbd21179a80ff664b7311af4e46e2a65d17ddc38c214cf2f5f7ef7f50878be923f3dc307cae96288147715d1908c53b7f5dad4c8bab96a2a5aaa2e65c625f210922330f0dd5365ae4a7d81c781b1ae91e8e95b8e432b87fce50574c7459f2dbf38e678ce596fb547fddceffd4d2244be0fe456bf010f704d069a160130de4c6610d7541a4092e864135350603dc7906467324a9f17161f1ff90f70c782207d1ffad2fa2e572457384134355561b8e73675e6ad6b5ae583d9e58e9c051b551b94403f161ec25ba5d87e888672c6d2320317960238c8dc448ca6441fe0424da186f8b3b29611cf5f94329438b01babc0c7eb9b09ee839009b7c819fe27f1318c41896960935f253eb305205b55492c3792a261fec20e4176cbaa81e0d1fee11ccaa6106213b65d84b0cfdf0b4d48d117830760794743a0a5c052dd4546d19654138116a9a8a061a8cfde981ca12a388e27a511459c4240d2a65ae645657dc8532a447322dc82eb6c25eeb7abb5fb2bd908e6f9962d5aa721b0aad49fd201e1e412172e34a90104bcc26bcf3a3b9e54180b37061289ea36403684e27bc3abc5f8787cfe74bd4de262f22ebce6629e7c78b9b7a90040230cb815f3dc75370d7ef3c1d107846909c0911c8b9c6a00c24033ce64c3eab149a867354f72f7c231fb5693125205eb3493e227c357301eadfad40442b2aa69d6432b79af2e17de9211a0f2fd26220de0ea251342c602b4340625eef01d2a790c26917add42c3588922c701ea5649b54fca382c2998aa371f5e588a50318c4632dc0a11b3c45e02537f04deacafc1fc31984a44ffee05c0c589ed5bbb541518bab8eaa51397cfbf73d00a21844374f85507279ce8a3844b20fc4634f14ee16396977af37e73928f939bfef8153f0dc60864d21a18fa20a6462ce77d4960de934cde6b572e73b03e2dd24fb568b7d79a3e09ee76eeec234c0852ac2ced9b82331e3085547f9cc13c3212f8f2da47d5bd91b6eeccf74e4ddc37917fd5fc2651f97f0c37d00073080dc6154bddcfc50fe8ce82879ed150e41b3d76da4fdab25136a60bf45505a6df65ae01803df5356bad66f5b06425b6dd8d4abed2d8ba0011b309a71ff5497f6bd0787a5ccf8e18758e6fcc0f89d675cc39724a0f93fe30f52aa55dfcd04278eccc1982a001e3d8c72ffea7accfde51b290a6d7b414e331051267d98c6648c1fab596b61dfab8989910b8ed5b9b1e139d134c14a4f95729803dda3cc6dcd4662990bba1412052ec86b3ebe8e4a007bfc41cc518442e80606b59e2bb1b059a08d37d972c21068c79aa794774db0edcc45cb631afb212f7bc816366ee6b986ea223f1fb012d2ae58f90e72952e9ba92050356c0cbd0944bf7de19fea2cbece3389db235b188b646f354e558719a979cb2ceff0df1a277ab9a23aea71b991703b4f1126433e2dcca4a94c35ce65356ac67ba2550f4102360cb82dd6abfe9d4fc7bdaf0e3a0f0c2221daf7ff8a75b6a8f6829139fe7d40dd73ff23db80e71cf0bdde2c551e7524443baefea936605edd426c1be1369226d862fbae434552bb66828f2607ffb87e355550ce946a8fdb3e40779827685e48bdef2b1714cb3f49884b7c7bad2ab505e79c90cd9207216bdf9da6873788df8d93c403b211de9da2360b6ca0977d3a1be8e2e5d8d4fd507d86e16d1b2d90e390ac3eaf003c84abd5f2be664202bd7b8baab005f358cc9b777339526a2e1527158f5cdd1695c2390b871d0de98cf350932c3f6df7477b89044c259c1078f4ade107d501e1faadae49189797e0237eadefe96b166565681346d2f88b67f01365db8c538523374ef3daa4e3ecd3c49064ad87a7c3d8c27b4bf1318fe4d5febcf2702ebc67c580e2aeded4a38298748113588cee8cb65d64b91d8e2a8a0c45eeeacf3cb8c6f82b9e768805182b50abcfd2c84e8a5a37492392e64a6c9e91779b2cea9c72d47550e1b57778d4c2d960b33d40c9dc579f8a79d5855476ac8aa481697916037a82ecd9d594485b4edd9e1f121b9533713060de8babca745e375fe128e9e0b0d9ee6033c6c6e3c959450cfbd917a7754caedea098f78f79c178f2a747bb7a763fba2ec2466f656dd18cea409149092a18161aab94103132431e73a01913eb34d6a51ff9bb5e418caf2821c6a5ed1049401fd2aa67c781d020093d53bab8e5fc3a8b16eca8ac1507521f0837c87ee251ca961d3208a1ff8cf2992a2b6f87023489ebead283da6e6bf232b6fbbde4377735989ce97f46250aea7ecbced211d89b3363a17f386b19003470a6271504fe51895d6451ce47c04958493448cd0eb523cb59c1870dcb75f8572d50ae32cce5ce7303e76b50b747cbf018411f4ee205a72d0131f5c71e6ce9ed735caeb82d2b40a0884721f7e4b8bbda9c316ef473a0d5fec6cd580b20e72a49d9d4444d6cef61f75a56f7ee94a5ba830ed4dd4100bc2932129afe2b23be2a8d84072bf86f6b061e87dbde51ef5157cdb5d4960f48490ef2e6aadd492e677d66ccf0764e86ae0fb945a19c3916ae16446cf9101315fce55b973e275d7c8998da20e3e4fad7c1e77e5810edbed542b275046935b900b3a77a307ecfb08eec6f1f7d241fc33525b325597a07ac3caa4573e22d556ddb06caf702d2d5d9e9b644bc70751c0188f84eae1c30e9f74b6237c053cf585fdf7086c5b6c83e90e113e01f6775b46eb773d0ef8ebdcce0ee060661d6c68d0b9f45e62ab3218fbc247e01a7f32aced2ea373db6d7be4f2adec2bca07d34aac706f68135ca4bc8bccdf9bf4671145aed8d7afeb308581068b6e91dba24db5bbee07b2f0d701c49659c54b959528f23ec69518276fe030d8408b2f51c5b68cb7a5613c7d1029a671d41e2595ba3216878bc31fccc24acc6773a0a287eab332eeedb8e634a80485a93ef6f76926c0ec5c8dc1466bfa5d3d677a0233d8cd608c80a86c5c5ae39b8c9ce154af9afcf7b773f9bb9728b9c4a4abc5cdaf123492c061069be46ee2581f8c072d096bfb739051f75cda8aebf44185dd2f9a2e5b7b3484c51fffb0c38ce93cdcc50523ee7aa2420a6dbda81e6e3ed9bf1e91c3616928fe56ca02bb717a4386167220df629cf285846f673a99f4effc6390327688fa37d9fd5677f5246564253817a84f4ec18de09a7e6fa8d3777e33fdcc6556b16690908851751aaeca7442f21e768fe967ef248aa9dc742328bf93cc38ddaf89b6d57ff27b46758180e52ae7e01ada7f493b67efb1defb0db87176474df73a48541676df15ab55aadd839e78d68f4e825fdd18775cae9ba0a91465ab6d2bebc2305c92f2d8db53e2dc9a9d89fff633f770c9971061a623aad58911ac061cef156be9a8c1f21a3a81829d9b4fe2a2c6c7adc4cb8eec6477d8a31af6287c8d740216c08a4561c164a6c4890c0b4a7daf5f6569753d493bcb4602204c202fca1c3f09f296e64944b875a54bc9801ce2145541ca2dd5ba5f6614e1bfeed717ee6f025d89eb4df081921a48499150b79f57c945a30cb9ec74df16f9600508f97f4c1ded41aae187e29bb0ecbe2bc68fa0ba9474535b1b07747579f68dac4f90f19aca60b54c04a7bd2f8ab154b7389cb9022d6e2b90789b8f17aa8fa8ee0ee1af726d737fee913a0cc38a0dbf1d65a45caf7d00a730f21895c191c38ff0b9d711dd8883c9c025e32f7770a1f04bc7f88b405e6114da655d73ed82dc42792e7583ff1d43f76de33cdb741949903742eedf620cf5e656eb16cc02bf304713b4585b65eeaef6d576c202f7d49d29235e7893348094f7db4a2534853743a39608c63debe0c682031f216a2c36d59d833e0b26caddb2e580ea9db3d61ee0e3795cad05f74b7d999b13d5dbbe480e7fc405637c6acc3035b54d8d27ca0026fe45d29142143df81131a4582ebf0b74a7744820792896c80eb6827117486dc3f427eb38ede0b28ff587194771017da904f4848edb67d1d4cfe9f916bfe99440fb274a3d3fa3f2df9930fd629dc41bee52fd56f7a029b1debb777528e291c8143a244cd67b3cd492f93cda69f206fce9a5b27ce2469e6dd274aa5c72331ca343bd6a5fd6209b74bf6ac9b835f6da91fe6e228c43ca862f15c758c9dc788902068a60ce6452d230b01d4cb6facd8d131c305d5f8bf4180a42978548f89065284ef52051c680bad2f40f9ca61e8ee0cbc0d159959a82153d0335a29ee9ac05c3079b68daeb11362427f83490e7cca0680202bbe238c21993f5d2c7256a2d65be14b63799cd5acfcfb6a26f9cbb79964be5b02428cddffe990dd09cfe5485b442a58a765ec7153dbefd90164db2847658c26bcbcb767899858cd97c1ab93a7698d830443ded8bc40e0f7843b718ffbe8d9ad00c668c0cb109620100e11c39845e6f615792a92331c2cd82595061e31cc0f60ebc6e03a5cad817ef34041e3f375feb6bb751c0f020a90a47b1e069d7f146640f539565874305b2d5ce07246717f85b03b807c6fade7a8aa05b98eb8981aa14768ebb8f23483769c5b4f5c35c965ffdca72aa620bdad157a9856584be89cd31311aec69518b77a4867661844f21bbfa820ee84160d4c5910e7bfe60b01c80214857f3bac5b1b7908f795dcb4282f801385c6b2f88cf46b2ad4d222914d926f2b29ca79374c6182aae69a173655f81dc76c16dcbc6290768fce75ae7a6962dc44858944dbcde65a47812ebd33019b078fb12e225e280e4be163e7454843ccb02f542eb84268836e6c6c47c5427dc8f34785b65b7903dad92d57890e41419f327c596fa01e219c31830254170c1c8e9c993496eb9a5a87ee71c1e4e0ad0618f3765587970194877e105140d02079e9444519fe4a3989f7aa41d2a03774a404b085d1fd584d823bfbd44dcf93961af85a4831107afceb1c909e062a21b3fe235b8c2dda9820a3368ce3a64094221e9572f28084f5ee5c36275a2ffc3b9a03e0db1576400c1f371fea6e68c771f1f9666562ef7f7b6331b6f82bea87d81e49731e02fcc7fd00961a8a0b971bb3f563fa8ca3671f5b5fc9027a0d5ad5cf7e208c1b6a92d9b75476db374d9205be9525348d80b099ebde306351518b2609c280d571aa1c8602d52e28195e60e7603dd12bc3fa69ff45e4a12e61ac4c670afa5e83cf473ccc292b93f7de85d75a685b066032a32fa5cbe2921efbd09a177c5f61f17fbf7368b6e02f871c26a6f09824dfa45361ee0d056dfb45cb5c6bc783e50543aa0987693ac0572efd7ef02a50bcbe774489333d5e5e80ddc732d269f69f773d7ff4b58589c97abd5ee7f1ebbf9f3580253af57d9c9ea8239937be3c025573e5b917cde9c0f81bb5ef8f19027313d59cf04a59073ed6a4c5a28495d41daa3778be9cd791e0ee356ed47f717db04c2132e6c33b3cc50b388a843c0b9ab4f4af2d63f83b80a0aa17de66e4e790873e251353a95efe6098863299e326a916ff1bdc1bb546bc83e8e27267b7dd12f87198efd0afd2b06b901d77d2f826fadc648b591119c58deb2a6db628541ef3c7764b3afcef29720a5cfed8a674856333185b13a356aff8ea3cf609711dcad2161b461e62bedb19fb904d2b5516ce7756dd05ce16fccd13edf3bc36e5c2f9255e4ab015ae9d12bd38e4fbf089dee9144cfcecfc108cbc796cfaf9d1c4a5b428d821555b62da4107b064bb9ea50104cb16e52e0c34a9a8a8f708a994f9e8db2379ee3f64214d660d5f158c8530c2bbfce81679c9b209217759e519f5fef91bd5ddfaff05d06077fde4dd7eda953888f5a4b9e33fdc14216b89079e7649a047461369b2676669e85edc9742df8d8e89a4976694a554b0254375d529c2d6e97c5551af0768c0565a29dadfb07dd17d30b2f8457cf604b61f10fb804cb0795b8499a41663cb83f4ebf347524c80932bd1889a925a4778e2b0289190ffdb2ca769b5265fc8069cdb09bceb426e9382199bd5365c92f6990600f98dae6a9b6c44a3b06e931dddf7fe8a389a47310787bc5ded904e1751d2d96db945889480ef721dc85349b9a2b0dae772613f92e2644681d037f232a979f5a7725cfbdd998e90252ef8c550a0c8fe277dd2c93b8dd35add60a424a31df52fb50e278e198fc8d73f7c426ab1b0ff0be93b78a316ef6142166a1ec3f02c6b409764d625721651b4d85ede0c969c4adfa8c06cac84d56197b3181e9b07d22688adfac376a45122a80c5d99948578a669ea7adf18ece1645023d05ea28bcd54b6f52a5ebd3ac9c5a6f81c8ea4d1c201e0544a7b841c176ccc2c04d06c0839ee2f299aa1664e1c52678081af0f5fd9651ab008062e2e99935286be81bc1214a918f8b901dd287550c9bf50d23e0af95eab16de1aac5bbdc9064aff388869c2e3df5bbc1ca0f36469fd3fa8d16066a5d5f129d9e062b2a1f8b2321348f5dc8dd953359aeb3369166f91c61f8abbdfef9bc343c1ddcb6342d8cffee6b75988b9abebd43300a33c73a1b0bf21f7f53413ef444a6d20ac4ea06a447c80fd7db5b8e9d885ace4a50028c41720142c87e8f3b7822d07df8393ceb8356210f64c0e9b8527524123eb7ce3c6352f7fc9609b9f73fe5fa4c89fcecd4c76183483902ecf8e3291a064224bb6dcb359b3aeb551a7a29b91993c429bd00c9941df8baba888a2e1defd88ab8d003ac20df3bfb3ee7e43f210f91db40fbca1bac9a3e36139eb14d7c177315be9420c60743af67089562f460bb2cc6a9b342070520387083d59abc9a0e08aab7737285133d4c9faef8a134d120b65747900f568f390ad5acb1a4aa0275213772567c7cdf8c6b03c605013e98afa30b2c9c111d1e6d15fd9fe3f1f9ca4e7cd77a5c0acf880f7eb71453a9cd8a6a9c6f9f0d8081cbdb850c5ff3db54f6d9d1a0e27f20224f126ac3a4c7da21f8cb74dcf22169bb068b7ba0e2470246309d3acba043ed8c19245d13a81dd8e4cf6e56d238d25f922e4ce3ce3b209ae28db6baa0f3ac2fa0a5c3c396e261393f358f4d9347dc6d8125938dc4ba57bfcc372ed29921c600c4642b17f8e9bdefa002ad17ceb23a89b769cf9d7146e1a9e1bf941602c5a922ed14d16b8dc4eaf0a627e269d0af62c84709fa276735555b7c10f475390aee31248fccf950f83ffd1a25784e8a77d093912814f505982a773213519572d8be321541c2f8f5ab7ea98f4c5e0366ed32bed97d7681de3e8bb8fc202ab2b98750baea49bdd9b8bc19d82c1ad8bfd371ef79584381c727e6d78e290f1f3cff54e693acf1e821260aa075d3f89aaaffa209caae2000eb72799deee07faa375ebe04dd93786ef0d86d4026526b1355565626c194b0331aaf5f4cd0d05949e1aad560578372c6ce51e4453276cf45fb6b48620034cfe03ebf919bfc029247abc65c3e11355462c9fa5396a35fe95199a19db3a4fad3108bc83e38775a4eb41129906ea914d8ccd3eb1bcb3feb7fed11ca38a58b3be7a9d5e9f7d6630386b81442f754119ec32e479ced68070d0c783ce173c88c6d95615cd02a0ef6a74fada56cfe338ab59a32a052071eb1f6f10b6dfd920c0d3ce7759fd9c26df0329e808118ff2a256cf311c05972835823f4bba60669edad0284f0fc8ce81ed8bf4f217df64d99780ab2aacd97f385843e23110afbd10d7f7655f9d4c58bd60b71134efbd3d329c8fecc486a577615aa44970b6a6086eaeed07c51c35773462ed75d02afb83f50e8625172101cf3d2e1973c055d4f8bc1bc6b7b084969bef0ae9c6e73a818d07fa2a030827f28af3046ed8baf3932a0f44cd01925427d209cf02b1a78e8eae5bc9c1d6f2e93f3f9d456099e80aaa58af5955a5f6cca4241f1bd699dc2ab805c9e959ed26684bae26527b3b4be617397005a379318ab789216bc339fa777136563d3eaa5d27e399c96ba1bb34c52c32c43a50ad5ca4929c65f0eb7d0715f99ef6adbd9d2e61007cae6ede11746d43497e91792dab0d3477745e6a0f3467b67081357ccfaa98d4dc75a691998f79307b275ebfa02889ee0748655583d081f3c411f55f8f0120c75aaf568c65734bf528b0331c8e0deeb5414a0010651f6411d3676a19e178d19b6286ee583b7b653b5c334c43db87d314c8dd94f8fd2efecf5962436e9e7f14ee12769ca79228fb4dbafdfd15917d3302f2fa9419a09fc81c5a20013f2c411b471054ac529b8fcd4878da73f385d7161946b82b315db58bfbab54836c6c52c56839ea9c7eacd3d158576e7bcf782df347a43b929cee019ebe676d1df8c2a033fe4005f9c938ae7a9358d3e403204a9ce7c05b52f227792f9a572824764da4167fe59c5a75b8a451a1a8c45191825371765883f9982d77a98fe7ab8cc17e03f148d0bcccc0bbf50d1d868e26f8702026aaf44e44f1eefe89773f80f9e77ecff26b19298d6ff95512c1db50095430d13a0a34ce2572e3084cf5d1987a2a5df3ffcec4cfcd3ba3d05071696b746cc07736312a32293ff25ca2026b4a8f399a62932b4fdd141fe07c48f8ecb9fed696fe406308918fa2bcf2b355bc03ae78609a33ce6d396884cfac0a631acb7505471619574c2ef8bea9d914264f9ea5dd3d81bff25bf79c85ffddfea0771cbdf36638ac6e20d99b81b806746961de4e896f72dce789f954374ca3907e1fe79416dcb5911492b4cb26e41d06aafd007903cb8f7ec23ef221d5c195e7cbad36318a86f24af7946e452964a09a6d7cc2ee4b992c540a19a2a340f069e5afb8fef62ebdc53b18222cb659673f4e2c90094c446bc81d68efa6f938390abea50db466d2c8b746757cdad1fb503790d80439df515c5b1415ba99181f7504f22c40db8c344d0318404b5339955cb34795345a625ae940db2ad4d5383dfb782095499ab01843f274c6d34253bfdd7eda21177bbf35008e6931f21d9e470483a4ec6dda51fce0c0507e8a1b8138688cfea00422cf224306a8a8f4674731330eeda2623834450106620cb6dd44fe71e792a995a3f8c493335b704547934707b899f31829b6f039d47e489dc03dc0e03c790338db99ad272aefe8f98d23d6ab12cc785f089d9d941d85a5c545be25b00d13ec32d126a903998b5c0a33b412936cab579ba3cf3762932bf71664b7183c234eb4571c3db3e25d7369d86e1760f7b289cc15ea11e7ce7ee64936ea3c7032e294e05d61e4bd8290bb74031307c04e460f48ae256045d470610377f1494455c5b29753ec8910defebb669f4e84b82eb3b4cab71233fd2874353b502efa36c4b3b18a10c1fd5fcdba9e47af0d6d6523100403c0cba737a80b5e7a3e54ff1ccb6c491632a79b0b860824df71e5fccccc49651ebacf0403a98f0f7d2fb8834c2d7a4be0c1cb401db8152b2e0cad81f16539df524a9ccb953aab468b2e41df765b04505faa28571547acbfad87c786f787a60ac4ab15841fd71bc5558dc454d0a19289b9fb37d200052fa2816c75197f74967fd3ddae07a01163e96a417e760827318156dc960fd4bddca4cadb184ccebd196ece2a825237702957ecbaf199a8a3308d22af9213a91ca8be2550ac1f84745a22e83a7b4445e880b247eb480bb0513e32feb03e7f96c056cd1848d1dfc9ff6648a7b5f4805be8f368d654791dc56ab2c6980c70bddb77e0eda8442b3e0b72e908b62e8e4b178561a385f2a59664c6473cfeb060712852eed351b9679a79366fe02e8fa6a486b80ed4ba97199e5b28fa1f6c98c7a3fd542e42d36ca73b131c2a524dac4aae8751b7d5012dc38f58c1707e2361ed1146a74290a1270b01b7f132c1e07409cd5055ee9c51b74cdc4e79c9d50281587ec1f2726007bef557477689b8fb7fba162be9ce704e3513360b4a3a4f799e5e6809480448bf291b1ed8721e90fa3d22fa09d6122f3d4153234afc45c736d904bdea9db645f388b90654f48bb3ca30ada2c3d0a18a515cb4710c3a62f01b499e88912c63c904fc7c4398d0a54f9b31fbd21b0dcd6bd7ee3c54bda5e5595b6d50e75a79b3c37934d420de218e01d4d5a1c948644ecadd51f0588340bdd8cfe423b1537a1c6389a6094d8983a5743d7e68b3c985456d46bcb2806cdddfe62a478729068c4e23ea189379c30e43fa6bc583bf7601dfa8fa179142b4d12343ddd7e77a87578506e460d1a439b81dd97f580d8989018c1af8311b825dda12c55f01045086fd6a42ff0113f0ae0ea45b4ce9fd76cd4d026948161426a325ee314b992e63de8818bbf2317b8679fa7bb10fe13355acedb26b73b63bc3a301d5741cefe6134a9eddb350d90dff987fc7ce1cdae180bb822da69a30caa27ec9ae5bd76d625aa5b22a6814429706241bb7d955907509be4b8ad640fee081e3b32cee33ad326bcb47be7d2e0904ebd07c7a0524a517aa951743d4bdf06521fe3893ada9e6d273354450b10c78546c3fd93d38235f74379cc2251606265dcf95182b9832c67e3ef3d8a9216218d5f52a79a8bc54890cf0e225e1ced9d4c956174d2235decd603aa48142d9d0481fc9b89780dd549b857cbaea69c4f4b403f9beb39de2d4aea366341eefe7d2f209a8dd27c20ba7050af5a69e4c437e807a91cb762033d1e3561fd0990305e2715dd8334494ab5307b7b07d0fcdf73882936a99f0ed7b61fc170a760d24f4bd45abe749b239fcc13cce11b30e0abebb2850bfcc4e99492e861ce7e04ce36ccdb72a652274bbf2f68f300aa5e26490c41c5a4a507d16ea8a7889b0575508b2a3d741dc85acc888f387f72edfede13a79c01439c2ee3987e60e1f71f619dedc3ccdfb88bec30a0803f96918db2a979d2a7c414b36f59eb2d096f15babc247ce8357e9cd134cbbf9bac460d4a7ba2722ab98560475b439c7517f78c8a2172a98ab9d88c97c8250458e4a8b027f74ede33221e3b95acb3375bc1b7f13658c2c754103a5baa84ec81723bf7a34db31f175d47a8dbc0b6c8170e9244823650ca9b3cbc936edbc9dc59daa61d58dc962cfc05dba012d0991b5557e01f42d855efa86c06316cc71a73853cad802e8100e9ea8d835258462f67413503524d589c701657b6cd1a6f9e259060e767ed39664effeaae03e335b29dca6eeee5f1eeb6ad90e2a9c61398579c7d79e6949bef9e4119d5fad78b4cd346b59b36965f81d0b135ff2c2c9d6b07c02c30f9fbf053f4a82d37e6e91a3dc1825ee5b4b0b7e9eb8f8e3e05ed3ff8a39133f37d5138336a454848db62002e3cb06a5aa22347d062419a06065eb85113d61697944f24fcd7373a43599b1ddee66deda42b8d3467e98666b7f86cd46e22dcad11b4afe0cd4fff11f54e0128ba1c37ac4a11c3b3ec3120aad1b87b4976ff6f79747959ad7f6f5fa5b34ede31c4a99170d3bc5d82133b66a951d51ec29cbe7b8ae92784a0f2bc85b1276858cc7aa08eee8a81fd9a59f105da56b03dba98652b2943ecaadec03ad450c5f4a9f56e0ea975bd41637fac4b34b4fcc9ec9d761abbdecb7a1f5c9077cf588ac9e2b60380a08e3b998c52a67cf9cdb5b1c9751ad558e10e3ac444807988f9158d00f886b1750dc1230a0c54e25227f2d55103b7b88c7521d419744adf73df59aa12df27d248a26b45c4dcee20ca38e4a08afba9f67db5a26e1cef2226872dbe4939914916ff198b8c4de405e6e8b38d5b6ab3eae69b53b5f893f56860ae20b47aade5e138c715da94595985df48b568b147c6a7788389c305d93a5ddf4e9aa3ffff1cd1095b250b8cdaed3e12317c22f5a1b6187a85dfdb8da64d2d6fc69f295b28aaa4c13fc3a4232eb2724e7aac2773218a07d1578ed0735a73a76f5551906e3a86507f56ee77117077f935d30a572295545856d952e74be954b61655c39cc04f204f9d5348bb20fed55b883d6507d1984dfd4b13f5520305a860e1590499ed0aa4aafc756ebc669e9eb229ae31d2b1645dec0ece23688e184022b986057af76e244a9944e37b223981dc101c42c6f4eeae532770bb16b85780ff8243ad01bdcd8c55d0ce0e231c0977363b243a362b512d0ae0ecada26af79be0b7a059c4d84ffbb7a1f53e1c3c95b2229285f08db7a6c0f9f93d21bf87e71316cf4646162254cef9524793acd601ce03ac88d34d98e1094bf49b8c7eea051883b45172b3a654bf28c5b85a608f554f87a5fd5ddc8209855fcdadd16c22c7d292fce4a8d65e6629c4b62eeb7d3d35e10dbfb2529cff6edc0d2cc2184a96c3cf54b4c098b074d483b4fa469567127e11f581e9d693b3e3f93daffe0f40c9b8cec2727d7d3a1f51d543f318fcf4472359d52b84e4f6dbf64e7f624ed7fed0fe4abd6e2a31f9a9ea84486a359eb21582b60bb7cf99a4096ac9dea3fdaea9917ca60793b2419fb83d7b8f42a9da97b2674c68f15f81989cab458dca943a7519d5f90a627b478e40760e5d00ecf4cf0ca72d73c45d9e040965a76641773b3beb8aa482396deb1e7bbfd3990319d6ea3abc7ecb0cf15968be408c5b5a2582c5b9613e43065b486e5089a2e33ece3e0c8be39f0673b19ab511ff8630c52b5d38c0dfe5af84432238579fc2d6ddcb398c4b1016e21b81e1891da12392754a84bc95298f6f1d7bf6d549bae0fd175c1f09f944cbf29268d45d92713f980d4978b0b09b5637b09d6aa8769aecf41eccfc0987c878507fc82412f498ca083f4afc7447420c5e4870d1182ab8a775314a315a0a33c40727dbcc805945a5375dc2180d704ab801889cf4a88478688ba180e4118a663e2333f64624c97753a8bb21c98a268b772f6771fbd772f9523e4b74053ec85b398f604d399b2a5ff862ed0c2651c2855be28d87261d601ee5601224ab4e23523657ee54f16f71f14818c73dedbc49a220c821bd29510d3c51aeb9c923bb1fe56f7f46e9489857bda9a516ad02ffdbb30bae085d425d7fa50e2cd58fba45ad113ad9575273622d6389f28c30cdac0004781e022013b42a690c9a8c7d6b675acb5dcb9201e20dc2d6ddda99dfdc54697c6585c5ce540f33050d12f87bc2c61694a993f67e10aee48d4747b8dae58e4df177558314d2ec26e300254c010b8c242af3d22bf6785079965cbda1a8af02b3494e4a5111ce2fed6d5cd06acadd13c62324b02c69a416d7f8d405f051699e00f8664d60511fdc46b3da8ba895c0c9cebef395e02adebf5bde298fcf597898c432a01f9c28386adabd170f2aeb7bd3cbf6e635bf661d60a92cc51065aac2acc677f6fa2d49a8345509bdc7b2a0df35f4cf80704ae4231bd4c3b1beba4344a4e6c7c754b761858fd64067e1f336085af2946e924e7f60bc2b8a288f1d6df77c693dca9e19b7195f8f4e61cf8d2d34506ceb9ca60c20a3b284aa680eb845a4f29d3aa3fe561413940a3d2032260fd0b7a65edfc4805837d9c5159e543405419c13c352f23c6a4f688eafc7e2c0657af730547f6de5150a69dfda79731735962bf73e84a8f383e38be99fc2fcf72b761c945955ae121e15774d5261b55d9ec814cdbe463ac3e2ce61f208992d653f0772a2dd9d444ec062ccabb3b17b1adc47afb6d19fd48732528895293d8860ef20a637ad4c09086fe930c39c6e0563878bb628f1b44094c014c438366bbdc3aa787600dd71937c9b4b5b773b295cc4999299a2b430e3c9219f41705f4d6708292ee18a0be351a079a6b5744242d3841d9a455c941bbc238ced75460cf3b1361b5243e5e1d7a3dcc47b86f2730138954ca90e03dab544eaf2b4804a41674a12c0d1044a50326f3c4d85e806f571fe5f62be912d7b9f6bb60c36631dfdfd818cf1457de62bd92e59158bcb5f12a60599dd4cfd8bb0db4cde6cbc903f1e8257e062e307da65de5556297c7113f20054fc626d552ef5a95a1be2c041262929717082363d99ebf64dcd11e90e7f5f1aad073d1dd5aecf02687cae2353526c02db1274ed6bb4998687533c1058895afd5895675d50beb06696a05b25f11cf0a58053665f3f6b4bf5f12124586570fa7b4ebf1a1e0f9518a5f3131af5b57a1b71b6fa77cd5c4eb93def02a1cbaa27197c229f44738b01494047c328a73f8de441605f3428bdec0a28522ef08fe08631fe66f0dfea94be8f54033f5fba52b4e493d7b1fab3b56083044108c4f55138e1235947679e90215ea4bf046e233e9b8a2c2097ba9036a13f855076d5cfaf38a7d0119ed6c2626703dfc7acc5dc2f43ff91ed1488894f54abb9cc8b3766e05c45a6a625cc3df79e7ede74675a5e35c978c9ecd56af7f6ca8efc89c7480c85e14b11c800535d2e7fd10bed39e50a3bb2c34f88f09017bea695098c93f67890c964007ba1587d8b358b697663181f5858e31a1e3acfb57ba50b4472cfc2813ee47c951e9712c0972b7392ce09bc33fadaf4bb7c9c89e33a0fb6202d164ba9dcd218324ea602fca3278d540a364eceb7327e83123c505f4068c6618ff6fc528e057ae2aaa77c0a849c5a44c362c8fd9b590fc812675c8d1c002355fc29e6635834ea783632300e565079eb3e2bb1bbcb1fb95c4905f0b9363e5ca2a100cd09167cda54c52e6afaf6669d223f0cdfff9f9c3cadfd591f847f553c93cafbed866c457e3530ff29fe9387031e3d4b31c4a1b01289a8f8ad8f33bb9de910fcffd5e4c88f474eebfaf137528658e302b3142039fd096ec48bfe7c8467f1698e4b474289ab344c55db7a82d9897f99c267c2a6effad95f2f6c88cb66b0e65d689ff5f6c565de730129a129f738aed1dcec59d0e204f6bc35aa668843bd96c68036bb58317a2d4a08793fbb26cde1e3d3c2aff40cf9a2053599b6e647c0dae048bcfc7bf81ae406280bce734959e1936e8687217c060af11651e88701270f0e66989d9062878be4be612e42c8d20acb769e805375b457ab979eabed71c8f5ca4c8923086f3ebffd76722b9e04b8a3a7032433d378250cf4a9eec613ccba484d59b49b22144a2a3c611fae7c25450fda478043b78e7bafc088c55e4c80d9afc7fca30a3215993f090bd38462bf3f260de569ac00aeac55f2c37c648ccd9a6fb81cbb54926e3e21c4b80eef7fb887655b20b24b2737e72a7599bac344acd951120ea27f66c95f1fb7989d56d3117805dc17c0a9645c518f8800b46d15acb85b2005971385c0e920600be8baa90558fcdacaaaabc8573720ffad2ea18ec78fd590747936d146abd17996995bc5cec52524ee3c9ce24f60b4bf605f750768b4692e25e23aac6891485687d4c6c3d1550e8da9c0820539a744c2a6c0c3542fc0d0dbb481e278ada5d5ab54ec37dd476c5c50981df73b39354b8dd18bbef965b1859099c766a0121c90a670fbef71ee0873bf74f36bffe46663fbf8d1bc8a491eccb1abc17e7f6506665c8b29420c8e4e28f4c38267215f2e5336957d170663e74bf8ddb8600418d8bb3847e3e9436c4815de4d75f4bb5210016edf832d79d010125af570aa93c9b8660e3e6f419a0c76e1c6af50b80837108e775d5e04b89543a740dac5aebfeb7e779211601838f000a2025a8586cf11c491548176e93865b75c3dd8e7b90aa09537f3c91847b811aba32673d18da1085f037d2d73054271837409dd7ea18c14ac6063c0ffb5bebdb8a3276c85ae801afccaf8e36ceba3495a372efe678baba84d4696bda382bced14a43e0d6abe9054e84546643fad096743fad9be0857c313cc52365d9a674a08c9dae61492ef497e68d2cfbbf8f708e7c13f97c0b2a7209fd785b820bebde0a3a623a90609d579f3b833729aab743644627ffe2d61ed74b3c8d7a084391807aeb8b1dc3441dfe040ff475a2aa7a0e061d3e96a4d1d052cf920ee848e844c28fe7eeb69cf92f511f026818e22887d443e4c682a54a4de41228abdcb18a83ef183d9f9bac11340d69466d3cdbb62e615d2d70a248a9985c1e2f50c229318a01107d512d02067e1c98ea7f4c8bffc806bca95c82bf71a9666bc1b0b6b7f4bba9235fd539013640abcbfe09f10e4bbf2cacf51114758007a5ea2a4ae5315d91dd87003a6350269c568c9ced006102dd12fb2291cfac5fa67aeb27be16c041006712a212887a412c63ee38e452428ffc8fa1ee07f1a6be667173a90d42d42c18e012ef6d3adc322a56b5c619143b16d513f255998611b1da2c5c17cfbbb13f318e1c1bb52b999b7366813ef70f331fd0912077e006dcc01632136f41a58639ea249710e8dbceedc4c286e4646c5df6c9668d271e576e375e9fcac3e9af31102fbdd2b0c14f9b5c7a8dc13f9ff93b6d5dc8ea3df52ebc07e2b08ed46b01430d24d456ac4267220e31e66d6963002ed092e81a0ebfa3fd564cc53132369a40ca94c5cb9f639fca5e8f1291104f24e6af3d7d0746bc330f025a9edf71837228f7cdc0d691ed16da9b7302a7a55ddf25d3057080c03985527fc3a9bd01744d2d0a5142e22805c79b41c3c2b770dc76763721f74a4767f8e31353e76340117c292a45ac7c1528f888c6766d405dcc85630175d3deeacbd1a5979daf9f6e2274ae3f094f61fe583cd769718bb429daec8fc1d5d2b831b7d0a7f5120bb1fc99997b07b5a7fc6643a1d01c5a61c108f7f6050b67965a9cacd422438d5fa2c6232a52fe5e0062208f66e17ef19737aea0fe08fe435294d1620a6ecf16d6ce21e457d4111e33bd85c59062e15302dd3febb951f42f37a8513a08936977d814e6120361581c4b82ed4332ed1c518a526f6ecc7e85a1141214c550262d98d8ec320f424a716233fb13e970e3a3ab7778b69d9ef7f88b4d51173892f91cad1127a2398b1299dab91526bd6e5af180b972b8918478b9e10caa6b2d80a04d2ffa6702e2c776d61630b9ae698f72a651636e7bfff80a9b24b6ea0142354f3af14c09267aaf3985454ed7dab85c09c14771de696949ef24a0d9627de1e93b47203a50665dde9f69d935caa3517ad382d57d9610ab32898a4f8f6fb7d93ef1f31d8dfb670fe5c267975beb1b31030462b9fa9d1f5540ee364a3f545773ee2b07890b36d01c6ee763cbbb1430ff6245cc2225dc5334fd2a733564a17a2c70d1ab414f648a713f3ff7b365141b72aef1740867db333cb80821f4a52293685e47e061ca28ff431f253a75759802f2890be07a7288be379da8d1e259fbbd76ba67cc1963605d6fe42becf7708255b8ae6cdb0ef0bca8d635a5f3168339e9828ac593a8af75f5a96e439c70e2d76a81d3c334ecb0bb2d66c4659599d8a8bb14771155e44cc8c3d88a37ae3b852d44e2594aa7332d1b574780d07773fc5634edcedc05b2d02dcfffe1877ba92496d4486bed3b5148ba1ae7c2f4e55039b652129cc1e938fd41e48b38c1c6487cb5e9a88a3c0fbdf17dade0b7759c23ef97e1cf0abe830cf9cf67d01ed5004200376bfa857354fdc353b4260f4e8ac9ae7e062fffae4e981fe8094a5398eac10bd5e5538f9d8378efa7aac207beaf318b9876b1946e3962e23c1e2a7c8d7696d318bbd780242131fb49da6049fbc6602cc66e26c6d062b29b8b984dbcf347aec7579aa587ff366d9d6f4aa7bd2edaf891103cfe835145bc8f77987706771946dcd24edf5d381e811db45e50a1e85952d9a771edf783ae75e1ead01090dc6d10b9f60df0e564d9ad2d61506a281011457a8cff820d4a6f9a5f4ecb9af6cda8fc404e07f8b4b0d089277afda72be34746384a9c364411e4427381fde711b00eefc20fbb6c8292e45a8ca94db2f02c1c63b4aa422ffb4f78d6e0e04e1f54c78e65a5402ac24865fea89d4876c3402846f0a9dfa3682ae96c4e4db266fdc1529dbbae19986d74087a6c574cdf002f3049745dbfa271ca529e0b909aa561c1138c8c2c3f702d1d2345"] ] }, "release": { @@ -2621,7 +2621,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b43310300000000000079000001caa5006a646174656b657963617001010250ff23599acbe9b0a742792dcb7cb1bc4c037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a7045636f755a7a7948436778714b4d414f38467a61736b716675372f2b6366705434367975727355677743466d64686d653462372f2f39635570756f6867596c0a46364d506830616e46326c50506231546b36487569513836636d2b7549686b74553432354f6131746d49492f66374c67527735672b53656e59355552545147410a5870362f4a5933714674474c634c664b744a482b43463976302f30736d4c322f624b363863517656584a6f0a2d2d2d207364397132386c674165544965567a324b4773553774673876303041736d32422b65677170746b706567410a34bf11c8889aac88585db4e178f1d552748f3aabb3c05da5d27abe425d33168c432c1664087b6b39bdbdab254b9c8601acba3482ef6fd7d64fd61186750e07a716d0a20dca979da34b1c39071212ec9fcac297bba1e5f6769fb62812306d3d8846bd86763375a52f83ba6eac741cb138bbcc236f428c2e56afe458570b1e4d4c0bf43a898aba816167652d656e6372797074696f6e2e6f72672f76310a2d3e2058323535313920655935564741343653316435424b2b313274707a6e375a6a6e7145647636764d63455452787443587933300a4a416b62434c776c6a753957572f574c534b484c50344247306b3650494d4170496145346f7a67482f44670a2d2d2d204250554f4f53544469766d4a6f47775a7632725652342b437578482f2b3955684c476d30583345305264630ac607927980e0f5926614a475def0a999d790502dd80d453bbdd777f054609bdb35d8fdfa730f34adbbbd770374d47c24b699b084dd6cea5d45a6899dc8531592608d911eed5a0afec11e4ce00b0717076a579e46944181b08d09e4585176458bacead74c4d770d73515100d6ab688900fb78352573a4cfff7481f9faa005ed8191d673785d749c5cfa7f38ccf99cd7e8095a8676d171c0a5349fc3e1316eb6dfc4c68fea888e10022cfd15cd88aef77cd37bfe100f3428e660c8fb6d4b7941245e3b743d6a35f1dc38abcedfb67c7ed218b09ba249d347f378495eef3c899c2779858a521bca2d45a484c34f70b5bec44b1cc48fb4d29c9e1105b72ff56ddc41206aa6244ef18ccc8b2e3ef3afcdb39d1a186a958d5c91f6f583347941753652c90c203e30aefe2d71506dabd2b87c7e7cc2e85574c0b9b213950c3fb8ee304a8ffdf2935e3543a9ec815cda495178efc5a18110bddcfa45e5bdc43ef2074d4e1893567faa429d2b23f7edfbd33fc33e6362e18ee963a9826a44ac0c9431eb79b99a6f4c7680384ac5c105b5f9ef135f731f68c3873f0f94634b603e29fd26f0a31d063e1caa8d861030265bb9f5254ef108605bf5fecc07a116544bee0054230695ffacfb4c2332e4164257cbe0590cd2467cc760cf968384865240e00001e057b905cd0d5b8e0bae31dd7d4c344b92976f0e024f6bbe22f66d8485807800bcbce0b8c80790decca65ef2a013e489dc2079650d77eb2a2ed71dd641cf771ddee5c5a0344020978230ab7025ec90e26e4e949c1f4a787c883817f01e0b0415e9e50ab5fb2ddedfb8b8557ea92db898800d4389f2ce8a3d0a43e18180b35efa1f5e17b8366bce40cbed6175191f6f17f2bd2b9538a5d6c814d52505d3b1482c8855f2ddb876224e3e725f7933d45167c74ede6bcda2b6a186a7ae265ffc3108b34a1c691419411303aee854611f64124791dc32b334eb94041a322c108cb38cb391639e0bca79350a70f309e5cbc06e94ab6282e1aa38f356aa437def537eb13c953267a18775fa0fc93af4c8055ac1f0901058a6d6677829e455d08e3bb662dc9bbe6ccad5cdcebc8848bf9325abb61c96c844e7c6653305aa03b1ff87498db2"] + [0, 0, "444b43310300000000000079000001caa5006a646174656b657963617001010250ff23599acbe9b0a742792dcb7cb1bc4c037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a7045636f755a7a7948436778714b4d414f38467a61736b716675372f2b6366705434367975727355677743466d64686d653462372f2f39635570756f6867596c0a46364d506830616e46326c50506231546b36487569513836636d2b7549686b74553432354f6131746d49492f66374c67527735672b53656e59355552545147410a5870362f4a5933714674474c634c664b744a482b43463976302f30736d4c322f624b363863517656584a6f0a2d2d2d207364397132386c674165544965567a324b4773553774673876303041736d32422b65677170746b706567410a34bf11c8889aac88585db4e178f1d552748f3aabb3c05da5d27abe425d33168c432c1664087b6b39bdbdab254b9c8601acba3482ef6fd7d64fd61186750e07a716d0a20dca979da34b1c39071212ec9fcac297bba1e5f6769fb62812306d3d8846bd86763375a52f83ba6eac741cb138bbcc236f428c2e56afe458570b1e4d4c0bf43a898aba816167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139202b3330354a444c6d5a544935654837763248596764336d7477546d7a466137507831642f76396c6c4253410a3059487839476c496c6c756b673848734a33496f5375376e5737712f7458647a572f714c737537494a77410a2d2d2d206f3574695a44612f4f71762b627838397555695767734872642b68494f472b6131366d6d445245754779490a3a241b6017007c9eb642e7a3d0ef653ee677b3c92cf12e71ec09264990b093d8806bf25885c3532761d80a5f8b7ae64bc302c62ab7a9179f5318a40076c6c6ea13d57eb79667e155e7ea71a54953bfeca7df6f75b8c46e6cc38b6795e0f439b1607eb5376d7fd3622a5e2d26259edd73b044eeef1dffc2f16fd83e6c65c3902a280158e4c15bb8aa614054f8aa144f4b6e3082015797445887b93320d7b8a25dee09cac4c18a1b80b841953f0142cb9d9cbf22bb06f315689a79e142e31c007a4729afbfa4f80c5745e35598ed92dc28b7c498af01ae5630f729ee912e5f4d98f8e6f8f4c1d06db91992c915436c12d0d0a855807de9cab2c90e92566838a69ee544ff12130b7f4f5d547e35dc1dd5e3d63b3e286942b1c5a17340d254b8aa2429ba268bbbde86c6ac46b0bf91155dbb9b539b01387310b3a94109e5218324aeb371bbca06d938ca790294f94604ad0e524c4b5b0fd0c0b06dd3bad084f185742d7c43c62c30cd20933ff104b4840216bde32afc611379ee0296097aba18da4c1cf2f4303d889d2115acaf86de01005e4d4b2a410e51ddf459f05e4cae27920fdff77576cf91bbc6e2894811ef61001fa3b52f70a72844bc58e7eb0529343b8df97f2359cdac9a9bea5eea301769390a27bda75582c8460251c142225d6a07ae5ac34dbb3d9ace2280b52fba68d6b4d79950a7d107bba78e21d19d5726d02859aa32f6091da08dbed70bf355b302831ca544cb8e9ce509fd8fee316d4d6156f0e4e8bdf6b89c09b7d4703874a3935f36a20c0432a7a30971e1d67f7f7911dd04a5566bbd20552944622356e2dc8dbacf6fe401f3b402b6aab705d9e25ba0dad7a6113635ce5f113dd8a556efadce46e55de876a07d523d292b998f3f9baa273c693d25db0d2c679368e770216bcdc8ea02c08eca5a288fad27e3c41b2cfe66b21f36f9d44d07767e620f8c28b8ab16874efbd1bb6e0113c65de9f44b94f2930fb1ea483b78c82db38bf12eb2eb28f82762a4753fc62d7dbcf7ba8fe4120a1ecf6fc904c77ccecaeda48f6936fcb9d776e6551b2e610b20f239a70af2c98cfe492fed69f462025a629215356eec9521c440173af802a79ddfc02018a6ac0665945634276f42e6de536fd3cea4dda0a864f983010c67a28e2da6886d18083fd380bd797db4a5dd787673da36d482158f83ff03c682508838c91163ff641204d07058913fc70ff6739b7d56a037ec423a64a62af949d973ece5af4f12da59d7460e2e26af7f3e247bf24b88b948ae86f95eb1597c1c617dcc73bf83807cbfaa502621118da0be66d748b299db60b6c47c7074132a5072cd7d37a6e66ee672132d173bdf7fd8d9400d25adec081661462eddd5cf98ced8d8cdfcb68c6473d4f9f305551f36bf8ab1716296a1f8d3ee1b4fde555af42310a0585a325ee3418d7b198715e500d3a64771dd59366be05bbe73665bd321f619732912fc3ef5351caf2702b53601a963b9acdfa1fcea580346127343d2bd8a74d017ef0134ac1ec9534afcfd227020ca7b83ed0bc181c811228322aff24d79355e9119dcb2aef9829d41d9c0a87b75dc407ad9724f6a37331f546220c87deac943cd5dcf42f80c88d802062b11948dc117220362077a70cbafcc789b172b8c45c99c97667e4bc4eaccd97ba07474e7591242bd882a96f4c13d20d0e4c28f5461094d75f6db83efc78715410c51262f3283452f3227e71cda4406223cd83ec7e7d7e5f03b6b4d26c0bb42e2d1c4efc771297ad5a857bf9f9c6285e1843d5396970c58e15de6ee2cdef0ad6cd0264e33f6a451fff2d40309700bcc272c72df75794ae4ff8a89769c438025deaca148dd7bfb43dcb280205322d137d552651cbbfb798335df24f7a1e2164802247c7149af68b1128b7b3b9a8ffde24c572cab5715628d6471437414edd2ec1dd5925aa82e827cab71819e86dbf6c25275f6fbdaab1ec01ef8ee63e08c69e015397cf24527af855015dfef4e1611476c4f7c054ed76ffe0fd51d12f3489de91a574a2126c453eb51e115a527f810191102cf2ec6dacd1c0fa245b4a33ff3f4bfe19310c315bad5588bdfea2f862643b189ddd5c3ae3fb220f37b50d7159a8bc4f256729ea89557cb21dbe79e1acfb3bb6f4b3676b2f754c832bc8ce6a80cd3b8fd89209eb3ffacc90ebb3bdc50b25ae623c86505da6ec62f9d4dafecc94f1845815769e22f898957a53f0a67c0fba2107445c406356f381f0cc1b96b2bdd2b6627e9cc688a78be9b56a0f639396d166dd6ecb5c55ae7b03606eb676084f8c8c343164ca2904c474bda5605d3e8b19e73b0f1b7b3c0f81c397440a6be9a3fca1f96ee787e12e00d7549c95a7585ab0549297e31bbdbb60c4e4dc8ab57a1516d60a1b0e3555484ac34b8d8f80cdd0a84943d25eead1da0a521aa84a71b85247644f899f862595daa05b5a5cc1f1b0ff21320dc4afac237e721cd4db5a94ef41aab92e44bd08e26cfff443efb527b45ab660147e400ff8b9c7248485e239d737046b43249e9a243d4918e37448c801fc24ecf256fcdc1658c1ae5a31c979b102f489a75059367a9613c35b442f2cb6c8831ef3da14f779a4852e6c66906eb0935c94cdc4d7982e83fcc002343d2015696d678330606643a0ca2009adf0011249c60f1619770afb1cd19f0f5199c97cdd89285213f4258482e6e083a5997be125e4133af9009179235db292a826b4d4763341b64460764877ed741a6b972c6f01d900fb7dbf894db6eb0877cd29e684dd0ce906626f2fea77c7a217239f13670279599d78a888387176da97d3c6a8ebced385dd88069f348d1b9a4e82cc0803a276909e798df3a20f2d425277886991e701cccb5061aad6d48f42b2b8c66c64686652af8ce25bd0ba81c473a35ad6400b79d676b3b15685db23e707bfec491eb581d24465a170b7d8f589ff275b2fe2f0f8bf7ea8162154a79271286664cce394d2fc9ae8b6872193cbab06e8809df7d1b6c9ec1c8c2be776082b1593839083f3442ffec0ebfe9317e1e5902dd5e4f9de4cc5fdd952d626fa92730a476199bb1e5c624578dfe23f85179caa934db12e76f5c5d1f7e099730a8bffd53e02d5c6cbd023e8c75077823cbe95955d18479efafdbdf748e8f1ffc8876064e280ab3c5c60a30ac31992c1ae0d275aeb2bdd8feecc4aeb933b7dab2511a49ebade445fe57940d0a0ebb5f913a33f5dfbdf6b47d968f0053612dcf67d603dbb8059dd9c4f1b9473229b5afb062f2b521e041dc24ebac8daaadd73d3563523962e132aec52773b56139771d3df0ec294882ee72000113a1fb38198f764022fad0aba919584f11704ed737674c8a228227cebd97d5d4006577e5073ffa4486b0bb9e699b32691cac4454ca03a68a21e2a542f3ba0e9ba11eae09c7948b53489451a87fc0def25c6f8261fd9146e9635dcca0d1612a04ff44b52396ac384c6dc5ccbfb381b54df8579df55cc3c4d6e922000e24fbe1e8919fbdbd99841e9d7b864aefdb55cf40f634b2bbf6bb5a0f5621123f1b25080532ad49fa12b91961317bc3f5815bae29bad68186111de1c75aef4161a25717147c1bc92733b866811f7501c3cddf8129277b841339e38609fbeda796e214f377d35199c79298184f34a298ecaed7c0b5200eb73da898085d7e297f9f4e85f97d0159ac5bf45f4a4ac97c58c767c176ad9869857de86a77199984b5103f2d8138ee5f97cb161ae07f51c7259b3513fc6a7565aa9d3329ce939ad6b34680653e8497ca77672715a8b7e495cb46a028d507ec4103d8c6fa5acddcbbc0048099a312b2daa62d25f10eb021434e69ad9d6916209a1d1aca8107f1e96bbcd4e7d3f66afa8f93141dbd8a5efaa5ac5d6ffc74c50a90161840045d46f0dd2ab106e77e21446646eb07662ddd37ac8e9ee1e16bef87b7c34f9cb4d2492c5a7d8915ff9def57cd3434cd23cf228ca665338586ebfc13ee405b9a9b1d7f0b134d95000438d17e42a82b63d158b76a2b7d693f49efd9f77837d4f9ddced86db49e6dd665b9fbf5f72e976b13ed0d44e6504bac4b1ea50e5371fa2a6ada8400070f9d39fa3e3911b9d524eba00800fa2a68827aed0bd5640edfa27a134f1bab7bf82510ff13529281186bc57297d369ee58f044ebb12dcb9149b4236ea0216a96714344c1f4dbef01d4f26cd62f557273c83f6280a52abeb10818c7f4c876255f1c09c3101248942025d89feb41256ae2e30c110d88a87b7505abfb054a52e09cfcf258c135440c6670fc48922bdf35f5f720385a6fb79f1d26a6531cc6f5e7da63389fbd913e52866061f634f1fabebffece10a57823d7faec50f0349c4cb216fbbfd248a888d1e32352819dd8b1484a0561b120cb7165e35d229d859272e39ecba8e5f138b32dabcfb80242a1ebc080f04fb24072226a951a0d3a8716cf83513632a8cc396b955e0b5074dab7a03bd37db7497b6a291f88994bd59a62b350179988e961847723936c31c7e5f25cd692f40df13b3f7926d2e0b838fa5ee4adf10d21b7311f19ce154f542b2e6223f9f48c481025c03e8f83bd54ac0a04fac237f2acba11e0a76a910f5aef292e6ca4d5162b891b74f6ca7464dfc15946d2253216056132c31a075b5370eb9970574e1b1456b1268705fad5ee9f37fd7b9e85c60c7b1aec121a45463e6dff32b57476c77025af3e33bc8003634c6716f8be7dd02265146362fc0e15773978ed132f58f943450080245523137d35abf88b77e180fd1d7fd6f8fa8a820856063a8739403ca591a8875ed1af405fe6663be021af6f09a7c61387c75001ffe4d7e64a4058b7c662dfd1a88be92f6287ce0f93b3af6c6bad1d156535a7a3cc4423970f0a2181d112feb2cb43126b505a98ba991a18f39d814533ba2ea643bf6da2aa9e5d0dbb71ad2aa3c1015d80f5887b718bd3f199ecbf19b8c7d9bc987e1f0befbc8973225039f639ba7950d365c36cc98843d195368f1f0591d6064d623a1f0da46c2f1f3a8a5a2150ac607b92d49683b8573cc2e4933ff5b161e60c12ef978575c2d81dc3169460ccaa7723bf114db1fd509ec155f5eee09e28c199eae15e4dfad386ec97456467adfa985f9d211dac8a8d0997e0e13b5572ef85a90df6994bf302b62b48906ef3905db69320db9724aaf96c7504bad99f53492f19c7c61e551905feb192d2d0529a0619605ebedd0d433f0bafb66c5e43d0be6297cef9de73d0088736676fdc6e07ce32db7a9ed838a37438a673c6b82d6baa5c04d7f0cf9c908bc15c3fe4f2bb445d30cb9b16381a16ee05e4222787572c7538e640edd0a7565e7b7d06941a936fdec5af01ef7b83dfe84063fc091cfdb4e780244bd9eada39cd562691c1fc483b0f2d7763aa00144f81295b066ce8af0e7d63796a9f134664af47abc80801569d86f7056380380a83d63efeeaefdf6fb7f8e71fcf2ecdefcc14e39619e436974b9ea4e732d116ad3615578f0dc1faeb0ef6dd08bc7dca2e783efc005811da6c89a6ecc8dce5144f6bd47951ce72800d01f6a5e87d9e4a9e0a77453dfe297030bc39c22a24ce06994aa40570f7c32ce0aa372a3ff376f5e94518c3c7ce52bd6e50daab6218f8ad781846d0f025e59adea42f0e07178308c37a900c0540de77a16cf999cd2d4c26708e4b90cd46284a73324695b6c591e186aeef56959d2c1b1b4437e861a4a736b19aa7b497e09527ddbd71b31ee48b0e3501c765647828aea64fc2c979b3ffb3e430cb6a42d138fc60d8ac0340f4bb72812a85ae32a84db184608161db33532a4750c0a3129afd3a3265d420a7a90319ca161c12976b4c7c3b209ea835fe1ec6ab95f28df1a9759b78347d52343d7b0773d4deb32146d064048480f48d1e5d151ca945bc3b9cd487c43d14a072a1c95ca441c5a86671251804ec8b14f5eeb214e4b420569b247a4c92ec0f042dde5af7ad1030ec0b6b737830ec20bdb5f025d05e7c3a20e2dd595030529de429216323b924e36a1e4c4e6fe3eb7963305c1d85ed496340bfa87654477b2f9fd4c6356657f49f07d37b974117280e448e5919532be9b06db7d694cfad246466c7e7ac86f6520db9ea83c8ad664ceae58f9e8028561a24bcc4d5f328122abc8694cdf22adbff8a94e230ff8dce75dd4257ea0d99c6b8684d07b94e1d6680a4bd781edc21006b8b6f75b342bea4b2b486e59aa3e0df121740923182595d1084cac7487c89cbe360986e1354c8eae6670c1c1454cbbad265aff01491e47ba1b0d2e5cce12f90467698ca95766f1ec586b4554bedef84ec7ec8627a26ebbd5b35b75e697943f0b5a7d185b0d0e14f1d00a476b4c1975948f8008d65b06207ed284b7d9138c04ae1ced8f20d0c045cfc7b18d2e4894f282b2a830a2adf9017ee424b90907cfdc49ad84128bdd3500eb01c7c2beb6e168c8c139648482fde677adf80db176af394121cb95f9619a5d23ed879c2a86f142c986d80a0f6fe3e9301ec8f7014d088c8c70e7aa01198bead7afec04e4a9542e6714982d48dbbfd774a62c1a79c92d5feb3a8834b0e00c0f49cf47ae551b2133a514c5685e443c03f754213680c8d316914244acaa11d0d0ef1f283ec5a37bb804a2e474f648f2b60999e1859379290ad45b2f10e8d9924a070826f2a10f83570443cd1bc62e6697643722ea7051bcea41e701ee9befbd3b9d47c89c2720e7a8f1f086ffddc2cb4944ca1e9cffaa75158fcd4359501c5802d3f718862b1727cd5cf4aa1db2756907305f897b3bd6f3bbd66ece63e22ce7f68f19d435c315f4432d76e668d624d54fcb3d43fda4cb623a58116d85f7d2f1ad98f0edfa69dbe57e3262ce22d13dbe3e25ce394b451a190abd60defe04fbef14dd03a917f628fbbdd9148b1f9fc72a95852482a91175ae24e5556485401f7e03ce3564fee0646008e36994ac46ed0ff27e6066a65a8a81a6c8b18d1230e956259eb41063b2b736adf4d509939ba44ca613841be2a2b6daedce16db3ff5e5dcb9a908f48c96c79655426e41139cb735d057fa1c83a8dc66272c3c9b2e650e45acf2a48ead55f32adcef397d58b17f9a7b3db05248d7fa0105abf53b134931a0a3f5170b4957d801bdb4dc8fd1fbca5e74fa28384b7ff4f3e155184d83c057f2789bd917ddb06be7fbe4fc6821ba49b5c4c41408afd110ec87c3160f27133566dc10022f34d0974f66732c4f164d718b20eb12fa6c526cceca4e9f9c1b9700d24d811cf944e365e52500ef1b0280c2b6ec81363f3d7cf1bc49046b725b1d70c26101ce6d2241fbbf95ab8af1a52025137f71d990420af87ba3d1ddc683bb1070eb1220ff378436ee7538152ac1ce3fddb1605449d562d4698837a693902d9eac2bad78dfb5aafb71d61810120934c5e48b0868d7fdb63d6e529f1feecd4a4f4ac1cbe31a4899e79da4b80c5ae6a8ae49499e3831d301a159c34eb0eaede0ad4675485c2fb5bfd41d2457cb059f8af43adee607bb301f2fcdc5b488662b6dfc13e9c931003c5d4a6eb37258461eb23b0eff55e6f484aa6ef8cbcbc7b3e35db551d89f94778eb456cc98d2e513f779e7570d8f63cfd288bb3fd6b974bf776dc6085052084b3a51fa9a57509db4237638692a9fb8ce9d97a300acfb7fc0de552a6f1a3d1091210fe193a6e83efd9b692d1c3477dcce6083b453c7d24ce05f04c6325ce06b95b8fe233ee8a47838e44854b6aa508588fab1467c76288b20c7ba6235517df984d68954e088ef1c6879ca7ce7ea2fb0e0f2d9d3d4b9708e34620b660a96718577490b14d339cf6433066ca07c2cb335f0cba1bfe416f6a219aab930dceaf2ec32583b44ee6c10b0d52b681efd3c95c3ffd854a5e46ab47029ede3ce66dbd5198a92fa9ff0ed681b1542b49d3e2f9ddad13b611d67247a516425b1d09bbfd59184801381f8a656374ebdcd27795042b93296fb4334ab1d310c0f4af93d87b11d48a3d6627cb517c8e308a56cc9d0c5d9956cc3bfaebaa35bb01e0b087f266ff021a311636cef702c93e3399955177feb0addbb8cd0b2363b55bc40dce2b4549936d77f137b16bcc2fe06934c7206d731a70524251d5ed0ac38efb1d4bf743099d003fdf575b33b04ef94d26ee5ea32a09ef763869eb3ec74d196bdce04ddda54c71d6342922b77ec3ce18ab2ca63c89bdad2b80db5e7a81bc6f91ed7aee6e2dd192c61d5709f96bccf29249ce08c4db0dc0b7bb40f1c96bef4d5592b4526018484a8ccbcd43fcf182d3bb075435141f69ac02e8c43d52fb536983cc340ca07631e1b0a782880ffd0b902651d51c782a55b35fbb220e5f1f4d0ff8acabcf7a0d9c8db0e4d3a07224b6eb7c2659509d94bf8b4969364426a38470a04812f579ce7bcacc1918b660afe7cc378d542f7924019f934f0824865d9560e81b784cbea288a8b94f49c827cf809f5a7c199ff9091ef5226ab1f5a9d6ac860d0a4d48f34d80eadffe5ce8250e40cff971327b8a4121c55a5bb583009f6c09172c01b7222e1385a35739b5a99ad7d31aafda1d5b346507f20aea80241de01e37a54ffcf0ea84e88fefa059c4e2f4866f603389d604c697f3cadbbe6b5a9ce24d657f9ffe6c7347132ee0725d10afb656a14c376450d6603ad7e6d9085f68f1bb30c7687f22bfd97f601d79bcc0a23a1ef4ed8c144e4de73fd3459bde8dbb6a14e6db721b13f0710e04af5bba4c6d085bf9d4871be21f1a7af994506da986103a21f5021eba45bd7964020834fcb163faa362923316b2b9907465e6ee7e7ed0d555a5222a1c4ec700953a3d0b2a06173bd3e2a35ed80b878e065d74daa3beb3f2fd65c3e197a7774cfeb0afd054b02b047c3e20114a2d89de12678c4278181c2d569debf71c0c9b9a9facd137ac0d601bf93afff3f48a364308601c7d666309f16e467fd1d4861cfa0519333aacd63a8b0bba4a2955ae38626314f22b5957d3b33eadd1ef5eab631656f5df972551ffcd037ffd354ce78106f217ff11df7a6e7ad476d5674e89162f704b4950b69adec8d135011e399b4ab0d40605572786b0c118f183772173dbcec5d6d9e410bd4c64e60140242d45820755557f25a789337c272b8f9e125bc82d88dd0db1cec4ab01341f46975ff8aa08de3b13826844ab90b3d503b238d0612af16141cb59da96fbdb743368340456e10f54eb2ae2fac43944a0fdc5e09701965268276b4c7e65802d7bcadbb17f543033292b365047e4ea3318e5805a6fe8d7c3a17d668df6be81b1a05d192dbe11f2493f19dc2dbbc3cbece6c2164f1811f19ca8315ae80239baa9540a88f002a995197f8a19f1d96162b4c5329adc9794c594255cf41ab715bb1211608cda8bc5bfc653112807f2e3cf7ab9022ac4b30d72c4a34d9db1ef66248e462c7d68db3d594b6677ce564d87627fc65e75cebf297f559603bf16f29567b5aaa0e7f4e685aa982aef941084ccc7c199256710f5309f1838d745000ca7dbdf47529df1ff9abd1b42f726f0bb2183ddc9355706957a5bd9e3077dc489256659e39445bc5fdeec623d2e49ddad868b5601369efe725a954c88a069359e29853d0d21bf828ef54fe00eeca85708fd8a319c3edf842c97d4c7ab3c13d00652f9ba62663145a03ec1d789cca4336c4ea46f527f4a3d49dea5848675984739219c5bca73647dacf8eb1a077cee0d0ea627e8553cf506c20c35f394da72cac5d06d59d8924edb687b6ec40d4d3876082709f91dabee222b580ac27d957150a99c0e1370206d992f7dc82069d225af45cb9999111b8d7da53bfaae969386796c915753c94f1073acb19132a53fd07218449e501e072a50c6709a9ad30339b86e56e507edefac8454fd909024e6d521ecf1ac619252d099727dc598975edb4fe1718acf97f6ad6eced0d16815a3c25be4406edc9fd2b2865e1e90b230da5988c81c03f755bfc12c18e16d4ce6c6cab07d11d1b2b6e77cd0485d2f7b09b5d731f1a110a2454ef19b3649137cd56231dd670b0adb7cd5a10ebf89c98a68c5f12818f8b8a55308639cb0b6c36f80359dbedb565ffd271e9003aceb8e5d8dc13491df891a590d8384f7a9046487d01531478a673eef410d9effde70aa613940f7620119d65eea3db2a3c66948b9f8778a5af34f0018a3786e17c614697a1b66d9294943b1f79877944e525a93344f68485d19d789079a0451cf267c5ade2a143399423a8d45df175de4f76089ce8065799d33d52f748864b7b3510dd5127d6f23b45aa4ab1bbb0820ac799ced817784a5d86d2fbc3c5b176f6d8b7b0779d1ac068e148e75ec5017c5fc895d8256a84c669c65eed0ceaca7cd2caf41502f072993f65fcb391acd9d7818b5a69ecde04348e9c67368a5cc06ea16a3eb3cd83e2602034cc9d2187b73891f5e3844ac6878ba8f35b7d013bd0e772da871db41ecd2a7a68c681c4c5cf54d102b7e7991e72808f43386b1711dd07be6f6411511ed1ec0748722f40de119c2416720bffbf97fc11a6fdb75fd4def06fd9b01fc7e4c87a55193ab6e0ff4ca54a33cc9a23e71289f2e19a37e78a0a69760aec985d011b968eb6d1307b2b78d69dd9e723ee5857167172e51b7f3bf6ce90b191e75d261cb3bbae6c2d0515b7e24b4b4e6158f66cd0bdec1f18364ca53cf9f55dba4705c38f50d141749fadae8fd47b8d76ace6696e61548202f9ba4196912b67beab2443510011f6509830589a918250d221deca833eb466202fce53b35f28434d2a9554b5f5ae049ffd2a2c0288b5f765f6c57f7fa51f3e5b3d33114022452ec70cd11812d720001fa284bfdd79d0df26c108950a4313c3c5a6f26688705e1c7b0080fe297a4cf5e0ed13ad313e87b192087efc70d1dc7e81fac06e416e0efb94402e2437d31ae7ae0042c8cb1d5d72d152ebcd15869554f113fe17d590fd2bc738d375059791e70a0af2ec05484e4806a546f1b398ca508b9df1a70b1b20636a96c7982cb7648a9aa31e3624281f273413111c02bb1fed5d4200c691ba7b5c727dae8cb6a92edfa96dd579e89039500aa0fe747013dc770392d6b221ea9f5d7568918631de7760deabfa31c54e3bc1e6655d5daabd868617601145a35689029d98c3b70f91d306a76cbba62c61f9dd5990eea191732c05093628e4bc5691d8dfe440a4f92d80953e90a7abfcfc0e2f99f082fcde92eda5afb99a0786bd6735bab503a6c299ab75af18e920af5cfee9f3dc3e24c1a954a79bca135e132f974fe84dab9787631dbf4ebe823f6c070f5a4c4992dd03a4ca0c36a0e760f52b596083d911474113a52d95038a87f2313c407298cf0432eee548bf7954a74bfdd425d8adbd19442bc9638b2a81b4d02d6b6b0011a4f360c3512fcb7f4068aeb4c1eb7e0dc3e0d7ffc3b6ab46bfd5bed494bd136fdb90c9c3d77c30a6bc95e7561381ba5df5042aacf944bb3532740670a5ec76b91b5cf183d352fecfbe5ae318ea7bc8d84f8f71ca3547482b09c8d1a1edcd4f6d529fcd9c2196cbfa90ee1161b99f8510f23b6b201d9785123d6b3dc92dcec0b960bc1bc9e1f0ef27a6e032dee7b6565781a8a8338b0d3c1bd30b14a8585db5d060bd5e8c06113b05461cd77e200a30d849863bfce81079f79dae28337a5f606cfdacef0baa3a1a6f8aad576e69fe0b1026e106b6c8a8d8d27caeba605a0ea936a6f08a7a713cf9ee0edcb305ee07f0d4f4cb62995fdacd1d34bd3d2759400b6fe65e7a45d33cc424c43a6d0dee9a49d6cc01a470a7e6c2377dbce6b863a70c5f933ef0bd1383b5391324533ea20c06748150dca349112404f291f35454d20d0cc20550ca1b4ad3b1619fd81c44b0d6f343da518472eeab69fac5bd11cd3a3856268e3d098346e3cb93ba92bd698326cc0a2eff9d9d3b821c08dc885d459cefdab146b5df40c7f09bc306944d4150f7cfd47b041c0fd768da42b224c54f584263eb724ff5d67d555dbbc7671da1ebc1628b80cd769365b0d2734007f9f66c3915cbc2f73c26eea4428857e9b4ee4a51fed151d1f68e28be2bc222a6b18e8b6b095417c9465693bd7ab6bee8f1811604697fd68b635b0200d0c71ee76ef35312eab7f6c676f8a2e04edb6000b81161389eea85a382fc233d9ce963cb25aedd8f111da12a155f9ce9892f1e9a2a5b08de3d5677e3e74a28caa17a183d596fb42464eb0a9fb37c5dc666ea9dea43f385c0a714420fa3aae2dd4f28ed36c95492f2c4c563a0bbb380c6d33c3162a436eb8b03203178f3512d8b50f08366ca23c1e3333425c474003486fffda9089128e50172ad2c383900fc6e3721c639ba4101dbc06f81ca9245080d1d1d7af2ec7f98fcbd058b211bb1c3d5ed0c72b740c3474cda9a7e8397999ceddfbde8f2907fa1a68d0f172099fac280e5033dffcecda8dd7142662313b2ca787d582e92d38dfc68d8c79119cc9e19b3a6b06239969b406ee4fc41704a8445de1e921d02bcc2a61198a3b01cf5d3f919ea92c7d50a6d4b2b69f4b5704094d882a036353736dc4a4c8c17344694774a2e2c450299064efc4a176055c9826f1b1a696e78a2be9ea7212554e43c0b7f7c089930c8fc0a4750ab70d574e92e54ed92416b61e667b192e18eaee51343abfa7458ce7bc73dc8a9d1cdf241cc3f74f923d27b8124a87c71cd2aadfdae8d9bdac52a01692ede816dcba9262cc6c95709907f7e7c997d512974d1c1ce6304d383576adcc00dd5f7921a9ff382b5333b9646a43edaea729259d73b4a5ec396b3a47752e9e5516f3e6fc43c25598bb2c48bcff844b51580145bac326346e04107a07a3e085ed33a0b73ea9467cf377f20132cb22c0433394d2e9f933371149e4cb787c9361f6bc18242696fb6ac23a46ab6739af45083fd35edb3d2b27a9b577ce247d03dc567f2e002fdcd7aba0e59a2e71c073371675f367d52736fe3627a1695edbb80884956f98e93cd5473ca992e20c3b8ffc2fac16d247948f18b3885dcfd6db16415cd3192a66b4937ca7cfd6cbc641405a70640ff4ac1e0dfb40e003b2ffcd940d3dd0880fda11e6f593a4fd6403b327fb85058de55c844419b8b777e28b4f8073e34abb13fd033065f956cc655a5177eb110278b2620eddf3f7ac064a6da0bccec983e68558cd8f833672b757d9c6d3f448d39727ea3f82bd88a56f2ffeb7e2ce7e4ab7588cbde53fc2750fa00b7728fa7789258c3fa5cd10db8f28411795c8f5878899c1207d19615600834db51ea738d3f6cf8abb17fd1743ab5e84fbc4dcef823147cebd4a32a36e9c684258cf4d752a39d68e1b2199f79de3cca1c45b2252cd92083b4a653c667db62076445cff4abd1e5ee10f893a983e7971d93a8c33b95478a07cc9fdff2c3b7e6db6ba38e27db825df4724df2b5aa584165798758d8d78281f38647645ac0c19e3e10fb6a494fa0231e031dd3f64804e5058246a031c8dcb948fbdcca40c65b0315e3094441c15db9b3147e4a13729f3e7face780f7da5ca6da3e957cc1d9da5172483ea31ae6eee89c7858bdcb9bb4f1807ed819a976c43c6b183db9d93aceba0f5c908189fc8babeeabfc584588dedb7b73e51579eb06487a87f47667315f5884156ab12cbae0d005a924cd8cb01ea7b4ce8d8435df8b332aa7118e489bcacb1910068f95fcc8ae0fb87f14310981952e3cb6f5c454722e25bc87877f445a901f4ee19436ae6226668a410cf053e01944d2f7cfd179cf8608971907eb583f9033ee94639f71a4c65c2c8a36de54006fdbe859b4cbcef78ec18c7bbccaa40754ab364a0722c44582b431b5cce20625d75962f33794e02ca103ea07fb46c9503c415c8182beb32ab4d2d43a42d424d0ec76e6374a2306a31543b479348fe1b86ed2944fa6a194165aa774f688515a6adfc6443b960e1c46895cf846d13761e174dcf2fbee588d28b25e15abb243bbff24720e9b48aa926d3afecfe02077d614fac90bdbb1a87ed5dd8bc224baba8162f30893106f9d4ad9a020965e28de7da9e62b2cce9975db6285a514b028ac3c06760c263650f74b5ae589617742c60aeab625e2295b5e36560505b5755a873fc3c58aef29810737679824279ce9df0b8252a3417493fa23c179039a276f02b628e9606d7655b7609ed559fe262eb63c636da38f44ecec453cfb6c355a8baa65b536f4a6201e53d1002869083705d237700c3ae9970e8f28a5cb970d67d036836f22368fdb75b1cf2eaf11329ce7e0cf8907ffbcd42b000f159955be33043d397dd540db89102542c0717ec65bf305cf29117f741e92a6978ab833f4f944372feb3623b646c9b6120769de3b64e547521052bc3e70d7015ca6dc233f699589e60364ef08405762d2ddc188dbad23a11ad12e71790498874fdd62f369230e07a198356e629744334bcd5280eee671c83a532980fd017bbf12c1ef05d8baff44d979a41847b86dfc9521bc9c532d15ef85713fe7d4c02201d20393fa378fa59e0910b752720a9713c70eb8f799b7e6e78b83d09baa559b8155f266b60686b1181789722efc9181e14cab89ee1fad88337843b87160e918e2239c06b1f3c69d8178d3a0e8b39ba9bd9b9776c3e14fcd22e778ed1474dba2a8d1d33f78611f950da7112feb692549e57a77d82d008f10245019ee58fab826242112e3651f2229dfad3ec64d4c4c044bbebc808530a1ee668f3c72aa1e071808a34174352e00ffb7e77f057cddf3c60df1715f77e30c9e897a9245b3f394b64149865d6f8ceb029eb2e7f8be8b98b134447aece2d447641638a4cf0b086986d7d748aa617fada09271df5c5b103cd30a3cba42c92baf07be1b49efd6ae8aaf6de280acc11e8985ba07318231d8aaa9829476611d4144b034cf00a59462a22927d5b64272b32d70d1931d04eb526af5866b9a72acd39e628062be5c69d30182730c556f2105c95af6d5b729534654b92e97450e14c89c52ec7fd991681e079a6f00b9af36a0e3df1e2b12ddc7d8bc77f7cd57204d1860905e979f7d251f0fcaa7938a0ef89ddfcdc825a52068f5bcb60a49669ef515bce685f628accf73e93f694fecef6c25d5d3deaf63dbf2cec1e98197282a6c1f02d2aef3578a3063678278de50c061cb559f4c3f65b5ff4bb52dc54e6ff247c6664ead3a3b924622f6729e72693a339f059961366c56ebbd94cd591819602094a1851eb40a409632a682a586f73791290a12b79cff253bf93cbea046b64c95244b7287436bb7f7460b957f2b91ae9aaad8e11d7b20f15457decb18a9cafe7473f046e266ca8cb2714ac6cb3b594a11d8bb4954cce36d122bfd422c83ada75090fba158ac9086338ee02b4b82e6da95159007ce1ef23c66e0ec85c1fa435fc7d2e4455b884299a188c514713100862534744e0b8911db65bc13f7286d6ff02d79a19421179a5c64c99618a5f556cbc83249cd0c7ddd40eab5c13444e6f8e690900f16a2fe0d5cfe95b061755ac77e5125b9bb01ffe6784058187b922638869acbc54b9218d928c9e74cd4a533bb38b79e5f4b82b4faa9108b6b4edb745adf68dcd241b57c87c94441ff2de2b615692ee7ed1f86ddae645deb61dc6c7a9ed3ab1f448b8641c0066e0602b4d4f9973ee49ff1a96c62ff7fd5d77c276e219450bfc169a2207657ea3c498f663c45d0d1331fd105e92642ce714910afe68f8b19e0f9c7fbe04fb3d0dfc01d7f593a550aafd874c3b147413b51daeb3a7571605229d98fdc06b9959a1aeed01adaad43fc552676bf1896fb682f63bbb2631a3d62ba1fd2d3f05b70fb8274312ce275184e73aa336b1808457c4ffe0ac8971aa8ec633065abae747a992a3bb0e546446f45c073f720f0d88d21ffb1f2d2347840dafcaa488c82c63830143dbb7b63beabf1cfe4e2206393ea7ed72851b444b7d5da1b1ddfe034273b7f319398279b673dcc8964ad89d841b200e290cbd60f770b7136129d01aa0744fcfa329cc22e09a5396e9e182eb8aeecd82cfb155e6b913ce104babe059fd58fcbf721ae3b51b95f868c9fd08920861d9e8d8dc01ba2f4c42067787dd445e76d3ca49c14005a96c7efa8e7b759a6be4d78f627b34b33534df1f967e6d1a67fdf99dbe42c366c451ea83c99e2b0f725231aaa19cac4aa6da13a07dda19c7461f34c18077f4596732de27efed9ce1e7067f99ea777b0f8c338732c41a4d30c72ac346500051a11ac2057955daeb78264d0ae981c8227b8463a64f031ec34372da87f0c74eee7c667e0d540a406feeeb4a051312c183f97e3b9676d9dc7d03f0517a1018530ffa33b50e564de9b05d65ee96776adfa76d3270c5371f764c37e76ba6e62316ce013ec950927532dc4069444d5746f0b7d2632db8fa30095fcfb627c8d19b9785250d5ce8bf2131b36eb1ad38a04fac262522e53917779cc95e1137427c784356656829c341f6c8523d00a1d6ecd7ae345bb673d192c09f0a3ae9342392b83cfc8855cae2da58a77f48bedfae51147923353fffcc6c9a2ca9299955c0b40e7076ab36706f718ef838f4190bead7a73a9c99d8a8f4001e78de4a7e5ba6f38665f969b753e24806a77338ff653d79b7f107fd26bb776121fbee61e77e8dcc669012ff13c1332369021e5e8f1d352ee20fab6b8476f8564941f2f8f1bdd90800366b115e100e530579730c9bf39c53421556f212ec8a51a5eef3fbee5d882a25fe11baeb5175315e00badfe84ec788ed04e71f1f20781c9051db79cb76db461a6ad5dd0b884eac3780ec61c40f6e85235b7ed16e77b361570a2930ec20bb84864f6505fd5a5e56766ec04dbb800db9980c344a243a74189fefc63a8c596265ad26f5c89ec8b9827a50b0de3ef0365b61d55e52fc28df17e391ef3f2bec55954602b13730ac72e2ae725d252f26510299c87fdab6702a79b314b8b8c9a41b1a89197e4637920880e3683b3896a537d301204b3ed1ae962ca1d7bd46e26ce8c5720409293faea9a5f630e463f9ae99eb97b730dc721eb905120ac332f80902e14cc9d3c5f2390d116a3aff08d30f20a05026775ea9a72b86243c98d9e042258d129a580ae1b11da6dcdc9c59a229d577acdfa019179e757c6900051e7a2ccc4d1275b6e53d22d3c8d21aafd89f3e500642eaec623af18a3260f5798da953b9931fc4ebbdda0afa1f1996de3ed54e77aec9eb30882da1d77fcf2f5cbf445c9fdd1840eb620c2475c20e8b766e5ef691bd534b575e0b140ca641091f98b9245228e1d31faf48cb00c0e5744a8957cc7301705e619cce07db9218fd3160b41c55eb9f3f45832f3d7b79e058f2fb443f30cfa480e94abdccda2e3382650f0226d14251eaab914f7d1db1d5eea173bcb68dd7bd91350c3e119c9d07a68bedec8243890118ae1abcc6fe8239ba68c6a15c09d10900bfcced356c71abfe7dc520e912554cd4b11e011fe06b5a2490e72ba4b6149af139c61a7da0763ab38d3d71517a851815b494b04b47caf7079d614d7963b276a8a8a0a357aee0fe88e6f9d49946b0939e0fb8ddfd6e2e4a864609cd34d8a978a8dcad7389e2d69100e8bbc038f82fdc2456ee498bc64360d294a9021b797f72dc4cd096758c3626bf57ee7df2247e6a348516f22aaf94c4d62ce79f3fe1d81c6b9e252c525fc8745b42fec873d230b5b4896ce89bbfb15aaff0e3ad1a5a7b6812bc76af57c4ea4ff9629d2b2a11b50ad2954ef0a4dd1cdf1275917f91c905dac81edff3fad8ef17ed3dc3cebbad9174d0537e2d471249eb2e8bced3d3cee84d3aa343f8fca83ec093415762580c684b25dd59b5243f8202da57b82d35086c17dc156d9cfc19c905274112cc4312979b312b224c525ff7da1a74140c2fd3520f8a835a49132197e4eafe7c73673a017d5bc3f8d6393d817ea52ddb2e42cc21901bdf0a923d4ad1cb41b583692bc8014607150c770d482bf8d213b3403ace5f4b7bdbd317ca00c63096c044f61f99823a0368d41f5c87f056acb80848bbaaa7c14207b88f4762b67b19756efaa71ec840dd63bfc237b6e2801e3e4f15eff453f6383917e97bc7b5782f34e2fcf8835d46754579e918023a968f6aa27216488cbcf58625a16d0a4ed2e1dc43e7bf8890308bd5caf99b96845f99bc8845e7f005330f253aa378aa51c3cd4d54a26070b003389653c3c3bcd655588f103d9337a752523db0fd86a42729dc23990bb3468eb0992df8ab37fdd29608a9820856be9a0c7486638170cca4dc961ff8a7dfb392cdc32faf36d4d4eea0aafee79b639b0c5031e32a70a665fb0a98b62fec8cae25b89867a07f512eb71b80a2f90f3b90046c8717100dd2ddd21947b80ec32ae9500fa301e0c97fb2020dba89f97fd564176b439f6ac2dc50b6270c4dc1e4dcedd3c498614932ea1793b93b1261bb134805afc1422bf181b26ea90e492a333980ed71a5fa5c41cfc62775e7544c99c73f5262f65b4aad6c336ab25fe599e30e44bda3fedaa8c72356c6662205aee23687d16286b8117ab356a7dec0a47d832296c988b7f31c47902c597c403b02d3f2a4c942ec8ddf077273dda92aa160b1974e456e54063ed5e8bb084c17ca3af455692a02f3a2368979a001ea443b192e3c59f1df7eba595fe57f64fc429e661fa6503c93695ea2b842df7f480a21576d2f19b78e75867d975d40e62d65cd817bef002dd7d605f72541329bf0ce98f0a5c3dac77243c9cad9a3441c823f361383eddeebeaefaf9a41a0f51cabb10b16029357b4bb5b8fbc6a1696cdb6bdd2a0b55191e930bfcd195953eef84fcbda165cc28dc19eaf7d8bbfdf6296f243e1659e214e8f65e19028ff538848a9968f2d85c9dd14951f3f22f747f6de8aa9ac92a01d52e4d31bfdda8f9ac6fe755142c1bdf210d2cd2baa6b76357f95b89e905ef584b7615a332080adbec8c43b5e7af3819f53bd679292d2134a17a8eab8411d0957f1de01c85bb9934729357a4db3f960c3bb41b00397401a0ea7914065a050cf2aa84d81304364a53adcf066e9b1ea26c06bb08b27909bb64c5054c2876891eb11af5571d5f978c7f8f9ce3aa4574cf57393443a6aabb25cd6779a9c224c75bc463122346f385c9f95810e4f3694d29c2251fcc6fb0c15fb58e21add4f36a025e44732e87e94c3c2ae2a1128744d9776333fb6253b4169a832e4626e453899db212447ac088c720b6f252063440de5daa13042eceaccf7e35a56d3380736a18d79f75ec1ee876dff7bcde1711711b87a88e4e54932d5ab24782481cfd472f88535787ee94c4c66888c6b898b4b79cc8f31c89779ce9da7b31c6dfd4882c60ef5d0b9c380183936697e38cf85dc837bb0f06c198c4264c8a79c827b53c30cb76159b9eb991bc475b3239e84265181a280892dec3b199c59334d2a65852f824eb840793b6fa880d37141114185c845f316f49ea0552932fae526d19ee546563fd42747001a4c22dbfdfe58de27ffc955de2db29ab5366f574dda339e4bc2af61ebbafd33e3cafd5a77ff06f7ec36eec8ed441adff9ab0a1655f702403876d1551621531a5285e364887e6c75999a20f9e5da10ba4de4eac5680ed72cf95a6cca8eecf3acd05a5a0c2977c4edb0846c0eb23089b155db4943c8fbcc78e779bac3c92d23ff0a30b64f75ffb906cd8420341e103aca3a11a04430fc39f44f723f2281870d74978e4b5394178017b3a20b73bc1af3dfe06c7e034d4b56c8a62b92e6b991db7428b76668287f0b4128958a37e7d232f10c5ed8a13b1daed6a5b7ea40f083e34a3e21b9105c1c2c26257126ae13a0540634f69b7c43f8b9f67864f55b47b73b630fd4fb153d702def4a40e0e7e513d69b98df59724f1888044b7a439b6d6d1c643ba83f344fc3ee77380c28810f75ee4053256a38d3c27256c0a64864907ac766a850d113004d4c3534b751b905ba32801678a3668ab70e0ecc75c6913202bbcfecf0580df39c43c5161dbf743e9e05c450e2a6e7c2c269b11ebbbc595e1b5d2be403d87e394982f179dacacd785083d114864d03842eba22ca12c4b29bf978702e49b686ee8bc02ce3949c2fc279a97fa20bee731d93568a1c425e98626c78676f3093136e6f0cb585fea6126b513309085849e543e9693d1a0c8081288c83ee193b791c0a75b33f586c606f85b27c2a9c708f7bda8e283f77d694f3c4f0dd99cdfa1d044a5ee8ef481a4b25b7edc6760b748fa720324fdac0d75e95541750d5abc74b5dd7f66e745ce17903b1a83158ce98b3e575529e3c5c74d33f68d969fca727120259fe7a28d52657f61718d69cc649459e5f0b833900e27015fe92cec45c550483a3963f98a9ec242d522e3baec0adfd73abd609cad76efef8a61310d9d4871526a715c148a0e0d0b4135599220f2e4accf0707881a2dcd6b3a40dee3542f44b18c6287e85dda019429d7b46a668ad7e8b2aa6b6c05607ba75e89fe6927b071b72dd9b3a5f0b5cba8107f630e9b694ec26457fe57b9a2294be57df023f5ba326850600182b51d5a5340930a3d1f8443ae9b897278c1208c8596c7a6314c8320c090b68b06d3b4844dffebd5966719528e215d9c2efa4271564ee507e197baf8a17aab36b92466e9668fb92ce24c2bf929f5a26d47ab822dfd309eb7e7ec2bd7d410beeba1b998e85b3674a6e6ae2b9994d401b66e8ff51af4c7c0d2920216ba90e57830f2d3493ae5c012c4e7ce26086c8b841e130fb65f05e6280890675015037c8f1d5c4efc8e9aecdcc9e16634ce54b32a30e86d795e1cce3a4ce8596edadfc47b715ac1b6fbc145726b9883278580388aae32cde5014306610ea6c3284c5a539be332e22ff6ccb062f33f0ab10187d5718efcf035c4634e20b572eda559731c3f1d7588a55a917c9b1fb1755c29198485c9e9d80cf9fa8a440406d03b2874194aa76145fc59225fc3bc14b55466366eac27e50f947824a7764a51a3aa93f17f47dd7f2340398c90d8889051b9594c5c4f9eef1968d488c6124d61f9fc1b2992c9f19d84669851bd9083244390fcd18b62d89befc8132d02d06ef63a5f076c6886a371b6656d07f47b739996affceb259ba7dc2a8e00eba99a7bc7fb53e637d68b3fb1ba37dd9ad4a599c7bde23461207796fcf691227901ca2d41eceb238d35423ae34b9383893f30184ffacf48982757e4f40da603bc2162b7819373c1f33e02c31b85a52fd816e171404cff34e671152100b02fde7cad03bdc39108ce5ac4e9de549fc5ed329807b88242ed82dfcaf5954c2a01cc2188a38e5139fac1ea187a82095a0577f49abe1635571ff6bf5c4d7c7acfb6c389b520e6229de7e4c99baa077c5540ce6a8b1e2b70852013302bd7272dd530c763de5f2a809bada02013c9a42c576ef0cf8c6406393a2f7cd03b2ddaed72cc6877d2a4c293c3d84dde0c8f6393f10c218f841cee410e203c0b16eb96605695d556c6bcde188b0552d56f9212a0fa7c90719d67729162e0fa2b1868840d9a709d6d91d15cdce6441ac2788e7cf67c58697459452b0c0083e7d83f0109551078e0aff531ffb9f8a82bd3f0ab2e04e3c5b11b8bf052ee5625989f763b462b2b04726fa259bde492a6350f07a669415545593069901c72ca1fe18ed9c238b821cf981e8fd86d8d2ceff6ba05bd583c18800800a626deff50d3c39f07661046fd50f7ad34032fbff697f26c99ec9b8c702bf30f8e5c5639c43efadfb4d98d47659680a054fab1cc20f1340095977316ba4bd62163841f6eea978fa0387431a1fa7f6ac650c2894b1034bc7fbce8fb5cfc20bb64de4d68c0e63860ef6cf20fbcb6b4c57410af38f36f71b09ea40732ae8167b32aee5037bf3b47a56145f9202400d4d01e52e79b2d655e639831a74247d150889c26d57375d397155f6d4ed5a14b4d51c022c7ca892beab30ad23476ecfd535acc66f55d6e6f180a65cd9a7d90818ed8acaad0f6787b8c1f5e586e61d94a6c96c511e5581df649fa4d9ad2333520213da2623fabfe5b3dad2c2237ddd2a54e2922f88a0954047480bec7adb5b51883d4f30a2cb48498d8d544622d2cfb3dec2f7dd06d0dc6a2532ad062b1ad4d5803d55fd5a135390b67b93a56c223610382d06e7f24f6ec5e8d4d68973a7f1e04a859a1eaf67863535cdbb327230b7433a128ee0126c451cbb643abde194f363ad0e8c4314db56bebcb386a103948bd9213c4fcf716aab3e2074bf7051d2a32b83e7a21827cc420f4d5b21e944503c6b5a8d728f33f9c0e6c455a231eed59b88d1d3243dd6d4f1a81027c08059d58ac0713e7ad1486958a6886072627ba03b7736e95a136b671bfa1349de3d71de9a996d27990bfb5239c9555dec5ceba43e34542ffbf7e5fffe5c7869a8c3379823d7d2291cb04503d10dae9fdf5feaf799f182adb483899fa89d5b6370ebba2fce809d7eb9bed6528755c7d1ef3552a6c37e99ebd9e5650a2d07a0049d6901a0c159b2ec7053637aa8c96415641ec83bdd93e2ac877a0a1af8d1a9df3efa07ff8f8c69465c65fbb7aedef2a9e53bf47cfd0d22bb614ff8e2c88fbf40ee3d5fee48f9c91e9ab45882123547f8996a8211dedde3d4d5e59c3c969f67e00423155d7ba9c0e985d1ebb37603766f10be25c118990e10d13e1b6919fa02ed019225436809fdce4d164397148ed1fb9896ed95a8e45e3663cd9d11095a7b7f7e5cf72ca4293acf02dfeb003c28d5af9442939f8d71c104bce2c409bf5daa7948ab9bfd53b6f2ea0eab6ad3fc675fb67017a7848a29b0f1e1b774d4afea63f24fd1a54a33967331d66c3bf3a385898b330c2fa3aa0a1f06a4351392ac907dbd9024e0a9947272be459adec26d134ba74a15c636243204f17c8a2d2489fd0439a971404951c3e1f5ad7a83dcb9d70a3ee1afa283742f520e6750065a3ec4e21125e6d717dbaa5dc3a2420692267c4cf3e28f5265f80d6058bd7c116f2642549e187b07f38ea735bdd6abe674ed6121153a684ab4d77e807066ab5fc76c21720cdb4f39ffd3281fb828719800135ef42b7b0363b54a174c8e04a14529ffa1a54c587ec26c41d2a9df2e5d7679386f83105f166c28ffc341c08763f04d671cbe404b1221adab71c36cae22826ff7151090604effe00718550482c571e7884e23d37095b1a47ad33845a12842a5302dcd7bb7477a95b7827b411e000f120cf065cae5f2c63d77aaea672534f5284a082da84b90657f37f99f17133dc04f7c5e85c076669be9d5f44f2481d12f9ca39b9f030b1c87010fbe2ebc22d8dff0606328f2527d6620fa0d0fcbd80531a0d8eb747cda38534ec96ee7e6231e5a79d3ac6dad7f93db92581521c808a9108004e54738434fda78cf803a76d8799e86a0e2d9b2e62935ee8e0d4d4c7cbb8623d033164b1a0a934dda6dd73adb6e026bb8f9c81789b08cb1b91c1a4c61188708d5752fe01fb88867ab3f04af009de4e73190bb272df892bf9c37da663e9ce3a53f7d5a8e8d0d5febc5c2eafbd1738c326782c2cc90a7c593c687c38da3603e9fe89eef570fddde8c5d2a87b4f1c65c8dd4fc673a134964789e6071553db1293afe4344a031af9d44559426dc800eff195cc324bea157e48239f2effe7dea4e36dc6bb5a433f28d78dbec7fb35c72b1f852179717ea3363652850fed4ecbd66dc85ab91c04c8bd16956e776860c648e33642a06ebbf4c72ebf8e27a9d6e7a0cfaec6cdb32d8917310e761106f91b8d7886c26bc7033a001fe25e8ab46dbfdd34d3cd3d6c3487ed879e9793d0d9a3ebccdb033654ddac2092bae34c499931976c8e9a28b59e785a141f02783b7eea7bba100845b8bf100729b121b5bd82df654d9b99626f88148564677ec8ddb29e0a2048143199cbea1f4cc7d2d7ea3dde4f6b8f37dc82c0408990d491f410218b7d08d49d2cb3403d53268bf30bc3490a16b69ada1f666613961a038b0808d5664fa4dcdc5c7b5850d4b46a75f317b067f740ef89fde6016301ba76cc9955fda16b9f2664955079477286c7bed36242628ec89c6d8c3e2568b3a4f58f621c323fccc75ddbae200a694485ff0e75732fb8b80dbfdb1d85642698dc16eb8a16dfa59cb5e0c3b402c5b3206b20948ffaaf6fad92ebce592c0ed746b07e3a35dc1225822ac5395a33f4569609bdbff1b4e6c9086c631c5be775fe6a064eecb3bb88b5049c10732a7cd32b76e7624f136994c43f6ddaa84d542f75b0cc24af559c2affa9762dadd040ae07b25419127b96eca0cbc2cc17d6d8af44dc82155cefb605a91e5d4694fda3e8fd4d1e556b73833894f3d82dc62c71754a19a0031b98f3b8837026ae3b1bc01112a3a8f964c0bee3f04e82e76a76fe43d237bb1ed5a4405aeba0335e52674cd1a54e4a00c36a3128cc0571105fa2d00167772f7bfbdd83bc81798007ec0b1e93c42ce014d5224660217dc14f5f52dbc6b0bae29e2649997d27bdd6b3d6c16a1018be389feb9d9e73ac4981a88d095f9e26646f270cb14388068776ea3d9173ba2dba223dfedd59268c995f6e2106e5c4a6201808b657157eb6715cce6c3650a12677ea2fd35c2e94a41b102aaf24d01c673a44ad5110d25a5cb54af0c56834eb8298593cbe0416f29721745a408bfdfd10497bacd5f2e4dfd051bcfaa4924d327b722e72a8c78195722fe548172f432cded80fcff506b1dc60750ab240eb062048599d39aea9d0235d8d4888b1bbb89daf7863fe795cc7aa9fc1b7dfd0a0e80ca159fe2c924c92c7ba9360f912e6b1ded36b9d51b4cc0c3c3bc98e4cea65443571b39d6281c6699b0175e2d3a8f16f824c04625f5580afd55c65d01388790ae49b3fb76c419446cdec6a2ad567f4a4befc91a7eaff893b8dcad5b5cf4934ea80f0342e8ad358588a37b0197d5ee3f9ca483fbbb2dc86adbafc5b3b0557d8b9314ba091fb6c1bd34f015c3d2de3ec8df83554ff85410160f2acec058e5b923e996e7e77d7cbea29dd7c530e6ea77982c7edcc2f0a71ba491325963355d2dff08bd8647ca16d0e8de14d46e6487b49328a6e8911541855d597668ae251284e04e1010512b7370c4bb3edb06f77f2a083c5a9efab3d3ab0b800c5bf78c03fd81785c1c44f376abd9e0f520d32a824a5ea3b8313d4072c33d130d217fd81348ee0c757eb12467c6972fc739da22e03dad798718ef1024d3335514dae7e9711488bf7e62c5ea5a0d1689220f61107e819eddb6074a2bdd760833fa6e234264060d5fd58ee9147644c1dd97c191011a8c65c54d19396bcae73295df31a0f494e31919fd28010432aaf84900b8d14cf8b98698f4c59a2c79e04634e9397856a4910b7fb0c7b0be3de5e8ee18a4886bbaf53f29ae4a79a6cb76abd6a50c1951a846764bd2f6bb3f31b61f6dc621e6b653d830b2bec08595267051d9722c036aebec8dda5e7001ef4755a4fc07e4f21eae80c02aeb0cb5074becdda39988c3fc6a1a09bcaffb8c3e2aaa788d6bd5e654f9277eaf3d8451e2c22f78168514156bec01df4265fba266be676c79f295d9659e64cf73e28fe16bc4cec0c5625985cafa9805d2b7b98a66944f5a3b8b0ceba4618e1d14021ea0df66b41a9f1e5b2a131e924529c2d6ca0b3220a45b39856a09dd9bba8edf911261b214d73331d3a22a4ebe0c5b2bb91ae409a87dbb95598e8c21e4d494c4eb278c09f816ea58d62e837ed031c76817d479c8117bad62550549aaf2ffcc87a67726e5082fea12301fcb3f19c7aa341d7db2af0de17326efd400b8da7d82d0c7039f3402273fd15fd6a8a814b1a34e707c165a0584700e591af050a2d320c2eeb73463d626e24bd701cd11d1bd1f99dced8aaf788120f0193625281d2fa2226c5104e973bdf53e0600f1e45be4819bd5fd30c58996108a1307165b417116debd70966adc74113a3bb8a38ed72e34b6e29ebb4a483fa1a97748fe205d42f17a2f3c738784e8b4c21632552f498a35673dcc5dbb98494291e07c9f46fe7a80481a8f7e2adb08fc6be2a1c8aafcf9ed15da244584f8c8c1060f3a714912c3d34cf5d352a1a902874f7cdd5fe0063ada05f48e5bec1c5fb07ae10ef30485380367e20c0b1ae27fb32a126480b73d26159d08efb15d408fdba61368ec46e9d366d1f90104f719f2e653381072e7fd3df2e81bfa03aaffdeebacb022f774e8fb9f8a5f1b79d1f2a0ec716b3364e5fc7b6839a3a23f63b1330b14c1c4d76f870917f1a943eceb20dc6d05e9648831b122526841034e87f06db164e3bc77f3af46803230938ce8612b09204e6de193ee2efe458e79a7a256a969f89780312d489750263237dc952f23c0564a480a653a062f47c50a839f9acdbb57c7b1363e1f34d4813a47861a3b1b3fbafb7f2d4aa33168f21b677e778c9466fceb5c74d4a96e8a5695ff5267d01c7a79c361b97ed93e3d76c80fb2b531d1f8cd6bdb39abc77cb7a11b007523a62cd69e3d62dc2256816ae309299cebf40bc5d731a6ef182bcf4d6b223ca4527759cff62a07df961127bb06eb5e6efd024b5f2e394d8c85a1f429c6e62c5af41a18f8d60ac1342576e1dbe6427e476de1bee7998a8c9464d97fa101150943a694f87ef2bcf9c0bf7db360bd2aa060f68704aa5cd659d0e593fd8fc139e5dc2b3b77c3d93dc78540ccc00b940d6f7e60ef58b7f6c1a2b16b1a31a9bff8622fad06edc05b8b86cc3096106acc286076a1b45245301114a37168016e975ba94b8d167b53dde034778978018732d36bdaee006bf2b32c00607c3f7be2c4a3de8f6656c74512d3a7867cfa3a2071749f7089c0784846ea4bdcea83f804e95d6f6367c202dcec33422305fc90c96ac6f2e08eaf3c80fe18cecb30bb29ab083629239fe9d0f46dc6696b90f7e872f16fcff489d269f92979b5095116770fc9837144c56e98aaaa8c13d356aeb99544df55a410d60bf5a1ebefe2b12796db3740eadada0951aad22da66d828f94305b03efc6b45131db33c915cef4afddd6be5c999fc3bd9bd90781461b8347c5dd9177341c3d16a4e12d24720e98efd2aceb44dfd063da53a311a7f458d8ca845e17b232b3489780445e6d8800ee399dfbe65e0721b9923bd2612e6b2a40e2d79d8b4b6f99485a64238334586f47657fac540db0a9af6b8ba644cd4813ffea553b285c7e47cec313307c3590ba39149ad9e503bcc002e42c38de3bcb2bb3bf72d7d5e6a3fa76c5428bfea92548055beab89c349ae301e4030b28b3b61ef318b28e4d312650596ec32926521a010b3caea5cc5e4d9c953acdbb4515c6f90cb5d712499efe015042eabf7db7204c3979190548c2790abff1720acf8e84f9a392bdfa8361b45d842a79e0cfae7c6b0bb6082a42b363a64c03ce528d47af673d4704afb597bb43826ee6702a8033ffaca2ae8441b3177ee811afec30131f9b1548cf27122b597dc024c7449aa9377c6ebea807a2eb8764df860ecbda7f56d7af578c4ee18f2c42c5d319bc14c1384245d8cb977017752ad32c177bb19fba967251dbcedc6276425ce3d1d318fc2a889b45b7979b424014d97fa1027f208f091847cb695d3be11cc55ae48a32cbb21f48018a03ce736fc92ce71970101dee89e6d1549517802f6df5939401701f27519f8e82cb9d7e2f45d80ef5dce556fa07842eed426cca6aca9e011cdcccadbba4d00704530151b957b7bf61b94b49239696f849a583497a03decefc01a37eaf72b5a92c78f4f3e21542b50278539a94dbfbb64d0553f7d93b7e61b863f49c04ee4db5c2692f6f029776b1d520a895648a7e7e5a481e8777b8c87b9dfd68d44bb63994a87e0f3a324fc816025017a0d20bf6e3212f4cf275d16f8fe33dbb2616d94b9d9f6add94d25c91b40eea296450897cdff9decac8666116c482e5768473bc5c40d4d516787c8820ddc05ac57ff972fb1312495e31b61e90a613186892c3108f21f2f552ca29f1840591ca01f623c5bd101358b705f9f4d184a9662485f8467bebe1c2845c691b81132369dae391db4b94bf9daacfd10fec5bd7187ed1a217ad95bc79257d72e79804aa0cd3231ea5ef43b8d2e55717cc646f40d7ae64946ef669ec7432f8b3235a5ae1e9c6d0f2845354770ab6fd01101baba996f81410fc18c4375f2ad25549929a0b309f25d860326658cac08a0c410d6f07e6d074ba00ac02360db409fb46ab8dfeacc56f351975b9dad4304eb91c6043c5b32adfaca6f71d78da254e6deca42efb7a48eccd5f60a43e9d7cb30536ce7709bcd6bb003613c6fa08a6a4dad0ae73b3649fef118ac0bc9b4f65be2a93ff44ea5a95c64a628f2291b93cabad9ec23a75599d9d31957d0069736c17f168d7e25c93de9ea5a64c24d6857c650ac685f6fe80b8c472e9c56901c93b586a4071c469e3acfe53cb1ba941e551ab2cb7002cf4346f4cedc111861d8f9dae3adef136d68bfa7541287a710d8b7fcd6684256fc5ca4c66ac7cb872a85f0f9780b2f41c6f62586899904470661a09fd3b71d06baccc8883a1e9b78e585c6144252848f56120b50cfc4003ed99c4bd43f5e0b853c0288c9de57eab709bd5e78f0e1b12d1340e42bef782c2f4ffb39c358d7cefc7b43f57033a84bcf0bdcc21584b5e335044ef2140a62e453df99dfd4666dfa7d5c0a816867052c37f7164d5f2198bd95eb0572c71c0df38efcb81a39b12338e3f17e2c89a13a868e3477ff4aa5e9beb0e83098fe48278211d5cb5367b54beff06b9134260c46fefa0c752fd1b1337ac44f4ea911f31599a87c7e1b672f51fc568c91c40d2be4a8839d96e56cfba165821a5869295dc760eea880405ececbf58a5cc48aba7ad3bd77e810ad5f94f6e726ad2b6d408956eaa2ebd78ecf5b99858754caa53b7be181d9530f8117b1e974e9757e2f6ee3f1b6110c0cc721fd15499b897a7a20e192b87ca5ef0bf0e5571ae1273b728bdcebe58648a1a9189a5d947a3ec5fc56fa3d519dd96e30b13b348dd7c19005b71b4b73cc704d4c0f52fc54f6ddbeaef3cabbf6b335cc7bc9c607025d47bfc152617e65c39fa6770981d3232235a3be3a266b7311a7a1c3344fea67ae61e7f9cdd4555f14f71358b02f78e9edc0e9225f2ad2f7bc11c43cce3c3bf491b42f6357bb5a5b33b41408386911995acc8914c50432761bfcff24314c57fb33176d11d2b6f6ea10290bd2f41b83270e679b828b07260514cd37ab043529ad18e6121b4aab13eebaf3e1c3707adcb5cdc7d2cfb1e954b8bee514e9365f634dd82fe47994f0c7035df7c6c8800ed07055202f0a093949b9124fa0c8d83f7275d8cdd01787828fb2757d6f50aeecba3a385f1f36cc9d923101eb7b9022a392ac6025fad21eacf7a8802a94543fbbe01b581cd59545e3776fa22cf84f2947fb9c46823a49da2d7441dc820aba40ce9a2d1622db6a207df58304d357bb542ba379b90bc63410a6e50aa8a37720431e8bf71914afff3bd4b27eede1545ebcc39f9d50725082466a54077b4adfa05f955f96a44f26eb6179213229eae72b386fd7d12a48f1c7cc88ac2e719a6bbe2cbc599fadd9b75273c1b582b670e5a32a7f0b677000de0bf97e1fd1e050da91d434032c6030072d3045906e32cc46fa2522a936e50aafe17339585e0ab4c2b7bee5fa1182ebe89cb3e83efb6bb1ea9c1643e6444d6d57d7b6f8645c1e537d4ebda3e5d484e5c723ab5a40014ed5541fe2ddd9f6cdaf0604400a4388cc04365cc6fb939d475503552d8133c1d4cf101fd0590303a93d9f4c1cfbd3f150ae6e2060c15194db1825736086db33b5e6986da8a00abe13366c46f916368222bef0cf8b85790bee9b0ed89bd24741aa203fc805024a98e2d74b854dc9e0a465e2ef5969a510d81e242c9125921dc3ff5ef3b0bef48694ca4b694ba200df919f392c787dc3efc659ba1ba8a4ce5c095842462560207dfeabf8797e6913c7ec0aa65d2d1c34cf944b967275004d8f7e973d8c575d2414dc7d29014d5d7497cd498de6e650eb3f8ae40f827f3a2576baed2aec9dedf352e71c9a2e99b53d5b204afad9bc89522a512f4fd1147cd9bc2b86435bd6183817c9a4435c6e28b4aa91f6cc8110ce52d9f30b644256ef828068a8aa7da669b3a1f492cb8c9b6c127b955e0b15ddc3c1deb9c05a9b108e2f12918de9b887d71379bc5643a66a1373c36097d3f744bdfacaa1684f202a0535043f7be433c41d7c0c42d02439b3f16a223c7cc6192432f318c9a4430f24e8d30987a238d71cba6df06eaf932bfae1cd09aee274ac152075b9e7d96470f814068f7fcaf90992478ef3343215d472e5daac020412f7f6354176f06637398630590155ec088bff4c2588df753fbcad4d88dab44b1beaf6ba5da7ca47aed40a19dac580ec9924462f1a9c14432f8f90dbcc84ab28a764895e433fe87cd3d60c3cbeea93816c8846c2c4f38628a182abd7854b7f511a39f5735850303dcd0267c039484f47886a6dbbe1eb81dfc84ae0539d71971df29c82fe2dfdb0e5a08b0143bca1dee60fee5cc8bacefda54451b39a33c031d2cf84425deca818650e29903afa9e5c15aaa67c4eb75e18a1ec94044de210c1512a0bf52c5389c7305d48ed512eeb8414f344e767e40ce323cdaf5135b5e807a2cfef2ac77b256a6539eabc39c25076357ced8f5366d410626bdd61d19c688ec4e2e666f7436c24be571ba6213f2cda8f00197f268dd154027df499eea808ba9ff78b2b430441ad21d1c0ddaccbcd36d2e4e197f3c60817e89a8a8aa617f9ec1d6be9c0bab6c19723ac68120e4477e8e031a2d0f457d62804b8b0e6b3bb1f6f1db7fee4151b4263b2763a59e9038609390fd9707d7f330d2c9074a47c6780dc908722245e75e09bfde2f3f6fcdc13a910ee5caa69e22a9ab7bac6960b8cb00c68f18083f103ea79425088c0aa7f23ef6bdfdd1f51f0d23d019382ff96d3e7f1ea09f509d1e5593b3fee81848baa54fe62f76cfdf60dabaa4c14a84bde8fc8f8eda5d98eeef770736cbb412fccbca75c0ae34f73781b002c022690cbf287bf32a1e705e8a3d9a0a0be3937dc837d2bc8d592d58b12d2e17029e08fd26a56855a79b919d369df64b67584dcdc6f883c77ba93c4e0ab99cf4c307a167bedb15c4c7c962288bb8d1b97b646ffc3b7d0e840608f4aa2c941b810edc41081e7a06ce5a5c2b273fcbe32043c3d87a4dec1013effebc8dfc92b12e516d497093fe6277ce0a702e2caecabae7c9720db260ccfede9f68b6b5954f83d7a0e66afecb9cb60a4565424eb8317d096f70478185d1f40aaa155bf8cf92cd4b8236c02de4a466f2d78412b2a1fb7e267de895c35d0129553d73604acf6482eeaf0711592f53ca1213038d4f12667de3b82bf611895c1c3b8337a2fa6db0c244d6e877c2328b8c1e549c2c68ae65b4ed20f91231517f16107238c3d73f27b8100d03def9394f3d5286daac2c3cab3b78f223111faf08e1941861e6d46666be23f65f2aafecb4f99016e5383abb45ece2c54cc843d28e0d5a82fe533e569f582ff5e2521e6be93510247c0bbfc49f8c49af278d9cda8be208f757a64f464ea4ebe2f0ad6b740dcff761a391020ca58d6562d8326d99180a5fd1565b7c9d6d875b65bc6cf357699b5e9a9a7348133818d24e781465eeeca22a30bae7c591fdcde3cfc7ba9c68e9c2601b57a305cf7b68d0a74a637c115ddf62a74dc6dfa7df901943136ed0a5f41fbd21179a80ff664b7311af4e46e2a65d17ddc38c214cf2f5f7ef7f50878be923f3dc307cae96288147715d1908c53b7f5dad4c8bab96a2a5aaa2e65c625f210922330f0dd5365ae4a7d81c781b1ae91e8e95b8e432b87fce50574c7459f2dbf38e678ce596fb547fddceffd4d2244be0fe456bf010f704d069a160130de4c6610d7541a4092e864135350603dc7906467324a9f17161f1ff90f70c782207d1ffad2fa2e572457384134355561b8e73675e6ad6b5ae583d9e58e9c051b551b94403f161ec25ba5d87e888672c6d2320317960238c8dc448ca6441fe0424da186f8b3b29611cf5f94329438b01babc0c7eb9b09ee839009b7c819fe27f1318c41896960935f253eb305205b55492c3792a261fec20e4176cbaa81e0d1fee11ccaa6106213b65d84b0cfdf0b4d48d117830760794743a0a5c052dd4546d19654138116a9a8a061a8cfde981ca12a388e27a511459c4240d2a65ae645657dc8532a447322dc82eb6c25eeb7abb5fb2bd908e6f9962d5aa721b0aad49fd201e1e412172e34a90104bcc26bcf3a3b9e54180b37061289ea36403684e27bc3abc5f8787cfe74bd4de262f22ebce6629e7c78b9b7a90040230cb815f3dc75370d7ef3c1d107846909c0911c8b9c6a00c24033ce64c3eab149a867354f72f7c231fb5693125205eb3493e227c357301eadfad40442b2aa69d6432b79af2e17de9211a0f2fd26220de0ea251342c602b4340625eef01d2a790c26917add42c3588922c701ea5649b54fca382c2998aa371f5e588a50318c4632dc0a11b3c45e02537f04deacafc1fc31984a44ffee05c0c589ed5bbb541518bab8eaa51397cfbf73d00a21844374f85507279ce8a3844b20fc4634f14ee16396977af37e73928f939bfef8153f0dc60864d21a18fa20a6462ce77d4960de934cde6b572e73b03e2dd24fb568b7d79a3e09ee76eeec234c0852ac2ced9b82331e3085547f9cc13c3212f8f2da47d5bd91b6eeccf74e4ddc37917fd5fc2651f97f0c37d00073080dc6154bddcfc50fe8ce82879ed150e41b3d76da4fdab25136a60bf45505a6df65ae01803df5356bad66f5b06425b6dd8d4abed2d8ba0011b309a71ff5497f6bd0787a5ccf8e18758e6fcc0f89d675cc39724a0f93fe30f52aa55dfcd04278eccc1982a001e3d8c72ffea7accfde51b290a6d7b414e331051267d98c6648c1fab596b61dfab8989910b8ed5b9b1e139d134c14a4f95729803dda3cc6dcd4662990bba1412052ec86b3ebe8e4a007bfc41cc518442e80606b59e2bb1b059a08d37d972c21068c79aa794774db0edcc45cb631afb212f7bc816366ee6b986ea223f1fb012d2ae58f90e72952e9ba92050356c0cbd0944bf7de19fea2cbece3389db235b188b646f354e558719a979cb2ceff0df1a277ab9a23aea71b991703b4f1126433e2dcca4a94c35ce65356ac67ba2550f4102360cb82dd6abfe9d4fc7bdaf0e3a0f0c2221daf7ff8a75b6a8f6829139fe7d40dd73ff23db80e71cf0bdde2c551e7524443baefea936605edd426c1be1369226d862fbae434552bb66828f2607ffb87e355550ce946a8fdb3e40779827685e48bdef2b1714cb3f49884b7c7bad2ab505e79c90cd9207216bdf9da6873788df8d93c403b211de9da2360b6ca0977d3a1be8e2e5d8d4fd507d86e16d1b2d90e390ac3eaf003c84abd5f2be664202bd7b8baab005f358cc9b777339526a2e1527158f5cdd1695c2390b871d0de98cf350932c3f6df7477b89044c259c1078f4ade107d501e1faadae49189797e0237eadefe96b166565681346d2f88b67f01365db8c538523374ef3daa4e3ecd3c49064ad87a7c3d8c27b4bf1318fe4d5febcf2702ebc67c580e2aeded4a38298748113588cee8cb65d64b91d8e2a8a0c45eeeacf3cb8c6f82b9e768805182b50abcfd2c84e8a5a37492392e64a6c9e91779b2cea9c72d47550e1b57778d4c2d960b33d40c9dc579f8a79d5855476ac8aa481697916037a82ecd9d594485b4edd9e1f121b9533713060de8babca745e375fe128e9e0b0d9ee6033c6c6e3c959450cfbd917a7754caedea098f78f79c178f2a747bb7a763fba2ec2466f656dd18cea409149092a18161aab94103132431e73a01913eb34d6a51ff9bb5e418caf2821c6a5ed1049401fd2aa67c781d020093d53bab8e5fc3a8b16eca8ac1507521f0837c87ee251ca961d3208a1ff8cf2992a2b6f87023489ebead283da6e6bf232b6fbbde4377735989ce97f46250aea7ecbced211d89b3363a17f386b19003470a6271504fe51895d6451ce47c04958493448cd0eb523cb59c1870dcb75f8572d50ae32cce5ce7303e76b50b747cbf018411f4ee205a72d0131f5c71e6ce9ed735caeb82d2b40a0884721f7e4b8bbda9c316ef473a0d5fec6cd580b20e72a49d9d4444d6cef61f75a56f7ee94a5ba830ed4dd4100bc2932129afe2b23be2a8d84072bf86f6b061e87dbde51ef5157cdb5d4960f48490ef2e6aadd492e677d66ccf0764e86ae0fb945a19c3916ae16446cf9101315fce55b973e275d7c8998da20e3e4fad7c1e77e5810edbed542b275046935b900b3a77a307ecfb08eec6f1f7d241fc33525b325597a07ac3caa4573e22d556ddb06caf702d2d5d9e9b644bc70751c0188f84eae1c30e9f74b6237c053cf585fdf7086c5b6c83e90e113e01f6775b46eb773d0ef8ebdcce0ee060661d6c68d0b9f45e62ab3218fbc247e01a7f32aced2ea373db6d7be4f2adec2bca07d34aac706f68135ca4bc8bccdf9bf4671145aed8d7afeb308581068b6e91dba24db5bbee07b2f0d701c49659c54b959528f23ec69518276fe030d8408b2f51c5b68cb7a5613c7d1029a671d41e2595ba3216878bc31fccc24acc6773a0a287eab332eeedb8e634a80485a93ef6f76926c0ec5c8dc1466bfa5d3d677a0233d8cd608c80a86c5c5ae39b8c9ce154af9afcf7b773f9bb9728b9c4a4abc5cdaf123492c061069be46ee2581f8c072d096bfb739051f75cda8aebf44185dd2f9a2e5b7b3484c51fffb0c38ce93cdcc50523ee7aa2420a6dbda81e6e3ed9bf1e91c3616928fe56ca02bb717a4386167220df629cf285846f673a99f4effc6390327688fa37d9fd5677f5246564253817a84f4ec18de09a7e6fa8d3777e33fdcc6556b16690908851751aaeca7442f21e768fe967ef248aa9dc742328bf93cc38ddaf89b6d57ff27b46758180e52ae7e01ada7f493b67efb1defb0db87176474df73a48541676df15ab55aadd839e78d68f4e825fdd18775cae9ba0a91465ab6d2bebc2305c92f2d8db53e2dc9a9d89fff633f770c9971061a623aad58911ac061cef156be9a8c1f21a3a81829d9b4fe2a2c6c7adc4cb8eec6477d8a31af6287c8d740216c08a4561c164a6c4890c0b4a7daf5f6569753d493bcb4602204c202fca1c3f09f296e64944b875a54bc9801ce2145541ca2dd5ba5f6614e1bfeed717ee6f025d89eb4df081921a48499150b79f57c945a30cb9ec74df16f9600508f97f4c1ded41aae187e29bb0ecbe2bc68fa0ba9474535b1b07747579f68dac4f90f19aca60b54c04a7bd2f8ab154b7389cb9022d6e2b90789b8f17aa8fa8ee0ee1af726d737fee913a0cc38a0dbf1d65a45caf7d00a730f21895c191c38ff0b9d711dd8883c9c025e32f7770a1f04bc7f88b405e6114da655d73ed82dc42792e7583ff1d43f76de33cdb741949903742eedf620cf5e656eb16cc02bf304713b4585b65eeaef6d576c202f7d49d29235e7893348094f7db4a2534853743a39608c63debe0c682031f216a2c36d59d833e0b26caddb2e580ea9db3d61ee0e3795cad05f74b7d999b13d5dbbe480e7fc405637c6acc3035b54d8d27ca0026fe45d29142143df81131a4582ebf0b74a7744820792896c80eb6827117486dc3f427eb38ede0b28ff587194771017da904f4848edb67d1d4cfe9f916bfe99440fb274a3d3fa3f2df9930fd629dc41bee52fd56f7a029b1debb777528e291c8143a244cd67b3cd492f93cda69f206fce9a5b27ce2469e6dd274aa5c72331ca343bd6a5fd6209b74bf6ac9b835f6da91fe6e228c43ca862f15c758c9dc788902068a60ce6452d230b01d4cb6facd8d131c305d5f8bf4180a42978548f89065284ef52051c680bad2f40f9ca61e8ee0cbc0d159959a82153d0335a29ee9ac05c3079b68daeb11362427f83490e7cca0680202bbe238c21993f5d2c7256a2d65be14b63799cd5acfcfb6a26f9cbb79964be5b02428cddffe990dd09cfe5485b442a58a765ec7153dbefd90164db2847658c26bcbcb767899858cd97c1ab93a7698d830443ded8bc40e0f7843b718ffbe8d9ad00c668c0cb109620100e11c39845e6f615792a92331c2cd82595061e31cc0f60ebc6e03a5cad817ef34041e3f375feb6bb751c0f020a90a47b1e069d7f146640f539565874305b2d5ce07246717f85b03b807c6fade7a8aa05b98eb8981aa14768ebb8f23483769c5b4f5c35c965ffdca72aa620bdad157a9856584be89cd31311aec69518b77a4867661844f21bbfa820ee84160d4c5910e7bfe60b01c80214857f3bac5b1b7908f795dcb4282f801385c6b2f88cf46b2ad4d222914d926f2b29ca79374c6182aae69a173655f81dc76c16dcbc6290768fce75ae7a6962dc44858944dbcde65a47812ebd33019b078fb12e225e280e4be163e7454843ccb02f542eb84268836e6c6c47c5427dc8f34785b65b7903dad92d57890e41419f327c596fa01e219c31830254170c1c8e9c993496eb9a5a87ee71c1e4e0ad0618f3765587970194877e105140d02079e9444519fe4a3989f7aa41d2a03774a404b085d1fd584d823bfbd44dcf93961af85a4831107afceb1c909e062a21b3fe235b8c2dda9820a3368ce3a64094221e9572f28084f5ee5c36275a2ffc3b9a03e0db1576400c1f371fea6e68c771f1f9666562ef7f7b6331b6f82bea87d81e49731e02fcc7fd00961a8a0b971bb3f563fa8ca3671f5b5fc9027a0d5ad5cf7e208c1b6a92d9b75476db374d9205be9525348d80b099ebde306351518b2609c280d571aa1c8602d52e28195e60e7603dd12bc3fa69ff45e4a12e61ac4c670afa5e83cf473ccc292b93f7de85d75a685b066032a32fa5cbe2921efbd09a177c5f61f17fbf7368b6e02f871c26a6f09824dfa45361ee0d056dfb45cb5c6bc783e50543aa0987693ac0572efd7ef02a50bcbe774489333d5e5e80ddc732d269f69f773d7ff4b58589c97abd5ee7f1ebbf9f3580253af57d9c9ea8239937be3c025573e5b917cde9c0f81bb5ef8f19027313d59cf04a59073ed6a4c5a28495d41daa3778be9cd791e0ee356ed47f717db04c2132e6c33b3cc50b388a843c0b9ab4f4af2d63f83b80a0aa17de66e4e790873e251353a95efe6098863299e326a916ff1bdc1bb546bc83e8e27267b7dd12f87198efd0afd2b06b901d77d2f826fadc648b591119c58deb2a6db628541ef3c7764b3afcef29720a5cfed8a674856333185b13a356aff8ea3cf609711dcad2161b461e62bedb19fb904d2b5516ce7756dd05ce16fccd13edf3bc36e5c2f9255e4ab015ae9d12bd38e4fbf089dee9144cfcecfc108cbc796cfaf9d1c4a5b428d821555b62da4107b064bb9ea50104cb16e52e0c34a9a8a8f708a994f9e8db2379ee3f64214d660d5f158c8530c2bbfce81679c9b209217759e519f5fef91bd5ddfaff05d06077fde4dd7eda953888f5a4b9e33fdc14216b89079e7649a047461369b2676669e85edc9742df8d8e89a4976694a554b0254375d529c2d6e97c5551af0768c0565a29dadfb07dd17d30b2f8457cf604b61f10fb804cb0795b8499a41663cb83f4ebf347524c80932bd1889a925a4778e2b0289190ffdb2ca769b5265fc8069cdb09bceb426e9382199bd5365c92f6990600f98dae6a9b6c44a3b06e931dddf7fe8a389a47310787bc5ded904e1751d2d96db945889480ef721dc85349b9a2b0dae772613f92e2644681d037f232a979f5a7725cfbdd998e90252ef8c550a0c8fe277dd2c93b8dd35add60a424a31df52fb50e278e198fc8d73f7c426ab1b0ff0be93b78a316ef6142166a1ec3f02c6b409764d625721651b4d85ede0c969c4adfa8c06cac84d56197b3181e9b07d22688adfac376a45122a80c5d99948578a669ea7adf18ece1645023d05ea28bcd54b6f52a5ebd3ac9c5a6f81c8ea4d1c201e0544a7b841c176ccc2c04d06c0839ee2f299aa1664e1c52678081af0f5fd9651ab008062e2e99935286be81bc1214a918f8b901dd287550c9bf50d23e0af95eab16de1aac5bbdc9064aff388869c2e3df5bbc1ca0f36469fd3fa8d16066a5d5f129d9e062b2a1f8b2321348f5dc8dd953359aeb3369166f91c61f8abbdfef9bc343c1ddcb6342d8cffee6b75988b9abebd43300a33c73a1b0bf21f7f53413ef444a6d20ac4ea06a447c80fd7db5b8e9d885ace4a50028c41720142c87e8f3b7822d07df8393ceb8356210f64c0e9b8527524123eb7ce3c6352f7fc9609b9f73fe5fa4c89fcecd4c76183483902ecf8e3291a064224bb6dcb359b3aeb551a7a29b91993c429bd00c9941df8baba888a2e1defd88ab8d003ac20df3bfb3ee7e43f210f91db40fbca1bac9a3e36139eb14d7c177315be9420c60743af67089562f460bb2cc6a9b342070520387083d59abc9a0e08aab7737285133d4c9faef8a134d120b65747900f568f390ad5acb1a4aa0275213772567c7cdf8c6b03c605013e98afa30b2c9c111d1e6d15fd9fe3f1f9ca4e7cd77a5c0acf880f7eb71453a9cd8a6a9c6f9f0d8081cbdb850c5ff3db54f6d9d1a0e27f20224f126ac3a4c7da21f8cb74dcf22169bb068b7ba0e2470246309d3acba043ed8c19245d13a81dd8e4cf6e56d238d25f922e4ce3ce3b209ae28db6baa0f3ac2fa0a5c3c396e261393f358f4d9347dc6d8125938dc4ba57bfcc372ed29921c600c4642b17f8e9bdefa002ad17ceb23a89b769cf9d7146e1a9e1bf941602c5a922ed14d16b8dc4eaf0a627e269d0af62c84709fa276735555b7c10f475390aee31248fccf950f83ffd1a25784e8a77d093912814f505982a773213519572d8be321541c2f8f5ab7ea98f4c5e0366ed32bed97d7681de3e8bb8fc202ab2b98750baea49bdd9b8bc19d82c1ad8bfd371ef79584381c727e6d78e290f1f3cff54e693acf1e821260aa075d3f89aaaffa209caae2000eb72799deee07faa375ebe04dd93786ef0d86d4026526b1355565626c194b0331aaf5f4cd0d05949e1aad560578372c6ce51e4453276cf45fb6b48620034cfe03ebf919bfc029247abc65c3e11355462c9fa5396a35fe95199a19db3a4fad3108bc83e38775a4eb41129906ea914d8ccd3eb1bcb3feb7fed11ca38a58b3be7a9d5e9f7d6630386b81442f754119ec32e479ced68070d0c783ce173c88c6d95615cd02a0ef6a74fada56cfe338ab59a32a052071eb1f6f10b6dfd920c0d3ce7759fd9c26df0329e808118ff2a256cf311c05972835823f4bba60669edad0284f0fc8ce81ed8bf4f217df64d99780ab2aacd97f385843e23110afbd10d7f7655f9d4c58bd60b71134efbd3d329c8fecc486a577615aa44970b6a6086eaeed07c51c35773462ed75d02afb83f50e8625172101cf3d2e1973c055d4f8bc1bc6b7b084969bef0ae9c6e73a818d07fa2a030827f28af3046ed8baf3932a0f44cd01925427d209cf02b1a78e8eae5bc9c1d6f2e93f3f9d456099e80aaa58af5955a5f6cca4241f1bd699dc2ab805c9e959ed26684bae26527b3b4be617397005a379318ab789216bc339fa777136563d3eaa5d27e399c96ba1bb34c52c32c43a50ad5ca4929c65f0eb7d0715f99ef6adbd9d2e61007cae6ede11746d43497e91792dab0d3477745e6a0f3467b67081357ccfaa98d4dc75a691998f79307b275ebfa02889ee0748655583d081f3c411f55f8f0120c75aaf568c65734bf528b0331c8e0deeb5414a0010651f6411d3676a19e178d19b6286ee583b7b653b5c334c43db87d314c8dd94f8fd2efecf5962436e9e7f14ee12769ca79228fb4dbafdfd15917d3302f2fa9419a09fc81c5a20013f2c411b471054ac529b8fcd4878da73f385d7161946b82b315db58bfbab54836c6c52c56839ea9c7eacd3d158576e7bcf782df347a43b929cee019ebe676d1df8c2a033fe4005f9c938ae7a9358d3e403204a9ce7c05b52f227792f9a572824764da4167fe59c5a75b8a451a1a8c45191825371765883f9982d77a98fe7ab8cc17e03f148d0bcccc0bbf50d1d868e26f8702026aaf44e44f1eefe89773f80f9e77ecff26b19298d6ff95512c1db50095430d13a0a34ce2572e3084cf5d1987a2a5df3ffcec4cfcd3ba3d05071696b746cc07736312a32293ff25ca2026b4a8f399a62932b4fdd141fe07c48f8ecb9fed696fe406308918fa2bcf2b355bc03ae78609a33ce6d396884cfac0a631acb7505471619574c2ef8bea9d914264f9ea5dd3d81bff25bf79c85ffddfea0771cbdf36638ac6e20d99b81b806746961de4e896f72dce789f954374ca3907e1fe79416dcb5911492b4cb26e41d06aafd007903cb8f7ec23ef221d5c195e7cbad36318a86f24af7946e452964a09a6d7cc2ee4b992c540a19a2a340f069e5afb8fef62ebdc53b18222cb659673f4e2c90094c446bc81d68efa6f938390abea50db466d2c8b746757cdad1fb503790d80439df515c5b1415ba99181f7504f22c40db8c344d0318404b5339955cb34795345a625ae940db2ad4d5383dfb782095499ab01843f274c6d34253bfdd7eda21177bbf35008e6931f21d9e470483a4ec6dda51fce0c0507e8a1b8138688cfea00422cf224306a8a8f4674731330eeda2623834450106620cb6dd44fe71e792a995a3f8c493335b704547934707b899f31829b6f039d47e489dc03dc0e03c790338db99ad272aefe8f98d23d6ab12cc785f089d9d941d85a5c545be25b00d13ec32d126a903998b5c0a33b412936cab579ba3cf3762932bf71664b7183c234eb4571c3db3e25d7369d86e1760f7b289cc15ea11e7ce7ee64936ea3c7032e294e05d61e4bd8290bb74031307c04e460f48ae256045d470610377f1494455c5b29753ec8910defebb669f4e84b82eb3b4cab71233fd2874353b502efa36c4b3b18a10c1fd5fcdba9e47af0d6d6523100403c0cba737a80b5e7a3e54ff1ccb6c491632a79b0b860824df71e5fccccc49651ebacf0403a98f0f7d2fb8834c2d7a4be0c1cb401db8152b2e0cad81f16539df524a9ccb953aab468b2e41df765b04505faa28571547acbfad87c786f787a60ac4ab15841fd71bc5558dc454d0a19289b9fb37d200052fa2816c75197f74967fd3ddae07a01163e96a417e760827318156dc960fd4bddca4cadb184ccebd196ece2a825237702957ecbaf199a8a3308d22af9213a91ca8be2550ac1f84745a22e83a7b4445e880b247eb480bb0513e32feb03e7f96c056cd1848d1dfc9ff6648a7b5f4805be8f368d654791dc56ab2c6980c70bddb77e0eda8442b3e0b72e908b62e8e4b178561a385f2a59664c6473cfeb060712852eed351b9679a79366fe02e8fa6a486b80ed4ba97199e5b28fa1f6c98c7a3fd542e42d36ca73b131c2a524dac4aae8751b7d5012dc38f58c1707e2361ed1146a74290a1270b01b7f132c1e07409cd5055ee9c51b74cdc4e79c9d50281587ec1f2726007bef557477689b8fb7fba162be9ce704e3513360b4a3a4f799e5e6809480448bf291b1ed8721e90fa3d22fa09d6122f3d4153234afc45c736d904bdea9db645f388b90654f48bb3ca30ada2c3d0a18a515cb4710c3a62f01b499e88912c63c904fc7c4398d0a54f9b31fbd21b0dcd6bd7ee3c54bda5e5595b6d50e75a79b3c37934d420de218e01d4d5a1c948644ecadd51f0588340bdd8cfe423b1537a1c6389a6094d8983a5743d7e68b3c985456d46bcb2806cdddfe62a478729068c4e23ea189379c30e43fa6bc583bf7601dfa8fa179142b4d12343ddd7e77a87578506e460d1a439b81dd97f580d8989018c1af8311b825dda12c55f01045086fd6a42ff0113f0ae0ea45b4ce9fd76cd4d026948161426a325ee314b992e63de8818bbf2317b8679fa7bb10fe13355acedb26b73b63bc3a301d5741cefe6134a9eddb350d90dff987fc7ce1cdae180bb822da69a30caa27ec9ae5bd76d625aa5b22a6814429706241bb7d955907509be4b8ad640fee081e3b32cee33ad326bcb47be7d2e0904ebd07c7a0524a517aa951743d4bdf06521fe3893ada9e6d273354450b10c78546c3fd93d38235f74379cc2251606265dcf95182b9832c67e3ef3d8a9216218d5f52a79a8bc54890cf0e225e1ced9d4c956174d2235decd603aa48142d9d0481fc9b89780dd549b857cbaea69c4f4b403f9beb39de2d4aea366341eefe7d2f209a8dd27c20ba7050af5a69e4c437e807a91cb762033d1e3561fd0990305e2715dd8334494ab5307b7b07d0fcdf73882936a99f0ed7b61fc170a760d24f4bd45abe749b239fcc13cce11b30e0abebb2850bfcc4e99492e861ce7e04ce36ccdb72a652274bbf2f68f300aa5e26490c41c5a4a507d16ea8a7889b0575508b2a3d741dc85acc888f387f72edfede13a79c01439c2ee3987e60e1f71f619dedc3ccdfb88bec30a0803f96918db2a979d2a7c414b36f59eb2d096f15babc247ce8357e9cd134cbbf9bac460d4a7ba2722ab98560475b439c7517f78c8a2172a98ab9d88c97c8250458e4a8b027f74ede33221e3b95acb3375bc1b7f13658c2c754103a5baa84ec81723bf7a34db31f175d47a8dbc0b6c8170e9244823650ca9b3cbc936edbc9dc59daa61d58dc962cfc05dba012d0991b5557e01f42d855efa86c06316cc71a73853cad802e8100e9ea8d835258462f67413503524d589c701657b6cd1a6f9e259060e767ed39664effeaae03e335b29dca6eeee5f1eeb6ad90e2a9c61398579c7d79e6949bef9e4119d5fad78b4cd346b59b36965f81d0b135ff2c2c9d6b07c02c30f9fbf053f4a82d37e6e91a3dc1825ee5b4b0b7e9eb8f8e3e05ed3ff8a39133f37d5138336a454848db62002e3cb06a5aa22347d062419a06065eb85113d61697944f24fcd7373a43599b1ddee66deda42b8d3467e98666b7f86cd46e22dcad11b4afe0cd4fff11f54e0128ba1c37ac4a11c3b3ec3120aad1b87b4976ff6f79747959ad7f6f5fa5b34ede31c4a99170d3bc5d82133b66a951d51ec29cbe7b8ae92784a0f2bc85b1276858cc7aa08eee8a81fd9a59f105da56b03dba98652b2943ecaadec03ad450c5f4a9f56e0ea975bd41637fac4b34b4fcc9ec9d761abbdecb7a1f5c9077cf588ac9e2b60380a08e3b998c52a67cf9cdb5b1c9751ad558e10e3ac444807988f9158d00f886b1750dc1230a0c54e25227f2d55103b7b88c7521d419744adf73df59aa12df27d248a26b45c4dcee20ca38e4a08afba9f67db5a26e1cef2226872dbe4939914916ff198b8c4de405e6e8b38d5b6ab3eae69b53b5f893f56860ae20b47aade5e138c715da94595985df48b568b147c6a7788389c305d93a5ddf4e9aa3ffff1cd1095b250b8cdaed3e12317c22f5a1b6187a85dfdb8da64d2d6fc69f295b28aaa4c13fc3a4232eb2724e7aac2773218a07d1578ed0735a73a76f5551906e3a86507f56ee77117077f935d30a572295545856d952e74be954b61655c39cc04f204f9d5348bb20fed55b883d6507d1984dfd4b13f5520305a860e1590499ed0aa4aafc756ebc669e9eb229ae31d2b1645dec0ece23688e184022b986057af76e244a9944e37b223981dc101c42c6f4eeae532770bb16b85780ff8243ad01bdcd8c55d0ce0e231c0977363b243a362b512d0ae0ecada26af79be0b7a059c4d84ffbb7a1f53e1c3c95b2229285f08db7a6c0f9f93d21bf87e71316cf4646162254cef9524793acd601ce03ac88d34d98e1094bf49b8c7eea051883b45172b3a654bf28c5b85a608f554f87a5fd5ddc8209855fcdadd16c22c7d292fce4a8d65e6629c4b62eeb7d3d35e10dbfb2529cff6edc0d2cc2184a96c3cf54b4c098b074d483b4fa469567127e11f581e9d693b3e3f93daffe0f40c9b8cec2727d7d3a1f51d543f318fcf4472359d52b84e4f6dbf64e7f624ed7fed0fe4abd6e2a31f9a9ea84486a359eb21582b60bb7cf99a4096ac9dea3fdaea9917ca60793b2419fb83d7b8f42a9da97b2674c68f15f81989cab458dca943a7519d5f90a627b478e40760e5d00ecf4cf0ca72d73c45d9e040965a76641773b3beb8aa482396deb1e7bbfd3990319d6ea3abc7ecb0cf15968be408c5b5a2582c5b9613e43065b486e5089a2e33ece3e0c8be39f0673b19ab511ff8630c52b5d38c0dfe5af84432238579fc2d6ddcb398c4b1016e21b81e1891da12392754a84bc95298f6f1d7bf6d549bae0fd175c1f09f944cbf29268d45d92713f980d4978b0b09b5637b09d6aa8769aecf41eccfc0987c878507fc82412f498ca083f4afc7447420c5e4870d1182ab8a775314a315a0a33c40727dbcc805945a5375dc2180d704ab801889cf4a88478688ba180e4118a663e2333f64624c97753a8bb21c98a268b772f6771fbd772f9523e4b74053ec85b398f604d399b2a5ff862ed0c2651c2855be28d87261d601ee5601224ab4e23523657ee54f16f71f14818c73dedbc49a220c821bd29510d3c51aeb9c923bb1fe56f7f46e9489857bda9a516ad02ffdbb30bae085d425d7fa50e2cd58fba45ad113ad9575273622d6389f28c30cdac0004781e022013b42a690c9a8c7d6b675acb5dcb9201e20dc2d6ddda99dfdc54697c6585c5ce540f33050d12f87bc2c61694a993f67e10aee48d4747b8dae58e4df177558314d2ec26e300254c010b8c242af3d22bf6785079965cbda1a8af02b3494e4a5111ce2fed6d5cd06acadd13c62324b02c69a416d7f8d405f051699e00f8664d60511fdc46b3da8ba895c0c9cebef395e02adebf5bde298fcf597898c432a01f9c28386adabd170f2aeb7bd3cbf6e635bf661d60a92cc51065aac2acc677f6fa2d49a8345509bdc7b2a0df35f4cf80704ae4231bd4c3b1beba4344a4e6c7c754b761858fd64067e1f336085af2946e924e7f60bc2b8a288f1d6df77c693dca9e19b7195f8f4e61cf8d2d34506ceb9ca60c20a3b284aa680eb845a4f29d3aa3fe561413940a3d2032260fd0b7a65edfc4805837d9c5159e543405419c13c352f23c6a4f688eafc7e2c0657af730547f6de5150a69dfda79731735962bf73e84a8f383e38be99fc2fcf72b761c945955ae121e15774d5261b55d9ec814cdbe463ac3e2ce61f208992d653f0772a2dd9d444ec062ccabb3b17b1adc47afb6d19fd48732528895293d8860ef20a637ad4c09086fe930c39c6e0563878bb628f1b44094c014c438366bbdc3aa787600dd71937c9b4b5b773b295cc4999299a2b430e3c9219f41705f4d6708292ee18a0be351a079a6b5744242d3841d9a455c941bbc238ced75460cf3b1361b5243e5e1d7a3dcc47b86f2730138954ca90e03dab544eaf2b4804a41674a12c0d1044a50326f3c4d85e806f571fe5f62be912d7b9f6bb60c36631dfdfd818cf1457de62bd92e59158bcb5f12a60599dd4cfd8bb0db4cde6cbc903f1e8257e062e307da65de5556297c7113f20054fc626d552ef5a95a1be2c041262929717082363d99ebf64dcd11e90e7f5f1aad073d1dd5aecf02687cae2353526c02db1274ed6bb4998687533c1058895afd5895675d50beb06696a05b25f11cf0a58053665f3f6b4bf5f12124586570fa7b4ebf1a1e0f9518a5f3131af5b57a1b71b6fa77cd5c4eb93def02a1cbaa27197c229f44738b01494047c328a73f8de441605f3428bdec0a28522ef08fe08631fe66f0dfea94be8f54033f5fba52b4e493d7b1fab3b56083044108c4f55138e1235947679e90215ea4bf046e233e9b8a2c2097ba9036a13f855076d5cfaf38a7d0119ed6c2626703dfc7acc5dc2f43ff91ed1488894f54abb9cc8b3766e05c45a6a625cc3df79e7ede74675a5e35c978c9ecd56af7f6ca8efc89c7480c85e14b11c800535d2e7fd10bed39e50a3bb2c34f88f09017bea695098c93f67890c964007ba1587d8b358b697663181f5858e31a1e3acfb57ba50b4472cfc2813ee47c951e9712c0972b7392ce09bc33fadaf4bb7c9c89e33a0fb6202d164ba9dcd218324ea602fca3278d540a364eceb7327e83123c505f4068c6618ff6fc528e057ae2aaa77c0a849c5a44c362c8fd9b590fc812675c8d1c002355fc29e6635834ea783632300e565079eb3e2bb1bbcb1fb95c4905f0b9363e5ca2a100cd09167cda54c52e6afaf6669d223f0cdfff9f9c3cadfd591f847f553c93cafbed866c457e3530ff29fe9387031e3d4b31c4a1b01289a8f8ad8f33bb9de910fcffd5e4c88f474eebfaf137528658e302b3142039fd096ec48bfe7c8467f1698e4b474289ab344c55db7a82d9897f99c267c2a6effad95f2f6c88cb66b0e65d689ff5f6c565de730129a129f738aed1dcec59d0e204f6bc35aa668843bd96c68036bb58317a2d4a08793fbb26cde1e3d3c2aff40cf9a2053599b6e647c0dae048bcfc7bf81ae406280bce734959e1936e8687217c060af11651e88701270f0e66989d9062878be4be612e42c8d20acb769e805375b457ab979eabed71c8f5ca4c8923086f3ebffd76722b9e04b8a3a7032433d378250cf4a9eec613ccba484d59b49b22144a2a3c611fae7c25450fda478043b78e7bafc088c55e4c80d9afc7fca30a3215993f090bd38462bf3f260de569ac00aeac55f2c37c648ccd9a6fb81cbb54926e3e21c4b80eef7fb887655b20b24b2737e72a7599bac344acd951120ea27f66c95f1fb7989d56d3117805dc17c0a9645c518f8800b46d15acb85b2005971385c0e920600be8baa90558fcdacaaaabc8573720ffad2ea18ec78fd590747936d146abd17996995bc5cec52524ee3c9ce24f60b4bf605f750768b4692e25e23aac6891485687d4c6c3d1550e8da9c0820539a744c2a6c0c3542fc0d0dbb481e278ada5d5ab54ec37dd476c5c50981df73b39354b8dd18bbef965b1859099c766a0121c90a670fbef71ee0873bf74f36bffe46663fbf8d1bc8a491eccb1abc17e7f6506665c8b29420c8e4e28f4c38267215f2e5336957d170663e74bf8ddb8600418d8bb3847e3e9436c4815de4d75f4bb5210016edf832d79d010125af570aa93c9b8660e3e6f419a0c76e1c6af50b80837108e775d5e04b89543a740dac5aebfeb7e779211601838f000a2025a8586cf11c491548176e93865b75c3dd8e7b90aa09537f3c91847b811aba32673d18da1085f037d2d73054271837409dd7ea18c14ac6063c0ffb5bebdb8a3276c85ae801afccaf8e36ceba3495a372efe678baba84d4696bda382bced14a43e0d6abe9054e84546643fad096743fad9be0857c313cc52365d9a674a08c9dae61492ef497e68d2cfbbf8f708e7c13f97c0b2a7209fd785b820bebde0a3a623a90609d579f3b833729aab743644627ffe2d61ed74b3c8d7a084391807aeb8b1dc3441dfe040ff475a2aa7a0e061d3e96a4d1d052cf920ee848e844c28fe7eeb69cf92f511f026818e22887d443e4c682a54a4de41228abdcb18a83ef183d9f9bac11340d69466d3cdbb62e615d2d70a248a9985c1e2f50c229318a01107d512d02067e1c98ea7f4c8bffc806bca95c82bf71a9666bc1b0b6b7f4bba9235fd539013640abcbfe09f10e4bbf2cacf51114758007a5ea2a4ae5315d91dd87003a6350269c568c9ced006102dd12fb2291cfac5fa67aeb27be16c041006712a212887a412c63ee38e452428ffc8fa1ee07f1a6be667173a90d42d42c18e012ef6d3adc322a56b5c619143b16d513f255998611b1da2c5c17cfbbb13f318e1c1bb52b999b7366813ef70f331fd0912077e006dcc01632136f41a58639ea249710e8dbceedc4c286e4646c5df6c9668d271e576e375e9fcac3e9af31102fbdd2b0c14f9b5c7a8dc13f9ff93b6d5dc8ea3df52ebc07e2b08ed46b01430d24d456ac4267220e31e66d6963002ed092e81a0ebfa3fd564cc53132369a40ca94c5cb9f639fca5e8f1291104f24e6af3d7d0746bc330f025a9edf71837228f7cdc0d691ed16da9b7302a7a55ddf25d3057080c03985527fc3a9bd01744d2d0a5142e22805c79b41c3c2b770dc76763721f74a4767f8e31353e76340117c292a45ac7c1528f888c6766d405dcc85630175d3deeacbd1a5979daf9f6e2274ae3f094f61fe583cd769718bb429daec8fc1d5d2b831b7d0a7f5120bb1fc99997b07b5a7fc6643a1d01c5a61c108f7f6050b67965a9cacd422438d5fa2c6232a52fe5e0062208f66e17ef19737aea0fe08fe435294d1620a6ecf16d6ce21e457d4111e33bd85c59062e15302dd3febb951f42f37a8513a08936977d814e6120361581c4b82ed4332ed1c518a526f6ecc7e85a1141214c550262d98d8ec320f424a716233fb13e970e3a3ab7778b69d9ef7f88b4d51173892f91cad1127a2398b1299dab91526bd6e5af180b972b8918478b9e10caa6b2d80a04d2ffa6702e2c776d61630b9ae698f72a651636e7bfff80a9b24b6ea0142354f3af14c09267aaf3985454ed7dab85c09c14771de696949ef24a0d9627de1e93b47203a50665dde9f69d935caa3517ad382d57d9610ab32898a4f8f6fb7d93ef1f31d8dfb670fe5c267975beb1b31030462b9fa9d1f5540ee364a3f545773ee2b07890b36d01c6ee763cbbb1430ff6245cc2225dc5334fd2a733564a17a2c70d1ab414f648a713f3ff7b365141b72aef1740867db333cb80821f4a52293685e47e061ca28ff431f253a75759802f2890be07a7288be379da8d1e259fbbd76ba67cc1963605d6fe42becf7708255b8ae6cdb0ef0bca8d635a5f3168339e9828ac593a8af75f5a96e439c70e2d76a81d3c334ecb0bb2d66c4659599d8a8bb14771155e44cc8c3d88a37ae3b852d44e2594aa7332d1b574780d07773fc5634edcedc05b2d02dcfffe1877ba92496d4486bed3b5148ba1ae7c2f4e55039b652129cc1e938fd41e48b38c1c6487cb5e9a88a3c0fbdf17dade0b7759c23ef97e1cf0abe830cf9cf67d01ed5004200376bfa857354fdc353b4260f4e8ac9ae7e062fffae4e981fe8094a5398eac10bd5e5538f9d8378efa7aac207beaf318b9876b1946e3962e23c1e2a7c8d7696d318bbd780242131fb49da6049fbc6602cc66e26c6d062b29b8b984dbcf347aec7579aa587ff366d9d6f4aa7bd2edaf891103cfe835145bc8f77987706771946dcd24edf5d381e811db45e50a1e85952d9a771edf783ae75e1ead01090dc6d10b9f60df0e564d9ad2d61506a281011457a8cff820d4a6f9a5f4ecb9af6cda8fc404e07f8b4b0d089277afda72be34746384a9c364411e4427381fde711b00eefc20fbb6c8292e45a8ca94db2f02c1c63b4aa422ffb4f78d6e0e04e1f54c78e65a5402ac24865fea89d4876c3402846f0a9dfa3682ae96c4e4db266fdc1529dbbae19986d74087a6c574cdf002f3049745dbfa271ca529e0b909aa561c1138c8c2c3f702d1d2345"] ] }, "release": { @@ -2906,7 +2906,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b433103000000000000790000022ca5006a646174656b6579636170010102501237616b5301206de6b5daf002b433cd037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6a5a7334644457413458365334686e636532792f774e773755423558656752536951364147687542686b5773667253734f4162422f55534a4d356f304a6c70670a46645934424172673668754c4936547241414a7778426d5172774b5464624e663753626753656d5a5a2b7956614d4e30315468706c6c383038422b6d4b585a660a393475483571322f464f737536576452566c4173557859562f3763726b65684c6445472f437142536f56510a2d3e205832353531392030445650544e5956754b714745663148704733334f6b70515a7847336d36324d6b377272684e63634a33450a7533673379536a476a77314f6c77645350714253787569524362413733797650425869774f6644395a4b340a2d2d2d2043775a37772f326c31673250303843484b4358486f7758443832366252566d502b69727a67674f796574510a8dd9d22a9faf3f4068ad4445f5d0f9765445fd69e405adcb3626d2e95e737a1309f9d3d83cfca136360a114a5a90d38e396a79ed41ed4bee3342e8007127d23fa59ca3f4222727280fecfe1f911fa131ca16c6b7c77d57950b4b897280398288e31ad10851cd1dac7c707fa9cdf12dc101f4cdd1c841215fbe083787f5d8bdd95c26499c7bdba06167652d656e6372797074696f6e2e6f72672f76310a2d3e2058323535313920796e6e35436b6773584234436e4c596f5651756e6368336b514548494d656b77794256746135633961484d0a682b504243793361676d4f665544395143566c4b7972374e64316e37583379683864507239495046592b6b0a2d2d2d2054386343455175597149644c5a4a646f683971725844666155773071584576326775637a686a5651636d590a6718d05801e1575a2a3cff075275801c0d85741b0cc3ffd118f2f5d69056b39c2e9e4c539466e424592cd285d8de291b823a7fb0b04feed11f4d30da350995dc2567771714bfb8515533f87c03b107d24c18c2b6f38d450c8836dd6c8f7fa41631f8515c8027cc81cdaaebc1d5975f251c51d482202d67482aa69092ef8ad514e3df7eaac2a286691a94a54f5865ec9e235d45ee86d3e0cf02b8c322b43200bc69230e0410de92e1107298cddf74e3107c4b75e68397642a59581043dab6353ae22eaf319ac619663ff6d9d8557113b2047c7b862f58339d716e560c7035d4f4f8df5e3781bf638fe90470876b0da4ffe30a9f297f024935bf1ba6fa712e632068f57919bd33e8db651a2b3904470f20218f416a0aba24d3715d61d68ec6d45423a445d0bf6b8f4a338b0aa0ff653e0814eb53efb678394a446ef0ce500bcfd5e36b6337f9b3303a97bd39a025f1e3334b2506fd120c12c0a6938dbb42a3f32b29efa73ae4715cf59b0133292f3958d3bde54a8ed0188768185c61ed43ed211c224f8032670020b8a56c17bdf9addccae310351b49724f2a55dc848b695d36e0db7994b85d6e070d3bf368234a6d5e81471696273bd356c750c8c5c9ea4769f14b641e15fbf9857c210ea19562416757f0e2d84874c7f1af90fadd558659647afa7dedb501e6f3ffd59867ecb339726c40bc47d63781c6b8f9f8f59cc21f4eef484c95985441b134ac06c1ab917c8fa7d00e6a240bac174c3238ccf8d5cee7b1256703991eab3167a11217df927c7ae91d95d7c6fafbc6a161ffec8b974fa90eec708bda6c259f0f8663a0c2106ad57c2d14d460196e80ab7b1ba09c7e4b85b4acae4be6f18711adea5efd8c07d30b32ba7fa885101594223c24c0f9775c824736711d870f578a38a4a1966ffa7727ac85a4a9b79b2fba2a7b0eebde4f8dcf3d137c11425b99e5219b3c27e42f41b74a45e5513f0962c197df04cce3609eaea56aef48520adc71c8487ad6d4079cba57587d665a1b1275b6a680bc8d8ad5d186356f3e59d2c76cb84aec6feffb25187918a363177f942538ab3a3685299b5eb9713c54d79ed65a0d3cd757f1bdbb7919cf6f8705c98cea8a1adfe16a21a60977"] + [0, 0, "444b433103000000000000790000022ca5006a646174656b6579636170010102503da4aa192170d6e6a84caf8d1b89665d037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a71414146495a363752304d31334247625a35485768446c546248667149323138663438326b456f642b72774662374a4a726a76386451316f7757523469414e730a436334444f6968746534436731683344677975767047736b7858635a386f355a545a424a645854344c6c747a666f305a314c35497a61536972495430747834670a377569683857303434705154314758654b2f38504177314e6656496a466a707932686365646e3445474c6b0a2d3e2058323535313920465761307553486b537266324838797a41544f736b45312b3171727632755a6f305a7a4455704f583341340a585270756c654d786f6663674f4c517a577454564c474f557749706c7871474e694c7065565761784b46550a2d2d2d206f753352384d4833422f6552623062464c48743573384a4358652f797a7644764c504248594e6741536c630ab2af3e0498787e0042d9ecd84c6314a307f6b54c5f3b2164df337f22f95eb5e311c57380c9f4e5c0986fe43b90902941f7f0917188bd5e85159fe533ab1d6662952c71cef3386d3bf2b2c02614386e54f39c5ee0bb89848c3515429eb668c8eab67a1505ccf2062623a11e3df604f0c58b35ae863fc9490fab7279df0f56cf96ff67adac3b9f176167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392048313955767a4e626468585030334a6566444b456349457531587a6b3470715074396d6f323530447746550a6a2f485743524d51486a7930702f735a2f5761515543673252345957456e634d59645a32637054773141340a2d2d2d20685347596d726b64796834622f4b4d6d59554e5437483375514d416e516b3172414c392f6c7231656c706f0af8f2c01cdd27022dd2e6ae36bdf9fda9fd699bdf2ab781876da91d85d513f7d69a72b0a8917b89cd1444ef46a88c692b6418e02382f9a09e5150baef99d9960f56e1961a1128ff9e423003cbaa39cc7c0292ba60fa5bb862f0f9f6127a343f475fcfe1b9e6424b8f787e46209b720eaf5c1fa6e348727cfdff9de5a7a2c82e88150c4baacf8fe00a598783d6a350e72254aaee26e287c11b10a786505dcd589b043911aac83fb83df8cb2a0f58dbcb35828564640fea476ef439f5f847e9815a61c72771eba3aed183d3e27ec49ecfc6ea17368aabdea251fea219c7bd468749bed60b035b67cc0aebf671f6515fe9680d62ad2123e579dce11ced967c9c8556e0c0033d52b61058b10103a840355aaba430ea9c018d4208db41d2b035e827f54f24a4145f20a3fd52f5a9b663b910fa200f7a429b5d3cae5afa10adafec667fcfe96860f3ae5ba637a1bd7bdf14744cd6352852584d891c2f482d02c8f8dcb8e6d14302f358d162d36a93c7503165a9d91ee8e6806eefad51b394072fc26ce796bf57afbd0b06398f69091b902e8aae141df2cd46e781f9b81c544331a900b625abdd9c7a3983e042c7aec576bc3f9f28642b4547c58d4bed07d353c91a34c771246bb2797330152307cd590c0e13a4ad1b5d195ec9fb1b6a76012ed9e081be493bcf15435cb7c2176a0da3c26f0450198da73ad45d0f0f2c8b97da13942964243b0569ac3beb1c4596c37c7d1b3ac11ace0325b7d6b77e079302cd5ae3e8038728c1369b7db1966ab9a711dec119e06d795df34cb5d75cf57758c28ede3ce49b1d7f40e36f702f9cc947876431a8e6bd9b311c42b09654183877ab416039ef82daf09526acabc24672af47a5f812e6137848b833f9c38ca97d8aa5beca4501f4a188fefebc7fe34248f6ac61406dae2627ffc2b4c471e5128dfbc6d4c81b38cdf5e42094238ea1208d199b71af183cee62fae793f86ae6794092f1d69b485e91f2c0e47b8fabac94b606be59dba3faf9e2a1b0483c45b0a044e67ede0f039e90790ec593edded1d548002acc53bea7d4bb21667eb10dfc8bcc97aa5d69e382e4ffb23756be0e73c1c064a9a322a09b934f5b3f9d658a6d0d756470f8523519"] ] }, "release": { @@ -2925,7 +2925,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b43310300000000000079000001caa5006a646174656b65796361700101025019fd7a907463ab6c88964fea7bb58140037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6c686270465a61577851482b536131544a337a417a324a544f5641366f52322b4c71336c6572794844687375794c707153554570456c42764c304569316d61410a444e54627078624766717546445268527449647775755738513645624a4a3645597a764b50573553797265615146536f3534776550366d51684f734632596c4c0a65527a446b54767739752f595449763156764f3775784a397a6c464a737457793359764163494e684c67630a2d2d2d20726c3162377a4642644858477377584e2b3251573644446967506349795866334b6a53684d312f366f794d0a9bc7582bd805a3af8476496536ed9548d5edbc84148c46ce3a775bf0b32bcbcf237dd66ba2274aeda0a671d89a1012b225a673fdb0629afec9dc3851f7061d735340f885a612b62c92fe19fb2eec8443ef5338eda8f4f5f914d5aad5da2d2a0ad4da5185c630910ad53449896661b2e70236eb123c65976a26c2decc9ea28211e5f2725c595c0b6167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139204a6250636d696b702b47722f6c57706135765151626d5a2b426d767377754b617a796a6d673737756479670a36376e6e6732595a4563796e785a7972674a4d38684e375832484a6453672f306636444d697275387341450a2d3e20583235353139202b512b65616142747042534f545566325031534c35596e7462654357494769362b474276645030536e316f0a3166496a535433617550546f72542b6b4b75754a793366396f6c734c354532324b6a574c2f506b615835300a2d2d2d206a72547736554d6e3466534856644b625074684a64354c39544b526b78706b50456a70346631443641696b0a391731450a3a9b1697b308118c66f4e28692a109d87a7df208003fc8ca410defe419a1e063e4d78c07d1026d9d96fe0bd5011f3f3d56a1e1108576d5ea42826327bc6eb021a21d3f48a976fc61ca8e3e785e798c2a7608f90da420c20c1b453a669b415fd6d07a3b2c76ae6b475db0655661b72713ea5bd6299b0c47323a76a8ec42af23d83df02b01dcda5252f62bfa2190a49107a3608401a7cc4d31fcbd046644def07d72d48880a9ebdc7f65234f5d3d13f51c1e8609cfd2a3a413308ca122507e1b303593e1d28ca13f8da64ed3fa9089995594a0a93da9bd9eb167742cfb7aa7ef272c6b633f75a3fc0411c32db8acc53dbfbaa2fc058a6ff6a6eda43f39183dcf289b8852a76c4839b96b847fee5315d4b001bfaf06722c73acdcc0b3b2f6d4b4d401e278f86742fa6d3011da095194757a3664f3419810bea988c5c87adbcc309c8fd67a1b220fc7846c2c7ba54d81524929d969977fe65ff0a17128d5ea7221fca810615064f70191f2a02731e7268ca7d9bf8963a6880b4730567cc1111a9769393a492b3cce6c0f4428a07c86b3c50ffea5cb289fd773aba692620bbd1a79bf9e2cdaf51d74b211448a6a2eb3d3521f9e7bdb8371ed0ff226f622b0a5c979d56aabce44d8d297851b6ac6e16834e88bd28487d0ef97d8892c33f859c4ebad48d9bf2627678bcc3e093af92cf39e65b7947e7c853fd5941f6159099987e0ae0cece0c97b3067b0a64bcc28db9a22f358688ba4d8f5d625a538dc54f5f3d0a7adc022744e1a20a789674323078b28786cd53ecbfb03bb21418f5ca3bbd53ffd4fc0e6c0cb7655aa5a43f3f327a2ad9f80d5b19c279bc8f31fa1684927635adb62df928f6efcf0f0ef4863fd21b94cace41fff746144fae34f240a3e3806d9c4afd847649ba04bd7223c4ded6936d86bf892469644ceb0d3eab2d8081cc454b31b34a7f72da97e09ee3b42ec569a55aaff910ff4c6ea3f9b7f61e80e156ea47a8882b1bd9dcd790934665fdb402e8bdd47474e1ae7b7808768d99642d0b1cbfacda4c5d97b54f95df191f6f76115afd9ecae0379491f4b39618992ce857f60db18f97957e911575031f03b3cdf043607d4532d75d0df24ebf82f6357"] + [0, 0, "444b43310300000000000079000001caa5006a646174656b6579636170010102500a1312a462cba3721a98b38f2caebdd8037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a7365736c646d59457a61524b336d65586974706f466d416c6b7161797a47474e6450324f792b4c4476737a762b4748623256506d3838477175516a59535142710a424157696a4178633967443853342b59474965676b3565525745494b464f6968697a354b4e566341796258567756574d384e2f716e562f5a4344596b377150460a4466733736356e4f794b7930364733397770584c56537258704c4e4f38474d74554c783939767442786b4d0a2d2d2d2041526274565357727146304a426d31554b6846656133703157526b704478583278476b6b6f706549736d410a92885302bdf3e529de2f1be634a6fa200836efe45c7eb10107ffb6803d0205f6327d980ac5e40c5321862467a1c1c0498efa2fb48004c8a885baf7cabd99f8f9cbab470f5df64abaae8dcd53a2e6a8fbba4c043fa804dbb24b7b0b14480243a4ace428b5275eca1ff293aa96636f5db5e6c512b31f95b0b9ab0b9a6e6af8a7467b036a26e9565f6167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139204e535a4335474b4c374c6e65536f56594b4f4359444c4e7179683351724e496a4f677242504556683778590a3565494141624b4a70614741567379725578794a4c34535471484a446458565372615052754b31394a4b590a2d3e20583235353139206f4d706a4b4269656d5a47515379384172556b4e2f4a51374b536c6e2f70674749306375347a536f6b53380a504d354f654955615744734550454c49326b6131634231434c636766516f4461625535304f4d576d5243550a2d2d2d206f50777a33525a4f65397a444b6d537744434c62686a4e6d57315737545047784f3132544c7348316c75410a53a37e91cba8febd86e178a53036ce480d60732afdd8c0e99cbe80319c6e7549b00546155a2aab40300eec69003e29b19cfc1de910217ffccaa9e4861df3537a2f9182d61971bb9dc1f6d05b3a0144aebead6cd737971e912a92db37020390198b5c9777f151f6aab04790e9557e27f9e41693f4fe2d67ee1a45b000eac46449d0c6a2dee604a40f5c08343fff0dfd6fdd1c608ad4143d2ead3699471bbf02adb5a70275602e59f6b0853e204aacb1698c9ac74bc20a38f5e2e8bfa9f6149f354a3ea0db827e05c1a69ec69f910df9e48b16750368346692d0401b75c4d4fb0898e5fd6f8e630ddcf725b220476cff2404d335f2a60ac5fdfe7894463616cff08b0ec6a5c23aff660167ee3924df5c4f5156a8922f956e137d6436adc7c629576984901a367306da6569d6e4f9e24bb22f77655f97d0f755426b8511e93605120692229bce7a30d9d89a176347c515af4a1d774fd4fb226a73480e86a29ea6eba21b01f504ba78787c653edf7fb5c5b570524786c1498a5219cfd40f938a733362dee1ea11498f8877113c900fbf8355e83c862e993e51be9dcc26973ef56d11338b50ef247a37942513b2ae818db3c831cadf0ae6727270f194cdbf7a70a9cd002e45c48149ca3a73bae79c5c48e14a4398faa74bfbefd2ef6c9f9b37ef2bc0f8170534700727d6051c0f49118dfb6aa9e1ccbe075149607eee81d3fffd18ca5982b78f3997e9548a7707cb16bcf180234236b588a35abaab2331612a75417d4be4ab4bb4f64f150fae9773e1c7a715629f7457344ec064c2cc1dbaed75abefd8f888b9af52ebe506b6457d299064f164429525942f983a49a6d6282ac40cfe70e7010256e84a88e107922d4bcc8f08d9502b40936f6f6ec1efe7ed8a28d6ec3651fba404bf467af79e2fcb44aa4f52f7f0e3926149559d199c4672e16b74ea0f791d4a2914b19e53e573d3188c9e40a59f77bdf493b4e8355e6b11383da08458cae5bc3cdfaf857332e3e2eab4654d7c27414e6fc04811002b435a5464b3a8ec7aad42c02084a76194d990286c75e3fa0db45afd4a919bb98f4a76f4b0f462ec33f06037006741683413f10f61e43c443ee5daf9b80683efb51d0c4448e42c"] ] }, "release": { @@ -2944,7 +2944,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b433103000000000000790000083ea5006a646174656b657963617001010250597a8cea358b43fbfc6dff150a1e0054037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004016167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a7379336e7267336b567a6a373930335145756c4d2b725478764b7757574b7450507231625a394268762b5a796c426d6a6a6b44716276586d56534833545847530a41644c653542453454514a3646327055666c577a317a32655652706978317832444f6a774a7666654d426262396a6332554d6d4473366a465474304156516d640a4565356c46694d32356a495a324d514534753836707a4f5a2f4347314b5066683856776b7a4378363936770a2d2d2d206e616336384759747975727a59504c785559356c626a5563754348695564715132305639305441737a62450aa46a9e5bd151ad8cff1c63e366d8323ac55bd20eeac3f79c36a805a59b91c8c253b3c5ac5f73a84d2cabf9a09c791e1105303e23ffe0baa397a3262e0c018b494c15bf116c4d1731fe80d4baa54fe9bf64c9b43c127a2bd28e2db7e2a43764c9bf9f3085b124cce5be839394c1fb506db8725bbbc0cefc22aeaba65f00a417a67686fb33923b184c23e4b7b0b5950fd142f06e22f500786953e19b29215f8aba49a5eb313e2a8bb18a0cda8cbb811431ad7fcb686fb5817e945abe023590effad08d7739507b9ac6cc7c4391fa5cc99ad8ad25eea3a4fdaca0158b6f1591859b9ba6dd91df91bc51572350e515bdd318271ff7a7988783a9fb28c9b92625ef6d816abc0bb9f59fa205fa5a1eeff06f686148a06f6d847e05a6de003c0e77eb9b30f145b22bb287b2f2e05a90430fd96f99c2680a15df89792ac011110a8748d791b64940cb03f15fa72d0525114a54e9807aefe94600b0ac5802bb5c79bf093258a0a39750a06e709b7a1bb6e4550e2f0eb7c5775b9d8edde2cafc066cc3309f824d6f50e3f26ab9c3163f7646373999b6258c6337db282c8bc802cc9cce70273cd6b741f49fcb265bb68761ae0dcdb328b55e7c7ef6e44f63285d08ea684c523622fefc0f70bc71b9decb09b37daea40da8156a44bd0622ae1bfbf0942a40c80ec47e06d504ad7ab53049072c7cc8fd74d4e3098755010ef737f3498f2d2d6f400dd975254abf310f1c0bba4d910e60b6b8e46592d2064b42accc2ac3aa69008374aa34daa35e512fddb9163553030a792a2d548572e200efa558f262dc456ee9b0e05b5c5480548f6e079956096a2293821acb104c1096dde50d5d66ac93f01765bfcd34a4ddb4e5879ba522a402d40902b4406e6d728d9802faa53fc5116673c0b381a6fe3b03cf5dce51f79dd51acb942b437348ced3fb3c74fdda94d5a379fe5bf7caf77dc81ed260dda20598d668d1fb7ff6f86b6375ac33a1f67d4d2b665d7abd402932b5a8e135a4ef03be754f0ceca23c300c4452f2088a9913addf48dac85ed123b86db1d6c095a722a81ef9f29b6fcffda881f900f91f5ea124df9fb0c11a6229542ce1f439c04d80dc46709d84987d0410cf90a797df4fda51390b3a1487cbc8b559af14305f18964e0e8e7ac7750f75a42e2c097a743afb53f135964e3e83dee69acf89f078456988ba862b1eb0dd20d5e1ac07a3f6c8e026cb11f66fc3c6da5b9a4aaaa8401051b600e457be24a13e9ca91cab4db53831a1cbf88e313e4e9944718696e76865c48c8c56d3e15feebd502e946768cccbda0583dfffac0d7e5255e88abf1b9bfbacb1e99256ef69cfc523e1f4453a52f604bf68996963a5afed565591bc56a1b3e5dc36486e5ae8740f1aca4ed4f8f5d72d71a0de1b78b43e518d39a2af8119df3cf2de8000b31458153dc56e7cdbd7ddb9f0303eee0a377c7d9fae6c8bdc0b742d0e66028764896837658f32197c6e0fdf2098182db03c956c830782c85956505b5754941eb47b51103c56f24535a6bba3c646117f3854a51196f89685523a28980ebb5bac0afbf45d77a9f067215a279d80a6727dc689c602dce54d960f1c750828fb8176d2f7984d70b3fff3c439610775fd656a4652776e260206e4f6ba7f8d7adf4ef3788221983476f2fd21537b25add3276e696627779067592ec3d6e836dd6695a17bdfddee89793ce53a389d9e1308559a61120ec253ad45e4bab02d1e18d1c7271045c27d15feeaca0d57495d3f6551eab1186146ac9b742b62b24c4d6108098d2cabe4eda3092364a08e5a45478915ebd732ee9f810bdeac17370920ae7b03d91c5dac2cef4cacf94d85d05d013cf5af3554365ab07e5a4b706609e97e29bdeabb48de85c99ab2c4fe3ac4a753dede1c0d18efe001b2e29581e8763552105f5ad201d298490d35caf9e651f0e9d56b113c4e503072f11abe627da53b56a636cdc6392549130e38f30b9837adf416954b0294f948828bc511976626808dd50fb21be1358f00270ca4224f5e8cab5f9c814d22d96bff57841947aa67fdae1708362395706040c44b39ab85dce27495d2cc01808bc5b2b52f50c40bc7f6809fb0ef3bca7068b108a65aaa84697643f86da4f5cb1c408df4fb13f4fe4d18ab5d9332449e3e364719fe980b0ee35949d72fc846ed2da428f52ebaa809692a60403012aee8afe3cc4cec25630971a1c455bba47116e17a5d73c80dda1d48034a44f045fcdeea7149a5ee102f413031e2235a5ae6d9214fa85c533de6d87c21c5aa69106ba09e89e75b623d84eb5dada644def85fee80db90da0f90055ddfe13571b5733dcd0df3fa2874b5f966f7d96c716b14b9b1bac8be4731dfe7ca5cbddd134e8ce5157aca7dfdf00491b7f55c7757e952826b024e64b9128aa483b175e8e9f04552e70edd8c4ca4f5660b2daf18ab5300784ab1561f3a2739d56c971947ec131ea053c9b231c4837ba7537a48214c061a88d4429fd4b0e4c25f555a37fd9fee795cc6f4fc3f4dba11ff6167652d656e6372797074696f6e2e6f72672f76310a2d3e2058323535313920386934327143684235567571425a583136765839417148497074385a634f474a664b6173444d546a72674d0a3749446379594e693837694134644645586e393775622f6d767a55454e566a4f4241454e35507059434d730a2d2d2d204c524f6d4878304b3858544474787836626b534c4c376e7a684a414c53744b3545664e6e364955736837550a8bdcc407ba900f91f16fe1e28b43b8ff783299d42535c56ecf89e09777024986e68a0043a6485ed4c141de2a008074ab1b3ab200f0a4c7f6ba97826dc5cb841d52f81e97e802be4b546b7df83e7b2cd035e7224413658c6e0dcbb0c9d9514a10438eba73a2a85733449455c0a19822fe206d502e0f052c2cce1b023ab6909b7a9bafbc832b09aaa0504dc9a22bec8374c1c446e6dd22e847885391b16fb7984aec25ac1f0630954ebc16aa9d43d57d5be853ac93b57cb623af1991b18848dc5ffaf1d9ee442c5fb0edd0b4f13db38806e1c66daf8a60caffc4153b00ca7fd9a20b5fee6fe5781f45e8e182dc8e4da63af276ce885debff9c52308cac2fd29bc714fe31275f4b72f3bdbce599ac49df5b5e58c597ba76b91ecd9fa645b9ce5f0d1d4705d7ceac0a0de9219a132fc40954b2ae252038d7c76bc06dbc8e1d9a266ccff5e00a33720581faf4cfe4e2062f4e55a15ef839df8d20e0a25c42ebdaf3dab8289016aad5b305e9c64ec92baf54f4ab8f28b21a80efca37881723166192197ce8ca9ec6e731dfa719cc4367c34ded3b90a0bfcec8c9824b910589d5900f2811b7310b12e71e77d4e54bec322aeffe8e9676dfe014dbfa2c375428bcade15564d152bcca26f05070bbce4dd1b96096ff8541c6b3890229218ba306753b374dbcf2026862ec01647a9c18d606c6173c508c5ef9c9f79173d9abed328b5f086b8c2d0a5ee42555494d1c2a816bbd75b08337d6aca87c41e846f64b700cf4a68d8baf09437b74446d0aa7e203ed6d9ccbbb9bd245ca465bd0cff554d010570276148ee77b18299cca8e73ecaa24488ff6723fa4ba401525a226093de453e963a0cf7126a400fed104f9f5198a20f848d10735a921a88154b782cc03a99cec4dd4eee386bf1088eca7ecc89f1c1afb405b53c86b9113a4608a90d4a5c290ec34904f6b53d16da10c95288a19c5b2e70721d3c0620340fb8703cee5a2de6e6f769170bad52cae668c9d282d40a69a7356f78383421230d3a3c6fb3979f0ab4e293d10fb703c535341e84d30523d661c9a9c650d6dcb49dbe28c3890c2a987c804dc74047133388989164e12c353b710a792ae3e5b51b5278dc257333357207f1a78"] + [0, 0, "444b433103000000000000790000083ea5006a646174656b657963617001010250d9b19f485bc3d438628e0ad1cdf53ce5037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004016167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a732f6b3151335056544365432f716e3576584b527937436f456b7a6a55544865424f4879393541352b5a5a7a2f63557147626836542b4a3461426241797235750a415530573270637934577356705570323339412f6e34764a36496f33752f466f49474576723159335a6a3465756b747245354844433146474f32763057586f410a51743235747147574135374a596146355434676a586249796f77525348766237535865664b73464475356f0a2d2d2d20674c314536494134746c444531675865516e44754f4a5256437631687867597679566f7653392b326f75300a38f4edc246d0b36519014a63f8766f4bb722b775b240192c16cfca363f325acd08c195765cc050146660b9f67fe60fb394602c25265406cc4e908f7a13d8ffd9d8f8a2c2514573e3b5408b19e1692d83d0a465141d87e98c29e51b0679b55a4fd363dafa43d823ae0a55db5514be6d2a3d8996c35d95f94bb74b0a23fedf8f65e9a5b5ebd3b81ed2444e9f3167f285579f905a4bad25d741182839203da9aae9ad6dc5e8bdc04505625ed90e1879132798fa2c3c41de81880e8f1414393f28aa74569b9f2d805e3c77775936010ee185748e9c833ab76f9222be7c0d0c1c3cff07075865b5924872c60e3652a8042672751ddb08aafe1aa9034e35d2a3e34c0abbaaa4a0b1fca450883061835944f78f29fce27b29f3d3cd16b304444f5e3441a7269b696fe5332268ada24eae7edd98be942703fc8b812ceed1c0e9b18a4be10f4df817c0efc413b2cc1164a795435c3658a9d85253aca90b94e3347dc2141db3b2bcbd7ee3e6767974f7c698b35e992cc2a70f6c8f7e2dcb93dcb4f67c75b474cf56621657005ad47aabed65d68ef82b7c4a66ee7d039402e6e604f38d682c3a94411d7cd04616ace6faf86737192e30f35bd73aa14527c7f1c429a483abcffaef13d971cd9e0b43f17bce7683631b6e2611077401094e0c9b3bac188b169c62af8bec5111681f1c6d5b42ba2040a41ac7f475510c8ce84c084e0493a39aedc0d3a80157c7b28f2d2e2d1a1b7a5059b2dbe74882da05e4357c79d57f6ccda06dc5c0d98aa3c9189e9d13ed4f6da0d04bc790a35eed67a92a22eabf1d327004dc8b8767d3fb0d07391c3113fb27886c87779bf3feb9b0af7880aeb64cb2dc9194dbec80411a091fa828ba776d9d9aa5b4a6e50be9bdf46e73dff63fff3b8589b1afb6deaef884466c8ed2a7c585b53e6e5abb600d59ab0916cd2fc79f207d7e39d6d9a3ac4cfb12ce240d4e6201539df1c86365593c9ef4c7ec8980eff65c153b1e691d9e0d7d8104b8c8551d9cf620cb55cd3ae878c6d35468d2cd9edc7f43cbdf9c673b76b726546de9c60ce6ee0a65d02d6e642017ef814966f5ccf698d9665985720312f5462868854857fe08c34fcdf1e52e4d30a03f31c6c5ee5de34e59334fd492e5590d2b14503ad865d3a98b92365507d337ec5131a9c523949d937c16343f0e3e9605a4e0ddf633fdaf0a812bd8088c27a0434b3219c1dfbd0fca86dfdae440baaab721b5168dbe89fa054b9701fc0233b48145e58c5fc8b62e76c549b000832326be159881f2f4aedfddcd781ab11577e945866e883885e4a6e32b1cd4708520b744252947e8df1445de8d215486addf0433f746fa5dd7cb4d5cd45614f087ee82554a1ca8f28785064c0bbfaf5a4a41080b3e2135efdeb1e2484762e1d1d802fdab17050a90aa69dfb42926246576a9ba8221ce4a0ea1132606212c99df0e3bf5832f4d5ad22ae5cc428727ed0545720f030d89aa95a2df4c3d4b3f59e11ca28d3d000dabe9a3c82bc08e30092e6c7dd79ca7d5e246c7fd63fc01013e7ab4dded20371d5604ff8af26ac663c0c01935afd1e773b927634473c4538f61d95e79199f226c10c9c4c3fa6f6284acdf3237fc5515b9d705e237ac738d62e250aa26edee42eae98b4927f59e12e30a09e59c3372ca5074e69953a5ed9694466a425f96102e0a52aaf7293064c4445bfb364e894b9347ccc04183f65579e5c485db6f5679521b9f9414839e96657dfd7bdc3a677272add3a4cfc7ad53e98b7eb9474cf5b1e1262ad74ef317907a647c1d6c166ebb76a549b8341d49a5c8c549613d857ea8e14aa60f322b2fce43f9e91c5f39fa05807ada80d041b21781d640235d49b88855f285d89ed9d5ff8fc06c7959d75b51a7aa04d79f0438e227d29d5399aab44b26598089a3cb3df40791f3bf639d246b4bf4a5865a91a58aa0a2e3f39073a04531fe8c234a0dd046c49eca1e73ac3dd13ffc0ecfa929808455afcd6c938adb9d7453acb329a5b4316d925fd41c3ed8e3eac3c5bcd3e11e33793ce2f25267c0b629f1c6b597d76585986c9174d1fbfeadfd91707aa2d24082301c62b7f65ea0b2d09ae3242926397b630241b5247f563fc18ec27ddf53d4810e53d639ebba99f59a23f2a7a831dcc1a4974309038e84b5a33b6cdd7d2f0fdcdd2bd4568610c47092751fcea9e831f986f12978861eb2eb7dfe638897036e421f19360e40139d3035ec18687dbf91345d672b4cdab402a120dcb29ac844e84189f84f39a575a53403687fe82e16238ec2218caaafedbc28248b3cdc7f8c1d1b290099bb62f1b07e79589d736dda9812ede7b666874b85c1842655b953e0a003999eb87975d5ead570401355ee4b45333c8c443f2aeeea0747b62bc508fe3e47e898aa24cb26d47298eff1f1a802007e2443885dcb499c07e93de84334866348935fc1ad5057bb676c34995d6bf6c029425452aa1700d501a16660c5b16d93df91cb2fa6237da3300b62a7d313aaf745bc27d7118585d45ce21a3b6167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139206f684f7232717769595546626f66704b4a384a4f6265577869616f5731422b5a536e7250797362416530770a3652353755476c6d4763724f6a5353564c6a346741787867713835496a34756a436c3250593833346b55340a2d2d2d2044636c56546f4d4336484a495942424748545a494d4a4542346646714e763038575a4c4950734338387a4d0a42136b648b655f39f696b06aa1da77096d43c49eadf7f15ac0f6a0800e478dd013f100bb6039776687053143ece30cb3a52aa2e682aa2d01a0f9f44e13362f9901e20be34fe22099500b13184d84f0115b4b78e8b7968863a3749b580ba056c1c0a9c06b2b0ddfca12330c892061ed1cdaa1931d5532f06a8b63c77917da658586e18fbb47288f549c9b9ca5438b4c150a655bcfbfc2aa78389df90c0f2fb9851c6bacfe4d8ceb6aa09b05d164d3869864463b958bdfa5fc3c0f25c7ce5666f3ad72c1a0c0800ef8ab48a9274cf2e5a5289a0d59272d43dbdad7b90c81349430cf210aca5a485b215dc9978e513bf4fad8fdf31ccdb90ce2cca335b75547fc02e1bef1051b337ab2b362353892ae295b9ee8005f90a7596a48bc2808718b153bba0d8bc54543a1ac468f49df5bb8c91e69449756e6a89fe4db3ba8e46cd88e3f63d7ee7b4603691c1ab0b776f4f0e0ce8c8fbf4af68d92c03798660de5e224515eecb5ada5a7bfe78692923ad54dcfa891941a907b1adb005a925613dae98273b33c7561e07db066e7e916bc86962ac60ee2222306b7178281a45707ddc7a5487ec58f2b30efc62ec9932e94f537dc619be72977474ce56bf9f4e95dd23dcc276e30bf224aa0813a8681623d1430439c743df5bbaf2395cee349e831615975bcd2ee535a705310e07166f43e0fd89f3361ea72965a047f7cfc2a1714c273316365bc443272bc966a0045abb031559d93d74dae4797dcd89313924f19869bce919243e5c9fa8df5a88b9606f51e859ed83f3908ed46cf6c91e8a997b2376eefd8c04efe7c09f308b99cd18f4d2946a3694bab5d2dd2a30f4bc688169b1ad20c586a3fab6a3fa67e154db990b1bc708a9426c93639b4f150b42548056a4a8773f224be666b0a5805c58d9e0cbb56e88bfd8cd24d0015dc35d0db557427559d0a3f3aed9c122ff6fba4edbe3c64c51dc56544f2ea4cf2772e9972ba1879db070137d8f50fffaa6df6e86f4aa88cf6dac854fba3837451d3f6b8a27de2c1edcd447f224bf71cff919074a8c75251eda099f9b0382fd620a34303bf0515a911d10e567215f0691a44ec247790a897782b1edd948d77439f441d30db22b48d21328a4f"] ] }, "identities": [ @@ -2966,7 +2966,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b43310300000000000079000001caa5006a646174656b65796361700101025041bfc0bafa3ec414686f5bce8eef2228037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303120353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6f7236484c4e3336426e2b434c2b72317143302b566d7852486647314f4f5a665a454a2f2b754b617162444f6f6b6b706b7374427977474e56775248596c58510a42453172424364704e724766685232636974776a49323236376f6c462b486f52654b7447697a553559527245475938645279737a48464455354f2b6c56306b720a5256524f47516354463937744f494c6270562b47315a34346849344f6c336f794d2f6c74324d65346159630a2d2d2d204e5953673351624d526d396b49724e50707a6c6c4d4d752f6a6c4a6959377153447477586734336a3149340afc41faeae1e60cb20f4eaeb6027ea4f5145e019eea92b3314c1174dfa2d87f1f054263d6c42a474fd3daae25705838ad714b49a7295245e355864c2fc11aec338e6895c5236ae2679a713d0a81f939bf4f80b0b5ca780dc1f5cc322deb4325ef517a15e10f824131dab77a83160178981e4024ba253d33dddea0a2cbb6bc5c54bb579bf1c332596167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392042753438666649786b6d6643534f374e556c3341463744334a572f716476654553683165687a616e4a51730a4e686e50686b3746522b5072736e596b777758427478327a47576e57577a4d64555376634e7437654671770a2d2d2d207747394142476c374936445075484631696e633238526f357a5a444d634c4e6f4442394d665a44737264590a4cd0736d59dfa48b00808be1e3f5995097ada687cf35eeedf62b72c279a2dd30b173c59c96d1c791ee927aed909e3925199d9f229918d303ddd8966b3a3ea0f57e8a9856735b11db22b38baf3f28c6a21c7094b233acca72263ecc14bce1c6ee85787d7fee2bf33761cefd34ff07c4eb41fafb49e3791f556efd833772996907f5d0ec221a221d58dfd1e7f8b16b7bddb1d68e1443256b9916d4f10b5a0d783503ba80ef7fed92961862539a3d6f09a004235c436f30ede9d63ed59b5e5d94e42b41f8caf69119bfff153a2b61e708fdfa2f71694ed53b6a2fa64de21c2afe494372352181eab21e404c1f69e181af6bd32cb06cb015613377d234be42abe3c31facffc230d3bfe00ea8bfa8d2ab677ab43b27498a67fa18bfaf32560fafbb73d09d29c1e9fd159f888051096c2df60aadc4699ef3c40fa5a7ca1f9d8fa489009787858212e43910136d0a4fb70bf4e2fcdf6049a404dfdc5a65371d33588148c22d0ce82033fbcf4fe78f8b4914b95860f4266051e57a2f5d975cfb239747e74b29ab07293d3b739b14023fb48583a5dbd427de0e827345f345ddfd9f04c560c673cf6e5ae694a66c208b3f4bbcc71a575f00ff77f66c2f462186bc1bca745eaf5f76524616b92b25b9564287d41c0b16704c8974adb93621b6177c6d8ea7fd1939b36c8a7c1463f2e69c8e0735482324d1697a9fd71d4c3ba8daadb4c8aec60377ae1ab1aa25e767af88161faaedf2c37980314e657628344e71b45c5439576555b4d73f0f2331cdffbc3f12607916064c949f1eeeffbcf0d5fef49ef42d42f7302a4d2f79a3371fb258ccd74df5398c8b6c34cca4f2ea5d631acab58a529fb8b29b1c7a9d793f29bfda615dbf7e762baf57bb865988b9fa19d2ee9b267c8d85e85acbef37a7a491928d3596abb0a0307e8b4074a756eb0142961c96c54958e1e3d57e36794579ace43656865b28356b289b40ba8ba28f35106559fe60f0ab3258857f7667994ee11fc51161a846ad513c761891b382de33b956c2eb53a3a8cec005e742eb323c710143e1dd171a7102234ada13f7903477cecdc6615313874f03629c06b467608bf951c85d02801a57111e53abba85bad072407e9d50f070"] + [0, 0, "444b43310300000000000079000001caa5006a646174656b65796361700101025016def2d8ead91535dac7a89d334e5bee037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303120353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a74504169514167654d377135544156586238334c5671326b31453651576d7074515a4465493836704d417047757335316d656348526171526c324446587178350a46434347734c7173597353744a6c7857624f70556753554a46713844537844504c2f7648574f7666616377592b3058476c3778345a66644f5176534f355248490a707a4f78644145414f64793463714a554f657a4e432f4f56767a53737969477a66616d645a68426d5730730a2d2d2d2044454d304664534b38784a774764706e4a7436437a4c344a5a54745156444a5654724a38597a457779364d0a0a0c4cbd2256d768bf09d57fe35d78fbb251d6a8219589c9aaba6d54e9f775736179d9744984b17b147806896efee657d5d80a82e045b8f7dc85add82c0b4eab7a2e837255f330180c180bc4c9b4e3c6f728b47cddc454f4e65bc22a7b6a612fffd37eb32881b9c10a1dc5be9d6f051389b8d3e5b849b4d030eefadc4628f874cc09c4379c4a0f6167652d656e6372797074696f6e2e6f72672f76310a2d3e2058323535313920454572673351494639627233686f614a704677475369334162434e45507a48394e376e2f47692b6d3333510a644e2b736475626a7a6778487036424a615548644642726a715171513142612b62377a4a75393059426a770a2d2d2d2045446e6678584930596d795a3157496a4470466e5354746773314835357a4d76594e3949773437745564510a85ea43f74765b61522aa9881f1262ba5154e04a02d022abc93be1f1bf8c05b20b2a9dfa0260df75fb9b84ee1ddea634a352a6e20e18c01def36781e90229cea2bdbb0c8f028ce7d314b6eb27a25b9cad2b3a3212406eae5d34cd4638303d2e909aaffb4e4acdd26929ebb83910851bffd26a2a80d5564ede8d3034c4259e6f8d859fc333213b5b4887f8117abc94deda2d14c6be20bd45237deefb273577a2dfb3b5b6c6033efcd551e22564d1ba720cfaa8a2ed5407ac52744e4b37dbdb2b48060d94508a5c44d04dc854d34f55b386f6ca23c6208e8c1e6058cc4e016ea4ae20329a6a44ae59b23885fcad6b399d189ac635fcd2961e00b7d1a569df3f30177785c1c17c5ebb9230528b3999f1516097b381499c085fd8d21937007508609350779f4c14dc3723746660f838c71aa174df1e6de2794d05485d72a1e8e7f07b33c836c932e3a8b6ef49bb25fc50489f0874f2661b2cbc3de552ccac4cf57539e66274dfdf4e9a72f20ddecbb58a4f03c2822d823d905c0676ac770080c0b43f4a72bda7197203771bec76443df3139b71e2ea20773562cd120d8b02fae3b81cb095486696cb40daa913b782889ce96c9326384c956438dc04136890e6e6f444911fcb1013f4d61cf5c524e414684e2f70a9fa8ea990b81ffe08cd045d4de2c3e720e9e219199d47e8affdf5b794c84919df1457eb78cfb0b6ad8f597c3ef8186b163e98839f6db9de85ed85e7f7c862b3d1a11697c38db9f2a486f6f13d6633777b751b5b104aefb64dbdd34d26b871df6e9fa49876931749d72020622300a5bc80e8153988c273499b673911bebd7bea3bd61253e5adffb081679c708971600735561ab72a33979e34ca574e95f4ace3a4fd0f1a299f492650620cdfc21b421dee00557d0618f1352660f8e9913ab71e272fb957faba20da43609818cbf7811bf6c33f8e0db51357a55ca204d29a9609e8a8aeb00cdcd8ccb2ea7f411a74ff0eb70a86ddd9a05345571ad2d90cc65215f345c4106351e3f2eca1b2b372d3b4a4ca3c4598eeddb6faa53b81f5351888fc449bea795a9f6d3e987b56bf28d1a263736ede8e47fa107548bd1d9c6d1a54edbb8cd9c4137663b61417e3464c81e6"] ] }, "release": { @@ -2985,7 +2985,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b43310300000000000079000001caa5006a646174656b6579636170010102502a82956b5a25d4be97e60d0eac4eea26037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020646264353036643665663736653566333836663431633635316463623830386335626362643735343731636334656166613366346466376164346534633439330a75666762416e707062333137376763736d73754635736877444a6b464f7a2b487277674f336652584d4547532f5937306350343731587061394b4138427a76530a41454f762b38697a4d687a5644694276554f2f7971422f42556f6c7a5050794534316f7733736776475a376f695a4e3171476b395176394169737170305855300a6f71413542727a42436546564f78576e594d66466d73724771305a41484631612b3574307a70634b655a730a2d2d2d204472564352626154797045637155504c48305065325a6c49564a30746d55356d41764433334c656a58324d0ac7768fa80bc4d7425b58abdaa66fe5e72e044bba58f1d7183e8b4b24d38d11affc0973f4f03e5bdcad6979816d9be07685ceaceb718982420a00489594af9c852b59b74f92407a5d28de939be8cbef9ca19ae9482460b66a7d69bb64df74831a71413062030328995cddeb952674481298834147835e305e33132b905f65f0a63f61553ab5c0c66167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139206e752f78586c5747386b304e742b316e5379652b497567426b6b796b6836315576434155543356313067410a32396c4c48446c696635376a67357356345a79334650343530585556754a39462f4b5555675777795a6e6b0a2d2d2d206e4b534c6e3159466b326f6f5a5937653777786b706d5930364835644e446b396859335866396a417637670ab613f1258b0abd6667bfc786e556273363115b9c7fb4be83a58cb1c1aedd39a719e8403808c7a5ab38deed9dcee30b02c8c54a283a720a76666c45bbcf04fb78acc614a6433d2c1665e156fc5a1445fde226fa92d7fa2f5ce7ad774cd1dc658bfd72986e5edb7a1cf63b9057ada08fea6d805807c20e58cb1fbb60f5eca634d39ce4c8a655269c978d5caa6002f7d33646366e44295d3027624bcbca8df32b678efd808adfcb2832c9415b386beddad2547367ff67800b9bbe2607ed8b6942d7c52bece31f7e42e308532aa2ebb36dca678635a207d180c930d2c3ff0795c52a6c23dce9226daa816905bbe17f24ff3dc0a4b37f6295a567c5161bb4c7332c6e8eef35dd31889d5cd9585a1a1dadaf7f63328c72c551c171d84d961f7b64a9d189a10ffb24fbf3f39d3878687bd9bd100d541658d0138570a86afc6be71b0b1f5286031a5bff44305f3b4dc2c38c6ef511d4839f549c7e754c55bfb10487a5c747111392743bb1c6dc639621b9e3e0c9abac1737eef7fe2d00bcf77655ec1131d10f43a34dcc59f40ec426c9e2f33e506fd5ac0a19c5cf024cf7888f8e7b6375a3e1a706785af777d8fc49dd2b6fa3472f8628406e4a6cfcc5d3f53edd432a4ae43b11b1c4a9cbfbd05a4cc2a931a5ac9015de9e7742d10679a12c9b922ff4e2d96ff4a76f34fdc35a33c8b022fd4144911aeae083a9d4c115433b59d6baa42b4da9320aabd650d84daa5317e69bb162de5730aac15bd579fd06c849453d70835ffc97d762055dd10be7573cf32e17e173c4cc81ff7c513a08ea4143eba641842e3b073a554ddc176aa268c4c8569c3a7fc8c755e39e37c2da1d19cdbc630eae030db44b2f82294ff07a14a03dc4d302dd126bed5ea004d1ea1351d8deb266f02866b19b042b0b63ca227f7be2b21815569b88f7b460119273e358da1bbbf8e476fcafa8909d8eb7d8bf9a4a7f9844878fa4d3720dbdb318725c93fbf0c57ad113c9eca415c4c032f954f6641aafb93ee3dbe4264e7b2456c2172e34b6514cc0b1df0f0dd7f326195dd041396f5cec1b6396281418e4149632cc503a446f56636346bf3c1235d2a36737648772b65dabb757abd2292fdddb12fbf35c5beb79d0"] + [0, 0, "444b43310300000000000079000001caa5006a646174656b657963617001010250837d8abe415bf5784ef7d568f2fa71cb037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020646264353036643665663736653566333836663431633635316463623830386335626362643735343731636334656166613366346466376164346534633439330a6b7573722f534c724a4b6c5377394a554d546432323954416e4276793663553443586261346431542b592b765a4b3231414375626f6f5739506c6a65796e69680a44577551757474796e7a555a3634396378742f67737a723437364e4663593977425475746a702b38573051376153796c623879796b6a576f49643966356835440a666648652f61792f36702f3657594761356b6f6271597a715567754b38756d6476557275646558327353630a2d2d2d206c6942423152556171726966507745477a62524a346e70596c32687152725479755630596d6d68684e594d0a21f5b0bbff05805c034b30facc18f41e66bcca70d3617051a6a3e73a00483953b5572e91d644b7d74e13dc29503047628e679fada4c069c9cf9dbdd37411250dc1b0d2ba894ec4f26427f29df1eaa7012c9d2a847b1795b2b72ae8a9ae38e1e1d8d7dd014fd736cc6bcf86cc1440d2308e6abce1d26a390edbf25e1d3c1940ccfc5ad5428935d36167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139207742567956347a5335452f6e7473744e583245416453634e7163584e466b5a783267435655695278336a340a62343938314b6638466a414b6b736a38737a364f465a626541664b756d6b73454646744c71454d67364b550a2d2d2d204353415a562f48706241363633527a754b647466454f6b58774a336a4f4f6b597277714474542b64316c730a7f9f4119fd2f288aac14b657e154c78083612255b445c06a22a9c0ca70ba8eb32dc8889163d73adc30bd6c4411f86d8ca283f065f64660bbf290e5cc0af3c2cc0bc92404cd3a10a610d683560a773b9440b7d1cb532451c8a687dd622fba24ca553e8709e8e96f23cf9d790ce0c7962970fb7b23534e8cddc6b37cb9916b0f5072a19e8fc0020ae59312d76f48e78e083ca257b1fee923adf945ca20e17d49cdc46594b8eeef922d85e079c6e1bd445e34a612ee0527634863911ca93b7522f345f048f05df9eb3c7c2f758f7a73ed1c86161cd012bddc1861a18563655bde77fff0f62eba0842592850b3671778a732b130163688cb122779d9539bb69caa81d52b46cb18d6260e0f47128d32d5c2387f117da7ff8d5942f49bc4491cb985a52b1681fc23f1adc72a06fddce88e5a59ac9328bba3a552c51641a2653ceebf8e42d154dfb25837ce05c5fbaa1cd35eda7189ac70c53c1d1527c5c366116171d9dc57b8c06a19d4c4953fc098d9adb057f2849e2301f8d5924cd61a1e2737f5fe418fa5c10f73f23df7dc66c6e8368a391042e552580fc4c305e7e907b2f9b25c4737abbff1d8c8cbf6e038cc6e3c05292e109b98a59391cf16cdf98e681b9009aa86d209720629164b8e801295bf86996ba403eb7935b79b54766a0542492fdfab6e1d4c27d12150cfde119065a5746e92bce063778676f194a9a0140433893ff276e0cb35f62deb120e67382b659d2ea8f70eb3861cc8fc49a2f4d4e66dd26c974aa24be499b3428a787f74ff57afff6d0966c9731001eb5ae54f2d3efe902dcfb53e209bb5a2bbddcd54bff3f4ba88f9862adad61d429668efd1e9a6c3bd10114e5fdac6e9162525edd5899d82a0aca82c6b4dae68babf6d7f57c33da6112458a4a5b5b682dbf6ed2dd4ac423e126ee7c1e6ea4911da9a953a1a9d336d3853fc41eba1ce6d6aa46bdfd3fae34e41ee40174ea8102570c5e036423f51077b4756c309a0ab06fe204a6d71415c666665cf0ee780d724121a6f74c55a3f5f46d4d965c29c0b6d74deaea946ec0a4a78ecbb190d73c333b1fafbfaaf67cd508d22697795fe29494c4459afa916645e7e3236888477bce915c1731c40660f0f4d13"] ] }, "release": { @@ -3174,7 +3174,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b43310300000000000079000001caa5006a646174656b657963617001010250d59e6946de2d48dd85c32ec13d270278037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774e483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303420353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a72386c65724d48716e57434c74383944666148726545344e766e725a336c32374c38785175736f33335363754d6239324a7a37447055592b68584b4d43424b370a41546c4d394534724638794c734e486663652b7a577079695861366872377043567642715239793774765665305374364b636e316955634c615671306738564f0a41466f526b786370705a3279626a594e31726c7934484c4f664d7a307743616f65346555422f6e523453490a2d2d2d20427930776c7a5a67543864677564364c6267423379316a726c3838336558493458574c5051595a7442574d0a08cbf072f71accdffdb800d5c8e8785b02eb34166603c7a8b3e7aee05659015392a301d583e266fea9f1766616ac1a85db5f7ac925267883e7901555ae85b1b5e73fb3d7e4ebb6dbc282f69bf37842a7e0b41b54b60631f988bf215e4a37600cefeb31706cf83fb9606f52085925fa39e4a16465163d5106c7871a6801c472ee2208c184cc75ce6167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139204e794c5252416843652b32356b4a30704d4a3753576364496b63764d6a627271302f6e35543938717658510a642f39684e39494455546f4f4744584345537a634b366e5963547636464e61394d665741793374456c59450a2d2d2d2051465650712f595469524b41467471466153555a79475155444b574476747336456a4a445a3036722f544d0acad8c58988655539c0f91361d87f98f5922dfd58a7f49f237ca581e7e9c96e1ad7dd90c94552804a3db8db6c065e5240390d0576d4c843271af5ed2dd83add56625dfd7762a98715c5b7c819d20f691767074640e25bcb541c38490aa35e1366ca28169efa4a24c7e58b88af7aea04f76142c148d1b6e87849651d0ee046fc9862ce7c9cf301a82ca4325f7999cafe257f712385b9eb667511ea41bbdf994e21d12333d8971f9f01ab4f060f6681fea4ee4a3c69408f5f54d51645b9c8d92844c85862fff5886d358975eead7c9d79c934c8b574bfc91a37b30d99d013a6304549786c83ce5d8e7a5a9b395abbe8787348667865fbb4d1a51747efe67f5665c86a9c35db7f2fbb5e6ce77ac2ca471aeb06ec71e0ede05d49ead0a1b99d64a3c90d58afb8c427c5d66fe73bdfa604b971b0414db45a252787eda47959dc5606fcd206f0ac327770f009be7d1592bf2c33b807ba1c38cd3d79fc6e90c89832b59222b2a6b468296458b11810cf80b8702cea6d8592426064e5f2d5a5c2219387e15a088c87e3cab2f5285142d15de91f05737d9fa8204029fab3c6ab2e5d40097807e56a25a4ac3972c0518b6e5a6f14ae434493ae1e995f06ede87807b264b6d595f8d21c402f652c91fb20eb7c429887d5de9a4d9ff3870ba038ad35e13c4c4054b0449cde345d2b5dba884e0babf84755ad1d1f7965985bca12e6f2355a675101f498bb3e5546a0684649f9198db04782f842d24d87a4807c3bbcd19121aa7d1ba5e8423d5409c4ea6fb62358cf9ec9e2510277d28ac15ea2ddb65bcf358e268a7e7ee7a0eae75dd2e8287d12f5733af8dd8045fc18851fed6afcb489270121dfc042859d199c3db41ed1dc20fd30a3d96d6655c3913caa534ceb8563fe28f2cf5658d28c6b6a85b8ba30b279129317fb83dba275893eb52db11f378791577c79c46c3032deed235f81423ebece045fcbf17457901ea4cff538be0bfd654c91bb46b8089d897202749e7604751f4584d13b00aa4f39af6f9e7f150c79fd5cfa3bf1295130f25499ad3a831bce5c1a977fa5e33131b0b745ece1ae2c945b7829ee92fb6f015dcf44f2125f94cb7f28cdce287c6f32968fad197164ae74eb3d46"] + [0, 0, "444b43310300000000000079000001caa5006a646174656b6579636170010102506134b00a1f901953021415cdee365c49037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774e483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303420353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a727a746d76584d307a7565617641524c37694a37476f7035316e6c644b476d3947744f71692f38776a61484a7377745430646d614e786a6c47736465485334560a423637794930394869345971684f736f4a6b417a2b633733764f384b683965386b556b64313231376135455478683232736e755567465146617950326b634f6e0a784e6f62357041354e75776f327878727273536a4c6165344b6b5a44666d546f5173667056642b765a68670a2d2d2d2044356a504a7248736767334c325932775a5856314a6a2f6a56775a4e7977655438656b456d5358356e6f410a04b046fa2e58e5a8012a6ceff391ea637141bf95db84bd0aaaf2dae8bcd99f5d70da5046a634f04465dc361c7fe63319209d46403ba708462bb7354e3c127f5f4b8abe4f77ca45dd66ea0058a36e8d55bae72caf62fa5f6232641e62dfacee39a79f23a229b85635db11c81c7e9a9c447a7f958fdda799adaaab45575927566ddceae641baed356167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392078397639774d4250655931546f52345257615a6946722f44443559777a5367345a2f564c465a75736142380a2f7443514e6938523675766a3539546c37634866567358326d61773135674c392b4a38562f6c64516e316b0a2d2d2d203530444d56734a622f4b645932316b685a664e35642f786e3163706d4450725065584c4e576777304e484d0acb6f57f1ec0b54db35082d87ccbd466336d796528922903e1eb86b2f61b526422428962340dde526abdd1fc8c495918f7c77191b4937c1075b0c7fc282d788c9d1c7b272cab145f003e7451e4afd18b396be653ba5665929956003aff7913ff1901fa6ae33a1ed4edf626bdc6dad9c1f8163f7fce923992ce33c568abdac4cc3db0c7d816ae5877397dae42a2552a7bdc6c42294315170d75ef50064c78e8f1b2894da1602dd16ee7520256c87e468a7b4bb007da73854b7f32262e67a54fb1028960c6413fe29b897ce490223561db29eba201394af3e147af704ccdc3f803dc86a8455467f2fe279b6a72c795805fc58f77d02ff557d1cea753883f557631019558892f4261cd016df24704738ec767b266e09c812ba9ba18f5884a10e89930eda2de958fd6d9a6ab6c37d9f0d881d2cc62e30ff12ce597c83172f51461775b8ae92e06172154937dd6a4d3754de38a0db1f9c52e3fb36791c20d652e33ceef30b42e1c13160f139dc83bdb0ce3c6b959c2c7d15e2f12a17ff8cbc95d8bd7395c913cb51800785d76891c8481975ce33e549dfe280de1e16ff350298026fd38dc70f8ba5992b6cc7e437e3f3ad7688e83ded869b55da612632c3c4a68ed1140cbe23065e39fcc7d13d0f133bd2be0084b19eb806f365770550147a7193165d67f283fd713365cc2a635b729cce755fc79d1aa89b1eb93e1caedb181c4672c4e752c329a72751cf581c341acb78d22b30bc0f0304660f4575cc5ed7d42b88399cc9c1dbfbdf77c23a95c0f72dad0e8e833e7f636559c6c49f7365928fbc38c8a785b2dcb213051b156cb1bc9c5fabc3371cd4fcfd8376c2ccbec7c1d055b1ddc81bd0084a1a307c6f8cc58943b7c8c5cf19b0cd68b4786b87d3214813c4d0b1a35315da0f4b765e3ecf519ea67432372dfd16d8937bac7037bcbe4a36f0b043e8315f109eda586832a7582d9f5ab6524a1098aab0735549cb811b906c3863ffb08e23d6c0fabc861a9c5ff07cd61a8ecf5e5c779cca440346e8b848d6b5eb53bb539113747d82c07fa5262a6360546310ac449dcb1c45e16dcea2719a96e61d7f9c8142e304e490884ee434138fd329816e558ea2873d0f46094467e767dc0f"] ] }, "release": { @@ -4268,8 +4268,37 @@ } }, { - "name": "a signature of alg 1 opens with the verdict F1", + "name": "a signature of alg 4294967295 opens with the verdict F1", "spec": true, + "dkc": { + "base": "format3_single.dkc", + "edits": [ + [786, 6, "256f1f0dc845"], + [813, 112, "20d7c80e99276f0d6767c0ffe2047e36a800f14138362cf668c59ca29a1a1f162ade4fb9b820db3648268570b6070dbcaa0cd7e8ed3fff0b3f50e46a5a5caa7482df632e59283d406d7be4db6165ac2d6a49110f439275e7680f0120893b727b82bb8619c4115411d05a7feb5f9e09e5"], + [1547, 16, "e68dbdf94498d76dd170fa3bfbbe344f"] + ] + }, + "release": { + "round": 1000, + "signature": "b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39" + }, + "now": "2023-08-23T15:59:24Z", + "registry": "default", + "network": true, + "frozen": false, + "error": "ok", + "step": 0, + "verdicts": { + "signature": "F1", + "seal": "S0", + "lines": [ + "No se ha comprobado ninguna firma: trátala como no firmada." + ] + } + }, + { + "name": "a signature of alg 1 that does not verify opens with the verdict F2", + "spec": false, "dkc": { "base": "format3_single.dkc", "edits": [ @@ -4289,10 +4318,10 @@ "error": "ok", "step": 0, "verdicts": { - "signature": "F1", + "signature": "F2", "seal": "S0", "lines": [ - "No se ha comprobado ninguna firma: trátala como no firmada." + "La firma no corresponde a este contenido." ] } }, diff --git a/testdata/vectors/padding.json b/testdata/vectors/padding.json index a982752..1fee966 100644 --- a/testdata/vectors/padding.json +++ b/testdata/vectors/padding.json @@ -1,5 +1,5 @@ { - "spec": "0.10", + "spec": "0.11", "description": "Padding rules of the payload of a format 2 capsule (spec §29.1): for each content length L, P with code 1 (bloque256) and code 2 (reforzado), and the length of PAYLOAD_AGE for each. e, s and last_bits are informative. Generated by the reference implementation. See testdata/README.md.", "l_max": 8936830510563328, "vectors": [ diff --git a/testdata/vectors/path_fold.json b/testdata/vectors/path_fold.json index 21c043d..cd4ccea 100644 --- a/testdata/vectors/path_fold.json +++ b/testdata/vectors/path_fold.json @@ -1,5 +1,5 @@ { - "spec": "0.10", + "spec": "0.11", "description": "The key of R7 (spec §29.5) of segments, with the Unicode 18.0.0 tables of §29.5.1, generated by the reference implementation: nfd is NFD(segment) and key is NFD(fold(NFD(s'))), s' the segment without ZWNJ, ZWJ, VS15 and VS16. See testdata/README.md.", "unicode_version": "18.0.0", "tables_digest": "07cf5d54aea1cd13a3ecef14a06976cc49a3cdad755cf9bc10395178b93aeb07", diff --git a/testdata/vectors/paths.json b/testdata/vectors/paths.json index e9125ec..e8d4318 100644 --- a/testdata/vectors/paths.json +++ b/testdata/vectors/paths.json @@ -1,5 +1,5 @@ { - "spec": "0.10", + "spec": "0.11", "description": "Paths of a format 3 head (spec §29.5) with the Unicode 18.0.0 and best-fit tables of §29.5.1, generated by the reference implementation. paths: one path and the rules of one entry, R2 to R6c and R10; trees: the paths of a head, of 0 bytes each, and the result of decoding it. See testdata/README.md.", "unicode_version": "18.0.0", "tables_digest": "07cf5d54aea1cd13a3ecef14a06976cc49a3cdad755cf9bc10395178b93aeb07", diff --git a/testdata/vectors/profile_quicknet.json b/testdata/vectors/profile_quicknet.json index ff60352..de68fdf 100644 --- a/testdata/vectors/profile_quicknet.json +++ b/testdata/vectors/profile_quicknet.json @@ -1,5 +1,5 @@ { - "spec": "0.10", + "spec": "0.11", "description": "Quicknet Provider Profile V1: exact Deterministic CBOR and profile_hash (spec §11, §12, §75 item 2), generated by the reference implementation.", "profile_id": "datekeys:quicknet:v1", "provider": "drand", diff --git a/testdata/vectors/quicknet_rounds.json b/testdata/vectors/quicknet_rounds.json index 84d73f1..20c2ddc 100644 --- a/testdata/vectors/quicknet_rounds.json +++ b/testdata/vectors/quicknet_rounds.json @@ -1,5 +1,5 @@ { - "spec": "0.10", + "spec": "0.11", "profile": "datekeys:quicknet:v1", "description": "Quicknet date to round resolution (spec §15, §16, §65), generated by the reference implementation.", "vectors": [ diff --git a/testdata/vectors/security.json b/testdata/vectors/security.json index 4f0f92b..640137d 100644 --- a/testdata/vectors/security.json +++ b/testdata/vectors/security.json @@ -1,5 +1,5 @@ { - "spec": "0.10", + "spec": "0.11", "description": "SECURITY_CBOR of format 3, exactly its SECURITY_LEN bytes, and the verdicts of the signature and of the seal (spec §29.3, §29.7), generated by the reference implementation, which implements no alg and no seal_type. See testdata/README.md.", "vectors": [ { diff --git a/testdata/vectors/security_cms.json b/testdata/vectors/security_cms.json new file mode 100644 index 0000000..74f8958 --- /dev/null +++ b/testdata/vectors/security_cms.json @@ -0,0 +1,349 @@ +{ + "description": "SECURITY_CBOR with an author signature of alg 2 or a time seal of seal_type 2, its context and the verdicts of spec v0.11 29.7, 29.10 and 29.11. Certificates and tokens are made once with test keys and the file is frozen. See testdata/README.md.", + "spec": "0.11", + "cases": [ + { + "name": "alg 2: two signers, each sealed before the round time", + "security_cbor": "a30071646174656b6579732d7365637572697479010102590f61a3000201584582582013c811b56e109e9ce48cd885cd2686750c380fde4bbd887399239d013d70c8cc582046218f3323671ebac0c2383e2382322e0a05624f864841d69933d9651b76113902590f1230820f0e06092a864886f70d010702a0820eff30820efb020101310d300b0609608648016503040201300b06092a864886f70d010701a0820486308201783082011da0030201020208399eb3a7749a61f6300a06082a8648ce3d040302302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a301e170d3230303130313030303030305a170d3430303130313030303030305a302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a3059301306072a8648ce3d020106082a8648ce3d030107034200049ba7f4999209b8a6d393b928bbd84aae10eefcda758b94ac9a171c3f8059a065bdd433cfd9da5789f85d9a3be45a73bc5f1308c0991b2fd5cec0b11fa27d7eeea3273025300e0603551d0f0101ff04040302078030130603551d0e040c040a416e61204cc3b370657a300a06082a8648ce3d0403020349003046022100871158b887973e04034747995358dea51032602153b05e6bf5cf1b8778d0a623022100be16176bd54cab25f50e34ed130d6324c43f7f1d775f307a28a8b8f2109791e430820306308201eea0030201020208193a2a79e27fbc66300d06092a864886f70d01010b0500302e31163014060355040a130d446174654b65797320746573743114301206035504030c0b4c7569732047c3b36d657a301e170d3230303130313030303030305a170d3430303130313030303030305a302e31163014060355040a130d446174654b65797320746573743114301206035504030c0b4c7569732047c3b36d657a30820122300d06092a864886f70d01010105000382010f003082010a0282010100e3755ca7fd01a67483239a8cf4ed8c0046683ce30f7ff4b1850d9fb62775a9317ed98ef3655024ff23da46fd710cfb864146d87fb43b3cb77f910bddfbb84c2d26d74ca4059002e3bbfcc5322d03201b1fa9314edc683cb267b7ffb7c3cae0784b6c7ded5211c7ed2ce59f4412f5a709d9549303f5235aca2c4e15512a7daa45d360d75f6aaa112eae1218329fb370d411d39785254d1f034751c940bf01876e0abee9dcf28bd7fe9864b9587848bdf606b5b9ba2f2ead6ae0e7bb28f2c3a727aa4d358af65d6a0e1251258184f6fc5bc2e4211fc5d84cdfc7f8b82a1a3c7ea44be1f4e475d6f3f6fef80459d97481fe89e6b9320c1b47916722293bca3241e90203010001a3283026300e0603551d0f0101ff04040302078030140603551d0e040d040b4c7569732047c3b36d657a300d06092a864886f70d01010b050003820101003c5778f609c3e7755e03614c0d14720257e98aca07dd96cad905cc9c0ecf07baf165844fbb75f075821a385259e9341347d54065d02504bed0d1481dcb349144e9a859f4105e16ce37b3aba616a086051cf6df62d7736c286ca3c9bd220ef7a0619ecb8cea10ae0253911922ed5efdddaa0105b231782d5529dc59749665439c2b213897706ae621120dfb449576a10ecf43e87a175a7f737f1fecdbd3b89ba3e7f29553b515c6a632136b70ebac0b2015cce0931dc3f548bf51ec10a6ac9dbe9c757505ec3a8effe70d862d912210f28ff5f4a25a8d6b862db9a784d78ad2324d0abd5b6b4dd4524469549b2098834491385ff8dfd11345790a1610bbb48e2d31820a4e308204c30201013039302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a0208399eb3a7749a61f6300b0609608648016503040201a08184301806092a864886f70d010903310b06092a864886f70d010701302f06092a864886f70d01090431220420e243989a6cc0f8dd3048764de75c6849ea1dde4e74226f09bf6c182c449a3a493037060b2a864886f70d010910022f3128302630243022042013c811b56e109e9ce48cd885cd2686750c380fde4bbd887399239d013d70c8cc300a06082a8648ce3d04030204473045022100e985ff316ee456c61378ea1ea48c67da0dfa3bb71be5a252f372d24850a71d5d02204ac5759b9daab6efa5a1d3864db7747a9d3daa55bdaaf0e15305f7d21bd19d03a182039830820394060b2a864886f70d010910020e318203833082037f06092a864886f70d010702a08203703082036c020101310d300b06096086480165030402013065060b2a864886f70d0109100104a0560454305202010106032a0304302f300b06096086480165030402010420e976abf3318fce3ff4fea8cdbd2b92aea1544e560de862b3e2c90dcd2b83cbaa02012a180f32303236303933303132303030305a3003020101a08201b8308201b430820159a003020102020816b536ff6d9413dc300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200044430921fc91a68617c785dbc7c013ede1800b37704747bd9b7280e20e475251cca9f1799b84f3cc4cf4640590697e4c425fde6329b1878f7198e91ca9fafd9e7a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100b26b717908be147fccbe24182e8c0072e920af74fd217c818ee34950d3a8aa41022100a6d042065cc3048680da599203465f7ac6322d76a8409dfc9c79435a72c2a30a318201333082012f020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020816b536ff6d9413dc300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a301830160414f4b0c8ba1da2495736b3b8ebba20262ca957c5bd302f06092a864886f70d010904312204209d0a3a3e4112f315d650b827cc04b4a9b631201488076f91d605914108ba9d09300a06082a8648ce3d040302044630440220141c329e9fb6079d97ccbd69f3bf737ff466c4b2dcd36727d6193089338f18d302203e9e317eaec54f7716d78905663f287595cd3bbf8c0570c30f505b5b4ea2f9bf30820583020101303a302e31163014060355040a130d446174654b65797320746573743114301206035504030c0b4c7569732047c3b36d657a0208193a2a79e27fbc66300b0609608648016503040201a08184301806092a864886f70d010903310b06092a864886f70d010701302f06092a864886f70d01090431220420e243989a6cc0f8dd3048764de75c6849ea1dde4e74226f09bf6c182c449a3a493037060b2a864886f70d010910022f3128302630243022042046218f3323671ebac0c2383e2382322e0a05624f864841d69933d9651b761139300d06092a864886f70d01010105000482010008cd9f2444946f21c6027271b61ab2a978c16103f32afd8e108ef61766a500e13fb93a17b0514e843559ab3ac97f4203bc019f048e9219f2005c0c5dd8226743cc5b28a266693700f580d04802acba95a71c57f408524737d42c08f2df0b282ad57dd940788902b49e1e3aad5434b381181b575f689eb4e67f3d6c9f6af66b87821529b30ddacaaef7cd9ed7ee20907eadddf1ceb7f35f31e1c7e5b0c52cf2c0dda17f0fee656e2bffdb3d571642d10e7e76fce44f9b8810ddf89ae0b5bb3114ec39ccdc6a72d248fb55040a29c10b854c79893195560359c1a369f2d81c5507850717e7a69921d34283365216dab0e8d9fdb55cbd985934754ca6ca435bb356a182039930820395060b2a864886f70d010910020e318203843082038006092a864886f70d010702a08203713082036d020101310d300b06096086480165030402013065060b2a864886f70d0109100104a0560454305202010106032a0304302f300b060960864801650304020104203133909689be7b6e7f3a635f7628c1dd502b72b770090e5484b9a30563b9579302012a180f32303236303933303132303030305a3003020101a08201b8308201b430820159a003020102020816b536ff6d9413dc300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200044430921fc91a68617c785dbc7c013ede1800b37704747bd9b7280e20e475251cca9f1799b84f3cc4cf4640590697e4c425fde6329b1878f7198e91ca9fafd9e7a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100b26b717908be147fccbe24182e8c0072e920af74fd217c818ee34950d3a8aa41022100a6d042065cc3048680da599203465f7ac6322d76a8409dfc9c79435a72c2a30a3182013430820130020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020816b536ff6d9413dc300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a301830160414f4b0c8ba1da2495736b3b8ebba20262ca957c5bd302f06092a864886f70d0109043122042002c0ae1862d888d856794a82163f419ffa4eb371ceea06e3ac96d088e2e99b71300a06082a8648ce3d0403020447304502202bf0294f2c65f11243655691bfda067e717feab0cc7a94ee8a2996c89d6f6b34022100afabbc3e20527df993f954c9dbf756f1b2a8fa0552fe4d9605152f0d5f8e0ad2", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F6", + "seal": "S0", + "signers": [ + { + "holder": "Ana López", + "issuer": "Ana López", + "result": "valid", + "seal_time": "2026-09-30T12:00:00Z", + "before_round_time": true + }, + { + "holder": "Luis Gómez", + "issuer": "Luis Gómez", + "result": "valid", + "seal_time": "2026-09-30T12:00:00Z", + "before_round_time": true + } + ] + }, + { + "name": "alg 2: a seal after the round time proves nothing before it", + "security_cbor": "a30071646174656b6579732d73656375726974790101025906b0a3000201582381582013c811b56e109e9ce48cd885cd2686750c380fde4bbd887399239d013d70c8cc025906833082067f06092a864886f70d010702a08206703082066c020101310d300b0609608648016503040201300b06092a864886f70d010701a082017c308201783082011da0030201020208399eb3a7749a61f6300a06082a8648ce3d040302302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a301e170d3230303130313030303030305a170d3430303130313030303030305a302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a3059301306072a8648ce3d020106082a8648ce3d030107034200049ba7f4999209b8a6d393b928bbd84aae10eefcda758b94ac9a171c3f8059a065bdd433cfd9da5789f85d9a3be45a73bc5f1308c0991b2fd5cec0b11fa27d7eeea3273025300e0603551d0f0101ff04040302078030130603551d0e040c040a416e61204cc3b370657a300a06082a8648ce3d0403020349003046022100871158b887973e04034747995358dea51032602153b05e6bf5cf1b8778d0a623022100be16176bd54cab25f50e34ed130d6324c43f7f1d775f307a28a8b8f2109791e4318204c9308204c50201013039302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a0208399eb3a7749a61f6300b0609608648016503040201a08184301806092a864886f70d010903310b06092a864886f70d010701302f06092a864886f70d010904312204208a0a6d927c8efe36ab066eaa1321276832694a7d36b38e01786e2fca1ba4387d3037060b2a864886f70d010910022f3128302630243022042013c811b56e109e9ce48cd885cd2686750c380fde4bbd887399239d013d70c8cc300a06082a8648ce3d04030204473045022100f4e2b82dc6b1429bb433247b34fb25a907a086ae34b602f65bf84c419b14bbec02203fd119c23b1dc005258bfb0d16ef7efc487f948e9dc7b9b6d7b5d33eb6aac167a182039a30820396060b2a864886f70d010910020e318203853082038106092a864886f70d010702a08203723082036e020101310d300b06096086480165030402013065060b2a864886f70d0109100104a0560454305202010106032a0304302f300b060960864801650304020104203fa6e3f4031d5ad633dce60408c4c63aafb6af2d65f7a0cebb9f286c8c961d3e02012a180f32303330303130313031303030305a3003020101a08201b8308201b430820159a003020102020816b536ff6d9413dc300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200044430921fc91a68617c785dbc7c013ede1800b37704747bd9b7280e20e475251cca9f1799b84f3cc4cf4640590697e4c425fde6329b1878f7198e91ca9fafd9e7a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100b26b717908be147fccbe24182e8c0072e920af74fd217c818ee34950d3a8aa41022100a6d042065cc3048680da599203465f7ac6322d76a8409dfc9c79435a72c2a30a3182013530820131020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020816b536ff6d9413dc300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a301830160414f4b0c8ba1da2495736b3b8ebba20262ca957c5bd302f06092a864886f70d01090431220420acc298b6d7077397d13950532815d76c9b30a39aaf67312f460f77550a67ab54300a06082a8648ce3d04030204483046022100e265c660c3bb8be16a524b8e8bd7849f45c0101ec5ae9a3f94605c3b095e8fb9022100c616fb16ad2a70bcc30b34ccb6dbb598a3a415472106d449c29f207537e93f8f", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F6", + "seal": "S0", + "signers": [ + { + "holder": "Ana López", + "issuer": "Ana López", + "result": "valid", + "seal_time": "2030-01-01T01:00:00Z", + "before_round_time": false + } + ] + }, + { + "name": "alg 2: a signer who is not required shows apart", + "security_cbor": "a30071646174656b6579732d7365637572697479010102590d37a3000201582381582013c811b56e109e9ce48cd885cd2686750c380fde4bbd887399239d013d70c8cc02590d0a30820d0606092a864886f70d010702a0820cf730820cf3020101310d300b0609608648016503040201300b06092a864886f70d010701a0820323308201783082011da0030201020208399eb3a7749a61f6300a06082a8648ce3d040302302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a301e170d3230303130313030303030305a170d3430303130313030303030305a302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a3059301306072a8648ce3d020106082a8648ce3d030107034200049ba7f4999209b8a6d393b928bbd84aae10eefcda758b94ac9a171c3f8059a065bdd433cfd9da5789f85d9a3be45a73bc5f1308c0991b2fd5cec0b11fa27d7eeea3273025300e0603551d0f0101ff04040302078030130603551d0e040c040a416e61204cc3b370657a300a06082a8648ce3d0403020349003046022100871158b887973e04034747995358dea51032602153b05e6bf5cf1b8778d0a623022100be16176bd54cab25f50e34ed130d6324c43f7f1d775f307a28a8b8f2109791e4308201a330820128a003020102020835a4deccdaab6ba3300a06082a8648ce3d040303302731163014060355040a130d446174654b6579732074657374310d300b060355040313044f74726f301e170d3230303130313030303030305a170d3430303130313030303030305a302731163014060355040a130d446174654b6579732074657374310d300b060355040313044f74726f3076301006072a8648ce3d020106052b81040022036200043385b3174e9de495aad288fd3549a386e2187016abdfbc3deb2f2ed314c72eb6dd930cd70aa5c1d7137bf4e66fd459874b391883d01c0d53815dfe7fa2fbf291f64972d69b8a9d81e172cb78ac6d353e54a097d8f07112950f85cc2c140fea1ea321301f300e0603551d0f0101ff040403020780300d0603551d0e040604044f74726f300a06082a8648ce3d0403030369003066023100d171c2da04ba594e86a73a57adbd9b20f75d8785464b718334adbfa5bb268812ee6f881b96dbd12172fda26ce2213e2e023100fb198badb7b2fa34ff4d71c689c453e0ba93ea31192b6bb486be6385718ef7b95933af58748ad2a5e998214a527c2a92318209a9308204c30201013039302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a0208399eb3a7749a61f6300b0609608648016503040201a08184301806092a864886f70d010903310b06092a864886f70d010701302f06092a864886f70d010904312204208a0a6d927c8efe36ab066eaa1321276832694a7d36b38e01786e2fca1ba4387d3037060b2a864886f70d010910022f3128302630243022042013c811b56e109e9ce48cd885cd2686750c380fde4bbd887399239d013d70c8cc300a06082a8648ce3d04030204473045022100e7458b88374bd0ca99f4b2b443bc82ffac1718c5aa2d8aef2d381e665e2f2314022076ada20a1e1181febe5c531f34a05f98594b2c072f45c0c52ea4c34fcbf18640a182039830820394060b2a864886f70d010910020e318203833082037f06092a864886f70d010702a08203703082036c020101310d300b06096086480165030402013065060b2a864886f70d0109100104a0560454305202010106032a0304302f300b060960864801650304020104204997b27370ce829613415dfa4dc4edb0e309cf1c166c2c94fb4a839020a496ce02012a180f32303236303933303132303030305a3003020101a08201b8308201b430820159a003020102020816b536ff6d9413dc300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200044430921fc91a68617c785dbc7c013ede1800b37704747bd9b7280e20e475251cca9f1799b84f3cc4cf4640590697e4c425fde6329b1878f7198e91ca9fafd9e7a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100b26b717908be147fccbe24182e8c0072e920af74fd217c818ee34950d3a8aa41022100a6d042065cc3048680da599203465f7ac6322d76a8409dfc9c79435a72c2a30a318201333082012f020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020816b536ff6d9413dc300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a301830160414f4b0c8ba1da2495736b3b8ebba20262ca957c5bd302f06092a864886f70d0109043122042075eadf0db2015273d67c2bc8a6649061d1275903fe2fa96e17bc60ff4490fdb0300a06082a8648ce3d0403020446304402206361a04ec1f1142b6ee695db78dfad8bd6abe1012ef294b10fa768e20f9b9d8f022038c21706cb8f1d59af7ea3096ac1560077d8882b8bf929f169928341fef7a805308204de0201013033302731163014060355040a130d446174654b6579732074657374310d300b060355040313044f74726f020835a4deccdaab6ba3300b0609608648016503040201a08184301806092a864886f70d010903310b06092a864886f70d010701302f06092a864886f70d010904312204208a0a6d927c8efe36ab066eaa1321276832694a7d36b38e01786e2fca1ba4387d3037060b2a864886f70d010910022f3128302630243022042088dce787be2d37c7b7b8be2a37e7268b20d60f98cd2e69431bf660619ae1bf59300a06082a8648ce3d04030204673065023100e9b4dff00534a57117ddb1e618364ecd99bc49acc15f430cd580931bef35658c583827941b1a90679cc2de9dd215c16d023004858dba8c4f71f0dcca26f4b48cb8c549273905c5e0e9acc1ee21b02abc9277f65202f92ba4e80206bfaaff2b799238a182039930820395060b2a864886f70d010910020e318203843082038006092a864886f70d010702a08203713082036d020101310d300b06096086480165030402013065060b2a864886f70d0109100104a0560454305202010106032a0304302f300b060960864801650304020104201d41f0fd23c7965e32d4dadbb85e6f8132c2174442a93442b7b01b9a284ddfdf02012a180f32303236303933303132303030305a3003020101a08201b8308201b430820159a003020102020816b536ff6d9413dc300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200044430921fc91a68617c785dbc7c013ede1800b37704747bd9b7280e20e475251cca9f1799b84f3cc4cf4640590697e4c425fde6329b1878f7198e91ca9fafd9e7a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100b26b717908be147fccbe24182e8c0072e920af74fd217c818ee34950d3a8aa41022100a6d042065cc3048680da599203465f7ac6322d76a8409dfc9c79435a72c2a30a3182013430820130020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020816b536ff6d9413dc300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a301830160414f4b0c8ba1da2495736b3b8ebba20262ca957c5bd302f06092a864886f70d01090431220420f386d364fed4b4c3d4a2a0cc1d15fe9698f0c336a81dd847e13af387291d3218300a06082a8648ce3d040302044730450221008cd1e5b7216fd5865ae9ca2f58007b115ef41f871efe25fee66a71f152c4c7c102201cd7968a591709b980c1c18cc16a31c545efd5da054f5d2554be217cd4d4dae0", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F6", + "seal": "S0", + "signers": [ + { + "holder": "Ana López", + "issuer": "Ana López", + "result": "valid", + "seal_time": "2026-09-30T12:00:00Z", + "before_round_time": true + } + ], + "foreign_signers": [ + { + "holder": "Otro", + "issuer": "Otro", + "result": "valid", + "seal_time": "2026-09-30T12:00:00Z", + "before_round_time": true + } + ] + }, + { + "name": "alg 2: a required signer is absent", + "security_cbor": "a30071646174656b6579732d73656375726974790101025906d0a3000201584582582013c811b56e109e9ce48cd885cd2686750c380fde4bbd887399239d013d70c8cc582046218f3323671ebac0c2383e2382322e0a05624f864841d69933d9651b761139025906813082067d06092a864886f70d010702a082066e3082066a020101310d300b0609608648016503040201300b06092a864886f70d010701a082017c308201783082011da0030201020208399eb3a7749a61f6300a06082a8648ce3d040302302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a301e170d3230303130313030303030305a170d3430303130313030303030305a302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a3059301306072a8648ce3d020106082a8648ce3d030107034200049ba7f4999209b8a6d393b928bbd84aae10eefcda758b94ac9a171c3f8059a065bdd433cfd9da5789f85d9a3be45a73bc5f1308c0991b2fd5cec0b11fa27d7eeea3273025300e0603551d0f0101ff04040302078030130603551d0e040c040a416e61204cc3b370657a300a06082a8648ce3d0403020349003046022100871158b887973e04034747995358dea51032602153b05e6bf5cf1b8778d0a623022100be16176bd54cab25f50e34ed130d6324c43f7f1d775f307a28a8b8f2109791e4318204c7308204c30201013039302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a0208399eb3a7749a61f6300b0609608648016503040201a08184301806092a864886f70d010903310b06092a864886f70d010701302f06092a864886f70d01090431220420e243989a6cc0f8dd3048764de75c6849ea1dde4e74226f09bf6c182c449a3a493037060b2a864886f70d010910022f3128302630243022042013c811b56e109e9ce48cd885cd2686750c380fde4bbd887399239d013d70c8cc300a06082a8648ce3d04030204463044022030e89724e9a7bc7742c3070ea844c8c6135fc2f1f090ff02d4b8e013787f748a02202d7e5a32fa3be2e4497b868bdbea7dc74cea338e9af063796a16f58b592f8c9ea182039930820395060b2a864886f70d010910020e318203843082038006092a864886f70d010702a08203713082036d020101310d300b06096086480165030402013065060b2a864886f70d0109100104a0560454305202010106032a0304302f300b06096086480165030402010420d978156a516b3550c5c59d8f842ae75f4b086e551f91176ba97a3c5b1a9de88102012a180f32303236303933303132303030305a3003020101a08201b8308201b430820159a003020102020816b536ff6d9413dc300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200044430921fc91a68617c785dbc7c013ede1800b37704747bd9b7280e20e475251cca9f1799b84f3cc4cf4640590697e4c425fde6329b1878f7198e91ca9fafd9e7a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100b26b717908be147fccbe24182e8c0072e920af74fd217c818ee34950d3a8aa41022100a6d042065cc3048680da599203465f7ac6322d76a8409dfc9c79435a72c2a30a3182013430820130020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020816b536ff6d9413dc300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a301830160414f4b0c8ba1da2495736b3b8ebba20262ca957c5bd302f06092a864886f70d0109043122042042f3033bb9a81c0ed2dd9c2f2b07a99c2278d32eeeaafc2eb6fd1545090e8a26300a06082a8648ce3d04030204473045022100cf6c1039534dd01fee54a21ba821557991d573eb63bb1b1aae7738bb40acf08502207225a9f503c13c87b958ee8d83776e621da7b6cadd14c4fd4631d562b4ff1d7c", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F5", + "seal": "S0", + "signers": [ + { + "holder": "Ana López", + "issuer": "Ana López", + "result": "valid", + "seal_time": "2026-09-30T12:00:00Z", + "before_round_time": true + }, + { + "holder": "46218f3323671ebac0c2383e2382322e0a05624f864841d69933d9651b761139", + "issuer": "", + "result": "absent", + "before_round_time": false + } + ] + }, + { + "name": "alg 2: no seal", + "security_cbor": "a30071646174656b6579732d7365637572697479010102590311a3000201582381582013c811b56e109e9ce48cd885cd2686750c380fde4bbd887399239d013d70c8cc025902e4308202e006092a864886f70d010702a08202d1308202cd020101310d300b0609608648016503040201300b06092a864886f70d010701a082017c308201783082011da0030201020208399eb3a7749a61f6300a06082a8648ce3d040302302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a301e170d3230303130313030303030305a170d3430303130313030303030305a302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a3059301306072a8648ce3d020106082a8648ce3d030107034200049ba7f4999209b8a6d393b928bbd84aae10eefcda758b94ac9a171c3f8059a065bdd433cfd9da5789f85d9a3be45a73bc5f1308c0991b2fd5cec0b11fa27d7eeea3273025300e0603551d0f0101ff04040302078030130603551d0e040c040a416e61204cc3b370657a300a06082a8648ce3d0403020349003046022100871158b887973e04034747995358dea51032602153b05e6bf5cf1b8778d0a623022100be16176bd54cab25f50e34ed130d6324c43f7f1d775f307a28a8b8f2109791e43182012a308201260201013039302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a0208399eb3a7749a61f6300b0609608648016503040201a08184301806092a864886f70d010903310b06092a864886f70d010701302f06092a864886f70d010904312204208a0a6d927c8efe36ab066eaa1321276832694a7d36b38e01786e2fca1ba4387d3037060b2a864886f70d010910022f3128302630243022042013c811b56e109e9ce48cd885cd2686750c380fde4bbd887399239d013d70c8cc300a06082a8648ce3d0403020446304402202405ddf8c290eca0488e097209f2b5d4fd00ef228bcf2dfacdd21620614de47d022069ae19a347d757338f52b04e0dff7c199a03f229e03fe60e5c04c61be7d346ac", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F5", + "seal": "S0", + "signers": [ + { + "holder": "Ana López", + "issuer": "Ana López", + "result": "without seal", + "before_round_time": false + } + ] + }, + { + "name": "alg 2: a seal from before the certificate was valid", + "security_cbor": "a30071646174656b6579732d73656375726974790101025906b0a3000201582381582013c811b56e109e9ce48cd885cd2686750c380fde4bbd887399239d013d70c8cc025906833082067f06092a864886f70d010702a08206703082066c020101310d300b0609608648016503040201300b06092a864886f70d010701a082017c308201783082011da0030201020208399eb3a7749a61f6300a06082a8648ce3d040302302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a301e170d3230303130313030303030305a170d3430303130313030303030305a302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a3059301306072a8648ce3d020106082a8648ce3d030107034200049ba7f4999209b8a6d393b928bbd84aae10eefcda758b94ac9a171c3f8059a065bdd433cfd9da5789f85d9a3be45a73bc5f1308c0991b2fd5cec0b11fa27d7eeea3273025300e0603551d0f0101ff04040302078030130603551d0e040c040a416e61204cc3b370657a300a06082a8648ce3d0403020349003046022100871158b887973e04034747995358dea51032602153b05e6bf5cf1b8778d0a623022100be16176bd54cab25f50e34ed130d6324c43f7f1d775f307a28a8b8f2109791e4318204c9308204c50201013039302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a0208399eb3a7749a61f6300b0609608648016503040201a08184301806092a864886f70d010903310b06092a864886f70d010701302f06092a864886f70d010904312204208a0a6d927c8efe36ab066eaa1321276832694a7d36b38e01786e2fca1ba4387d3037060b2a864886f70d010910022f3128302630243022042013c811b56e109e9ce48cd885cd2686750c380fde4bbd887399239d013d70c8cc300a06082a8648ce3d04030204483046022100a53ff1be1b099213410faaf5d129f313f3805943b0ca9a91548095523e3e6ab40221008f2f80658797162a7635698ae27d641099a2a56a704518c39a7457943cc0307da182039930820395060b2a864886f70d010910020e318203843082038006092a864886f70d010702a08203713082036d020101310d300b06096086480165030402013065060b2a864886f70d0109100104a0560454305202010106032a0304302f300b06096086480165030402010420ac6338330973f43870125e217bb36d225633fc89616b39f9ed38d320c383f89102012a180f32303139303130313030303030305a3003020101a08201b8308201b430820159a003020102020816b536ff6d9413dc300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200044430921fc91a68617c785dbc7c013ede1800b37704747bd9b7280e20e475251cca9f1799b84f3cc4cf4640590697e4c425fde6329b1878f7198e91ca9fafd9e7a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100b26b717908be147fccbe24182e8c0072e920af74fd217c818ee34950d3a8aa41022100a6d042065cc3048680da599203465f7ac6322d76a8409dfc9c79435a72c2a30a3182013430820130020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020816b536ff6d9413dc300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a301830160414f4b0c8ba1da2495736b3b8ebba20262ca957c5bd302f06092a864886f70d0109043122042000ffc82983ab7841e9c7c7221c7df79d31f4d835953932a940efd1c4e38a1165300a06082a8648ce3d0403020447304502207264362223b28bd85933b98a7320b68d5221c78078f4e410d8d5ab26a96162c7022100f2b315a3fccf8b533d430c8722cbac202f59391b521d4b329e6471ddbda9aa95", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F5", + "seal": "S0", + "signers": [ + { + "holder": "Ana López", + "issuer": "Ana López", + "result": "invalid seal", + "before_round_time": false + } + ] + }, + { + "name": "alg 2: a key 3 beside it", + "security_cbor": "a40071646174656b6579732d73656375726974790101025906aea3000201582381582013c811b56e109e9ce48cd885cd2686750c380fde4bbd887399239d013d70c8cc025906813082067d06092a864886f70d010702a082066e3082066a020101310d300b0609608648016503040201300b06092a864886f70d010701a082017c308201783082011da0030201020208399eb3a7749a61f6300a06082a8648ce3d040302302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a301e170d3230303130313030303030305a170d3430303130313030303030305a302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a3059301306072a8648ce3d020106082a8648ce3d030107034200049ba7f4999209b8a6d393b928bbd84aae10eefcda758b94ac9a171c3f8059a065bdd433cfd9da5789f85d9a3be45a73bc5f1308c0991b2fd5cec0b11fa27d7eeea3273025300e0603551d0f0101ff04040302078030130603551d0e040c040a416e61204cc3b370657a300a06082a8648ce3d0403020349003046022100871158b887973e04034747995358dea51032602153b05e6bf5cf1b8778d0a623022100be16176bd54cab25f50e34ed130d6324c43f7f1d775f307a28a8b8f2109791e4318204c7308204c30201013039302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a0208399eb3a7749a61f6300b0609608648016503040201a08184301806092a864886f70d010903310b06092a864886f70d010701302f06092a864886f70d010904312204208a0a6d927c8efe36ab066eaa1321276832694a7d36b38e01786e2fca1ba4387d3037060b2a864886f70d010910022f3128302630243022042013c811b56e109e9ce48cd885cd2686750c380fde4bbd887399239d013d70c8cc300a06082a8648ce3d0403020447304502210088b768db47d80f09500a967980ad2ac0a2eb82f458777e891f593e34cc14d0820220659290ece942794938661a0484c3bd5b0530b42344b0bdc01312980c5ba3fbcea182039830820394060b2a864886f70d010910020e318203833082037f06092a864886f70d010702a08203703082036c020101310d300b06096086480165030402013065060b2a864886f70d0109100104a0560454305202010106032a0304302f300b06096086480165030402010420b4d58800f353fd51a2be33700e54876fefe6d247dbd0accc92f6397889a8ba4702012a180f32303236303933303132303030305a3003020101a08201b8308201b430820159a003020102020816b536ff6d9413dc300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200044430921fc91a68617c785dbc7c013ede1800b37704747bd9b7280e20e475251cca9f1799b84f3cc4cf4640590697e4c425fde6329b1878f7198e91ca9fafd9e7a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100b26b717908be147fccbe24182e8c0072e920af74fd217c818ee34950d3a8aa41022100a6d042065cc3048680da599203465f7ac6322d76a8409dfc9c79435a72c2a30a318201333082012f020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020816b536ff6d9413dc300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a301830160414f4b0c8ba1da2495736b3b8ebba20262ca957c5bd302f06092a864886f70d010904312204202a52076c932f135a14b86a88f42b66b77977d5b5d43cba3d115e89ee5fa1110b300a06082a8648ce3d0403020446304402206d1b9fb6d44839be881774b7498bb3b765666102095c3996e98e551f54f63bee0220190f2d2305c490196dd6a9b9bc348b6986f656434ba6b560e5dc55efd2084bd90346a20001014101", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F5", + "seal": "S1", + "signers": [ + { + "holder": "Ana López", + "issuer": "Ana López", + "result": "valid", + "seal_time": "2026-09-30T12:00:00Z", + "before_round_time": true + } + ] + }, + { + "name": "alg 2: another head", + "security_cbor": "a30071646174656b6579732d73656375726974790101025906afa3000201582381582013c811b56e109e9ce48cd885cd2686750c380fde4bbd887399239d013d70c8cc025906823082067e06092a864886f70d010702a082066f3082066b020101310d300b0609608648016503040201300b06092a864886f70d010701a082017c308201783082011da0030201020208399eb3a7749a61f6300a06082a8648ce3d040302302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a301e170d3230303130313030303030305a170d3430303130313030303030305a302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a3059301306072a8648ce3d020106082a8648ce3d030107034200049ba7f4999209b8a6d393b928bbd84aae10eefcda758b94ac9a171c3f8059a065bdd433cfd9da5789f85d9a3be45a73bc5f1308c0991b2fd5cec0b11fa27d7eeea3273025300e0603551d0f0101ff04040302078030130603551d0e040c040a416e61204cc3b370657a300a06082a8648ce3d0403020349003046022100871158b887973e04034747995358dea51032602153b05e6bf5cf1b8778d0a623022100be16176bd54cab25f50e34ed130d6324c43f7f1d775f307a28a8b8f2109791e4318204c8308204c40201013039302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a0208399eb3a7749a61f6300b0609608648016503040201a08184301806092a864886f70d010903310b06092a864886f70d010701302f06092a864886f70d010904312204208a0a6d927c8efe36ab066eaa1321276832694a7d36b38e01786e2fca1ba4387d3037060b2a864886f70d010910022f3128302630243022042013c811b56e109e9ce48cd885cd2686750c380fde4bbd887399239d013d70c8cc300a06082a8648ce3d0403020446304402207a1647947225c8f411342b312c22561009adb7b7ce3302d76f98cc0820b143c002205010984a5c17f64b3f12548fed1cf39ec99926848dae4d68148a3edc9ff90203a182039a30820396060b2a864886f70d010910020e318203853082038106092a864886f70d010702a08203723082036e020101310d300b06096086480165030402013065060b2a864886f70d0109100104a0560454305202010106032a0304302f300b06096086480165030402010420635c606d8492e086879058d5ed73f29d342b9849792743228d08f00ebe4c81d102012a180f32303236303933303132303030305a3003020101a08201b8308201b430820159a003020102020816b536ff6d9413dc300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200044430921fc91a68617c785dbc7c013ede1800b37704747bd9b7280e20e475251cca9f1799b84f3cc4cf4640590697e4c425fde6329b1878f7198e91ca9fafd9e7a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100b26b717908be147fccbe24182e8c0072e920af74fd217c818ee34950d3a8aa41022100a6d042065cc3048680da599203465f7ac6322d76a8409dfc9c79435a72c2a30a3182013530820131020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020816b536ff6d9413dc300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a301830160414f4b0c8ba1da2495736b3b8ebba20262ca957c5bd302f06092a864886f70d010904312204204aa9eb4ecca82d42d6f3408fd0ee151cc773de1b32f642dfff5470c4f143a0ac300a06082a8648ce3d04030204483046022100ea89187fe24bbefcc313b9e666adbe7ae53c0a95d97ab3a43de657e308253d20022100ae8d4020e8db3e85da2a2591d9caeb1c0099521cd97535d4f0a851a1c0f53ac8", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3787ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F2", + "seal": "S0", + "signers": [ + { + "holder": "Ana López", + "issuer": "Ana López", + "result": "invalid", + "before_round_time": false + } + ] + }, + { + "name": "alg 2: without the context of a capsule", + "security_cbor": "a30071646174656b6579732d73656375726974790101025906afa3000201582381582013c811b56e109e9ce48cd885cd2686750c380fde4bbd887399239d013d70c8cc025906823082067e06092a864886f70d010702a082066f3082066b020101310d300b0609608648016503040201300b06092a864886f70d010701a082017c308201783082011da0030201020208399eb3a7749a61f6300a06082a8648ce3d040302302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a301e170d3230303130313030303030305a170d3430303130313030303030305a302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a3059301306072a8648ce3d020106082a8648ce3d030107034200049ba7f4999209b8a6d393b928bbd84aae10eefcda758b94ac9a171c3f8059a065bdd433cfd9da5789f85d9a3be45a73bc5f1308c0991b2fd5cec0b11fa27d7eeea3273025300e0603551d0f0101ff04040302078030130603551d0e040c040a416e61204cc3b370657a300a06082a8648ce3d0403020349003046022100871158b887973e04034747995358dea51032602153b05e6bf5cf1b8778d0a623022100be16176bd54cab25f50e34ed130d6324c43f7f1d775f307a28a8b8f2109791e4318204c8308204c40201013039302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a0208399eb3a7749a61f6300b0609608648016503040201a08184301806092a864886f70d010903310b06092a864886f70d010701302f06092a864886f70d010904312204208a0a6d927c8efe36ab066eaa1321276832694a7d36b38e01786e2fca1ba4387d3037060b2a864886f70d010910022f3128302630243022042013c811b56e109e9ce48cd885cd2686750c380fde4bbd887399239d013d70c8cc300a06082a8648ce3d0403020447304502210098cce1331f2bcbeead0a8f72d10e370e88547acbb7a060774476fbbeefbcb4dd02203cc8ad8db9161990e9405998479d55122325b0d0aacf592db0a3489615244822a182039930820395060b2a864886f70d010910020e318203843082038006092a864886f70d010702a08203713082036d020101310d300b06096086480165030402013065060b2a864886f70d0109100104a0560454305202010106032a0304302f300b06096086480165030402010420dcd9f7eb86fc8586a0bb1f37714d9f11e2aa854872daacc521058ab89d29d0e602012a180f32303236303933303132303030305a3003020101a08201b8308201b430820159a003020102020816b536ff6d9413dc300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200044430921fc91a68617c785dbc7c013ede1800b37704747bd9b7280e20e475251cca9f1799b84f3cc4cf4640590697e4c425fde6329b1878f7198e91ca9fafd9e7a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100b26b717908be147fccbe24182e8c0072e920af74fd217c818ee34950d3a8aa41022100a6d042065cc3048680da599203465f7ac6322d76a8409dfc9c79435a72c2a30a3182013430820130020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020816b536ff6d9413dc300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a301830160414f4b0c8ba1da2495736b3b8ebba20262ca957c5bd302f06092a864886f70d010904312204205fe6287d68fc6e459c852cb7ac7bf5050374de18353747e70bb9a219ecba780a300a06082a8648ce3d04030204473045022100d7d713c85125e46ccecb2f5fb4e2db990b5e54f71b6486e5b81e64b8ba56efcd022077904deb3e45c01f144899fdeacd3f628c3cb672dfe188d84ae99578ad853f2c", + "no_context": true, + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F1", + "seal": "S0" + }, + { + "name": "alg 2: SIGNERS out of order", + "security_cbor": "a30071646174656b6579732d7365637572697479010102584fa30002015845825820ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb58203e23e8160039594a33894f6564e1b1348bbd7a0088d42c4acb73eeaed59c009d02423000", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F1", + "seal": "S0" + }, + { + "name": "alg 2: an empty SIGNERS", + "security_cbor": "a30071646174656b6579732d73656375726974790101024aa3000201418002423000", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F1", + "seal": "S0" + }, + { + "name": "alg 2: not a CMS", + "security_cbor": "a30071646174656b6579732d73656375726974790101025832a3000201582381582013c811b56e109e9ce48cd885cd2686750c380fde4bbd887399239d013d70c8cc02476e6f7420444552", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F1", + "seal": "S0" + }, + { + "name": "seal: before the round time", + "security_cbor": "a40071646174656b6579732d73656375726974790101025869a30001015820ea4a6c63e29c520abef5507b132ec5f9954776aebebe7b92421eea691446d22c02584064d805ef80b891e851aa844d3c455a4b95752f88ee0f1d8e3d0d28c7431d516c9838294e7c361f20c7c9a33e7c7c8803ad934bff6174aae97a88ad8fac41f90a03590386a200020159037f3082037b06092a864886f70d010702a082036c30820368020101310d300b06096086480165030402013060060b2a864886f70d0109100104a051044f304d02010106032a0304302f300b060960864801650304020104203d799ba25f479a7f2d0c37fcf326752ce74b3a0f654dbb9026738c763afe068302012a180f32303236303933303132303030305aa08201b8308201b430820159a003020102020816b536ff6d9413dc300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200044430921fc91a68617c785dbc7c013ede1800b37704747bd9b7280e20e475251cca9f1799b84f3cc4cf4640590697e4c425fde6329b1878f7198e91ca9fafd9e7a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100b26b717908be147fccbe24182e8c0072e920af74fd217c818ee34950d3a8aa41022100a6d042065cc3048680da599203465f7ac6322d76a8409dfc9c79435a72c2a30a3182013430820130020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020816b536ff6d9413dc300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a301830160414f4b0c8ba1da2495736b3b8ebba20262ca957c5bd302f06092a864886f70d010904312204205fe6075847442b1eea668b09c8f86114d1271afe9991081fc0cdb5a31588da17300a06082a8648ce3d04030204473045022035826188c3bb3188be9cf91df2dc4304c17631fafffe8f2c0f80642bbc6c25b6022100908217b93a2edc80ef83409cd4442a388f18364dbdeced11e0e18d6677221ba0", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F4", + "seal": "S4", + "seal_holder": "Autoridad de Sellado de prueba", + "seal_time": "2026-09-30T12:00:00Z" + }, + { + "name": "seal: after the round time", + "security_cbor": "a40071646174656b6579732d73656375726974790101025869a30001015820ea4a6c63e29c520abef5507b132ec5f9954776aebebe7b92421eea691446d22c02584064d805ef80b891e851aa844d3c455a4b95752f88ee0f1d8e3d0d28c7431d516c9838294e7c361f20c7c9a33e7c7c8803ad934bff6174aae97a88ad8fac41f90a03590386a200020159037f3082037b06092a864886f70d010702a082036c30820368020101310d300b06096086480165030402013060060b2a864886f70d0109100104a051044f304d02010106032a0304302f300b060960864801650304020104203d799ba25f479a7f2d0c37fcf326752ce74b3a0f654dbb9026738c763afe068302012a180f32303330303130313030303130305aa08201b8308201b430820159a003020102020816b536ff6d9413dc300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200044430921fc91a68617c785dbc7c013ede1800b37704747bd9b7280e20e475251cca9f1799b84f3cc4cf4640590697e4c425fde6329b1878f7198e91ca9fafd9e7a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100b26b717908be147fccbe24182e8c0072e920af74fd217c818ee34950d3a8aa41022100a6d042065cc3048680da599203465f7ac6322d76a8409dfc9c79435a72c2a30a3182013430820130020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020816b536ff6d9413dc300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a301830160414f4b0c8ba1da2495736b3b8ebba20262ca957c5bd302f06092a864886f70d010904312204206ec611e50ba08a9652626f2e01c82ecea7dcc274e609f2aa345d021863dcad7d300a06082a8648ce3d04030204473045022058e49c9469d43a91f95e2f85cef863047352a1dcabf91b5e7e33045b2999b49b022100ef93e6c13cdcbe5b60aa931f645f5289a594ff09c1914623c035fcc09c6eb46d", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F4", + "seal": "S5", + "seal_holder": "Autoridad de Sellado de prueba", + "seal_time": "2030-01-01T00:01:00Z" + }, + { + "name": "seal: the accuracy reaches the round time", + "security_cbor": "a40071646174656b6579732d73656375726974790101025869a30001015820ea4a6c63e29c520abef5507b132ec5f9954776aebebe7b92421eea691446d22c02584064d805ef80b891e851aa844d3c455a4b95752f88ee0f1d8e3d0d28c7431d516c9838294e7c361f20c7c9a33e7c7c8803ad934bff6174aae97a88ad8fac41f90a0359038aa20002015903833082037f06092a864886f70d010702a08203703082036c020101310d300b06096086480165030402013065060b2a864886f70d0109100104a0560454305202010106032a0304302f300b060960864801650304020104203d799ba25f479a7f2d0c37fcf326752ce74b3a0f654dbb9026738c763afe068302012a180f32303239313233313233353935395a3003020102a08201b8308201b430820159a003020102020816b536ff6d9413dc300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200044430921fc91a68617c785dbc7c013ede1800b37704747bd9b7280e20e475251cca9f1799b84f3cc4cf4640590697e4c425fde6329b1878f7198e91ca9fafd9e7a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100b26b717908be147fccbe24182e8c0072e920af74fd217c818ee34950d3a8aa41022100a6d042065cc3048680da599203465f7ac6322d76a8409dfc9c79435a72c2a30a318201333082012f020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020816b536ff6d9413dc300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a301830160414f4b0c8ba1da2495736b3b8ebba20262ca957c5bd302f06092a864886f70d01090431220420471721ed38663795e173165313eb086b98a36585f824a592258e6796265b290c300a06082a8648ce3d0403020446304402200d7a4e1cbb38fc5ab7e36e68a02ff0ce522afd5d5339f3f498a2ed38b5d5929e02204e3fc60d1475324c1262d93e2ccc3220b6f20d5c2789ab98de90fc725095dc68", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F4", + "seal": "S5", + "seal_holder": "Autoridad de Sellado de prueba", + "seal_time": "2029-12-31T23:59:59Z" + }, + { + "name": "seal: over another subject", + "security_cbor": "a40071646174656b6579732d73656375726974790101025869a30001015820ea4a6c63e29c520abef5507b132ec5f9954776aebebe7b92421eea691446d22c02584064d805ef80b891e851aa844d3c455a4b95752f88ee0f1d8e3d0d28c7431d516c9838294e7c361f20c7c9a33e7c7c8803ad934bff6174aae97a88ad8fac41f90a03590386a200020159037f3082037b06092a864886f70d010702a082036c30820368020101310d300b06096086480165030402013060060b2a864886f70d0109100104a051044f304d02010106032a0304302f300b06096086480165030402010420d9298a10d1b0735837dc4bd85dac641b0f3cef27a47e5d53a54f2f3f5b2fcffa02012a180f32303236303933303132303030305aa08201b8308201b430820159a003020102020816b536ff6d9413dc300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200044430921fc91a68617c785dbc7c013ede1800b37704747bd9b7280e20e475251cca9f1799b84f3cc4cf4640590697e4c425fde6329b1878f7198e91ca9fafd9e7a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100b26b717908be147fccbe24182e8c0072e920af74fd217c818ee34950d3a8aa41022100a6d042065cc3048680da599203465f7ac6322d76a8409dfc9c79435a72c2a30a3182013430820130020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020816b536ff6d9413dc300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a301830160414f4b0c8ba1da2495736b3b8ebba20262ca957c5bd302f06092a864886f70d0109043122042020b72ae51c6f228bc1779cb6f447612e6884942940b9d925cf0600ec815f8eb6300a06082a8648ce3d0403020447304502204acb02f9a823d1d511923009bbba27633f0fb1d86abf288e8c91fac127ffeea402210091ed23012ba6318ba11640fadd5b532cf162b9be3911d6f724b812f17d38c7d3", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F4", + "seal": "S3" + }, + { + "name": "seal: the authority had expired at its time", + "security_cbor": "a40071646174656b6579732d73656375726974790101025869a30001015820ea4a6c63e29c520abef5507b132ec5f9954776aebebe7b92421eea691446d22c02584064d805ef80b891e851aa844d3c455a4b95752f88ee0f1d8e3d0d28c7431d516c9838294e7c361f20c7c9a33e7c7c8803ad934bff6174aae97a88ad8fac41f90a03590386a200020159037f3082037b06092a864886f70d010702a082036c30820368020101310d300b06096086480165030402013060060b2a864886f70d0109100104a051044f304d02010106032a0304302f300b060960864801650304020104203d799ba25f479a7f2d0c37fcf326752ce74b3a0f654dbb9026738c763afe068302012a180f32303431303130313030303030305aa08201b8308201b430820159a003020102020816b536ff6d9413dc300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200044430921fc91a68617c785dbc7c013ede1800b37704747bd9b7280e20e475251cca9f1799b84f3cc4cf4640590697e4c425fde6329b1878f7198e91ca9fafd9e7a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100b26b717908be147fccbe24182e8c0072e920af74fd217c818ee34950d3a8aa41022100a6d042065cc3048680da599203465f7ac6322d76a8409dfc9c79435a72c2a30a3182013430820130020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020816b536ff6d9413dc300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a301830160414f4b0c8ba1da2495736b3b8ebba20262ca957c5bd302f06092a864886f70d01090431220420952183c5071984e2814df7f00ebb35b71da2bdcbbdd4dbe03d05d716ab67687b300a06082a8648ce3d04030204473045022100c206a35b6ac94901a3fcc2e507a2a21f3d23ba85f2e156d98e87cb045531f7db02203e32681a6f58a9c6abe88c04cb4debf27ce8cd5d2d5b7c954e002a3d14533ef8", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F4", + "seal": "S3" + }, + { + "name": "seal: a TSTInfo of version 2", + "security_cbor": "a40071646174656b6579732d73656375726974790101025869a30001015820ea4a6c63e29c520abef5507b132ec5f9954776aebebe7b92421eea691446d22c02584064d805ef80b891e851aa844d3c455a4b95752f88ee0f1d8e3d0d28c7431d516c9838294e7c361f20c7c9a33e7c7c8803ad934bff6174aae97a88ad8fac41f90a03590386a200020159037f3082037b06092a864886f70d010702a082036c30820368020101310d300b06096086480165030402013060060b2a864886f70d0109100104a051044f304d02010206032a0304302f300b060960864801650304020104203d799ba25f479a7f2d0c37fcf326752ce74b3a0f654dbb9026738c763afe068302012a180f32303236303933303132303030305aa08201b8308201b430820159a003020102020816b536ff6d9413dc300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200044430921fc91a68617c785dbc7c013ede1800b37704747bd9b7280e20e475251cca9f1799b84f3cc4cf4640590697e4c425fde6329b1878f7198e91ca9fafd9e7a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100b26b717908be147fccbe24182e8c0072e920af74fd217c818ee34950d3a8aa41022100a6d042065cc3048680da599203465f7ac6322d76a8409dfc9c79435a72c2a30a3182013430820130020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020816b536ff6d9413dc300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a301830160414f4b0c8ba1da2495736b3b8ebba20262ca957c5bd302f06092a864886f70d010904312204207e5374ba63316e3801f8ceee00bf0d1654583ad4b2abf0c568aee47d8b8cec8a300a06082a8648ce3d04030204473045022100b8760f30aaea150c3cc178d6f8d69da5aa1658a39fb8c18519de80927b9becad022017b1bbd893a5cd8e5f8406499d77a17e5e1234007aba5a0dd656609ab30109ef", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F4", + "seal": "S2" + }, + { + "name": "seal: not DER", + "security_cbor": "a40071646174656b6579732d73656375726974790101025869a30001015820ea4a6c63e29c520abef5507b132ec5f9954776aebebe7b92421eea691446d22c02584064d805ef80b891e851aa844d3c455a4b95752f88ee0f1d8e3d0d28c7431d516c9838294e7c361f20c7c9a33e7c7c8803ad934bff6174aae97a88ad8fac41f90a034ca2000201476e6f7420444552", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F4", + "seal": "S2" + }, + { + "name": "seal: SHA-384 in the imprint", + "security_cbor": "a40071646174656b6579732d73656375726974790101025869a30001015820ea4a6c63e29c520abef5507b132ec5f9954776aebebe7b92421eea691446d22c02584064d805ef80b891e851aa844d3c455a4b95752f88ee0f1d8e3d0d28c7431d516c9838294e7c361f20c7c9a33e7c7c8803ad934bff6174aae97a88ad8fac41f90a03590396a200020159038f3082038b06092a864886f70d010702a082037c30820378020101310d300b06096086480165030402013070060b2a864886f70d0109100104a061045f305d02010106032a0304303f300b06096086480165030402020430e8ebf3d61bf90b15bca8f52f442c258a22fd8813dde6462308f13d3d2ae3bc512fb5b2613a392c68a94f4281a60ee3be02012a180f32303236303933303132303030305aa08201b8308201b430820159a003020102020816b536ff6d9413dc300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200044430921fc91a68617c785dbc7c013ede1800b37704747bd9b7280e20e475251cca9f1799b84f3cc4cf4640590697e4c425fde6329b1878f7198e91ca9fafd9e7a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100b26b717908be147fccbe24182e8c0072e920af74fd217c818ee34950d3a8aa41022100a6d042065cc3048680da599203465f7ac6322d76a8409dfc9c79435a72c2a30a3182013430820130020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020816b536ff6d9413dc300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a301830160414f4b0c8ba1da2495736b3b8ebba20262ca957c5bd302f06092a864886f70d010904312204200fb8e41b236629a2ce055afa2f6fc3bc4fbc56a606cb5dc6eb44388b65a65133300a06082a8648ce3d0403020447304502202cf305a8f490c47d643b1321ec74fc560d720c782f940120b8c72feb44c64603022100e8bc71c72a78453cc208edf5a8ef00ab72d0f180f21ebfb016108fb2dd30334f", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F4", + "seal": "S1" + }, + { + "name": "seal: without a context, as a reader of v0.10", + "security_cbor": "a40071646174656b6579732d73656375726974790101025869a30001015820ea4a6c63e29c520abef5507b132ec5f9954776aebebe7b92421eea691446d22c02584064d805ef80b891e851aa844d3c455a4b95752f88ee0f1d8e3d0d28c7431d516c9838294e7c361f20c7c9a33e7c7c8803ad934bff6174aae97a88ad8fac41f90a03590386a200020159037f3082037b06092a864886f70d010702a082036c30820368020101310d300b06096086480165030402013060060b2a864886f70d0109100104a051044f304d02010106032a0304302f300b060960864801650304020104203d799ba25f479a7f2d0c37fcf326752ce74b3a0f654dbb9026738c763afe068302012a180f32303236303933303132303030305aa08201b8308201b430820159a003020102020816b536ff6d9413dc300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200044430921fc91a68617c785dbc7c013ede1800b37704747bd9b7280e20e475251cca9f1799b84f3cc4cf4640590697e4c425fde6329b1878f7198e91ca9fafd9e7a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100b26b717908be147fccbe24182e8c0072e920af74fd217c818ee34950d3a8aa41022100a6d042065cc3048680da599203465f7ac6322d76a8409dfc9c79435a72c2a30a3182013430820130020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020816b536ff6d9413dc300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a301830160414f4b0c8ba1da2495736b3b8ebba20262ca957c5bd302f06092a864886f70d010904312204205fe6075847442b1eea668b09c8f86114d1271afe9991081fc0cdb5a31588da17300a06082a8648ce3d04030204473045022100f3e262b82a8270b9ba9ac7c53e3ac684cfafb8799ca3543161e5f4883dd7f1cc02204c806cc886fbd06e0eecc1e3a3857fb33741f04a5d0f4e3f6327f1a895df483e", + "no_context": true, + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F1", + "seal": "S1" + }, + { + "name": "seal: over a capsule without a signature", + "security_cbor": "a30071646174656b6579732d7365637572697479010103590386a200020159037f3082037b06092a864886f70d010702a082036c30820368020101310d300b06096086480165030402013060060b2a864886f70d0109100104a051044f304d02010106032a0304302f300b060960864801650304020104202c95d37cb9658ed6387ff8e29854bbff409a1c4456e17ab6d2c46eeb54d7b3eb02012a180f32303236303933303132303030305aa08201b8308201b430820159a003020102020816b536ff6d9413dc300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200044430921fc91a68617c785dbc7c013ede1800b37704747bd9b7280e20e475251cca9f1799b84f3cc4cf4640590697e4c425fde6329b1878f7198e91ca9fafd9e7a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100b26b717908be147fccbe24182e8c0072e920af74fd217c818ee34950d3a8aa41022100a6d042065cc3048680da599203465f7ac6322d76a8409dfc9c79435a72c2a30a3182013430820130020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020816b536ff6d9413dc300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a301830160414f4b0c8ba1da2495736b3b8ebba20262ca957c5bd302f06092a864886f70d0109043122042016bf09210739e6175026faad38a0095930e12eaf345d0e740cdaf4aa5022f143300a06082a8648ce3d04030204473045022100e9c7003e488da05574e7bb2828349e8ce5d324edc32e4ab996d1b6c0335a090502206c5d0742831aa0c9a99315560dbb1e5550522f44bb9fb4ebc9482e9f9f4c911b", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F0", + "seal": "S4", + "seal_holder": "Autoridad de Sellado de prueba", + "seal_time": "2026-09-30T12:00:00Z" + } + ] +} diff --git a/testdata/vectors/tlock_ibe.json b/testdata/vectors/tlock_ibe.json index a0aa127..dc16e05 100644 --- a/testdata/vectors/tlock_ibe.json +++ b/testdata/vectors/tlock_ibe.json @@ -1,5 +1,5 @@ { - "spec": "0.10", + "spec": "0.11", "description": "H2 of the IBE-CCA of tlock (spec §63 step 11): SHA-256 of \"IBE-H2\" and the 576 bytes of an element of GT, c1 before c0 at every level of the tower and each coordinate of Fp in 48 bytes big-endian (the order of kilic/bls12-381), truncated to 16 bytes. Generated by the reference implementation with drand/kyber-bls12381, the pairing of tlock.", "vectors": [ {