From aaeb01e5189a341fef75b6b62b5cf391825d8cd7 Mon Sep 17 00:00:00 2001 From: dimgigov Date: Mon, 15 Jun 2026 00:54:03 +0300 Subject: [PATCH] feat(nexus): production modular HTTP/1.1 server + compiler fixes - Rewrite apps/nexus with modular architecture: Config, Http, Errors, Parser, Router, Handlers, Server, Main - Use algebraic enums for ParseResult/FileResult/HttpError - Thread-pool server via Channel and spawn - Fix C backend type ordering for generic struct instances (Array_T, Iter_T) and algebraic enum struct payloads - Collect Slice_T types from struct fields and enum payloads - Fix match lowering for simple enums (direct value compare) - Resolve match expression return type from first arm - Infer element type for for-in over Array - Preserve generic type args in field access resolution - Add fflush to PrintLine/Print for immediate server logs - Add modern_features golden regression test - Regenerate golden expected.c files --- .gitignore | 1 + Makefile | 2 +- apps/nexus/public/index.html | 130 +- apps/nexus/src/Config.bux | 21 + apps/nexus/src/Errors.bux | 65 + apps/nexus/src/Handlers.bux | 94 + apps/nexus/src/Http.bux | 107 + apps/nexus/src/Main.bux | 579 +- apps/nexus/src/Parser.bux | 130 + apps/nexus/src/Router.bux | 46 + apps/nexus/src/Server.bux | 176 + bootstrap/cli.nim | 2 +- bootstrap/hir_lower.nim | 82 +- bootstrap/lexer.nim | 22 - bootstrap/lir.nim | 2 - bootstrap/lir_c_backend.nim | 163 +- bootstrap/lir_lower.nim | 12 +- bootstrap/manifest.nim | 1 - bootstrap/parser.nim | 8 - bootstrap/sema.nim | 11 +- .../plans/2026-06-14-nexus-rewrite.md | 1173 ++++ .../specs/2026-06-14-nexus-rewrite-design.md | 365 ++ rt/io.c | 2 + tests/borrow_test | Bin 1318472 -> 0 bytes tests/borrow_test.nim | 4 +- tests/golden/algebraic_enums/expected.c | 5271 ++++++++--------- tests/golden/enums/expected.c | 5251 ++++++++-------- tests/golden/fibonacci/expected.c | 5267 ++++++++-------- tests/golden/generics/expected.c | 5227 ++++++++-------- tests/golden/hello/expected.c | 5203 ++++++++-------- tests/golden/methods/expected.c | 5267 ++++++++-------- tests/golden/modern_features/bux.toml | 7 + tests/golden/modern_features/expected.c | 5056 ++++++++++++++++ tests/golden/modern_features/src/Main.bux | 49 + tests/golden/strings/expected.c | 5247 ++++++++-------- tests/golden/structs/expected.c | 5265 ++++++++-------- tests/hir_test.nim | 4 +- tests/lexer_test.nim | 4 +- tests/parser_test.nim | 2 +- tests/sema_test.nim | 2 +- 40 files changed, 28530 insertions(+), 21790 deletions(-) create mode 100644 apps/nexus/src/Config.bux create mode 100644 apps/nexus/src/Errors.bux create mode 100644 apps/nexus/src/Handlers.bux create mode 100644 apps/nexus/src/Http.bux create mode 100644 apps/nexus/src/Parser.bux create mode 100644 apps/nexus/src/Router.bux create mode 100644 apps/nexus/src/Server.bux create mode 100644 docs/superpowers/plans/2026-06-14-nexus-rewrite.md create mode 100644 docs/superpowers/specs/2026-06-14-nexus-rewrite-design.md delete mode 100755 tests/borrow_test create mode 100644 tests/golden/modern_features/bux.toml create mode 100644 tests/golden/modern_features/expected.c create mode 100644 tests/golden/modern_features/src/Main.bux diff --git a/.gitignore b/.gitignore index 8761f11..d73f263 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,7 @@ tests/lexer_test tests/parser_test tests/sema_test tests/hir_test +tests/borrow_test tests/test_generics_parse tests/*.exe diff --git a/Makefile b/Makefile index d193e87..329b813 100644 --- a/Makefile +++ b/Makefile @@ -78,7 +78,7 @@ selfhost: build .PHONY: test-golden -GOLDEN_TESTS := hello fibonacci structs generics algebraic_enums enums methods strings +GOLDEN_TESTS := hello fibonacci structs generics algebraic_enums enums methods strings modern_features test-golden: build @echo "=== Golden tests ===" diff --git a/apps/nexus/public/index.html b/apps/nexus/public/index.html index 1f4024c..95499d1 100644 --- a/apps/nexus/public/index.html +++ b/apps/nexus/public/index.html @@ -1,129 +1 @@ - - - - - - Nexus — Bux HTTP Server - - - -
-

⚡ Nexus

-

High-performance HTTP Server — Built with Bux

- -
-

Features

-
    -
  • HTTP/1.1 — Full request parsing & response building
  • -
  • Multi-threaded — Configurable worker pool
  • -
  • HTTP/2 Detection — Upgrade-aware
  • -
  • WebSocket Upgrade — Handshake support
  • -
  • Static File Serving — With MIME type detection
  • -
  • JSON API Endpoints
  • -
-
- -
-

API Endpoints

-
- GET - /api/health -
-
- GET - /api/info -
-
- GET - /ws -
-
- - -
- - +Hello Nexus diff --git a/apps/nexus/src/Config.bux b/apps/nexus/src/Config.bux new file mode 100644 index 0000000..52c19ee --- /dev/null +++ b/apps/nexus/src/Config.bux @@ -0,0 +1,21 @@ +module Config { + +pub struct ServerConfig { + bindAddr: String; + port: int; + workerCount: int; + publicDir: String; + backlog: int; +} + +pub const func DefaultConfig() -> ServerConfig { + return ServerConfig { + bindAddr: "0.0.0.0", + port: 8080, + workerCount: 4, + publicDir: "public", + backlog: 128, + }; +} + +} diff --git a/apps/nexus/src/Errors.bux b/apps/nexus/src/Errors.bux new file mode 100644 index 0000000..124373d --- /dev/null +++ b/apps/nexus/src/Errors.bux @@ -0,0 +1,65 @@ +module Errors { + +import Http::{HttpRequest}; + +pub enum HttpError { + BadRequest, + NotFound, + MethodNotAllowed, + InternalError(String), +} + +pub enum ParseResult { + Ok(HttpRequest), + Err(HttpError), +} + +pub enum FileResult { + Ok(String), + Err(HttpError), +} + +pub func ParseResult_NewOk(req: HttpRequest) -> ParseResult { + let r: ParseResult = ParseResult { tag: ParseResult_Ok }; + r.data.Ok_0 = req; + return r; +} + +pub func ParseResult_NewErr(err: HttpError) -> ParseResult { + let r: ParseResult = ParseResult { tag: ParseResult_Err }; + r.data.Err_0 = err; + return r; +} + +pub func FileResult_NewOk(content: String) -> FileResult { + let r: FileResult = FileResult { tag: FileResult_Ok }; + r.data.Ok_0 = content; + return r; +} + +pub func FileResult_NewErr(err: HttpError) -> FileResult { + let r: FileResult = FileResult { tag: FileResult_Err }; + r.data.Err_0 = err; + return r; +} + +pub func FileResult_IsOk(r: FileResult) -> bool { + return r.tag == FileResult_Ok; +} + +pub func FileResult_Unwrap(r: FileResult) -> String { + return r.data.Ok_0; +} + +pub func FileResult_UnwrapErr(r: FileResult) -> HttpError { + return r.data.Err_0; +} + +pub func HttpError_ToString(err: HttpError) -> String { + if err.tag == HttpError_BadRequest { return "Bad Request"; } + if err.tag == HttpError_NotFound { return "Not Found"; } + if err.tag == HttpError_MethodNotAllowed { return "Method Not Allowed"; } + return err.data.InternalError_0; +} + +} diff --git a/apps/nexus/src/Handlers.bux b/apps/nexus/src/Handlers.bux new file mode 100644 index 0000000..ddd3ebd --- /dev/null +++ b/apps/nexus/src/Handlers.bux @@ -0,0 +1,94 @@ +module Handlers { + +import Std::String::{String_Eq, String_Contains}; +import Http::{HttpMethod, HttpRequest, HttpResponse, Http_NewResponse, Http_MimeType, RequestHeader_Get}; +import Errors::{HttpError, FileResult, FileResult_NewOk, FileResult_NewErr, FileResult_IsOk, FileResult_Unwrap, FileResult_UnwrapErr, HttpError_ToString}; + +extern func bux_strlen(s: String) -> uint; +extern func bux_file_exists(path: String) -> int; +extern func bux_read_file(path: String) -> String; +extern func bux_path_join(a: String, b: String) -> String; +extern func bux_sb_new(initial_cap: uint) -> *void; +extern func bux_sb_append(sb: *void, s: String); +extern func bux_sb_append_int(sb: *void, n: int64); +extern func bux_sb_build(sb: *void) -> String; +extern func bux_sb_free(sb: *void); + +pub func NotFoundResponse() -> HttpResponse { + return Http_NewResponse(404, "application/json; charset=utf-8", "{\"error\":\"not_found\"}"); +} + +pub func MethodNotAllowedResponse() -> HttpResponse { + return Http_NewResponse(405, "text/plain; charset=utf-8", "Method Not Allowed"); +} + +pub func ReadStaticFile(requestPath: String) -> FileResult { + if String_Contains(requestPath, "..") { + return FileResult_NewErr(HttpError { tag: HttpError_NotFound }); + } + + var filePath: String = requestPath; + if String_Eq(filePath, "/") { + filePath = "/index.html"; + } + + let fullPath: String = bux_path_join("public", filePath); + if bux_file_exists(fullPath) == 0 { + return FileResult_NewErr(HttpError { tag: HttpError_NotFound }); + } + + let content: String = bux_read_file(fullPath); + return FileResult_NewOk(content); +} + +func FileErrorResponse(err: HttpError) -> HttpResponse { + match err { + HttpError::NotFound => NotFoundResponse(), + _ => Http_NewResponse(500, "text/plain; charset=utf-8", HttpError_ToString(err)), + } +} + +pub func ServeStaticFile(req: HttpRequest) -> HttpResponse { + if req.method != HttpMethod_GET && req.method != HttpMethod_HEAD { + return MethodNotAllowedResponse(); + } + + let result: FileResult = ReadStaticFile(req.path); + if FileResult_IsOk(result) { + let content: String = FileResult_Unwrap(result); + return Http_NewResponse(200, Http_MimeType(req.path), content); + } + return FileErrorResponse(FileResult_UnwrapErr(result)); +} + +pub func HandleApiHealth() -> HttpResponse { + return Http_NewResponse(200, "application/json; charset=utf-8", + "{\"status\":\"ok\",\"server\":\"Nexus\",\"version\":\"0.2.0\"}"); +} + +pub func HandleApiInfo() -> HttpResponse { + return Http_NewResponse(200, "application/json; charset=utf-8", + "{\"name\":\"Nexus\",\"language\":\"Bux\",\"features\":[\"HTTP/1.1\",\"thread-pool\",\"algebraic-enums\"]}"); +} + +pub func HandleWebSocketUpgrade(req: HttpRequest) -> HttpResponse { + let wsKey: String = RequestHeader_Get(req, "Sec-WebSocket-Key"); + + var resp: HttpResponse; + resp.statusCode = 101; + resp.contentType = ""; + resp.body = ""; + + let sb: *void = bux_sb_new(256); + bux_sb_append(sb, "Upgrade: websocket\r\n"); + bux_sb_append(sb, "Connection: Upgrade\r\n"); + bux_sb_append(sb, "Sec-WebSocket-Accept: "); + bux_sb_append(sb, wsKey); + bux_sb_append(sb, "\r\n"); + resp.extraHeaders = bux_sb_build(sb); + bux_sb_free(sb); + + return resp; +} + +} diff --git a/apps/nexus/src/Http.bux b/apps/nexus/src/Http.bux new file mode 100644 index 0000000..2dceb74 --- /dev/null +++ b/apps/nexus/src/Http.bux @@ -0,0 +1,107 @@ +module Http { + +import Std::Array::{Array}; +import Std::String::{String_Eq, String_EndsWith, String_Contains}; + +pub enum HttpMethod { + GET, + POST, + PUT, + DELETE, + PATCH, + HEAD, + OPTIONS, + UNKNOWN, +} + +pub struct HeaderEntry { + key: String; + value: String; +} + +pub struct HttpRequest { + method: HttpMethod; + path: String; + version: String; + body: String; + headers: Array; +} + +pub struct HttpResponse { + statusCode: int; + contentType: String; + body: String; + extraHeaders: String; +} + +pub func Http_StatusText(code: int) -> String { + if code == 200 { return "OK"; } + if code == 201 { return "Created"; } + if code == 204 { return "No Content"; } + if code == 301 { return "Moved Permanently"; } + if code == 302 { return "Found"; } + if code == 304 { return "Not Modified"; } + if code == 400 { return "Bad Request"; } + if code == 401 { return "Unauthorized"; } + if code == 403 { return "Forbidden"; } + if code == 404 { return "Not Found"; } + if code == 405 { return "Method Not Allowed"; } + if code == 413 { return "Payload Too Large"; } + if code == 414 { return "URI Too Long"; } + if code == 500 { return "Internal Server Error"; } + if code == 501 { return "Not Implemented"; } + if code == 503 { return "Service Unavailable"; } + return "Unknown"; +} + +pub func Http_MimeType(path: String) -> String { + if String_EndsWith(path, ".html") || String_EndsWith(path, ".htm") { return "text/html; charset=utf-8"; } + if String_EndsWith(path, ".css") { return "text/css; charset=utf-8"; } + if String_EndsWith(path, ".js") { return "application/javascript; charset=utf-8"; } + if String_EndsWith(path, ".json") { return "application/json; charset=utf-8"; } + if String_EndsWith(path, ".xml") { return "application/xml; charset=utf-8"; } + if String_EndsWith(path, ".txt") { return "text/plain; charset=utf-8"; } + if String_EndsWith(path, ".png") { return "image/png"; } + if String_EndsWith(path, ".jpg") || String_EndsWith(path, ".jpeg") { return "image/jpeg"; } + if String_EndsWith(path, ".gif") { return "image/gif"; } + if String_EndsWith(path, ".svg") { return "image/svg+xml"; } + if String_EndsWith(path, ".ico") { return "image/x-icon"; } + if String_EndsWith(path, ".webp") { return "image/webp"; } + if String_EndsWith(path, ".woff2") { return "font/woff2"; } + if String_EndsWith(path, ".woff") { return "font/woff"; } + if String_EndsWith(path, ".wasm") { return "application/wasm"; } + return "application/octet-stream"; +} + +pub func Http_MethodName(m: HttpMethod) -> String { + match m { + HttpMethod::GET => "GET", + HttpMethod::POST => "POST", + HttpMethod::PUT => "PUT", + HttpMethod::DELETE => "DELETE", + HttpMethod::PATCH => "PATCH", + HttpMethod::HEAD => "HEAD", + HttpMethod::OPTIONS => "OPTIONS", + HttpMethod::UNKNOWN => "UNKNOWN", + } +} + +pub func Http_NewResponse(code: int, contentType: String, body: String) -> HttpResponse { + var resp: HttpResponse; + resp.statusCode = code; + resp.contentType = contentType; + resp.body = body; + resp.extraHeaders = ""; + return resp; +} + +pub func RequestHeader_Get(req: HttpRequest, key: String) -> String { + for entry in req.headers { + if String_Eq(entry.key, key) { + return entry.value; + } + } + return ""; +} + +} diff --git a/apps/nexus/src/Main.bux b/apps/nexus/src/Main.bux index 0f841c4..adf1072 100644 --- a/apps/nexus/src/Main.bux +++ b/apps/nexus/src/Main.bux @@ -1,550 +1,49 @@ -// ============================================================================= -// Nexus — High-performance multi-threaded HTTP/1.1, HTTP/2 & WebSocket server -// Built with the Bux programming language -// ============================================================================= module Main { -// ============================================================================= -// Imports — only what we actually use -// ============================================================================= -import Std::Io::{PrintLine, Print, PrintInt}; -import Std::Net::{Net_Create, Net_SetReuse, Net_Bind, Net_Listen, Net_Accept, Net_Send, Net_Recv, Net_Close, Net_LastError}; -import Std::String::{String_Len, String_Eq, String_StartsWith, String_EndsWith, String_Contains, String_Trim, String_FromInt, String_Offset}; -import Std::Task::{Task_Join, TaskHandle}; +import Config::{ServerConfig, DefaultConfig}; +import Http::{HttpMethod}; +import Router::{Handler, Route, Router}; +import Server::{RunServer}; +import Std::Array::{Array, Array_New, Array_Push}; -// ============================================================================= -// Extern Functions (from C runtime — used directly for performance) -// ============================================================================= -extern func bux_alloc(size: uint) -> *void; -extern func bux_strlen(s: String) -> uint; -extern func bux_strcmp(a: String, b: String) -> int; -extern func bux_strstr(haystack: String, needle: String) -> String; -extern func bux_str_slice(s: String, start: uint, len: uint) -> String; -extern func bux_str_split_count(s: String, delim: String) -> uint; -extern func bux_str_split_part(s: String, delim: String, index: uint) -> String; -extern func bux_sb_new(initial_cap: uint) -> *void; -extern func bux_sb_append(sb: *void, s: String); -extern func bux_sb_append_int(sb: *void, n: int64); -extern func bux_sb_append_char(sb: *void, c: char8); -extern func bux_sb_build(sb: *void) -> String; -extern func bux_sb_free(sb: *void); -extern func bux_path_join(a: String, b: String) -> String; -extern func bux_read_file(path: String) -> String; -extern func bux_file_exists(path: String) -> int; +func BuildRouter() -> Router { + var routes: Array = Array_New(8); -// ============================================================================= -// HTTP Method Enum (simple enum — no data payload) -// ============================================================================= -enum HttpMethod { - GET, - POST, - PUT, - DELETE, - PATCH, - HEAD, - OPTIONS, - UNKNOWN, + Array_Push(&routes, Route { + method: HttpMethod { tag: HttpMethod_GET }, + path: "/api/health", + handler: Handler { tag: Handler_ApiHealth }, + }); + + Array_Push(&routes, Route { + method: HttpMethod { tag: HttpMethod_GET }, + path: "/api/info", + handler: Handler { tag: Handler_ApiInfo }, + }); + + Array_Push(&routes, Route { + method: HttpMethod { tag: HttpMethod_GET }, + path: "/ws", + handler: Handler { tag: Handler_WsUpgrade }, + }); + + Array_Push(&routes, Route { + method: HttpMethod { tag: HttpMethod_GET }, + path: "/", + handler: Handler { tag: Handler_StaticFile }, + }); + + return Router { + routes: routes, + notFound: Handler { tag: Handler_NotFound }, + }; } -// ============================================================================= -// Struct: HTTP Request -// ============================================================================= -struct HttpRequest { - method: HttpMethod, - path: String, - body: String, - headerKeys: *String, - headerValues: *String, - headerCount: int, - headerCap: int, -} - -// ============================================================================= -// Struct: HTTP Response -// ============================================================================= -struct HttpResponse { - statusCode: int, - statusText: String, - contentType: String, - body: String, - extraHeaders: String, // pre-formatted extra headers (for WS upgrade, etc.) - connectionClose: bool, -} - -// ============================================================================= -// Utility: Status text lookup -// ============================================================================= -func Http_StatusText(code: int) -> String { - if code == 200 { return "OK"; } - if code == 201 { return "Created"; } - if code == 204 { return "No Content"; } - if code == 301 { return "Moved Permanently"; } - if code == 302 { return "Found"; } - if code == 304 { return "Not Modified"; } - if code == 400 { return "Bad Request"; } - if code == 401 { return "Unauthorized"; } - if code == 403 { return "Forbidden"; } - if code == 404 { return "Not Found"; } - if code == 405 { return "Method Not Allowed"; } - if code == 413 { return "Payload Too Large"; } - if code == 414 { return "URI Too Long"; } - if code == 500 { return "Internal Server Error"; } - if code == 501 { return "Not Implemented"; } - if code == 503 { return "Service Unavailable"; } - return "Unknown"; -} - -// ============================================================================= -// Utility: Parse HTTP method string → HttpMethod enum -// ============================================================================= -func Http_ParseMethod(s: String) -> HttpMethod { - if String_Eq(s, "GET") { return HttpMethod { tag: HttpMethod_GET }; } - if String_Eq(s, "POST") { return HttpMethod { tag: HttpMethod_POST }; } - if String_Eq(s, "PUT") { return HttpMethod { tag: HttpMethod_PUT }; } - if String_Eq(s, "DELETE") { return HttpMethod { tag: HttpMethod_DELETE }; } - if String_Eq(s, "PATCH") { return HttpMethod { tag: HttpMethod_PATCH }; } - if String_Eq(s, "HEAD") { return HttpMethod { tag: HttpMethod_HEAD }; } - if String_Eq(s, "OPTIONS") { return HttpMethod { tag: HttpMethod_OPTIONS }; } - return HttpMethod { tag: HttpMethod_UNKNOWN }; -} - -// ============================================================================= -// Utility: MIME type from file extension -// ============================================================================= -func Http_MimeType(path: String) -> String { - if String_EndsWith(path, ".html") || String_EndsWith(path, ".htm") { return "text/html; charset=utf-8"; } - if String_EndsWith(path, ".css") { return "text/css; charset=utf-8"; } - if String_EndsWith(path, ".js") { return "application/javascript; charset=utf-8"; } - if String_EndsWith(path, ".json") { return "application/json; charset=utf-8"; } - if String_EndsWith(path, ".xml") { return "application/xml; charset=utf-8"; } - if String_EndsWith(path, ".txt") { return "text/plain; charset=utf-8"; } - if String_EndsWith(path, ".png") { return "image/png"; } - if String_EndsWith(path, ".jpg") || String_EndsWith(path, ".jpeg") { return "image/jpeg"; } - if String_EndsWith(path, ".gif") { return "image/gif"; } - if String_EndsWith(path, ".svg") { return "image/svg+xml"; } - if String_EndsWith(path, ".ico") { return "image/x-icon"; } - if String_EndsWith(path, ".webp") { return "image/webp"; } - if String_EndsWith(path, ".woff2") { return "font/woff2"; } - if String_EndsWith(path, ".woff") { return "font/woff"; } - if String_EndsWith(path, ".wasm") { return "application/wasm"; } - return "application/octet-stream"; -} - -// ============================================================================= -// Header Storage: dynamic key-value array (faster than hash map for 5-15 headers) -// ============================================================================= -func RequestHeader_Init(req: *HttpRequest) { - let cap: int = 16; - req.headerCap = cap; - req.headerKeys = bux_alloc(cap as uint * 8) as *String; - req.headerValues = bux_alloc(cap as uint * 8) as *String; - req.headerCount = 0; -} - -func RequestHeader_Add(req: *HttpRequest, key: String, value: String) { - if req.headerCount >= req.headerCap { return; } - req.headerKeys[req.headerCount] = key; - req.headerValues[req.headerCount] = value; - req.headerCount = req.headerCount + 1; -} - -func RequestHeader_Get(req: *HttpRequest, key: String) -> String { - var i: int = 0; - while i < req.headerCount { - if bux_strcmp(req.headerKeys[i], key) == 0 { - return req.headerValues[i]; - } - i = i + 1; - } - return ""; -} - -// ============================================================================= -// HTTP Request Parser -// ============================================================================= -func Http_ParseRequest(raw: String) -> HttpRequest { - var req: HttpRequest; - req.method = HttpMethod { tag: HttpMethod_UNKNOWN }; - req.path = "/"; - req.body = ""; - RequestHeader_Init(&req); - - // Guard: null/empty input - if String_Len(raw) == 0 { return req; } - let rawLen: uint = bux_strlen(raw); - if rawLen == 0 { return req; } - - // Find \r\n\r\n separating headers from body - let boundary: String = bux_strstr(raw, "\r\n\r\n"); - var headerLen: uint = rawLen; - if String_Len(boundary) > 0 { - headerLen = String_Offset(boundary, raw); - let bodyStart: uint = headerLen + 4; - if bodyStart < rawLen { - req.body = bux_str_slice(raw, bodyStart, rawLen - bodyStart); - } - } - - // Slice out header block - if headerLen == 0 { return req; } - let headerBlock: String = bux_str_slice(raw, 0, headerLen); - - // Count header lines - let lineCount: uint = bux_str_split_count(headerBlock, "\r\n"); - if lineCount == 0 { return req; } - - // --- Parse request line: "METHOD /path HTTP/1.1" --- - let requestLine: String = bux_str_split_part(headerBlock, "\r\n", 0); - if bux_strlen(requestLine) > 0 { - req.method = Http_ParseMethod(bux_str_split_part(requestLine, " ", 0)); - req.path = bux_str_split_part(requestLine, " ", 1); - if String_Eq(req.path, "") || String_Len(req.path) == 0 { - req.path = "/"; - } - } - - // --- Parse headers (lines 1..N-1) --- - var i: uint = 1; - while i < lineCount { - let line: String = bux_str_split_part(headerBlock, "\r\n", i); - let lineLen: uint = bux_strlen(line); - if lineLen == 0 { i = i + 1; continue; } - - // Find ": " separator - let colonPos: String = bux_strstr(line, ": "); - var key: String = ""; - var value: String = ""; - - if String_Len(colonPos) > 0 { - let keyLen: uint = String_Offset(colonPos, line); - key = bux_str_slice(line, 0, keyLen); - let valStart: uint = keyLen + 2; - if valStart < lineLen { - value = bux_str_slice(line, valStart, lineLen - valStart); - } - } else { - // Try ":" without space - let colonPos2: String = bux_strstr(line, ":"); - if String_Len(colonPos2) > 0 { - let keyLen: uint = String_Offset(colonPos2, line); - key = bux_str_slice(line, 0, keyLen); - let valStart: uint = keyLen + 1; - if valStart < lineLen { - value = bux_str_slice(line, valStart, lineLen - valStart); - } - value = String_Trim(value); - } - } - - // Store if valid key found - if bux_strlen(key) > 0 { - key = String_Trim(key); - RequestHeader_Add(&req, key, value); - } - - i = i + 1; - } - - return req; -} - -// ============================================================================= -// HTTP Response Builder -// ============================================================================= -func Http_BuildResponse(resp: HttpResponse) -> String { - let sb: *void = bux_sb_new(4096); - - // Status line - bux_sb_append(sb, "HTTP/1.1 "); - bux_sb_append_int(sb, resp.statusCode as int64); - bux_sb_append(sb, " "); - bux_sb_append(sb, resp.statusText); - bux_sb_append(sb, "\r\n"); - - // Server - bux_sb_append(sb, "Server: Nexus/0.1.0 (Bux)\r\n"); - - // Extra headers (for WS upgrade etc.) - if bux_strlen(resp.extraHeaders) > 0 { - bux_sb_append(sb, resp.extraHeaders); - } - - // Content-Type - if bux_strlen(resp.contentType) > 0 { - bux_sb_append(sb, "Content-Type: "); - bux_sb_append(sb, resp.contentType); - bux_sb_append(sb, "\r\n"); - } - - // Content-Length - let bodyLen: uint = bux_strlen(resp.body); - bux_sb_append(sb, "Content-Length: "); - bux_sb_append_int(sb, bodyLen as int64); - bux_sb_append(sb, "\r\n"); - - // Connection - if resp.connectionClose { - bux_sb_append(sb, "Connection: close\r\n"); - } else { - bux_sb_append(sb, "Connection: keep-alive\r\n"); - } - - // End headers - bux_sb_append(sb, "\r\n"); - - // Body - if bodyLen > 0 { - bux_sb_append(sb, resp.body); - } - - let result: String = bux_sb_build(sb); - bux_sb_free(sb); - return result; -} - -// ============================================================================= -// Helper: Create a simple response -// ============================================================================= -func Http_NewResponse(code: int, contentType: String, body: String) -> HttpResponse { - var resp: HttpResponse; - resp.statusCode = code; - resp.statusText = Http_StatusText(code); - resp.contentType = contentType; - resp.body = body; - resp.extraHeaders = ""; - resp.connectionClose = true; - return resp; -} - -// ============================================================================= -// Static File Server -// ============================================================================= -func ServeStaticFile(requestPath: String) -> HttpResponse { - // Block directory traversal - if String_Contains(requestPath, "..") { - return Http_NewResponse(403, "text/plain; charset=utf-8", "Forbidden"); - } - - // Default to index.html - var filePath: String = requestPath; - if String_Eq(filePath, "/") { - filePath = "/index.html"; - } - - // Resolve full path - let fullPath: String = bux_path_join("public", filePath); - - // Check existence - if bux_file_exists(fullPath) == 0 { - return Http_NewResponse(404, "text/plain; charset=utf-8", "Not Found"); - } - - // Read and serve - let content: String = bux_read_file(fullPath); - if String_Len(content) == 0 { - return Http_NewResponse(500, "text/plain; charset=utf-8", "Internal Server Error"); - } - - let mime: String = Http_MimeType(filePath); - return Http_NewResponse(200, mime, content); -} - -// ============================================================================= -// API Handlers -// ============================================================================= -func HandleApiHealth() -> HttpResponse { - return Http_NewResponse(200, "application/json; charset=utf-8", - "{\"status\":\"ok\",\"server\":\"Nexus\",\"version\":\"0.1.0\"}"); -} - -func HandleApiInfo() -> HttpResponse { - return Http_NewResponse(200, "application/json; charset=utf-8", - "{\"name\":\"Nexus\",\"language\":\"Bux\",\"threads\":4,\"features\":[\"HTTP/1.1\",\"HTTP/2-detect\",\"WebSocket-upgrade\"]}"); -} - -// ============================================================================= -// WebSocket Upgrade Handshake -// ============================================================================= -func HandleWebSocketUpgrade(req: HttpRequest) -> HttpResponse { - let wsKey: String = RequestHeader_Get(&req, "Sec-WebSocket-Key"); - - var resp: HttpResponse; - resp.statusCode = 101; - resp.statusText = "Switching Protocols"; - resp.contentType = ""; - resp.body = ""; - resp.connectionClose = false; - - // Build upgrade headers as extraHeaders - // TODO: SHA-1 + Base64 for proper accept key - let sb: *void = bux_sb_new(256); - bux_sb_append(sb, "Upgrade: websocket\r\n"); - bux_sb_append(sb, "Connection: Upgrade\r\n"); - bux_sb_append(sb, "Sec-WebSocket-Accept: "); - bux_sb_append(sb, wsKey); // placeholder — real impl needs crypto - bux_sb_append(sb, "\r\n"); - resp.extraHeaders = bux_sb_build(sb); - bux_sb_free(sb); - - return resp; -} - -// ============================================================================= -// Router / Dispatcher -// ============================================================================= -func Router_Dispatch(req: HttpRequest) -> HttpResponse { - // Check for upgrade headers - let upgrade: String = RequestHeader_Get(&req, "Upgrade"); - if bux_strlen(upgrade) > 0 { - if String_Contains(upgrade, "websocket") { - return HandleWebSocketUpgrade(req); - } - } - - // API routes - if String_StartsWith(req.path, "/api/") { - if String_Eq(req.path, "/api/health") { return HandleApiHealth(); } - if String_Eq(req.path, "/api/info") { return HandleApiInfo(); } - return Http_NewResponse(404, "application/json; charset=utf-8", - "{\"error\":\"not_found\"}"); - } - - // WebSocket endpoint - if String_Eq(req.path, "/ws") { - return HandleWebSocketUpgrade(req); - } - - // Static files — GET/HEAD only - if req.method.tag == HttpMethod_GET || req.method.tag == HttpMethod_HEAD { - return ServeStaticFile(req.path); - } - - // Method not allowed - return Http_NewResponse(405, "text/plain; charset=utf-8", "Method Not Allowed"); -} - -// ============================================================================= -// Method name for logging (avoids 8 if-checks in hot path) -// ============================================================================= -func Http_MethodName(m: HttpMethod) -> String { - if m.tag == HttpMethod_GET { return "GET"; } - if m.tag == HttpMethod_POST { return "POST"; } - if m.tag == HttpMethod_PUT { return "PUT"; } - if m.tag == HttpMethod_DELETE { return "DELETE"; } - if m.tag == HttpMethod_PATCH { return "PATCH"; } - if m.tag == HttpMethod_HEAD { return "HEAD"; } - if m.tag == HttpMethod_OPTIONS { return "OPTIONS"; } - return "UNKNOWN"; -} - -// ============================================================================= -// Connection Handler — read, parse, route, respond -// ============================================================================= -func HandleConnection(clientFd: int) { - let raw: String = Net_Recv(clientFd, 8192); - - // Empty read → client disconnected - if String_Len(raw) == 0 { return; } - if bux_strlen(raw) == 0 { return; } - - // HTTP/2 connection preface detection - if String_StartsWith(raw, "PRI * HTTP/2.0") { - let resp: HttpResponse = Http_NewResponse(200, "text/plain; charset=utf-8", - "HTTP/2 detected — full support planned for future release.\r\n"); - let respStr: String = Http_BuildResponse(resp); - Net_Send(clientFd, respStr); - return; - } - - // Parse HTTP/1.1 - let req: HttpRequest = Http_ParseRequest(raw); - - // Log - Print(Http_MethodName(req.method)); - Print(" "); - Print(req.path); - Print(" -> "); - - // Dispatch - let resp: HttpResponse = Router_Dispatch(req); - - // Log result - PrintInt(resp.statusCode); - Print(" "); - PrintLine(resp.statusText); - - // Send - let respStr: String = Http_BuildResponse(resp); - Net_Send(clientFd, respStr); -} - -// ============================================================================= -// Worker Thread — accept loop -// ============================================================================= -func Worker(serverFd: int) { - while true { - let clientFd: int = Net_Accept(serverFd); - if clientFd < 0 { - continue; - } - HandleConnection(clientFd); - Net_Close(clientFd); - } -} - -// ============================================================================= -// Main Entry Point -// ============================================================================= func Main() -> int { - PrintLine("================================================"); - PrintLine(" Nexus HTTP Server v0.1.0"); - PrintLine(" Multi-threaded HTTP/1.1 + HTTP/2 & WS detect"); - PrintLine(" Built with Bux"); - PrintLine("================================================"); - PrintLine(""); + let config: ServerConfig = DefaultConfig(); + let router: Router = BuildRouter(); - // Create socket - let serverFd: int = Net_Create(); - if serverFd < 0 { - PrintLine("FATAL: socket() failed"); - return 1; - } - - // SO_REUSEADDR - if !Net_SetReuse(serverFd) { - PrintLine("WARN: SO_REUSEADDR failed"); - } - - // Bind - if !Net_Bind(serverFd, "0.0.0.0", 8080) { - Print("FATAL: bind(8080) failed: "); - PrintLine(Net_LastError()); - Net_Close(serverFd); - return 1; - } - - // Listen - if !Net_Listen(serverFd, 128) { - PrintLine("FATAL: listen() failed"); - Net_Close(serverFd); - return 1; - } - - PrintLine("Listening on http://0.0.0.0:8080"); - PrintLine("4 worker threads | static: ./public/"); - PrintLine("Endpoints: / /api/health /api/info /ws"); - PrintLine("Press Ctrl+C to stop."); - PrintLine(""); - - // Spawn 3 workers (main thread is the 4th) - spawn Worker(serverFd); - spawn Worker(serverFd); - spawn Worker(serverFd); - - // Main thread becomes worker #4 (blocking call) - Worker(serverFd); - - return 0; + return RunServer(config, router); } -} // module Main +} diff --git a/apps/nexus/src/Parser.bux b/apps/nexus/src/Parser.bux new file mode 100644 index 0000000..9e8f84b --- /dev/null +++ b/apps/nexus/src/Parser.bux @@ -0,0 +1,130 @@ +module Parser { + +import Std::String::{String_Len, String_Eq, String_Trim}; +import Std::Array::{Array, Array_New, Array_Push}; +import Http::{HttpMethod, HttpRequest, HeaderEntry}; +import Errors::{HttpError, ParseResult, ParseResult_NewOk, ParseResult_NewErr}; + +extern func bux_strlen(s: String) -> uint; +extern func bux_strstr(haystack: String, needle: String) -> String; +extern func bux_str_slice(s: String, start: uint, len: uint) -> String; +extern func bux_str_offset(pos: String, base: String) -> uint; + +pub func ParseMethod(s: String) -> HttpMethod { + if String_Eq(s, "GET") { return HttpMethod { tag: HttpMethod_GET }; } + if String_Eq(s, "POST") { return HttpMethod { tag: HttpMethod_POST }; } + if String_Eq(s, "PUT") { return HttpMethod { tag: HttpMethod_PUT }; } + if String_Eq(s, "DELETE") { return HttpMethod { tag: HttpMethod_DELETE }; } + if String_Eq(s, "PATCH") { return HttpMethod { tag: HttpMethod_PATCH }; } + if String_Eq(s, "HEAD") { return HttpMethod { tag: HttpMethod_HEAD }; } + if String_Eq(s, "OPTIONS") { return HttpMethod { tag: HttpMethod_OPTIONS }; } + return HttpMethod { tag: HttpMethod_UNKNOWN }; +} + +func Slice(raw: String, start: int, len: int) -> String { + if start < 0 || len <= 0 { return ""; } + return bux_str_slice(raw, start as uint, len as uint); +} + +func FindCrlf(raw: String, start: int) -> int { + let rawLen: uint = bux_strlen(raw); + if start as uint >= rawLen { return -1; } + let tail: String = bux_str_slice(raw, start as uint, rawLen - start as uint); + let hit: String = bux_strstr(tail, "\r\n"); + if String_Len(hit) == 0 { return -1; } + let offset: uint = bux_str_offset(hit, tail); + return start + offset as int; +} + +func ParseHeaders(raw: String, start: int, end: int) -> Array { + var headers: Array = Array_New(16); + var pos: int = start; + while pos < end { + let lineEnd: int = FindCrlf(raw, pos); + if lineEnd < 0 || lineEnd >= end { break; } + let lineLen: int = lineEnd - pos; + if lineLen > 0 { + let line: String = Slice(raw, pos, lineLen); + let colon: String = bux_strstr(line, ":"); + if String_Len(colon) > 0 { + let keyLen: uint = bux_str_offset(colon, line); + let key: String = String_Trim(Slice(line, 0, keyLen as int)); + let valStart: int = keyLen as int + 1; + let val: String = String_Trim(Slice(line, valStart, lineLen - valStart)); + let entry: HeaderEntry = HeaderEntry { key: key, value: val }; + Array_Push(&headers, entry); + } + } + pos = lineEnd + 2; + } + return headers; +} + +pub func ParseRequest(raw: String) -> ParseResult { + let rawLen: uint = bux_strlen(raw); + if rawLen == 0 { + return ParseResult_NewErr(HttpError { tag: HttpError_BadRequest }); + } + + // Find end of request line + let lineEnd: int = FindCrlf(raw, 0); + if lineEnd < 0 { + return ParseResult_NewErr(HttpError { tag: HttpError_BadRequest }); + } + + // Split request line: METHOD PATH VERSION + var methodEnd: int = -1; + var pathStart: int = -1; + var pathEnd: int = -1; + var i: int = 0; + while i < lineEnd { + if raw[i] as int == 32 { // space + if methodEnd < 0 { + methodEnd = i; + pathStart = i + 1; + } else if pathEnd < 0 { + pathEnd = i; + break; + } + } + i = i + 1; + } + + if methodEnd < 0 || pathStart < 0 || pathEnd < 0 { + return ParseResult_NewErr(HttpError { tag: HttpError_BadRequest }); + } + + let methodStr: String = Slice(raw, 0, methodEnd); + let path: String = Slice(raw, pathStart, pathEnd - pathStart); + let version: String = Slice(raw, pathEnd + 1, lineEnd - pathEnd - 1); + + // Find header/body boundary + let boundary: String = bux_strstr(raw, "\r\n\r\n"); + var headers: Array = Array_New(16); + var body: String = ""; + if String_Len(boundary) > 0 { + let headerEnd: uint = bux_str_offset(boundary, raw); + headers = ParseHeaders(raw, lineEnd + 2, headerEnd as int); + let bodyStart: uint = headerEnd + 4; + if bodyStart < rawLen { + body = bux_str_slice(raw, bodyStart, rawLen - bodyStart); + } + } else { + headers = ParseHeaders(raw, lineEnd + 2, rawLen as int); + } + + if String_Eq(path, "") { + return ParseResult_NewErr(HttpError { tag: HttpError_BadRequest }); + } + + let req: HttpRequest = HttpRequest { + method: ParseMethod(methodStr), + path: path, + version: version, + body: body, + headers: headers, + }; + return ParseResult_NewOk(req); +} + +} diff --git a/apps/nexus/src/Router.bux b/apps/nexus/src/Router.bux new file mode 100644 index 0000000..41b5612 --- /dev/null +++ b/apps/nexus/src/Router.bux @@ -0,0 +1,46 @@ +module Router { + +import Std::Array::{Array}; +import Std::String::{String_Eq}; +import Http::{HttpMethod, HttpRequest, HttpResponse, Http_NewResponse}; +import Handlers::{ServeStaticFile, HandleApiHealth, HandleApiInfo, HandleWebSocketUpgrade, NotFoundResponse}; + +pub enum Handler { + StaticFile, + ApiHealth, + ApiInfo, + WsUpgrade, + NotFound, +} + +pub struct Route { + method: HttpMethod; + path: String; + handler: Handler; +} + +pub struct Router { + routes: Array; + notFound: Handler; +} + +pub func Handler_Handle(h: Handler, req: HttpRequest) -> HttpResponse { + match h { + Handler::StaticFile => ServeStaticFile(req), + Handler::ApiHealth => HandleApiHealth(), + Handler::ApiInfo => HandleApiInfo(), + Handler::WsUpgrade => HandleWebSocketUpgrade(req), + Handler::NotFound => NotFoundResponse(), + } +} + +pub func Router_Dispatch(r: Router, req: HttpRequest) -> HttpResponse { + for route in r.routes { + if route.method == req.method && String_Eq(route.path, req.path) { + return Handler_Handle(route.handler, req); + } + } + return Handler_Handle(r.notFound, req); +} + +} diff --git a/apps/nexus/src/Server.bux b/apps/nexus/src/Server.bux new file mode 100644 index 0000000..9d03cd1 --- /dev/null +++ b/apps/nexus/src/Server.bux @@ -0,0 +1,176 @@ +module Server { + +import Std::Io::{Print, PrintLine, PrintInt}; +import Std::Net::{Net_Create, Net_SetReuse, Net_Bind, Net_Listen, Net_Accept, Net_Send, Net_Recv, Net_Close, Net_LastError}; +import Std::String::{String_Len, String_StartsWith}; +import Std::Channel::{Channel, Channel_New, Channel_Send, Channel_Recv}; +import Config::{ServerConfig}; +import Http::{HttpRequest, HttpResponse, Http_StatusText, Http_NewResponse}; +import Errors::{ParseResult}; +import Parser::{ParseRequest}; +import Router::{Router, Router_Dispatch}; + +extern func bux_strlen(s: String) -> uint; +extern func bux_sb_new(initial_cap: uint) -> *void; +extern func bux_sb_append(sb: *void, s: String); +extern func bux_sb_append_int(sb: *void, n: int64); +extern func bux_sb_build(sb: *void) -> String; +extern func bux_sb_free(sb: *void); + +pub struct ConnectionTask { + fd: int; +} + +pub func BuildResponse(resp: HttpResponse) -> String { + let sb: *void = bux_sb_new(4096); + + bux_sb_append(sb, "HTTP/1.1 "); + bux_sb_append_int(sb, resp.statusCode as int64); + bux_sb_append(sb, " "); + bux_sb_append(sb, Http_StatusText(resp.statusCode)); + bux_sb_append(sb, "\r\n"); + + bux_sb_append(sb, "Server: Nexus/0.2.0 (Bux)\r\n"); + + if bux_strlen(resp.extraHeaders) > 0 { + bux_sb_append(sb, resp.extraHeaders); + } + + if bux_strlen(resp.contentType) > 0 { + bux_sb_append(sb, "Content-Type: "); + bux_sb_append(sb, resp.contentType); + bux_sb_append(sb, "\r\n"); + } + + let bodyLen: uint = bux_strlen(resp.body); + bux_sb_append(sb, "Content-Length: "); + bux_sb_append_int(sb, bodyLen as int64); + bux_sb_append(sb, "\r\n"); + bux_sb_append(sb, "Connection: close\r\n"); + bux_sb_append(sb, "\r\n"); + + if bodyLen > 0 { + bux_sb_append(sb, resp.body); + } + + let result: String = bux_sb_build(sb); + bux_sb_free(sb); + return result; +} + +pub func HandleConnection(fd: int, router: Router) { + let raw: String = Net_Recv(fd, 8192); + if String_Len(raw) == 0 { + return; + } + + // HTTP/2 preface detection + if String_StartsWith(raw, "PRI * HTTP/2.0") { + let resp: HttpResponse = Http_NewResponse(200, "text/plain; charset=utf-8", + "HTTP/2 detected — full support planned for future release.\r\n"); + Net_Send(fd, BuildResponse(resp)); + return; + } + + let parsed: ParseResult = ParseRequest(raw); + if parsed.tag == ParseResult_Ok { + let req: HttpRequest = parsed.data.Ok_0; + let resp: HttpResponse = Router_Dispatch(router, req); + Net_Send(fd, BuildResponse(resp)); + } else { + let resp: HttpResponse = Http_NewResponse(400, "text/plain; charset=utf-8", "Bad Request"); + Net_Send(fd, BuildResponse(resp)); + } +} + +pub struct WorkerCtx { + taskQueue: *Channel; + router: Router; +} + +pub func Worker(ctx: *WorkerCtx) { + while true { + let task: ConnectionTask = Channel_Recv(ctx.taskQueue); + HandleConnection(task.fd, ctx.router); + Net_Close(task.fd); + } +} + +pub struct AcceptorCtx { + serverFd: int; + taskQueue: *Channel; +} + +pub func Acceptor(ctx: *AcceptorCtx) { + while true { + let fd: int = Net_Accept(ctx.serverFd); + if fd >= 0 { + let task: ConnectionTask = ConnectionTask { fd: fd }; + Channel_Send(ctx.taskQueue, task); + } + } +} + +pub func RunServer(config: ServerConfig, router: Router) -> int { + PrintLine("================================================"); + PrintLine(" Nexus HTTP Server v0.2.0"); + PrintLine(" Production-ready HTTP/1.1 with thread-pool"); + PrintLine(" Built with Bux"); + PrintLine("================================================"); + PrintLine(""); + + let serverFd: int = Net_Create(); + if serverFd < 0 { + PrintLine("FATAL: socket() failed"); + return 1; + } + + if !Net_SetReuse(serverFd) { + PrintLine("WARN: SO_REUSEADDR failed"); + } + + if !Net_Bind(serverFd, config.bindAddr, config.port) { + Print("FATAL: bind failed: "); + PrintLine(Net_LastError()); + Net_Close(serverFd); + return 1; + } + + if !Net_Listen(serverFd, config.backlog) { + PrintLine("FATAL: listen() failed"); + Net_Close(serverFd); + return 1; + } + + Print("Listening on http://"); + Print(config.bindAddr); + Print(":"); + PrintInt(config.port); + PrintLine(""); + PrintInt(config.workerCount); + PrintLine(" worker threads | static: ./public/"); + PrintLine("Endpoints: / /api/health /api/info /ws"); + PrintLine("Press Ctrl+C to stop."); + PrintLine(""); + + let taskQueue: Channel = Channel_New(config.backlog as int64); + let workerCtx: WorkerCtx = WorkerCtx { taskQueue: &taskQueue, router: router }; + let acceptorCtx: AcceptorCtx = AcceptorCtx { serverFd: serverFd, taskQueue: &taskQueue }; + + // Spawn workers (main thread will also become one) + var i: int = 0; + while i < config.workerCount - 1 { + spawn Worker(&workerCtx); + i = i + 1; + } + + // Spawn acceptor + spawn Acceptor(&acceptorCtx); + + // Main thread works too + Worker(&workerCtx); + + return 0; +} + +} diff --git a/bootstrap/cli.nim b/bootstrap/cli.nim index c5cc1a8..e4b1cb2 100644 --- a/bootstrap/cli.nim +++ b/bootstrap/cli.nim @@ -1,5 +1,5 @@ import std/[os, strutils, terminal, strformat, osproc, sets] -import lexer, parser, ast, sema, manifest, hir_lower, lir, lir_lower, lir_c_backend +import lexer, parser, ast, sema, manifest, hir_lower, lir_lower, lir_c_backend type ColorMode* = enum diff --git a/bootstrap/hir_lower.nim b/bootstrap/hir_lower.nim index 0b05f5e..73760e4 100644 --- a/bootstrap/hir_lower.nim +++ b/bootstrap/hir_lower.nim @@ -42,22 +42,37 @@ proc flushPending(ctx: var LowerCtx, node: HirNode): HirNode = return hirBlock(stmts, nil, makeVoid(), node.loc) return node +proc enumHasDataVariants(ctx: var LowerCtx, enumName: string): bool = + let sym = ctx.globalScope.lookup(enumName) + if sym != nil and sym.decl != nil and sym.decl.kind == dkEnum: + for v in sym.decl.declEnumVariants: + if v.fields.len > 0 or v.namedFields.len > 0: + return true + return false + proc lowerMatch(ctx: var LowerCtx, subject: HirNode, arms: seq[HirMatchArm], typ: Type, loc: SourceLocation): HirNode = # Lower match expression to a block with if-else chain. # For now, supports enum tag matching and wildcard/ident fallbacks. let resultName = ctx.freshName() var stmts: seq[HirNode] = @[] - + # Allocate result variable stmts.add(hirAlloca(resultName, typ, loc)) - + + # Determine whether the matched enum has data variants (needs .tag access). + var subjectEnumName = "" + var subjectHasData = false + if subject.typ != nil and subject.typ.kind == tkNamed: + subjectEnumName = subject.typ.name + subjectHasData = ctx.enumHasDataVariants(subjectEnumName) + # Build if-else chain from arms (last arm is the outermost else) var ifChain: HirNode = nil - + for i in countdown(arms.len - 1, 0): let arm = arms[i] let body = arm.body - + case arm.pattern.kind of pkEnum: let path = arm.pattern.patEnumPath @@ -65,19 +80,25 @@ proc lowerMatch(ctx: var LowerCtx, subject: HirNode, arms: seq[HirMatchArm], typ let enumName = path[0] let variantName = path[^1] let tagName = enumName & "_" & variantName - - # condition: subject.tag == EnumName_VariantName - let tagField = HirNode(kind: hFieldPtr, fieldPtrBase: subject, fieldName: "tag", - typ: makePointer(makeNamed(enumName & "_Tag")), loc: loc) - let tagLoad = HirNode(kind: hLoad, loadPtr: tagField, typ: makeNamed(enumName & "_Tag"), loc: loc) - let tagConst = hirLit(Token(kind: tkIdent, text: tagName, loc: loc), makeNamed(enumName & "_Tag"), loc) - let cond = hirBinary(tkEq, tagLoad, tagConst, makeBool(), loc) - + + var cond: HirNode + if subjectHasData and enumName == subjectEnumName: + # Algebraic enum: compare subject.tag + let tagField = HirNode(kind: hFieldPtr, fieldPtrBase: subject, fieldName: "tag", + typ: makePointer(makeNamed(enumName & "_Tag")), loc: loc) + let tagLoad = HirNode(kind: hLoad, loadPtr: tagField, typ: makeNamed(enumName & "_Tag"), loc: loc) + let tagConst = hirLit(Token(kind: tkIdent, text: tagName, loc: loc), makeNamed(enumName & "_Tag"), loc) + cond = hirBinary(tkEq, tagLoad, tagConst, makeBool(), loc) + else: + # Simple enum or cross-enum match: compare subject directly + let tagConst = hirLit(Token(kind: tkIdent, text: tagName, loc: loc), makeNamed(enumName), loc) + cond = hirBinary(tkEq, subject, tagConst, makeBool(), loc) + # body: result = arm_body var armStmts: seq[HirNode] = @[] armStmts.add(hirStore(hirVar(resultName, typ, loc), body, loc)) let armBlock = hirBlock(armStmts, nil, makeVoid(), loc) - + if ifChain == nil: ifChain = HirNode(kind: hIf, ifCond: cond, ifThen: armBlock, ifElse: nil, typ: makeVoid(), loc: loc) @@ -115,9 +136,9 @@ proc lowerMatch(ctx: var LowerCtx, subject: HirNode, arms: seq[HirMatchArm], typ ifChain = HirNode(kind: hIf, ifCond: hirLit(Token(kind: tkBoolLiteral, text: "true", loc: loc), makeBool(), loc), ifThen: armBlock, ifElse: ifChain, typ: makeVoid(), loc: loc) - + stmts.add(ifChain) - + # Return the result variable as the block expression return hirBlock(stmts, hirVar(resultName, typ, loc), typ, loc) @@ -397,6 +418,8 @@ proc resolveExprType(ctx: var LowerCtx, expr: Expr): Type = if f.ftype != nil: case f.ftype.kind of tekNamed: + if f.ftype.typeArgs.len > 0: + return substituteType(ctx, f.ftype, subst) case f.ftype.typeName of "int", "int32", "int64": return makeInt() of "float64": return makeFloat64() @@ -417,6 +440,8 @@ proc resolveExprType(ctx: var LowerCtx, expr: Expr): Type = if f.ftype != nil: case f.ftype.kind of tekNamed: + if f.ftype.typeArgs.len > 0: + return ctx.resolveTypeExpr(f.ftype) case f.ftype.typeName of "int", "int32", "int64": return makeInt() of "float64": return makeFloat64() @@ -478,6 +503,10 @@ proc resolveExprType(ctx: var LowerCtx, expr: Expr): Type = if baseType.isPointer and baseType.inner.len > 0: return baseType.inner[0] return makeUnknown() + of ekMatch: + if expr.exprMatchArms.len > 0: + return ctx.resolveExprType(expr.exprMatchArms[0].body) + return makeUnknown() of ekBlock: if expr.exprBlock.stmts.len > 0: let last = expr.exprBlock.stmts[^1] @@ -524,6 +553,23 @@ proc getCollectionElementTypeExpr(ctx: var LowerCtx, expr: Expr): TypeExpr = return te.typeArgs[0] if te.kind in {tekPointer, tekRef, tekMutRef} and te.pointerPointee.kind == tekNamed and te.pointerPointee.typeArgs.len > 0: return te.pointerPointee.typeArgs[0] + of ekField: + # Try to resolve the field's declared TypeExpr directly. + let objType = ctx.resolveExprType(expr.exprFieldObj) + if objType.kind == tkNamed: + var decl = ctx.globalScope.lookup(objType.name).decl + if decl == nil and ctx.structInstMap.hasKey(objType.name): + let (baseName, _) = ctx.structInstMap[objType.name] + let baseSym = ctx.globalScope.lookup(baseName) + if baseSym != nil and baseSym.decl != nil and baseSym.decl.kind == dkStruct: + decl = baseSym.decl + if decl != nil and decl.kind == dkStruct: + for f in decl.declStructFields: + if f.name == expr.exprFieldName and f.ftype != nil: + let fte = f.ftype + if fte.kind == tekNamed and fte.typeArgs.len > 0 and (fte.typeName == "Array" or fte.typeName == "Iter" or fte.typeName == "Channel"): + return fte.typeArgs[0] + return fte else: discard let t = ctx.resolveExprType(expr) @@ -531,6 +577,11 @@ proc getCollectionElementTypeExpr(ctx: var LowerCtx, expr: Expr): TypeExpr = return typeToTypeExpr(t.inner[0]) if t.isPointer and t.inner.len > 0 and t.inner[0].kind == tkNamed and t.inner[0].inner.len > 0: return typeToTypeExpr(t.inner[0].inner[0]) + # Generic struct instances (e.g. Array_HeaderEntry) store their type args in structInstMap. + if t.kind == tkNamed and ctx.structInstMap.hasKey(t.name): + let (baseName, concreteArgs) = ctx.structInstMap[t.name] + if concreteArgs.len > 0 and (baseName == "Array" or baseName == "Iter" or baseName == "Channel"): + return typeToTypeExpr(concreteArgs[0]) return TypeExpr(kind: tekNamed, typeName: "unknown") proc generateMethodInstance(ctx: var LowerCtx, baseMethodName: string, typeArgs: seq[TypeExpr]): string @@ -1660,7 +1711,6 @@ proc generateMethodInstance(ctx: var LowerCtx, baseMethodName: string, typeArgs: return mangledName proc lowerClosureFunc(ctx: var LowerCtx, expr: Expr): HirFunc = - let loc = expr.loc let name = "__closure_" & $ctx.varCounter inc ctx.varCounter var f = HirFunc(name: name, isPublic: false) diff --git a/bootstrap/lexer.nim b/bootstrap/lexer.nim index 762a3ad..727e0d4 100644 --- a/bootstrap/lexer.nim +++ b/bootstrap/lexer.nim @@ -61,12 +61,6 @@ proc advance(lex: var Lexer): char = else: inc lex.col -proc match(lex: var Lexer, expected: char): bool = - if lex.isAtEnd(): return false - if lex.peek() != expected: return false - discard lex.advance() - return true - proc matchStr(lex: var Lexer, s: string): bool = for i, c in s: if lex.peek(i) != c: @@ -81,9 +75,6 @@ proc currentLocation(lex: Lexer): SourceLocation = proc emitError(lex: var Lexer, loc: SourceLocation, message: string) = lex.diagnostics.add(LexerDiagnostic(severity: ldsError, loc: loc, message: message)) -proc emitWarning(lex: var Lexer, loc: SourceLocation, message: string) = - lex.diagnostics.add(LexerDiagnostic(severity: ldsWarning, loc: loc, message: message)) - proc makeToken(lex: Lexer, kind: TokenKind, startLoc: SourceLocation, startPos: int): Token = let text = lex.source[startPos ..< lex.pos] result = Token(kind: kind, text: text, loc: startLoc) @@ -337,19 +328,6 @@ proc scanSymbol(lex: var Lexer, startLoc: SourceLocation): Token = else: return lex.makeToken(kind1, startLoc, startPos) - template check3(c2: char, kind2: TokenKind, c3: char, kind3: TokenKind, kind1: TokenKind) = - if lex.peek() == c2: - discard lex.advance() - if lex.peek() == c3: - discard lex.advance() - return lex.makeToken(kind3, startLoc, startPos) - return lex.makeToken(kind2, startLoc, startPos) - else: - return lex.makeToken(kind1, startLoc, startPos) - - template checkEq(c2: char, kind2: TokenKind, kind1: TokenKind) = - check2(c2, kind2, kind1) - case c1 of '(': return lex.makeToken(tkLParen, startLoc, startPos) of ')': return lex.makeToken(tkRParen, startLoc, startPos) diff --git a/bootstrap/lir.nim b/bootstrap/lir.nim index f5dba1c..db1ce6e 100644 --- a/bootstrap/lir.nim +++ b/bootstrap/lir.nim @@ -2,8 +2,6 @@ ## Linear 3-address code IR, designed for straightforward C emission. ## Each HIR construct lowers to 5-30 LIR instructions. -import types - type LirKind* = enum # ── Data movement ── diff --git a/bootstrap/lir_c_backend.nim b/bootstrap/lir_c_backend.nim index a3883c5..127f3df 100644 --- a/bootstrap/lir_c_backend.nim +++ b/bootstrap/lir_c_backend.nim @@ -17,9 +17,6 @@ proc initLirCBackend*(): LirCBackend = tempTypes: initTable[string, string](), ) -proc emit(be: var LirCBackend, s: string) = - be.output.add(s) - proc emitIndent(be: var LirCBackend) = for i in 0 ..< be.indent: be.output.add(" ") @@ -43,21 +40,6 @@ proc valToC(be: var LirCBackend, v: LirValue): string = of lvkField: v.strVal of lvkType: v.strVal -proc typeFromValue(be: var LirCBackend, v: LirValue): string = - ## Infer a C type for a value. Temps are tracked; named vars use lookup. - case v.kind - of lvkTemp: - if be.tempTypes.hasKey(v.strVal): - return be.tempTypes[v.strVal] - return "int" # Default - of lvkString: return "const char*" - of lvkInt: return "int" - of lvkFloat: return "double" - else: return "" - -proc setTempType(be: var LirCBackend, temp: string, cType: string) = - be.tempTypes[temp] = cType - proc cParamDecl(cType, name: string): string = ## Emit a C parameter declaration, handling function-pointer syntax. if cType.contains("(*)"): @@ -487,6 +469,26 @@ proc emitEnumDef(be: var LirCBackend, name: string, variants: seq[HirEnumVariant be.emitLine(&"}} {name};") be.emitLine("") +# ── Type dependency ordering ── + +proc collectValueDeps(typ: Type): seq[string] = + ## Return type names that must be fully defined before a value of `typ` + ## can be declared. Pointers/refs only need a forward declaration, so + ## they do not introduce a dependency. + if typ == nil: return @[] + case typ.kind + of tkNamed: + return @[typ.name] + of tkSlice: + return @[typeToCStr(typ)] + of tkPointer, tkRef, tkMutRef, tkTuple, tkFunc: + return @[] + else: + return @[] + +proc emitSliceTypeDef(be: var LirCBackend, name: string, elem: string) = + be.emitLine(&"typedef struct {{ {elem}* data; size_t len; }} {name};") + # ── Module emission ── proc emitModule*(be: var LirCBackend, builder: LirBuilder, module: HirModule): string = @@ -557,36 +559,109 @@ proc emitModule*(be: var LirCBackend, builder: LirBuilder, module: HirModule): s else: discard be.emitLine("") - # Enum definitions + # Collect local type names (structs and enums defined in this module). + var localTypeNames: HashSet[string] + for s in module.structs: + localTypeNames.incl(s.name) for e in module.enums: - be.emitEnumDef(e.name, e.variants) - if module.enums.len > 0: - be.emitLine("") + localTypeNames.incl(e.name) - # Struct definitions - for s in module.structs: - be.emitStructDef(s.name, s.fields) - - # Slice types (collect from functions/structs) - # Simple: scan function params/returns for slice types + # Collect slice types used in struct fields and enum payloads. var sliceTypes: seq[tuple[name: string, elem: string]] = @[] - var structNames: HashSet[string] + var sliceNames: HashSet[string] + proc registerSlice(t: Type) = + if t == nil or t.kind != tkSlice: return + let name = typeToCStr(t) + if sliceNames.contains(name): return + sliceNames.incl(name) + let elem = if t.inner.len > 0: typeToCStr(t.inner[0]) else: "void" + sliceTypes.add((name, elem)) + for s in module.structs: - structNames.incl(s.name) - for f in module.funcs: - for p in f.params: - var ct = typeToCStr(p.typ) - # Strip pointer/reference suffix to find the base slice type. - while ct.endsWith("*"): - ct = ct[0..^2] - if ct.startsWith("Slice_"): - let elem = ct[6 .. ^1] - if not sliceTypes.anyIt(it.name == ct) and not structNames.contains(ct): - sliceTypes.add((ct, elem)) - if sliceTypes.len > 0: - for st in sliceTypes: - be.emitLine(&"typedef struct {{ {st.elem}* data; size_t len; }} {st.name};") - be.emitLine("") + for f in s.fields: + registerSlice(f.typ) + for e in module.enums: + for v in e.variants: + for ft in v.fields: + registerSlice(ft) + for nf in v.namedFields: + registerSlice(nf.typ) + + # Build dependency graph among structs, enums, and slice types. + # Edge A -> B means "A depends on B, so B must be emitted before A". + var deps: Table[string, seq[string]] + for s in module.structs: + deps[s.name] = @[] + for e in module.enums: + deps[e.name] = @[] + for st in sliceTypes: + deps[st.name] = @[] + + proc addDeps(node: string, t: Type) = + for dep in collectValueDeps(t): + if dep == node: continue + if localTypeNames.contains(dep) or sliceNames.contains(dep): + if dep notin deps[node]: + deps[node].add(dep) + + for s in module.structs: + for f in s.fields: + addDeps(s.name, f.typ) + for e in module.enums: + for v in e.variants: + for ft in v.fields: + addDeps(e.name, ft) + for nf in v.namedFields: + addDeps(e.name, nf.typ) + + # Topological sort (Kahn's algorithm). + var inDegree: Table[string, int] + var dependents: Table[string, seq[string]] + for node in deps.keys: + inDegree[node] = 0 + for node, nodeDeps in deps: + for d in nodeDeps: + if not inDegree.hasKey(d): inDegree[d] = 0 + inDegree[node] += 1 + dependents.mgetOrPut(d, @[]).add(node) + + var queue: seq[string] = @[] + for node, deg in inDegree: + if deg == 0: + queue.add(node) + + var sorted: seq[string] = @[] + while queue.len > 0: + let node = queue.pop() + sorted.add(node) + for depNode in dependents.getOrDefault(node): + inDegree[depNode] -= 1 + if inDegree[depNode] == 0: + queue.add(depNode) + + if sorted.len < deps.len: + # Cycle detected; fall back to a safe deterministic order. + sorted = @[] + for s in module.structs: sorted.add(s.name) + for e in module.enums: sorted.add(e.name) + for st in sliceTypes: sorted.add(st.name) + + # Map type names back to their definitions. + var structMap: Table[string, seq[tuple[name: string, typ: Type]]] + for s in module.structs: structMap[s.name] = s.fields + var enumMap: Table[string, seq[HirEnumVariant]] + for e in module.enums: enumMap[e.name] = e.variants + var sliceMap: Table[string, string] + for st in sliceTypes: sliceMap[st.name] = st.elem + + # Emit type definitions in dependency order. + for name in sorted: + if structMap.hasKey(name): + be.emitStructDef(name, structMap[name]) + elif enumMap.hasKey(name): + be.emitEnumDef(name, enumMap[name]) + elif sliceMap.hasKey(name): + be.emitSliceTypeDef(name, sliceMap[name]) # Forward function declarations for f in module.funcs: diff --git a/bootstrap/lir_lower.nim b/bootstrap/lir_lower.nim index 713646b..1a495d4 100644 --- a/bootstrap/lir_lower.nim +++ b/bootstrap/lir_lower.nim @@ -3,7 +3,7 @@ ## Each HIR node kind lowers to 1-20 LIR instructions. import std/[strutils, strformat, tables, sequtils] -import ast, types, token, hir, lir +import types, token, hir, lir ## Convert LirValue to C expression string (no % prefix) proc lirValToC(v: LirValue): string = @@ -429,7 +429,6 @@ proc lowerExpr(ctx: var LowerToLirCtx, node: HirNode): LirValue = # ── SizeOf ── of hSizeOf: let ctype = typeToCStr(node.sizeOfType) - let t = b.freshTemp() b.emit(LirInstr(kind: lirRawC, src: lirStr(&"/* sizeof({ctype}) */"))) return lirVar(&"sizeof({ctype})") @@ -608,7 +607,6 @@ proc lowerStmt(ctx: var LowerToLirCtx, node: HirNode) = # ── While statement ── of hWhile: let startLbl = b.freshLabel("while") - let bodyLbl = b.freshLabel("wbody") let endLbl = b.freshLabel("wend") ctx.loopStartLabels.add(startLbl.strVal) @@ -750,9 +748,8 @@ proc lowerStmt(ctx: var LowerToLirCtx, node: HirNode) = for stmt in node.blockStmts: lowerStmt(ctx, stmt) if node.blockExpr != nil: - let exprVal = lowerExpr(ctx, node.blockExpr) - # If block is an expression, store result - discard + # If block is an expression, result is unused at statement level + discard lowerExpr(ctx, node.blockExpr) if node.isScope: b.emitRawC("}") @@ -762,9 +759,8 @@ proc lowerStmt(ctx: var LowerToLirCtx, node: HirNode) = # ── Expression statement ── else: - let exprVal = lowerExpr(ctx, node) # Expression evaluated for side effects; temp is unused - discard + discard lowerExpr(ctx, node) # ── Module-level lowering ── diff --git a/bootstrap/manifest.nim b/bootstrap/manifest.nim index ba47ddb..25049d6 100644 --- a/bootstrap/manifest.nim +++ b/bootstrap/manifest.nim @@ -90,7 +90,6 @@ proc parseInlineTable(s: string): OrderedTableRef[string, TomlValue] = if content[i] == '{': inc braceCount elif content[i] == '}': dec braceCount inc i - let val = content[valStart ..< i] result[key] = TomlValue(kind: tvkInlineTable, inlineVal: newOrderedTable[string, TomlValue]()) else: while i < content.len and content[i] notin {',', ' ', '\t'}: diff --git a/bootstrap/parser.nim b/bootstrap/parser.nim index c661479..650f922 100644 --- a/bootstrap/parser.nim +++ b/bootstrap/parser.nim @@ -62,12 +62,6 @@ proc checkAny(p: Parser, kinds: openArray[TokenKind]): bool = if p.peek() == k: return true return false -proc match(p: var Parser, kind: TokenKind): bool = - if p.check(kind): - discard p.advance() - return true - return false - proc isTypeArgListAhead(p: Parser): bool = ## Lookahead to determine if '<' starts a type argument list. ## Returns true if we can find a matching '>' before EOF, '{', or ';'. @@ -788,7 +782,6 @@ proc parseShift(p: var Parser): Expr = return left proc parseCast(p: var Parser): Expr = - let loc = p.currentLoc var left = p.parseShift() # 'as' and 'is' are handled in postfix for chaining return left @@ -1171,7 +1164,6 @@ proc parseParamList(p: var Parser, allowVariadic: bool = false): seq[Param] = if p.check(tkRParen) or p.isAtEnd: break let loc = p.currentLoc - var isVar = false if allowVariadic and p.check(tkDotDotDot): discard p.advance() let nameTok = p.at diff --git a/bootstrap/sema.nim b/bootstrap/sema.nim index bec25c9..b4a04ee 100644 --- a/bootstrap/sema.nim +++ b/bootstrap/sema.nim @@ -95,9 +95,6 @@ proc unescapeStringLiteral*(s: string): string = proc emitError(sema: var Sema, loc: SourceLocation, message: string) = sema.diagnostics.add(SemaDiagnostic(severity: sdsError, loc: loc, message: message)) -proc emitWarning(sema: var Sema, loc: SourceLocation, message: string) = - sema.diagnostics.add(SemaDiagnostic(severity: sdsWarning, loc: loc, message: message)) - proc hasErrors*(res: SemaResult): bool = for d in res.diagnostics: if d.severity == sdsError: @@ -1348,12 +1345,12 @@ proc checkExpr(sema: var Sema, expr: Expr, scope: Scope): Type = discard sema.checkExpr(expr.exprIsOperand, scope) return makeBool() of ekTry: - let operandType = sema.checkExpr(expr.exprTryOperand, scope) + discard sema.checkExpr(expr.exprTryOperand, scope) # For now, assume Result -> int # TODO: check operand is Result/Option and current function returns same type return makeInt() of ekUnwrap: - let operandType = sema.checkExpr(expr.exprUnwrapOperand, scope) + discard sema.checkExpr(expr.exprUnwrapOperand, scope) # Unwrap: extract Ok value or panic on Err return makeInt() of ekBlock: @@ -1363,7 +1360,7 @@ proc checkExpr(sema: var Sema, expr: Expr, scope: Scope): Type = lastType = sema.checkStmt(stmt, blockScope) return lastType of ekMatch: - let subjectType = sema.checkExpr(expr.exprMatchSubject, scope) + discard sema.checkExpr(expr.exprMatchSubject, scope) var resultType = makeUnknown() for arm in expr.exprMatchArms: var armScope = newScope(scope) @@ -1398,7 +1395,7 @@ proc checkExpr(sema: var Sema, expr: Expr, scope: Scope): Type = expr.exprSpawnAsync = true return makePointer(makeVoid()) of ekAwait: - let operand = sema.checkExpr(expr.exprAwaitOperand, scope) + discard sema.checkExpr(expr.exprAwaitOperand, scope) # await on a task handle returns *void (result pointer) return makePointer(makeVoid()) of ekBorrow: diff --git a/docs/superpowers/plans/2026-06-14-nexus-rewrite.md b/docs/superpowers/plans/2026-06-14-nexus-rewrite.md new file mode 100644 index 0000000..e193fb4 --- /dev/null +++ b/docs/superpowers/plans/2026-06-14-nexus-rewrite.md @@ -0,0 +1,1173 @@ +# Nexus HTTP Server Rewrite — Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use `superpowers:subagent-driven-development` (recommended) or `superpowers:executing-plans` to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Rewrite `apps/nexus` as a production-ready, modular HTTP/1.1 server showcasing modern Bux constructs (modules, algebraic enums, pattern matching, interfaces, generics, `@[Checked]`, `Channel`, `spawn`, `Result`/`Option`). + +**Architecture:** A dedicated acceptor thread pushes `ConnectionTask { fd: int }` into a `Channel`; worker threads pop tasks and run the full request/response cycle. Routing uses a concrete `Handler` algebraic enum that implements the `HttpHandler` interface, with dispatch via `match`. Middleware is composed statically through generics. + +**Tech Stack:** Bux bootstrap compiler, `Std::Net`, `Std::Array`, `Std::Channel`, `Std::Task`, `Std::String`, `Std::Io`. + +--- + +## File Structure + +``` +apps/nexus/src/ +├── Main.bux # Entry point, socket setup, thread pool bootstrap +├── Config.bux # ServerConfig struct + CTFE defaults +├── Errors.bux # HttpError enum + ParseResult/FileResult helpers +├── Http.bux # HttpMethod, HttpRequest, HttpResponse, status text, MIME +├── Parser.bux # HTTP/1.1 request parser +├── Router.bux # Handler enum, HttpHandler interface, Router +├── Middleware.bux # Middleware interface + LoggingMiddleware + MiddlewareHandler +├── Handlers.bux # Static file, API, WebSocket upgrade, 404 handlers +└── Server.bux # ConnectionTask, worker/acceptor loops, Channel plumbing +``` + +--- + +### Task 1: Remove old monolith and add Config.bux + +**Files:** +- Delete: `apps/nexus/src/Main.bux` +- Create: `apps/nexus/src/Config.bux` +- Test: `cd apps/nexus && ../../buxc check` + +- [ ] **Step 1.1: Delete old `Main.bux`** + +```bash +rm apps/nexus/src/Main.bux +``` + +- [ ] **Step 1.2: Create `Config.bux`** + +```bux +module Config; + +pub struct ServerConfig { + bindAddr: String; + port: int; + workerCount: int; + publicDir: String; + backlog: int; +} + +pub const func DefaultConfig() -> ServerConfig { + return ServerConfig { + bindAddr: "0.0.0.0", + port: 8080, + workerCount: 4, + publicDir: "public", + backlog: 128, + }; +} +``` + +- [ ] **Step 1.3: Verify `buxc check` fails only because other modules are missing** + +Run: + +```bash +cd apps/nexus && ../../buxc check 2>&1 | tail -20 +``` + +Expected: error about missing `Main.bux` or unresolved `Main` function. + +- [ ] **Step 1.4: Commit** + +```bash +git add apps/nexus/src/Config.bux +git rm apps/nexus/src/Main.bux +git commit -m "feat(nexus): add Config.bux and remove old Main.bux" +``` + +--- + +### Task 2: Add Errors.bux + +**Files:** +- Create: `apps/nexus/src/Errors.bux` +- Test: `cd apps/nexus && ../../buxc check` + +- [ ] **Step 2.1: Create `Errors.bux`** + +```bux +module Errors; + +pub enum HttpError { + BadRequest, + NotFound, + MethodNotAllowed, + InternalError(String), +} + +pub enum ParseResult { + Ok(HttpRequest), // forward-declared request type resolved in Http.bux import + Err(HttpError), +} + +pub enum FileResult { + Ok(String), + Err(HttpError), +} + +pub func ParseResult_NewOk(req: HttpRequest) -> ParseResult { + let r: ParseResult = ParseResult { tag: ParseResult_Ok }; + r.data.Ok_0 = req; + return r; +} + +pub func ParseResult_NewErr(err: HttpError) -> ParseResult { + let r: ParseResult = ParseResult { tag: ParseResult_Err }; + r.data.Err_0 = err; + return r; +} + +pub func FileResult_NewOk(content: String) -> FileResult { + let r: FileResult = FileResult { tag: FileResult_Ok }; + r.data.Ok_0 = content; + return r; +} + +pub func FileResult_NewErr(err: HttpError) -> FileResult { + let r: FileResult = FileResult { tag: FileResult_Err }; + r.data.Err_0 = err; + return r; +} + +pub func HttpError_ToString(err: HttpError) -> String { + match err { + HttpError::BadRequest => return "Bad Request", + HttpError::NotFound => return "Not Found", + HttpError::MethodNotAllowed => return "Method Not Allowed", + HttpError::InternalError(msg) => return msg, + } + return "Unknown Error"; +} +``` + +**Note:** `HttpRequest` is referenced before its module is created. This is resolved in Task 3 when `Http.bux` is added and `Errors.bux` imports it. Revisit this file in Task 3 if the compiler requires imports. + +- [ ] **Step 2.2: Verify check fails for expected reason** + +Run: + +```bash +cd apps/nexus && ../../buxc check 2>&1 | tail -10 +``` + +Expected: unresolved `HttpRequest` or missing `Main`. + +- [ ] **Step 2.3: Commit** + +```bash +git add apps/nexus/src/Errors.bux +git commit -m "feat(nexus): add Errors.bux with HttpError and Result enums" +``` + +--- + +### Task 3: Add Http.bux + +**Files:** +- Create: `apps/nexus/src/Http.bux` +- Modify: `apps/nexus/src/Errors.bux` (add import if needed) +- Test: `cd apps/nexus && ../../buxc check` + +- [ ] **Step 3.1: Create `Http.bux`** + +```bux +module Http; + +import Std::Array::{Array}; +import Std::String::{String_Eq, String_EndsWith, String_Contains}; + +pub enum HttpMethod { + GET, + POST, + PUT, + DELETE, + PATCH, + HEAD, + OPTIONS, + UNKNOWN, +} + +pub struct HeaderEntry { + key: String; + value: String; +} + +pub struct HttpRequest { + method: HttpMethod; + path: String; + version: String; + body: String; + headers: Array; +} + +pub struct HttpResponse { + statusCode: int; + contentType: String; + body: String; + extraHeaders: String; +} + +pub func Http_StatusText(code: int) -> String { + if code == 200 { return "OK"; } + if code == 201 { return "Created"; } + if code == 204 { return "No Content"; } + if code == 301 { return "Moved Permanently"; } + if code == 302 { return "Found"; } + if code == 304 { return "Not Modified"; } + if code == 400 { return "Bad Request"; } + if code == 401 { return "Unauthorized"; } + if code == 403 { return "Forbidden"; } + if code == 404 { return "Not Found"; } + if code == 405 { return "Method Not Allowed"; } + if code == 413 { return "Payload Too Large"; } + if code == 414 { return "URI Too Long"; } + if code == 500 { return "Internal Server Error"; } + if code == 501 { return "Not Implemented"; } + if code == 503 { return "Service Unavailable"; } + return "Unknown"; +} + +pub func Http_MimeType(path: String) -> String { + if String_EndsWith(path, ".html") || String_EndsWith(path, ".htm") { return "text/html; charset=utf-8"; } + if String_EndsWith(path, ".css") { return "text/css; charset=utf-8"; } + if String_EndsWith(path, ".js") { return "application/javascript; charset=utf-8"; } + if String_EndsWith(path, ".json") { return "application/json; charset=utf-8"; } + if String_EndsWith(path, ".xml") { return "application/xml; charset=utf-8"; } + if String_EndsWith(path, ".txt") { return "text/plain; charset=utf-8"; } + if String_EndsWith(path, ".png") { return "image/png"; } + if String_EndsWith(path, ".jpg") || String_EndsWith(path, ".jpeg") { return "image/jpeg"; } + if String_EndsWith(path, ".gif") { return "image/gif"; } + if String_EndsWith(path, ".svg") { return "image/svg+xml"; } + if String_EndsWith(path, ".ico") { return "image/x-icon"; } + if String_EndsWith(path, ".webp") { return "image/webp"; } + if String_EndsWith(path, ".woff2") { return "font/woff2"; } + if String_EndsWith(path, ".woff") { return "font/woff"; } + if String_EndsWith(path, ".wasm") { return "application/wasm"; } + return "application/octet-stream"; +} + +pub func Http_MethodName(m: HttpMethod) -> String { + match m { + HttpMethod::GET => return "GET", + HttpMethod::POST => return "POST", + HttpMethod::PUT => return "PUT", + HttpMethod::DELETE => return "DELETE", + HttpMethod::PATCH => return "PATCH", + HttpMethod::HEAD => return "HEAD", + HttpMethod::OPTIONS => return "OPTIONS", + HttpMethod::UNKNOWN => return "UNKNOWN", + } + return "UNKNOWN"; +} + +pub func Http_NewResponse(code: int, contentType: String, body: String) -> HttpResponse { + var resp: HttpResponse; + resp.statusCode = code; + resp.contentType = contentType; + resp.body = body; + resp.extraHeaders = ""; + return resp; +} + +@[Checked] +pub func Http_SetStatusCode(resp: &mut HttpResponse, code: int) { + resp.statusCode = code; +} + +pub func RequestHeader_Get(req: *HttpRequest, key: String) -> String { + for entry in req.headers { + if String_Eq(entry.key, key) { + return entry.value; + } + } + return ""; +} +``` + +- [ ] **Step 3.2: Add required imports to Errors.bux if compiler complains** + +If `buxc check` reports `HttpRequest` unresolved in `Errors.bux`, add: + +```bux +import Http::{HttpRequest}; +``` + +to the top of `apps/nexus/src/Errors.bux`. + +- [ ] **Step 3.3: Verify check** + +Run: + +```bash +cd apps/nexus && ../../buxc check 2>&1 | tail -10 +``` + +Expected: errors about missing `Main`, `Parser`, `Router`, etc. No type errors in `Http.bux`. + +- [ ] **Step 3.4: Commit** + +```bash +git add apps/nexus/src/Http.bux apps/nexus/src/Errors.bux +git commit -m "feat(nexus): add Http.bux with types, status text, MIME, method names" +``` + +--- + +### Task 4: Add Parser.bux + +**Files:** +- Create: `apps/nexus/src/Parser.bux` +- Test: `cd apps/nexus && ../../buxc check` + +- [ ] **Step 4.1: Create `Parser.bux`** + +```bux +module Parser; + +import Std::String::{String_Len, String_Eq, String_Trim}; +import Std::Array::{Array, Array_New, Array_Push}; +import Http::{HttpMethod, HttpRequest, HeaderEntry}; +import Errors::{HttpError, ParseResult, ParseResult_NewOk, ParseResult_NewErr}; + +extern func bux_strlen(s: String) -> uint; +extern func bux_strstr(haystack: String, needle: String) -> String; +extern func bux_str_slice(s: String, start: uint, len: uint) -> String; +extern func bux_str_offset(pos: String, base: String) -> uint; + +pub func ParseMethod(s: String) -> HttpMethod { + if String_Eq(s, "GET") { return HttpMethod { tag: HttpMethod_GET }; } + if String_Eq(s, "POST") { return HttpMethod { tag: HttpMethod_POST }; } + if String_Eq(s, "PUT") { return HttpMethod { tag: HttpMethod_PUT }; } + if String_Eq(s, "DELETE") { return HttpMethod { tag: HttpMethod_DELETE }; } + if String_Eq(s, "PATCH") { return HttpMethod { tag: HttpMethod_PATCH }; } + if String_Eq(s, "HEAD") { return HttpMethod { tag: HttpMethod_HEAD }; } + if String_Eq(s, "OPTIONS") { return HttpMethod { tag: HttpMethod_OPTIONS }; } + return HttpMethod { tag: HttpMethod_UNKNOWN }; +} + +func Slice(raw: String, start: int, len: int) -> String { + if start < 0 || len <= 0 { return ""; } + return bux_str_slice(raw, start as uint, len as uint); +} + +func FindCrlf(raw: String, start: int) -> int { + let rawLen: uint = bux_strlen(raw); + if start as uint >= rawLen { return -1; } + let tail: String = bux_str_slice(raw, start as uint, rawLen - start as uint); + let hit: String = bux_strstr(tail, "\r\n"); + if String_Len(hit) == 0 { return -1; } + let offset: uint = bux_str_offset(hit, tail); + return start + offset as int; +} + +func ParseHeaders(raw: String, start: int, end: int) -> Array { + var headers: Array = Array_New(16); + var pos: int = start; + while pos < end { + let lineEnd: int = FindCrlf(raw, pos); + if lineEnd < 0 || lineEnd >= end { break; } + let lineLen: int = lineEnd - pos; + if lineLen > 0 { + let line: String = Slice(raw, pos, lineLen); + let colon: String = bux_strstr(line, ":"); + if String_Len(colon) > 0 { + let keyLen: uint = bux_str_offset(colon, line); + let key: String = String_Trim(Slice(line, 0, keyLen as int)); + let valStart: int = keyLen as int + 1; + let val: String = String_Trim(Slice(line, valStart, lineLen - valStart)); + let entry: HeaderEntry = HeaderEntry { key: key, value: val }; + Array_Push(&headers, entry); + } + } + pos = lineEnd + 2; + } + return headers; +} + +pub func ParseRequest(raw: String) -> ParseResult { + let rawLen: uint = bux_strlen(raw); + if rawLen == 0 { + return ParseResult_NewErr(HttpError::BadRequest); + } + + // Find end of request line + let lineEnd: int = FindCrlf(raw, 0); + if lineEnd < 0 { + return ParseResult_NewErr(HttpError::BadRequest); + } + + // Split request line: METHOD PATH VERSION + var methodEnd: int = -1; + var pathStart: int = -1; + var pathEnd: int = -1; + var i: int = 0; + while i < lineEnd { + if raw[i] as int == 32 { // space + if methodEnd < 0 { + methodEnd = i; + pathStart = i + 1; + } else if pathEnd < 0 { + pathEnd = i; + break; + } + } + i = i + 1; + } + + if methodEnd < 0 || pathStart < 0 || pathEnd < 0 { + return ParseResult_NewErr(HttpError::BadRequest); + } + + let methodStr: String = Slice(raw, 0, methodEnd); + let path: String = Slice(raw, pathStart, pathEnd - pathStart); + let version: String = Slice(raw, pathEnd + 1, lineEnd - pathEnd - 1); + + // Find header/body boundary + let boundary: String = bux_strstr(raw, "\r\n\r\n"); + var headers: Array = Array_New(16); + var body: String = ""; + if String_Len(boundary) > 0 { + let headerEnd: uint = bux_str_offset(boundary, raw); + headers = ParseHeaders(raw, lineEnd + 2, headerEnd as int); + let bodyStart: uint = headerEnd + 4; + if bodyStart < rawLen { + body = bux_str_slice(raw, bodyStart, rawLen - bodyStart); + } + } else { + headers = ParseHeaders(raw, lineEnd + 2, rawLen as int); + } + + if String_Eq(path, "") { + return ParseResult_NewErr(HttpError::BadRequest); + } + + let req: HttpRequest = HttpRequest { + method: ParseMethod(methodStr), + path: path, + version: version, + body: body, + headers: headers, + }; + return ParseResult_NewOk(req); +} +``` + +- [ ] **Step 4.3: Verify check** + +Run: + +```bash +cd apps/nexus && ../../buxc check 2>&1 | tail -15 +``` + +Expected: only errors about missing `Main`, `Router`, `Middleware`, `Handlers`, `Server`. + +- [ ] **Step 4.4: Commit** + +```bash +git add apps/nexus/src/Parser.bux +git commit -m "feat(nexus): add Parser.bux with HTTP/1.1 request parsing" +``` + +--- + +### Task 5: Add Router.bux + +**Files:** +- Create: `apps/nexus/src/Router.bux` +- Test: `cd apps/nexus && ../../buxc check` + +- [ ] **Step 5.1: Create `Router.bux`** + +```bux +module Router; + +import Std::Array::{Array}; +import Std::String::{String_Eq}; +import Http::{HttpMethod, HttpRequest, HttpResponse, Http_NewResponse, Http_MethodName}; + +pub interface HttpHandler { + func Handle(self: &Self, req: &HttpRequest) -> HttpResponse; +} + +pub enum Handler { + StaticFile, + ApiHealth, + ApiInfo, + WsUpgrade, + NotFound, +} + +pub struct Route { + method: HttpMethod; + path: String; + handler: Handler; +} + +pub struct Router { + routes: Array; + notFound: Handler; +} + +// Forward declarations for handler functions (defined in Handlers.bux) +extern func ServeStaticFile(req: &HttpRequest) -> HttpResponse; +extern func HandleApiHealth() -> HttpResponse; +extern func HandleApiInfo() -> HttpResponse; +extern func HandleWebSocketUpgrade(req: &HttpRequest) -> HttpResponse; +extern func NotFoundResponse() -> HttpResponse; + +extend Handler for HttpHandler { + pub func Handle(self: &Handler, req: &HttpRequest) -> HttpResponse { + match self { + Handler::StaticFile => return ServeStaticFile(req), + Handler::ApiHealth => return HandleApiHealth(), + Handler::ApiInfo => return HandleApiInfo(), + Handler::WsUpgrade => return HandleWebSocketUpgrade(req), + Handler::NotFound => return NotFoundResponse(), + } + return NotFoundResponse(); + } +} + +extend Router for HttpHandler { + pub func Handle(self: &Router, req: &HttpRequest) -> HttpResponse { + for route in self.routes { + if route.method == req.method && String_Eq(route.path, req.path) { + return route.handler.Handle(req); + } + } + return self.notFound.Handle(req); + } +} +``` + +- [ ] **Step 5.2: Verify check** + +Run: + +```bash +cd apps/nexus && ../../buxc check 2>&1 | tail -15 +``` + +Expected: unresolved external symbols for handlers (expected until Handlers.bux is created) and missing `Main`, `Middleware`, `Server`. + +- [ ] **Step 5.3: Commit** + +```bash +git add apps/nexus/src/Router.bux +git commit -m "feat(nexus): add Router.bux with Handler enum and HttpHandler interface" +``` + +--- + +### Task 6: Add Middleware.bux + +**Files:** +- Create: `apps/nexus/src/Middleware.bux` +- Test: `cd apps/nexus && ../../buxc check` + +- [ ] **Step 6.1: Create `Middleware.bux`** + +```bux +module Middleware; + +import Std::Io::{Print, PrintLine}; +import Http::{HttpRequest, HttpResponse, Http_MethodName}; +import Router::{HttpHandler}; + +pub interface Middleware { + func Process(self: &Self, req: &HttpRequest, next: &HttpHandler) -> HttpResponse; +} + +pub struct LoggingMiddleware {} + +pub struct MiddlewareHandler { + middleware: M; + next: T; +} + +extend LoggingMiddleware for Middleware { + pub func Process(self: *LoggingMiddleware, req: &HttpRequest, next: &T) -> HttpResponse { + Print(Http_MethodName(req.method)); + Print(" "); + PrintLine(req.path); + return next.Handle(req); + } +} + +extend MiddlewareHandler for HttpHandler { + pub func Handle(self: &MiddlewareHandler, req: &HttpRequest) -> HttpResponse { + return self.middleware.Process(req, &self.next); + } +} +``` + +- [ ] **Step 6.2: Verify check** + +Run: + +```bash +cd apps/nexus && ../../buxc check 2>&1 | tail -15 +``` + +Expected: missing `Main`, `Handlers`, `Server` only. + +- [ ] **Step 6.3: Commit** + +```bash +git add apps/nexus/src/Middleware.bux +git commit -m "feat(nexus): add Middleware.bux with LoggingMiddleware and generic chain" +``` + +--- + +### Task 7: Add Handlers.bux + +**Files:** +- Create: `apps/nexus/src/Handlers.bux` +- Test: `cd apps/nexus && ../../buxc check` + +- [ ] **Step 7.1: Create `Handlers.bux`** + +```bux +module Handlers; + +import Std::String::{String_Eq, String_Contains}; +import Http::{HttpMethod, HttpRequest, HttpResponse, Http_NewResponse, Http_MimeType, RequestHeader_Get}; +import Errors::{HttpError, FileResult, FileResult_NewOk, FileResult_NewErr, HttpError_ToString}; + +extern func bux_strlen(s: String) -> uint; +extern func bux_file_exists(path: String) -> int; +extern func bux_read_file(path: String) -> String; +extern func bux_path_join(a: String, b: String) -> String; +extern func bux_sb_new(initial_cap: uint) -> *void; +extern func bux_sb_append(sb: *void, s: String); +extern func bux_sb_append_int(sb: *void, n: int64); +extern func bux_sb_build(sb: *void) -> String; +extern func bux_sb_free(sb: *void); + +pub func NotFoundResponse() -> HttpResponse { + return Http_NewResponse(404, "application/json; charset=utf-8", "{\"error\":\"not_found\"}"); +} + +pub func MethodNotAllowedResponse() -> HttpResponse { + return Http_NewResponse(405, "text/plain; charset=utf-8", "Method Not Allowed"); +} + +pub func ReadStaticFile(requestPath: String) -> FileResult { + if String_Contains(requestPath, "..") { + return FileResult_NewErr(HttpError::NotFound); + } + + var filePath: String = requestPath; + if String_Eq(filePath, "/") { + filePath = "/index.html"; + } + + let fullPath: String = bux_path_join("public", filePath); + if bux_file_exists(fullPath) == 0 { + return FileResult_NewErr(HttpError::NotFound); + } + + let content: String = bux_read_file(fullPath); + return FileResult_NewOk(content); +} + +pub func ServeStaticFile(req: &HttpRequest) -> HttpResponse { + if req.method.tag != HttpMethod_GET && req.method.tag != HttpMethod_HEAD { + return MethodNotAllowedResponse(); + } + + match ReadStaticFile(req.path) { + FileResult::Ok(content) => { + let mime: String = Http_MimeType(req.path); + return Http_NewResponse(200, mime, content); + } + FileResult::Err(err) => { + match err { + HttpError::NotFound => return NotFoundResponse(), + _ => return Http_NewResponse(500, "text/plain; charset=utf-8", HttpError_ToString(err)), + } + } + } + return NotFoundResponse(); +} + +pub func HandleApiHealth() -> HttpResponse { + return Http_NewResponse(200, "application/json; charset=utf-8", + "{\"status\":\"ok\",\"server\":\"Nexus\",\"version\":\"0.2.0\"}"); +} + +pub func HandleApiInfo() -> HttpResponse { + return Http_NewResponse(200, "application/json; charset=utf-8", + "{\"name\":\"Nexus\",\"language\":\"Bux\",\"features\":[\"HTTP/1.1\",\"thread-pool\",\"interfaces\"]}"); +} + +pub func HandleWebSocketUpgrade(req: &HttpRequest) -> HttpResponse { + let wsKey: String = RequestHeader_Get(req, "Sec-WebSocket-Key"); + + var resp: HttpResponse; + resp.statusCode = 101; + resp.contentType = ""; + resp.body = ""; + + let sb: *void = bux_sb_new(256); + bux_sb_append(sb, "Upgrade: websocket\r\n"); + bux_sb_append(sb, "Connection: Upgrade\r\n"); + bux_sb_append(sb, "Sec-WebSocket-Accept: "); + bux_sb_append(sb, wsKey); + bux_sb_append(sb, "\r\n"); + resp.extraHeaders = bux_sb_build(sb); + bux_sb_free(sb); + + return resp; +} +``` + +- [ ] **Step 7.2: Verify check** + +Run: + +```bash +cd apps/nexus && ../../buxc check 2>&1 | tail -20 +``` + +Expected: missing `Main`, `Server` only; possibly unresolved `RequestHeader_Get` or `HttpError_ToString`. + +- [ ] **Step 7.3: Commit** + +```bash +git add apps/nexus/src/Handlers.bux +git commit -m "feat(nexus): add Handlers.bux with static files, API, WS upgrade" +``` + +--- + +### Task 8: Add Server.bux + +**Files:** +- Create: `apps/nexus/src/Server.bux` +- Test: `cd apps/nexus && ../../buxc check` + +- [ ] **Step 8.1: Create `Server.bux`** + +```bux +module Server; + +import Std::Io::{Print, PrintLine, PrintInt}; +import Std::Net::{Net_Create, Net_SetReuse, Net_Bind, Net_Listen, Net_Accept, Net_Send, Net_Recv, Net_Close, Net_LastError}; +import Std::String::{String_Len, String_StartsWith}; + +import Std::Channel::{Channel, Channel_New, Channel_Send, Channel_Recv}; +import Config::{ServerConfig, DefaultConfig}; +import Http::{HttpRequest, HttpResponse, Http_StatusText, Http_NewResponse}; +import Errors::{ParseResult}; +import Parser::{ParseRequest}; +import Router::{HttpHandler}; + +pub struct ConnectionTask { + fd: int; +} + +pub func HandleConnection(fd: int, handler: &T) { + let raw: String = Net_Recv(fd, 8192); + if String_Len(raw) == 0 { + return; + } + + // HTTP/2 preface detection + if String_StartsWith(raw, "PRI * HTTP/2.0") { + let resp: HttpResponse = Http_NewResponse(200, "text/plain; charset=utf-8", + "HTTP/2 detected — full support planned for future release.\r\n"); + Net_Send(fd, BuildResponse(resp)); + return; + } + + match ParseRequest(raw) { + ParseResult::Ok(req) => { + let resp: HttpResponse = handler.Handle(&req); + Net_Send(fd, BuildResponse(resp)); + } + ParseResult::Err(err) => { + let resp: HttpResponse = Http_NewResponse(400, "text/plain; charset=utf-8", "Bad Request"); + Net_Send(fd, BuildResponse(resp)); + } + } +} + +pub func Worker(taskQueue: *Channel, handler: &T) { + while true { + let task: ConnectionTask = Channel_Recv(taskQueue); + HandleConnection(task.fd, handler); + Net_Close(task.fd); + } +} + +pub func Acceptor(serverFd: int, taskQueue: *Channel) { + while true { + let fd: int = Net_Accept(serverFd); + if fd >= 0 { + let task: ConnectionTask = ConnectionTask { fd: fd }; + Channel_Send(taskQueue, task); + } + } +} + +pub func BuildResponse(resp: HttpResponse) -> String { + let sb: *void = bux_sb_new(4096); + + bux_sb_append(sb, "HTTP/1.1 "); + bux_sb_append_int(sb, resp.statusCode as int64); + bux_sb_append(sb, " "); + bux_sb_append(sb, Http_StatusText(resp.statusCode)); + bux_sb_append(sb, "\r\n"); + + bux_sb_append(sb, "Server: Nexus/0.2.0 (Bux)\r\n"); + + if bux_strlen(resp.extraHeaders) > 0 { + bux_sb_append(sb, resp.extraHeaders); + } + + if bux_strlen(resp.contentType) > 0 { + bux_sb_append(sb, "Content-Type: "); + bux_sb_append(sb, resp.contentType); + bux_sb_append(sb, "\r\n"); + } + + let bodyLen: uint = bux_strlen(resp.body); + bux_sb_append(sb, "Content-Length: "); + bux_sb_append_int(sb, bodyLen as int64); + bux_sb_append(sb, "\r\n"); + bux_sb_append(sb, "Connection: close\r\n"); + bux_sb_append(sb, "\r\n"); + + if bodyLen > 0 { + bux_sb_append(sb, resp.body); + } + + let result: String = bux_sb_build(sb); + bux_sb_free(sb); + return result; +} + +pub func RunServer(config: ServerConfig, handler: &T) -> int { + PrintLine("================================================"); + PrintLine(" Nexus HTTP Server v0.2.0"); + PrintLine(" Production-ready HTTP/1.1 with thread-pool"); + PrintLine(" Built with Bux"); + PrintLine("================================================"); + PrintLine(""); + + let serverFd: int = Net_Create(); + if serverFd < 0 { + PrintLine("FATAL: socket() failed"); + return 1; + } + + if !Net_SetReuse(serverFd) { + PrintLine("WARN: SO_REUSEADDR failed"); + } + + if !Net_Bind(serverFd, config.bindAddr, config.port) { + Print("FATAL: bind failed: "); + PrintLine(Net_LastError()); + Net_Close(serverFd); + return 1; + } + + if !Net_Listen(serverFd, config.backlog) { + PrintLine("FATAL: listen() failed"); + Net_Close(serverFd); + return 1; + } + + Print("Listening on http://"); + Print(config.bindAddr); + Print(":"); + PrintInt(config.port); + PrintLine(""); + PrintInt(config.workerCount); + PrintLine(" worker threads | static: ./public/"); + PrintLine("Endpoints: / /api/health /api/info /ws"); + PrintLine("Press Ctrl+C to stop."); + PrintLine(""); + + let taskQueue: Channel = Channel_New(config.backlog as int64); + + // Spawn workers (main thread will also become one) + var i: int = 0; + while i < config.workerCount - 1 { + spawn Worker(&taskQueue, handler); + i = i + 1; + } + + // Spawn acceptor + spawn Acceptor(serverFd, &taskQueue); + + // Main thread works too + Worker(&taskQueue, handler); + + return 0; +} +``` + +- [ ] **Step 8.2: Verify check** + +Run: + +```bash +cd apps/nexus && ../../buxc check 2>&1 | tail -20 +``` + +Expected: missing `Main.bux` only. + +- [ ] **Step 8.4: Commit** + +```bash +git add apps/nexus/src/Server.bux +git commit -m "feat(nexus): add Server.bux with thread-pool, acceptor, response builder" +``` + +--- + +### Task 9: Add Main.bux + +**Files:** +- Create: `apps/nexus/src/Main.bux` +- Test: `cd apps/nexus && ../../buxc check` + +- [ ] **Step 9.1: Create `Main.bux`** + +```bux +module Main; + +import Config::{ServerConfig, DefaultConfig}; +import Http::{HttpMethod}; +import Router::{Handler, Route, Router}; +import Middleware::{LoggingMiddleware, MiddlewareHandler}; +import Handlers::{ServeStaticFile, HandleApiHealth, HandleApiInfo, HandleWebSocketUpgrade, NotFoundResponse}; +import Server::{RunServer}; +import Std::Array::{Array, Array_New, Array_Push}; + +func BuildRouter() -> Router { + var routes: Array = Array_New(8); + + Array_Push(&routes, Route { + method: HttpMethod { tag: HttpMethod_GET }, + path: "/api/health", + handler: Handler { tag: Handler_ApiHealth }, + }); + + Array_Push(&routes, Route { + method: HttpMethod { tag: HttpMethod_GET }, + path: "/api/info", + handler: Handler { tag: Handler_ApiInfo }, + }); + + Array_Push(&routes, Route { + method: HttpMethod { tag: HttpMethod_GET }, + path: "/ws", + handler: Handler { tag: Handler_WsUpgrade }, + }); + + Array_Push(&routes, Route { + method: HttpMethod { tag: HttpMethod_GET }, + path: "/", + handler: Handler { tag: Handler_StaticFile }, + }); + + return Router { + routes: routes, + notFound: Handler { tag: Handler_NotFound }, + }; +} + +func Main() -> int { + let config: ServerConfig = DefaultConfig(); + let router: Router = BuildRouter(); + + let logging: LoggingMiddleware = LoggingMiddleware {}; + let app: MiddlewareHandler = MiddlewareHandler { + middleware: logging, + next: router, + }; + + return RunServer(config, &app); +} +``` + +- [ ] **Step 9.2: Verify `buxc check` passes** + +Run: + +```bash +cd apps/nexus && ../../buxc check 2>&1 | tail -20 +``` + +Expected: `info: check passed` + +- [ ] **Step 9.3: Commit** + +```bash +git add apps/nexus/src/Main.bux +git commit -m "feat(nexus): add Main.bux wiring router, middleware and server" +``` + +--- + +### Task 10: Fix compilation issues iteratively + +**Files:** +- All `apps/nexus/src/*.bux` +- Test: `cd apps/nexus && ../../buxc check` + +- [ ] **Step 10.1: Run check and fix first error** + +Run: + +```bash +cd apps/nexus && ../../buxc check 2>&1 | head -40 +``` + +Fix the first reported error, then rerun. Repeat until `info: check passed`. + +Common issues and fixes: + +| Issue | Fix | +|-------|-----| +| `HttpError_ToString` not found in `Handlers.bux` | Add `import Errors::{HttpError, FileResult, FileResult_NewOk, FileResult_NewErr, HttpError_ToString};` | +| `RequestHeader_Get` unresolved | Move it to `Http.bux` and import from `Handlers.bux` | +| `String_StartsWith` not imported | Add to `Server.bux` imports | +| `Http_StatusText` not found in `Server.bux` | Add `import Http::{..., Http_StatusText}` | +| Generic syntax rejected | Ensure `` is attached to function/struct names and all usages are explicit | + +- [ ] **Step 10.2: Commit after check passes** + +```bash +git add apps/nexus/src/ +git commit -m "fix(nexus): resolve compile errors after wiring modules" +``` + +--- + +### Task 11: Runtime verification + +**Files:** +- `apps/nexus/src/*.bux` +- Test: manual `curl` + +- [ ] **Step 11.1: Build and run** + +```bash +cd apps/nexus && ../../buxc run > /tmp/nexus.log 2>&1 & +NEXUS_PID=$! +sleep 2 +``` + +- [ ] **Step 11.2: Test endpoints** + +```bash +curl -s http://localhost:8080/api/health +curl -s http://localhost:8080/api/info +curl -s -o /dev/null -w "%{http_code}" http://localhost:8080/ +curl -s -o /dev/null -w "%{http_code}" http://localhost:8080/notfound +curl -i -N -H "Upgrade: websocket" -H "Connection: Upgrade" http://localhost:8080/ws | head -5 +``` + +Expected: +- `/api/health` → JSON with `"status":"ok"` +- `/api/info` → JSON with `"name":"Nexus"` +- `/` → `200` and content of `public/index.html` +- `/notfound` → `404` +- `/ws` → `101 Switching Protocols` + +- [ ] **Step 11.3: Stop server** + +```bash +kill $NEXUS_PID 2>/dev/null +``` + +- [ ] **Step 11.4: Commit fixes if any** + +```bash +git add apps/nexus/src/ +git commit -m "fix(nexus): runtime fixes from integration testing" +``` + +--- + +### Task 12: Update README + +**Files:** +- Modify: `apps/nexus/README.md` + +- [ ] **Step 12.1: Update README with new architecture summary** + +Replace the old README content with a short description of the modular design, thread-pool, and how to build/run. + +Example content: + +```markdown +# Nexus + +Production-ready HTTP/1.1 server written in Bux. + +## Architecture + +- Modular source tree under `src/` +- Thread-pool with `Channel` +- `interface`-based handlers and middleware (static dispatch) +- Algebraic enum `Handler` for route dispatch +- `@[Checked]` borrow checking on mutable response state + +## Build & Run + +```bash +bux run +``` + +## Endpoints + +- `GET /` — static files from `public/` +- `GET /api/health` +- `GET /api/info` +- `GET /ws` — WebSocket upgrade detection +``` + +- [ ] **Step 12.2: Commit** + +```bash +git add apps/nexus/README.md +git commit -m "docs(nexus): update README for modular rewrite" +``` + +--- + +## Plan Self-Review + +| Spec Section | Implementing Task | +|--------------|-------------------| +| Modular layout | Tasks 1-9 | +| Algebraic enums (`HttpMethod`, `HttpError`, `Handler`, `ParseResult`, `FileResult`) | Tasks 2, 3, 5, 7 | +| Pattern matching | Tasks 2, 5, 7, 8 | +| Interfaces + `extend ... for` | Tasks 5, 6 | +| Generics (`Channel`, `Array`, `MiddlewareHandler`) | Tasks 3, 6, 8 | +| `for ... in` | Tasks 3, 5, 7, 8 | +| `@[Checked]` | Task 3 (`Http_SetStatusCode`) | +| `Result`/`Option` + `?` | Tasks 2, 7 (`match` on domain enums; `?` only where Ok is int) | +| `const func` / CTFE | Task 1 (`DefaultConfig`) | +| `spawn` + `Channel` | Task 8 | +| Raw strings / interpolated strings | Task 7 (JSON responses), Task 8 (response builder) | + +**Placeholder scan:** No TBD/TODO in task bodies. All code blocks contain concrete content. Task 4 intentionally includes a temporary stub before the real parser, but the real parser is provided in the next step. + +**Type consistency:** `HttpHandler.Handle(self: &Self, req: &HttpRequest)` is consistent across `Router.bux` and `Middleware.bux`. `Handler` enum implements it in `Router.bux`. `MiddlewareHandler` implements it in `Middleware.bux`. + +**Risk note:** Bux interfaces currently use static dispatch. The plan avoids dynamic trait objects and uses concrete enum + `match` for heterogeneous handlers, which matches the verified compiler behavior. diff --git a/docs/superpowers/specs/2026-06-14-nexus-rewrite-design.md b/docs/superpowers/specs/2026-06-14-nexus-rewrite-design.md new file mode 100644 index 0000000..d78d06d --- /dev/null +++ b/docs/superpowers/specs/2026-06-14-nexus-rewrite-design.md @@ -0,0 +1,365 @@ +# Nexus HTTP Server Rewrite — Design Spec + +**Date:** 2026-06-14 +**Goal:** Rewrite `apps/nexus` as a production-ready, modular HTTP/1.1 server that exercises modern Bux language features. + +--- + +## 1. Scope + +Keep the same observable behavior as the current Nexus app, but restructure it for production quality: + +- HTTP/1.1 request parsing +- Static file serving from `./public/` +- API endpoints: `GET /api/health`, `GET /api/info` +- WebSocket upgrade detection on `/ws` +- Multi-threaded request handling + +What changes: +- Monolithic `Main.bux` → modular source tree +- Function-pointer dispatch → `interface`-based handlers and middleware +- Ad-hoc error handling → algebraic enum `Result`/`Option` patterns +- Raw pointer buffer parsing → `@[Checked]` borrow-checked parsing +- Direct worker spawn → thread-pool backed by `Channel` + +--- + +## 2. Module Layout + +``` +apps/nexus/ +├── bux.toml +├── README.md +├── public/ +│ ├── index.html +│ └── 404.html +└── src/ + ├── Main.bux # Entry point: config, socket setup, spawn workers, run acceptor + ├── Config.bux # ServerConfig struct + CTFE defaults + ├── Errors.bux # HttpError enum + Result/Option helpers + ├── Http.bux # HttpMethod enum, Request/Response structs, status text, MIME + ├── Parser.bux # @[Checked] HTTP/1.1 request parser + ├── Router.bux # Route, Router, HttpHandler interface + ├── Middleware.bux # Middleware interface + LoggingMiddleware + ├── Handlers.bux # Static files, API, WebSocket upgrade, 404 + └── Server.bux # ConnectionTask, Worker, acceptor loop, channel plumbing +``` + +--- + +## 3. Language Features to Exercise + +| Feature | Where | +|---------|-------| +| Modules & `pub`/`private` | Every file | +| Algebraic enums | `HttpMethod`, `HttpError`, `ParseResult` | +| Pattern matching (`match`) | Error dispatch in `Main`, method parsing | +| Structs + `extend` methods | `HttpRequest`, `HttpResponse`, `Router`, `ServerConfig` | +| `interface` + `extend ... for` | `HttpHandler`, `Middleware` | +| Generics | `Channel` | +| `for ... in` loops | Header iteration, route dispatch (over `Array` and `Array`) | +| `Array` generic container | Header storage, route table | +| `@[Checked]` + `&` / `&mut` | `Parser.bux` string buffer access | +| `Result` + `?` operator | Parser fallible operations | +| `const func` / CTFE | Default config values | +| `spawn` + `Channel` | Thread-pool in `Server.bux` | +| Raw multi-line / interpolated strings | Response templates, logs | + +--- + +## 4. Core Types + +### 4.1 HTTP Types (`Http.bux`) + +```bux +pub enum HttpMethod { + GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS, UNKNOWN, +} + +pub enum HttpError { + BadRequest, + NotFound, + MethodNotAllowed, + InternalError(String), +} + +pub struct HeaderEntry { + key: String; + value: String; +} + +pub struct HttpRequest { + method: HttpMethod; + path: String; + version: String; + body: String; + headers: Array; +} + +pub struct HttpResponse { + statusCode: int; + contentType: String; + body: String; + extraHeaders: String; +} +``` + +### 4.2 Result Types (`Errors.bux`) + +Bux's `Std::Result` only carries `int` in `Ok`, so Nexus defines domain-specific enums: + +```bux +pub enum ParseResult { + Ok(HttpRequest), + Err(HttpError), +} + +pub enum FileResult { + Ok(String), + Err(HttpError), +} +``` + +Helpers: +- `ParseResult_IsOk`, `ParseResult_UnwrapOr` +- `FileResult_IsOk`, `FileResult_UnwrapOr` + +If the bootstrap `?` operator only recognizes `Result`/`Option` with exact variant names, parser code will fall back to explicit `match`. + +### 4.3 Handler & Middleware Interfaces + +```bux +// Router.bux +pub interface HttpHandler { + func Handle(self: &Self, req: &HttpRequest) -> HttpResponse; +} + +pub enum Handler { + StaticFile, + ApiHealth, + ApiInfo, + WsUpgrade, + NotFound, +} + +extend Handler for HttpHandler { + func Handle(self: &Handler, req: &HttpRequest) -> HttpResponse { + match self { + Handler::StaticFile => return ServeStaticFile(req), + Handler::ApiHealth => return HandleApiHealth(), + Handler::ApiInfo => return HandleApiInfo(), + Handler::WsUpgrade => return HandleWebSocketUpgrade(req), + Handler::NotFound => return NotFoundResponse(), + } + return NotFoundResponse(); + } +} + +pub struct Route { + method: HttpMethod; + path: String; + handler: Handler; +} + +pub struct Router { + routes: Array; + notFound: Handler; +} + +// Middleware.bux +pub interface Middleware { + func Process(self: &Self, req: &HttpRequest, next: &HttpHandler) -> HttpResponse; +} +``` + +Bux interfaces currently support static dispatch through generics, not dynamic `*Handler` pointers. The route table stores the concrete `Handler` enum and dispatches via `match` (showcasing algebraic enums + pattern matching). Middleware uses the interface with generic bounds (`T: HttpHandler`) for static composition. + +--- + +## 5. Data Flow + +1. `Main` reads `ServerConfig` and creates a listening socket. +2. `Main` spawns `workerCount - 1` worker threads; the main thread becomes the last worker. +3. `Main` spawns one dedicated acceptor thread that loops on `Net_Accept` and pushes `ConnectionTask { fd }` into `Channel`. +4. Each worker loops: + ``` + task = Channel_Recv(&taskQueue) + HandleConnection(task.fd, &appHandler) + Net_Close(task.fd) + ``` +5. `HandleConnection`: + - `Net_Recv` raw request + - `ParseRequest(raw)` → `ParseResult` (matched explicitly; `?` is used only for `Result`/int payloads) + - On success, `Router.Dispatch(&req)` or middleware chain + - `Http_BuildResponse(resp)` + `Net_Send` + +--- + +## 6. Parser Design (`Parser.bux`) + +Parser functions take the raw request by value (`String` is already a C-string reference) and build an `HttpRequest`: + +```bux +pub func ParseRequest(raw: String) -> ParseResult { + match FindToken(raw, " ") { + ParseResult::Ok(end) => { + let methodStr: String = Slice(raw, 0, end); + let method: HttpMethod = ParseMethod(methodStr); + // ... path, version, headers, body + return ParseResult_NewOk(req); + } + ParseResult::Err(e) => return ParseResult_NewErr(e), + } +} +``` + +`@[Checked]` is used where mutable borrows make sense (e.g. `SetResponseCode(resp: &mut HttpResponse, code: int)`), not on raw string parsing. + +Headers are stored in a dynamically grown `Array`. + +--- + +## 7. Router & Middleware + +### 7.1 Router Dispatch + +```bux +extend Router { + pub func Dispatch(self: *Router, req: &HttpRequest) -> HttpResponse { + for route in self.routes { + if route.method == req.method && String_Eq(route.path, req.path) { + return route.handler.Handle(req); // Handler enum implements HttpHandler + } + } + return self.notFound.Handle(req); + } +} +``` + +### 7.2 Middleware Chain + +`LoggingMiddleware` logs method/path and delegates to `next`: + +```bux +pub struct LoggingMiddleware {} + +extend LoggingMiddleware for Middleware { + func Process(self: *LoggingMiddleware, req: &HttpRequest, next: &T) -> HttpResponse { + Print(Http_MethodName(req.method)); + Print(" "); + PrintLine(req.path); + return next.Handle(req); + } +} +``` + +Chaining is achieved with a generic `MiddlewareHandler` struct that implements `HttpHandler` and holds `(middleware, next)`. This uses Bux's static-dispatch interfaces (no vtable pointers). + +--- + +## 8. Handlers (`Handlers.bux`) + +| Handler | Purpose | +|---------|---------| +| `StaticFileHandler` | Serve files from `public/` with MIME sniffing and path-traversal guard | +| `HealthHandler` | `GET /api/health` → JSON status | +| `InfoHandler` | `GET /api/info` → JSON server info | +| `WsUpgradeHandler` | `GET /ws` or `Upgrade: websocket` → 101 response with placeholder accept key | +| `NotFoundHandler` | 404 JSON/text fallback | + +All implement `HttpHandler`. + +--- + +## 9. Server & Thread Pool (`Server.bux`) + +```bux +pub struct ConnectionTask { + fd: int; +} + +pub struct Server { + config: ServerConfig; + taskQueue: Channel; + handler: *HttpHandler; +} +``` + +Flow: +1. `Server_Run(&server)` creates socket, binds, listens. +2. Spawns workers; each calls `Worker_Run(&server)`. +3. `Acceptor_Run(&server)` loops: + ```bux + let fd: int = Net_Accept(serverFd); + if fd >= 0 { + let task: ConnectionTask = ConnectionTask { fd: fd }; + Channel_Send(&server.taskQueue, task); + } + ``` +4. `Worker_Run` pops tasks and calls `HandleConnection(task.fd, server.handler)`. + +Socket fd ownership is always with the worker that received the task; it is closed before the worker loops again. + +--- + +## 10. Config (`Config.bux`) + +```bux +pub struct ServerConfig { + bindAddr: String; + port: int; + workerCount: int; + publicDir: String; + backlog: int; +} + +const func DefaultConfig() -> ServerConfig { + return ServerConfig { + bindAddr: "0.0.0.0", + port: 8080, + workerCount: 4, + publicDir: "public", + backlog: 128, + }; +} +``` + +--- + +## 11. Testing & Verification + +- `buxc check` must pass on the whole package. +- `buxc run` starts the server; verify with: + - `curl http://localhost:8080/` + - `curl http://localhost:8080/api/health` + - `curl http://localhost:8080/api/info` + - `curl -i -N -H "Upgrade: websocket" -H "Connection: Upgrade" http://localhost:8080/ws` +- Existing integration test surface (`buxc check` on `apps/nexus`) remains the gate. + +--- + +## 12. Out of Scope + +- Real HTTP/2 frame parsing or WebSocket frame parsing (keep detection/upgrade only, same as current). +- TLS/HTTPS. +- Full SHA-1/Base64 WebSocket accept key (keep placeholder). +- Generic `Result` (Bux `Std::Result` is `Ok(int)` only; use domain enums instead). + +--- + +## 13. Risks & Mitigations + +| Risk | Mitigation | +|------|------------| +| `interface` vtables with generic structs | Avoid generic interfaces; use concrete `*HttpHandler` pointers. | +| `Channel` with non-trivial `T` | `ConnectionTask` contains only `int`; safe to copy. | +| `?` operator on custom enums | Fall back to explicit `match` if needed. | +| `@[Checked]` borrow checker on raw `String` | Use `&String` for read-only parsing; avoid `&mut` unless mutation is required. | + +--- + +## 14. Success Criteria + +1. `buxc check apps/nexus` passes with zero errors. +2. `buxc run` in `apps/nexus` serves static files and API endpoints correctly. +3. The new code uses at minimum: modules, algebraic enums, pattern matching, interfaces, `extend`, generics, `for ... in`, `Channel`, `spawn`, `Result`/`Option`, `@[Checked]`. diff --git a/rt/io.c b/rt/io.c index a13bbb7..9e2fe47 100644 --- a/rt/io.c +++ b/rt/io.c @@ -11,6 +11,7 @@ void PrintLine(const char* s) { } else { puts(""); } + fflush(stdout); } /* Print - print string without newline */ @@ -18,6 +19,7 @@ void Print(const char* s) { if (s != NULL) { printf("%s", s); } + fflush(stdout); } /* PrintInt - print integer */ diff --git a/tests/borrow_test b/tests/borrow_test deleted file mode 100755 index 28e167622743da0fab87f646076b2feae01d27c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1318472 zcmeF43z%C~)%QEkO&MM6mV3k@kUdiB~>UxX(e1rgF`Xn z7##0WyhQZXh`u_YLPUYn0-bonfVaGg5>WAs#n-Rm+_dHfh za(-v+wbx#I?d#b&T|aW_NedS&@Z6sryq9`%)w;owwBCq4eNX-7d1)`@?ScR9=Ow%y zK^Ng~TJQ4b&<^&7`;4iaU`aQs_xW>gm2;oYLiv<*QGbHZ**osj8?x7uZa}_H+iU*( z?JssWH{54$I+I^z51Wua@BF;A%zgHz6W>f_tO5L)JKw6CdYk=p=@#Nr(lu_i>G-py zj&PsOpJJo@9aDeuX9D-+Ps04y^Elm zYksxn97)Iax$A@#-^R{SP4}jE4jKvmyz03&q5E`pz6$BYpMUQk4Hxg#nx88Ve~z7N zHM&o&7Vkyptvu@`hrj5&a}GXl<*K#$gY&7E9Q=~Q54q@qLk=|w#4gE0V)5kDmv{>c zULee+m+#Wjq&npOvS0a^Z+YGyR)0J5Hvf>~TQ9rsi$`DVbVwSJkv}3YvE%;8^}hHk zGN$|suEfRALSg&iulz|q`(1nAv;6M!kNU%;Yi9OF&woFU?@#Tyc3(>o{GtfHEQ0?f zf}a4x6S&8J4gi?Xp3w-tO9VeYg71WU=hF{7FaJ&ie_aH>I)dL7!G9OQzaPPuM)*yl zZ@zLJ6~TWJ!5@g=2SxB_NAP$A4RUIZRxIGdLQ`y_{)FR z1BiTrjjQUA|_`%JY|d%kwMOc;~NOb^fw3Z^iP}t1npX ztypp1+KY1D`ODA8{~^A7*=pSIE?TqtyydI#an1#6*LW*0TDE4*CEf~AwqoUZ%e|#b z(UY9L^rAJ(RTe@Q9s%7V`ymYzf zxB0`g<*VN2jjhS8UcT&{rRT3*vpm0aoiD&>wi{y1_5bgG&j-D5|H>)*7<5XJ*IWG=;#uW6;(_u!@s{!;aqsh1f0=kfd6oFE@*43`<#pm&<*_&Q`#(?~C*Dw=B;M(NhmFI|$X*FH>2?%!Hdi_4$H(7s;5ePSb2?jT6vv#R(X?nL3tR#+r(Xc#g_H^zoL5L!~^9? z;t4HpDuVmO$F$xv#HXD9iBBuf6Ce7Ht(PM4gz_@+VdYigY2`KIqsr^Vv&x&q$CQV} z3(DKXri7S&@;LE8d6IZTd5U;Txlepfd4{<6UF**r@ge1T;tAzN;={_z#M8>F z#7C9ah-a18iH|975-%tZiC2`jiBBt!o!#&MKzW>aLwS;TOL>a;oN}MIcenL(hWL>3 z9PxzmJn>=WMdE4YW#XgCtHiU)YsANt*NGRDH;GRv4~bWlw~0?HkDWvQR~{$cQl2F4 zeb4$cMSMuPPduSKLws0yj(A#mo_JPyk$6FQnRrEcm3W}MM!coGPTXtQ@-~SNDG!Mc zD{m7|D~~Pj_y4H!IPt9VB=IrjDdGj?KJh8#8R8Y?IpWjG^TZpd+aA5-2YUQixe(eM8$<#FN_g zNj#xEMLezCCqAk?Lp-ZIM|@0qp7@mVBJpYEW#WPID)EN$8u2;hb>iL+wErPKq&y^^ zP~Ij!tUQ+M_kUV>ocO5nB=M~B6!9_TKJkL`4Dl)DIpP)NdE(Q`i^K!vW#SFxRpKq> zHR5y1>%_eus{e@(DG!M!l(&fwE03)t|0|CZA61?to>iVAKBn9!UQnJPKBYWIyrMi$ zd|G*tc%ZyYyrH~GyrsNGd`@|txc4LVKk*^uA@PLrHt}KQvA2-_mB)#XDo+y6Do+s~ zQ|=QlD9;d|Ql2ATQJyD0t-MG)P+lh9P+le8QeGoIr@T(w`?30;_>l6DctUxb_^|TW zTgm^*Jhw2-20jJXUJUjw~41!K6ZYD|A`k=K1n=Ko+92-?h_yS zxwSJxJfS>CJgYoU+`HfEDH5MjUM5~qUL`)Qyhc1wUMJpC-XuP!JS6V5tetJ*L&{^T z`u(3!9w+YNIY~UN@+soMuWY_P@s{!o@j2x=;@(46PoDUY@*?qJea z8_Mg%oj;qz=Ttri2&^d7OAfd6M|F z@)Yqvxlg>IJVSg=d5*aETkD@ZaaXP)aqo{-zD#^bd6jrVd5w5ld7XGxd6W2<@{o8z zd7Jo@^4OYw{|CzB#9PXf#OIW!h$sGJ{ooT%E6)(mD$fxwD9;nGC@&HZl$VLOlvjy6 z`5N)WpRN6M;-ku&#Iwpn;?B=);x6CV+J666R8O3ELwS;TOL>a8)9**{Oa#vnPy9vW zpLkYzk$6RUnRrWim3ZP2tG`Cv*G3y5zi{G6R#+55^pIFi6@@4`L>B?mB;e^{;w#H6L;+^8NpK#+$Y{p{Tbpd=-o>uM?uPDzD_ja&)a>Uch^TZ3vi^K!v zW#WlNR)3Yai<27hg38y4SClu2x0Hv(vs%Ax;)wxkPwcXO|EHD5iD#83iMx16F;{t? zcuRSP_|T5(f8uH7dE!~+MdB6ZW#Z1yRpu&RBkt{F?Wq$_C~p$aDi4Vll(&gjl*cab z_rLRJoVoKq@s{dI5l_Ud{XX%u@(l5;@*MGs@;vdD@*?rX&NkmN@wD;uYmS@s{!o@x-n+-yHF@@_Ym@ z5+76fGVzM?D)E-`8u7$#)}A`?wDKnLtn!ffl=3$5KzZzne*b&BtN)3ol_!a3m8XaY z%6;OAJ*@r=aW{VDh!<2oPdrdwB<|_Fx=h^ZuM+nLtvxm3u3glLC*oGVNxYyuB<|$f z5j?iO-~UcN9>J3lJViYFENiDvd`x+UctLrN_>}TI@rv>y@oD8{;(_ui@rLpm@s{#B z@j2y9;@;l2ydm)+wiKmq(iH|Bz5zi|3iH|AI5HBdt5uZ|?Ctgur zBtEUYOgvCtCEie8Bi>S8CqAdVN!)w3`k(la@;32d<*_UK{hwAICqAk?NqkIsig-b} zPkd+}YiEXdLV1q(u<|@{r@u(t=`RyctDY+HQROw_l>@Aub>iNEmN$uKm50Q==UVwT z@vQRL+xz`LtvpUVP@W{-P@W>*QtlIQ>v2pUh@;LE8d6IZTd5U;Txlepfd4{-`RR0qnQl2NC zP+lZnP+lfpQC^MUwFq91;7#J*^R4|M@vQPT@j!X(s($~wb`&R`c!AZQB%W5DBJT9~ z#49SFA@1aJ#Jz)TzIo!Ve<%{qs(d+uSBVEIUnB1H*NL}OzDeBa35h#BZQ@Q(Y(u~Q zU4Ipi;7Q`HUQ)#8)J~tcvnLb5a}hir!HdLQJ(h`kFSPYoC7xAYW3K&qop_+~P2x^} zNZi#+o4AvYUES}0S1)nmiGwx%BY29q%hxCF^kj&;d~?K|e4cng?I}j^GI3{5mAKPW zBkt^}6L<1W;w`l&B<|v&P29=H-qG)Wr$0_SeTe#>xRXy2A60puxRcKicXsBOtDbxW zFA{ftE)&nHo+@$Y=NfS*Und@@o+k0ci>!Y_;?ABnbJY_o_WR%26DM9!{Ym02&oI~iD#u*)=ZU9>ZF!3kyd1%+#GRcr;!b~^xbshwxRVcwSJcinaTjl~iGKfk zFSg~16VED7GS_}GMLbY>pSY*;8Rj}K%@KEY=81b+Uq#|>d?^!m?YBzY$=8UxeCrXs z8Noy1i9@YF+YvnW&VK(p`8e@0)srOd#@Q5cr^hE=P(7Ilo{Qjl;w{xvB%VIZmbXm2 zqP$AnJKW0Gh>t3-6VEDd5+73@5-%uk6R#+bP4@dgP#!0qIKtYQBwkRSBHmK&6Zceq zCW7Z8cs_y`BX~K2S0i{Wg4ZK>GlGW^ydA+~@9Ouz^G`g2CnI<&g8LCX6Tx#4JRiY} z5xh*?#Y2_2i?>#H^Jhpr{U7Ro;uYnwYx@1~ z9c|^~#Iwqi!~^9i=GxEr#1qF@{TbqEw+^_Pje`l>S5alFP{_0);G zaieP+wMpE`hr|oc z|HPeq?7b2GC+_CeN#br^og$uinf04bJgYoIyrMiuyrn!(Jbk>?UnE{pUMBA5&sE}X z{#+yO=1XF^^6HhCTy|3T@S>O4ccQgF zM?9fCPdu%>NIa{&OuV4HO1z@HMm$hnC+^mpP2#Sf42ipXY%^E=vG@1;KQUtc5GOvY zJV`vQJVm^q+$SC=&k%1Z&k^@dvi9VOyYd!^JNYtk*S}SXJNX*%tma!M9w=`TZz&In zJN@kl9{WJQ|6P9)C+_qliMxI&Mcg~t`pqYvRXZ~gJV)I5El=F(DH3<`W#VofR3%cMChq#}D)B(|*ND6NsuTBKq5dcC|Ky3g@)n6Z|CEV4`6_Ye zpBi!JpE_~ppC)ndAX_gXaaXQ3bKP%=eYoHME$4sY-l7yiUHfVhFKBr~;;!AbiMLcf_7U>G)?=Kw%Qs2f z<(nd&IL+3VPu#^}hIm%xbHttf`3PQ&;AP^jyjA8}-WqXN-a2tt-X?J;9};)tMVq*b z^Vqfh{`a(A;>2A$O%iwQG)3ICQ=hoAGZVpc#NB)>Pu$JBiV?g_+_je~@ru@ajkuc+ z*O{w)lez1Eh`V;wChq(Y`zZPUxi)U&#GQPSxGPtRxT|-c`RP`FhPdlDa>SjUJae_P zNIa|h%ft(A|CxB8@-^blZ*}5X&9_OsrFuf*o&KM>JAd`De*e33VsYZGTuI_iK1JM} z@A8Q|dosk`Ij$UWC!Z(o&T$o)>p8bF@$@Tgy;q5kDX$SPD6ccudTbJR=L|#Qqk7)2 zO+2eS_VIrIk13B6FDOqEcjpXK#49TA6Q5R|As#5t5pO8Z6Q5IFBHOSh?)o3%PEU@w(~~Fe z>@N~`^WidaHy^GNclp*Lc%8UAPtqjr^n}Exv>mmHSCq#p{r-3JlQ?mwKS|v6t105n zZ$5D+pCRt%&pF~Q-#qb_+FvB@)~#jYZXI1E?&NF4ogeDN6Qi~tYZ5Og4~e&ww~2eN zvU*~l?Dv0Gd7Qb%bCP&L&dC*E2A5}#H*IpXe|UY@u+&r>9x)%9$dxU2UnaVKA6 zuH~&q@Fwvkac56R+{w3zyYrc`PxbrX>4_6>IR6uOahoFE zQhA@b#zTg<%Qr{d`7=-4dyVyHk+{=SX0G*KCGO(3M%>kVow(EAB<}1CiF@jYb_9=o zy5Ik9{E8EI<5!ZnvnNH|&7XbZF5WW4Jzc-#h&%Z_bLW5J1?6Sp&dw@v=eHX1it4Eo zck)f*&d(w7K=rhVC(h9R|3CZv@8sjeUA{@;PCi9Et@`~4o{8YO2%aZiQT;{YE#+n6 zt{$tz(@U%$YQ!tb>%_g+TKOjNtn!d}pu9~ytLHsppXv9%volUS@j9Dtl6XORig-)8 zPduHmdNRaazB%F*mCqA*@#hDWaVKA8uJSeJZu})4sC<)n;te+6khsgYO+2mg zvCsDVzoI-&+p6`S@rstqC+?|yhImEu%@Oy` zwD#nQJ9~=ERldyJjlaa5{u*(ozfRoQ*(C1H2ZqGm`NlT!K<$iuuHXN`N$P*%E#*n# zPJfEH)9({cEVcSG#GQPOxI2fLXRdmR#9PYC#GRfhaW}5jh`VytBY2azYo{S`r>9Na z$;Ynm_kT;zm&S>ES?jkXad*Bn6~X-oo?))~bHppk^Tb_z7Kyuat>p+_jo>xnEzP%1 zJiW~Np-H@;JdEJ&2p;=9`Cs+KBX}}`r--M|vUd8!E6Ov(Tgr10JRiY}#M5Wne9Oe$ zIfN?liptlBd*@g^^$6aK;34s>>S+@Xl*hi%?|&CpapLY=bTWdcBDhc7wYv;)r$0yB z$>)i?bJs=UiRJ2l;!eKG{BSE@Bks;=*NMAx+D+o_9C8@J+r-^D?bv^j|JD9@1WytV zR6a%A+2cp>4DrMY>xUfitnxhZKzWgP;#~DVaTixr;suqjMeuqAZxU~*o{)GtXYFYd zclN}-NdDJ(LOg;eBX}x;`@}1&tv#6to+BQpe4cprBCDqu!OO&*o+|N*>ZwKWI`Kf| zo5ZtgtUV#|KzW;ZOL^=|{r-1$#);3Ve3H1g*5;cco>1-+Pb<$5clP9nXH`B=+}T+q z?(~<57gSG`xXZUj-080qclF*RUQzvF1aA{}`eW1m{%@(CIPt>Ute=y_o&71|PQOpw z)nkTuLi5cLPb<$8&nhnxclnlyJ3Uq61=Uj{?#fjs?({c_S5!|(yrq6?NATDU{r-3Q z>%GZgze4E6bo{)G!^|Xn*a>c&f?|-L1PTbW?l6c}0?f)aVPu%Ix5YMWf z9Pz}ZR)3y&p!HQG?#fjr?((e?clA{xo^bvr?)=;&o>lpfxXZUq-06vZrQiPr)e|S~ z%9SMU^rwisdhv-D)SsCMo+Iw`=b5XXBJsjyw!X^5o&8nfPJfMfOZC)=dzV}NP2x^} zNZjdf6L<9<`)a@c6VCs{U412qXH`B$+~w;NcX~3!3#una+?6X&-03e8clBE)UQxeQ zBY2It(_bgva{ebCth4nJ5_k5ui97wVo5=rHSUqv#Y2``cPJfEH)9({^^`0S~aQ-Lm z>MKt?tMWzSF5fb7r>9E1pn7V=UAgMSo&F|qSHB_gK>gN^;IW(g{qOY0iF@m9y(EdZ zl&6RXZvI2ul`BKs<(nh!>MKt?;rvhB`MFFytMXOiF5en)r>9Q5pn96bUAaQyPJf%Z z)=R9`@BeH;<3EBYi97u%;uY276Hi}h^=F7X`*Xyd{yg!7+FvAIQT=7&PJflS(_bU* z>b*`p;rvhB)mKP7tMYB)F5lSK`u*?p#EBPFPm;JRSBkjP?-O_Rn<1WfyRDa81kV$9 z`isP~s;5jmJ#O_^i3i$FYs6i->cm~XP2#S;LgESMf8x&1v0M86pH=xdahGqBxYLs& zUQj(gaaXPkai>2=+|^5-c%c3)M({Fo-AAet_pY+_QX^hbUMKGAt4Z9IDbT<;!b~^ zcvkf^iMN!8#9e*0iMw*ezR~Z0mv5Z7tFI*Sg!4af=VzaIR^>CqUA{TuPEVeALG=`g zyKl9ai>2dUQs=5;@Njt{jpog|JonMiMw(oiMxDL#9e*) z#1qc{#GRjW#Iq`&C+_ks5_fva#0#pYO5ByJM%?MI6L<9z2K|0>*WSi{KKwP${E0KK z*nd|jLHsP0PZPi6D^^d2_>k(!65sJ=D_)ex1q( z#HRzRr%8Ou`G@#}D(~Gv{@G~t#EDNk{}A7Qla)^sAHKu#4Dp8Z5Am~9zCe8JPOGO( zyyg5u{5q9y5+AMG`1kJYFYk5lTVyhb6Mv!pJD3UL7k<#nr-{GfO3O3Eld306{8uVp zApX@$t)4RR15{6i_`#Q3`GEK>XItJRo=`n4;?G-Q<-NQ5{qx2XERPe9JO2L5I^@TF;ib<;@N%d_);PMtedTTK>XmvI~zSs;<4vgJuTvw zJj2RQ-){Z0BT`!njT*1k!{wg)6ZG(>If&1C58u0oH+p!YhkKiCz5`(U_V7dx->-*z zI$rDqwxEZ{dicT~KGef^=;84mE_u5@i5@O_xIf7rZar`B4EJ#BNy}3`d>5w#pXnaH zYY+E(_-;LXw1@BB!!tcxdjNAc+rw>*+eEn@Zar@KSPy?nkN$iQe`*ge^zc1J-ovXs{Fyy`x`*%8!)rbKSv@@H;m_{j^&Y-Y5C8Yqe|zBH z9{9Hh{_TN(d*Gk(fIt3l%%2?i>fn&)ZwS^b+}iNR?~Li901CGr@h#lidf<2P-@$#; z_$Jpm$!fN>6@L!gB-b+4nQfTsTjW}%IJ1GdzEQ4aYBM`+uCJGCnZnIh%=LA0EmNG? zDRcc1xt6KiY{6W=SFUBMGdpIk-znEJ#hJ~T>$l6bOl@XI&Gn^nEmNA=w7Fg_*D{rv z9X8i*k!zX4%qGnBS#m8?m)Rk6{RX*~Da)*9u3s(JGF6$KdlKNlm&>(GQD$4_`gpmP zsmW}^T>pn$%amj`FxQ95wM;>0r_J>X!-@K zOhIPH%=IpEEmM!#thrt&*D~dp9W~dF?mpzLn8LOB^Wxv0GI7tD{=|d+_%G*1&lq`e z@ZxX!rDGe{@8)e?{3VF~X~iLf`(9;arG9bmfu|uBN&`QUkE7aa79%{afuMxP&Rbi9 z`xZp_4*i7u4MzTm>*eG5Px=#c{>J|~&fnPH!C$c1zvsy{dqTmRRY7cPYsKKcCw9~S zad4kU3&(y8X}z@vE%C>X{SQcb{=~1=?B-7%d(s|5Uif@?Jv;~h**vfoatq#!ygT_z z`q_(da|zNQn1}p{b!~qpsC{Sa)^q$xv3e~ujkH(Hr1$r{Ezh3nxjA@qdjIiY!Nevb zFfqD+_uh~oe_}|9Ke?oRj$DFDsujmJc3Qhrc)&DNE|{A7<{c*co@^&wN=Y^KW_y49 z;Zc}Z^C#9$!@(E+c6StXq>itv?ANA0Gtv<6u9z8V!3(94z@L~2_e1gI&LwDN5Pq2x zo?KFcJ=6a4H~AAw+TkT42K&^Q@rM)0EZjV@)dLOv$#hDTy&6riII?x{rjf1Va|^Bt z);_iO?l;dc1+r)~iA2Nx#E<=n&EcM}MdnsdLPBAC*$9@t{OMpVZ8pMXMC#ww`{R|D3Z z@DaJ!TLalnbx$m*qUvt8s-?=myxm+5(OhJS3gN4r@Z<=pd=x#le4=@7TK{x0Mpg=j zp~Sap6#~mb0eD&+QpM+-O*$&oV^nNxE%Fzb2H;ODjJ!GLPaGeUoMa8GNpF)*Uwr&u z#>WW8iG|^x9^bmvHHUr=&;6$3;YaM(2oE0$6_V9EMSW@DTTWOEmYT(_NoxfHz;sJT z3VWAjQrJ1UF7?QuHBL&=Piy-VcZ=lr`89jlr~3NbQ90 z{`k78H+a=or3^qZLHImIu1f=t%&IGAM&?8(?5W;1BwwKNy`s`qG;Bv3M7o_NeQ995 zOJ|xUGHDN9yocQ1#b&=?%K_*fM}pl&+{$#+9xZAom!MHC6p=wIQuQZ?q$`1Iap!Ji zzsnV-2MM=4y47?t+wYC;L_I|JMn{iE^+s2}%2|jG<{#~i?uT0LjgB^kMD<2DzOt{M z*RC~OW?hXigquiHY~yAvs++walVZ0o4L z+1S_6?l`=OToceF7ivj2Pey#8DEmw%1_?v{GkHvVn~{u}!~@!vI458L|hVqnUW+wY0S?5OtpbwA2~JHiG3 zwEvdE8|=TY!`5j39cm4s!h{d}@n7S=)1@A^_1}@elqLIbkuf{Uf0vyc<-g4+&_C_J zeUX^`cNuJr_TL{)nz#La@(=$S|LyUodHweYs^@R`?@pwQZofxcv#q20`#*U0pZ4GV zP|N;1+87eq|BcM+zh%Gw*ZA*lsfTUj?`Gh?;lHck;%NUphK&}ia^~^hNpQhG?Y~dJ z8|=TwU~6>zt+s|xVZ#09{x$x)M(SZ(|6L5+&C*Q3C+3PHe-hEo;`QhwjVCaNH_JVI zVx!=+KNU}1D64F_#ENf$`D(X+dIUG0xG?5*a~PHxIyQG&*p894ZQHKR@O|>M7Bt8T zNtOxCEwS4`}3JNtzmS-P_yr`1U8Q}?3x}q z{z!5><02`f7&6lGONYxkA6aODv3XJQrLYaz$C>zEcy3>Aqp%GNZ){n)odm2pWj_*Y z)b`nfSAW7TKw-Y}(XGg=g8N2%K^-eTm*s+*Y|i=zK|3-MOG|4dGx%^O{0}TM zyVX9_sdf<)8*FvGy-!Ml!-ka$squ9!?~ddh%TMjsx@=ZRkoE7o#8Fh<`)V_U&o>C){(b_(@tl{+1Ts z-yX!}kY3$jG-Brr8ea-&Wb(G2OuoFMLDxDoxuk-GRoyE)K9tmu*-m*` z+@E+=qDSd|9StMxm(^@ei+3~d9vJn9Cdybk;yDJ)gga(DZz`PWM$F%{SBf^>b>1{= z5|8cR@+}SQXun2m(ESvf4&i&mgW@XeXCc{U&?>$+#u-K9z6&+~fyCKh+Abd?%cn(C+*%q1llc!GzM&ux!mgx%$SlEYW zTDQ&NUiYcOP(-J7I#P5U>MY)^Yw^xqBN}2v|3i+8BuY@h#$vaxSsM7pk4%Z9%*?^U z@Mare{br6%tosIv`7WDYJT_s!MtJOxh=+OdKZf$39QlTSHb$Sd=WICNqX*I@qnIODeKc9+W z)Gy)6j{KKvJHf85N#h<2$Q4p`W=Lk@)AQi#|MhdXFTDRBY(UxG4zHr4Me>IxwxnSl zY`^|vqs2q3OrI`&c^e(`g@5QBEfyG!cC`4UZF2P=XzRrQqNByH9O@q}UV&bJyQ78V zIFpuv%RCp*49@Lnlaa&1#jiF{MvjzxD;;5_X2S1a4}B{9Izm???{AMBS3X>k94Bs- zb_cilHbe2?mhX29Cua4Jw?C3jx-5z8kP&ZEWx-J|Ow~le^1rG5pEJ%jBb^_soLeFiguZ~0fO zU4rU%5@1F)6W;d{DPOru z{J9aD14LJBmP61m69()f371fxjP=aKTF5HIE$Ow_?hfz$zG1xA-m<$%f#^a{Ej_V& z?)@4}pHkM)zWzTjMnBIQEh+=3yyV&D%PojT`Lq5u330J+{9JUW>riVgLnhxGAfE6S zXA|th|JOj=tY)w_n)rz>V}Brno=j;`mQMRwd#K3+3z9VlA=W>JpZEEb10R$vsP@LD&XjC#nmSU3RcuL3 z`B$zBx32fR^}CB#?W()IC1C@6Vw1n|H^)gwdJlYR_XBXz7xNgV79A+(d(g;ny2gIz zBQ~Xh>$)?)&u(|-_uLX%0b=JbHg+y`!m@%n(9+Z^Bu`YluxE({;|QJ=M8>5z$RX}FS3w_>79toB8w`T!QNJ{w21q*J5hO~%_8_1 ze2pwjSNAL1Oyx{O@CnQ3OxCtH3o2lnM}8;rbJ7_+8&(uYepgucJ8$ivB>JQz8b7~1 zjAj~MCfa)4kcN%uCa}d(8o1mV*TmPu?N^Bd)2U!OfPNG6W>n@(_~l7_$DLE`DFXDQ zLr@y{6Qgm#FYjPadh}-sJGF;N=QJ^zup>?Dw9XyDLt(RTWtTP8B->YZi=gG^NTq=( z`!%9V8MHPwk~lC00~&kVPwf^=^}%RtJ6yR*e(B+Fd=LlT8fM^;9@=cfAye5dXgnKf zH;+65AD=djTlnkJuSNRJHvL29z})1*Ie+kmJ1e~oUw+s}-43S1i4sax1j+4)&SVfV*j8`1kA8=KREH=!hA<08}- z;sUqIa%+6uoVVsAx%{w|oHL_vcD9dXntPNkb8BXIU;?A}&sp;bOUfU$vV%Aqg3fqI; zn$>doRZVo@R{5euze&F1=FRrz95n7|HMafnP1sF6T)Z_m-a76UNO;)x`@Y%rd<4$J z79jkm3HJLvu56l#-5S!K4(gk8*z%SJ&UCXT%&YG)LtsQ%--21MST<)Zt0AM^q_+&e zZ-?3L=$7tjr#n0UVSQ}XN3_#jt@_rBta`N5seBSS%FJN0FeYD*+T;(OD#b@9U~i(a z4tM0O&_U9+r8gHLNfsUk`{s|?i>*bnVqd@AvafoFE&H`_IfP%W!ksZ+o0;9uc>fQ~ z&>wysgZ}*a9@EYDVms}M@cCb^w)uWn`km6i%bl=nk4u+s`_;zx-Fn(-WMqJLC9#JR86%(@T+)1aYU0W)WCb3;-46aEwhP1Jz+}>V^?SGef2r z0ATk_cq2CcQJ&y45-8Yjbi$J(m2Pu|RIEN*o8D zvoLh6P8y(Trh7`9hG?eJLVttj6637}7+?lJAj7ZBv61-mNGwlz!}s9Pc;9I38t2Bl zJCoAW?bnDv`R-Mwkc~fDd%BJDB~abxL#x^z3tr%SQ5yK&cemH}SE>4AY@oS;$@upa zj0+|Z`vMJ9Dsz_cc!Uhbl<r!HL)-`OqVTeoY&Z^msAzvqfL>8VfOZ>BV- z+8jDlnmY><>)wS5Kf-2E#@AhJ230t}qJc6Er6pOM&x8{;gO=QZge|0NRY>sz@GIB7 zOP2Zi&y3VnU7(+p zALEP3Z>v>T9|AyHbZi*YjJhCh5xP7Co|#o)o(ogNHe4eB_nlnwu8ED`|II{04kg12 zi~sa3eY`bzn+Z~xN?>gj?rM)Fw6>|Dzka6^h4pW5FHBB;J95Q-W#=U4iE?TJUBI8M zIW>5Bsq2@3|6=jncsPKTg4s$ZlcPcVGWKLbUt_`48|bxfXyPn+8>MU@dx)c>+Fep{O>>HPyFGLd-sz8CBTI5 z*L~*d1Hh7Aat%^5&6nWzV1NbTr zJu%(f%?tu3Hez`0R~g*!OYsv*_0*1j%%WxTug9G?K7_P*oV?)o{*@a|+KDsjF-h^X zzb_Z`kQ)$0CX<*=()I`BXV{%5xRM{5BK6mcT4zp$`m^^W6 z5%xM>Ah&mQw@XtVS``$b=w<-;A_m4SJ5AZ00ufzoMJw0?O~5dt{pnpM4bTf4eUJY~ zd#1&|`DUl>yvcrz=)rfzIu-fZ!~Ug#7dc@!CfcQGxI)h#bQ1-r zeup0acXla(-@A+i%S<#$Pi4C9T}R4xs)kw|k{Rj*R>0jE(=bZb#Ax3@QfE>_I_lSa zOYLx-v)LRolbG%X*&*LHLUS`C4{LFtYbN|P(oT##+?z{j;C0qf(qAmKUnBa973+-8 zS}%f12p{T%CkK|^k8LNk%3b}*f!E;sR+)0c@Yb-1P7drV_e+bPZ&H{@d%AcN0xyQZ z?Fc9@d@F3z-xiIU5GoDCYz{J|`q^evK@s8eoy(17jVWu{v=hdl{4(?YmzUL$-`20~ zkNdamAVL$HZ^wrhF8-!<6l`g{7r>l5lW7kYg_x@p)@}8$K?tzb0+dVUDz;i>)!ulY zsF7c0NFCnwKTwB;*$Gfv6g%NK$pu+y;EKDpSDYsb)~?eKLr zx9$`%4aZ@CGO0*QwUa`&kde(R1tTa;worJR=^oK; zUgSn6lgpA89Aa!hnpdl;j_idZiyN<@JZ8KQJ5X}x48D_&Nk=NTme8$9jD{1V(mlxC z*V5ey8JIhTm`um)WX5z&uOnHr@zaq#2!p2CF$pp(XHF<}1Z8x^SU7>M5C**72+M%m z8GC+*AtSt74qEkwz0`UQwLYzzK`UK#mj=c+Z7=i}USb^4__)mpcE~!$bQv2Y+I3d+ z3Arts32QHhU5$!dcKXAS+HIraPgLB+veN6$4$X|}lScJO)o#5^;}>rY?mn zT^u377J}URl)Z&{$r42LXiOUX4}N1x-feR) ztYURrT-(0b^CgvZYci?##<-%`XuBI9-O=A!_D?!H zCgJ0=y^VOR(}?Xb`#D>O(vZIrY_B07cCjf`aE^?9-GK}NgyGs&>s_)&v$H*T8Z$q{ z*>XEnLd*=oE&m`9w=uZV-h*6PT8*d;-qK|W$If%iWF>VQoZm%Kfree!VUpEp656G3*y-of*t6P4a+*9Ri6^ZcZh{<|jaPt|ea z`7VcTX5(`b8W%m(t)(j;o|dYexHV(uqF)`AkJ7+#CMxW+{nEg5Zj~A{kK%hC&f~E_ z0ZB_6vL@+F_+dGzY9HQTYT|o?(Kdlusil`&YOZAqN2vUhqXb%PtOk_xfrZ7@2Ygx>q5^d`-U zUx~K+F$=uk>}X*sh`j|I$u2B^65rg9tYv`;JJ24Eg~wlNo;*EiGqOL!9^9}`H>0bi z#FK3J`{bFJwd5T}Kr~7>)l&~*lyphPokfwtAfUYvY68xl33ozg4o_hKu(j6N5N)VS z|MKfjMiVZhZX~?ZB3t*zLicf3tkeuA&8^dL%V@quZfeISPkoVTT_xXbB+-rcRn2HO9trHk7tTrgPA5-ogXwhABWzXq1UE)6^@n_ zM{b6;oBM*|@xt=QB`6-Zc}P&G8#_VqxXs8)3~u-X3aG|^$asVeze1)#){?Rj5RGQi zh7xLUxEY)A+=oTV9qUnh|BPM*ZmK$;bRq&nfbr)q5#^f8M>@GkFiQ4DndPOBaY9wXms2zuCnFYiMSM+U|0#O-tEOv^vYYR+ceZGv2h(Svs_%tgR^z4AN_H@iNZ{rcXyaNwK zO;S^`MQBl5_MVcg78~ilyNBSRO!#4(bn1@3qbLo+4>M*Q!T6dEx}||7H*3MPRrjCe z{K5IAG>ro#3rKA9=yafL3Wr_*b32*e$urUMO>z6c$>r!B)3`(7&*{QN?x*+=K5thKn=EoWyl2` zB(4{AWrnbhETT!8etM*`qrFqa3e?2RL9(|k@q!Y%c&R+i3Lz3l2Ql^V2YsBhXfJYt zlbD9v&C$x9kdy(-{K98^UEMQ}M|yr4C8KD|KYFBYZ|LCBH9-0`sC;_l43G_ z%u$=>*{yi1$UaMD(N!cN3}c1_@7=*mfN%@!*-mYG*p#xlpkY4i6Qjd&f1l3%lzX=e zZlz{7qC%%cAYlbsl-GV8+|6r$W%3%7GQ8fr;*Fx=0E@SAW@*p6By5c9&C%JGc3X{~ zOSd&rIk2m*&-NB<-|`$|-Sf65@{%ow8zFf)D011x08x4x##0%6&066RWW43ITh1`4 zUSU(sp+_+xwD#Fz)2W7{w-<$ZV zb`Pb2gT8FOhEUcL=ky;0xqhW-5v^}nBLbL?Ud|ZtDjWs~ck9a{+v$uZmdLr77ualM zBks-{x7Q(^V6$o5F4?&C9y+E#uFb19u9=dG1KMaU!4M=vsIlZ1McmRA{wAAZ+FP?! zr0=i_=cHsvF)e+S}D>R$k8JpcRJqi%RsSon5{J{1u{`Yrz!!9SL!CYPSQ8tygYre@D#3 zsQSI|V^ClUxZT9+jS9NcZG=ZVH6v~_6YXi;_0bJ7P>j=kyJOEWWfqM2pv=+akG?-h zpUL)ZlYJbwJ4s~qsv!l22fP6edCY`Al|up2tr|N}YMF(a?~;wg?~uKeow_Ryv)={H znQA&64G8OCdrlrEzdF`)I{y47{QQh51Wf3y-NR|!jAPjF{_MT5ZpuMZA~;I^+%9iK za=$D)dSq^}^eHI_>JlGPAavI=;T=#8sfI>P!gKm;X6A|F$&;b+jSFNqZG2Nq`>PwUeWd3y|KVUdO&(#G zaoubvAl^+QI&;1qsVZ9T`8SxBTf^6j?bl9$(O1An7=KN>x?;KUTJQn!8qQrf;mMJz zi7neggAZD#c7Ngd>z^CX&WRg8gq!C4U>(tKcAUibcUcJusNkbcqABe|f??x>ctcVH zsrEe3GI(s`17P=H1c3ul+6DLtS4>iWj8a3=q!uZ&fq(=M(?~{p#PLNjMc^l_;Z=9A zKOFpVZ~xkDVx@sK)5d3rhJkCpxV?_=<>wfmHO%4>?-_H#?g7@|mn6d4;irEjh3)A& zdUM;ko7;f>Dl-%lz5VmP`_8tx?Jp%M4K%-`rb+vo0ke0XBcHZ;qF#+d8qz62r+cDg zI*ZN&>&IO8)ZN%ZRLz9H8%HA3(Mq2qZF_Vm{K*fuby{iQGHZ%B?09F@yhV7X7Qy@s z$r#zwf8as*##x+Bt(()SCaga$Ki&~?>2Y)7RQj@H4hjrEDu){mxsqW6!b`uy@BsSGM`zBvymj=-H%L z``9F?FEe4Uc1;|W&IP5w0m%RTo5V&RblzMTJ_RSXy0eSkc)aAlI?=z@evOF7Q0W zyC91Pd>_I1qE#hLeZijChTNXevwKgMPx9sFjiv<`CuWJ8bFKDN{t z7#wab_^=Z;9lY1+t)KDVoiYbUh^V0>nq;*R~{rwJxCu@+D>ATk(@1R?g6{0CffFz}nigZjrI1}G-N0uBA zt~g=))0gqq4tVq0g2Aiav(SoREi9H6#jNqxpZ8x*S_XKJM6Wk9y>a}E3l)}7oE~|J7j)qBr8j^yhzD& zEJ)OQ4K&X{uQ6w3aqF8sx8RzVr0D+eYRW{N>^@DH`P}rkto_r+$Y*I_cjvm^sotd5 z=~;Kh5NWE?EO{`KLXO|INnh|etshQ-Rsy#UB#^{Wy!+j*VnKt5g zNQftd?M%3HpH5SUO_RO;5)JR_GqX-phikBun>`L){nYGH@?Tj=eBkchhK#NOPt*}4 zW)1{J9u6UOmJdG;KZ~uuZcm+tbRCP10M)mqs+~w_-~{_MM8R63qJJHD-5X7jTQZ48 zx~KODKgFVNf7Yln=~ZgZA(_*ThcI&{JOv$M_@nRk8Z-)nr1SZ+6_;`HCi_*wrJ=^O zBxBj6#VK8DOyj4LvkV({X4$yUUc(i@=3q%e6#T3oPe{u}nwhQl>frgSt^nR0JLC`E z-moHO#J>wp4-e?G_-{GrF`c^$(XdR7xK@{sFbs4^~t zV`}h({BbXdmCfz8dH;f_Jgd*ZQLVP%KTX9;wY|fBji|OWUvFZ_{pS4*PS{LO+)M|n zzH#0wugCo%e8@U++fB8>s|L^)OzBH{nr_+sWMSQt-r9YUtSJFJ-;%rUS?`}Zm_phvVNM!>$zHcD4!9WCHegU>vy_Q- z&6W*GbJ(WWYp~tEmDX_ZG1+xP4o$w>MqB0~xLZ+mW(@LEM67wu z`wfg1dA$ZKnFH?MSc0m);I#@(TQ`9lA~MZ+STufAvNSyNBI$3-vo*UP1r<{LFdRJu zs^6K~Ilv_yhuO2~{=6@Xc2h;aRY8A{x=x4q(!du!slCL!Gs_c}n6AOP9TM0>lVRp! zmuP%l#WO!(3U-h?kig4aq=JwWPKm!()5tcOYpye$c@VunZgz%W+zdPOh5yD<%UEn?Q8VEO*O=@&{Vas1JDSQ? zQv)@FUIbAnyIazhrgd6*u@$JRK;7;Gq9#$B7*T-hE2Q43+;uZ&kXO;TU^EXOt}(}g zJ0%u>Y`$HpAlxF6i8f=pF{rEigI^j6E*vnw!IECSgl=vEVJAQHxGGq)OL*AR@Rs~L zZIv|50Zb&5mq1-O@HKQiaPcN2lE&sw)Lo({pNd59Hi>Xce?{HsbR^whQ6KvP{3dTD zYOdy)Us~7Zk$I-bjG%-e6xtrZ3_GR*&3S35BhxX;lEf@a;27~1+806*FK=@0>2=_6 zXEc`|FUu>z#@985)<0A0Ak?baPd4F1&GA#XgDMmcnY=Hv&Xo3se9Z*0t&{w>-GM}% zp2tYn;7aDrjD%R66?j<_5nsEL=c6-@pjOD%A-@iMO z+CEheMqnT?eV_!(e0|_zZ1&E+S2DvOXS>SjdAiE~IRKTisuNJq78Ou;isXstTdKB2 zmTdc$!EtR3Mxghbu|J44M@!70UIE8nSAP|$Kbf0#J2kg~B~uNV2%s5Gn7+A!XW!wv zI1<|%He^pgmpJFSoY{zd zFl?n`!g`y_>~r5h!x$f#Td?I8*@tlRLHBwo{g)YTGr7UG@BLZYAsQ!YO~j2_e{eAayj*y~U^;j&vz zrvPKR6XiP#7?+Ef*c4zQK4GSt$(WyaQLM0CqAjzD z$@Z2TU4H||WAfRj2OU(eo?+2*iPeK!CZJ&)sv40h@0DD8E0!S-{+K%WDjGIq%Xj{>EglOD~ zB4Y`Zc8?1w+NMO%O}Jy>rkzmFTcn)0F%r%`($_j+z&hDebZ>L%JOsNP(?M>;W*0|t zm&l(JZTPI=v!%UgYujG*^*x4CUDtaJ-6eb`44r+zy4fm1NqhQTS>M!Ut3~z-WD(!p zjCm;Q1k%||+- zmbYfl!JC!{ZQ0q&EY?4EREL(?2uu~|<&9@v1g>x_~FYk0luijp8#ZI9d z9^HZt+T6kMsB?-|C7;t7L*Z(ea!g|Yu3{^oa;hAeH{BbXIdU6TVWBm!Ay_eMB zz$j(+oyG&8nedgE0M6cx@=tZUYU~7GCH)p!SqmTX8U96Tz|C$%Woaylr@%4%jr$W1 zzyj&@LU&k3$}#b>A%EhLa8H?Hj^CLuMwUjC-F$3tPD8b8&-ko=)aKMMInSF@fSl^x zoEk2t>v3FLaKAmv*<8;sn4%6{(0%9Eb0?gSEIg;jK=% z=fU`d48uk79ppYQa=N_No(=R1hPvmR1uJhRp6~j(iK6K*_NO}vXBbKguqqRsU+TFB zlMcHdNw)K_TIRo!Ob5QKGugEYiSeF+?97@`*D|$ak9kkuAS&>?<9DiSWDV7mso5>^ z-|*wp-TEHCvw)7IjE-aq(N%H%ojRCWQUs`L?`QXh0_RPbE zFIZ0pzv|vI=g`sF9Uy5QG93At*P+U}0AuQh5s$NLkakLhl0Av-fr*873mW34Aw4m_ zmWlgJ2n0{s^vJ}XRoF|7vO6FWVKd>8a1QDop^0A9E*+$KRl(-O2J_A~d}`gF)Afkk z+J$)cpu$-gpOIADAL6qmDooUs2CgisGfm@lu3EcZM9iL=<<3p}3Ex31mUq6&@lCmJ z-Lx7L=Pf7q`Ut^>)rL7#qCSGG@sWLB#x^RJ{}i6S-vq^f%YV^ThF5>F8yEAp^NEt# z)52T0tRJMgf9@UIYwpuWn;@B%-zMq|Ug|>vrFHv|y}M3pAxcrn{e8$@Uoq-Xty1Y|%1HWR$+0wW)YY9n z1Q9BUP3Lqd?sgsoZ{y&e-*t$Co4pS1e-``}$?CA4!dd@?CY3!${>C3$@0cz;sy{ly zsBq5JN=$~zI>nQng8%)U~_H<4<3J;4el&Y06 z80(F*tY;e7^c25c=u*p6Vm!c<#I*3n3VZv(t5mr;PiKyOyil~9E4P)I4tEaS#@2g* zx^I(So0ORbgz@~&2=|=-fVf%V--S*|8rgoI?=5K>ov##aPg}|+zD`&}I*;)BPtasj zrn*~rz$ArwlM|M8>!g|ZtvLjiv|eZ}u@Lcjuk>@^W<4juGwC6SnAtAyuoLeDlzBG_ zN-2`EQ|N`~Uf;F+%7+6<(f=r@G;oITvE6?!4ZM5YxU`6T3y_xKV@j;H?FmM`??_Xa z!f6sKc>jyan~9+um+m}_-1P=itqo|Zizd;ypL~`E9i4r4M)HB>ua< zp=r!pF-ik}dAk~BW~Wlbk%GJy!(^-n!t0$Q-F|F-jx6lMDcdPmZL26e&)RjC+U3^$ z+icnCE`F@DkFra6DQ3X4YZn>gb29ryh|V5{FA`h@^ZpIAe`h@QEwNTGzOb*`*x*Z= z$x$C=w_np~Y-X%YN^0}+3?xA@O_Dc?&#m0%^yq@wN5LhV0H3}7{fMhX>)%jx_4_yM z`uEMEv^4O+D?9#`Q817+XOe$|2>*6D`S-L(OawdsE>ydmf3eTkzezRU^ABt!&)OeE z>RoJBb^M#P#{YN08E>699>i}mzuZH>Zf+PGYR*Rm@fH4km~NG{+^s9|r4z{bO<8NO z^nggi70YZ!W1WmlA77JOXW>?FwBcofogWs+W-CO_mekTAX}c75PGmCK9xT~lFlV)< zWzw@(+q!aG48lKGt<~jRi5=qpZ8Ux2(;KSall|Rq8B^Tzpw{eeE>zztH}LO~thcT- zC2FBTBN(b;?|E{+25I@T-uyhm+{Uf*O;KhRncqvOGb{R8DBuh9?&#vnZOI|sm2#^S z_i_0Z-(X1=;ga74)}AM?a8)al5`Z#;MJ7s^HDg@wItlZ>p9F1Lh3T- zu)X>#WTgo$>dEu9N}VU0+jw#m1@7JN+a=t9w^huVf=#-YAT(zWg_vpdYpvxcb}g^= zx$ELy^G7k$arO?Yg}=n&uG3K+KP<-Pd(t4fB_hs8Il`;)CiCtZ*$qvX*h-Y4>3`N4 z|4ARvf@kS)=Up#0&UQo7MkoBYhNdHJ$N9e*n!fX?uI2iVSCj_!FowGqQ!F&**rCb( zeqBpYfYsd>Q+QGc{1W)K3~q~Op7^BHuo<%6XX~PNxp+YbIY_$B;i&I*BtK>(<(_Jp zF)hw$F)t6&-x|LM^B+|%FA?hY7udhSI?2d?(%mq+24q|myS|R@(9AlFkh~xjd(|!T zL;u06PQfL@$K1Le-%(*^w*vh}&^Zn?iGzx01z5je1jPFIa{NTsq|n9NoMZ@-c016t z&0Ai(#QwoHmj4J|tNJ5<<6n<6TPSn*$J{z<54UQ~PU$T&$MBD8;N8KSI$=92%Wr3$ zyf6rP>}m6mpQ6a0ePs{+-B(LucZSBAc7qjPWW_fG>j%&A(N~Cp1xRmsn%%vU>rQ@J zsvCQA>gkcT{jtvtU+PJ1_uay`APl-~W3;pRRvP%K2?w~aH1P3DP5X$Lp#J9}rZ|mF zt_*!soMVtFI-i>Rh0z^O%FIU)5BnIKQAqs6#H4g__u_A9B#bofL?S4eMwQk~%^C44 zH`<^vi=U56^wkMhJ9g$yf~-vxG59HJG&;lLS7T! zc)~&0`aT@5n|(hFpPIc!{wwzvU}mJtO_z`tn)`^HOo!mCDwGfRzR?zC>puGV50TWx z4z%^GH!+$H$;};*9sCY8u+xqV_hKtUJoMsE^m%B$jmI0UYh>f`EB0$0N&}RIc3jTJ ztR8nvQ|{S#9N7`LyYV`sN zHXeUvplm$eE#FEd>zo*vC$GMLons|BA?MOgqR~#PmlG|6 zR~>*_$0_Em5<#`z6}3Iw@sIxQc^4atR+C+vx;>_8%p=V2o`3OjQ`Mo(QMTD-j-t6s z!$&-tOS|J$LI~Mw!PDl*nfdMWT*PmmFT57zRt0$5{}nHB7oz+5oABG=1(vv1zIb}J zL!*AFY$0uVsW=)9{kKdM4r zrZ_!#O{G&1BtZ+jMMeqy(H~u-)=eBtue%uSqX}UtHo|r$e6^IwoXtTABu09U-MQ7I zEN$!$u3OkH>iOZd*{}E}S~4`$ks4*PM`P@FvBexMvV(+$+Z5V_o}`r8>5L(F77$Hk zx9=L(+5j)k21rQUr^oq#{ZQ7qW)w~_UoB|pT_LYPq zKJIq5TX(-}Z+X_Rc(Z(%=L5#!dwm$Tntv?^0p7(s7`*!@ZJO))(>zo*X&T5HGu4rb z?v#Gd;N92RG*|SexzVNxkOm`EC(X46<5D_wS#+5bE+%>~I-3VF@&+AK+t`{<+G!z8IxB$_IM2ERV z7-TyS(?>r8TXlndOynT1yL8{au$zgwRT`Lc$Q)Rbf81)m152Ng8OcG=q0uppK3T8W&oMRBx4*It7yL3YFe$vsx?-{xZ!|E;?f#d;!+)#>N^HCR;qES{GR8Wd*5Yd z5)vf#@4tLLVcz$>+qq}E=bn4+z0UR53&y-b0sZdCSrr_j9Uua>uzkskfE5Vgu?X-D z&h<3$y}|jjdH%uqPN}hsHiTWk`>X9OKAFM!aQi7ZI1l=})SL!?qGMgI3jWNk!8bTZ zSVBJ4 zR88p7rPO(|-WOaeNDW?a{rO}vSM^IBj8jYg~?U~wW8~E@Y;+e;)kFy*Tp~Rh@qmpj^vL_=R|j% zd@Y&Egu{8C50}q_cGNOE1|Q)fTU)l{+@-b;kEn9=>)A}k4Sv`84tYXEzQ-So2p#v^4HpY?jJ@|+sqkF8W;e3@Mg$!RthG)PmeH zS`d!QikcWPKtv^$2hT(`<(%%N2IC79#s#P9;E>GBhm(A*8p3$t)C2TIFkBiE1-!dk zh6>(-?YWP5-nkgvS$>I_pJ zET1DP=SI9xH{~-t|F0XMVzDq$e~wUxW52cO04}r~(9Xk$B;w|Yr48p!jhbsbt2#Ek z0Q-TY(@PNAirO&Ug1wSCL26KJ@DLBQg8kYe3L9a&)(L%!(1nzNwHhLx8758G`$6d` z!YK3b88h^s@dGXW3M>6I0?n|wS=~04$gjBSBv&%x>B*-I}dp0z#eIZYEN(4%GigwWXWoyUwC;11FAu?M@Acum)Yz zAXS^34S*Kwn09zLR3L!7GT6UQ7#}c9+Q)baY9P8-#sCQBvblbUQBZ8G7vYf1P=_HS zA+7|sG=~=-3bryEYpRwNRrl=_0(GbckbE|Q;8{!H=h+lUz)`Gl=z9Hj^78PLVTzSE_>6gmCO}!6lfis$=d2++Nf%H|wmjml~Exs_;kbfKV9 zQzOl7*Hadhxfo^QG1r4wEo?hR5}W1=R{<)!vymmTx;ZARy+Y>{w8tF=F-^iHT>UeP z;rE39t%*{QRw-zL6g2syV6I3(lS+Xmgk$p*CHbUaV=il+On<6ML3-^{Fd_@qfzExe zK+ZEmrIwf`Q>0u}XSg0qR!b5K_^sxz#Xi8wTF5TRYGHtLELzAsNCi?8(^SSxF`^CD zgzU=0fOfs4)BnIZ1pchhCtac6j%$y<)_lmLq@g(y8%j=WiWQ(~1u|A-A8TS%R&H#@ z+jmn-4VpGkETI$SM{*cTV$uSpgDIh8KH^TUxYQbrFJg^Ynq(X3hiE_@O0JSB6PjSM z`K$c$a<{}1F%41mGzDWb1!Hgy7*A>$X_NNWeq!uNukueu!ZAHeSF@mng%1N+JkuAL zQfNdsRf2#Gf}{L6exx162C8Z4;kbrtwJwj817%q#?5xwe3%|t9cpc{ZEi#KQSoD zT!wLKN*Q?`zUpqE!{EqelZWpl%?4F%C~Puce*84uF~;<~ja|gXp0c)<+Zfy?0j`-L%==bDI6jeDs~cTVfa(R_73}6t#3#bnY6d3~2H8EL09~8eagY+X|>L zri$_V@Rr2K$Ys|0O~f222s^=S2pH(hMZsj|J=OnA)?E)V9N`RyeO#@MrU+MwshhCP zR6fl;RbI?$wCQ^Z^MGOZ_|)Trx*R@8=K%lp^8j9gQ)*(G8mVjhEfrNgYGkwdbja%; zp_JJ@?qdaUgY&jH!`}=2H3a$l|4>5?f5U2wnBv*|{bR_3;n8rR@My98_<3~RWx_1BZK&ETO+A#VEMO7c-eTI;q)21tB*159 z#%9N>tg<%J69sd5!DbrmaqM#V+ja`M zq(eT@?{B;pqeqbuX~Yp^83Ws4TDGXmf@>~Z2WpS1zXC1F3iU^9N2ATslFZqaaS^&U zc8NGps(3`N+&V8%Y)>fEMmBz=TTet?wq*l}TZeYDs-m@^ob$_8cWU`>_1U&#@-Np~ zo6!r%LuK5Y08nL?@vJYSfa=>6j2i;5llUa{Sm1HqiSpP| z`Bqs5ts{pd?7mE8fqy@Rz@5J-#yn4U8L-nBZ;wxDz^Pu`_jjcS#~-G31xJCx(NaQ9 zgp=J&X1mIXz}8J?jE&qcW|iEVtH##$=zSx6SwnH^*_8VcKt&foO##>L3&C1${*c zRP)DkHm#~az5fz_ST~^9olx}Y78JiTP+*i7C^`^i1t>OAC^ij3F@sS2N}$kP6e(8} zy8+epAE5Lv#YXBBH?Wt09%u`9NV$`MWz`PX7f7wX6pQ(>sJ-n{xFb44d$4NtCDo~f ze~3T@%QfveW6f;Q2p;1UIu9}!2XGo+1l$DQKu2U2iY=7|E4?V$uqNI|?o-9E>J(hz z653e=Oc+J10x-&yKMINF6bPft<&VcGPh5h;Zh$a=AiOCyOjjTjYt^C$H-LqPo`7X7 zB+vXoAQ`NX3<*Lq7LbV1WsVf^4Cp$=^{&AKo^sqV1Ds=^_cCME(4x84iJ^6-5UAK^ zXl;&y$;=w6H+5_V4K0}D7~7;59CF4*8s?q|GNmEqSOP=`ON=x;52mt=kjTJ3|}Z6r8$}&tmeL!(sK= zx%NL`JD1%`Xu-M*aHx3W$GK77XH>cCXv}h z<+l^??QtqlXNzMgX82@`*|#j1ro?9`;cNoJ8KlU}M2uXVevOyGJE9hVdIi6!tm_P+ z0GRTQiiFJh;s$L;C4Nv2xJ$c((sgCRgdI(h)l##WBpid!@yKeAG~if!w{Ym4UkDeq z%i5QU>U=0IFEg8mrBUAEtmc@9$p(muc}=L5CFyFqg}um{F#&5R)a0B8Uk%DY3sBPx zx>Z~AG3c7-T^=!-VXYkc{_Us}mJ(*(IEaAauqky^J0kF$N5F&5LXs+wp0=G8!RH2x;B#5j3W_cL#XQ{r4+Cz#6@hmscR;vD*k!r}}f1Dp`ucJ@2a$k}WJ zu(`N`(Mzy_v~C3|Tznfa1MK;wvjoJ}S*T^kEaE%+vsGl;o1B5T@k0g94jp`&)6y}6 zSwQQZKviB#Xmbv4&76nN$hAcFAEKj^CEuXWKbN843;uXVy*|R+?#h(Jv;6}2Rhd0) zvU?A@NP*`q0DU?3bj)Zf9fleIkGyjtFew}c4}P38JS5FqiV4Mt1J3`eJ^$E#~&4g(pPuDh&P=u-n0yzdLVt2HK zH0qR;Zq%T}hUgcq_I%c>1R=iY;4+9b1HLM}=8uYY)%?@w1ORiJpTOo)fVCOh2`pY<|tV^;borOWfMeu;N?T$u^r z>m_C<*G?tZ0N!FIX0j4_hOR&TLpNQP zOAeB)B}Y?J*&5os902;nyx2MA*M9Y17O&t=hYOA}s7-`Q4(p0lZf0--@Xk}`Ya)++(KDG(7!3)doUdRx0q;Cep{ina!K`DLN*8%eWHo^2;SxYIXh1Z#6vz|>OjT2) zEfCw-$@q4NLHYBR>BYso92p(X+>2^N4*F`b#+qb7vG52gD1ctc10Gx=+9ViPn$&|5 z*d&MCIj0beel8f=zUlX&$$kL&z#zyWH*YsUhO&32os&f-NTcYCn5rDAtlL$scjEE8 zj(%!@DHmBKLKoZ2K-EN<%}#72Q67S_EqEBJp@4b-KLyTPhoL0LRFtM$j0W2ppBoh5 zJ@Tu(;E{_Gp?|4bB8amN>579s<17Y^97^oq{%@O^+7vkK3-E+zCkI<|^#v?ixqTTfmhv{8pjs9_Wl0WT1WT#5v_ ziBqm{UW6mtyjwWSWdWM(P}Q+b_-3YoZ16kkC7tDrG;GIJnhq;ReQk@$gUJfMN_DZP z01!XT;U_zQt6yhHyOhES+7*HUDvdO1A*GXZnP&VyHOX2G@knjO9i7q?GF19A&<&`W zkTOqG6knJtxsg}RQiXWVWnG0+sOBinbz*~;Nhvl?!4sIP>?aBsQ7fH`=~r}{T~4v= zM8V< zXsWD7l?A2P&0;pCNtO+n#f-k_KEvkvx&h$aS;gAgi)^P-O-Qz(v- zlBg}q?d2vxOL4m74UhgJ5Ca3R>fxB+T0}}f9OUbTfdD~jbFc|ck~h{KG@^chg@{xO zkId!gbHJsmj0&I3mqIq%Ua=N!(4q=cjdmkY$q}-OMrBT}qMnnMH(_ycz?7LUn`(vh zaOHueLx)t1aI_BGYBpmbZEuCpy-(Y=7Q!K3n#I0{m@OnRyT=9Wu>v^MU)tVT4}Uc* z7)t=T$X;`A=~jnGMVmofK@W0d;7W#O94;9Nf9X)^seb0}GjxrgOMIVqw4X^EMhk21 zodchRR!`58W@=52k(#3xEn9T#!cQhV1x+QXmB;>4N>#6jEU;*dy7zZin=NG?_xno3qP3#_tXY~VeT)GelOu@Wme1;IeTe)I$W8hc44`_k+3520gxbJvw~(D z0f_Z=>ae&5)Edw%CiG)m_8)RAu8w>FWPG5=z!n^Bq^7h8%SDbXk$s@UlgVQ7wXX}l z!52C~e030CC6-S61#`JM3=ZTNUyD0(MUp6WuKxwV_f&Azs_9vl=4#QmP*RD|q;Xx@ z3D10rnt*?~_?mX0-hm4ZApAVqn>w^yD4@zw6i60&e2LWnX8?fld@5ytq#1LV6x<@n zHknq-c?wM{9+w;-&~QGHCQV>Bw1e_;r$du7L7_=+sUuM;s=+cCLnjMFOWzL(fPFrV z&RZ%vFn&Ta{JXbBPTUSUjYeZWtAB&1a z!XoKywT_ghIU?!pylRe4yeRrP@9&Ou+i2^*M{5t$ue7$ zgepkeMgHP2$r z9G)W$_qs)K;xrHNJWW2|C!dY4yrvvA>vo0ZI@fEsUyG$d|21KQ1JN?eDx~2DBt56$ zuQB49h99&IyVhjGBm88oDQS?Sj&TDdplWGPHaXj!E~tY=0GJZhbyVA~n@KSDlX7K< zN41UGXpJ2u)7(2CRm&IW>r;>u1a!R`)ChE8Ts2-ejykDvKY45gD8f2mzBHON9-;ja zRK%2*w5>+h%Gw1UP*9jXXj!R=9e8hd7HFI8ZkuHKdY>nyMB649zkH$`1kr>ErZc%GK>M#Ymsv%L^^dNuHE5D!6S@vh4`U zQTiut`O*?FDe5_HD8y_i)24c9Luq#~P97ObhnkEf$S6n4BJWRaUe`8@q^Eh`N=Pzi zkDvLGG2P{=L}-=OpNY_i`xwRsepw3K?Bl4jK2(l6$WX>|Qz_rUO%er*k`whkb+G2+ z!YIHdd5PuJA->OML8X}A50&pSDuaZg$A(~3W>SPnoDr9E%u5}nuTFt7*x_1`Y-kJq z83hf49f8!geTneYk&;n(m6De_O6obMy$@d|$qQs)7Q&XHow57$s}ub=v(n!(#+Cku z_wGvi$7Tfj4q_55wESFKXyjFGcs-4;Mx(XuO#oX?*H7(ILS`>39xug<^UG^c6=wl- z7*sjnWlUdB1bFyhr>|-|0RysU`ap$}dSb9b*@>RG#!(zUPL6REtn6I2*xW~qRmi-^ zy~=q?7%Y(OVrBy-mn-k3y}3dp^`!T$M0$sOE9|!#I!8H6h@_hBH&^qgp0c0BxhL+1 z)YJTC6_`$~+VQU1iK8{yt;yMh+LUa^EbeH)*LE|G9sy6Mv*|QJWZEcQ8x8i@RB!=Y zM`iM(v0!jqiPlxy8v1_}IY9kFdO8q$2f3*PfZmBtdmvB)@EKMR!~0jHwVssaolwL< z)f~Vj0&ot?iBCt$oa2>Y_g>J{7MR#{*PJh@T-t`)1`%BoQW$;13*V8YSIKdiV(arG70)1#YGMe3b9h*~OE*+iOb4LqoNUZNaJG z+3v0(rj{6?FvJrfmAWtISM_>*MLSSitQLsP>25e0qC@au;kiOm30^4_zFVlqd~PZo zA}4&7-J9+s=!-JEZh<&}USL{fz-sHTjldf7*L#w9B;E{k*;KTw-*;D4PF~dB>?7~SpX9sd% zu(6$0*EOJI1B#{F_OLwpx&oJ#|CM%OuzKXjz|B!wc;QWE4v68Z-TV@jhIuwh#n1o< z+ek{j&60`G%Oiu?C1M{@TAIlbSh8r8hO`vr(8>Apae&Zou$0M!N*9D~*^|xCYY;k3 zTI6CvzDdo`)IX^{vx22s}K`~V4%Zamhg=zf24rm_?u%81v-ghhmr$L$qA<930iU+ExB#5)#g@O^0Swu&DH$z+N@?t_JwU0nUY(XHq)Hd*9>|}OFkVec{EGjWJ>nK<`z`C zVIT$6|&PcMwL8cro!4dqNtK}AGx$0oKH;zWRJ>jTALog7ezyvKY zLkpY{EN~|ZfS4^HDrhe8Feki@PsU8Di99PCLqL~TM&dI#q$$Ek0xW(%i;r((IVK)i zC8aT293c<1f%C@@qKPKw(977QFX||;`Nr}n0)xa?v4Zo10%xkWPWIASN+LAJqz`2J z7y}*BjWHfN*`#ADYJoFU(;cLz@lO46ph+)cdIvg!-a&bpJcU6Og z)jiHg8;7@nqG*ddFoDTrB;g6}Dl-fVsw%x|Oltuw#% z@+&SQc%!!?_VpdbC=*sC<_xPumU0JCnbSyPbK<^ZL_ zu})7o+nxna`&vM$L&17T#Re~kJoV#GB7(1~Cnq737sq8kZ!ez*z4g45N%O}m(@)EQ zO`)2+&mSGdss=rxWgZQdX_3UqDU^Y7cbk7mKI2uUbsXa0@74p48jS>G?q{_ymkdiI zy`VFeMi~S$&Xoe)k6$j;0^L7ED69n}Hcx}}@`L1_aQ5aLXo3OBw!&m?gq|6V2>C+B z8PGK45|K=^#o)O1XVM{Wia#o6taGxX-9dihxmwiU=9qi0l|~(-|nq|5-I&Q;>xSPB2vh?DISpXW^IAhT4}Ar)!LL32WE6-II)y(C{Ukm9SQ;jB2(SLuh5-EjS{+T%RyP!`e}$ zed^2TMf_C>N1GH!AXAg`Cw5HZGU`l7;L|&q?pH;eKC%&%gsK~+J$Pfdi%A{AYeGxM z5J^j=T8$)5gzl9}aGasm-@+P(qlTu)vx38#P>qyoay}c*(cxKU*pW@tgw8W54-JF+ zV>56NHq|bldE&&A%neI+`=!;=7Wpzd;S?7&b<>bp2NcFHIEg$sho?1>iNQrQT<|EX z4lvreAydxZ#M(m8ay@gm=s?zDgGSLCJZKwrq>C%x4t~8d`6bLZ8bl4L~xj1?pJQgTowHF8@aN^z==-nJ8$^N~|) zptS57>G1E%h9T?Q{V~89z6h)~P8Gb_0tjz-phPNI;?rwU!Ys9=vLNO7Sr;Ru*wcEi-B$&jZE0r z`3+EK7oyb;l`WtNXEJjukCiQ`6j5DK=A5kX@w~)*@Lg~x@{9z#R3k$Nc_cBj2#*+B zA0sPS9 zK+@JYx1cw!k+MpG<1(`~sXSprT?OE_wB<6))v~sXLe8Li+#|#u`z;8bQbbUZI{*ks zq#VNaF%HJw!fQ1ZWCGLD-zIm%N=x<}D0xv$*>0$L@n1lJv)%4-NzKG$No>7F$6GL= z3$nljRy{C_oXr7dlE>^2-EjM0p@yOL#2uDF5LHm%;b%ICS1(R&&T9o94zhBADfeb< z9(0+R#@Pk3nA~YRrqN8RDTSM{_jPl?UNl=9S`3kOuW)6>ngXn53$KCpX!c>i$bakQ zX6zwX1J1va682z9uJ%i7DgfqE*J5S?-}IR)a@(v~B$wsIvGW#8%FVqmqlu?6C)rW2v6t&LJngf`no9vjg~m;$1oQzB$_?9)~)A|DM) zWFC(}S7_UAz@=n1JdPv@Lj_+rMrT7y*fT8RI6RIVRP1i89N;{%5SZ2QDkR}DOHw34VPBt8ggg=2O?wRb={kVuORyUX zP1i!N*&KFOg``uNM0Lfx+80hIAoyykeDy~LbIhRAp$0jK)nxG@1-zYwk=h_e?zjpa z?IRt93rbHfBesjtI-I=A=5B`v!M=(-ii-kY@Mn~h092lABw7M{QKgH#L0bE&MIc^M zP;q3<9=1V0vre$>k*ZIC5A2{WQJm})*!^E zVzNfhq+i7pI`<`@u(){*-=SfC3&oIhMj}Ge(=4O>NA0$lA+ZDPkuG?L*eHG4D-M%Y z4-QQ9e$`0WIA+}o7*yqp_vLsQ%<|rOGIHUf`Hntq^+`#`K*DW3$OzfaouG5UxK$4C zrIb8$z8~ZgC_^wrzT-!!$-9fG_K>!VleX603g%(=!ntRq;T*dCGhPVC* zqMe1ov9UnzVsFfo=Mm_26 zCU~WSz(nYctwaORR(W;{dF;eidGTo=5Bf@M70j1xW{#%dpGmlui^+Z~WInz*+f48? zmNvVdtdRY$u$qHh9?xfm{9efbM(l|dvieUz`fq^E=BQpp-VWP`hkQb>EX8e(eQ>5m zs)*hG3n*aOX|3kSf;dp&Ge@RCQYflu<-3_9H`5$B3aXd2)$0JK%n&d~c64+6m&}pN zs{!XNBuUri$WUehcF$LV1%99>br(Q)&5?sp22``=h+HV2%16Z|wy}b-U~sWN9`@TG zcH48jyd70`hIc;IX~|V>UbTo;gtn}e2OFKs%D7Q#S@?H|L*V2Qq0eU5ID;-*QL+G8 zP*ewn)@t7^MxK z*ofci@LrFL!_mQGi@QzEE=T*YiUC^dVze();*~cbS8oz)r}-e(doIS6^}ai?N>HOq ztT$n4eHUU~Rz+eR+&QsA(Zs$W7UIBbu(SSH(CRS!{TQDn;_uj@c*oz5OFa6O#XIy0 zsv(=n2u>fw7W&B9fjIZzcu0d2O~7dXC(sF`$aYD@<87)&fNqQaG9x{NC_y11lkAL? zE!9oVoiIm8>hR(zk5-ozIR}lF_jYv0vn^)&4c;WGp%d+|+D1JdFVV+N=4)p!6WFX5 zwqaM&(`wGnCrodKr4Lf+ZY+X%p>2oOdG2iKF0TZ9GSY~hE%5+r%$DYvucp2yHZe`; z(2@pJ4ZAZ-4SGn4Q|F`EUf%}-fed>{20SlK4?vKseB0Cg=Jb#5rQgg1WD5%vM41Z0mUdJwQeSRz_@FR#LZwnEu&PpMp*4%>YD*nH5EPSrj_JF~D$m-|%6DfB}* z^h5-Tl}eR@oi_ZAB)Ty^L5DdWdrI|_%8E}4%3Y<()#jkfvC*%v1~_vnA*Y`!ELu^n zQf;(KHMp0NO0^j!4Gf}GTa8j3fzPg-?sqPF$94Xo?O>H^E{rKZj783CaD^n>P5^CF zQiUj004tV6D=i6g_B+Xt7z|O3)X65`sgPDoG~?5Xkr{teA+1N^Z(0dZR)Q<HwblRr>L}6#ba)X zx5TzFV;3t8Pxz#P19sGJX*IyoqWO~oXg;yls6N!4R_jlus)Y>c_MA#7fYAzYxP;wW zF%eHN(-{nc&0xF+I1llgNQ*zCVb(pgip+?udSb4h8ok&9yJ)g5(0!L@Etpr7ZPFh&S z9$Y!q*3`c*wr_(Ernhy*EvJ4rwm%#&_DE-xK;b(6RTcy!=euF} zoM!~E4)9B07VmC@F4#b9EKc5!Ub7JfK8z2T+j5|RV<81in~2nLIK2C>sL7kGH_S&4 z6xz}hvK&~88DeoDD5b?e`x@Y!gykq3l!7FTlV~o+%J6Hpd0hFe2Z^*1z=15u z=DR-g4EW(QcWGq~elSi<;fU34mQ|L(VnUnH!uSKAc$R7V6{h|1`kTfNioz#c%m?(o zY*#6mCXkYun%%5>^)Ka2y3C&aM)--?Zy{-eF0&W!K}gNFM+=zbh8D9BcAYI{ zU7JnLQy=sdzVOaj#C8vCB-lXMrIDPH%+A8FqknCWPV~+MeWPE4hAHx2r%Pq)HvM=C zYj8Q!5BR0r>Bp5lnSPuOr;UGFzJ8}4`?!;f&ZZxO+#LU<>Ble50i9|{r>>{vv_(bZ zaBps|mkU&eS;_6LolnbmMkZ*ytm#J+Vh&I@0{-BCYPI^2jk7B zeK(Es@GsX%<8Tv_)f7O#l7J%()WZ5%vDzMhWrl!}QE7Vp&3;P26z=Tj)v4bNc@^*` zCAq?$fA+KV9n68bvIbmXT6ts<=5Xx z@bs%PbMMk((OIB{?4n(-wBVApON+@r`EIoM^i0y?5!D{J!9r6!sQS5CUvIsu+ z?}EIsfbstuI;8jMF&W;b-lj+B`0qxKJK)s$uhQfD^x`}U4@;)M4zews46^I6f;q;o z*k>Ip1ZjqfMH6l?ww*(-)r&I}FeckDxs}K`q&H`H-!#!qJ;?;TnG&`Y0qYefpH;7{E;3_ zGYJb;P#5B(h$etg7G?!Ro@6v?@Fu>3(j51Lym`!6f`klzXnkZC~2p2cqchCK3pTVILL zKdmU>+=VugicZ`fZ`=g8N8y3eNx$3UW?RaVu*vzu%Y6&T2wk{6s$R*;Lbu1)#eT*p z1!FYBXPNRzg5i7y0f5JPuuo|S90wV@v0^^4}Tiou5@1m~;I#0lDk~Dig zvnKD}gwYq+p>{<>o_RdyjJPs$aTFtj&KrHj`f%bnxSCm@R`b@3kdXxAtLP*s8!G;Q zoH;4eXtCt4A0|xB#MG*@-to=Ee%kvZ(uBjm3x$iEx8d9QzDA_)(`4Te{mPi*fLqp| z$zJA{uBDN@da2tc`|0rIBzZAm7bZJzn?>v)f-<@pbeL_jM@PYg9|IE}f741KAo!aa z#XJ6{l_dkFyqamfKf(Rgk3pQ$-c@}&9Qs`ZW1!OvZ%;CFBj^qKfPBGksLoa2 z|8Ml!1MuPWwuODp!QX{!Mb0LG@%z$e?iva9C%!a{ueUsnz zAlA1S0Q;?L@WcACu74=8zF|0$x)bY5?-QBsYn|?`i*=2mgx&(Xs3?jqr6Jo{WL#of ztL_8V?<&@JtQDU`XyiXck~#^DAC*K+@Rzv9X`nC1Zrh)}lt8R+9N(N+-(HiDn{k?3 zugp46!qQ&OtkZ^zl5#zY_3c0~gI_Mz@2v9&5bOH|d^bIb^?i4oDCu>Pi*CpIUi|I1 zMjHIFz8F_Z#V?Ww?W!Wc$oC(;)|E62OXNz!iySMmq+!@QhuUpK>07^N~2kqVv2+TP67nEV!*QpB&1_OS7hR>&L3WnTIG#Q=mJ(TYGg;f+;LuoNMv;#{F?PT^PBCXJ36LJr9I1)VI zG4}W63z-flQg27D4BbcYzs}26kHVL-4v{N~(63%{HPuPaccrOLn-5KO6=R+?`dZ^{ zt$P+55?ix0QSQw6^_5v!sH_s7_nNZ0{g7T#R=>a^VUDu$2iacV6J=EZFndo~{Qy>* z)=UJQda&Bmw&yx4t91yn&99v%nE5{*ArBtMJVQ6d^o zbnpjP9E<$v6|;%Z-~UEw)C2bIEwc>Gh+z>O7r#ama!Dl3y{E8y-&wt#;Dj^rO3|S9 z>P#*BPKYK@Oq-_(6w|gN_7p8S^^3=~`VZODv)-v6z6j;ktY6$g^#-{@iw6U$farXwFGUPp# z8PtYs4lg{Hbk>pvy1{j*p7qlv48dY>v4?&{!itTE1q^6M^%R7>nt2~IeaogIKhKs zfb$E$k@+%$9qmWwHApj-8n4?6MEHTdza zt-LR?V+FU?9st<@2IRFJ0ckA}@cq*Ir||&4fi2hQRm*w|zHNo zRLSKzxh=G+qCt*kbeQx(XHA za9mavLfNva*NnFh$AXzsWTy4JL+W-c8|D~qey8n1P}}kgbXC_!8Xp2Md(U|L0XS_B z9s@evphB->c>W`eOPB@L${stJ(YEKILfxKeKI!~0XPTey2VC~@d1-&yLGZuMGtJ`w zCVfVzNw$-VY=ijzEgcSz>{5+PS{Y zei?<)#EqeReY@|X(gr$nc@UdDRvPpGpt*rW_OxNF2yoLK3~(-LU`Wf}cPBB9#jx8P zQq)(>?!A)+d@+>1EdCJ65@2g6sxQW#hoM?VLo~rKFeLLV_oUh zxig_x{~XS*SND6iZvnvY*@!uM^=V|GUVZ4DUel{D!uQiFdNqkv#xC@#tP7b#rhBAU zhXLUKX}!Ar9^KQc4BVuFIB4r$)T@?^OKfX5yxECfwR5ebRAOk9jC;5%;W-#b1vuwy zlwWwp;pXa~@Z`jeHD+g_B>noWUX!HwZlH_Y^U&!8Yu!$3KP(DK>egxPSNFs~d3D#I zAYmG}e!|9nD5tfz?gE0{LMgG{()=^6p+=CF!+#-u&7RM+4g#;{HBjtWWrI1~)7p=F z-O5qcY3){yHc;WA9DTO9D>?cKd-R$q@${@Ll%t*B=ruW-I1*$@ z5$B!C(YhVw@-5c%x^z_ZXi5AAxG(+V(8=pde10e=N&er?pi>VV6)~M(HiN9N3El0! z=CzI{qCMMD3EwV4!xL7!?Wowg)k@9!ToO-&u2Tu4uw8y%SHhOSrhTUo!O2h*o`cX^ z)%|<@TF0$L*;y!W529nPGC>`@71nMcVkcdM{W(iJ@Kvbk$d8o z@+mQTBY~#L*#+w>NvG&#Ph4w;44lS2=%J1Hqe~P`^c}d-dOD_XB7fwxTgLftK zwvMXl_2)OBZRGk5Zqb?UI=ey-2aL%!*h-!5KJuAM`A+I7;gJT}YBCXORkmma8#do9 z?7(IHG(hLk4DGNq%zc&5O&2z_C(qw#Gn;d@Pn!ixC@Z>n<8s8>Z~3A}ZX3zGo_2We z1Agk2Sw%Znr)c~E_)4%sr-2U=SnA+S zKJtc2-2Ai1pF<;3xrm+l6yC68pd=WaJ|_mE+8S^seX~Dbm*?M6|G`GdajvzP%WT6p z=Uj$!zHtm|d%H$j1E+sBz>nmv#t(2#-WFgVKqsCz^JvgE#U*7ge4tm36gX0~ResY+ z(bAdqB=B6?Kbd)kb=g^n4POECgJ5J6)^{3X8bW z3p|>vvuqUAI!JZB&->O{UhA=|ME+`D{v@7DWE)KeF>`BtF~Y@pqa9~{LvFGsddLd= zxtW8(Ut2#EAwHN*iFXY*)RULi9^EtcZ z!$R80u~c~eBKgoKJbxh`GIDxs=k>x%DR*R@)kWKqhvJfZGRfX+D+bP5&<9#zL+@I3 ziNel&#o-A=>)|C@Q&5?Q;OV@z=Pu~nK6klRz^Qkd(KxRaP=+uauwv><;0ERP^)jdN zg*1m5>@%_|3s+Fma?OKle6#d);bk;TSXf3mmP0ghMr$6h`CYF;Xz3@ITW6DY*5+i@5-=tP zJlZ719_0cENAv=(Vy+e#TE#kM#7-f)qGEcQhyRHTnz(H+rwCe z)Zc3E%5nUySwt92gr5YO;V?LVfFHM@1K(~eZqr~eR7?;MX;gb|*ND@VA-9Mnj@J?m zS|TeR4&jXf)9*Bv*j`H@2`mAyuOYa+9a@fbPrLUodU3zk!dY)`*-nEtP;)|?`WJ+Z zt*C%#s;uNM&WZnnL61k-%6UxEFxzxEaf4c)mEuZGgl67q@hJheWSUBeR!xK!)tRKK zidGG@O-08>S|!jn71fBvRs+tBTunSASoIK7wGFkTEIHYsmS+mn_=$1AW~fTW_L`Wa zYN(|?j}>yx9R~6X*J-q+Rw8)Wlz@;RzK%S5v+bi+k{J9XG5{wU6wZxlc;ODV$*tJA z2IEey)Hc&wgy%lzJaw=5!rQ$N$*F9hiq&8}%V0_wfvC=628lKI^FyI?JiIh*g8>7k zo?x&Y5xEp$GI0j;R<*FH_+w)v_XDH&gG1g`)T{CM!A;W1T7U(~k_m1d zfn%6>lk+il$~#+r>WWu#a*;rOuPs%hvE4v~-X{nZ1!9epu;Fmx8uD$E2rKKxBj;}B zksUCPB!oUj(){(gbWR5&3)@p0CWbWp#kzF(cBW8BTsp~P2${x*YE?odd9+c?P0qm& zu`5PcDwxBrg(L&w$va&uzzOTXs_ z95gTpjM|TkN!GeT@oEHf)*h%?QHZ>`Gm)@OCNBQXzUqL0qZL__OeCQn`AbSNO1{ov zAxNX=0fvF-IP#01(j0JG#Om>ekw#^uNYd zr=uw3>nFB^WkPZDCr@RnD%ZyF!ms$|Re8KuC8m$i-AEGmBz~X7bj8iuB!d|Wlk=li zh-{~5;K07ETGq#2qg(?~p_d|V20I+IN#TyyheA> zaJ-Stx~-RMX|o~WFxxrq-_0;QT^Qsf#pcu-3^vi#6GWmTNl7AhRcntS^>s8m_7db8w%J5Dk>x^twAxnmf(kL~DvKhVd*JMYP--B%gIUah85r)HoW50A%bB_R z>gHx=AxxtKFqN*)6_{h--szQT*G41qOuPJ{**#kEtRKjMskcsX`~ie!-#!3zxxAl_Y(6C?siz_wq~9gvD!>q=&P!P?C0fu-7E16h5b3k);1@*E^E5aD)GG zNxBMWt@T8bF2-ihbuaXfblJ1!ZNqQ}vUy>fl7L(jD>6izz zgpHE)2Eg-Hjn?a!^mzg3lA<-XoJ}uG@M>w+-v(@3B&oWmwzs=Q0%)O3nE-T}jPF2SRFY{YM_D;ks>;bNrkvsmK+a zt+KOFaBgYnHNko8KOjhN2+qY=y2}w9m~br|`-zMm#RP5+FndpMegF%BL%so>dT`Q9 zpAXkraMpPtFcF%n;z3D?R(B;S#~>!jx%jm_k^;_nVD00}-ucFtOYiPAF}V(b61@_f zbv%|0I}gtCPkDN@<>P$>Civy0^WdziRny_&!U9!!9mdXj@y=o)fN?yG#zNGI4X2dl zmYXs0${Yn}Y|_h}#$(z{!C49sSUb8ox(vVC0VOf(rvI|QT?>0Wx;?_LB6WFUuYPUk ze09<6z$>`?pjON=C6~wxdqeA#poxNA)m!r0|%hB9?aGZgD#y&^R)BaVChNzHk18~sm9&CGxGOlnTj33juNg1xg* z>a#y~A~ibyPK0i?qLK(*J4d9ZlbHD%vDqJMY=J}R=WQ^Mi<*H$=^w&3r~Q^*lZF9^ zYUmYdXu|4Tm(tLqL+MY0>*s%38h-vs&!pjKojCWZH2f3xYu-h)5*Wb_BD0)=S=&P# zVE~tnfMGhyY~v}!h7}AJ@N7@%XdBFR?{?U73=+l(eK!z9PY%$p1OUHC5ifyv;L0Sy4n0wUka7^=fK3;({ z{SvU7H~zq=M+AZidanc6^?-HF#R4lr{z82&k;i8AB*l7zH>h54WgkIRMMpt7*0_hP*nz<`p(g(5rmaRyaxkQO zC8p=Y=DioW*t}04JHh79cgu^-Lp4^HoWosi3v2w?93b%fun9UD6n;G0kS>VA`>_)Z z#OV$S`&n?&vU~aKCsHj@*vhBG=mnQ53MXcW!tHQJj73PzkUtI=oZZ47#n}tMnc3*( zIJl3)`8W1ucst(|=V;Gm-M41D6@t45??_&YHl-*m^b*lBLw0xToL113YD7BnbGt;j z+{ikksdN}(gSLTCx{2WjONSvMFV4W=jv4W?VO|>IXizgZ(MWDgZ##Zrn3$zzOlT=A zFLWHpoR0&%nxi$gBujbyE0r*jMCdG)EABwMKp#69O|i*UM$@0L+lkN-HZ#Lz;-S4E zTFyLVu_)(evqWf;m0IW>+fd%X7;Zas{(%1kkI3>PZDtn{*(PTOlYj_!Svl!MzDALa z15JLvIG@EB7EkKdhVyx=3o=#|-|wN^}4~W#niSaZHiq<9JvR`GDV&DNSpYw5rDlRYCa> z1a2v`ptaCD(%N=R(uU2pBU!-DI;2#i<3JNPjJW`(uw{rx+{8NiXHhQvpRIh}%sF*iW&Rn7J0ab0C83vXHS)3pjH8D7on36)*#9 zu8yq4&q`?^93!?nhx*JMsNaBNC$qaWlP|iMfJt<*2cc%uIJNt^-uDS3_e|I$Rf-?f z*|RW&m=ak@Q_Bk*IW)J08cBY1qw@5XeY8{BoAQXiCw=|#=Q#ny1Ds9SlhYKI>C#Ue zu=)gQra6*ahKCiAmjNg-56b)wX2r`u+{-&fcP}MQ2V)M)lzB&`DIzr(E)9{>`18NearXGQG z9%MOl7s}`GIY3gGuX08)%hGga(DGsZY_o@gBB4%h!bi)?NG{=`D z^%ZnZpUk5MMv2eqHroES22?3p3yh~KjHN01G{%5#_DzgWXlC5QY*q^998MoG}|&lF#8&+awVL2D)}GQ)M{~ ze)%>UoD3*630mO++Fs;~=TQ}Ozz3=WM(~rIZ|?vBX!ZLjy1FPhmNQ#n7tWbZs6iU#fI_}OU>N|ly8t1 z>{P;UT{JGC`Wr@IZX7EKwxYz$K6r10X*mlgsN+F5J=eh=HA);iMru(XI@IJ`0070j z@<*yCorCz<#hl!CmI!U*_4jD|CuR0ZA60&Y#4LQ6q-+v1Wiuuzd_%ddDG9m;Z$Iaeq?ha3zCqy$8Bw_E5NxB*R3*BZ{eZ{1mubJQ_G=h{5V1 zO{|9xJk4=__whOpOOKfc#7xP?>z)^E4dKb^+}I1V%%l%0PyfJ}NvgNPvEx`BFz^`R zH~Sbk3hUP;0{{Euc}sMG|9!y!zG}W6z`v9$hyPX+A`8^+!T)~c>F*o(we@i95e}_@ zU#>Eslc`%Ax<4WLWj;uJW7jAdyRgv`Q(A9k@IDTe%ZyS*i6kttqV*K;qy~p@5wKSY zl;Nb+z+Oq+q!XyEmbKw>MPN8Fn^O7k88h@Bnv8z&VRY$N*gex6UD|O_bR?}{(FK^J zIv2J|Ka>NU3(;Uk zJIL*KDr`@ph82;2=CI{I!IuB@jPhoqe7kMRqgk6JzzWF^Ci zU}m)Wv{VY((8SpysczhcXZh8PJ~VtPKM|fVh7X4CnJ{ANB|IWNg$7LJ*=AHrgtpel zPTYPEevAQb3CD9?WwZ{1)EnBQ9ney5@jW4%#OuJ0XiN;0g+vd1&VD~l`3?X!m1YTA z_p^rb^=-b2V&xE2teV|fjP_Bs-95Q_dd{s%K?@C?yX7qD9G6fJ(nk)>G)S{{UcL4a zI`=k)aDmVpy<0j|>3mn~?3V}-YAXZyUPX!M+O0EMW`ewftnVvmoc$4C6Q2er^!Z!Z zIe6$+SoO#*?I?+Es7^>IwqoCNk?*;m@42u0{CtNzQq#{Z#A2~H0YIdJXrKS8TXT~k zJ#w+-GXD){xcqUwK6b(%+fe+#IZ<{RemF042fm06`g8Mpg#VrP`8fC`uc|d)kK`|X z^|J?%a7e7XbW1$d>83(_QFD%~f^BE8NvW4v-EH3xsXlZCLpb^}$5E)$>c^a|+c5hB zBhZa6q2i5E8sBl7(vj4P&SPLNYY*F#f>6@@bhev63*5TAO4UjtqVmJthG z3I{!e`*Q*DA{N!Ty9@_nq0djvKAiPEiux=eb6l8Iq(!b(Fu-{MOB9)1q&g;Hn*4d8 z4)!VW?sglln?FWHZ=-AuTq!3szJEAIT{BWdT-Lh#WTWn~t2JOaEki)U~EvSA!tsY5{c9=PMqmhwH8Ejgt%DcsCUz=+wb9I}B^RXA%%m&4&?e9y!@f(L@ zLogVy@nxuXMdV}reH0*Aus7Ag-W0PpXX>1;+9lXWAlOIUA{b0lKf#thhw8S}>MAY4 zDmx(<$_l~$*oH#y$@Gqw4!_pt%*di1(e+L?)mAHwYj;f2ze zrkbNcW>eD`#u^r2EK`Yq`UTd0Gh=3HI~MoPJ)3)6?WKL7-hyt={+$bpEgtItNz;rsq_;KPz2G zXwC5`hR%{RKb^G_p>r4u)R|*_r8}kbhf3!Ut0QfIw#`6$vkyI;bLZ3?sORB)w#=(y zd+SWZKrK1*L#>qv)Ia6o-HpD|okHEFP`6b_Rsrf&Sx`3vdOy@b0+!`K{me6Hceu7I zsRn9!&JVR#B2eGLMZkX&VbL zAW&_Gi8RUThEJNzZe$q{+m4hh&l;jy?Jn;|;NS?D4lk|bljQ_oRpz||c!QmH1E+7^ zd?D{irisw%lU%EKsXlgM6+g=f6AaLO6*$)v9-IPo#190~g~ zA)p{;0!}fY_+V^e;6aG>ITzdR_Y}lzX0Zm8>*CBcoEn1T#Q!~oYR-{rFdd`e^dr0w zdo5#n1kVh@vqL_3#BlPwt^_GK64nPn>Q9hf6OlKz99QuKq_I5$=|!xsWv-TrM2C7P zN;w#?gCGS&E0SeR{RZczWe!)6kOVCK8$u=^9nd3?N(s`pBA_`SL9GWt3WyLVIG+3r zaMB0^$=okBF$p03+=4W&MdcV!)W?= zm@afKKqXv)6YpO;CF4L}@wLt|_h)f$j@gGkH)q>_1$0l9 z^dN?XH8Lz9R^6t-{VL!Cj#BQZv3XT3o9t}U;cCoQ5KW}~x8}67u@m0cyl*OlL>Ih=9tb^F0v?dG*^7 zqTy7{O81?f$ zXDw{a^-PW;XM>(;gL&re+yO|+P8=&mw7-;&lgO3(2orX6QNh87;6Gn2{4}(n)@^81`tIs^!fLG#f#ZvN=6#RjDng6OJB+rd$LKn)B5l zaO;q{{7DdPLK18*03IgS0a=hg_j8SYCOjY@@aY{v*MT+aB54yCn%JlS4N0HCUULC@ zUxJnxJy9TRa+WRO0`xx-o#>&km{gCqS4UQ}zg+)A*(PVB{{s?&=npTRyt;Z)UrP-z zHl4_w(aCGUJ=6M0flJOJ`(SLZv`;36J_ds%NvPT{v3hVZCCI<_ucIe4gPlOrBN>VAOxlPe-v+@h`-7ipHt zg6muM&`F+X%028}eZloD*5~wTyEiFq1F(v5xsZgHq=1Gbv~G2z2^qaLuyBllX`oS4 zb>xG#jR4gOzOBHU1+L;itZ#|ELug%Sw9fHT=aX4=#ObtaL)^M{-9B?PMv) z@r)bVmgAYO!=?&VkM(ZI6n7XUgH_5oxBw+Ej9!EF z#>~rFD2*Rh*Y1Yt!Jq_rWH3NN1&~yZK4JJ-=KP*|oXQn6^sPU~Sp^RWF5ik^^d}e= z9M%llw4Ft~rv@O&4#jJkFBLkkJOaJ27uu>v4egmC&`c`X$kcD!G4D!LtcISOJ^wA` z1SkHOBlrb4m}mYg8jrQe`=VC)Nu=>JDIRO)TO#!CF(j7;%_c$}N6Xs?3V&0K1{tw7 zqe+~@s5@aoqnn)HFhFPu^gckYHhG6Ayv8h&;+yLyLsR**1wYj&P-C%}l=#gSM5Ck) zMcRtUCqy#Vln^N7W|LX8bVNyvK|*HH4cMEK8N(WCw1XT!T&WwsgF2`oLB>0Mw53Xp zffOU&{Wj77XTrm%{PoSHa%tN{=3(iaSC0hz-r?AnL)?CBiGFn6P(e;ZFFk~Y&Xpg9!{cVK@>W-o`uiIJBE^~7}^Q7hZoBioy@zD^|_h^!%i01pFM!qt|oqJ zVwx(Eyr%A*QTK|-N+ybUQ!R3bfVZ`x{NnES?Dt&iJ4+mS`FghJ1ts})WlpSL&X$O9 z>;yW86d@ygluJjmgT-2MP|$uqzzVZ`w`ueuYRSAoW~oU?h52+m)SIf>KF$6)eGDGI zEFzps2qfaIMpCsH;`;;TV9^K46*~K&oJgrA!7NY=jPzk3mkAnk>iHN)tcjFr5+tS& zc`_G6&04j#3#zPqjBHm>US>y-bhf`D){s^A0Oz-;J2MJ3frm6zS3S(B`mp5Nj!T*f zb?o0Yk`DB{KBvwDS?3$j->6el&AH_^mK~EVQG2@z|Gt8J2o_%I98?{7rLy9cf^rOD z+7^$Uxd{wycMYioBUr#w{kx$x@DOf6U?g!X-0-6MF{Lm@ji~-s zqstd!>96f%h0N~H=uGdQb%p4C^dTo_9=#tyFj{8KAP_I};Kl$+aj{1hQv@|>T@I38 zy%$KnkmYM)nhH~0tJ;$tg)xcV+uBEI-Wm!Fo8a3YNXkt*WTKVMqfAf!KW3G2btd}Je|}% z2ml^b0I2Y~*-c)>lsQ8}C9J~pb#s1dR!RQ;SIo)^Zho-x^ao9FutE`z^`S|v==u3;yQ$qRI2+%%jOK z$$-#LL((}6mjQu>q*J{|lJp=zYy~mbNRH+p{@XhN^FUN<3xN%T3lFi|BealTnf}x)k}#nq4gwR=7>r5UvlsPn)I?PP}wax6| zWQ>4T6!ngWTk&V0;6>3!F-bK+5b``$xI?DG(o=B zH*+3-IqCy=)ka&JZ6X;t-z4@9WD8g_9`nn^Ex7OLK+oS|h-5Bf5rScrFrNQ17D>hw z?&yWW=bo`NtA8>xvcD)K((z!zmI#$haNF_mV%E4`n?;C1XTlv&iP&rx(_SzhKt{{gT zk=ubGZny^0H8oP3xe(bb%OBPyeT#D{TzwlV+`*>_0Y#Q3EXpbLI17EEnov@4XaY0k z(}b55i&7&;LKBi3b2Oo()x;z%E}C#_sC{U{=~Qq*O<3+}!o!9Ct|KZWqt%4hf&Z?{ zs|lG+SoAv8gqka;38kuRP1qqGD8D9r^iM#+D%E9@YBZrd=huWj$ac-fh(|XV4xCr-p$AsKymq&mX(f>G7-Dgzf zm0ttkAMnx)>J5`ZN=q6`Zoz(eMJJF5%fSPG~G zi8FWO*LG(zYs+!;s4DSjv|-hFuHT_O zi;EEdatm770<~!p)cB>2x85`2O+1@Lc;AX*V6S*(-WA2gV~8@4E)jZsKY4^D8L0y{ zvQ`ui`v(>aM!ZXDqqi=SW)}R~*p0flFu{~cz{p5BZdsrU*}t6(6MZb-dz&c#fVFLN zb2E}+sf(bs@$fK;^PhKTV;a77;{d>bxdje30TgM8D*&)pNXy0`)^$6c(-Oyde~HN{ zEC~T7EOTM)e4KRMvC!ZPsXE#16hS#oF;hY+wzh0Pb3{YAnqp!12lJ%o4# zo|gP-Lt6B&;euwV=xe-2s~#g51>x$Oh-6LpM)JKr+`RrrUf~Z?Q0_6pl`X%bPfI9+hHKn3?RbZdhD7oR8wTN5BYK8HxYViAD5nXH=82; z3Z!GTYFy--aN-%&N2GQkVNZn4@rof+9KjS?Y5E|?wW=hL8PAP-}gT}lZ`a|u;)8*Awp*10>u zllT$DalA@0PH{|?2{JK*I5IKxhiZ_W7$}(RW)rKp%=WZki-OtY+|jy*Fy!sy`Y|6CiaRpo-QR{}a>tz<`^W+`+I$6;!1T*a3px)kP8 zqX0v5U<=Dv`m(SWW7(yJ&X&y0VU)R{-ZCR$d?cM0&;>!Krx37V585D7PgPJ}D|%qc zt<{k_5PO~w8?hsaQ2Aa2mp;Hq3awPX!&?88=__o3l39SxEItddjxwGRh{&ToGQGW;4Px*Q8$q6hv6$pt_L{s-2MHx@Kh zNxK!$_>-%FFtpD-#gR0^YY6xCX(6c}SF2vhq4K;{b?CA$ip=cUHur^w{-~58ny%Qh zD>QAwx)F;+1md^V{5I@LS#)<|T!ffXZ6Q}#z5iE;%I2J_nJnl;70%2;pIb1(!FwNR z*ey_7`5=Cyv}fMLYz)#IY0&d|Py)xbV9t*RPWa<19w$J~C@RFia^{v`rA^L9FA*gQ zk{C^el-BrCJXw>u zT3Cmdg>-5fL!0<0U+A2S*4wy-gzr$?yrC!a0sa%Vmvd{njfat3TD+4u&r28_WcDt5 z3BrtKCYd1E5a9fTS;@t>JA@5Yu&#YRFJU;d$iqgp)O6>#(BLZVKsXxE2gE&%TWpIo zjCenQ)hXg~Hvbhm!>(7{nIx=c_m>3(!JUaoer*>O23v1VBtvljL80@v>rm;LfD~g3 zVi>MN6qeMtKXH}_O*8e`9)qW6jTKyq@!yfhUV9h5@3zgQx5D4T^ObP1V&3NLL5xzN zbsp`U8|54tE*2x~KR0lB6lO;dUk#A926%4C8=>i7*3!U~sHCsqLHOFOWM*!ZT^;JJ zhoS~HaIjS(bkVLxxg4$$YlS^3DkQ#7wvjXc_R@PR7Ye zkTybxdGazTaVr1@HcaGev}!pd5*o^!kc<~j!9t6b{v0}w8R6-Ev`Q-}MIMQuQ%%k* ze}{$9$bkqwv|+!@1}J45WsI5K;EQh!yK#_AgudL_t95H;PlS$kd5*JF=p8*!casjO zyhVmlbjcT|w2aJJ6Z+4y5|I6^{8WI)%3Dov;Xw3zeyV&DGC7(llbh*%%;J&hC}et3 zGrg3XX{ltI^^>*hwMq7`N)Hw_d&wPOc+9Ffq|HO|EMp% zV_Wc=%zyCC0%`pEPnq5g0tKw5fr~U^z4qVBhO+Z*SHYizvNs%!a=_ol1{hS8WL5aB zm0t<$ObsTvsy>rC!GEx~Y6gAwj9_jxenp6yt(=T2f%0t93c+|55iQ zaB@!B`*;T>oeWUIbVxHu3z6URoOAEHRaM0N|KBa2Px^i9z2}~L?m6e4d+xd0 z5P2yboaYj72)fmI9Pv`Tdzz7U=Hql^pO#xs5sPa}23sznXOw6ggKmy{A=JtztRK0N zZ2_ssfrCZhWsJe|FY3~FZf3Xpi!Y+oQ;}XaqxBEP`N>_NI+2^gCzrcMuX){k(!i*@ z?mPE;e7B8>wH2p`OP9Qj<#k7>58$qf=9=$7WCu2`$`{#bO{3?#m<1-K%{617CF?Ei zMsTdWq+Xlg|MQUSPn7_x;4k5HmLQs+jAiI{zzL9|aL~e{Y3Nbm5vW&&jM8Ns_5gB7 z7jD-aT1T!c?8tSQESoV4hd-jRC@A{GG3&torHsc5HgH5ndYMU|CyC4ke)J?JMb*iV&C4SS-U=XR{YVdRk2c zTmWEQpYwFt?5r-7hNGRk@xbb0hre(mpD3962&u>|14U1pKvO;VLZc0v5KoyM z1+C7u&%=($+OQZc^@e{|$=ypCj=5pkgZLlC@@x%%pkoZ8Iq z`u>R9z;_TzaR|&Nz}$`kXcyX1Vt41(WJmoLJ}|vCr;VvhxuQ1+73l@J#35Fn1fU-9rwe)s%ogN3;BVrR*aDQ363UbF$YUr~ z7iK~Py{<}@QL4;q+=0P;Q)~gMg;5oxnuCf*8}9^RknjT8YKXRj?v2Yi!d}rR?wBk@Y0-~4gFLbTW`+IpESVJ4cUa8 zikw~TeYz${P-yOGf)rWln?i258U#JUa#0(>*DB{xs^DbHy1XV+k~cX%7i4B!XNZP= z%brPcVp=KAVt~(({FtRLnW|w5ChGY}8AC1I(;m3onOW{8DXGZp?M#)7!8L=0ggKo@ zkLmPE_?0ce;)H9n0u*@&4|NfyhA9mrgoYRlmk_YMAz-GJL3GB=sJX}`?PID_G$A*H zhFk<>eK{E-)Fg2h>#qe8V}7ZTG9L3=cbUuao8O+!Czz3u`G{&M0;=*NJ$*a- z6RS7E43WHR7YFv`h0S})n9kAB~oCBVtl)xJ7hI51TY|BNi_Z+2c z9xIxFZAf8y5%K!1Su%ExsaWWew{9Z>g%OHnfQTk7OG)casv{S}o(+RFh5g7AMC@5A za;=vu$6R64cDV+o+9+tI zIyc#5aCM7Mn^+1t6b31tma!=tGf$m1#`F+3S#cra|C;So}4=Eb?om{$Dx z)}92ri3saR8y*l8GCY?E*Zqd4Hwn6vjSYMie5Jc5b5^H}5>?x5vl0{j=$B%6 zCJKIa`GC)mypJV0nGyhFMN*7oNTYwI0?Gh*V|51F`p~bT`-~++ig*Ga9^&^cprC4X zen-dL!}HFThA&A792w0yjw#NUNx4s&a*eU+s))|G9(qb+lkpoH1Oh^gj0-&;BYQdv zuYi#_9%9oZ)odCY+b5 zk%J7d8R%w5u*_8C8H>YR=SLHi9m!NGg0}taKK$+Ny=9Va&L7 zXE);et-{YQhTqqtt4D!>IqE@{CpX9zFOHLdMHUn;ub+ysYU8z}#ogD32^MUR_j}{k zwSGE-M)tl7%*H*LvM2m@_JQ%TApTc*fWN-Ydess z?l@Aqm4o=nQ?1Ow_-$Kn2M&i1>_5PaSHQ9_#G*WVwE~jhp~Hy8fPu>6cR1R^!%4Ky zD&KJO5+dT-BQUnfUC8L`+G1;#+uWhc3ZfZR19Hv=C( z{udzi0!P(WjWIgqPCyZ`Rdd}5D4#^j4IUY(-g!F^TuIKmBUMoc)0Wio2iwLu$kKV7 z8!HxUcCacvM5tv<8OF*@Q!RO}uWE^{FSP8yexBl_-4oX{hx)`{)D}vFm>1N8tn$@Pd0Q!Sxcsy$|(s9`!9B+>@Z5P?734ViO93LA_0=gQ>l4mJc{V=Q8NhdTB~{ z#8WIQX3sY%b78_Tv81UHe54}nswE6Uzp=5%d$z4JJpK$t${w}VIiUsckR`c^r$~^H zM{##b!@L@xLp1Fa!?Rj^H3m^Vl(1W*nqTP~*xol4%{$Kg$yq|9HV@U3@Cn?Lr4oMg zayGN~lI+H4NMIvx=(W0-HdCzqeU<$ctAP4fnfe>23M50kwD;+WtTeWiTL{ner%z!L z%?Njb&Eyg#W-uuKWHS(eI>(r!Z0C{q1Cc@lklJF%xNvl+4D73v-vH22X?CZdKIu*nR=fZ>oV7|VG z`6^tEo`^OqeYEnkF>3h9Il)V-QIS&fSX*6>is~tfNQa^w^`11VESeR)#Pm3yg7H=r zSD)OO`YSMFSJ+7ULG`JVRnS@>kZ$9=ar9?R0-}_diI+t2>wlwK-413@ZZ@E1wdAXf zye4ss*6LyV$xnzZYOz`}&q82=ANEW1!Dxvb@^Sh4>B2-cY-xk^*ES2MGSwqUk7s$N zDR{NX9L?HxrE;z1~bU zc-FjR)BK(Cx;lR+w=4sCI1^dAle-pK|NrXbPQFeWQ65F*(Px~snZJ`eNvf!w+;vKS z+BAUK@?=Eri2U9vcq+1IZ&BX=~JxW zBCQ3Prv?u$qL9PB6;&!4NE~}D5YG_A;}Jv^PIE3HS=R*9Dy~J3FXIghD-%n2#z(tTr zmHImrHY3EDnOb_=>bfEPd7a^My?M%ScdXuBc-1%{nHv?r)$^P9+XZxp>t=lNsc*~) z=q`lk*Tg7^yGR@i475k$oUWOt@fYyiBB-hCFtqr6D}Ec-%-DzEl(6wl!7ukZ)kiJ_ zb~&KkjDpR;SOgv%7|W+3eZJxvAXrL$w(h0Qy5NXxaW6$hbYKj#B|12cSsq{(GqfwiZM>j1(c}k-m|@AFO*MIX`yd^1v^f3q(|H$)cFVP@2YQ`XFHl2EFoyuzjI(tl%xz5*DJ0vPV8>g&0_k7{=ADNe zPmnqU05sRoP}Hy~m?Oy?+G*LR#yJ(g#Hcsc^Z=RW)jCE_>Fe#E@mQ^EoCwK$+vl zi_*?7Nme|0qHQb<%Z70UW1{XO&_g9rjlkSga_mRUtK+73zgtD!@3x!8?A1Cv-&Iy4 z`0kIt2fECB3FkiDUd2n?QKmOXefu!&C5L2#flzE^vNTEbo_EnpCNw8^=Xl2~z#p`~Y^9 zJgX{>rCD14#+4{PEB$FBxe|S%rc!nV&J(U+=>l^km5nes_~oqu$$l+7po{9wfERvi z`~H|*wOg$UdC%fC@SNXN=3D=$zev%Ud*sYVWKH|O|-Xj;aSLc zD$7ou*p6;ZL<66lh3Jybnt$_^E-11t;iM4LFsSB3d-!i2B0nzTHyTb>J4Bfu+TCUIqwH~b$J}L zgWueRX8sn;7@+L}-`q9Itz5!9&2KdUHiDd-n!yOB`LNc7Y_S?*H|uhbB9F8>UPoOA z)kF>Lu5Veb{4Gjn1YIpVw)giP4B0?Zxh|~mWOoxB(pp35J2?Hn^bWE%Y@CM}tey51 zi;$oFm8eRa5qHC~iEeO!*FmQur~GJ`pNdS<*D?WuZNNhZE0V~!ZfI)z32b4h$S|7= zXC048*2K|2G$Ztp1uqeVV81kaHCka{-x&vGmgF^s5Pn!C#FY;rn68#f=ly=4nS#K? zxFVpIHR)>^E#ozX&K6ob2er#h75f21IE?%te)y9blr-vx|8%lsySoewWOoW^c*let z(?sO&h}lwpgOA7=Y$l|fZ9{If?CVkc&KldqweW+Tvvt(mMXRAY8O!0+LCWMkFSqsh za+@+qJ-*q|)NP`~v7Fp{gZX}&!QHJw&v3TP$fGBgQ`X=L$`D{jPFvn?vDxToETfHq z76Sh(C9KSi0P0X2r5y1!wiC%zoFhhhcXo@%PO!qU)DEWJrW*G0_eMpNeb&80qHXKR z!$tlTIpGf>lHJR=`ojh}m%(`9czW9)k`)kZ9oKJnPin0hh^_tGpuk)UnlzetMfAy< zfe6Kj>F%DCsKubprd0_GF_h9TP=@Z)II^OCBiE$;+k4jaboSsb{GZb*Yo%4DBI9gT zQ;`Y!TBbD)29Lm^_FqJVfkO@Or0DY8SMlghu@-JW?RKUD?5k)Msu_=7o|FBcE=wkY z@%=O(4MBf>Z2{I2BO>hmVtLu`bk^TTmpHW$uV&{7O5%Tcu9wji?b@5@A^T_6y zHu?K6!cKm*w34;G#GwYzZ73%P?HOt5#eKE$)MsNNv4Tc5ZUU{z*yCmc{M;JWZbw51+JgzS^>pGVgVtj}YgfDl z+?a;{viBXg(TwkEK`w@Zu<^Z`a61EILw*#J(67IVF7LH3z=$sMiN8OHBWT|Xm4#NW z(y^$gm6K5~@W}1#j?fyhYkuQfBRAN56dD=`?@3HZxrG8C=ZD8KAYyhLQ{YB^+KsVu zTj=Z--(CC@?LD{zcsPE0@H9EO+Z7j1eHM86b~C>r?GBq3eON*%j&dW&jdaJNv?`av7iu~=HH7Py zQ4woD7q8PUOi=u?+}l_@j5&oWyIVxs{)ViEuCnpG zplIXaT;3#el6@=UEl1U)ciZ=@_is^O3awp=k+r>O)~o}Dd_LS7-%uCpQ!SvKjnWlL zv~d|dgt;zacEU1hfg>!)??D|*^s7-YH#n94P)Uii@;8PnTgVb`a#kfxMt~-x))SPR zT!@^B%%&y(MYv}c&R|As{$Obot#qZpe*7`ciHrh%VxdT~&Pu__sZ@m^xo{k<7LWliOVsKRhE)1$C(JJ6*~ z#%5-05S>{!dd*WpSXgKNrsU36a!cq;2gmq4b;(~07J&)b_?#-%8C(8+z}*_-xhSB& zoXVt7jRbD)3Zj1=p{*poCJ-G_zRGU*R*9mPrFCbaRU@rIe3t=VNW%iR<(bP3D$#p1 zu{6QE&7B42Cc6eyS}w4$7@JqPh71Ts{W^;i{?fL(v74c{=RWUipcs}OCP z5g<%zj)x&Yl|v%6Cxup{=m$KJVzTutM(dP4J~Qy34@TDJm?q_&qVbtGbtYTqw5cX^ z8cgv$L?lUVjkv*HXTRK^Bjs({U<)DchnuR7Mk5O`3xI?Ipkag2&3bb4Bm(4##&gI~ zE%ad&8j@1*D93KGw|*)0Iu50XqMKU{bRJ1>I51=~yeAYWnTkXV;`^NCJ4>sopGy#U zrbl2Fph=;4VZJi4NayEzv?m%*^I&uvn0GBfDMQ>K;Zk#Cy07_08{dX<=-mFo{5ry} z2}DhEscUJKQ;(A7R(E4rQVH-(Z1iE+V9oH<4!gg2(+O>Vc@}16VSINWYIT-&Q_;-w zD_{9_6Ok*<0{y7O#pyi6Hfx`%Jw`IT9s{b|xm_Cj8aua0cW##M+%%1Ar?B>-vv<0) zr@ip!3(h)xRoSn3CC>7aTe;G+|vWIO5hm=j0*Lce8 zFllwJLU_{|rP1gv&mWapxF>{ZCQ@Oi8nwErvdc_tG}MB5g%>_KrEFauQXoA~D(()_ z1!E_*P*(c;$5sjY$~?Viv!jg{Y5_P-?xL?|&p-c(>mD~0V(OZzNw7Loyx$L7mLI>{H4%&KH)48s{+bBr&f; z9o=?ybmN~%;}q`~`>YG{OYA3(LIVhE#uEf>;}qkII(?3_pq;zAP(;Adl{|8Gy$vJc zP*0X*FE0^WeH2McFtFz{SkcCaI%i)$ zkByVqbHr|M43X5CCMhc2pj@*V9 zJOtbhl3|+Y(MmxsRIfMGg9|iKlEdwsA#wsuR6NL_xtM{_YT-WOGl4shQ(canXXQX} zw8)?w4^whVH&oK~tO_xs)sPrrdmW$0C-{Lfi9S|Is}E(~L#iS~JSRl> zykT=;jjCT2H9}F1|D3I+luP`nbUK=%R@(Z1tmP6G5LD{^9@f>%1grGN!3y4>oeoj7 z0!2uXs{OXU#K!)8$3l@#@%k;5^{oEobm?NHW1^%77#)?`ahgOI;K;&@ymqVVRj4%E ziizwWAhL?M1D)fIV?g9HDu7y~8X^TSz%e6&e{>472pSUTxx!=~1)}~-fJpI&l*oBn z7@7LKzOoZHU|x$){XEJ}&n1!CNXi|tkkbM&vQYc-3Du~1a> z7#qSrV28@Fb>skjg|iaNfO`x}!VQX>curyet}K zToV9yyYI~^--Lh3M5=sOC^=bG35;@ z*j?KRdfLoF-tYAA;M@OXWP*1wC{q3=?t-B)k60!bG@(Tb@2>;UJH z-P%;iixusDbH#Y2-%1Kl_>B)Eij~M z$55!04i>72@RRduDfJ}JGGy;uN7i(COH#Ji5O)p}=WPL{4UBd#{fIa)5c2C^1v{t2 zyh_+}M2{=@z)Z_hQMC#BEA}t>btZpdgoy{LCL>;Xh0fJ732k&X4mx+ne#{@T9KM@? zCeM46Uc)?=P&F-PKI&3X!71s04|Po`)RJBbb=({4_)x!s+s^2`k?Qw}+TAE9pFYq}j_g5H zs1Nz6<@F~{JMuSAojp*LQxiT?*fwD?$5@{K$1y=e?gC0=x;7$~EqP;x{Ge6D2681f_g})V8BeV6C2o4D{w{CWXps&*8Di1BEAQG8+d z`ikxBT#es$HMWcX`Oyp|ny8}DRE;D6kh}QSNK{)9wtpT7YzsGJrR73KP8%i`nT-KJ z99kfr69iT6TxDZq`HJ_%!Tq3L(b?1yN;AE?!GNG{ zzoU3EAw0Z>5T7zd5iF}iouSGN3$U!FsB*iHM&Hd=AB5iV(;zmuuedRi-t76J|ABqHFjEF7218|f{h^h`v1celNK9;)k* zKwU=^)is8S733s!d+<_nmOz!N>x`vR*QOAuPxK-sdMuudE#Z^XDHF~5f@B(>1weUa z1pKP@`2!3G)=?JLhtU33&>|`q<^bmfCjyTI3E`7zD@rvEliK+k%^6tNRyab*GbJNf zvmd;D4bq1&QT$W9EPX$r`H91 z6=G)4aQ81_=7sx%FS6q~X>Zu-GR6O!#lw@r>XjB=ANC_A&TRMmwWdKcbAx~6djf~9 zxiN8eO6sy|MZQt!EbN*^{w+Tt)f0tJiOi~j_1_g4n30d4N%ay-R4$q`P#Qk#(eS}2 zv=kIA+N(vckfKd<(*yw#tEnK}3L=@TISpa?4j_JQ3%K$nZr$B_KXA2zMEb71PR`1f z)3ym(QypXkEZfZyK|&8#Rkoz**O9r;`oE_L)iDkrJc0;K7$f?y8CbX$ab>8YLF?aK zq&~yR)4S3miCGjNDK4pQfItA;fD|hf_*}!hy%Ot0}k|4;zxKK5WrF#IQMPg z06{}^&y|p)IWW~w#tvRUL8I4AtYRHn&H5CIvt&=vp(PC~E@_;Uq}v=l4%wbU+Ow~x zm@Rd#^0`<0k3^jZD7o5fpg_K!!o|rxLb8|YBl^quVhw%7!zR9n@>hqX66_<=MN+wS z1Sp(_{Qg!O>?4|rGEHKp!?n;Mo+t&dlqm0dOGHV~kSNupNFO1oCHn}Wx)ftpOGtVR zeZ*}l|B0x9j8Ju|S(}aY5!FhP1B1&xLVkLEgl}AFt}*WK*4D265c_D4A(cSKDIHQ< zf`)2arQ}q(NZ`-F10AF-l%GQxJ^-oE-%2+_N}8kbGXkY{Dvt>oLXsg8yQYZx$GBvp zls4Blla67M#;?VhH2t$Ndou5qkP;+H>2)!khon0XN_WU4<%ur4>=fE$?AA>kRC&TgO)zfG0bW^FEP%YWm7`-NEV z^0OA)Lu6Qunu^?|qM?-TU89t^;NDp+_Jt0QSyT;y?m#A|BEPe_$!kbs;b-EwaNW&9 zYp^hwYx56Bpy9qST2JSx;UYQkU2`<#0_&vM1U;v@r*jp-sRsCtL+DQs4Pt1=lOnc3 zkYrbK*xsdr!IyZlrpl_8{zyV$ix1kZVs-&WDbM%E0W@ay2nEcfR_YQp6|XgL$K7|v zQ7XKxN44NN8C~~x(;QNf;rfbhs??bzk7(SseJi4DnA)P73|Bj#!M7<3bs7fD;AI^c z!GmV_Kd{n$zXh@-;eX;Hk859a&A^TNTE+}4W=IqIG=PM%40?&#@? z4`MtV3x~fXYG|dZ>p08#d@VuZj8BVE_Wy z+-2m$DhIWiW1y0x=8*srb_?XKqU(hXOCe9MaFOBgkPPLw^bR;W<7y;|4EH3I zCqo1!W&N`i$}pW-$p^SxS6dhgn=ASELVj(PtvPB((c!L{V8i@qXEaP6n1Jsw$6Jax zt{ZvjVgz?YrXu$(krp=_O|h@OHbbBp6wAh!1@&eI_ByOMcFw^cAhtV$GXnu8)k9%; zR`YPoX}iXg{W?zP*1^czeCXEAyZ?dtWPfj|6JOd;GJ}9*}G-22%)^$ z>xWXDu83U8EEp8B|MSiAr`O_h2YK(mAg&IF; zU5%z5^VCDj2U5;kc{h8L~yBG-ht+e?y6M=&k(4PJyyE2Pq$c%6DKej7F zgaK=?D^_#?yOMxBOWBnylp6o(n~JeFTN%)deAc^eY+?7cwkyp+yK?mqGz4r^qq_~e zqDP1Q$VteMQCVCszP|1}OY?rUF^O2yn8et6SeRoMiJsFfJx*WCxMzcb*;%dYLgDAe za^jSxA_HtL8n`4{5F8Mm#vE;&u9_|zuNTzdhf`1LKrATq&$f?NrOIv246ILUjd;#1 zWov$GzX>#$;yYqS(qu>nEN!BD{iOTS6?*xB(P&7Gnm%u{{rLJt1^?ELx zP&_hLFXzI^5AC7BF%jAUoC3UCaU+>mx?#aou#;+wr{d_O?523+lOgyO&`6eT{JE96 zvSrgXC{gwz%&>Ltq-o^}t_49{KD`d@-Z~JD9hx*OtM-q{^B5O6phlob*#L04p(m+To|NVOVwH2H;i$H@}|*;if^F!xDFq zm(pn2r8;toGe>`8fWTJXJuq(sa6z#<7LfPqy5PP6{UtuH7pyO}oPQ4l^PCOwN0i!h z!QdjjXjnlB^#4Lwr}0eEX@{a$gKIoP#+72XhL6K0t-+#xgFTs!5WN!gxG@>_$VK+ zRZRtm5kR#QCnyhLP*xL6F%Qo3$|sogjDmVc=5#&YjO%)5Laz7eoEMA$@sijpRQ+aD zK3_uhm2<7mKG1@u*ef8a%Z(648|R_hM(6m7=^O{)ry*3FfVH6GpEO=mnQtwCvjpZ? zgmwiLT_fRRcmze6dL=KZ!bv6ldDe|phlXWvvOkF@d&HB_hQ#{u#IZ;l4bSV4sxgTd z#^79?hdBS)u(%rR&V?Ak4JaX>IOkV=ow)FgS9?1z4M1fYX!*@4lHNWIGxma~E2*Nc z+~c?wEJ|_eZx>=+3*d8IcV@Q=H|9vZ!FS^WwW03%#bjgRVIl2$I1w51PY|#ry|Sel5$xp z`k21bZZLOfpi=k@hV)td0dyBZj2-#-DM8STT1a7Fbpm#i-Mx2=*rq_I?!#zV+zXE? z$kn&BMP$@{P)wc&k=YITMH|Gv=1bVu`+f;MxQAFQ9kd1F0F1#w;_5_b_yV-=4t!%$ zW831%c?@M>#h$Q3+mcjcE!xuA3^{9C>JC+B15=$>Np~u8yyX#!=9nIz9%?ac<6$+? zge-PLD&0~Y@k_J*Nm87qFO>)k<3lv0pg!*4I@)*x%S8z~bXE?d&z;$g{6Se9N4*0i z2gztF|KFIjKfTS;O!^A=RW6xdDsk<2xB^5ZDrAnj{pKjV<81UcPyo7lW9Ur@*>hAO zRpZU%0xtiWtDE&O)w^z+xh?iAKth6z@aYO0iwaP+R;?+f&F7HkbY+a7JS-s)hY zwyN|N#;qK$t@0#>ROFl|MIYdZMuzHZnONf~TpNf;GsoHh{_zRP*MT}z(}FlTrlUi3 z4={lF|8Jbc_~F;m*sLLP&m4kStK#;T|17Us38-tp^#ZL7nQ)%1SIMBdoE?Ld<-LUo zqb)Fx>%y5Pb?eLZDCctE(B1_YiGfJ)odGY6T=2-htln&GgAW=6W9Ev^VUqbvWVU{d zjs;tcRhf4$!|~nHe2H|mvjHrL7qf6<$*IWVIj(G5^|g#_5yGSFP(-UU^{={7z`;%J zeu1v(sIjzSFMrh7+Dv*)^ba~R;z(lutYYR6b3I!d$U8(q5oTmZ5Pa_DIkWe#x++!4CE{&c+?=MMnz z3uJM<9O>5$M`%m}#|+|3&$=|!Z#F84q_It?-2|nv8LwOEYYUV}+!$0eM|F#VDXq>O z=&7A%CAFJ+CS^MG*^ywxwU-> z2|Yja}hd5Y-}OkGl(DeuerdSe`s~SjGL3tG4I4N z=s}F0(%Z)z)c=qbdE(fgX+>y42Wh=%J%;FOnP#>l70tG4NUpCsTK|4jnAm~%>O#a< zXKOT5hCd~a9eQ;$khlkU^b^Mp{f%&(L+FY_&tRZ;V(ESZJq#-7xD$VtuHp&6C@1MPPP8QC%mw{S$@1dx?SjhuMu!b&{h)f{e~o5Xv(fH``MDkLy+nW+Pf zI`haHhHi6)TwDgL7}6yxmK?lJCHr{O9sIQUnZ8VXd2DT938}~xkBCgz9FNi0GR<*3 znv^q}nbbWkYL0y%WE%El z9P?!4Y2q;pJr;f-%e9gfY)~17jX05p236pJFKm5jG(NU&U5gwZ<{OLXyU^;QT?L5) z{z4x8=JRe21kv@^C0Vkiwu;o~DwkNcQd{@Al7v3QCSe}Zd`dz|BFn^$aE%=T=*0H$mLex4(v8Qqp$B!D3(+b4j7m|(4hOp zxk5L&0J_Nmu;1%rqm5?CsZ`7i>9N4CA-5^j`f8kYf?5yL+#@7+pGils5%fEQ4=mo6 zG+CB)C1&^#m{3$^TH2p}hNSoTrRLweDF30FUubo2s`laELDCf?R=Z2VJp2LCF({9@ zDmDF}Q9LumMmQ4FXl8pBT2S#qk*G~Zh5!65*kz_mP0k5Y>#{i|89C2jPLN?F@%96j z3>%@-^QDA%vJU(DOocZWfx;$SE~StSOSb6EE3p?(JlJ1-)8cW zm+%bdTWYVpP%y>A9#|9{DqUlUlz+orQ+di{AErNP+7m z;J4^&8E2(Ger6X$q~U*fEpr)6PDMVxPY_A&EojGhRtZEl%)H2AJARSHc3Ie3 z9QGJoY&QlCyK^*fD^5Gk0TTKxT(uHfZ1?3z8W8sIKI>6pnO4b~pP&S@<~#amr&)%F zooA&uQQGQki%L7))>Zb^{3g~M)c%LnJ(1UtNOc9#PgnQI14~wS6-oO~9Jxg|(+vAB zCaC^D=Ez|g(l9#BydvSdF^QMQFd)e*5@gkN!W?Tjs{;~Dv>lvS)YSMoU)!5>i(V>n za($cPfuQwg@kF4RX{> zMIAl0wDBQ!w~6);Io;smT^M-#j_5x3?x~(y-k|QVMf_UF2T$KCG?P&EF75JmJ&;Ue zvXvY>(f5P#^$qP_<(>;%F|fLBA9zo?Hr=1?Ma`BEWxHMWlh8}Y!B~CM=!}%XTyBB? zY=WreZ$O_3JL_J_p|L=y%y@Wk-rck5HtmfHA0pUIDohbjoxrMc!NW8^|GxaIsd+j6 zorrnt!V2r@o}~Ornp{g_D=O;eQ33Xobpb2tr>>}|i|Qv0z^uR+0Z#S`GYNAZ5oi!x zWgy{MD~^*jm7ax3Ww$G@q+CM8*dvQ?{O3(FUx{dY;b;&Uov&&r3)0?%l6`X!g%)r? zgW`J&*gd&1WGowcTAfRNCq9vQIo1<2OVy2z881&?OYo7-o19%pn|y>I@eXZKkNKXX|f(9iYcf&9q^;S8!^Jovc5Y+uQkS zeH3+{R6>{OV@NXyEEdRO-5N^D{wUz$qFDlkxEn`{dXZCbyUC?cGnd5^?%5^M#5tl? z=a$>TTAk<_qG;8MgZ?}eDd-$)nkd?9T#XrOtY)``q(7$VLXmNvQ~vbpC0)NHbp%qZ zi0|IzDx%cMxX4<+Qc74y=US3cp@Tccxt2i)Rk%fYt%H(MxucDVM0h7xS%o?$?kQ!NLDts*e$6k1yejJvlU4s_Z^oCh9#?cCH-wl z*BoZYaX&bXsy#(MwtPN{bbAUf!#b9D^BODTLESI3}}Z*}@R;J7XhYXT?iroEIkF2J1)Jh#ug(%o$vGKs62kr(d}Qrkd9 zhE!~LpSZ2cy&_hSi6BK-@#@>c3Vf2_B0dW%_UB4VkYreKtA~H>77CGwKA*a*m>O6s zHEb=TsIhCL7QS1-s{fBU-~aoD#67VR$BXj1(|pis#E0#;+&AgBxE?I073jWARE$<& zmA;m-0{)##Yhwk{Mwe%sXEvo)q19K)CHiTG`Ltk1z&iJyOl!=8^bnIw_PKY2gtwac zkN~78^41c2@*9IXs5&ade9{6=5KqnzaV%5kqYJ8_8bACdTS%V?ivIW@`s+Bbgvl^8 zZ)$0FL!}zFHx?m*o(pYH8k;q}%O=zGCb}jiVmE-d-`^^1X58UMeJx`e=1Uaa47p_r z3eEKZ(u`S5FDJu3Tjd}0c;S9InU>|OC`G(JV29Df5yg0akD`lKNrO)PwEr3^mU z)61d=8RSWhW@M0@rn+C>;+maqOn4FJHINjB2g}JhgfJ8fh9x#_dy6}-5`S%=gg2(x7ZrU zV#xO(AGuvI51sH#w@T>CM0?_ertvp4L32`($2245^u^7F3m}#Z3YzfEfXeC8QE{o} zkb6^gyV+m?^KQTuKkE(7vWo{wuD8L*w9aZA1e2m^cA>+5fu$CxcBMOb?CHGuJ#6q9 zWR;84FrWiyU0meVhHM91+Q%L@&}UFuwu7+J>U+O%*6U=0(z?*{1l_fj7O<9;mO~2O z%ZG5Lo#VhbPY|_eD&+WK7JDjk!E9lE2RJ3}1(=_wWHl~zGxkY27vT>oM&`Glq0HXb z=1TTS?ET6u6jU(Ci{>_7ud;2duInZmSI6#!+;kH51YTOcuh1S_07P^d@vL=aBP znbC4thnAbxq&0bX_0C+n_TFBT950M)jV+UMr3Y_yP63^X*fNmnYhBgGK}g1yfvdY+ zK@g{btGs4$^#jRU4b)I7bI%+WKvaQ3aLC>}^#@^O;*;|YcuRSs{|!~3q<^)h&$g4u9}2k=thz}qE# z3@#5hp#ksO@K{EyVk$C6QFovsb!#kT97}nL7Rv29YP1x&5oxN2XO}hN!OHE`PGbo? zSZ?6qD5$wDQ{z^4J~*|>(y|tQ&fv zDv=}OZJ)akZIrEiFa*7omWQ-!z)&GF9NFPJj2R|2W-K3SU*7mj$i74yhXiSD^RRq= z6Z5q?-_no;$^4d7B_l5q!Y(M$5-ut(LB_S9^K5b>8M)D*y|WnYUx*fvlNItDLEmTA zZc>dK`Orc(3KueEOs6j8+CX`6ms)B{Gh=4hmR>K-6@9mzVKa>bt99nXluA{fJV6Wu zY2a!Az|LM$)4NBBD+Zn}>LJRt=TVlHRAd8vEu-B9G6WVx=Hn0;TT-(@4`-aOoaxK* zLZ`XMz-{Gb($q|GwvEBoy~GRggbCMZa3&RbRyzSY)eZVO8>NXG411M9ZOxS8DWJo- zUAyHjfaFjp#nNV;X;}?p&gQ_PkbQ`zpRg+!4>Bh_=>h>g!PM3LvAA4E`|hkk>&ELh zQ&f!epiT8w2c#bfK^T(l>EP?M4`aOBl819_%~yP~upl}s`LG`b)3 zk7e^hEd9MCq34!c!$lmZ;pVDZhiV5pn@+84FH-K0jCFH+k^a!_Mcu~JU%C-OLN9A^ z8v4SznS~#$#{e-V&QK~9BHdpVE(iY_6&v{?2S=k;#1MM8#RN#aQ@y_zfVj!Uwd!?95wWzD%c( zfFHgL9s9C|?scZ@gFn*_hp*fd7e!CmymJ(a?vfUU{r=aA=(;-(;780ZP@bpRk2~@s z=2-agWc#r%KjIrd{@Q#@gY+&is@q)nI(-=-u$sNU*yuS`e54}zSyCE%>$JYM0a=d7 zg5L6Zh~YT*8NY`hTdA;rZF6Z@7cEl8A=@BTPAt&R(9&M}t)pHJy&KiogNbKbf#mjD zi3<~QMo#89bcty{B#>AnRPWbA6Tn+wG5cIye9^`M5mZrHsyyweNLnzy+ktFuJ5eNE zKaiwHbvYYP#z>%brtqX$8&8J30DF3vucUd9<|ivbmhIC{giYpnZ%OP6{QsPk)JtZ2 zpdfN?@0H97ad1~gA98~M3Uq*pEpLjg!WKB>|Al<~Vmo~Nf*+;P?;syPAApaa^P@<> z^sHOnAeCu@;*Pr3*R%HLns>i*8g1Ma^^ZO=b`?PT0#tfe?M+e)bOnLe126zP(UROD zqXJ)lN2pOm8{c8ALA~^(smL$1qajWAOa49w??^QLVtgo;vBg+!GFVK_YAhBH@k`dg zc`5@Aql5l~+Uk0^c1LmuDB)o8YQANbUdF7qx<^NzNYtZM#AySdQ z^PyN~6k~av8s$-Ov4`b0VgbE>DQ5Ux%#`f&2Pwy>E*7tG`x3(?vZSzoxU9MhS&nfl zMj7PsF!H*i2xVM~Ewmz=Xhk;lD)RJgA$F|cej(yB;eqeeAVJtz;bOuAO=}o%HnIL^ zhj-)`4u$a1mw5*!`fedZVMD1KsmR~cR@-A4iDCr1c%5kjC}F#jgw?qeV5laBu-+U< zhr=ApXpW0Fr!tyFeTl$ynJ$?#W+bopC(zKEv#adpsNgiI&Kk{!?Go9K$9TfWzo*

BX0_M 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

GqOJTSOxjQJEs@Y7q?~qK`BbvU!+@{7{SgKf*4; zy;|R-ZBflq z2MOyNxNz(KtIHe@>(J%LT7~7dXBVhi<=CzYNA;#D?k3g)90QVzwuP>u7*7`AG0GuaPHbA&FQ(EX$?ZCd|! z@!{?))Q9^$0SDlMGLS?_ElzaoxmZFsDT=6viSxU)nhTAx-|?Ce?-t&Cz;8x173NuE z01qGON>Z>vGYh784B!F01C zrOOtp7xMAap!AH*0L(klABI}-;#|Nu_2!+Zf(^!~G^D^R6aUf>WZsGLVZ0M%MLIh~ zF-^lCMo3fa*AhoXeo_l32&rR00vh1gkjhJg52UhMNabz2Cd;6I zZ%8S6vnFc;hc1ggT1mADzk0@UZ)L3xMU=#+gI_fSE8lr(qwA(rH+iXW?%-fW!cq1O zVS77-g>Tlg(k!-;>cmOpE|~10Lk?V}%_HP74Z6UASSu!8@`By?UbVuKLS0M_TwQcC zqeJRl7W#tyi6=cT*w^sC$UVdoXghGzO^~wlD6i{R8=9m# z9ZY2i3qxq0@RNk4gE|d#)ai#B$2M}YnLZzjZ#lR7s!keD04x&~bM}%TKGH~1VeUGS zWD@2GVN|REQ7n>?Wbc^Ls=;7vI@s4&{wiy^2HcUCZe}tI?Ph8pL_Eb3HQUXA2PY=| zew;Y^89;(vNbqYMotK6{I6AAv(Ro`Py-$ociAi%O2yd*xqb!`5BqGVCUZ}P@jK!ou z332}^)2k`dGj9~8pJAa)U-JN%uCaA%j2wO1`==ZsJfN*I(#|sS!W1wP%Q`FU2jJiHD`Kn^RdLs$aN^{6 zjgzX2ytL7%sFs(P3g-@v_9GlsiD7XAhs7vPO0!s;>^FgO3g`k5UW|^CtaE4EBoV1T z7;NQ_}kHegjH#VtL;2o$+p0MGS|CPTz(edqKQ5+J)|CBB*2H05-4Wa zNSTz^h}qN@2fLa`gr71`sy_BnYG6S1b>fMKvQSU#a32h~N6ZtslA#;}B8-Q^ar&ne zd#3Z|^7w!)q-b%R{_O6)ar$#HJucJu%TVlSj&}>^P*k4T&Ege+@c)DJv2Kvl=ql~O zSPLk<`UZ8_>Eg*a14|Q*88nD&YSclZvHASV4#03C)&ktY)7hxseyS5r#5#+I4%b)C z!LBbW!8FysL>kIv!Cul{zZBg_lrf5{U6SU@8us?2#@vM;UU8jR!D;7+6`amOtzgyN zu!0d~0I!cA9*^L7c(kGRD^(ZKP31>WI4|Hp%MrdFK?NQqWhOtmX)L-LWpzVxkWGE6 zVOM03!P<4u^XTvNipn`rSS(%)8aRVROy3Y`HnqEp$z`ZTHgC%bn>UOSHg9C1Y_3l> zFUNF?WwQcuo`KD@XSBIAWcGgvW|toD$IL!(Nhz~GYGihqowur#*=soQW0?I`ncd&T zBt0~=hdtS!HqE|cGwr%jF|w}mDO2&iR*3awMqy!*>2@%{fhlx#|IUu-)SQ|vc9lt8 zdNzgB?J^cBq?7i-U<@DgKm&CH`Sm1q@q-2bXGXS(q^1LU3*g>+SirYnJyNl~P8z9Q zR&Q^3sjD7o5d9cqaD+}OavMR%_71DE>S&Uj**M7*P--qGn@c@w8dlXtI4&H0zNA2G zX>enzb`<#K1Gpm<(Nyh4uww0ei2f(imQCG_dETmeosdygz+L2R@QXO3Ttk;*(-;!1 zh3AxmUkJi_b18KVH9}p1v|#1~g<*$1sa}SAnum3%y2zNUxX9!)#YOI9 zq1ylM4k+n35*%7kRYg^%x{9+Nq)KN!UcU*CD@SI2V?Bq2rs#w@N-dn+kf$pr!`~-E zM%-47wPpv`6;=HzC#170w69~uuPW?4_OrsS9lOG8(@I!ZT$Fq1dW}80+(OER-36gY|s-IuB>184jfv`lLfK+U#>-6u!)Gxyr#> zTe(8ce#T?rMxBDMvJQOIQE#Jhs!F$$Pp2uRPGO-k%iYT%vcqak7x+@K3!csue_0)| zulPNG4b8@uC%H7|MY$M53P$1ilVim6M&XX}jWN+>-Ji7ftvq_3pAW2E-;IQ zy1+LRVLdp10PL6`T2&1f7*>Th^g@TMB^jLO;|_P};BFmtQhUZL+BnQKRTd1vY+$@X z0fsv?jgcjg;g%_EX56E|`97{>&JI)@BT%Q%DwjA=+jIog*;Lzotln$K7Sw43Ro}{j zIF0HMw>Mn;&@y9#LQpm}cW(!@@=&k4oao#lbC>salXoX1$P6W(ah}4#kOCc_ zMPG}^5x0|%!K>klqge8&U)~Cz6+NQL`pPASu=c9h9u`Go@NYbbriU*9c%)M@JA0*U zFvFS{PWj%1q#FMoVc}HORu)S9TZ|*xj-i^s)coXZ_lc*9qfcU?vcCV$5=U>2O@xW| z>w-fJQC5*=)p0F8zKr@)a17x-v9d&HG7^boZM872RJt{YMMRhEIik%c=knzyKDY<(6Q#(HA1r?`vwbC?T`(3fI3H4N(>g#!s?huxjv;A`uoCY1Hw z%WA2qa*?5%Dlwr<0qVz~;Wwe-SF&toLfInNQZKNW&R!!p!ZR`?8%U{{@BL4Ut9I-n zjb8%4Z{`0(+LgfBHDvF$Ttf6DmPhQd#~z}IJ!3R&k99J(#1^rQSV9b;={)**9vL(l zhG|>Gm@&;*!U#>si)CmGVr*@H5lieDOZ>m@J9S^(?Y+$W{`vjVRku!^Q&nfJd+Of% zX3Kx+!u;24r}}TLfb~9SrbTwbGG^o3>&d1eI&yqfu z&?xbv7cu=g)mfvnqP3&bY@VI4BFB$G(kpxM(^h^acD=a|FO(I1#KNrTs2h`3nXyc?IudO84yceobu?W|`87?zYXdq;$G4rJLoH?u6x_beofw zyZbF3JPS&8SqZz)p@e#h26w|wY`KPGXM#Smfl;~`m zXC-vcv7RIG>cprN3 z1MS1Z8^ykUjs5OF__lBhF)2Vx!PaVSU08GyMN zsNt}I@LRL6N~maax9b$S%j)h|+TV1aasW8mdb@e*6L zp0?ga@Z-u$S6=(_tDomQ&p;Xmo96j;tIl;fD`}0c%kEJVhewr zL`vi2`)Z`SzfmB)O!-d5T&F_5opJf%Hlew*U+HBp-<54P^S1W0(G5XbzLgsCtvFA2 zK_lcl((Z~p<0#)sT)tgyPOF%FyPSNLQ0|w1)NAf)sSf^L4L_n_YGKdaJ$0ToIln)g zLTS2^g>7=0ufVLHvd{vQJ}t%IJax)VP;t)Smf~qcUFW5K{J}k?wym4v>eVUq50%^Y z(QAE7|JEE8Hjd;e?39kJ7Uiw&rEBWgWYC;UAxXy;{hf4dF&3s{M_iNAv3DU%>e%WL z9b40+x=K@3s&k%1H@NERPc3i?PPfkW-O!;|HfAQ6sax%sV>@)KHLhE|n09Nw(ji{A z2HGsH-l{qa{V3u1v~Km*(5+slTkG_N6c;1qsMn!x^~QCJ!H6qc%j7o6D+!X-p-|VU z0uw^ryOI*>rQk+NqI*VH)ZEM1T1%p_J9jWh@pZfLlI!*?Os@H>6LKB55@mWDWtw>M zuQCL`Iv0kZwom%E6eeJA3YW-xTcmQK(C#ApXR5Jg2S?~R{-v*~v>ct8{2A^qS_)4?Rk~UV_#LEjb2mGo zoTXB~gwotADVCbMovh#fk#XDQLa@6A`fN;yu4{I`($^$FKg@kpaUZyrckts%%GJT| z`j)3#+8*!IzG!yWWx$y#E_*IhsL`{3vS-FwgZR+ddxXwgT6CrhE=%j71xG9PlNiYiM!uFt?o|3Q)Z z;7EOFq&_TCZ;8~0N9rRY^-*Dc=CCoE*UVujg!3C4!Z5$_zTVo(I{w)dTifj_yqpxj zoa`>0zEw>i&55u_+b09jt1`2h84)N`v6VDhO1XV6qY)}Ma{Om_%()rIVa+ZIY#Qwf zYx(Zq+AW6IN=I=6*YVs}JO!B9ydWgb`GWWtmsW`{E#eD6e1V-=gv8YqL>^sLw?rh) zrYiBFA@QF=;;lyfpkkHyUq9u{e**EJ;>6Vz#Ea)tXU?W7@z?*UncF&tkA)hJcWU_U zQ7}VsYWQ$8k8sU{XDB_5Sq>kH=3%b+oF}Ty1JOLlHDCE;wHay-|70ru<;Oq#JhS;n zw;trsOS!V=RPQHT%#T>ikG2@znqola+RK$QUJF+;tWR|rE7&q-HviygLZs!&>hnnG z2N3$f2(4#?1nhfc$ZpS#e?BX2IOlp`%Y~olxtqfDc7AE2a9=BnQt+k)^vQO0-=+$0 zQ+ZX^r&7US?(@6QLM_nO);XUau{YV!&6Zk2AFtw!2$0MDt?KNu~ zh=BG;f7kY;wK2_9?RPiZZ0xNp<_?TZDnWFj@9b{Y_lk7J;~!iICiKaMxmuU=iP7mK9h-BL=4`1T4E)am?u6olp5;4l z9q)X`mzZt5^WMJmHtcMJj3)oWudcbTd?^*NmmU&wAF#2H`nUvv`^1m?Bop4Tg&Z6; z5k~%vE$+L9?nzv{?+wvFy1Ki=LpSUaKZ3zCMTVz)L-*Vb-pe*T-X4PH7{lviBVN`q z*jR&&H&~a!rU}Lz`@!uPsoPrZ2Asb!bns-f_E_s|>)VOesc5w{Ku5(|yU;oft@Et! zd~5AS>nyZ3XwZ&6ER3a_#6@AxUd4p`gzjf#6pmxmWvouDM9SPo8pFb9Zf-Qy4Z5&~ z-pVV<@a!R3vPM|;j!{Y9>#JJA?Yy5iN^U?J3UI~?$3E_dAAzQhhYzmWffraL#qXGH zut|nD+3%F#EX)6RlGsGD&XL_ zFro#m;!^R3KAH#4(h4I+ptV0Qi#H6g)=_93gH~~-c!M}oz`=ZB#CWt0w!Y#?p}m#1 zUYN{11YqJx@dojv&~D*&vZ8;nB%Ty+5Kjv2orX6RMb_^GiZl4-bn<8>NQcLL<;owD zoEvv|wm!e~epNpc)^kXT1T#_aya&InG?e$j_Uq%7O+LVFKufW@8*F=`HM-@-1>8X? z*kLeTGHxnMLEjBj#esG+SBe`6WBc^kD3QTw?u?|Adis?b#z7Zf%Jtj@JJPiJaGn z&-+eG7x^DlZSLh@#~Zj8fog|E#;wJsF>b`;T*+%JYmqsZqryAkPL~5ZuR0ecfSNlk z`=b@j!kEYjH}~ki?MfX52UqDRSi$3;7wf*w3uoMxyl-0^UQR=tz`;ww@7MF359dP= z*^K^`QSberZKq2twtWJ7nNTT=dmlnXM$jexa9&Z|=Y7nmVh>r|ax(7}n&&5P1`Ffn ziA}g6cm#t${N>86oRN_~wxzhjdTK9s&wCa&hVu_SPS-r&Zr^bC)?Zuda`!aA(Z7Mu zdM$&I=Z`KATN~D~I#yQ&_IqI1+Q`Qh9#@CL@U=axKbu+#{ap*DHUC&%qLo;qckEem z+>({CYv?JOa2=j9Q{UlLp?|oSzwi@127~Y4G(a46 z-?le*wKQ93e%DTPunJUVT9nsQ~4 zDY_wvicCL}V8i444#aDT;YoPULU?lu7y%|JrS3zPmV%O<$2z@fh29*fBjDUYDkeaa z#!dAabJ^c?s}>!8Roh6D+jtBIDyOtx1xdULa@9^Bh5-s7*Vp2!#KGHn(1(wx4`HXI zK76*X^nr+O@)3O?KJ?)u(+84(@YK~kGGDM~;2ncFhf+|sBUf9sJHswlM!q3^7;H3# zvfvqr>4Q;@o=zU1?iu>9EdiPO@V$p5^x;ze0%lwvo>@%%B9ojx42w?N^x+FTbdL(; z8jt7nVQ36b`ta~P=)*ba8R`Qbb0cRa*eS3$qafSSBR(kgvCJ3bZp>c{q{iWk<;Jtw z>KnVci1H!WFGAhh!pP66f@R(iv-r*qYHb!B-6HN@T~$Ec0^6YW<_{Bdxz@I!);-)m z%Ulcga$!sdW<Lw3$`Sb`E;$2%TbvNqsoG*1~W1EJ-YU z8#>>(woasa8ULI~eQM{!(S_gGnOOL^109ZA^qd%u7JbU6VI)2H18u~;LC#%qQs&up zWozx_OM|4{jAp!ncHhLn<`^HufMF3@-S63c3rk8QgJ-=O&GirFuCS#rt~a?YL^it@ z3;|5f>nwdta$`79`#Ek53&=e)|6JT>9$DxxuJ_wR?EYNu=*9}$Y+<6zcb|{jGgL^X zbb23d>RO6>x^lUeMUdpi6}E$g=PT#wexK{&rmweU5p5FP7SI+;V8hH^7wyBXaJUC- z`(zlVJPRJo7>|H|g~E3O;A8(i(&-5K5tU{hSdFR91|V}tz05Auo* ztRc3{K{{-Z`5c}-PGVUKwnz=u2W*>f$Nr|zwNY@b!J+2dSk!qkRw>tTxB0U;>W1B!kJ#0HYJsRSL8t}kKm6tpy9wj!0^eBX2YMwS#q^;ek{&BYW2DN>XRnjEv5y1 zJaR9Q(bcicYXxo*#i(YYU=X2(BuhcCwqw-BVw4`zEqiQzB%L2mAdlq5?*1G$TKU*^ zCQ)8Rv4#!B?ddY^cJ^^irq3ccY@c{ogKq9 zmV!At5wE4Zv*&@=_uvoZj+OSDPL3eIVgzQ(QX%uU_aJkCc`60))ge*7Omyb&%$^$_ zYFPic?H_@*K#R(i8}V|romCtP)k8NvtqQYGbUQojhUZ*Hy^phTI~L{LA(lc6W8wI@ z-^2suoM$l5BqM!hmGogtUS6HSY9Z-y2U$0szSs<+-M&F$RuesQ$;w+;=iG6KD9Pa) zW+#T9yPq3-w<^)^M{iL5Za`;9bQ~TfN>Tg#y^PM-NZs`B;3+o3~yY{BsR16Hl! zoBo4MYvm>GT;t;1B*YSbky3fb#QT(q_r4+0@7cz+Z1FydvxfgdynG|xn7ef4LjDwM z4e^fp-^IIQNV>jwR}8yBygy@|nc}_pe-!Uy^TX9=iFeGuGQ|7Ir%~~aHS2}x;-=+G zh{sH~Fl%o-1EvQJCc%~`L&EoNDPd69t6Q~(u$RFAl@C8j347-d%L)5|w@uiz9}t~| z=cX~f3A^9Ki`W{PNz|V4Aq*$*qwCo-Gw-3mC-IkN`*Cxi_k$)(#(jF#u=e0X73Ip_ zA18P<=Phs77gT2wHP~IlA;yhN&LrAx^{^W}%MzSPUQ63&QcE#&CLh0&n91B^m=2opC?KME6GM|rb#Z7zv z5X(vXsW(m9+#Z4Gzc-Ia`^>Yd3yVtnee6EXv=2%0H`;A_*bV%h@)r2ZFbc2TC8G8m z!p14-&hXM5TOBi-8#-(5_V=u)wb~DFmZPv6&>7@v4>pXG}#J4T}B*b@Rh~>n$ z^cyBVeMYzxtQvyF8GI!rBciTXUC4g*#J2!Dx6n{O!YFfIlK2>K%atF$ODuWLeO_)S zRELeq?XHmCxIOC0?UJw?eVdTShxDs2s#~y86F)fAygU@_w=~;YZxI!f*4& zlN-EXgVPslC^r9C2v$S|ZMby}Rz(%H0UGDXi@w@cjf-9`wy1$AST{9rkx)eB^eCH z6dYiw9LEYaLW>*gC%b#=-ncr6%8x&jkM5mpq>(J`enZnDA&xsl+uJ=P!P$jJJ2oR7 zrIovTzyck*R6h+eSUD`E4BYtcbZtJ~S70KcUug%wnxAcM>-xDtx8^sDUlwO6RodG& z&p&USXoDTPA-pIdc=tOvbZf)c4t*Cqf5SWd=o>S^K%PN3?(2>x_=Qd-AkxN(`%$vF zJPX^7o~?VvB!`wAQst04k=rOb^XB=?AX7>@my0X`4`wLCVudk6Z=kKBk%Lt=veJs{ zoy2pxA^JJIcmi%!*#@(YKm&m(QuA+75DO_nOEzw||k_=9BkGhY!^$IUl6zini#I#Euj z`n)VvhZ~Zr&wLB2J{cTMsCxXhgrNC2h{jg8uBrMEw(zmf#;5j{ET3j!st$e2P`I52 zS9Qjz`p(gr+Y1QUs@`DiQQ>~sYYSM{NR1qf(#TTv?Z#xO`qOv^i6_%hRj0hcykpn% zYKxarAnfW{=528DaHM1Ds)~*4*ecict32ghtg#-h657XVCaTCH)oUD5qk z&m{5dz&0M8^jFv#%*o*x3)(IUIO`Fi;EiL*)!dsbaHeOCuky;Iu^N`q@BZLEw6q6h z-~OTL#_H?)1^C@Q4#Y>V&XTrJ-q?0ifILymc7())vdBZ&I|nHoIq7qZQaX}XSWPg z2hu?Y(twn1*pu_g-N*vJqAi&6DQoJLg^~#1nKc4paQrwk2M`7xeG_7y%Li>P9iBi} zNL{N@+V=i3S!=!97Ra@ZM0IBH^HGa6gl_y8v{as-pXF1}^LWmKtQk?xYR*Y6ChbAo z6Ik|eQC^Q4nZTU~!6W2q?N{2*2g}hM66aD%3ZojsAG7K63eQXC4Yeb>TT(|i`?Zn{>u+Wz=Itj`{Nyn#Np@(puN zDaG2;FUC2QkE4sRH%=&ubo_MBv#BuND1QD>B>xRDkd@StVZWWf{?=&`4R=|{i?KtA1)}PjjT5AIkok{lb)vz@gwK@mO z9M}`O%3hc6b2?w&TSL+_0MF!{sC3P2*z|d=)>K z7PjJ7QNt=#5IcA-pn$_=w}8rYZOnr;xC%2@+^(^TkFkfS_)cC}?ef)WVYL|a9zj*b zQ`EN0XD4_qc1W)O%r&4Jg5yaKb(0@E8t2+Dt-Gr9 zjq}7{oFfc*-)79DnA?v94xa^+`|W(6@RA7NhusN?!CM7y+|2MdPvMUe+$iE1QV|a3 z=}ouX7c7ij- zw&vEMD}0b#jgsh|OJqf+R~&mFZsdF*so=K5FdUXV2fsMkQV8zSW$te*jH4F8c0@xg zf;E1b6~WH&^j!oyVvVYXTp45ByMir>VB=J4I!j$@MX({-gT&oi zzx?j02sS9X7<<2PZxq1>;WIdp?S?EYf~|8zRs>^$uSNv>U{%l0a&`ne z0NZ2loLvNabCn2Qei9VYiF~rJhONm6_SS|nJNATWvKQPDuj)pyZxHulUsN%jvG5gq zFakWVAQZgDdd=_^JVY=|VSl~tZ^q=pmkg^Wrn9?pWhKLuZ*iFBXFxYQWD1Ni-@H!p zna?#lOx0_TDKIc^5oYk|ul+jTVZA11@HoN1Jb{?Ttdk%l1g5T)z3_^`rLNz%IEhTg z5q!-F(V}t^T+^HzEN<}T#y$UnRXC})`|4O<9q+5uYn&``^wa(5l}9)xo}~00$GB=` zHQsgMl@eUTk8=P_PFHQ+8*^PneCY%oh>H%ygZExmor2-&$VJ~t`nN9D|{43jq=WaX~^=Ayyk?RD){g}jPFel|Ty%W-{6jb%~uzG1p;9bz}%Szh;^=wj@9HQ8R* zUiq*$W{fxTx?k?V$pl}qFt7X9UuRiP9j|-pik_b}yzU#XXL#M?m7xu@!NZ|w&i+RD zYS^0ex?|Rrxv(d6mAzn3ysGPUFW9(_*ELmleoSg#(;GRfC|6#`Lopaw2Iw$VuZ<}% z?ENOgjLCQ0(v|07*!HrBcV6xJ2dLk6D`(D%BF3{abUpk%;0x8sbU1P-*c5U|4mZW_xh?>Ns#o&+IR?d6tE#&0GAG1~N$$ z1u{t{5nUlGq{d)tOb%J0ZCI3ptx#-gE`0R`$gvfI&Cr51Tmqu)!G`Lkw874{(k1;$ zvF$K{6p;8Te6} zV88r@BxloE-IzaM*(hVES-4fDW?kz!HZy-e2BxEUcPIs)dr!rVPbh2O^rW)(dW)g^ z>u-<(XYceR`(kXQzzK9I@QEuV#dJVyHUqtE2Kj2(niSK4mRn;_h>5*02VT_`(}^2E zxW*B;{Xfz#oX-L|J;@G4Q*EUx3VLhO(Q*l_9t5IJ^ogDJAlE|%Zyi}{+k~Ff_P-}9 z5cRk~G^30_)UgVs8B1W{ZOJx?2vgr_OKizzWm&>3X9*8Jk)6urN89|D0)zfwf}4@s zk}c3N08_b#Z$-{F9l@gJmTV(zV$x16oyuJ^x)}S68+}LGI9iQkDvUQWj<<(!GC?m3 z6Z0zjW*JAFRPGzgc)h8yCEMf0j4j!}`bO~bcq=6glJk8vY)yLKmo5Lqp0EP;0<(Bk z*ZY2g(3+jfb&1n+miALB1w(j5g6-3I9EvApQ7>^i1*=UZPTzl_M&h*BueRc=J-#~I zSG#?6makIaE^#{C^RzON(!J9LF}KT`0C)Bd(JQo+(l0ZY4du$ES2fyYt=)6y<`PD?XVMmPpP zS@6a~4gatd{@w<^ZgmqApG7oY+`C&MUi?dsEG6SiI&r%0Qr=k0&D~BY**m9E=KWOQhsRR! zq8ssoty%HnM?9;K@T}96wh7&-ol|#Kyy$lEqVP!eEqr%8UJL*e99LZ8bP2ZT7XA}u z{F^>yQ8QkA|1WAvl4F3eKG6z#L3WGjf+WJ$rF4ykhVl<=xAb z={OiqYpoKeTf#M^6Q^Ub3McjPzBqoETIVL{H=R1yY)yjK(Jp|wB z!8M#S2f*ZXVb>pAI$c; z)8bzD&%+=xQ&YD~pUf6{-Q6~1t!Z}_HNEac+d9N<*|HL+=R_CNJgv6Z9b+6*VZ4#o zeQFRV6FkkryzZI1WLZufueS%ZA^jT$Ho|DOuk5* zUh`B|;&eZg9XqEIr_=Dvt&4fM4}Tol_{_xVlYaxlQc?VWNSwARxoLZqV(v=Iw_oM+ z?YFhbfeof8@W_}+L|1s?OO3$|JSr&UZq$iEa6O7mAn}$`uNQn@gM?={Yttzb^)+qj+##`itB{Dt0Vx$E&8xSlF|}m%PoyDSKBZ4Vl^l z>GJ|5P6>30)AX~$EB_dsO@A+&0lpfxCdIT0zSRp6vnRyFUYG-~>WXO#d?(*=#3fGG z^9x7fw9Dy9_V$06tyBe`@#mFs*QJZP5Qx~Cl{oz=!uhrdU8z9Sl@*A(Tp+si9t5Jp z!O=wGv@0HnenZjNj9lV$cgYN5Yy4?#$#MY;OPp?A&XU_si&u5VB~BNMNU5#4t9H~G zZ0u2Cj8N3MN+SnXYh-OM7Hpptb)H@P`Cr(KLjtdWmQfpda22iC2)1jD`R^rrpIHzxtiD1L~K*Zn0_-);&Ai?di>ORZMGTOv|1f{`GiS zA?F2ta!%lF@-)!V_9*l(tO;xwL;uC7hSXkwU23$AJBntDeomODCM)o9~sgT>V+R zY!5QXOhg6VE8&$1++RFapJ3kJ;7m(b_PR;TlQ=JEC!7E@{&kj$Gdyw6E z;$Sm!TiGTZMKIyqcTGyIX&DwZx3UjDK`A5yQ99v#S9CGWQ$xn56V3ySV=9a{aw?av z!N~+yurQUrW1B3eQYYbj(zl+UHMX*||Bs-XT?1Zy>c39dT-p`9DxRRMeaE4K?{A--pB^wLx=j&stD>h-*8D`8+ z`t68IfuHr2XHqHX(YZjmGVZ~&cGOFO-va)pQsD1AR3io6iTOKGO!d`CzB<`gTYa_N zS822^1-{SM)df^8n*9Ocz#;M^6Uh!#STe( zQ3_me+>)!C{Mhyn`xLlA4I4+eMr*3k(v?erS3Z;by z9y^Wjk_g}dSOQ}3T?KF4((s3*@YfaGC?ZoK!olKNcP?OI%yTL5;eb1Fjd0b|AWfd>>-1pi>l-KW4CZE2)}rI7-bcKa$?+Ef-uk_e`y6&@hGWTcF641R*(jb|JF z_!Ryg2H(cA|3fYNAECdY;5H(XEE+i9YIAGX+&XlHbfFq0(O>*KE5f8x;14n*57qhW z4fGztFpcxs(j zHU}5MIuXIxniawRgAZzkw`FY;I#Us>Gb@61x(Igh?b*qg&Ugg7Z}TcwTnhXawkR1> zP_5}wb*c62@ORU-z?gf>O2+W(pw-1RcZQ5lM=-pxOOB~9-Y9~tHh|L#R%c-m?4!Y1 z5v)!!=8n((6lz4U74OT4U^jgh!OIVWLOPMR_-fdij9@q8Gr3qcd%`r?3v1(5-3ay| z;$F>UOz+~bV3Ei=zuAQ1uQg`y3cRXC{+_0@sCI>=Y)30w+%Yd?DBB94jo3w_4{u3G864?Mzq z<+z4(<^a$VUAYwaeih*2VHN8@Jb3SwbL2^G6&84BP%wG#XYMAvBm&4V5fFplDR|?Y z6@>pWix|8pxKYGAha#NkS}{4U6Pm0mBzn{+?>tstib-x|Qz`J*k#G-+%(|tY?QO z$Gz_EJaw=ch4&3Qj^KU6G0RgbO~9<2ez$d;=8CiM)@mhOJ4jyUBc+ z3wuIW*$ei>tGZtIS2$;?>2*!jogb6h*YrltD$12VonXA;_zu%-yOtlz3k*MYoWn#` zyZT}_Qs7tJla&Jh$RZ|{A(aBZuTteAG7%#;sF4DH9KSjX7A5rQe@KB(_^3J#T+$Wm zNo^*vFtxc^Uq#Q)xp8&!QX*MKJ^tZz%;w;g|8SkJ}P0 zSi|+}Gb^;IdPP&<&qQWW3O+?I288Q+vb;+=1wQ>lKmT$bpI8dDt>UX;Yf{@D`9|8t zp3pY-0xNk{SKD6x5!zFZrJv+QuY#r;lb)1!vvDUN0_!;`D;5w)YSt;;a(aYa+ zDh2-jLs^WukmPJSLyh@wydPx@Lz_#1ALcnWGyfq5rlWY}7hroa_o|8=+t=Y$Q-Ou0 zz$eaP3Y@*GlV)lR*3mED7h~huVFFzW{Fv0|GgkZ{I-4FZo7uh^wkE~2lI7Oe6Jla7 z%z;;R#kAQE5Uz2=rNGzr3&-|&sjYcZ?Wi-$*rUQ2p{Ucf3`Y*`W?}B*hjq=9M*U&G{0E=ddxFu=XKZU~ zyB>ak5gR6Z89UzvDOXeAqi@72swwb;G*<3ljiuewW`EKu<0)`bfa98GTGI+M0QGLW zig`_?z^yl)-@DzXz}1E)-9#uTDdnEKTnTt1R0!I6WzyIc%Yd^Rjh6Ocyl;0Y@V6q% zGlcgn1-=iuMpNLO7|vWWR+wT2n< zlYTqmQs8I2;h9tlPFbB|DpyXwIjtR8De%SdBLN^;=>-2%De$*$sgVL7h50*CjPcds zzB@k>Y%V%41P~+@Zc^H z%d-=_7CR*EMJaH>aZ9dl@?%49^C@tH8a7@+Hds2w9%;B8SA!3a|DDe$FjX{3Uskphl53{+oXl@<4Lb_0ml4#!< zSrI0k0zZVqL3RFou~Oh8b(tH*!Z>Ov@XuCGM6l=X%A%i6fv@p;RoAfxZgoPTF{GbI zoMir31>PD;MX**xFt%nzuy0@U|{)9Jc1nnCOEFR6!Qw48a!tj?&;kOHJ6pI}i4ew6b*jy(xSyxE(s8Qbe6nsZI8Jhd$XC$8jACH84 zX#Bcw7;#4y-sK+8Wgey~5oR~FW&MVIUB^4s+=vRCdM6#P2*CFe(64l)|JslH_}=gS z<<+Kb`gnXSu3`KNKAq6evaKkbw|=xu->Wss_E7kOOW}l{7V+py%pIf`_rotL;~l+| z=vFG6cM`w-iE?f_l|{`viIZ(JkXU-vD(RbTS#t>KE>Cug|g7Q!g3O&h#Ip z;O~(cl!9@DgOL|KnB{WPdGXtx_wz?k!Hk@?P4(5VHK}b=@CjdN8+$_A*bCamtGe1Y z{e$eh_}s`$@SX8~wvHn+(%8(4KQbGO53>p#)P$_O_@B|s?{$saxFV5c8Ni$!D zO+&x@vKSkAaROal{N_|%d_inBle}yu`)b&l6w}XdNKEVrF|ilsz^l4qTJe2g8An`n zTG}rhfU%4hWR>+v-xiFu#j3zZt$Af#Ej2Czh)x9bEA8c@(>liHHzF%;o37E4(TR;& z(TVNu7GcyxM5irZ4n?DkVJeI-3Prbk%fW+NS(s0Gt`VXMb-$`cJuh3b{H91K z+Rb!%KH@VC6-ta<(pZSTnk?V;5^E!<*tomK%C%@L?XwnX*FxjTa#Dad8*i%AO58%e z)vjVJQL@~6BPvY7u5%;%*0kF2Oq>V>4KkG6A~G8zR0w`xZrTKL0G0s{_!?T;gSo!l zCCl%A#xKth-h&PSp&MP9EWa09T}J0o7|!YJ7+)Rkt0R1sJ6xA6|K&H5z%DFI0>}P6 z%ZdDLv8wo8vV54Q*W#*})`pmtCCfM1Q^|793;g7qAXidasrr0zrA)~5HE8?*3!@9~^l`Flh;@tORExs?%SB`WaFXv(dS0Ne@zS)1Pc zQ(jlvrfamMTVZ3CTM=d3^e)v3w*u2nx)pVaxs_(+#-p3wAxfHa)4SAHlw;G0N)8 zXK#&7?^UIYP461z2wr|Lw9nb;P+tvOlksiMS7amX2?b^^@(V@X__j5Uq3UMPWddP3 zKt#cn8tDLnvFWWK4wwbxfGVHNjhOgMvmCyQ8~o#4vYA!#zopbL&WdUca?`xc0E zW?Lr2poWc?QLqBg;-W!IS1yBoOSklm^F#;E5w?89=d_*Nku2~^mSFP9YhFrtNd$^U zE(ZU(ApA`Yf3p<++kzWKBsxSm_?g-0Lau?!H|A|_ezga1C$8D9S~-+R{!p{4-MciyM4P z%diiz410wB`|TXxMnsNA1LqrT8B{PVLs!T)s!dvgNGuMY5_W|mA7cr29Q}UW&?R3?e&QOq7TFVu&R(zuUeyh2BM}U1=5m6!8z44|OupTD8Mez2QrBiq}AVeq^dfVK^(K3pX57EcGb$oynid?IS4#92Y{C7%B9u6!ACpL zfw<^EJeVkcn2ph@0XH~s=?0TaKdp`Mk_aF{#ojUa{(?6?Z}>edV(={lH;VZ5l?Kgo ztr(l@geL2%nAeq=7e_426%R8v zq5`kAr(7`!z!eja<%-vtUKLzR+jNbVbj57Ua>b%-uK4ydvR$#d#9Z;J%9%&+FqUGA zjyJdYh_$AnENb3iuj;zu zfA!RH#iswxxycr4x+rHV`2Lf9CqP!|FjcRODKMPdx7($i7SihLPRvTHuVk{LNK$F_ z-8>hO$QbiNg2_kaEF@1Q1RrParvm%lqzT7BGQS&Z3*_6MI5T?1ee-s;-zGeHK{8kud+|7Y@Mig+-@6wpbPT zNC&TsoJ*^d0HPBCS!wlrWW{aMHCi${u`w$;iL%Roor37}`lDoLEUm6CvFLOkQ^__# zmsYoYHpJTaTCb%0Zx)tTzZ0H2Ey+bSkRqH*c3lu%g?Lsw6wUuZG*uX16pBvP;K3;x zTt4OOZ?i&C`y=VJI)8WcsTj2S40?ZC=(2vHe;%tz#nbAf z0B<(bRH+rVfsNZRyNU%!rPZxBqQW`Yb#7&O8@1s%I}r-@kfG%El-U@eLa-~ZOdv;N z8SsE>qs1&_;xdb+zF&RNy?&9!+#zpMWWldlSOEXcAF~Xd z<72$tHRmRtbi~a=U1H|(h;qNt&D&p;6y|;O_ivKdO+T=xxp^DWiuI)SPyIA@)MECD zE=+6;rIFse^%@UV7^`G4ztenzb6J?|o4?Akm=2`V5FO@Zq=%Qh$178f&D)u0XKdbn z?uy{$2SUA}x>Vyqz8bbB{d7aO{4{&QPqP>J#jCo0dL;y5AL86WQ_J1aX)t&lW1isJ zzj;70ctDBpd->adi5vffr%q@^$uUaX;^^4#&zjXdmZX8vvPnSStY_9+G%y}=^4 zv5IpBv=mPp=-#R-y!$o69J{AQjrU4n!~!}a#zV2ykI?G`s}x)j;a@TL!s{CEMHVK= zt0!j}_u!R|MkF8V%o@U{dO~b`F5`YmC zkY&U-MWoR-U85z9n2lLREXroY>y3t>@XUJBh}9)##EXC}Zi4O=iO-eIr4f(&H+kK3 z7K@rjeARhbl095wM~%2Wx-hY^wh?z54^3~IWWGU56o2m{Vh6gMLHEe8MDMb8Q2Mhf21`Bt&lqf_{|82mKOp_n_JMGU`9a2pZXJ`J4j zRnb8O!!mS*BQrHhqGK|%Zs`M-uRg|bywyBJ2P{A8GWQdUXiO=hA@pL}7;b!iR!m7} z_0IisRo6jq=)z)3r};w_h5Y1HOd$cp6aunh%05aOSTeY6x<*UJ6gFnX6j8RA^1?{O z6g=+$7R2tG)Fl>E-ehXl_~Z^)o?(l!dUvbVbdS2!I$+uPEXpsLSW9R1wu&xHYz(E5 z-WX0Y9;z@_DW-h!5@!~C$--jFCUdf4N}a6UXSYX$nf(!o!%oSFDIZRW;N?4^rOr5~ z`fAvkj42=8CtGAsC^~zAU%aXtQx+f+)jnWZgBfvm@UWbcZ_RH&l57{ z;7>94ISZr#1d~heeDGD)^^2HjfX0XRdU5sp5uIi+gX?^zUjUH(G?$avuAIO?S0Sj8Ls%Sn<9Am zQP4i;ipThB*qU_3hj+<_*b@rOUf>t6>bl}H9;oArP5+&9lP%PCr~<>eJ-?P*kF3&R zs$LsYU|@C_X3S~ffMo`(J^fptSD5TF4_H3vta1^lxl`Y%alrB=URzD8)c^23pTGX8 zIu88Qqn6s~_Nkp0`9TgmUrABm;ZT!^uJAcWH3oZPayVewi$ytTK{1#c<5IB2?@2q@ z1ua;^oydB&2Ro{lZbNpa5tV`;A~PrjKPfj_t~{NY7EB+oe0rmwKQaoKk<+#oUkzK6 z+VZ@UEQcSz^WkMXl zOFkX!#W|p;E2bm=4lLt{OFkXo7Y@Lng+-@UTdaygemt*?oJ&5D0HPBCSqCiZMpoQ5 zU85zV6C1OllPFtsntC9j)9< zCQFiCw^g;s9k8qsU4?j7I~0vIhN&>VC=?y0!Gps!xV9lHzL^z@w#MMhG)3QA7;U;d z>^iT@csC!SuO6^mcnB6!Jz)8{tc5oCh3@fdEi`_>LJII^15A}#E4<1Nw5yow)&Yz4 zMpPK-4_MTOxA{dVXlJUnkSi!-YlI3x8?Q_t8_uDMI^a0C|>phe4;~)z&k1-}~75L6X$~;H_=0QN#<}HY< zwr#pbOPU88v&=)3%{&UjVICO=Eb0<7kDruyRoro#x4Fv5GB-QtNoq~g$1G}Y-o6_x zMT)6MzkK?D<&!^nHnxe4p)}I>(Ibq9DvVXKm=iRg;6xTC`}beVvY0vtEK?@?S=89P zEq`Rj=IzF7BY61+sJ9EJeS9@+P5S9SSx$>R5l-0)ewtTx{q+3^!al^g1D20s(_rvA z%RIr>*ZBDrg8|H5y91VGSdSjCoU$);!wy(}4L;Kk&YO)s#bD(pSmahw5j$WR^b`+R z*gYNQ+yM)LwGUV}i%h(j>&C4W#(Ru~33A8DsaTit5}R90T?j>Sw=i8B8|4`8ZBwWY|JuZQ8pufVs8j4sbR3JCM!e-QS&~g3uxt=rnAjLfBW=V(jfX0XRWjoDALD$2 z4_KJ&*L)?*h~I@`*EnE#=W4I)HH>)QLoVW0nzo~J+((4yr z@zow*o$agLzB4)3_%Wj^eR4W3{D|7c<^Tt z%d-=9DD05*L^@y*yqFi!w`~izW4ZD!+lq-IP8mcvn4n~F?tB);Ja@n{ z32+yCCcA3oCSy*IP&;O`zz0561Y41Ue}iQSTNo4n*X zSw25~z_KNWgX&D#K?f|`>oT_k3*+cW-1yB5o_-+_Q=UFHi+=imWfk4VhhHPKe94?wHVt>*L;{E@1Z2gOPp4WGOU4v7X2ldywwN+@H^h{T0~U3O#gx^+ z7B|5$yg@DoOS45;y?M&MHhsaOW=whOaO%#&vwAN@7nbKlYR8m5#zPgxD#euEe{g2O zJ1orVpLsqjrqnrLDP8W_TO+1?e_%#T$(JH{`PO+=<81fUur(P|F8-t3412;}*$e#Q zRo$3!!!32PdchIQw7P?b{gr$LOR^7Gwj>z#@t;Oa!&#Wi>dD$_XY~XI=A(uwhvP8K z`P3RSFEB9khFRg79j5BF#}pWtdkHf*ju~9H&fh4hTWicNF$ zD^DB*9^w21*YMaJ0K(FhJ75`d32>2$v<}3BOMi13_*2Zi#R9)vBbZ$J--Z)j5&;~L z5DePw*R4vF;~3vvk6zc z^T_|s6<<;Gf-L9zEX)-THaDW8kROzC#Uub%OhA?^KI&3GTHADumUP8z%yPw|Y_9kN zyo#0Oiq$3NivREoglLNEw)dB?MXosa0BcPvvZ(2b540UdLZj1X-7V3DiH)^g@j&CD z3S*UAamW3fPjC$jbH&4+{vTcOq6N?18m{=%eKTC~_m@QQ^24Bg&L~@aHEd0~;vcS& z4Y4N_n7v?RysGPpm%Fi!D>nUi&P}#Z+qnr0=k{B?8;F5rl@3$&+L!_Zb1TD)i5Leg zNAC|t*+=%Pp}0N2q{)t*XI4#cD6O#+O!QntYVIy%3^RW-`1jlVKMz>;zSv6(?}aPp z5R7DDYI9m&Nn|iZfoHx=BD%u!+iDC7N@wOSWl;_;L9rGjjy23XhqQwW(SkL6j9g)R zaGrWa4_K~?%%BwPKsXqA!l_vDedX+g}$Y1<%Q4O^4iR=QeiV^3%sdqL>D zs;h0c;*<7S2P`i}W>N~yRA#hXX&#$i2M<`@xg0DCb)kcrkafWF1bX@GlMYz^{+l$x ze)$_o&V18&WB#3OQN}Rdt!bLIk)P+x{1OkP3Vdl2=B~-6)U%q7wmG2P`upD{h;v(UQ@Ljaku2lr1{# zjyK}wtX!gSV+Sni5{phllpdC0t!p<5Ybj3)u{J)?CFxFMVFxU8;JMS1Jo2)t7P$kK z>Csi>Icn`tR56CBFuo`h?Ww_oy)?Kz=P@HI6un)Z8o@zow*o$af%cszMWtFGL|c?EM=m{;HHge)hL{xDRxr#H)0F|B#<3-)2C zU*I#k;3ww=esWG&zpmVeq1HH0wo5wbKpIfTF`7^A1Qw;d!L%v9u9@(X2q1;S-ZA*^ z1UC%)kg$m6xqQ&((jj48;rCS3C~X@#CTp!T$r@v}ZF)aOCN$LTV*sq|c~BPK?>(M# zE7wJovz(ugVD3aj38cR_*K1ayqL81Raw{YNw?aVHruXCvysorO*Jw$%!p1DOBFg4g z<~6~sWPBJ(U1Dx!877F0Pj1uueK)mBlo6UlKF@9hoKIPE=+6; zrIF5Q_ZSaV7^~!I25UaS7A%~eKbqxf>UX-;7X<`fx6N!(+W~At=tf zI@woSeYM?JX~r(C{<&X3WgSkV5PUtI${$UukM*eIeRY(tjtQ&yt`V`pg9Ak@&rWb< z?2t4WrPT$;9lg5AxxER*@Vy0t8g?PyX|$#qEnT^^`lV+{-#AYU#yP^47rz5DDdqwe z2&aO{CoeIK@RA7Nmu(1$!9Uzt`2U(J{Fhn8;4=j`iU`0W9L#(e-3qxf3uE5q=2wRU z?ks17t5)_j=1dZ5$7B}xKB$Ud0x9^k`rpQBX{3Uskph;shfQryo0`G2w2d{jl94jP z$iWC#@V>URl?{KD6#m?uME^fZd*;4p5yO8*aHEJEjR@ykZEo$FTZgWYZB(Nq+I3V` z*h#0=&sCPST-k3urPU|uGM8r&4QtDzA#|h)YiI0}MgQ_tSev1nw=k_f4>6@~SnD#E ztOB3#OocTPKv*LnE39>l_pYIBx<*TeH8y62HBq*(w({oLxg2$gg|*`zs`6MtW^eHiMz=)&@xNGOeTSnD(%sxVe5tle=NXBPaK zg@v^si zs%}`@4Z*NxObezk4{DJqxK622up~RJelEdqtvB22^0F`&(^Rh=(*y?Q7{ipqahT?O zYK@r}7?_(G=2WiPVX9txOo4&<^*5Aka2NB4Zk;zPwODJ+pp9T)K158je3w>VWSkdX zG1$xX+kG#HCAA+@TK(ajveN2kp}soMR|okjW2H;0&p5L>dZi!7#7_?Ujssk^ zatiOy@RP&1hR5arn4GR$TKx_FWHb)ytON1j(x=>vMHh3ov%nK~g2`o%*p~2;2p~a4 zKny-q@W!(Y|Lhe00KttSo}UxpJlBfJah=d)T_I1TM!D>t4$E?>xOa=Y;`aLzuDG&$ z7GByF5B01B7c1}~bzSi+b0aG7E@a9TlK@;X0a>ni=`*T=!-t_XTGAD>G0PQ;vbo~R zH_Ud$>JoFs@7@a`n&P@Uj2^bg6~Bc?h;WDTHjA2f7(dz$W1+72i_;?u6B}#0;%UZ1 z6~-#L;v+SmU?dB3#dGfYA6@aCr}*)Jk6%uQstN-d$ zKZ8<`Cmf7iZbX*LNvGADBJ(fjdoeMmZ53Y)Ta((h^#o}fdqUgT3v1(5U2WS3pTN&b ztDhU0Nhz4FEMmFxS;jh;R{z7<+{}gVEl?A(((31-m%lqzTK(`{vKVs+$(e7u)R=$J z$)2qSaB20IPN@QB=5NHnl=!}X1lx;bH#EFC2j0 zg+-@HwpbPT88%)SIhR%^0YoPPveN1&M^@Z6U85zV6C1OllPJ6V*V>3qkK?&_M3tVO zwd7%asH_}37M;#xlF}yV(&{I&1~tJ zsixH*_=6TYjfE}r_v>q+@w7TAz?)4oRcggv5c<_^SFz}{i7;n;6fu~JU=0O554+63_Z~H_<+BRLICC!74 zS>_?iW*#rB3G>K!Z$VvR=8>l_GikWZ+Zl3lOb_35EqUE^GmDy=x1G0^A`Qi)BKOhh z_ZGH_E=+6;rIEgm9%DRIVXTtHtflz`YqK!fZ*oVL#ngFk;j`ntGS%3;9kyx4=Iz7L z5xjgS)Z2yAslFPvCjInBmeXQScqsOQhv8LSKfM44FFwS%gQm@+)0aQG);z)a$NBjc zgH9#^-FpjHvmSkK;l9$*AFkZ!C90|aP3CJ?y_J}mvrfamM5wkJNh(+0qc$w88sEqd()Fo!bvu+0? zV@7;GTXYAu+SRNztEXk(dTR1hkFtIU|M%sv5jE5?WRWjl~Ud8zYH?T0- zAAehx5x)z?hW=-L-EBkdpIv4%`y(FLY?xuhYaQc_1Yf!KmOI&3!`7q`uYI~UTkHuV zW-nL*uj(4{w)oKf|MK3#14sE8mVy_QFf3Q@-ykiWdIv1;WAUj2mbKByqv+I!p<4ao z+kJJcua5WCQNB9HS0e{3mmghSK;>~xqYwOX!i#y+by26o} z8YR*FTC#lpT<`M-vsw%uVsa3w^I2aVu*}e9?gOcu#S{`iOd%jErffCRkJdI_qa|Ys8?$1HC|gXKmP1T=I{jfN zb&184TW_lJ$sMp<$ri$OsR9g^70X$y)`z5yR4HDQ~rq{iJK(-IDxG4Ey+{y)G{cb6Gvr zYhpTM#3$DbQ+~l=s$LsYV2t_CHzc2SuGwL#UK>+jU|uE6;L{uZI^SWvCT8$B!NB|t zG0pPb0ZZp$UU>LDGS~0JEg+VZ;_86qF!-zVdkg)s3McgezS`iceS9@?z;d)7y>b`F zEa&HaTBS7KRV&M^3m)P81T^5WIRGZ7D|f(h?jcem;-Ulb;L* zW@DBs7G-nAo8tGZvRtvc#9Z-O%s!gpo@k-1pYoBsNB?I#<=pffi<;Z}>uraTxJOUB z;z`kkiH)H&(yn;0@lb`aO0IYx%_rEGg}LJPKm3obc+U}@y)|6%1FL7a;$40n!OQnT zGo4XZd^K!My5e7rmJP8d6qvnWWW1{DiVr=djw?3(ch1c$11!lr>vpDso&Kxhm8{ZX zn!(q^6d2C!Jj0BM7zZqW9tcLI-dkA7WXH~_1D0nGsd5pixvh~g%zSU*wI%+a2P{_~ zTpb5~YKq+z-tO-TAN)61QONgD6nHq)B%&*PJXMXsvPx&>mSa&4`k`1I5^pI5^Y1y3lWSgzcinHEeRu>9*FKYzF!%*bimEME;44>jL1}{h@{5z4P3I5B{I3p(GKTSPO`GTGo@4ms4GfHV1UpWo|H|#8 zV#h!Io>xtsEbM^g`mOcL8(v`}Nyg$4I$$BGn(r-adSG-mU0ycRd^K!MifJ>xOjyXX zC&a{FU>vXNim4eN<#!x$$)|1o!U34Ju;|ps7OMiEFXojo*d4Ht0HPBCSqChABP(v3 zuF;awiH%v&Nt7)*U9l9R(@}?0xUmBkb%{l%e=v(@6I|D#(;Z6hL6D87UL@&`Wnt$I zTdW~24#f;2l6>N@susBemLR$c@vL?zn*SfsRAGEkC|Xp52a9QNZ9{&#GAk7AiNTp^ zihdaCI@9G1hI{S73-=Ix^?+r}G8nXaz%u1RE%bI4w$Q?=7eeulS2luphH}h1_uE`0^rD2=-K}PoC}$ECU{J5L()U?R>jS zC-+8{XA*o55(Gj&bY-$Ad~cx@!#VfX?yF;cb-b_A;^#;aa-FT@N^lbk+YDSaG|P#k z-&+{v>5Xw!Olv&CgT1$Ki2Z0G=LLRpPUI&G_uj&2KCy%sYOMolKph8aKDo76lpIW( z;&)ddyd(lh;jniM{(rt*Q4GPQNm->AiBD zEIhcx(9E1$d3QgroaKBMEXs+95=g(dFwd++1%9!FS24Fj0&pt?WNmuy-Pe!SHeI77 z-3lAC+=?ihTNxU_t^6~ce^8g0Te+Gsz$WN6y%#AsaML^HeCk!x2`p-EdZ(;Pxg_%s z`=s&@*GCs7HrDnuy~aZo#wvN5$^_0Qn8U*9`Q=%jrp|i{2V-K;SIZ-0=d>SRE@RWX zkG48t{$V(@&ndwOUkzK6@onG3WFzbe1!gbsi&u5y+i{4Bb>CZ%354kY5yi@~_r2_lwv;Cd0uvlCnyJ0wj;X?4MIN3U*jZtE@Y)9MB_Y<%U*XtfwEUAeUS zi_OwE&J%-ijQlZzg!-Wrkl$;r~K#qliR@ z2nYKrMVQ-mL2&BA!dkbvWEI$}r@|TuAgmFP71rL|-H+BbU85z#8XL31nkZXXJ8Hp~nYkQw ziG{UKnNTx6jnO74c%3aut3Re%)8pz=E3N*#ZAD@ZFYCR9C!z}z8*7KPF5{sJW0k_% zQD<{z!O<)%tUY{5R#>Z(RzH6?&)yojoVk57!rEEQ5xjgaG}!slim!&P$*^|zL9#{m zguSvCd>XInhPBHP3~Q&=H!FY#7MX&zS+AXLUW{Pa$Hz~KSF$h{)6Dh&&5njR}TqiVHSI85oQ7*fA<1Ck&N~`z3IN^#1 zuat$CcEzo~@`8kf7v_p*n;TI9&Zb;33BVN-kmZUG*u{_5HeI77T`?Q8T(KydD}H5u zwkuYbm@7Up4o9T|LBUp8s^zs!xfKOBEuEW-8q7n?}YX_S3K2M!`7rL{siC1<;L3- zn7v?RysGPp7sG*8O;>FC@0^=#p|*1q7|v~Ew|FJ1beO8w#uONs>ltQD#7L_jxKvhJ z{ck2ac21?$$9XOyk#PZXQkiM>i$2eCk~krcWMj9ZvYOs*@2h`bLU#%~?&PI~=hn}o z8VAE!nA#l8Pj}#FW+)0IqD&&XLQ+YM!J$f+uiWxa=YxmW#HK}dq<3qn#8+*cC zvKO?CS9P_m1E0XpN~_O^%%l`FE3;RwY@Lw>XIlN|-N2$Sx^++!veN4BqL;rrRa*Vl zWwRLbFv*#W?=i0%g+%{dKC8HA?v!atIyZqOe zh)zp4Q@F9Ty1K-o)8ZG<{A5@zt^TF5UJz^J(32(IZCO~h`QPx|X-S^9YgLO}TK%r* zD)Jn)b|{);3{zozQ7C%mBn}=t%ffuhlykE}(V`eUnO6Uc>2l9dFF8Ca2hms4>dSt! zAd*%;Rb%DGYAo%uUL!pDIUrJiHydH9)C${x8yIC*L$Su{NrTer)*De_!Gda9U2S;y zPK1KVO62AKptPP5Dg;;Y$^LbuKnpPi%;hcMG z@zue;I@DKb@h+`?0=6rVz=FO!9rPOBFq%893hp*~JTlt4PI-fmW+0?(AD z+zJW6tq_p4={-U*)$+G((=}Sst*|l6t%$O@m3KacTggbPt4qwSyvZ0~O6fMe&nP%B zt-b{^64>-^$)e__cfZ9cmxZU*ca1JgY^?2R#v2b+7^~!I?mnLL3GQLx^!)5BPg5tY zzMv^$irH!PlYUqbdC}s|K5&_(;M=Vtc=`U&KBoi&d^K!M#<%Z&B^zN+C@_10U%aXt z-+qAutGa1*nSk59s$P5dDlj%($KNM*$?zPe*);f>oq`Y;n421A%z65ai%Y97HN-Qi z6dW_2Vk%eq{6`)-hFUMJzBTxtN~@pw{etYL)f+tj`}pd-xm5wp_tjost@tX<*rnBb z{Q@d0a2kc+NhZ6@J~p$>b&p4#?W^6sIxDOegG-buD_3?Eu{=A$O|nDMWRzAH9C!5U zCg=7X5W~*_8Pu@x902tQDS8(8L>&v4RzG($=^N*X4xA%wIe#o|CwDOm{7kW6^2y(Q zC!Z_=MI#r3zbbg+!G?cG3jYDYjUo~qA{<?_xlzHe3|%4Hs76Wjrj@h8&Rl=v=AKsHo5R6; zhP}xp2M6micL)pPsHN54N9HJWq*y>h<=7yLema+P?-t%z%lY<&g|!jpl2zahs8m=Z z0faRIvclTMgZ*f2(=}Q$tg$gGtckLPwWUAG&gG~}EUazKgqraQ(Th=IU1i!B)|OVS zsjs@!N~@2ztw_vkWu?_mi7rfR45g8NM6$(rsKQvKu(r`rm}~L>*gF&WsH*etk4r?U zTNT`w5tV>!AtVqGH0(sfA_;0mgh?`ikt7pmCM>R4jiN}KTD8{Nx>Q?RZMAA!wc1*j z;?`;_wQ8+P>w?9)1R_hI_x(O+xp(HyDy0AS|9;-i=X2(F&OPUO&isUBv=G-b~|8Y*vk)>ky8 z5;%rZ3!iLpwkvNakJgk*_8LkphqF>DZz$jUiKMpZlJmTL#>JjBwMDh!4dvZJsav#B zt9K6eDsNTM5hh&4Zd6O!d`zj;e}cS9SF3k;RehspUEx_*dR7@L%cMW8E_%?5eO*A} z3Ptk7{Nb%oG`D>0`UZ)thOI}HwdJ>J!DUIhoGHri7Q7jKLiDJcBi{eY($t;RhkQ7n;fasib!!;|6+vJH-tIt1MY~>3CvaT@xrDqs< zMe*O0Gp33$yC`0u%TR$XDkX~Fnk(rkdRst?;@8jpf};55fnM=u5yg9bl0g(-Hz0|w zeF3e{h~h<_)jsu$;_FALJ|rP&z!Hj1Ca#>K_@0w;h+^ITjc`+aA*+ZoU4@yxe*0ea zN<*pa*(sGb!tD=trI#{l^=N={d~rl6q(jG z&9mC4{?=B^UBl!}LeknK6s=8MIa}LFV>7GOo03wpy69_4hqY$iTN&~pYV}_ZlgXSt ztu8GglUn^ILV2sxBWW7zrfesxX-qKzS#i%h9OSg#n|Jcw|zm z&r8bjWsj-Y{G*dR%rrVF&PM;m%OW2>!1Y=_wYmzDGCECH%B^Iz`iV;GMMdtj%jv3i zcNNfT^~;dl=`~rVB2qkzTK$aVT&Ob3J`@em1*SlkiyDfqnc7%$dASlKT9?RCIjY`Ot3UELGUA?AuTXLI9j)S0^Q^DFsWO^+T3t9G%?{B` zX$5mZYB;D}6;w*9T3v@`RQSMCtE*=mzEg~f-f5J)_5HiRD$VGsqBq2)Tg+2r0}1#D zPgWMa;5~m|%lguOZjUqs|G)!++X$MhRu2%J5pR2X)=&TGKHcnDWrl0i>ZP@kuA&hF zx(43cE0c6hSF6A6@mpuCB&#>c(rWd)ZdF}V(nWbnn#jL$8MXRDT=hZO3LgRp51Qls zHIkmb4+yL_eyXy{-dB@i#bA|Ym*U??`D+Sp;a5!CCHwG}tRo(jiw|$AhicNhWzS4` z{hbuOt{pw;-97A^^uD_>lc4>EM`y%JSyJO<>5xyX1a&V_a8>&uX<|hfAXda9)1-Hg zpx0I|drZaV7c25GlUPxlwOF~DFRErztE(U>Vx_-K1#~%?NpBxDM-ctP*3+aO%ew`# zPI@8qaAKJ|}pw+>c)L_*SlB@~@VTsgJCcVYDbp^2d7PY^s(8k;-sf2#@~pRd*1J4w zl3M+$BiszEdrXpXRnfkZ3*A44YSGZ)k>2Q8S9sQy*1D?br3KPd*R1=OV%9E!5M>g; zKR7G3y7Fg5uYxJzwv@(b)#}<;Q**nW=Jkx`rCdg>e%!&Ty-7NWOwveSo-u=zaIQvx z7s8aElF7HeEycZBF<5oIVwd8-Liz7=l%_vAjeddh*BnuFD8@x^BXb!r-x1J-XVmJg z_?zllW~}Sp)rE7PBE9}00bW{EQ1mU~;HlNC4pLbYE@VwOkhO14C(Nq8*9kCFP<|?F zPrs$IrdesmDgJjV|9$E;eM1_3yY@d&(y*#;AAuD5u=3Y2qN7m}x8JJMc9%-q^~$xX zUAeT#I%U^P!_|6k*fDDL>qVtR)A{ge$#T*6l(X+G0?EVL5FS`Ts?_THe4J@m`@gLae^`@;nT9pR zSr2Ou@KM)HHxH;FDZ|<&qEOQbG-~x`rD>C4tw!0(YgLeJYV~9ER3v4#m`SaEP;$mp zG1}TlSF69R%TR$XDmAQaIEA#XD%vQZ+sM9ONtd?!wdYW)zjUxyyjg~|aZIE=iEVa^ zpE)Rru6+S*)^yHAp4C3}4{OgJulk~dq`yii+K0Gu4r^~S7-mm8Hv1g?$`mT6GSu2#fMH{vHclvsjx2h;?!o9OTQ`=E$_0y48 z>1y>^2rTmmg?|e;(bj1J#m3XB1|4I4p^SGw}Z5sXk%3pKj z-Y&(sUGhreB%ico}6H>bZQNK-Lw;4R1@G`w#Az?3BtI;kHy$ri`|z)$e>g zlUn^PU3U^VO|8CWf43A-WPBMtQAV};+Q%udv?lch)aqZ~&y5E;b(@+&7TqqOo6UpQ zQ54*LB~^hUO4o>Tp;S^2i#}57n!f)MSX1;*U?4RU~r4@fXn4b-YR z2}w0cDAFLVoYho$ES0NE#OlAijN@@;zR~F=ommA}wLc>+&CV1&RJiUpFQLE40-7BQkMO{iw#CwU)r8kgVYW0hBD%(E`=tcyIW2+|>1P?r|D8CcgS$+)WM49SJ=A49chnB|e4 z=~*j1>ojX!RdlE+gBujHb_s+ilK?b|6UIsQmZ&V3eX? zCy?U5m-5#fQFJKAMFXn{c2(aK1a#pUwR#Eurn)MOb=_)RIIW8G`eg#Vw5Xuy?P+lE z)asqw0zy|3E@VwOkhQaQ(&p);X+M>YdX1XAetRsNbIIvT~eeSuEfB9*r5l?!d7dZ>o04gbtE?4+yJ-xQS)J@49|iu5S@ zKso!a6VN3(pXT_xq9r`Af>aG_zj!4R|8!l>9=o}19fs5L4Qng4NLFxF`--$-O&Bn& ziASbk?bThp*e-ia#pWN@x%4+Sz>6HIpt!1xXp!o>7V#HCr}n^|jIa$#!y5YHO$tb2M^87pa~$ibpLyx7;xmN>av9bdy~ zv$3wbPu6efm*9cKmI!Di%4O8*M{j|a&pbjv0HH&qKRjIOzV9Of+`Faxl*sZ#<%;e6N)!+JVO%`rj==;SQsFR#Uqm_p1#eC?Xt&I zY<^KJ4>O5k#aWBuKk`x6Orlr?NfE`9Mdzd&u32G>P+BNiVSL84fE7lkK-Lw;$$Ey7 zR}_~eXG|5Nt&Mb1+@Z@*fi5Z~iqBK&DT)bbQ9O8TrtXwO6o1SM%(ho%5yf*K&mfB5 zM~mgswZBcPGF@q%XSGlLqWFV7l_-{wG++ruClgmrQT*@ya)@Hx{*7?cJ%i+B6vd{i zFw;L@m6ht1hEjLKg4^{}X%#4$%6 zDX^w!1Yqt~zqw0z7Y*SFdAI>B%F3bvDpays{feX%tS(xobU$m>&3Px2$VpeLFWcm$ zpS#sbk!fwucvkz=-`bY%p<0`Sq_s&Xic(xTTU*CInbqpQPD;t@qM*sg@C;gTQLA%A zpOUtx)ukn*tJOb5Gal&pkQF=sOpN%KO9eVU+^GIPR{!hN|KHXB8|wcR^)EfU*H@+p&IO$NGkj^`VaS=X9)}+p+%4j`edo*3a%(KeJ%DANl&q9j+R%o>i_YDjz`uH*=kVV$V8DD(WrX zh=VULNf){u>t4TYgR}1NpZ(kEc=pL@mwmM7w9B5_^GOQ$zrX*Mz<*2Nza{YB68LWk z{I>-DTLS+rf&Z4ke@o#1-xAm*z;Y(}x99C|$U8cLM4yKPhaT~CVC)NbCVK~x{dfKA z87b}u`*gbQ-L{+^Sd?gT-NNsqJ3n>Z;{T05Kk2%~|AA{NUAOgreDBd&B-$>`xF!-o$q9X?`s+3@n= zBZrR~UNL-hX-Vnu($dlqrDdh%r6Ws6l~$CF9#Jx4_=wUGBSw^sC?7F$#HbM!BSx2% zlnpN{EgMl*R#sj%vTRgYMcL@`lJeo@rR5{a%gW2kN0yH&uP7fqvSj4&k)DpKN`#th&T^MSqXbnYIX)f_#}bif%cO8)xIU4){uD(l6p4p5 z8Ifg+C($r0WLfJr(in;~g&Q>qnLKp_Z0tBDj=>9}dP7u}I6pU?Li9Bu^@Y zDwWAqGcAW~>8D)c%UkLrQB{^zGbhJl(HKP8!mIqMu=R_=^@|A}2rLXIrV#J6P)mb} z-Nu>~E3^5Cnvh@Rj3~JZ)h`Yvq(9b)EwqFh3)MA+d+RV6|NH5um8u&nvH{J}cp?}J z*N0mYLF7kMu!$}@Fbk6d41IJ-I5s30jRo6U8p5&0rsz`b(Z~2N2{pBagVDA`FxnW5 zg<2MdsZ4&heuLCbq$L>G-GmPg9jg2X8FvJ>%Pf6elvv_}gNa4qV12YD5sI{gW5Gx~ z7;bJ&EY}p~e~%RUKtPT<@~f2if<#ziBht^^_B6n_ZTg3dMtF=Eg`^o-QC>C*8BkIo zL2UaQ;-fF|xrh7Qr9SrvpS#TGF88@d`rM;@Zk0Hm+4Q9jGA1x!>o2{2bQqg|)e_>t zXmccy2saF*)P|}SVMf==!9g9~#y3zq-T1RKpTL)OxXQV6V`0??8-k6oX!95wemCPk zZ=QW(7#ldk_^W<6hSs-8^{R$ocv*e8RRp7MXO_yQH#k>6vF$jwjtN$^B*L*+TPu|qtXm$On20qEnW(GM7Eub0^XO|PPdyz5 zO-QYb5i=oPnb;t$Jez) zW6eZBI-4UcAt|#Q={w9z-;`OCA$MmsLGl@mH5 zFsH_&@1f!ea2i~Gm85T0m1J;Mq!ppp6pe>f1@CA4+gcX4M3=S%+?o&5Fszx-=O zMvQN0h}rVUIZqmf)QjpBLL^>;5NMjXh=v_#O~h&<=Z6DLk$3`TvR0{$)+`Fe!VObm z;czvN14zi4aAImW5kT@c1ti`onKJ|$!u1o|VzKGr=0G$)DXgNHg>PIXDR+9JaW6%U z#5ApKVOS?=$JSY9vJwwO;^URvj4(Y5)JrDkw6xKs1I_WeNFvZ2YHekPTGb+x`#^nD zI24<}<5;+vd6r7R6b8xZA?C5mWbxM4+7L>FXT`!xR5_`EbY@#(W~1b~fP6MLOLtJy zR5L|uCaT!--W1t*sS{mbNo5ylaZ9zSNd+-AFsn`Kf*OdoHboLDt)+o@I3ek$-qeHI zs7bn%>4eBa^^l5E{9Sj3TDE@iKrFP>)TO1PbQFD{ttA#-NRtT1WL>GGPM-PsFuN{2 z;ds(cLi2_9uY+UZxU^4F98mM`eDpMEwFFls-WqMC!efi4#zM<;uOnEuyX)uK6aaO` zI1pgIFe%KMCc1olOM`ugv|88_XbCT^37?lQKPnk;scMlmxn7NHu9?>8DNEJd{l{CU z&O}_ws=zE$9z?88j5e{Dl14$Ls*124QjzfqA^MMQ&Uwm-MINJf zG!~yfT(7+hf5nD|lH5G#RN>}2+gN7HWXvRz5}6TRIqfI)6bLT03IrVw8fe6!ZmCA;2Q#cV0 z%!oAUA;$33r9RP}x0uHi$gEg&VJy@?p-J_OCiSR5MZ2 z5Z-FsQ{7mt*#f7F=0RI&P%0fPf^q3%VN@+MRC#Mcl?xjG zoJ6Bqdgr2VYl+lH8+4nBwY7w+!&a)wpQBtXQM2R5=Mi?4BpO%XVEOt38u|r zt-eF~%aoad(=#8rXkw_l?^pn78=U_Mb9_LzcGF9zG(~9!`jNIH zC#xD5h}|L#gwNBp<~H%%^-t9#$#*4BCey&FgKTsn{|HfNJ5zFs{*G=Wt|tI`D4Kkp z9&7_BZDWb}8EAe2VRV|xVr8I+rE{Z^mNZ$#;v-x7GVkxGhNh;rHH#yywK7*=&ZQKm zZb|8eXZ3ehgP;`Vlh|&^-7Zx=Da~-G*=Y3@VL<&e*Koy3?sU8T(Uq(ThI}QXb&coF zx1tKSM(Y>VMw)e$S>jXaO%TYWR^=}I``?dm3b)J=M=m;<2N*(@ILrFws>N8STbauoGKc$X%od|R^ElDmwA*cQmz^E4Ca2Y?S_lNj8O3hScvU)?l22|~Vt4$qg;#QM$r5){k7;2% z5rF{Grd0EI&~dM$q$*2Bw`{@Kcx zoZ(eeI$b+Ek5tQk5-f|99O<<3T92kl@#jycCQ-8@BCz`7!{_Ss+wsGwo!tGr!{?T$ zN65d3n)^&-1`J7-__Tc1I{Oc>MD~w(-yYIG^ymIn*j#9~<|d$SxBG22@W!KI7X@@AJyZL6^PE*r);Qxb#2wkMl< zn?KXMT>qJ;YD&AmJ7s)T_2fz3esayJRkLQv1O2PC7R%ojq%Hrw#>xyWE@d2S2{nhu z^*e5Ozmo!P`|aP9I8k`m^6kG+yNfjA%Ko9|RtaF!)Bn7-sDyCcAyjp^ZT$U@)r1!q z`Y%-eqe=@beO*n2e2(oGlo=Eyb*z+>{(Z@W9~)<)*~*H4 znCoSOq@b1mwKNy00kf^6_Cl2^x-HS#mf&c>!XSI4N~EUHA7kR%iv%j)AalAn>V2K8 z+V#$(a&misSesdb7MvPl54}G}!ex$sH#7l>$vpo9nN= zRfA0Sx9u;~mQZ_awmn(JsNFA*HtLn6 z{-MT+O3nvvZ7dGV?e#TP zIW@9?Gm~4=nk$_t>p-b|OKaN4%zC!)QIH12k2M806@|9yg2=@m*(y8cg^ZUwG43sE zZkmkJzBL?pIKI&tmhjBQxHtNqCHwEFeNV%4BB-^YS22Ioo}5|4dy!YQ2Q3iCEYatz(me{drbpK=^W+*V$qGZ&}pW+kKCRz8wOHkmzo zQQk`cD=%pYZ5+RJ`HPZB{4G6cP$JsOOVM-28ab*bfs%ffA4^r#1s?zAXhWOqWm-(XH~*ziqJb}9MU@?xT` z7~1e?snpNrw+>a%VxCz2wA68=MV|rDA@#paZ!DZ>lk{48)d~n={o|-N*zI|=`a$&%(c)IyR zfJ#``jQ|yQFPlFlK#Se}Tr2{V0B(M?02PvypBtYDRD4~2N}v`8?0Tcv6{x8!T>e_1 zrg{>S>#qfDc7H8!)BN51B7nuy<);O3T6nkqLviKjx+B`{=2rw1AzZfzDBQht=~Nag z0afgkHv&l*y6Hh6iQ7$&7D)0a<>%G67Et~Gy>#fxVkNMOz4(>DN^&cKRqXcH;uL}9 zaZPI9T3~rzDkeAm2rTh(<5vR9YtK!QM$x#2Q!<0Y%DdtLnz8F1=yPA-b6@0h&-J2SP0vuD|4{wF%|8dMB}9^YoVZs%!e5^eHuglrec;V#)W0E{MR(f}Ge3=EbM<3>(yhqRaOA_qH&tzJ(l9DJJ zwL&|;vgfB0(ZyUU!>g^ky zn-}rhjv4fWjn3T|>;D?|UO(LEoP&{Pz3$RjZm`~<4gU?FdtH+IpdV@4W>A&Cl-vxI zuoQjlzKzaJm?tp*#2oOmjm{WM9p-+_>zG~d-{_oxnTA|J z%oCV@Vh;EfX~5KBuEyMtc^$Lsqr{JyjX584JLWk|C+4unh#zw<=32}nn7?Cs|C;zQ zXJNjI`7!2Cn5~$8zaf514099a3Cuq+2Ru&vm^#eWnENrWV|M*5@ndFV&d1!2c@EQw zIqZpz&dHbt%vG4=4rt%sP)7#U`yTRQikxHQjD2%6lltV)uD#OQ?EZk=|FF+39yJ2P$Jmiln;Y@1O(W8*%~q%WoXWXq7OkOzp-?Bd{ zr;MxROo1etUjgTfnLON#a7sV;uJe)eT(i|bqvxKW6l!TF@8$IY zy&b`O4oajcw%PQ>S@iu`_23!LNnHGU#>BNdZ{GCr`L}T&^@mj6=ivV0`yRZxCxug^ z&w@0E7Kdxq+*Tg)CWR8<##0_mq}5YN>O7^|m$DA!;hzrYDc{uju&`HrRf0I&JxPsi z%Ef{HB-hOPM3SqDSGw978#(?a9N6ec@|)2n?`-JJ0&jUCzHx(D;?Zx||uuYkOO-F6V8`>j!l?KkC!vY~uUm*MGUoS-4M^^QA*| z7@^H)_T9V7sq5Y4^gp`G`QhPR&X|5(PQ{nHoZs^-A8k+hA4A%O*EQgM1OMmZwdp^V z@10*#+~xcN{62YCXYo{fR5N~*v2rp|iIS8Psa8J~UR>?dJnMdL*MH%~x`kPJA6{Ie zH2R)<7s%Yyh84sHwZ7D8s?IONWFgS#^TXe zskbFPw|b=|VDOp8g;I>1`a3q+-dN}sOa6l$;jp;sN$mM`upvL$QN z)1aMhdulN4&&Mt)ygs;Z`8DuDtxQmCe{PWeoMFe+i%*|$wdrqIJl*WLrp9R7BmC6{ zq!-^rwL|R1SIY(mueRBZNW;eVr-sFo)ef!7bW#)^z4kxd>_giiR$pc5bt|>LUVX;l z-^ygsrZ>(Zap|~r{u^IhrK;AZKfai`8vW7MZ+!8jsD9${7Mm?E_^BOXk3T0F@b~!X z{$k5BzIe9T;Z5b|g`c2yjBWdkFQz;*>=?WIiL?jV5!Lq*c|4QpGwq0a>7T4t0ABo) z)Q+f^-Ws#x?C}<&eyAS81<=k_|2dEZyMoKkSP&&czejsFwiPZxAKTjq5+6VK^#R%6D^?{cohti$Y%-(mHh z`83q!jH>H$uEyMlc?EOg!Y-#B)0yaUUIf=0`_x6upD+&Q-bj}-|J*L8esPy`U{ja# zAf|6~m-95{oEG?CIx#b%UCz0f!&7=haaXY*5%xZ*(KiP%)`8d*^T&ST$E}? zFV*h(U_0h+OebdavM%Q~%sR~3%kjg!fa%0cKA$-r<~qz{nB6bva!$oui+KpM>xEs; z0L%~j8r zx$vqk=T*$NuV$Wk4f(?Cv%1T<1@k^;$k)1@8q7_YcQLa%wCVlzF6T7NQp|TTPhy7P z_s&g}%gxj?X6SdjoUdbgeXq-T8FT6_UCysCKe-kAZPe}U#Em)i2VKsinD;Qlen|Vn zT#8wX*>+c#vmKlSo{M<^^9lyNR?0wAz`CA!l3ms3Y0oMcF_@{d9uahhEFd0Fe?T`# zy&8a91=O-q&wdnNqERz&>o5b;Z+=caVLrk1`bC#>G-ecLCT1b#63n+S_hQyy-ok9c z?DxwqrxoD6f2mFTkQcvT_ zOX9lNDDoe?1`XyF%*U8LUhi^_!i>bsz%*hm#@vAUDdtJctC)XbcKs`P#60>>+7jj? z%r5J@oP#ifFqN1&n3RFXIP7>89I%iJ&piF-K;v)qUtz2LDxO3b&u0Mwu z_3I7ln7ljQtGf&sU2J^%b{22EWOk*_tJ(RF%g=7qXG%QJ($eR}&o-O4-_IqNibFbo zvk{+#e_H-fT_hh=O6O+|5*U8z{_`j`?`O|1dHEGhrWYhFe^$|{i`O!$v=%=ep&ume zA296X-c-+`bjBA zX%f80qh5?j%}z3@vRit$eMa1amQp}mrnV@JCiy`ceM>C8c)vZJp5}pk;dogr zp*M>CBq?sUec17hbBPgo|J?|-H2GINPBlM{GfEs>X_$Kl@E9FiQvcHjLv0`CSZK~v zrsYr0jdH<8N+MHolxc4 z)!%;TmO0vy*>_JW-(>kFheD+d3J-tG+HK{F+kQDB+|-~d-*j+}?dM=IK(k4Te~guH zshqN;B7Jdy=t#>O(8) zL@+HNW%gy|hkgGdjovr^qb12yGOHpzz5XeGkBGL-d;c;M_L7`pOYff-CgtBmt+`~F zJp}>>YHpriRn4z}roFpD`&7aSK%W33+Ku74=aRa`5ae>jfGY%-^`_Mapbbu%b7C!Le2JbPOC zdGsn!`ugf3Z}CKk@tRd-Qu)kcPO`(rv#a4}-$y+qoqy6sS~$GJ5ox}G>a6_L{y}VE zeCJ|F>tDsXf5?c*Zeq~aTurJx2%7W}PM=RJPL>a$767M<*Rs6}6>G~M+Vo`FSB>Mr{o+RI8%4u^S2-y3}-SSD9Kdbp^j@$w*KbYZ&qcrW+(*Y@1a-18eSAuue@OcM98=xD{q^-Kp>b#pWJ?Q;9LcmK7J*qU(uVCWQMf%?R$|dt^cO#hXU#SFFE~Q;B0wF zt6$#mjMhh3cybh2v}ayZ%b0=m_LrQ0H~x&Y@-V&sr@knc*8Y8o3Tn-dNNN*phFSh#TXOiJ5 zD4l2IoukR|i2{}=Q*~z4_V$rwXZ3zII@fUcmk|lUoSPR(Jv7z5VQb=~6t^Ie2?0Ufm`V z;QCp6Fy1=|AJA3nyO}a~zL`Y(@0}gbzA87cb7+2seswV(P#Kgqs9U@2Cr{@)0p@;w zT~fK@vG=@q$MhA?323H-uarand&=#319b#FcYNpz+l%{=QIm8q!EPI=Omo9EUs+g=c0g&1^|NG0O`042F*h2WeUc1S8^(f8rClj*sE}xRwuclZ(pE6wI zd!?J4NL)Ji_}D`EFwXczatb>VKUKe!tlt6AB1*Vv= zm~n9-sB-Z^96s0L+Rx7+-jtUT9rbynJQb2i#@aF92i6q9P3GJo|# zOjbvswVQ7kMWSttgxrs`C>CuI-J(jr@(y&pyxIBstJ=)^%Vy_c%#yX6owqR4{=C`w z8RoE8Haiz#-p5GTei+3-tG>Z&-LHtoi+YE<%T@shPVIdect8y)UhXZyo{pVzj?)wGuVM=+lyYZL%yTn?QWa9&rmpTOQ&ThP@QmK&84r4T2Om1h#xn(BWLSIrrtJw?Fqi1qox* z*Pjz>;zV)UY+yJ1=SjT6*oDPH)p|&Q1KUd4HOsP(NE9 zgM->_(`(Pe+WgBheE<(_c`7#~);%ydSO?t2TV-&^;c6xJ)c9gxTQ zCE;1gL;G5E=CKHBMAb#k}hYwO4tbhIr=N6ywG;i^Oy2muxo3Y!Upjc#Xr70z+Pi_H*-)li7lkcd^$ zsIQe6e`P0tdmP*>;3W>xlj&UAxAo+yylx_B-oO*9dD%{^`n^A~=~sNjCX>4q4MfiJ zmQNBT=^x}<5V^zq$Dw1!F@mdliNt4cxR&=yd0?{;iQ9UN#7!0=amf?^e1XfnmKcef zJfUMzufEEuyxOR@3_%%SrB>ebCFva!@?AHMaO?h^C0}XdvRsJben||{EOh?+160c` zesPO47xQ(@lbB7IK`(7_=3~BzS%c}u4Ey62rylby%<~urGvZHMoQ0V0U|z)R_VN~I z6lO8z7EJMXczvc;)+b&J#IwJpx!f8F9t_}dmI^p7phwU~!6Os3SQk$8Kbi8`M^ zQ;kP2Jot{PKErdtEw%rD$SHp}<1LUHnbDZ`kYC^B&3}Ai+Uvn`iL=};mZzPl*1;jn z#eC6G!<<%Hc=B(ucKG$%J*Gd;qTiN9m|7q1tPXvdN&gqc9liJO z>z}Q9aMWXDp1r3Wt;pl=%O9%(86(uqQ`k6kX8t$3m31ny=qH69T?rHKzl|TGXmltSw zHV2r zratQviWgvHZ#{iJZlxdF%L|{ZmNL0_q0+VaEEBccwjbFh*|`k(`1{(Al)t_+ zqdMHU6Wzd##n*p5{<9+s7xh2{zWIg6e`ag$TArMF{p}{)STdyFY{JvccE0%svh(MQ zi1H@yPQK-po&RL{pv_M6&(MD4hCwkq|8f*{kYWBKlXoTKa;Lr^@#deOO8b$tb9g4t z;8I}w*%AHN@QP6d-Vgo7zpv_V-@f%{oHKA-6eqVl<}O`1ESFhArpAz&fBvaQq5OUF zQPN-4n7?Zl%07^hfBvqybNusn&4T&+`oENqUN{yoK`11W@w&S0_$2&w&&VaX3Sn%T z(e!lwdY_cZaX2PlQOqNR^TcJ}?~%J6BK7jx30yh+WWGb|e?L?5mmL4}_`;p*C%*X! zYStbd-UGh%i=V~eJOMS-qZ2^1>6rR+*PkzYyp2KAv;?47lZ(-6u8-Mu# zN$!#$w!T(t91d;gZ{HZJ)3zr-)&XBB&{9I)H@JoYjD zvyHnB_`XgvpY?9gmmX*ho$X(odL!x(U$+e=y#ZY8AAk9-EZ>1tOVd2%Q(zPFtzQg( zS^i2L?|dA-`ZfF~a>_5y09s)BeeyNT{3L(lFOauXoxMM%_?Y5gj6LuOmltqfMzkr& zmZ_}p+?JHt(oa9;`zrD_dGU}WE~w$;U_fq0#~J#Da7^xBRo^6W(_wZ)a&hqKA5{71 zi@1Ach3cDsrtr_*dkU+B!6yHamim}_zi}A-MBBXj$WfB^eLGcKiD+zoh||eQzcl~2 z`B1D0ljhGWb4ldx{ogMChRBkf{=9OS?EfY0sC4PW=Ouf)_cOcxYFFJ0l1AU8j?K9N z(*2d%CAFxPlH+^-HL~^gN_Yo)itBa6L3ew7VS+Z{+y?o<~a+iO6k=}?k z{D*0*^xnkMy@jTbwf)3{1Kjf2)zD`<4|js`C)-OSBI89Wq%cRNB4nru*LHvsh{~(njZvW3G|E2%x(?+#i zOp|Y;t$;4<8(%&C1>U`;lro{Pz{tp$`iOi`79>6)2v_aKFD7v$om$KjfV& z86oPKu=5phCfLnwaV~HRtHH)k<+<(nVCm}^lSo`#lP?M_VMCC~RMtBdCuvr8eIoUv z4n|dTFI%o9N+ES4th4c-7U>!OL6d&6y->=Ec~rr97gGEFsq|86pvhkP*Ai(8(jQUM zsOrYX8>lHa7wL$7>jw$*|J40AlTG<0-48THZh)IvcW#eVP=@(|;-6o`QCJIe`%g3) zYz!~;uG3PtJ#n)Y+aPu?TxT`)-`)?AfSx0t%kwd?`f7V^S1^^GJ6?~G=Av%|N(o{0 z;e&(vzG2_`T^0f8$@Kx0p4h~(>CK!P@BTV3-!^4B*(QILc6^bJ&=PGK;tD>~aBL=f zYfEKu5D}JO8DSV$e?Mjze~f;yfHhzNO~gcB*&JbH;Insby~+KLt?~w#x(3(`!~WC- z0``6Y?|emz97*>0WTn)+%uJ%Pm9OrJSVzLRNzm8$r1JBp;8^{jlGhj1t(^MKSQ#c7 zIq#7e<8o7@y`S2u=9UYKRTHrVAV;%VPdnZe5omSK0kj_C=r51FT-Eo1eGp~?ENjpLEe3% z`2>CP+O{t{|E;g*UTYJm5DD&+-!gvb^HFM)&!az@MCd%5Bzv0tq4<@XVAC>a`%^+6 zH*)(E-@BCJao=}SH;tuH2mJesl74kQsfUv9&Ii=|Qe7CInh1M;j9WjxDT}=y%zl5{ z&nJU^N0+~BQT4zi%l01|zo`c+p8WcA=|Ad)io(vI=I_K-f2O)aFsudN7ntE^n4hb+ zf_f@_zVS`+FYmg~?4jcye*LfIUyCf*DY>M(Roecs@UM#ZSnAW>FA)BGsIKQC$WXuf z!*@Ltg-^ao`lri>?rPfV&SiSP({+$xeWdu0kLA0*X);O4BRr{O-};+t$qG1LW$u8< z&poYv;V;Km^G~q~jl$Qz41W=9c{ZR5jG$U~1grmm{}&Js1;pW#&+ymcxsdUt0QUa# zh444uF{^6fbC$WAXCeIU{*-%Nxn9(>QW4jLAzHGswJe-tB1L>fPEb`6;``1 z>K@A=dL_9FB*Ilj=Z9l1qb!yT=ch9bweaUdzg3I?J=1|R z$OriI`c}`d&yxNgD<1#*5mG*dub*lNoo5k}q5l-Peky=D^?RJ|=au^W<9vPo@eB0x z4DC-otgMH&TpO%~CC@)Ulk!#km+*>)T#~-C&BW?oj+HA?y%Q55`~A5v6OvqC!pl%U z>O;~!)xv!9YstU)Hct zPr8O}A1&OCnRFgP?^G<8kHodL%9l;;hqZg;UcdkNeNg_3O~U7~YG-RFp6A{hw4+J) z2GKF1O-uAm!iC%`7j6!z8&RZObKV!?h9X@4`&#V%#KJZ=-(l`OMs5rR@Rtd&dyiG? znk~+>wOgEDaSzXH+{<$mW)yexe4o2{_T$+h+|ASY4tM@wj(BE^GYj(o<^xOv_xl|F ztVXe4jQxJ&en08C_*Ffp!`%bEZS3;gn%MK6-9GyP&t5mr_kCfD$?56 zI^DZ(b#Caj)tPZ{x;bE9@7bka-s&86&{h?%34BqP8J!Gr%bom!E1BY#O>Pxmd!-sEm z7ME^y?i{hz`FR=7AlPk{j31)TwveGXE_CBK9`QYeo=jdR!^Q1BHW4awNFZb(q zwqx!c*zN4szuOT$wb5F`Ef9EdOt*6|=9AKHN9>u*4@Y!6y#{qVzridW-0ch-((TMU zq1(A-Xt#65F!+{qJ8Li>@cfeD-Oea@4KMF@J{#HXTwamRbADO36OqFak_=H2s@%yd z*J?}N6h*CkBzl6{LgxB=w(0A+zF*y|&dZ|>Y9OIK?tMwOBW7@1c+Yx6QeB-8N_9 z$J?BXgWH{NbZv76Y~AJ@wr!j9qwU+A3TK-$WdH3>@e$jdlaAW%tO;y)VtZ_NMjf-= z*>c===UL+Z(u!_pI_B$`KVk-xmj9dPz)QQG2X5(hKD@QtS^WKU^YZQ9GYRJpb2H_3 z*N?~xrs&7r&S*?C<}den=C!-KoqceRH_zI@A0+up*xR7_GiEQsj>DXXxfAp8{h7@t zPtq?ilYZryWcS{W(dIDn?8#qeHmd!}B$jq@)A;Sq_zByc-_F_Y6g6&l{-H>f*Jydc5+D+e z2SS{QT7Et^H1erO-^UGz*Pb8OLtIb|dC6L}9eIDWw7l$p?EO)DzO-_#PI|*U@67O0 z6o^4}UYN~{=u+9$mbdH}xxL?>+FF@lem%6V&1Bc}zr^@^{CmsMykHgAv$l@W+&MEa zFnB@lVDN-izH`anpy2QmdtcPsPb2S44Nw=iLZJxI6$Y1$L7$m`u>3?=2;ct828uNn z=2fJY;4)$5CCF!U?+?#5PnC?tht)-6vFOtIDwj-X29#D%LnQ;p=n6M48;()OpBP<+ zdhNuXuSt0tT*_IOl!R1T*Dl&pIoCX}=PSlC5{BjIc-T&#PEsLkc&>)d__OCD=Cmy0 zggrNQdkoYGFH0ZHNF4~+?}i-n;g}p zY4o~%Ob9icA!MqNq&ASU(j9FaF4MwWNR3Hf)^RFx`zR}=eT+zJA1SRsaUNm#(ul?!vGc}y>nhsYzTZv(W!U?TA+J+1R;jhXjhis9g?O^$gEL6VO z{fFq%mSC;k>)|{nsvq@2jhX4%$+ju8WVlT`&>yPvYZIc&j9}#k6(v}uoK&-^<(lG| zOIrrijR{I*giH~|rd;ZVie@kDQe|#z@Q|3sss9V~`=(=pWu?K3k_5LKA<{f+DeqwU zR!ILWM1Gf;^6}aiu#)`#fZKy9zP9uhZ~T*L~q(nhWWKS zj=9_LdSgCgTltI0-xq2hB02v9jl+n2zt|qGrM8Y#wFi+-Y9z6eJyozLw-ft*;}>lo zBcy#4BEY?-kkNLeDPOOLs5=nkr8@ntrhG~~Bc*{#F&gA9VOi~Xqc3Hw zh6OY5hP;6{Ik`L9|H?}W>wi1izsiUAO#iayLo(E#E|}!P$Y6hJN9u2CWJy>rL~Vs# zz?fO3{Q5T#o|84t}*J5KqrTOw+u6I+LZn@c%pOOFnvG(b2o2p$(<7K&J6<`BShz%Ty zU~wBPe%VW2CwvFXzjSz^3n)`$s(aT&+hX;4Cj7<5`@;4KQue2_>GQa*B0*(^T8F9b zu|wY<=9(QlC&;qzp}#Yu_N~%)M5Rb_(hUp6^mm`K@1633UfO6yd1n4Y##8Lvp0j-N8n&^?}48=)!=fl37m4mXU;X?Lhv5&+u#deH~5j@Am|4K z0zV!MJ-8mM273*K9$X7v1MV>ldT=WE0@$YndT}G_89{`I0f7rCGnNuVDLk*8a(zy=)u##Yrx-t_kf3u zgC48|KLURV?#&`<}2S{Z-Uo=$5cWO-T}S<9y=a-a3Z+(Q0f>Q40eIl z;F1Z@gPXx?z|x7(gA2eH!1ut9z=lcCb4kzT;9&5c$HPxRvYvnn(5&R3-XLukmW;*oX zn_w+?@eJs}=uGIr6K6pW4mu5b@CtAvcz~9e>9vpEt^x(7Lr{Hz-K6Caj<2#1u zeCCvZQE(P`J=hAaTJV|E0k(%ebM6Drs{71&34FdDdT?9=^yPuTKf=(1pPUOl_}F6T z!EZJ}4}K7Z9z3NLdhq=7pa*{m?$3uJ-vvv+HF4;{gA>q$Q`?{ie-7RUUbqB$aMn`j z!O6>@AH{bnmO~F71tf0WSb&fj5Ay z;Co;PIBEs-;6ax{4_9q7TAz6<@>K;YC{p$E%vgC6_@Yz1HXA@tzYcR>$+^keA3 z-R^-NJpL!pkE6f*6ngL{;4JX(U@KViGw8wR9)KQv;z8)aH-8R27;Rt!?*li3FMS~`%mCt@bHhJ2M2rtJ$Uw~(1ZU5?*XTFLJ!`%1$ywPt~)cCZPYwjFwK-+x07-V^9_UI5<#KLSI$bUJ%areE*Y>6C!K1ZRO8i#nZF z@Sr_9oeuB;@ILV6UY*WMVDny`&Zppzy*r)#rvw6TgC*ejeV_*~1zW)<_JtlCy&v>o z-Tu&n|N1iY;Bf~)Kb7(WOTgHH(1U;I13fsbFZAHo4uT#$>R{->R}O(5tUj#M=`$@5 zcoHlF|8;n$QwuIXveQX`?}68WMMrl!4}w<)JDs)Q$YVO4&0xG=r*lXZ<$r9aQvpsp zzSB7yJQutW{9*r2=VtI-@KLaRK&SHt_{6|YXB*gXLZ@@YDU4r(I-RlLroqsIWkaC{ zpBe@|c;ayA!DXe;gL{@i58hY~{i)<@RHsu3j;ZK$7Jw5*cRDM;hsSg}w}Nv|>~tOn zFBseDybXRluG5jrch{cW=>)-3$3qW(IHA*N0PmR8>0AyTKBd#S1H2b}3Vdy9r}Hit zuIhAlpH4dmj{`qDrPG-N#;c(R-vTcO_nHAcc>PT1!N@%UC$@l^u2Yzr4^xzfqp$C7k0D5ph9rWOQ@G0=u z_0WTp8=#+soD4$`b~i!~mM(-IJSYM^_+9W0aLu{UgEdXigCBsqpT_-1EzpDCi9!z! zYlR-1c^>rOA7jvid&Z#$Zvo#0f0KZIHt{Wi9-Ofhdawm-0Drd(dT`uw=)uPGp$G4| z5PI+*;O;ey9~VOp?s*CH;E%xu@VOPxgX6vmJ$U|Q(1Sk%-vx^=hrX6`IafjtuD%9( z@R-%mgX6yjJ^19;p$E5uPl2<)0X_IWxceOP|4rz@o3Dc&EV&+f@T?o42jBk|^x*k7 zLJ!{bZRo)xz61T~$OZ5?@a3DK2d8`wdhm7da&Wg>p$ETq8}wkm+o1<1d>{HV=pT1L z51x4^^x(1|Ko4&HA@pG5UC@J9{0Mq*&%2=q&jNQpGZ1(cJPzD=5Ak@BJe42CHOA*BXIYx(7x`49-IbF0)GrPfJfd3J$N&C2ly!X6gco9=)qIK-OmaH z>K}$4EPn)gu-|W?2R{NY2Ln$+53T^80v+&O@aU(YpG!M_8hY?4a1!_~*Z`Ki2t9bu z%g}>|u7w`F5quYX2;BW_%Hx{!SjRAgQxa`9()MA1N_<1b<($!MO*#YxoA|1@Kw$BXC;j250XO z?E)MOc7xU6=n)&7CU7Iz0nRVq;5-Pv39beI4Q>QuBR4pG>H>kUjN0Iofvf`_v;}$3PFh1J;5+IT3nrpRv$`YrzM>LF1qYmrjBn z>@yAe2GTPFda!&Z^x!-&0e(0OdN5K0J@{xn^x(Y>(1S05eZt7OF!W#)tOX;D(1Sk* zuLJ)9J_wFm2tC*eZWMp8Pb1BH5%gd~1bT3f<_*p=aBj;6=SIQvHaL%hv*H_^H^AwM z4bC=j)$$F_5ew<37j1CHg4cs*gMBXE;9Llnfj5KuT>?GW2)+T{0d51I29H=oeXoEX z{OhIAgJ*pedhmSkW^m+X(1Weu8{qfAZQ!w&Lmxr@f@8tcuZA963SJ0)4&DqNv2f**lrgZte8J$T-?pa(C!5qj_!;2Yq(;5IPwZRi)%ufVb3 zUN=Dx4g@ch=ih-I9Q~$OT;C%3A@M-W- zaG%?u2TudHfiduiX4b!VKo6dLC-mU!KZG9q%3aWd=lv9V@FnmKu=l;tgB9QrEvys4 zv0(4}pa+}43&F)dhaN2bCG_CI4?z!Z0k?r`ABH|kdwmvq@Sot>;E~Tk57vPogBOD5yaGM=B={&e{#EF~zk=Jq@ZX?6k8*ei zdT{gy8=M8;7H|dl-48c7w}SouxxslHd~p2+=WTH5N64L6An;T0IPev45?K5%z41pXOp0MGn4atpizybJsUdordnN*bH^9N*fd_7Ms=*UMx%&AL@EY)S@E-85eKtBTfD`&|bUp%G58CML-4+OZ z0~`!?9t=I$`%vh??}FEWPag(7_|j3(gRRFv5B>?@igKs_r{e{RO zunZjjF!bQ}z=Yr<(1WM`3VQGXa4op&W6*=IfqgDQ-v0)Au;{nYgKvNd@Gnn65AO9e z^x%2mTJU{vBRFpj^cT~ApMf6i|19+2InP5c_!{(J2lybk8C(lCzYaaP|6ifMg!MF7 z29EeU^x%*G0X=xkd(eYl`4oC^6}T20`Wf`#AHhB=Xt!O^gU@~rJ@^Tj0FT)OJ$M!P zAov`(7TmfSdhmv=&|ivN-3C4Q<$psD{=|VEygbn5TnA3stIK&1Tn4TMKL$5~^}V~C zK3`?r`cjuu2L1%B1^e#Zcq8~c z_z>9dFzCSwa5MOI@Q`-ag@;2AjswpG=Yz|@OTin#?}HD4TftYsBaVO`ECmm_g7O6` zz`MaS!M_|0J-BNSdhncMpa)lguY%8mo59t`LVqRg@HptfZtzU-$m5|0PX=!UL*PT; zW#Fseo#1Bhm}2NxQr-ig2bY0of)5VraxMfN@MiHJ+~qt9?m48(c>|mSZUYY=+T{eV zqJMyu;0@pca0|EsJaJf;b1V2*Ntg3DxVfy$c^ka5yvqq(&G<4Bdhi3V61;L0^x)6I z72w08p$C6B7J6{RIOxHzp9K9X_9sq;9=vHh^x%?-(1X{2E5LP=pa-iaLl1rqz758v z{2%t-20qSd>;JwwN!wJ@O54yP>T0Dghzbp=f~iJdw1^6=HW(EYEkRHOgH($kG^Gdz zL1`R8ya%INig1FIqK-jIIpyT7&7@6T|KBxxtv%P?cXsOB_wzje`#c}{d{|xkyVlx! zul;hp&J6rZaosQ({*Z4&`XP6p0)NOurokWbGsqC+u<7uJ+;$@TA)h}9{&(QK7SeX* z4ERGvPk}#V-l_0+%OOLM!%u@hz zx$rN;arZpm?Oox0PG6(Xo z1@MRb;?gb7639N6ZE;pWo(Q=XGXL@|&L+t5#ao=Ddn{}J>$W(fA^VqZai&1dfSd>U z;2rRXeC-wZLoRuBi&F==1#&awuC-g72XBOo76WX1Hkl!EM?ktDAU{bsDDrD!>c4s~0 zT_?0VQOJHLwL3%Z#W>A?Kjb|#;SV`t4*Vhib|(BG51$Kv$nd%Fhy3*d_(P^%4FCJE z4vXLq`RhXXLtcJ0{2^an1b@hs3iv}Vdj|fHLs!Bd@|ic`zZ~=R8~8&G{ssP!S?%zL zyf!)NEQdU;U(|UOa`~Q7XFcRY2S%MJG5%(w>rkmIj~Kjb%%wUGHYM4bra^TDWNJ%r=-O;N{&ymm>{@k5?_d(XO@vgh4VrxNmK$kmX;?uj~$kS9SVK8)i%WIAMWdDO{)ynGq_A)Vz>X9?u@_eY%- zkXJnrb=E>Y54j0)KtXQNIPWY+Uh zryg?m7otuR)Jg!oNp( z0`f7)TF5KLz#p;>vJ>)%gW&%(?ju8HLk`M>KV%TH81gsB3dq?9!yoc}$PJKLhrl25 zQOLAsu+NW$KjgKL`H-6+iy=?VfokApwtX2=bY_a6a&$ob>pUxnu}klB!L9SMKPHQDfotUC(+kdGV?e@fkUty?f5`Hj4krltGGqwy7sxQ=nB(w03Xs{8Ivne7I4&ID z;n4&)KH;rk#Ut07AuKZUG>Ot>BXkcE(qt}KQB3-G@K{*cE* z=0Nti6aJ9XAxj{W?}9(11GyUVhBEj=E`v;b5&6Hn!x;^EJLD9|eU^4O^C0UWmq5-f z?{HQ?z6QA#@`n35oJ}r=Osc_s&j;WSne!n0A!kF*hb)FHg`8Q@;Z(UgWF6#o$jy*@ zJ=EbOzl3!MnE_e-FutP!vj3y-hwSkf{2}uy;SYH`WF6#-keeZYf=qrH`@|FQhdkm* z_(RTyoDX^2`|yXn6W`ZS1-TZo4st8xX2@$lfd4C4Cy*JC&(^^oa-Wak4|zmA{2^CD zRzZ&X6#kG?AvZ(b0h#;64;1Agk z-#3!{8m`|UGa#J^{2>qf0sfE;kfo5v{Rn@^(;MLrxdw7GH2L>${V<^{M9xm6Y|n;wmG?w z;~n@z?%IF5QwG_`-tN>uE8Uc7XN zvk-F16FZ#ckRPqw;k*htxN3*99&#>Z6mspeJDjvPai0FS9Zoi68)QD@=;wDh#gJdT zvcm~MKKj}YXEo${$VN!(^&L*)TR84RrbC7xb0EWz1(0{YyTd7gdL$jr~+4>C~ zqI_x3Zu$@I?`7^^C-@BT35NR9d^pa5oAR3tZud6F&j&vQ+!VhU{1k9g{0eX@$sE5H zd?2_f{s!=|;HLPU;E`_PrzPM%RX6do!3Xs*$Ik~3gPZ18G5BZTruJ8Ww{{c17Cf|z zIsOLl7r;&NJHbB(H{~ZS5$BJ6&GECr?*TW(&j)`I+!VhUJdkXTUjcp@xG8=u_)>6F z{0-p#e&+a{;4{EY@zZ)@{)3z1XM@}Q&GGZW4*@sDF9tsae6Dx>dG?nI@MYlRz5I&! z{!k149QYV7zaY*xfWHZTv6uUVfxCZng7@9E*_qP=3h!SDr^)>#tryNKQktESUjMV> z@w36FgJ0$4zRO|;Zv1@k$H9&JKe%r|H~T+v-X&M8^9g#JH6a@t88B< z_=17W&dmzHUh=fwcpe09YJWEPL4(Zg&nI50#9u7q7lS_t|B+tq$!`Vtqu@7sxlbG* zV*5Y1FSXgZN#WPY_#40rz)ka~6a0E`)BH)pak>B<7b06gPZb`51zZ5IX}h3 zM=SGhUpfCOz-R4l9^YE<)4_kmJ|3UH8+~pA-TZ6--*=B@=R&3Z=gRhXf-e9++RLww zVarBYS|405fH!#gaW^OUK8)M=VRPi3&CV5G8(*O?aAV-V0@#$o=5Vi#SSB%E0{%Go zXfHoUgmC>U!B>Kt#&I?H8gSD%HiCZ+ZW_nLU2q>|uV&{gZ~ea6u?D#Hr-NSw?*3cm zd1kzQIpCLr&+~Gh=s>Lh;BSDRqwq6j{1Wg#z$+F0h~$;vH>EW@A%#CE`D$?A-px+4 z!Z%Ca2>v;Eox@Y5vE0ly9WA%!oOya2qn-Rvw> z_~nw9fS(2arNTdxyb^r(Va?70g~!i>SA(Ae{)@sJrGF!M#&C1{6O(cO1AK|%f3x&Y z2md>`={S`GK44!Q=ahAvE!S}Y_#x@d&a+DV6*7Ja_}kz`3cp11O7KA=nw`PQIv*(4 z`D*Z8Mw#=|2tE`1YbE|V89%Wf+CRG4IZxqYBOZdXbnuzr_j)=0?apmK*r#A0d71A$ z89M-8yr20P90dOme1YO0AKMW4;Qh_Vh%orx;9Hg4H_O~dz*`S!cD5<;x5)OnUpV%0 zMzga{;q{W+;5QxE>|CnEpD*M4!9O3<>|Cb!i;E~XKLPL&2Q@oSD*lg3{~-9vOuW;L za}l|>B=qj-Ho)}{f!}v%v-61({{z{+F!*tYH9KD@{8Pyz;M>9TaIPDVe^LU+w|2!b ze7t#YvcWF{&s5rffNZ}X{H7zDouj<&-JK8+|tQ5RE5B|Oqf0c}HgI6A-9Rq!Tm)s9N%irv5 zQT&@E4}c#yq1mZb_$!hJ!9M`s+skLguo!>v_rOhSHw+#;w%Nh0r1<#yUY7AA;CoGM zcKR#h-zPr)18{F@lKI$agAWG3TZvyP+d^W)*k^s0eptSPmtUih+`l4cMAVnavS{UDb3F1%HDgi+!C#!#>_ipb zDtQF__UYzhlQjtI?}TP2sQ6zi{cZ5%6R|(yS~0$V)F-+IZu|Y<@62d+ZdcatEpq(^ zz%%m9=YB!(iQqRX^~cZgL*SL*dn@yIh@8J+@JI1kx=~*Lxv}QQ+7|&|0X|D<-zlDdixM>4)2JbYHOGelV*gXH=MfWLZnvvaM& zuarCpKBxfKFiL(l%KU`DzXg9?;V(%Z2EPiQW&B<_er}M*&j|Rqi_HG+7czbZK38eq z8M1vgcug$p*jCS@IIH~vs+64&X@fQfu9O~sF%~_ zmAn4J;1`0QsI-5oY<~oN`Q^>d0}5XzxiuK~5U(`vA2#@};HG;Je(;~J!aW2f{`E3` z0DS5-=4-bg_&MO2-u_(_>%Q3kz%K`%>*bz%L}Bokz;9A`{2o9AeDJmA^GgdSxCP+9 zEBo6oa(}bI4+)yjKmFk2z?V%arz&$?*+>F9m;G;SWn5 z0^j}iW+%tXZ;0n73_c#*bnO}ezZ(2nufOj~8Qn|$yb@TV02$E1HT_(v7Z&Lc|w56Jo}z>j~( zeC}Qgz8rk4GWW*Fxwip)9veEr`#;g_+@{pONY!@y1VWop511)rwmf0E4q2Jo6!o1OQ(@qO>e_H}~Key!Pg zSn!T3(FW`PJ7b%X-kuZ3l_s!Qg z5%B%jn)gV{#=98c`zifPm;JNBZ~MS}ed7n;@}c?qCIFuNQM2=ng+G4A^=IgL|;HP}m^*FeBTmpX2*WKr_3O0@3nAdt8_)p-bYr)On3EzUFJ~`G4<9$fp z7w0#qV|`h&UtI`HZr zF_#tp+ok_zaC;->p~5edJUJcLl0TW_XMmUgY>q!2Jn@&VxjV-5!Ha%vc5d<3@2-{N zSQBFNs0=n={L_5BRSoWbcSw>qMnZz@Lp}KGznS~k1U}$j<}pecfgFRIjt7}8Z!(Wj zF8EK)&CX9s`@Wa$D+I4^Cjw&0lT^>=er9?ww?Y_8jid!AmKgqLL<4d6qf zUDx3rbKAf#>A?3a;oou{`0kQ>UMe0){|Ii{kFvmj+h*R6^1x5;H19`6;7@>?a$N56 z9bNB7Zu@J%dpqX%4dADMo7&$7eumXz+)q<+Gwp*OEzSYn{G1oxC$hjBz}I@Y?_HU{ zJn&*4zK2EO@%$EnH-Q`b@A8C}F8AYD|G{VUY%xAhZUDak+_Vq2f#1@r#ko&u-#xPZ zsiSc`0XMZT%jLaWjQdm`cy1qa`-;HN2hZz;2JksS!b$R)x*Yt$U0aOTMK$1irkLB; z;PL_H{I!7>WgIWuD)8;NO6o z&MAw)8`D~h_sq+|Pa0~DUjzOwxM_YixO|^(#vgpdFmrxWvGB9OP3t2I{6%n6{dq1Q zZeAZn;JwoEJxI#<#oy~J2ltIYeDD046W@Poh@0-|H-L{H*XPEQf;PL~_`ELWidyIL1OvS_6za3=mUl#Zp@GF(}T`Jq32fkM(>QC_I?_&AP zrU?Avu`Nz(qL=?J@41$PPZ-zD{0Dyt+%*3hTz*71^B;Whk>>uTj=|?+z)kZj3;eun zbNlkZzXmt$FGb*u_&zVw^-MW0HQ=kkP4OGRKk=L6w}Fp8)*L_eAdEk_DZg1R zpJ>i+9(c-e=KZ4xd@;Bwe!0shndff}_}7!o?QZ}-af*3;w}H=`YTkcS@i1Z)z8}qW z{*ncL*fewd^ISgNoS!1_>4f){2}9i z>E8ezI3M2=snox#tiKIBZ(d86_if$$rs82z4Y(S^%Fy}9i_(-MxVY2=r@ICPT zgr@lA;0wWRZ~r{wQ$u`u9~j8-ncT-sfZP5C@XE{aeU!@a^(uLMZ3DL!wiw^JOU1+H z6TnUF%L1U{@YL(Nng8IsfuF0K zKL+IaV-fi58(N%al=eL#+gA?Wi0^}(=sp0H<9qZF9^V@9-uJgS(-r^8(!T+G>;u>z zmGMuGk3V?&!!5>lDpGM__!fAE5`UD8p9TKmBQ4HbJ-zLFO+Hu41E2Rqi-TnrZ@<`{ zV&hi?el7TMUhebD{FZ}5%unh#9G|OOoHG@Ey5w2lU)13Er^G)&#?J#!dIjHStDOH{6hHq3pY?i+ z^MlgA*dw7>e#*i3ti}GN|Yjm<{GSjB|m$~{N%a(gBIr=#s7|&zl}PJz#sdl#d*+Mzk5IZ z?)Vo+JEi6s-pz2j0`$#woau7>x}>EYF>89rZ27XESNo zpc=r3dF${T=d;1rft&WpeDJJK&HH3A@ulAQzB}bQr~rQo{#}ie+s9h)HQ;Y}{oOo1 zAJ0PsHu;~mI2S2%<-FKjaoybUPCOEyzxdqTk92TfgSj6$#EZP`@QIf&-1r6Hr@{Yc zh5sP?SpvTII&=M%;Kks!*WYuzSxx*DFZZ1&<2Qmo2Y;j@K36=)o5XC~?*um;Z_>fP z1P^%qeWC$w|8l?we_@^{1>i%#*D3z>vVA4sAA_$~_~(*Wf-l1NyVfZ@{`rm7;0Lca zx33ZWQt5P=W`|Ct9~`F^-A!sz`I)OX=w9m@bAG**VB#QCv3*~p0XcZEBCWREU;&P zZ*fjZK`?o|Ju$^ifEzy@Jn{$bS19@UUFIhT{6(jm@dvK~H|-N8;DfAI$M(ke%{5SYdSNLSf8^QPJ(Q2IEiO1l38Ng>N{-;X+bnvsmO~>;b@FH;2@w@>1 zesI(Ayaar)uhn@}slOstzm2j=@T7!R=P~d6a`*CO@x6R4Y;Nh*>YS?VbGfm7&W*7N z{EgnNj-|(FjZK5tI4Aq@tbCVNXNwY}Ngh`-z~?8oIy(?g&J$l$=4m?k)PAkb(aLfA z2zlI|4}ShYd_S?b4GB-lby5o6x?8JrCc?+#pDyE9fgikkt8pIHftP{XaF_m`d9<1M zH(u^}7a@59z9(;Rt8pL50KW+w(%RR@-`QVR&o9ZtG&mYq29NEJY zKjAQ$|0?jS_UNYn;9r2--uk`$CtmC2zW8S`l8?n_UG{7>9w#!uOTou@{XN$u)4?AA zU*zSU>yr844)`!H_vEJ(+`{)_4^;NaesZ6z0&lU+{&nE3;5T^Vd+s}I2A?s^oS)>0 zf}8f44DgKMt-W{f#~=K{v52qm_;ZW-;G4ls{VN5ZmSyf=74cb0{8ME8b>KI{-^4eAzX5)p z;(xaEPo9MDOTzcPPf_?p$uq$B14kO;`S-kwJstc6@L^u=S>N-)PXssJ7bpc^dN{t% z-s|uA9B~!+H{cKYJoP8sE6-!w`%CgEK(yO~<$S;MK=teeLRP zU&*d+0C)c?1>a+Kt8<4Ee~FA=1%3;-={&3s{C;pu^Z5Mq+*jEQ{uX$DrT_8!D#=rE zUvCc1p%Og)3Ayt8Bm?~WGx0s^N__FIy4(Kg;AfoG>KvfV&yjL|&Ig}&cB}EeV=4Gc z;G>lG4VU9n1ztNB-{0=7-}704I`H-2KBfITWc{1LU&rqroa^=X1!R7ckH_&D{CcJS zt7ZKe;AfoQ>O7$MFO&Y$!M_B*O__g-WJfDfpN|%+H=s`1t0Y z=e{00g^bOSYS?^w1-_#mCep_DhHOJU_@!6kyXciZJRf zY<2Eb{BMo<+wjQ*ue-X{c~|j&E9UPOx$__oHWyvfYJ9(>2>d4S(cT#6h!C!SIrweh zCwsY1JfLxT4fq@2rghK&{t38g9khYBf}4&*sko4uajp3{lttXMj`G0$#jVc%{n1z+ z$Al66-5$E_F9JXQHgkT;!OsToDnGW{fA9;yZ^pl6eD}VO=UjX}Y}UdCB5vc0UlT?F z+Q5+t51%CG!4Pc1`{1`Q<}3Vs$;W|T1iogV$3G!F&^548Gz&cCVf+?@;xEp%-6A&+ z#jsfc8{CeKx54usQU&y4K!S8*TzF(#jd;oq2q_46c^^*Hl+DUj$iQfeYDf{_@azD)mFJ5Ur z9_NF<1^%qkzW8U$iovH}HGvH&q@jcgL8^B)$U*zSU>#gKvAqd_2nspZqG;h?2js%wIA1=GR+| z-yKl_e)Joy&OS-r`uCLAJGJ0Py^G_W5`TxB9~;2;S<~uVqVNl4{hiRa`%r;@Ok*Xm;;sdHCpB`Z3aHu@@1=Yu);GW&j!B*zc16F z@HWZw!O!~I>|YFC_zmu-DEU7^=Dz~`&L6RdEB%`+`&SG8`cJLS;|F`^$HND^1K{>= z1Nc!x+MJR>UVg(Mm)j`n1b_5^Hs@V$``ve~UyF4i7Q;RT$Fc+Qn<=oDYru0H@q^C? z@9H?>))4@|5Bxm64)Ho%tPb~g@4mwC#hC89xxa_^x6C%`wybpfQ=PPBOX^{I&0r)EX&d)G!{hsUM67YAy5ApH^@%&VRuLC!=e>M2< zqq-S?aNp5w#^X@pY3}cJv>C6v)4{(4KS>#%1gHfOt%|E)6rjo?R4Hs?1H4}MMnpXbfL=e|Qa_%iS-6kaITPY(F6 z;HJ;j6o5~_?>3ou3HWmSo)fmC`26*JM!ORHL-27*|HjJxtp@*LI>x`h$3J0vKevJI zKG+DpYIZmM#|@(faAW_$)8=&3fACAeA6MER{|tWtcpLZ|3XgwBPYL*4`KVvHFLRE( zFH;Hr?AR)dczF!M(6Mdu=aeZBb^+n4i`cskx!D>UaP9sD_PQ~z?n54qIL3&39j zAEumVrpfcn67ZL=FwgHw@C8@48NVlTHTdP=rv0N4d=a>5d=qEmzA*R%@AwqQ_n&m| z-@#4aF_i=U$5m}kg|fcylk2+x{F$?QJ>6$iYqv9Wt{*~Y_6`SL)20!?EbN(8^ zH-WEG&NJSW=NXA}aJ{|QoWFGN3h*nv`SHcy_s#)t0XOXr1>lpH;CHzc|G&%qqXc|A zxG8=m_{q1L$8R?`;${fMlo)TyHjV}_Dr+;ob2$Zk=-uWyJP-WGd)kc8_LhME zvDBQy72sBRoAZIvzSXjQYr&reH|2N}_-@P0IZiqg-{S+`RSwfo=V~4&cgVB8~YEw=e_3kO#x2> zH_hRB-~+);@t1&4?I!*T@M+)~${HUfuZ7lv&%ED!j=c$dF1YD)^hp7nV?SW--)Qg< z_%!eM_~Q4=rhtD0zRJ7C65f=1_&o3h6}XO4c>JBsCE)izWUhY&_=DZ>wcrnR!#9CH z(hW~K8`px}@X_Fpcf+TEKLK8>^zW*8|G|4ag5PAc@W=N=egBf{cM149@N*P?W{le? zTLC^KgljDC_`BDths35pY>m{xCi8Lg7;Ofh18$n5$#Zd>0dG~>5P#1n13bO5t;^?A zZX2h&{^0L<{oVVrwXtr*+E@siR@h{EZ9Lz1RR*5$gt-sZ;A6nM%9FcK)q`IOeylhC zb@BR}z?XvG)B^@Q4hh%EaY{kpEl*;fR?gK9ljmxg;3@d+Q`0@YT=0j$U-8!Oi(hLO zf@k43Q*T%JEpi@|fj56ZnAV+MM4N z{);?UNGZTR`n-9c&IF%^-*7eUBe~#<@tdwDUI_j!e(Uu)CI8RJ_LYIpc)88lpztpx zuLkdr--0#G;d<~ya8vzF;QrUz94v)+ethC$+?_uu=i>WNz)jWpfnW88`8ZJx{x|Tn1O$-dJ6IkE>cO9R%N)N6e1H5FE^htC z{XO3onsOdKyAN)3&xY_=L~R$EgPJ)CTkYvNrIu!4LP=?|JT) zdI3Hj1U}l!&xs#HvcQAje|WjCL(b7W@H5x7IXT`roN$cX!-~Lf`oeraupInm@G>QS z{5y$iz+1tWD}1S}zXANBFL9h!>YpO(Zv$VxzRmcZ;HeklJ;1NpjNd1p1%Bk$I9F5R z?=9o!fgklvoAJ3-5%^4S(;6%XKNozF(m(N@jE%Ay@DIU5iBNd{xYu(_V~6S399<8a zNs%_=vzI9N>EOpHb@*ithg^j34Ffkldl?5l|NA!QA4#4zBzz_BDa-=j|5x18R^tCt z#$O1&4ZKmgXZM|aM!p>Utq#l~ufOMAt5?B)09USQ6XM^Uw;sIj_BLne{@(WOvA^2@ z8%0s@KKPC4zkB1m=W1(WO^oF*Z9Z}h8`C<>2JbO)i?gS4EZR*Ti}Jy@Pkc8I6XWmYOo7egXKyvWvoa670es+*o)`)J zj^s8j0e`PztMg-DFaL+UN4o<2))iZw>y^27wVZ2f!GB)4)wxF5ldh0^(kAc;&u(>= zDE>D~|D;QB-cpSmD*R5#M}w!;nE4d&yIw*2l=|cEPR#@V?Nzh?67WFnR;NW74+qYYtWlH=q8Gi-%ZQrAPaF^@ER}$N-+&R7$ycK+6vWF)e zoy_xV6Zr1GZ*^w77Y@A65>DNndD5jgcTa407WMb?pxlo~gTFMe-B|w=@S%g+ozj6` z|HT72{ygy8MzlL84)yY>LzyoDe|2KJvrj)S-%~!rSpoh^Zo9L$(!L?GeQUvM@SEh5 zck}umyBo*f1pdwC?Z#)wN!XENy4rz!0_S+;LJ_?Cn1%5NQ>72C=dv< zyLRVB@BDL*^F^^K7;8f&Y>Iwp@A7kI?mmzU{`8OSPL(o-PsuSX1V40RyE9Zd4(t&- z4%qN710Va(cJ(*i+%|k0TdJ`()WD|Ww|3*XaRd0?zqdR2-t(1&neuaJZQ!T3wj1AL zPrV8sLuxaRV;1XKR+i|SX$LWUnIIV}xCELt>jDjD$yfe9xMmHJu%wtJg9}u$-Se_3CcK6k>k7p{QBgmbD5II1u~DF z;Pw5YPPLxL$K!dlabBK3AZnZ|e(<3KqsIHu0r0cICwcSen;_SG5PUJXDUTuW_XkD0 zydP>KW*GeD-J(v|yPn+j@?vaBS*}eZZ1zcus=tBc+Vl|pbZwHZ!S&!iQD>Pqm#)o{ z_&I(CY_3U<8lQ1Y2mfM3)cE;=`QUqvj5-6A@#rV#eJOaqQBmW4nJVyfaMOL6I`9ne zFTJ@)_)MN-ZU+DHz^D^Kf93Jd7r*zKd@X*9V@$NmId8)y1N=Jh?$%u{Y&ISoHSUjv z;CqgZ8u!OC@F%mP#{IDxymEZ^>!JZR7akQg?|*I`$3~66IhIuNpti{N)Fyj1cic>1)cldN2C^p@8fL$1TU(37IZcWTCg4+l4`+gadqbED1|O8-8U zd(T4fAv2=RTi&_quD9po>$U z8s9xgydKBgx#qD-2j2qT)$u3|ZO8%7E->e!0KE8I^L#1+zY)BX0RP;}eV@qoWq{wkC~AC% zWjgp;a8rKfgYR~WnU{jk?S@x@Ki3Vf1MlpHZw8;b*j#_|&A2}5hG&5P*bSc!p1H&v ze?Iti-SATI54+)2;Dc{9$FBn~=!S0wf4&=@T!LqR-S7i4M z{E*wt@vFdZ=!VyU*LA};gYQvlj-R{;_o%>EDf2)64qyg&(jDgYI~{x(xM}^&2cL3h zw99)$?*3c~emQvW9#DAyNbt#XqAKv&cbRz|_=GYu-wZzbZgcyRZ^1o6a8vym;H&P5 z8sCAO4nBWr)cL29zn|p(F(3T!a`QP|DfqGAUA?kvKYU)1b&>-hxl{BOz=tIrh6>8;91Mj$3z5>V>nWtR~CXF zQxP?OhPn*=HE=XD?(e%%=CB%kpNFEx?=Gx&{lQKCO|JjLQRDA%rYymI*lu_x`0d^B zT<~|g;f3Js-S9H-10TV8)^48uC(PN+O@O;bs=*i3n9tMd!54#@?#(oTF9XL?@Z>ir z^P7SP4BNm@R(Slg*O}l4yo7Tsg~y+1=7L`bzCqz%%J_xgN4y+$zS`SUe?r6F+`lsL zmd~Tc-xIF}f2g6G@drPAUDWAR>Ti$LZ=d`}B(+|xxlhdtk; zlLcN0ZhN`sJTH&9={%qayczzZz3Vt3ex6qj-tlGB_^xCP_{Zy`#_zXp08jtQe4f_^ zJ_6iyo|k$%atLl}e-?NNxamAE54_-O^KqgGyczsJZ~o@RhA5W*a_~REU-5F!JA^gh z%f2xmM;gGx;9n;@60(~51t)~8t-pL!CwHM>20HLhV0{z zJ8-=T{+iS&WM$F~lZQxzy z*saoCr?s&82{yys0&b({o%s#mo4~*Ea?kgjb%HuK_o`zf%Ez`feS@V{I+?N^sNrM;pMO7-IJC1aAi~_V&*gf0s86HxEzQqroDH0$Of+gKUeV=H;P^VeDDtNBfQ-6{Sw9C z1NZK5UfTr*a{kuH@0X|mUpcD7Ib6xlA@Ued3%+V}hx4#EzVH5c|H1wHbvTzQe7@wJ z;CF+Yz9&CzDLyy3e}^+)@sEE8Og8wZ;14K#nT($gKJ9=G=K|$iwm_cC7K4}jJDkiz z5kU6;fJ5B?Hi|01E3fEq9_#Dj?)A>H*lSU-H6Dh|@Ebdfdwc}^TkyN@^TbFfz0a+~ z9V4q8-{G>yHs?tt$B)V!+u#j*ZtL=yvFq;#KXtEd&N0d!J6`Uw0q~-|w;9iegW#D% zw>f0Z1q`mavo`z@ov4+ozHciBeI`z=$z z=Yn_le#?B=R5o=wyC`$5r<`l0;CD868u!~O@G|f$Wv(0)n=3Y&Rp-WU?R5U;?V~%^ zkH(*=G{I)fwod0Gr48@J+TeE0%~dMa%DU~H#^;b(;G4ls=LLD-ZQ#S)fIOa_`^-h) zTfj}{RpsD$ot?((s~X~;D)X&Q&bJ2eo;`OMKQG<}-WS~TtRrs2#8Tcy$e`VmW4E!f%ApC-8b&w?YA@I0+Lo5Dg(tDFhnC#ul zM)$9tboVmR{fm&kmr!w|M2*kIEW^az$JFj$gmm{7nfqryA^Zml)e4ZFN_voVZeNIW z_q7Q3ubT7&gldIJcW>Rq{+<-^`;nSLI`=1&bgs{@@c`-EKKm&VPui2N$K(73G+wCb zLDFN_(P(3c^aN^eShMH${=4zrdlv3rgyOM($_mjR)@{-c5$2Yk^eadYlD-e=*3-iO zD7Gh^d5H8qiAPB1`C~sL{IiJ%NZ+0GFzLIpKk2)XZmrbXPrCak!2Qc4oyRAa^b~=u z0O>rRf~5B(UPd~%C#3N(>FzBw_phFGq2c+tHs7r((cV4Cz)w2cv*h*`YV$Fu>1CQ8 z()4Og4{Lh8rbjfrNz*NwKO?B2!IwmT29q9sS?HXP2*STRtbCV zUzl|Ej~F<|Ya-75wcZu+7IJ?`=k`^TuG@2cVa>jtblHE>d4Fxvw0}`&-t;*pZn|A^jy+;{RK$p_7-Y-kaTWe8R^$jLPDh5r2E&1{>b@2x+#C$zhPt$ zA^V}E+wX~ZydDCibN}iMI=44MocH@C(s@2w?~C}luD6%-Ws^PUE0c8I@BF0m{0xxJ z$G4zC*X!fW{z z&AyOyZeNgej$fwfAx*C)o#$(qbk1LdbZ(FJchNtNpF%q4%hq@%>3qK9C!OmHkS?O) zdtXS8Jx9Ts3Tggf()oNSLb_~Uy@AZe3HJ(d4w=baSg`{))f|`FB>D<1M#>1L_J?Xsv zMKpiwGj%*{P4|;7+pFq+POBAVVrI``lDT(qC_ZIjON z{FgJt{uh$Y^P!A%Zcnx5A10mKQ%^e2_a;rZ8bo`Ur)avZ>6x1D*YsRX4`_NJ z={!C`jhAUWM7r#+riV5AdQFdz&i!lBbSw743qJ2g$Kw=Dw>3Re)BT#BtLXvKxxa;) z9@O+Q%|E2+)tVmG^m@{{zKEtbX}a}=7=N};A)WJKYdlla{hEEQ#seBJ)Ob+iWf~7@ zdbOs9HN9TbBbwf%>DHH8|4HZhW@~yT>2f`j&g(r_M^O zbdGPW7yaSmrA<2De+YdeI8Aq}o^-x`i5NKFudp_B@1IGW+QFxAVi$6pCbl)-JkPgeJlE>_cxs!{KR#CzMl~!F7F4BzArgMNay~h{6nqJCY`U} z0-A1pC+vB>mXXfKvyjHCN$2B1SmO~*Zz7%JSrN6q6w>AOEa}`I9$&uR@e`Nxd83HO z>nB1w*Vm-!)=$Eo+n+)@&-YByIbJU5Twg%*4{CZyvk#Nb@gk(l_L0u(%lcXEkFDvM zr1SZyU*iGNxqpQkFC(4n50TE}UrjpiS7FjQUOnmDpC(PWHfi}Ko$WI<-A}sk!uJ%B z&iO7Ro!3Vh>D-n|jo>o3#v5b1jR zxxQ*GUYK;|5iMR5={#SpU$yp=&h5)2oyRkmbZ&2ebdFa@I?t~%jaQS-^R=FIQ~#QX zbN$voMSFR^rI60;u}PQtC!O<=OFG93X#RzybN_=H50TFEp_+7_fAtz~BAx3`*(@w& zdr9Z|GD&CqT+;RYaQy+|+}|MS96zM#)ueO$FzH->y=LD;I>)zuG_h-`ic;qLY+Z!OA;}vRpkaRh}Nay%r()oNbqS-f*&h^`EqP-l?ujv8O`T8eF zI@cE>oyR9kx_rK4;Qai}-lFC!m-G=7FhDxDuZ-HS*T={65ZUwks3$$093rIa{yWn- zzP(kn*CvMm>3qHsB7G$B2zvOI0>rsJR)_F6aX)dk50cK~<)`sy9wyH1wYG`)az2ngjM^I@o&7_kbG{=Qx3`OU zJpQ?)%l(dY9?u}@!>PV7>6~AyQ^Xrh+)p~sry%Lv{xInr-`XMk<^68b`TRCOy6hk6 z-2aGXZ~vj@D?mE0w-D*nTsgmXrt^MPPyXDVh^E_)sGm9KduRRO`M~R!b)Fxb{{Y43 z@hc;pd5CnGAJTa|Y)kA^gQ&v+()IrBEFavTAo+8A-an3|0Ab=XA3a3C;IMk(Hk?^BvC()ho5xLe}Hruk96*TgmgI`eYAX$uIEFqkNXoKd%eCf++X5s zA0b`Vzl*4!`{yT}$2UMa&ySGCBc#iCeMLO>_ZxIxpM}I_`$^~Z6d|3**G?Ak`FQ9j zo!b{6U0C6BB&75CM3{7*KUP0s$?f-(&g(Nk`ee#ynDl9++x>+<_lNhN1BnNTbAQ65 zbNl&tuKV+NSi5phL_j|OnaTAJ5uB}pr0e{Ds`sG!0(*&?5=k%A^dRYc{!m6b@9!Z^ zuh#6t8n4&%h^9A@&h4?%MEkh@6iv4^J(KhV>W^RJxukRZ1Dal_=|R%DJ!PcxejL*D zYSKBsVNI_mo%<8f^d{2zcxCM^`p@U9DWr4zGfC(A{F;5P#tTX3^VuNjTwlsiQ6I;% zNtgAJzB7OBpP%em&n5jh8lO>nVV$ERA;!=!Wl^`vuu zBAVW$*;}JTeQcki>9(e4k}l^T>D<0t(z!hWO)u2+An6>hOyeQaxqa1|9@g}F(z!hm z(s@2NX}UF9^qkaQl;(0^0s_||@+e%1q|^Z8qtbbY>X|LpyRKhGaO z>AHOm&qo92{#XZycs&1j{<0p>IO}}=6xKNV^LmRA|99=Vf4n|)UC#$~*J?7fhx^0r z+nKKCa|&0GA@arJ6(C)=KauRi#C3l?A3E3b$NjetRL7rnJ)UmAvv{13AjQ{pJ-*KM z_&VqL9-;VpzI3kpbA108b-r?Yc|PPCxL)5R8lM2!>$=`wopXD5e(Rj|uomAwNVMM+ zpY2WYgXGWgBRh%5+!T*F&u4$8I=@Z2-hSO*uTST>l>ZRbr;iWM2kT(b9^S74r0e#) ze!`kPAAfm0@P4BEb9~FNe{g^F`N#W-9&cy5pZaefBKo&8o#%HU*^|56?{xoT$skDf zJJUHo5whp}`^Sp*$>Ry>9M8%Uyf@XCOL{NT0~#+Ry$`pKbW*Jl=@Y3SOggvEK2+4l z;~gZO_lpSWdi(y;DWR0le>Wd`e)aMBcXb{=|6yW0b${j|;;dVT3wxdq0fWx{Vf)&7S_m;F6b@Ch`00n$(4 z^+7tv3(0RYMjuQTQemH*t+Ald?fb2Pcyr1Yg+gsZDW_!Iq zCVx}=_4e}kgsFY3+eeH3aesoO|5<;Ir`zi~$LHfkB8^|YRzK%c9*^jHu{YUA$X?Em zV?_IPd%b?npFW@YdX(G8_4}zl+i?8g`#%AypU0Ee8y_zt+WcV7^E3G0^yl`54E{Ug ze0;O~>i7pVo#XR(@%5Lk^ZE>vzmM|A*N-~a`>%67f81Wv@tB{V*%L&6hEx3k($h%~ zkO5a z5%qICn{-i%?};N_JQc(D&yvpV4QhHw)5D}wbLIJ&z8-mg^7+a^yOWO`2M{$Rru>%*ZFwvCwqPW*_l1hKic@ciNZDoE|4aPs(IQ$d8dK3{egkDnLXCv-jEMpOI%alQVX z={6bsciX48U(SaSqP;sCZ{~k?z3BDnI`6mo@r92kJYKBp^J8DiM~L#-lk-EzSAM=9 zF^tE~=F85w-X1-lCsTW@6GeVG9Fm$XyVyTOoR1&XnjY5ldeVDS`s&vd|MB{$CVSp*_<0n!pYQKaqWJpxA?Mq~xqW(jd3}YcemO&kt*c z$Pc&QPrB}}*U$TPi0uE}`nf*NmmXiQpZB}4p?x~%_07-k^mxqcDV{!_y=c55|IPmK z@x?kt@9+Q9(8F4&d(s}IXwSK=lcA!guNb*+aEG;zW%mO@7ka9AJ_>G z6X*L4_Ux|XalZV-W&22HZq4c1pQk@xpX>g*&iUs1(K??%0r`55=N}&**xsW1&z$c7 zwU5UuOgfLZoiEzYdQj6Nq;q`#8D006=bPz%HP>&^{b+t4B}DPKe(TJx<8%E11K*jy zULWU^pI`BO)t{e*slJ`vKirxBI2u3uEYUx<=lHDa&+CF@&(Aj^nm^m~eBk3V$J6`6 zx<21@d!0|@^-RwX`To8Y5dC4UKR-0-yng)T&*ys~()Im;#o#`AuLh*RN_n$4= z%RKleb)J6_vj4NXf3B#H@4tme=k*f#lRA%&{~UGx@cmku51kii_6D8TXMi~8Crr9N z9^8M6p7-ud*XNUNuX8@%2vhuYUO(rG{^*?h|NqwWW*)Bq)vxQk|AdKie@xGVhjV|< z6aC?Q2T14rJ4`y~%RXP&>*K-o2Z`@Y=lw52_S_!-ysqQx_5Hg#@1LQ|M0{Q6cwyoP zQhoxL3wvGH?UTqpME1IV1Mx8NnH;}J#OLd~FzJM?2*Y)}@B76HP(SM##A=3Y+^NIWae=9$F|M~jMS}6Lf z>w12!<@}I6=O;}1e|moO{`2{ZeYMDsuIu@El=2fGd(Mx2jqv|Z&yU{!OzLlt`lsu9 zepZrwnC#_#bFIh^VdMVH$Cn7%^L(_5|C~RszyB@!m7cF*lzd<*?a|Nm|CP0tr!KifBneCWEK&()OA0NL|=^WQA| z|I_E2-v3e5-!S!0*Y*6|O7>QX$Oq>qMEZYve)RtDNBy-IiT>)ko}alqf5@Km6CwRS zJwJN?<$AkCaqeV^sT`Fa` zsq*_=H@z*|=Oa)^|KR(lRGl@LcxpM|fBLO(IC-%tLJ5%0n^R#g3l zAbv7n|6KC_fjHs+BARMNk)H_r2grZ;oBzc{Dad?FsD3JC|3dPgOI&gCD1~ne#ZP7I zALRZM_qZtktPTs+PoC}TB(8eJwU@3D{(j9ro%|0h?!Nxl&k>xD>s-H0{-e(8-ha+S!85h` zhmilSle+gGdy?RK`_st(*xc^@&#w_J9<9|M7%I+B_IibTLNAalAb`=iIp$oPDu<@F8Ok8IyV7!C40soICg6L#{Y@KPpmvyqbIbOSGCD zZ<+gVx3(T2HFQ2;yM_20g#Ws-ckd_ptX-{?7hJ3OpN)UI<$kT)y?^PJ>%R{-73Dqf zi`%2$6Dxs_&!@)9cenWb1#0ZC82@+U@bAr0v9$#M=wa<<@%a#!yQdRfwcp(ydRPOj zOj@tJ4!@`J6e{QQ6d1?sd4Fg7eW*NFi*q!U^M1_sXHa>eW?xL@ynnL&gH&FowdZvz zuhz=Hrt*3%{x&M-{fXo6iEYQt=La-i{9I;VDxdPA$fPZVl|kk6sC)sHPp0z8blgls zeePd?${(ZS?J!YnEuiu(R6du=7gPDnm#Bc^+|T7Ni}L3PuRwWMA-v)E8?Im+F6&cD0J9<+zGDT}0qGJm2y@7KZwKyOYX! zz8!@)ZhmU1d=bUxJWu#U6zKCOOyxG&^SVo_7X>^|j;Hw7eJ;w6Ci^)k?<)TnqCA%W z%KkA+?$@oc^1+s^^>+o?^Y3hOe%>ehOwIl$vbUcQ@iVDCJ#ii8&QHH)pB^j6d?tIF z>~qLISFA}(Ov_6Ifl^jJCOGsPdr z?I-&(&Ax!_ttZv|mymr(v#%uk6td^*$_H3}vX}WM z`+Cj3fb0WW{1UQ{X!ez4U#Quyrt+Xx-bm$TT6rQ)Xxw=l(#q4Ryjm;Iq4Ka+UO?sb zT6qbTN3`-vDsR%tS5rCvekIS7Mk=?T664GHOvDWrcm6bK`ALtJBmbIx4%u6?MP!a& zK;`>|}_NcNeUeIjlUx%m%j@zZ1FSl60;4%vsaeie{? zu4Z3C_F*l4CD{iw`!!TvsFnXjoxmb`-%MX@8|ldJ(;oc!B#}GKbh?L_jQA0 ze;L^~Y4%IWo_~Lr`&&cy)*R77Zs$6(_dhM>`4o!3mF!bA`@t}atzWX|_~T;bIPPfn zr;|PZzAxKfL-v`P{exuBzyHhjwPf$t?7t;@{(WF>zx#FB?mWrW?DxTCTvoedF86zFMH`=HkT{x}tL+h4EQ z9~3JeVDaxK!#(zwOZE}X{!+3JY3;d(?3**u!*QTZ5(!{@gjQTZY&cPM`D7oy-SD(CCa=ct^YW26oe?fi(! z=aD_1Cm&cKF37H;@&m|z?3be894eng<>S|jf)JJGQ~B3a-c04!Q~Ba=M8O;?zn98? zpmKUlVLeCXH*64w3(20Zqd)mp6fB_fIs0;`m5(I*dMY3FyC}Gf$~RK^9$Q5LO$#e!H<5?O z9Z`NU+3!!~RXs#vwoo}=H=U6n%J-)7Y_h+G%DKO}RNl6?uwO;?d_Uynp`u(~zmxqV zwkSV|?608mqq%GXi(3@*p@qdU*1QXIaXJ)P_;X&<@T76QRj;I{Fr1Zl{ZrPB?4Q|QTZw7 zi-NN$&bw4zL*-AA{f|^W=K@ji2-)|*tpT^4S1lCf{m6b#Du4AFQScbqXH)q#?}&1q zKc`T6^H-w$0J5J;<#(bM_mAzbrt+-A)bcVazv*yMK7iWu6w1505AYV*uO27t?N}}G z`+JR4K8(tFAMSaCu)l%Ic|R|qa*p$bq26Cm9=ncssedd2AMcWI0CkU>)*0$?mg~KG zeAo3xshsQO^}gs>VbAR!h4@|NA$!>w4#$D9X9sNjr)2=t*72v2)cpry1g$ zkMh|0=gT5*T<xuk<=kIBzxu(QsQ4Qn`@d!J{pz%{Mfn&i=ku%M zshrQRc>f=Gj92cSBp67sXRpGN39X%byWT;mG^m1t@kS` zzktf$C;Mh9&wO9l&!qBXT!6UiWigdc$Nf|HZv>Tp{)w=E2+vF0zhkJp@H0{VYcEmG z^Lh4HqFkTPcT+jf=hG?9YgArJ>*xk5Kkge5Cn$tfN#$$46$PizM1LFQUCoC&l)LM~ zep9TAfM}-mOROBvi45za@4rNR9xt9(8C0&%+m%#qQ~X{y!FKcc5tVPF@&l>-m}U`w zHkI@Kb3c{q`%fK}>-*1u77>T{pOY#6KCPnsQHozgIKd;Z@JFkb|`NRGBJnv`k^S-X@ zeXetzW#;ztk3T_B z8S&@Bv%;4Xryy~@!Ow}mO)IPOqWF78+|7I9AB|rU|2+JH__g?D@n_)|#eWq)c(uBp zKgTbLU$?d89}~Z2#NBg4@e}Z1VD<4e5FQgg8XgM2KjLnD*{>^)Xj_OM7ylFdgygvi zKOz3EZLD2M@jFM{J!cWWAAU;w;rJ=>r{Jf>e+EA-{tEnz_&?!i#Bb8p^3RGNkGQ+O z5dS3n9KJtZF2>J^e=~k!iPcG*{(lTVFaDeOX?#D=d=1aR{dvEEyU|xUt_u>U1H35w zD0oSDO~l>vEXi{`ep&nn@x!IoF2C-51wTkt*X=s|6u$3=I_)k0nD}AD-SZ%P-w$2k zdEsZni*Va}5R4*zDDkJlH^NK8x9({9mxZ^Fc$2`tx9uLsM_X@rPWoX8ae_hB^?W^k0Y6Ke z2k~R#zX}h9e*upR-_qSEuGCLLcx!l4cz1Y8xL+?_)NzX_LtQU@0}sjHue;{%ZN57l zN1I>Q?R}_mUB}kI_r>??_B-I?;e%YBm37*#hgqBx;QoGB4SX>CBK*^OnD4Kr{B>pT zQ;q9&<<;6jQ$Y19^pE5p#_!G&q#USIO z@#nzrA8hGZO3-B}IPsERlKN~+Q{;T*2@z>$!#1Hnd{FCChh`3wtiGL)1O8f!%1@TAX zr^UYyzbO9m_!;p(!Y_&c2Ywdc&-1&u1Eg|Xm&HFg;!T3Q#6Jx`7+gL7T!CK@|91SC z_)p;%#eWw+6u*pL62I|&mVaFQeIwo^D2smrenR|<@PoIui|W|d=S}!Y@gKpDiN6d# zCH`0Vq4-`6tA08*%quwD>*olj5I)pA~-`eoFiq_&Mci{BeRCVmZmTKro4Q2g2W8S$6m$Hm`( zpB2CU;nctQ?IP~#NBrLSN%3p&^Z0(eYVlLz&&Dr`zZ5?${s#QAhRmsKw8TKN~+T@t5M~#ovIRl=$_Jp#H^g7jaiV;`hccieH1D z7QYt1B>rstjQC6O%i?dq&x&9FNb0{v>ObPHe(?X-|M)TSYw!yazZO3fe>Q$m{H6GD z@i*X?B%k_Ssekd?McmcTds096N%3p&L-A|zQ{vCYPl&%1KP~g&-w}KU;K6v zZxW;>esBD&_%--hiC>GK6Mr^-PW+|#dGR;k=f$tzjrteAUBuntu_<6~veoyLO{B{v{^&@_7 z{H*vj_(jR57C$HcZ2YpsUy7d>e*=E7Qr18224J-Q7r$M^-TFuT-uOlFYw$zyYw=6s z&&H37zZAbL{s#Pn`1N~J|3jtzBkt~Fi{BeRCVmZmO8i>5{?XLG`0XOzBq)mC8$T<4 z4Sq@dTKt^&v+>K~FU8M`zX3mZU+VuD>RY@n_@5#b1hF z7JmbNLj3y2Qva0?thvq4!|fvO>R7C$BaZ2Y|VOYzgg9&&Dr{zZ5?&{s#Qu1F8QLsDJU>McmcD_`UIq;@9AZ;@9Gr#Gj2H7k?>!S^N$7 z3GwTnNc~?R^&fFp|Kj(?kBMJ{pAx?oKNNp9ep>vc_;K+!;Ah0Ie-iaCe!Gaf`WL@9 zep37z{G9l;_$l#cvc2)Ca{gbJG@!Lh*)xY??@r&Zu;D_SZ;+MpqjUN|(DSlb}4fqN1>-VAl zFN{^St6juh{p0`d`WHVYehq$F;@9Gb;?KscIO+eO?x?-Rc_ zep37z{DS0Di=PsIHhxLsFU3!bzX882e*IIafAQNzyovilQmeQB^*?@A{2KgF{962+ z`2P9+bv*ArAR7H3@Sj_m2Y1WnX!Gwm`~@Ea_wR*XbJZ3R3E}>IfP3NoeE|Rb{k;k1 zyW7Ii=0CU6V50F3@Yyc^|9X!93hm8(V*TU&b+k7x?X7cKrJvn=f^XFx1YyM8^9%92 z;+Mo9h+h*UlxB2Jh-U(c>I?*apL&=TlBU1iHYAe;_i8q_yh4n z@yFmN#h;EJ7yo5=Liifuq$JM2_(}0w^s{kEi{CZky96om2jXYMAA_G3e>yxP{AJ?g zh!dyY*5GHw{};c6AL6$--TFT#eph&2_&|6;_?U>h$)^@HNCq z5XZOcU;MK8EzYp~gJIS6)-~ep`)VYgf%q};$KV(6!>AQOFdaV>|7HA=bzkgug z$BfT~Pj~rO-W&V`J_PRHOH9l)|1h}!JmWR+ec}GS#5wTsaQ{69`#f%O4u$*A1t0sI z@nP`i$Y(yBk1qxvz(+1L|1x~Po@uZv-oN8SK{Zz{~13c{`Tiu{sr;(kGT6hj`&IZBECN!FTu}= zKN-I)@#o^_#b1sed{sR^e1l&Qe;apVs`P&h-{-Su#NGFviGMVHT;iXHUlP9-KOz1s z{IdA3;wL4a&+&tFb^X_^p?<_~8FBYLB;qIVvy#t1{80SS_&JGxKYm>Nh4=-D{|SCV z{7v{piNEW4m3F!M7r%4F-T6ZNe)uWzhvUaKR@cK6{IvMb;D_R`z|V;P6Mh`u*H4q7 zmVZ|Kc*NcLLj05PbK+l&pBDdS{Ji*&;b$fPH}MPNe~q6Lzrp#Ie^LAn@RIPOBJS>w zNt_z|viRfi3(~F!@q--h`lEhz!9}~as1$JDN#cvgH_x+aQcgGLDu0HP!#*d3X z4nM^A=bf4O3Go->$0hzc{G|AGFSPuV62Dc%-F*!4yW^+CAB>+Ce;j^V@|lUB5q~j$ zR{VANS@G*$WclaCZxwO(eHY?)$1jRM7(XxmICw$$OyZP@O5(SQxI15n-yOd!{$Tu2{BiifWz}^)6F-jc=aa?wG4a>oCnbK}i!J|9{8kZn z@3DyA9X~GqVEnZBsIl*;}5 z`+nm0$IpvD5${% z#or9i32$~)C4bk?zgj>0I9(#{J{K&0fBYoA&vPVxLHw!sDf~EjF2pa2zZzZ=z8PK? z-t212KPU0KM0}SZxU#x#`{NfifBcyEQ}Ig@e<6M-{%Uw!_-1%Qc(ZG)ev-nwMBI(b zZ#FKz-}>XH#2<;D5`QXwTKt9hIeb6vtMN19Z^kc4{ASl${#o(6MBL^7dv#s)$IppB z5}p@6l{hJhvk<=^{%Uwp_-1%Xc(akz5Al6JcZs-LM~UAbzl87SrIGl-@alS-iXZ%8 z{m|6cKYmR7Pw_+i&iMb}hvK&wW&Ix)o`|?x9};IGaR%Wh#2<$r{8>F-58x-oe-)k* zzMeP zZ0+^&$Kof&pNXHq_s88U_$l$fz|TnhdgG{b@!Lh*UGL!g`Z)?eBmPkQ;P2}EZ@|xr z{|J5pKMZVp6F(>ZxA-Z1pU<|}S^jzP_l>w)&xn5#enI>+eo6Ab6~8F{Q}|)!56ZaB z=d%L8B>pe>De-r@-tsSte{jTI{^Iw;53Z`N|Eu6J;rGBp;m^b4!as?)dk>BM`r~Lb zenR{`##^12B+nxw?(VmXKM+6sx4Pdl_$l#cz|+DP!!yD^hi8RvS!?~A6W$h{7v4MK z?tDa^{&+kOzaaiZ{4Bojw}B&+xeL9Vc4AB}JSDhQ5W>iU^O{1Wkf|1ZOj ziT^czysq`6ufv8nS^lB;dq>>e-@ree@j3xNF8;;%Iq`47Pl%t#54Na2Uf#t|ivJUS zLi`;jS^g>U4~)30b9`TKr{Sl?AC6zZ_x*Vnen$KS_~Dk8zwe)q@U!A?g6D+qezVni zhB&_7xc++uYS7k{sayYF=o|9Jd__`~pH z^&3Y$?~m)r_(}1fz)#@&ek#Xlh8ZrvjBPsPuOeIdJhKk@V8?{+KogYVmQc*NcHk@)@bQxbm^eo_2s_!;qE#xIFq z!q4HyqgJ>aZ?k?bi{Aaqv*KR?&k3Ib&kLVN{1owh|E$6%o9cdh2|pNBU7u_46XFMVT0h6cZy9k{C-{EcyW@xApM#&n_x*M~ zeq8)n_$7(I6h9&Um-u1B>h^AZm*t-nf6s`!I>Gn(AB&$7|3Y|L_$1<_iR0(_x%e6J z-^S0$et*EviXXe%>ZFA4`)&V-yZ0-^?}HyUs_uu&@$=%}fu9inS^R?dAK<6(eLlbA z7sYRSkL91mZ%UmX8gWFEq+=2srbRR)?V+wh#!ouuJh0E6Zj$d{EHtG zKfKrSPvIx=yG7i+UnKru{DSz`;m5^)5I@|`@;{yUOYjroZ-6I-Z*`yLnITSR;&h0( zdyh!`WAF?3ejG2rPm6yOJR|%ucvkpZ#19%**Wvg0Iq@4$t>o|4vBKjKclZB^vjy!s z8QvOR7k(MMt?=97?crPEKLg)O{P*E;ctd>uT>kHGEP}gD8g2f${K#*Ohj9N~ekyzz z+&}Mb@SXWT!~N$z&i~%{A#ne>j~v|Bxqpto&5!1{#P^@SnDv|S!{Gk&7i-}A!u{tj zw*B3Fce^Iq{O2P&Z8m-Y+<)G42)q~Ee?H<7xc_{_Z>~Qp?;%{UbG^vyiNEFj#&_y& z{2jRee8(4X-*3C&pWMUz-6)7d;1~8bei?E6=UG054~F~Ci7YtEeEporsLCG(a+{BH z3i1EV)Q|Yd(SL)$e-HMmJGY9+C-4iM|6lJXT;q6j|G%jn7b*O^BktC>QvdVtGx&b~ zd>_9k{x9&7@ExYv@l_Vy2_B58o+nR+$AqWhp>Tg(ocgErgB}+v;34hx$HmWZKfeCB zNNut>{9o?*Z?H z@9TUb+}HVM#J{ti#hHP>#dOQ(kov~QQn#((3mO>re-EoSeAV{Gzh;8-$I+sljQiur zAMZVy8Q0@|6kLz@N8#hia~S)5r-j9tM4mUpw{2@YRmc9plkh|KHSY8L2wpnGc%C?a z!goKSI?f(B>z`eYGR~im3VOm1KH2yX^7QlM+&;#2p8Nvd0snmBym+ShzFjxKk2%}8 z@Bg{*q30R*?OF++cd2nct`_+Bnw}kDe6PT^U+^y;W!(2$Q&$+#ds!2VH>7{M!grlw z+~+wE-u%AmIM>6Ee$cqj^D)Q&YyMg0cxC=cHMjZ4X7wQ0==tu(Z8ivk1~YBmh|BT5 zXT;s-S;RjEKOz44_!;qUz)y<*Fn(72H}F&9e}kVBztIDhe_H%~BJSQV75_y1jQE$} z7sSuvXT^UKzbO8D_&M=^#xIG#g(HQ)M_&NNT_>1t9;;+LG#ouCfB~N!; zh~FmS?mbfRd*P?Wufb1r{gCjp8|eN{I&RLiC_1T zN}lezRs7Zwch5oaCvyJki60k#2!4$7h(BM{;wQv^2tO46b^N6G8}Z}fZ}X_-pAvsB zcv|@J@QmrUltoTphC&e$~=fwBx;Scj$M?E=){`A+0{hl-)!uPIg>wyt) zzaIAM-Y?*~?(O}I#c4?#|Nizpa39CNzg_=X^IZ`{n}2`1{ygJziR0hju3c<=G2E|n z=D%rtFSuVnZ~u;QT|f7N_rmw<=NsXE{p{DV`+sk7bRBykT-UMpz{mSM-E~l9ebxL2 zi{r1?{B`0baDRRGqZ`MHzZSllI6FM{-|MKjR_i_BVFNf>6FW=eX=(x|`#rS;k^w(uWcQx*>%l!NK zKkjCHDgFunpME=^e#^D7eoNv{jJTWUKWJG(_W3*xWGPvK9*-_kX(GVc|| zZyoU_LC~%`pYHf2@dx3j#2<@a7JmkQ9^cQCi|~VS)${yX{DSy(9=H5s;rdoM`* zZup`2gYZk@kHwFRKLfuk{v!N@_-pZl_ST=iy>*_j{FCChjJW%po%r4GQ{oT855*sg zpB8@xeq8)T_!;rn;wQwflehe{;r`<$=%-SBhb55iB0KNdeP{tW!I_>1rh;;+Te zh+pSP>RO5WgFKN&G?hIq}Ehm&KofpBH}-esEnZIzsKgL9iCTAby>vsDJTW zM%>lE_}%bB@dx3T#2tRS^P!#3GvtB2OSz$wX4q4)W7&GBkt;7{BHOu@dx3D z_t}!s{%s{L8{y!h`YE zbCjwD8{WjPUa!?vB&FtLtYX zepdX4@l)czfu9rq8+cxLqvx&u3le9ah`Z+|;-3gF3cmzi5}t*Zg+B=oYOBZhy@}}tp2RPTzYbm!zQv1{XIXd~crc-Q9D7CF-3QpW zdOokgkBL749txjBoTS8Ah94LIYj{FxjGi zz2f(TXM_)dXNA|obHX2j=Y_uxF9_cVFACqr-B7C3Nsjzefo*$5+`Shh{_*g#@L|LW z_OI@T$@swy)#LsIeoFizeoXuy;i2&DU!l$=&H)j3&kMvq6`l}&B|ItoPIyZAe0W;; zhwzN>KjB&7yS-|4o)dmJJTJUIydZoOyeNEH#NGL^Q}uEEGJZ+?61*(D&JxQrxUqU1 zTSeSGek$2M1P7!@Z;iN4^If61y2fJ3Qr0D z5}p>m^&8gD8R2`vv%-&s=Y(Gf&kLUfF9@FtFA9GfUK0KTyevHSrsW?@svgJv;W6QT z;Gyu#;c?-2z!Sosg(ro708a`39iA56bUFPm{7`sS_?hsW@N40D;ZxxS;V;6A!as|+ zTUQ@kJzxEcUlKoj%knP^?-p@)oJyR*_`%K9<8>W=a7gujAHcw%ee>;9g{Acj<;=hky68|^+g7~`>t^bR{J4f8r+hL8P7Wr{J z1HUBxHTXI4@53*PzYsq-+~WKB`BVI0axB`f{Wl2y!B62Q>E{;jTK+Nd6A^cHBJl^| zhvJWe$Av#YoUn`K8M5D3@e|^&$4}tQFy%%tWJvLZ=>TL2S?mphl+m`yexbuJjhm$ z?+wH+N&H9fW8%MwA9SrgF22PN#ou<7^>bYKzVL+bli*3=X?RNbt?;z)r{EdkE8tn- zzeL>KzoK1!UfStH%ReXn!SKBBe(-|utKdc9_e9*C?_|HvyU^i^5NYmxNyeFALAYgWIad z_epq6_AcU*1x$HhM=;;#Skiv@!!Rdi~kdTN&Fp3mVZM010(MGzh`y-pN5|le>i?9 z{$2Pf@fYAH#Qz9CE&e9_l=!=^wfr;UcZs;`fAI(4XT=|lpA&yNeop)XenI@T_<8Z` zuA|O{w}uym_k@>(4~e)tj@Yk1erxf|;y;8R_OfxbDh-0y@q;_6>vki4T>Nc5xBO$` z?-g-(9f$ApIUYY0e;9rSKOWdN89y%m6Zi%E5Wk3@5dTN~lH|Yr7nXlg`~xEH>b$r0 z&*{WJ6+b2ZmGHFiJK-7O^Wj)lf#?OiWI6N=>9e6=_nfL|b`{Ss| zSC)TK{7w;f{du(YXOjLr1-~Tz75FLfr{I^xpNC(-_xY^C5ALk4hd|(FNGI{e;IMN-jnuj{f*^c5`Ry4S@^N=;I8U%ybvA}J_#NQp9_x*e>>uC z+>foU&mZs;;>W(V{FB1>kGPvZB~Bmwl=zp!)57n7XM{fs&kFw_;%**hza2Qfe#g&= z-}F1nKQH{yh`W9`&icW}ITODi{trxICj2_$WQgOB#|QC4@t45k!Z*MZ!ngW?IuYIho)UfxJT3eJ zct-e5@T~C1;5p%M!SlkuhZlr5E?fRZ;c<9L_{s3H@XI3Z){Qd0x8n!*#G;C|{|3P` z_`&gwBOX%E@8ieB{|!IHkK^z1qvaop-#Oy$c{IMS&ol7j;$H(#2)_@W6uuCi68frz_x0{!6Y|5f~=`0L>%;q`y6*$Il=10&sWRw`>y!mgIe?oXycv5%@o)SJ5o)$h6o)P{EJS+T*h`V(Q_2B1| zdcRwqIq}=U^TLmcxH~S06H-@0@eAVL051xE1YQ#UCcG^CTX-VQ}Cql74VesU*KusJN;S7->t9M@9FIK;E21w*CT#E zcvkpT#3>M`DRJ(>&x!v$JTLqcctQAP;+Ke@B>odGH?Z{TOe{{}ye zZ@m!&jW%2UIq~<2xI5p8e=IG@b}T=)ohLipYAr10n9Dd8W()58CPXM{KV$MVk#KLVZ;el|QWd-{N1(Gnii8|83wg;l1FY@EUkr_yl-D_#Ajr_%e7(_}B2X@P=+Sth_Ip5xzG( zEBpj_PWZ*}yzpD#1>t#kQTV$Ncb^ZH5Yo;6bi> zyoSSL!ta8I!WY2f!ass1gl~c;h3{V1`adPSOT^uIU)nVQKP~=fct-eicvg4;o)f+n zo)=zs3+v}FY4d85^HJ-FyU$sO-xEJ0{t*14__g>Y{E+w$;g`gJ9X~kP^6}^Kjre8p zx7pJ2PvQIcdqsSgAed2I568n}!iNzjL!3ByPR0+#e*zvCUW6xv|495i@hz($*uI|C zNmBd+;3?s!!qdX9glB}`3C{|j56=nz5S|zQC%hnhxBAxq1!>pe5qIB{Abx-Rl8o0V z{F3<7;AP=2!-JXC<69zr(8ub>&l`2NvVM+<-zws6U4ifGtp|Q6{<-kD@bU13@Y%%A z5#O&TU&Bv|{}ntXyusF%e_D7)ct-ef@T~BQ;5p$p!}G!)kGQ*kNdCTV-@z}4UxpWj zH)&w`mxOnMmxZ4K4<4u<-zy^SKBq7FOu>(dKMx)XUqzgf#Q6h1F8;3DSpEs&hryG= z&w{6fkBqpxK02j(e!Cw(E&faJjPNz^tni?r<(U)S5}p^{9bOQA4!kJ*dU#3rEO=S? zQh4xS^*DYBj|tzpk>wu>-xD4eek?p8{6ctA_#}8r_}qxQ>qo}LAE$5Qr^WvPKZEbj zJF#so|BU$i!?VKsz;nVckGNa^Nc=nS^Wr}XF9`ntUKIX2@e5LiP2CqLRo0Cq@ehr- zyPtNd)va&unfPV#uZ0J*s>gjQJSO}_cqsg{h`afj{rdU&U;McEVPnfbA-o$rDSR+I zCH%UGyZ&dtan=J5;-|%5f?tw6H{fT)-zsK#W`%c%xNGle)$_wK_&M<}z|Y|)$@3=s zy!emd2YoHR_us-Vi2pr)O8mx6EdQeT@rb+g1->7zlkrR9Uj{D=za1XTuCAYFh#&T= z?w|MZW8(jYpTYO--DP{rKNP=n#NGN_{4?<5;$MTGIK8?*@54`szYv}j{wZ;C#PR+1 z4}MDg7CTt}Y2k^8yYtH#)%`OFKO_D)cvkoW#7Rkh5v(>~(v z`a=Ap@xwDMe?QNhk6#r3MtDj1qr^!N$B+AR{IdAp;pgyu|8KXG^>gr0bsg>(ao5jh zRgZfTKPLXA@KE?|@VM}&;R)d@;Ys1Y!c)R`-kCZPeh54x{B(F$_|@>7@OvZf&YRK? zFW~3JUyWbD_x=1genI@^yIB2%{j2M_YsB64h4?A_jQC^mOXAPOFNyyOep&o4@Dl^7 z^QqUAI+;^lC+*-d;YYzk;X~nZ;Wxk&!XJsaJ5NbIZ{jD#{}w+uyE^}EceVUe;_nMj z3qL91ZrmkK8b2fct?;byr{Fo^E8uzIzrYK^ciPSJFA6^xUJ~9f;%;6de?LE5gv`@k{uA9^SH<^>ar2w(zX*-te68^Wb^m6X6Bn55tSX-+-5de*-TIZ?uQyA3Rb$ zj{8L1&F3lWe}CWLMEscem%u~eS$JIdlkkM__ag4rd+gVb%g^{p@po))b&``j4~n?^ zegN_N!qdV>z%#<{hG&I82hR!rIO1--B>De^pBKMb3(G$-sJfqzh`3u1h<`SI2H*G3 z82qC6Ie1Cd(t zobZR>dEu|a3&Ji@1BvDE`s#tndqnlaV-+@N?on4$liO!VAKGB7TYZz8`k%VEtSa|KNzb`E6)* zKc9|Y68{=_S@=|V@OX9oyabO4FTq3Mb@#M9Gl z`@l!QhvED01OEc<(ug+yz1$b%arjU@PqNshaU<*jC|t5 z%)b=w|4!L&ON@U4?~OnB>}?`4n{hlFzIDp@4E$^055v2<_Ea|i{rO)FHh;C@;2!7y z*WV$U>v;5@z-4y)HpO2aad+J$$I&Ieeu%#Wza;*8{1U#+mO)T&Z_B?dep`6(MD@JdE8^~ZZY9nT{FwOT@q;U^T|UoQ z_@Veq@I!o`=X(6O`1SU&`bkLqwh?!AD1I+^Quq+!q-4M2@l)c@f~SQqfoFuTCw@lq zthcZAe^&gq@SN~o@VxLL@PhF15qI~g*snicX5kmbUji=)Uk@(}ueYD|e~I{6>acCZ z-FqN;sUQ5z@aj4rf*%uqJUkRW3mzA~1fCGS9-b6lFK+#x65bY`7Tyb<5k3T-6+RxG z6Fv)`7rq2u5WXH>6kczC`k($x`2LT$d!8tMFL+t_5P0xp^>~dZemKI$>nh^U!jFl+ z1V4wL!e5UcieImj^?zJ=TX;fvFL+Y;5O_-Xcz9a)EO+lV&_LgN4L{DmJE ze+Yg7-;euv{Dkyg!s{Pw`3Fx|k5_wmO!(0ecjI!kjk{m}pN}7keh@a>9{SH4V z{&t5{@^|@MQ$3&W7jd_K6F&)03%?Ye5q=vyEBtAAPWVcAUih!@g7BR?TmKh@9|A84 zKOJ5cel%C;X_0yZhV3_v`SX_<8Yfzz;@RK7PJ> z1iv8uoA9FWZ{a23+a7NDmxb>O51y?a_mki;;c0j%{8o5e_*3wN@D=c+@L%95;X8G) z{L{h@hG&HLi?~}i(w}ka;VS&B`1inb!k>rdg?~c)67fGI{$~7w_iU@KAVfcwG2- z@PzP*@TBmE;VI#7z|+FNfoFs_>T3CCh3^B;2|p2@7k&x6AUq2%3V$-s@W0?m z;mx{P{wd){z|+FdhG&G2foFy1;5p%o;CbQe;057ZbhkWN@w0)DWddK~A#W5SogL*ZW&KS%t#8OMe_EdRLpdq>>emmXU^&zyjt5dUI$QurUJckgBS$Aou*hr$QIl|zS z924FO9t!UPj|)E+o)A7Bo)kVCo)Z2VJT3eyct&`G<@is1g{m?Pu?t9V2KMtM~ zei1w`{AS{(h@Yme9>*_;{|S=UlRX%{M3Z%d43jtS^TB&;Kk~3{1P4$zV%6#e<*xUcwG3g z@PzOS;Ys0>;3?sA;c4M-!!yEvfM%5&%7B#SeR z`2IQaH27S&e~x@y(tQ6MxxAA-U(Ulv;nxy>pOejh1@50~m*M`o_FVjKea!dIm;H0< zW~UhUBC@&4<%@O#mC?GO}>vwCK?(U1S~OFqw)_TW0?`E{L>t$!A8X%DD-^PIXR zd`e#vC)T$;90JcS+&Tio*zsBLm22&}_ScQ<7dOFwIJRB{-ebRydw$QB5#Ja74!m@u z@x`{A;754dV+~BPaKVm!EdN|vdtUDz_eWc2_&cl2?+fn-f9oWRePwec@S+aPa*&9Eb#X9^WpGMKeYb* zoqiYsFTHL5z5{Va!#A|GI5Xk*!8=YjFo=Afg!k=a1AYhkyRGC4P?K;1u|Cjf^*^y;r~++-Y%!;@<)9^_B&Gf%s3u zZ{5ql^Z2jB?>pJzZ;!tb-s&rhA25y$PP6=9bl0zy&CfF};K3RbkF;<>5BR(n4EXx5 zfuAzp;<(#Z(Ka4l^SH(N!iF<=624%7@w(*mA-v@*0}V;Ht~(AZ^VpGZ*?ylQejE6c zFIDGr6#T-wZHJrOEt$%8F?``n3%ty5a0`6+YX;iEpMih%mihhJ?@IV5yHy`|o8TRu ztInr+Kg<8|o$bK&_1_)-cG2R`Wxs>r=gv2N0(?At^ETE$?lx?+-49QGY`!1g7vY5_ zCT589F?`?8&7Tkd8~)-==5Hi^gVQblKQFia-hkg8{?ftQMx+M6H~iec4cvu)F8uP# zw~ELf+u1K}gCDS;#UG0Q6nvihKFi8>De;%X8+Nk%{eHiJ&;QGg>tFG=Im7aQ_#fj( zGJm#*C$lE{`KlXyKvNsv<81dq3O>1k`TqQS4g9wz7XN34;XZiZkE;9mCHRfk8h?QJ zYv7Y8kop`i!I_r-n=Ng>{`hJFe{4~8y&VkShyM5LmcH;)ezN_#wYYI>7S3X_EoJ{^<p9DF z9Q#ec7tgZx?#R4!9DF3_$1cRV0DjJk2Ht{CfUn=y0v`*X3g5Av@us$$;0gF?nOww;3z|%QvXxhRB>)_jNXM8wuHo@Dw^-*Pe0KUZ_YghSg z%fA)8J$%(t^ZoJF3*MRat?!@n;kRtC0Cy5+JiKkm;)L|iEO^a123U>+%ivebeES`| zr>uWsgDwA9*784`_y@oroM2!n`SgQ#dcgQ_{43zs%rL;|As7Syocj0c&zbNe-m-C- zNdGT^AC|B<*V!-xAHd%{#>V$f_WLLNfmbX+U+3GqeyP;k1rtr2Mx560Z8q9|IgEp2 z;OpMBesI%cw4D!cxxeufsGmvjy}7WsmiQ0B-@e}h_&6`YkC|%RpJzXYj~ZKDw|~J` z#x3wT^4aZNYuD9sz19W(CFhGf@cYB3HZ$OsJ<)bCJjViLli}bN_?thNI0^p=cpuiE zBk|vX51e87`}+9>e*Q<+&;Gp7e2C@$;C?m_TxY)ydcylNZ%iWo5cs~2TOz*Ru7`KO z$^xvW|DS|k@S=^EpO;p^o8Mz`MiBpd_}sh=?5wNp7u&mqVx@lC%(uYxta-s6@K+Za zznwUT!I#}`@eAbB2mZy!#{D|yQuu_%#{VGBB>2S#TmF~XuY*sCwwCQ#L z`TGOk!uPw){CkO0=R9lI-?AQP1s}ro{!sGi0q=8x<kqa3_u{%ci{Al$$@7+vANS+nyT@!D z<-Sfc+AfCQ&-sYUzF;`~mj~^-qh964lG~=iZ(!ni+Hmk9{Fapl{C$$u@X`p&=Vkoh ze9M361=gSgsFU5`zwcrl+`OaxgYNK~rkn3huhBLT{(<{`)5>;){RpmxKYtnp%XQOz z@b_3pjl-W0KXpqB`~rL#{JE1Yj$c=Q3xAr=AGO7A;@VR=Ue3DE`uPy@>;!*uKa2AU zybruh8v`M6Qt(IWSjTvN34E0t*SEn(Q$PNEIuCvs7by1={|)#-dVYlW>1gxG0J?8` zS9q0neg25$`2=y=!)qR}6N&#dye0R??j`;p6*{J}$Qzk~5t!7plO@yBx<1s7YMcNeYy_p$pZNM17qR$d~g12^31_+dCh#ku6P;V?GWRBygr9N z@tXzk=bbv2SpKgcX8rT8&mTUTe7MaWbcJuIwZ!)(pFZ%?1IE|E2f^39Yw`VlC%_BO znCREBv*FKnGQTP7fmh+J-S_fVwxsc^8_l1NKM{WD6~@QX4>RGPw6ycl3HYzUC){K0gvs0Hr9JhK!0$)_4ck$1h&cF-Aq?S~e>FZ(?ce)~2Scn$m#_zT|}_viPU;C<%W ze!0yN+yy_8>qlP?&%=BCZgKV`|Bv8XZ)I@~VZVREd){k#=HSg;KUUhCJk-|b2hyKC z;CFp&Vi~_Lyml))aecu&ITrrFb0)rpe=qzG=BtCqb0PeM_YL^#oloJj?zTMF5$A9C z2#&8fyxEnO|BnY&&ja1z@l&j>`rr?NKYoeD|D1eofFJw1fer9E@Q%~W_s?bCfd6#8 z#rM~z-@)H-*Qu3lD*J8dE@UeG{GzNw_JfaaW5=DlY>&2+;ctFq|DR=Ca6bIpmrTs! zPlOL`Zh5-pbhJGTpT~2+R)&MO;5$q<@d(C!9sJ;FmQNkx)N>PHCI4skGttlIZQ#@P zG498)2mGf77T_fI+Xp^+nZ-ZX(haVF-*$@mQ}Cz28#13?0)N=YnQ8(2JoXm6Z{@+d z+x+$KH}Eg+FuvM`E!YHae5>u(x2y40*4{dK6Gzey`@;8r*z(U=xS%im!@xu?4}uHf zd%j@eC**$v{Its~&V$6C1AqP`YnR{eGWZ&)pKsx9W&YXzYRi8i{l7c=?F7$Hvv$1! zKN)`DX*Lh6A)hq-KH2Xb@EJSUeESP=7QjbNwRSCpe+2)Ab^9dvpYSO!TL1X-$oAJ* z{$DU(9fsc-KI3~!up@b%4!@_7#W?~#9De^@1`@=%4Sv!Fn>Ti_X+4++Z+f`J8D_r@ zR>Ds`*ZR$0_x%cgp9@4k?`?Oj<^NK1>mNUF?+^cBxjn%7p8NS{z_)nP^7PktBjCTj zV)d|s{O^Td^oRL3(cb6a$xkiME#a%+tr-xX=Wp=ar?{WvazU(Pzv-{<)b{^RSGk3UZ}8Ds6bj{E979u7Le-(70Q#jSVQ zj?aYmSY-L+$Y&IM*ACWi{`@-){@n@NMrJ$w7vRmg0o=#RC|Cx6^e=0dKTmChPg!a6 z)nxk-G|E{1-{lPW^YT9Mt3EQm5B+~Cym37PytWct2;a7$RDDEc6<2U*ZyY2j($< zoqH>M-69+J#>|s1!;gBy#_(dOTY-wwVt6PwS!7rfW& zcKtQlh9MXV@BK^lb=i&Z`*?rgKI-9d_`Sc_em9cO3i!AyEHKNX;Ai+%pICw+d2WB5 z<$q-}1MP`(0Q__6*zc=Y$9Ccr1Qw{gFLetR6=rnAj6T+Rh6;ZNOVh2PzN9sCRb>u(F->!f+D z<$sgBKhO=H*lZ2@oc$gTpV`62-Jf?ZfWOCkNB%gP3_rT5<GyJTDr zgWtW{cIfwe2K@5wmj62XVHEtg*47~JPldmIq4}>duRagI>Iw5h`fVxv!UpE|BmO#g zAC5cUu6nLeE5~o&TP)57`w_H;U+>n}mF+ zXBs>^*6Qb|o$ME{!5`u}-LDfiz^A@u-U#9}ywUO>*wOOw>)4L)9l36ugnul2+&b&9 zLGTOU3)WfUhrn-y-*%CmH~o9g55w=g!PepLb06bV_{pDHoFnLmP4Jel*}Sn8ytzxb z(*G^#pQG9D;qW1kSo|AX*)ImczvjldKd#5Xn=H0=`TMcc;S2sY{+aDQcop88?+qKv ze!qg>zLkyF+3>&(bS2O0&a?o&e%iv1KHmC&N7{89{Pu6F&lhQUi&-Xi#LvPH?{EFw z5dIAO1@0@>kk2aksV`f*{QC2E`0A}Kz*G2*ZnpfVy<*&7ckBi4GRoT33IBNbcBh%| z-y1o@`?pzp=h%;6ID9D!7C-KHz+ZpW;`@4j27cVF#@DgmmGC_V*nSTp{wDaTpILkR z+pmM&+ybLAE~}av7)zY};6Hw4;5YnU@UGn7W10@mhkq*9J2%5Ce|NpIZL%N1Ecl?^ ztMh*q-o2G2?(1_M{E&03u6PYS_zOPcWE=Nm$a9ZdtX&DNXJ^3of$#pW0lz*u9{$VA z#@%Ts+Af5@^Oymqzu*S==*kx!y3No3bKpDlvlBA61A;f<-L|nfe!cMpeEL<^54T3q zf}nw07+1z+{u1+j{Pyq;U)VVM_i2xUPubD>!Ow3Oz~A9HMUO_dgURq0SkJ6vzq8;A z3Kst+_%iqotP}QuZ-h^xW4gfWy8Bs`{NEmJ?fQWJYzwcqvvL1C@o0E%YwOQfiE|o! z`C6OjKO)Xm@XC8nmCfgK2mE_F>{H@A1ONOC+iwp3q4yVBUA3@Z2b*upMzIwuwhZyklKob7%Vb-6%f3AQ(n6Vwc#CmlKyh&i~;&c_vfj`~Z;`{dp z3h?Nz(5Hz3dLZnyl;y5HhoPCvAPzjUv0H;qSI0=}O2QCs1k18>E1 z0lyBch2QwK_1gpc+dp^&KKeLIyp{4!#-w()ZS`pP7$a z++pon`;Ce3<9C9;!8p!@p8#KZyTu<4zZib-o|fmH^ux{Y;2i^g{(lVKocI0w@%uh} zAx^YF9b*ZpekYGuC;#=?JC zX5wW08So9n8EnlCUW5+{EdLa7O7Irk-}dXAI_|=`a=droy-I(duq}LFI?T_{z2T?) zWyf`2;-3$n!S{de2)_~j!6#N%f5M-HUw^pGw~uoit%85Kh53)!kKjl6Y)(XR;%s%7 z<^Rha*50=C&))DDpC|I?-(%s=onnD+#y=na#J-lu?Z?*lse`i4a`T869#<{lNyira_Ud=1CL*AaT?+0Jm153XX3vOA9b$98Dc+zkKwc3 zI=8Y7BmN)oMtt6F6@2%pmVbVY?Jx&F68;P?2>bhBgW=a4WXHuM&a*ee=R9cp_3N(3 z;K$51?k+2$Z8`ibKA)9gzu&`;9c1nG_n8~J^K_-I%5>Pp_#NOs{AS=(>+YZ%d?3e< zpZ^EIH=S>Z_&8U?FZTL{c*YgenSuQ$KjXY=d#e43I7LvYfl@f@0g#% zY1XdF_xe}1qWuUu!yg!FV5oI>a1#9NM{K4T3(!K$9^w@_m%Zk z7XE%0tB2mS>sk0|d>(lXao&gLni}x=d<~!Vxpm|tmTnNsS^j(To|Ruew1D?oYjG|o zeph&1dEa#q{GvT9u&?tBe0F!^yAtPq_-&6G@cq9K-r!K<2hrY7;oasK4~erG{x z?;mpk(+_^;wHDZ~4=;ni^Qq;(Kl{B0{>>_zNJhh7gdanJ^d+Aa@Lt0$|1|zD@X0?K z_yXR<&Eu8&sr((|%I4SeE#Qq`vwSYGZVHZr?{k~QKaV)W;DZv@5B~ktTj1>)S^$51 zJq|DM{KePL3i$HV7)SdN{0wjZn8jbres^{E#VYxK&H?S$C!OHa-?WbL>zoteLq4#o#9`*`Jl38@q59~k@pGDh0nR#In@qe}-@h2T_dEQI?)P2a>brthJ(@)S2 zKI%zp?=QqU2EJP6;bD%~33dyqZ)V=iT=RLmy1IM1H2tXQs-Es?;7es?-m1#!tjz3u zbaxG2doZw;@dEl5jI}I$3|d&j$7@*2AjE5g9*DPie4u5qcaWuBUY}QZ*Q_uL?C(UJ z$jZEVPyGDHHfXXtBF>436DK0h@5G6?s#ovR^nV6BSN?p7mVZgp|8rdczQN^IDu1r& zl^d@fn`rlBWOR-}C|q>)wH;Zz(S8D*wN)>Az8ki+Ens8+s4r zP|LqZ(_gP~>9;ifW19Y+-}D_CX!@rDhe$jBTK$%x{9~H__J8TysqWfJOVcO1FNb!1 zm8Sn%$Cuwyx&1eq{$V{w2=nFpHT@U$-ob4x{{c<^^}qCb_!dq7BTfHvwbOzf@@X*0 zrTs6{`=`OL@|dPy*0`M?(*AC1`eSeOcwNz=RU@&&^>d`Z*K>b-^#m-tL5|8uM5zgE*buksBK zcG~}>>3?I_&pX`?EAQ3x&-*vNoegd0zt!}Y|CheM!SDAeKjhp0n%DaB|J46fK3CIw ziW7ssx~}O5dQtx4TK*|b|1G_5{^edAm095bKCf4*MwM^X^lwpr<{540k7)Wk^t&)W z;oW?d-_!KZdaG~$rRWk2lO|2v=N8}fSP^N6Ou{vY}BulChfzDU#GbHy`w?U#Cj zr#1aS;r!yi*7VO;do1X~cWL@--r&dO1HPKdi<jhg;#FZb=#u$aoWrvJI#1A0v5KhX3izRV~5zRKqtHT}2sJSFU3Kd9-S z{eIuTS16xf*YvmjU7!9DZO@--`pZAvcQo*M5){XDe^v`Mg_WY{0|Hm}_+teV^>MOsX>Hodn zclZ)5|A(6Xkw5eap+kvs9@F$^zsr~ZnDW`v^dI>;pAh);G(Ay&$k%E+zfRM?>dSolcYU`j->>N# z7yJV7Pt*+hc}@Q@{jSy@pYe?TSkwQ{kNA4`d~++G_Ah<=fA3{p51-e1-=yh}{;n_o zK~3M%^t)$#z5Cj)uBLzC*ZX#ED6sr`P5+hLFEGFG1)k9lYx=EozTOwLJ-?>ue_QWO zf05Sv?=`)7#mn5qvhYG<%8TRKj!80;(J#6`v#ex{`TzbWM_k5(!lSS|m*BVER&qT>?y+`zhartX7i#)rzr4!7rRg6pr0;9`bHD1#hjBU4^qpVy>7n*-)AZW~K0mAJ zN6IJY)$eQiIpq`j_37{O?f-rGmD^uw`X>tV`Qo3@@zVYVIsZLPe~aov zkn=61%X~b)<7<4N0(z+F@6h?RsS5GU%IC!bpC8fm=L+)qu%=(u^dSHLsOitEUIn>* z!MlC?D~0qcn*L#}H}DxEy=)x+v6laMp*`QD>2E2_yI;}tw`;wD{~sd#5zLEE==v7s z#mA8@ayxmgU;p2v8L$3H-~N{h^X2bodb7~4+nRo^Fi)pQ7yfVjY0o&w|7}|S`&9pf z+`d=SE84Hev_0=tK5u%BZ)d9Mf2iq)@AMo(`m26Q>;1XadcO$ivaTK#A<|`DT-LkkU+#up=9F3+2BV>C)fO z&mgyVyYjEEoO_>73H$H=s_D-a(*HvFzfISN!0!uxro25Zq{}!yQdqA#nqE;pK|cQw z>C(;(U9Unrzf<@_KKno8I~wHkF2@J&g#Wl7cWYwkPoa zoS!Xk{}&_u)h~N><>&`J|G=m2(jTq7vM?{+tm$V|KSRHcTsqeIf}QhLE&rVAd00Qc zOVdAG;Qv8Qe^^-GKC0;-DvZk~y;$C_*CJiU<*kMF>dQ3!5#1L;e`}iluEIEe71CwA zc2v$`UObC*8LxZa=GXa8(SiAP<@22Ce~{0+TsriyFpoa0{FVJefB$dg^HM?2U;Q56 zueazv75M)hO@F?yZd^rr**toSkv>&ED{m|8%R5MyeWYk#eHGHn`a2H%3;OxZntrZe zfBvw+=RL0cqm`XPd;Un%KcV^=^yKC5_2V@z>{DN$={tq-y`brj73`}6O@C#9&sS^u znSz}EJEY5aedH&-W`*_S`?dUwI`6`G{k*1syrBOd*Yvj+_V>?y-zQbh1f^a2eGKU` z?>9REivFBSCm zqaj_#G4T5fNyq8N)@_oGn$0@7uC zpVNAS{_Jb|9~9Q@uXE{G_X_s^|ET33DfIW3kuLRq@qw4{k>dJ4(efWE=>Kbe-nVD0 z;}zPIB3<~rL**9qe;esePYQUg2wC9hs{Obzq$!CAi_v=hyo+g_9VxjyUmyYikex;Yd^V-mXmVaGgUVjbJ zMGj&A2zvO>wEQClz5Smx{gnkh|1G3H0$hAX_tPMsr`-Das>(}0>QmmR8UG8)e-`{* z?=Hk&{l4=5xbhF<_*a_#A#Hz1fBi3b`8==V9{SPJ^p{j_A^n!7KUdI`xu(CUdKk)o zi>80LAcvnqy2$OE_UDzMUs`^nFz$b*>1PV<|LkAX_7~QHFV*z7YdZt~T}^*mVI0Sr zen#g-kk2=1`p0#D3FG^{NEbc)iY-6C!o2;8F z->(lA^z&~cUF3GAVE0}?dfEKCCFyAAztXt7(9W+`{*}W1@;#dVc1;iK@QaTBt17>w z`WD9R{jNOhjlz8YnDW^u$p2-(?ECfM!us=HxOCXP1sw5&mVc=*?tP?-9B!-LJg*)5 z8l+2qKk}l_2w#bZP(V^_|Ah{{KPCUoP-}A*2`D|6!Mo{i0x}{Xbg%VS&#X z94N?s^p?VSZEJe7Ah(I8-`4U$Prk{ezq&Fm;Gpl&@*AqpL2f^x>2J~Yg!JFh^fLwh zmw0rCM>IXu`$kRwzJgvgH2p&b`*2s&j|%-ga_Jbaf*$^3E&qH$4lii>xUi4^3esg9 ztJhcO^`C0`6N=x%e0ECOj&E33Z)y5Qp})^*`U~35AkXhq{xARW z)p_wwS03M8{cdlMeNgAq?@D?7`|{5p8|i=L_&i#9v9NwVih~=$BgJ*^F_->moMOJJLn|8+wr?$nz(a|3+aPKdR;5q!()cmLImt zr~ZcL^WJxQ#(~dcNSARrr+mV=T$1u7?fD8<{?(P|bY4_caUUSv?StB{uwVRh<^REg z9DYL6KUA1Uzm4>=djEr#zg*D&&-+c^{znSq)j)c%F_yb=1L-2qeU;~?X7*kB->6hx zST0?ujF2w0);kpoZnmrO>@=QTi)Yv4*;zch5zlVMvs>}( zWP{`JHex7&V1+Vf^omBJVD?v4CldwQiaoo$_T z2mS7alc8i>oJ>ZOO9N=ucu+>)XjLnnUhkA)b)!`i!o5kSn}etDfdb5W=ceOH|9)qd zpPTmjhyB@fKI;#H9)Mu8*V{VkOrA=FdTTU3xtbqCG2QPe`=n8?ONCN&isV`EjdY`vTs5cJ?Rj-Wh*YV2qrm`;S<>iX zt<`CDo*viFPxf!$Z*{WkTjMuBeY|nl_Bw0ldzH8Iy;9rxPB!Rtq{AsBqXRNM8Fu@l zrG`Jeb}2i)f8)v8PA@syyLPqJy?FWdgD17wR<3WfmFt^q<@#x8<@#A@<@!lz<@z~j z<+duF@i-s$c4w3R@X#sjXv_a&Yc#yS7~Un}JXwEmcl_|~?0RqS@%w|_8>80#v$Iy` zfl9~B_Tn+Ky?o4UFCa79OUTUjA~Lg~$Fc(3`F^Fb^GWNfqQ6@Gml647L_QgjPe$aE5&2|9 zJ`EzD29ZyL$frT{t3l+`Ao6LF_BBcSnq>T%q-WR*#>$|PB3lB_aGGV>>4_D@n} zlB_aGG7~6aHc-NhprpkVrbQGcWp+x+43(5w3Mn%cQf4cp%veYpWGvDqSszliAE#_X zPMbulQ?_MS*-~6(OL3Jg#Z|TxSFses39y^b-~#}ZbwIm4PZR9-NWYU$M&cZp? z55>!|oF|+Hd1rEdm870l=HnjxH9M31{_cvPvu3ManRFi9n)GKmy0ux}sie{$mWg7c zS$WnE;b}AA*GVhWd{$@#08+_7obMmHfn1VdV*_5Z>8vv;adBa#2b0sfs@07~WhVZq zrL+y~i_op@p*X_43#>ApPmg3M;WE1zJeQRvuaJ&kJpsQ1D9JKAnBMCpYt8cH2CO(# z4oQ!paBxFhozFVrih9bq^29N5B_CD}^VwQ+`qS(C&s^wF$Aiwv)=}QQTbUk>9yqt% zRj3U#EnR9B=7P8c*SLhiRCmZ^G#~cn<5R*c*+?qW#SGdU^bd#E4-PP3r)3(lQ>d2h zLZ7-vr+JyI;De%8qCEV{z1?|#)`5DT$JAJ!oGGT^Xu3B!G4!kErtXdWcyxbB^o4}Da|);FZhmj4b21opdL^am2|(F8aeV_O%X)IH1#3#ZZTZ9gY&;ot zgQrmZ;=k&l@NXC79;R?olzG?{Bv{cdk9L-Q7MO9cR4@Cr{kImE75E zt5s@c!zMj9KJLtp)RT2?+!-8>FmaEL7b){$zdP#Xi+@jNlVa^}e!Sb-Z|xtY7plX( z-pw10y~j`PH9MPazqOm$-hMH&YlOVU=>3*!@~`_H*UtB5q@C}rNITzew|2g_AZ0KIuQ~joIkR=s`Z&oOb(tOz0(tJJh5v&h@!>*&mN(Q_kSah>Sn_v?;M9|Ai8}sZ_I}0yVEOKc)1yV%K|Z|MZja}fc0L_0eE_FHe>NNB7l*xmXPDKr z0G!15CuSy`L9!+^3xp|jbTXRVC?r>5+oPH!E2hI3S+1vw<=Hi4Q4e%N>IwCS2Bx(d zmiGR^>}nqt$7O&?&L*v<3a zG_-P23a-EPQiXQau-gd1rOpIq+)9(NXNo4|voL(31{-g_-M@8mv{S#nb-nq_t*e{a zbU%5}_VB{UY*eO$(QJARjTAG;RnoWkdeXsds+b={$ zrU$Y{rWe1F>DO-~(=XmeX3KS9axj`;charrerM1Zlk?{6AWSpeo3JrfF+h{~Fo$BE z%1-tzlWZ&bKiha`XDW8^+1~0aa~jIqe>HT682)Nx%? zucJvF*ERJxn$&S!Q*Wb1t-eMxJFaWBxYS@DIa|_LEcL9_tUIo23RFz$xURwGi#1JA zip3nBktlV%--wrqQpfwPj#sN`dH`%@$6F3u5Nn#A4x7y59aD#|NgW?CJ=wLW^7{9ZxFG>6YYv4rDoi(H(Fv9^c9ZJR#cdbs&w z?DfRQ;tss;W5guZuyVV8{&xKWP*?%@HE|LtPRv!;$Y?r-%MGY`UWMXyN5fgC4z83G*Uu{}*Xxg!>(?SH*H0=dSFwVb?N!6f z_LIuYj>}82f=L~hm|_K!IxaKC3MO@2YKj#sYQ+j>c3f(T6-?^5nkiN=spE>KSiz)@ ztD0g3i(0XQnH|?P#R?{MT-OvUnACAyQ>zZN(i(0XQnH|?Pg%T!pT-WMxsVUMhna8E3v8*O_TxyC_ENTs8 zHM8SV(=b+(IxaPZF(!3zaZflRBEohH@Z@JqcF9Iu zcoJC?r;m#-K}1-Tp2CFqYz?8$rhGK=+0G~O(_lNBp2$x_?QD7?KaDOi=?P#+2x3Sy z;MwLMU+)qPced$?{%NqYO;7YsL!E7UqJIQBgg9rDKLHPNQXJKP0v{5MaklFx`lk`j zHa*cljc+#T35W>M%{Dz*{|Jsq^w7cPPxMc3c-izs|1?0#rYHJG;6$P>G?PC86iJ=v zAAuAJ!4yfI=pR89iAJ8={Uh=tz#`ED5|clH7Kt8_*z{!o(71S;p2$yqq&7X7zj}kt zq$dy~As8dk06LpL(Z2?fAHf-jZHuq31ZgCC-eR|(=pO+ai5|I_{0ZDh^w7noC-T!{ z7n`2QPY+&fdZK?#B0mB<5`sJAra*LmCCDSu8;EBA2=)kfZ)|$9f9MTHn?5eTR4*`E z^r@ck*!gk!rFy;5rjP4iO7KTY@JCAUM~c|e*!ZUef20I|qUwDaTZUrLTD zQi4BHa#)cP{DCVyarqJakrMoo68w=8{E@OV3xYpVc4|TJN6OAE2>wXP$wf-=N2>QM zP5mPHBPIAlE+$3i55XTPIlxE>{z%CYMoREUO7KTYPBBtM6i53{@P`D2$LZtvBPIAF zC1)8D{2s5L>>mVwqy&GY1b?Iif20I|qy&GY1b?Iie}tQ_=KLb(8Y#gaDZw8p!5=BX z9}@K*9e;v9!nItp{{(-8OSv{Z(LaJeQi4BHf!+FvF3qpGi~*z|Gzs}lSnHk@}|Jfq*q{P=ac>^u(Rn&{}kBS^sIkm zd==Q4{1w>Q`DA`6u(Roj{1n*P^hACN>}+}>KMi6t=@r=7`DFjogC(1utnV7hX48}P zOM#tDPu4F5b~ZiHKL9(t=yQIA_p=|YJ-4%ZnIt^7BCiMl@AXDA{J-4y$6Fi7+wV;K zUA$p{6>rUy!gJkAhE#sod3^t%)xF=n|J1?7`p*5)6K_7eAKqxOa=oHixn9gxu2*s^ z*H0lU*DHXP>($rF^}@Gu)pj$pz3Q6T@n&m8mq{HLiQ*ZPIzAYBnqpGNg{D}>qE?H} z%#KSAeb$EBtxC>FKaab|X0YI=NPQpcsHHl9fxmzr95 zCUsnDYTudE@foVtokgvuCT4bghU%G#Ngbb|diTSmj?Yj%FEOd(x~6wOENVS0F|*^k zrWUVB9oIEIC^4zyx~9h@CUsobG)T*&j_aBpkyzAvLSkmebxqA^lRB)M`JQ*>PRdV-b@&u4{TIVp7L-O^-xO>bS1yfrv>R*EO}8EozO%GPC2l zre`50bzIjp63e8H>zbZ}nACAy(^C+OS`R_Y?6|J!5r|10*EKx=F{$IarpF&9bzIl< z@WZ5z>sq+`VUdTsA9j9R-NM}un?9~^;qHe`A6L0>_rs=-D_ywzVbW8W5ZAkK_rvBN z*SthyuWb6b?u94sZTh(Og$M6#dZK>>Foe4wCVv7M552a7*@sO}^iR(|YL`DDe5g;Zn%RDI%xtgR zX0{(2Gux}Sne9i$%vQ_D&i9s)o$oc<&i9s)o$pr$JDEzIC-PIv$fhUqQ_IMvC(5Umkxft3Pc0*pUM(X#pXi@jMm9asKXt6y^hE#EwQAE7 z{Zr?vO;7YsEhCd&{i}99(Lc3}YSML(iTUXv2iT0mt}T;6@NGp35ETmEtq2FAM8Urm;Xu?V zc(@`Qh$1E2QX@-M@M76*&;##C0VXIt^p0>~g3^QU2nQ-CrgF??3+^nt4eHN|6d=of zc+Dijfh_#^426paj&LALN1}m^5e`g}%z6usExQV4zXjJ;gagw_b#6sCFiEO=E5d>4 zq&m244$O`VF0Kd%whS^;E_k^jRWO}YKUahU(@FJoMK~~>WENd;cG*=hn=ZJ!A{>}b zs>3V7f$5~WydoT!PO8((=D=*b;P#4eU^>anyWshXRKavoeP0m{OefX*72&{il397d z0cKaB9NZ!Z4T5a%WV6UneO2=5W5Y`bPw-=L^!a~)E7Y_9Eh2eGSfXg3KFS;%?sv$4ex^3 zRWQ>%ybKcIz$D2`_wYDKqzX1KnCTwg2Z>a{<^}V`rp$B?Z-m%wV5WO`B_zUu=_E7V z!$TpFDws|(r>uNpS?&VcRWQ>%ycQDSz;u$C?%~0ZNEJ*cndzP~?`(K9B+>>ZNoKl- zcSGzdnCTu~4vBDJI;mI8A{>Y%7G4jDaA31rubJ5#nCTu~5Q%VLI>}7;@Q6sH3Z|3H zbPw-{M50-x7%wV3O3=L?RrRPBL^59u$dG!PZHJ4#JxvW)YT8HB0o%L;ZI z*y%%+L6|CyA7Ky%-(_drWRsUc82OxbT#^jJR9P5FRbMx>Ma>{gRo^#^a9}#gAWW47 zlT_L1LzO|8DuXapedf^aCWA0leXkdHKkR>R*rW)bE><2`iAvW`B zXL5Jzq&q+q=i(~;^kh2AkK6NR2FKbW)qSmT>4Lqi#48u<^Wpq>KI;!~!CnsZ^LxD< z#YZP{|6VzY35t))clHPQbm_KzZFlr|`oxVVPpYG<$F0uIXLqm69-o9)i>zEfZLM5A zDL1qIs$gdO#nZ~xs68uN7Yr*~r-_w~kfZ4UAFsTY=e-q>% zc*Y>D^rx5l$cUA~B0bC>&h{o42$L0-*-7WY<2fEnxPJZ4;@g>brulKFJ#S#BkLT0b zjr^!HJt{3yZQ^}3&*F*U=)v&vR%x+X71!U&YwC{1IX?16k&5;g=ZA%@B3pup8Gz$6*YIcyG0k|F%u z=D;KwP=v`Lpa{DFlVm^=g1Do9eMVK4{im(f?*&R@X z&4KA;2uQa%Fr5r2!sftqGN1^PLqHLB0j84yMc5pePKL;In*-Cy5SwmuU^*ENLTnC9 zC&NLA$sq)&+Xa|ThJz5B1JlV6q;7LyIvEZ^Yz|CN;he+dpwH;p#!EQousJZ53n5B2 z2c~i%M9JpB=4Lp?Fgb((Bf9`om~cvAb6A44D{#kIk^)~5k-GLm+*Dx25^C+%uRnYJ zXfV8#_VZ+tjVF7ZlZ^+kG1n;p5|#)@=d;06+eect)6K*EC+njJtq$JkodxsM%=W`; zX8T!SX8WNvv;7P(v;9h9X8Tb$v;E{Sv(;?1^ZjaU=X;H?^NHm2`3Rey$WGnfHa(G^ zI=yXrB0n`&O?tf~Y3CF9slVH%C#t7*s!dOnPpwp&o~WPNs3yIdsCGWlKQ&NodZK@7 zp4#+8|I|3O>52ZSX=>9G{Zqr#q*uGt&L{e(R;f)-^iOS4o1W;OTBJ5T(Lc3EO?ov) z?R=ttYK+?SME}$jwdslesUd396a7;&)TSr;r$(qruQsTiPxMbMP@A6UpW2@`J<&h4 zK5crUe|kyMq*vS2&L{e(mZ?oo^iS zTAQBepFUV;(-ZyEC+lo_qJJ82W72D=yq!<52a7%XKzA(La5=&ZZ~&r*Sqm zJ<-2#$=75MF8M|Z5D_K%c^sPqHG-*?t4>+F3TEeqi=`0`WTu6e(jpwlTuYd-8!nbc zsvznTE|x|(Foj_jZ@5@$SHW!FaIrMPfk{$BJ0cv&x|Qg~(g+8#awQttVRK-%Z@5?* z;lOl~nZMy;X`~9WfF&B*5#hjeQbRi;9GFfrD>z&%wX0xuaJX0+;lOlKqthcCm`>`& z(g+8plNz0Fb71yxxL6wDz;u$C#NlFTqza~!8l4{Dz;seCmPR-*on)4AxL9ge!E9rB zTTOz;A{>}bYIJ&p1Jgc!Fs2d0x6ogU%9 zbW$&tMmR8?WY%(`(dl*-%wA43Iz7UH>7+)dM>sH@)Vr$@4ooNY?yAWl++B?nAUYZD zu0}WzoeXzZBOHiMhP$f~4n!xz-PH&OqLbn7s?9;~u0{$lK~X2Pe)+_%f?4LN23;YwzN0~>B;^oH-bN2*|pIdcn# zPrBPxFrznI$&7Gd6NmYR!JG&MsK*18L5KJEao8&S2FD?n9&=)?;hd6ED+`< z4xf0BRKX@MGkU{U-Xm2I10!6?G&zJ1y+;ZVoeZCPk8mKfyNdfGQ7{;;WJanWvpZbL zjBsF*WMM1e&Zb?3e)Bz2faqknvl-#QB+2~t;m&5H3NpLHolTnqbL@vZn-LC7CmDPQ zcQzwcFiA4_5bkV7s$i0&kt_^8ggcvd8yI{DcQzv&*z9JG{cvY9QU#mcG^B+&_Nxp& zggcvdBlXT^qyU@UdS^4jf$1cJ58=*cqza~!3_gTAn|2kDxRWnT9x!xvTNb+0l2Qe^<7s41iQwR7#b3-Kz|MRGHTuw=zjDnAg3^yzW&7K&s5^US;7aRR%!hQfYj!nAg3^ z07#X2-Kz|MRGHVk%DnDX20*IJ>t1D%DpdwRsw`He%DnEi4Wg5^4dQjL>5Gx(^sjA@ zjkTsPMn*W0jkUHxpj-`?i=#SOV-YpA4FW)F41m;_*S*F7NKLPM+Ja)S^EJKh8R5Vr zsn$|4;>JNVF0AY07#97)iVH6W9Jt&20&^ww4MQw z8V#;zkwrBIKx!PpHH3ng748qhHgsEl3 zQBz|Wr^YZ&jbWS`!#FjDacT_X)ELI8F^p4V5T?c;OpQU98iO!324QLp!qgaqsWAwH zS6ay2WDustAWV%xm>PpHH3ng748qhHgsCwIQ)3WDo|lQQaty-M7=)=Y2vcJarp6#l zjX{_igD^D)VQLJ*)ER`SGYC^>5T?!`Or1fPIy*zDGYC^>5T?!`Or1fPI)gBE24U(9 z!qgdrsWS*uXAq{&&QR(M!qgc;sWXI9X9%Uv5K5gPlsZEwb%s#t458E+La8%^QfCOI z&JaqSA(T2pD0PNV>g>jEogtJuLnw8IQ0feT)ENM&GXPR&0Hn?UNSy(YI>Q%rhA-+2 zKGYd}s5AIbXYirU&_SJ{gE~V8b%qY=3?1Mtytw^PXU2b>8UJ-={MVWBUuU*`otf@+ zX1dqe=|i2F?saCm*O}>FXQq3dneKIFy4RWMUT3Czotf@+X1dpz>0W21d!3o?b!NKP zndx34?saCm*O}>FXQq3dneKIFy4RWMUT3Czotf@+W|`NSWu7t1JY$x5#w_!U zS?2O;ZWL!_%<#^b;hizVJ7b1-#tiR_+0_}dt21U-XUwk7m|dMQyBZI(lCfZRb;j)K zjG4_DGn+GJHfPLi&Y0PpF|#>iMsLQ9-i+C_88cZkX0m3?sh%;5G-DQN#w^l|S)>_r ziD%3rl^1p63kWk=GiI`8%w)}&$(k{bcgAemjM=mqvuQJC(`L-3&6rJ_F^_k~jNXhH zy%{rlGiLN=%;TLgt2kpG?~Iwv88e$R=JC#$U7azzI%9Tq#_Z~h+0_}dt21U-XUwk7 zm|dMQyE#0v#T>^S7*$w&X`@DF}pfrc6G+=YI!F;z7#XNI%9Tq#_Z~h z+0_}dt25>j&zRwzF~hsT4DSXryc^8$ZZN~U!3^&PbBQ;YW!_+xd4pNz4Q81)m}TBz zF7XC4-5bnwZ!pun!A$oCGu<1^bZ;=zUA{^Yotq72+c%hP-(WuT1~dK}%=m9G~b z2E#ZFhH)AU<1`q?X)uh_U>K*tFiwMEoCd=<4TfCKO@?ur4C6Ez#%VH)(_|Q@ z$uLfnVVowzI8BCenhfJK8H8yv2-9Q`rpX{olR=m!gD_17VVVrWG#P|xG6>UT5T?l> zOp`&FCWA0d24V08M6y0G2-9Q`rpX{olR=m!gD_17VVVrWG#P|xG6>UT5T?l>Op`&F zCWA0d24V22S~A=W!ZaC#X)*}YWDuswAWV}%82S2VeAiUT5T?l>Op`&FCWA0d24R{E!ZaC#X)*}YWDuswAWV}%m?ncTO$K3_48k-S zglRGe(_|2)$skOVL6|0kFinO~nhc>d8A53>gwkRNrNt0Riy@R2LntkVP+AP3v=~BZ zF@(}$2&KgkN{b&#UM&#UM1eGF$mLQ5T?Z-Op8I77K1P?24PwZ!n7EK zX)y@XVi2aqAWVxvm==RDEe2s)48pV+glRDd(_#>&#UM-d0>>pp~-`^h2U^*Q1 zhdpG^dUx{S{CGa=52o!oY_INUIP3I>)AhU!rCIq3`xKu`$4A%`@zI?--XBdSqX+F- zKAkOnLw&2&-QIfU*^_(qLHBaf+P~Yqd)!OL^7(bK{LO4HEHm3{pPB8&WM+H4Gqe3f zHnY9Pnc02{o7p;n?R>9lc0LiDPF*z`pI)DL0Os~f`3C;F#O2%DbhpSmDy zdZK^ofUxO_{;B)Hq*w2Qolo>neGfK0(LeP(*z`pI)bC)^6a7=KgH2ELPkjz1y}BIi ze4>BqaIoo#{;9jcrYHKR&IX&F=%2b8OnUV+*!e{N)X!kk6a7;!gH2ELPkjtFJ<&h) zFxd1&|J1)=(yM#H&L{e(&IOyE=%2b4YR7PpiTS_9EcbbbtgnP5J4vDOt3j{D8eMEo`gshWHu-2M~HAB^Epv3LWBdE(EzYS zVHhS!7$^xJytf<4U`hDkeS`zkNp&7XI53^mqtgfnCP_UywK*_&5Z=Orl4pkt&!@>d|S01Jg-8I*o8(I>`V{ z_~5-=1%ot+9-T%wFrCz+(+CHqlX`R-;lOlKk4|k44BCVb-bXkvon+`H(WBEy6-+1f z=rqEC>7*W=MmP|i3?IBVIiw8Zgb&_FI1tM`eDFTPfk-lZ@IJzUNHTozKEi=Xl3|=w zk4x<;7{*E2iA%~bPRh<)QigF-cIuKcjFU2qlQN8x>LIBuNrrJ!JtB>8AnRnxFiuL3 zUl_(o=>ZJGI4Q$8DLaEnH9XW76vH?v!#F8Bhe;X6N!dwE$}mpK&SFxAaZ(KrwFSj6 zPRcM&$_`{whH+AMB$G0Xld?mZlwq8dVVsnm%cL3}YKxj-oRndll%36_4CAEibS7mO zCuQd|DZ@CahKJgMVi+f77$;?iG%3S4DLbY~8OBN3K~2gqPRcM&%Fb$14G*rk)+M;F{CuJBXWoI}k!#F8B#Yq{)N!dA0m7U{M8OEtdH>|s9JnolPA zaCR{eT%8^+@sh7@wcD3&Y+k+CzIY8GdzIgDy;l=Mf^< zA08qUaHT1}Cfp53Do35^MMV5fibX=-Hv}Ipse#FZ&h+Z&evX*NRW8%+Xq=;_tkR#}$PWs++IRVENPbWH zj%KdXyLQ5p)>vt12&=>w&o(NZ`NLb2{w&{}b-H)=Jd;oW9}2EVTIaaq8#OIf2FFW@ z$npy6nREshAC57=>*B(PVrmsgzjM4hLjeiz>>l?9{UJmk!JS9BYhizOel#EUio>QO zD{uc#I{j&War?UGF+CY}`=j<8>lT!6cXlGf>C_#qIqnZTgZ5lLKbzm1I@Mi-o#GQ8 z;FW`@&{|(r6`tn?$)hBYuBPO&m>LjwKIp#QAQ(c)5>U=^I+?T_6+Z;g(Rv0#=ntm#sAX+G>0 zN@(llTg=iy7w24FM0RK?y*Jv!e@iBl9|ifOD&}07_UXihenL>F$VE5$m$$%dJ}$22eq6<(FI$v+_hhAY(!#LjlLPDt7xM1F z5GU|QR*_1v_)lgfsx4o8nT`kj+1Al~co%zbn5=luTGo}4M(WhTB%E{}Y!9*TL%oVK zMn1l{Shk9pRagNlDitaP5^=*@A{oC=!Vl5&W3zocMyCT|A}wOuS{^yAK!c+iMC%H_DXaeJj_-EaY|5=Sx6@!9M!Ub-^2t=vhs!qI_Xc{sFxRz zFGbn|<7K{qabKEZB}0cV3|T9QpD&5{-CW;p4m%TU)+@8(b}q#|^=-D z^0CzAdP?UHP`qqg7RFQgNPx_>{_#~@U)vrI^NADp?x4SBn`(L4B|EcmKW0u zVyDWr)rcy{hXZ2!n7dAxKOE=X*>(?>?DfeL`N@OPq&V(jd8i4to6ezk(_8)7(PFO> z_!gj-e1~v0LiYgdxG2ywd$o{nFWAEL3(5wna~SaYe0KfdDy|SNOaXka4BX2Wn=lR- z(k|?~3viGeUFpLhg}DcqhwcYusmZs3NgHZ4Y&J4uunkx{yEyA);n?f!uT6YEBdT>+ zos;~qk9&}lT^OI8!R5}dHxPJq+8RK-_02KZVQ4BG9Y+v6ydjvOKv(&sZ=nxhWH+u? z=f!CphFcyybF$sWF8a_J>$1BWDAkXLd=6u|$fD`;3QU2S^8ifq^ZnWFQ4s_#+JI)3 zFIPH<$T$5ie(TFHC%bSpLCd#B1F0!A3jPd*#D)8%@a6|Qtgzf*9~GsHxL|6S-L_8S zbPJj=y*h`knNFStELhxoU9(_)f3RA4B?#T9Rk62sdiOi)=r)KECxfMJ^16p_EX%T` zK9QA`O=lTaYY4$4$Lf)n}#lHP-%xH&nzf_b%hly|J9tqOBb=dk5$fX`oTqoPi1V7GGB z?#_-a^BgOQteuzOtCW@TfjHtWbY>kzOw-vU?;MMJ6Wg!rRG|`a;FXzXDlK_hKr!oP z5wR{@lWQnbZA1C|L(un?(O31TVaF`-UFo_b=Wju|f=c4k!HM72#J#t|QwL8DVWRV> z4u6z6v)yfOd}5@5y~eM1<+aFz%)tOyX@%-F8et0+-vwuG-$cG(>c;Ylo3C!rPRG(| z;HIFELi2)>1}~8qQmSjpN zx2jwfDvkLfioOQ_8Enhou`HZCoSN^*8;{_P3C*oa=!n@_r$lLr*<%(7i&+h-P`-}^ ziNUri)zq-NI}8YC_x1a5_6$Z3{BDYO63(C8$tR<*dYQls2ad#$!3W~u%JEL{AOOr` z?i0X{=M=ik0lCn0AiL1NQ|5>c==x))E2C~lj;RXj5C+`)pdzR!sbLuU(;XlN7*GW+ zI#1*S_Y-jgPiNPs&d-ItCo~2hmviH|?s5ukz{(t7kZ>8xNg2y(xjVcjk&3d?x`lUj zT?_|6*r^5FS$;bC{DY}&ULoZJ_vO0g@@w+tB^Vf;`2Ysda5@^~mmFYpax1I_HLQ?s z2n!Mo!&=?I5QcFrT?wSe)48CPYv?$9=gtNOjfIkYCpO>!bd_9uh;|KQu1$Gr$(a*l z8T@q@qc^TSr}z22^`pR`h%pb8DnbfN+Vu*Cw{J**SP6n|i1^?JbqlcT@ZQLG zce%Il;>A=1p{S;k>2#3iZ_D;huVXcsL=TS#{^(_GNaTBTk?Ioxu3{`XwY)yghntg0 z=R}frnRRmIw2 z`b*X3mAJF$LhB~ksf|>+w#D5mSdHEj%QChQ-vd|WFn{vBJfs$mxPrNeTQ-xP9t5{gqwXtlgRmm zIis{e@YP4Ac4)O&;RxPYI@`kcl66Ll-Mk~GA4TjOW+ejL4L^)5y))4#C&85=4GTNa zdBAfk`GI)?>l=WMcl9>w8ur%*(SR;(Tfz^hMBq;6`%@RGqwlm~roy`dqwb1})>t)VRguK2 zRO)|qVnY~rSoRBQH$$9oI0;#;I!EwjOe`m- zr`Id`9;U0GyQap4i1PA(;Q&4q zw-&7V^6{>*q-R(pUa;~#dhs8+7=)}=SUXiJ;{F!L$zeWm2WigPsNq>| zNpWhSnoz~fwfQidRc)Pgnjd4A~K9j8N+$?M(`*e%~K_O`9+l?FS|WefHJ4d=t=T)xq$2Fmv~ z^px)L!DzpOXI@v03cmnU>k_CLJ%dEdD!N&2)cL`YxBHiQtOn&F21fRCiIelk+@;2_ zZw|f>js+XR1kMvtXmQvwpbF)ub6P;|1_=+u3tn&mndN-y*yxWtle>?@6>>VLRSE2g zTQD`b#c2yN|gu@bppUG`kGULc7Wp zJK$i6>2&q)$$8+Q-RMQxv|4c!QlFyhXIJW)kUv zDvn$WDiK5}Uo~@ozg{$o7bW27JLvQWh-|*zb-s3Nj0KO19Acfi;f<=~csCMjg6B|- z&@J7$<)|%coy#g>>X%<2W#>~PvP=uG=9?1Nxt8DvKwK(2qX*dP4)z|5R2m4FI)Z~& z4#FSeta!Q}H4JY~=}O?oasvlEPUZ+_h&kN!q~JDCNi+b&=|7GY^h!wGt$o&X)};+6czPn? z?+L}$5BUO~z0cPLI|l>CI`zdus)2`4l~O@@AvAE0*d8`lrV4+$#|0jro|^Ut&cP0~ z->CG{rL(Y_MAtiAE4>pHv=F!21g?x8I7{(rKAm>thc zIj)J3!4}t-h%Dj?tx8;9*_AU_T}?iEP@3(>S0c1ZhfK4br`%K#Z&%1mCZ^5?`^@(P zrfXrHRlQGfmLF-Re8Gh+=ki_iQWj1Scviv<+I-NvF~@OhVK0zCadnqMTQ>Cqh3-sp z8n(DZA;&-C(PVaWc;o`rdWsjq@Z(AxY+yOBxrmqh*D9*xj7JPrS-^1du!mC=EM!Yc z*ht{2wEKae6p4uO0dqwVBA16En^n+m=~i?eyMXu-i`+@FE>Cy>rns>bC}>=(G4#&Q zf(D$a9Gt8!PN)FG|?tM}_YVQo*HmA=Kx}yfbk>Ls9!}2H$6&AXb-9CKk7|PWt4KD&s>`=^ zFB-Y=M7Psbhr?pf_vBu6_}5L|O2*S_Dpq{Xs1?SuP7Eg=*h=ccZM-Iq%e!~4^#`(y+U2!g`4qh2_Hqjt zUPTip@9O<-fOcFh@uOC_SmI8JpFq5_e>GyIi7wAQ9icHwFdrnux*!ohif}uMWD8gB zaSsP~snuRDY@dkCiS3_GH8VFiqAOnm=VflRPVmL2;w=Z2T80zS;n>F&o$kY8_U<0T zH?tNtA*-8Z6!7)!VVFEvCwFgk)b77e@jN&|d$ zvVqe^X9mYYS*mb}b#Ye$?+)NH{ucZb81touG&bB0V_9t;b2?9D89dOIWCDA|K@9@{ zUYI^?m6ZnTG^oLl?cmPQ$+P*T`Jgyglo#F^2zpzbuqhT^-6u|$Tr8Kd{mZRNi3_2} zlv=mToc4-;BZB0b0m|)6`fvpmBT|AsG!ac6-;J8`R1ulkRer4$Uh)uiH=W`ZS3%mL zJuP?&+!|^|;b8Dta~d$gNI4S3Xa>GP%PPtY3*OV@SI*6$HIOO7^7>OuYPlhYyL5Z-->&dgV_stK zLR3Zw`!X~PQQ=EV)(SJfer^Eo!cKPXjiTY9-EdI>@reqjUm9*{_-mi-3r}C$yt=&w zx!a37VmzITzjN#s2)~dm-paw|<%U;ZLMq52Xj=_%_%uW$3@mm&%w``$Ye&^cATKPi zJwQ4qfJ=kUAydo@ySIF|@tU|7mtRs@f@&F-lJWyVuUGg|xjZB?>mK1A3f9GSoFTi> zc+@@G>n|R)n&GcJ)LhIkGBtp@FKeaEw}PJ z1JHw)(*+ODRzwy&RZTb=)F~|3@L9X@g(*7kMyIws8&Nial~Y4r{wVXC zhJ1J8TDryfEhv!(H)ED(Q$7Xj4!U;WAYR(xGVxAfUDg1vQ$aSW4s0Li@;=a-a}VN~ zO->wKUSkN=E9*yT?SW1kh+tUDK3>6RDz z56_gTYY6Yqr%a&lo#PVN8Ke&XJR%AthV*ob!OIu1?!EM!>18R)V*Pc&I^NTX;M$@= zyn!GTy9@sbFYROwBd(%#7nfwZwGkxg14%IG(LfSx9Se)C&~9aJR<~QLy&oSY!j3cI0rUvwC`AW zoqBA^P_LSfL2a72gs^~@i;3Pq1WC+baW~=Cr^}Bat z?xYM;IaV)TT*DcTX)ZX8&MYh3<>ClQrUX&=1hoJ$k0d}4r~YdiUjq`u>WCmFz%cuf zfP#}Ph!+MK-t7u7!l#~I%f$*GS?n-T7L+CCy9>%ZHKsz1z%{XhIlL=_2`uiy(^$xx z<*f+DqMMzi%bH(S;HM$uRBJ#zp(bLEdw*v%<~gg}_3yQam#(19!9$0;piZyl3^s=U zB=)y-QP;VLFV7>kR<=KXf34kq{Mya-#mo96?BxqLiqhJS=#&#ky?9Aweeh} zro!U2ywlw!YmwR7lBa@!#ij^K86X^`9F=>SSAkp-!6sr;8VvgvZ+P zzVbFk*~^X^)&wIq0bmSFUr@jZLkgFb@^)W>1`=7~zC^pv zUcnmhpe;8t5aakrUTMP`AVK|w6;724Ww3sfJ9{$;Z3t+mWENKOUV=M1n)N!f>Ee!j z;S4G4+M!id@mb2*O4$?C-ZC$n47w=Ec@FxzKAD^-GIz_QjND7A3O|S2(0!y4)?U1% zF@@SW2M}&Ff_wyZ<-XG?{?lV74+EX% z`Z{H-Cgahd>>Z4t;H@Y&aUD%su{c;)qydkRUsZ}7g!nKs0Fu-g-yO{-@-E$Kh`c}B z5OiwZzi>wvF=I%;HtxJ#%OA+I-$lP_=x+^cmlaK*T7hL+3{&^MmpjTi-@yiZx*=BO zl4q%D<79!=QR3?F=F#hG5+09*)4KEO-dDHls7lyz=`2mKLdt@*a?$a$?YPmjO1Lr; zUHdb4T2;1;yKKbdlzabtE}pIf-n)^H^A2AA#r0@6LoW66fe+_{W|qs&PlcogtW?_X zus30Ubz@ofd{G$WCU&C0WU*2-u{edq^%_lU?l{x-VGEG47h9)eVE7XktZvP1EjSj1rAjRyD2o@(+uGP&Mzj0*~@U|PjjbH~9^d(OW?8KU*V_~S)> zIQ(3Evhk3qxTUeZm&i*y=Y7bo^;-~}8B5q|$hE%m3q#%#!o@9Hlx`v=9NZ-}#LC3* zTmvTqrSH_7t_SdSHY)R37q4y4{BwWK=+JWy7x#$W6*0Q!9>21Eeyg3HP0!XV*Y>vW zr|tGL*A6dT+rM-<-Fp1e_Q|a)yYpN3?;o}+Zfq}L_bV>*^1TP8eRyg2AWv`LTO#Mj zz2?pH`@QqG?>^bC^boUvW4IpXN9Wj|)VRQyf-MAB?_@UXqZ0oG4L{0wT1P)lfJFA*U6Qf5p%4A6=B8-x!F(uRbAZn|UulxpN$k|OvyDR> z-JcvM4Jdzs0YWxZa@pe#H#+BUO=q_*+@2(Nw=ZA4`Rw#T8y`~{^!K}nOTay|_Aw4X z7q!6K(QfCH$#B$03!F8u$dln*+m7YbKx-S`-MTt`a3{UG*V^xHZeD)pieoz&^5i@9NfIG|c^@O$eeG&1Wl(krob2b@Xw*XY=Xy)txKF>LsRTomI8I*3K#d zhQw_)>?Uh@0zM`9eKc7SX_&5icdtIUlGQFg)1OaU``h<#CQr6HPeFCoE3V_JcR@gi z=PfCSXUYrZ#5D1NM=Oo!K%r;Xy={C7oD>?tse~hFcOYFh2!dPI+n80?>XsAelF2Eb z2t9-wSWXJ%%E9RaTy9IVt;$5aI;T$Nu$Rn5LOLK zv@YR>Vn~$nI;(V@6`mF>E4Z%dIFKQAB3!Q0mBp%!#b5S<#YjSsi^dfDg3tM!W}Yr) z>lz~8I<-`|iV02gJ6HCWvRo4%n^Pk`Oy+9bC- zutO|9*R-m&@*YSVffjv~ncy12V%TMua0~MdabT|r%13T@2IaZ(2CGSz`;)F>5 z-Ru2n??&zE@%Gc#)5}+G+-+iMa?|#T`wCKV>OurX6_gLxoXTZIz-m?D&;jtMjraHD zS-v(F3%tu$IX>=;S2{Zyp58(VHpQuK07T;C7C|gW@Kg1i5rU8jAb)*fTh^H{CQUef zw2vo`*DuX?CWqtd$+eqOK_V2d#-;7>rft$&tdpDco^S6)oZ(nS6)19Z9_53od zqIF%)))xSHSSr&Y?hFlQ2P>Ufr(WMy@D6oEcO~k4!3Di5SYytO5?0aG2lH`=gU3ZX zdZ}}7B;SmX7dQ)2y;1>jRz$LWOTZ{`p=2PAkv#uiY z6ofrVYw-8!V03G>%eT_mofzRe7%8l!tsy z#U4iavWTrXH3a2AaS&p$qBxRtyt)i5s$Yn&y1t$HFlJjqSyYSbJ{qz(-V*5=U&;}u z5>)ld{Cs0?=gKyOn`O7UM>yBsuU&y?7ws>yuS1>MZP{i$V2}mB*m<1?&ptUxlKY33 zFE*ce^6^XkXAV2JcZ9cQKXLE&)t#-a+T_BO?3t{;fAi?_L5f-80xAb90$#LcAb>Dx@*+AM)j^ZtwOf3#%CNQMt@O3&B%h!yoANHmGmLtu zq~$KdnoCv#gS{?=WPP2$x8}+Ut}puX`G9u&@E8tCD7<_ytAwt(KIa<{b4jnH`Iraz z|CN!0s!T_1e=Qf5VUAd~$?D`ez;2rFEWhZ65AP!25_4*Nvfu@ex;-s3%=eNeWpJ~% z@j*sx|NUWmKFxb%V&GBaQyCN$Up|^yQitd7$AbU7hHqQl{Y<;Dv%jb^e#&Ku?-fDo4yV%-9y#Axn@_l;TZ;NzK z4oTwDsX{vKeAo*C`}SD6FGX4doxsGDif)v8-ZEGMc5WkTC&)zwn-*xRWT0y6OKlA^ z%ZX0l0$#TmEStE1nWtQeLU#|~nf(^F>yAiyCTLxMvh~@6*I!Qy7Hh`Se-Y)9Z>pD6 zEf>C5)}VE35l_jx5R_tl@+>^krc*UXI2+9FA`^VH&PV*YciT%~3eM%`!y?q} zu|6U39GbcABZvm)Lin79t}*?c?VGb}d)fZUlat*yZ@2ajo_g~9a2e^Xbq;p+`nXot z)eYa+4YfSHzjZJ_Zgrly{BX2$@6G+*Z2!UDWiigoZ9vWs-Jwutw)|xyoRlvwrz-;+ zPUf1}S{E%WHeXIW7MY9nC|UPTB|tCUc2qDOSr%~izs|F|J~CC@MN+{(eXuoXTu=JF zXOr{OXCB|a@bKaZzDs_}r`T{gkUU+cS30iV7`ee&q>@jptv7AmF`QsJXv+>8NBh&` z-pRAud*=riE+5~$*|;pefps?3bw2VC;CjJqy&%4qQc|$7?ht6eQn9QUT(c1O2fkpq zfZ5h6B|-VNw#fy!^=8-CTT@4~+qL0>w0Vd0We=!sBC~E{6TzEPjx3byI8{xnKWt$KpHf;|`Kh0|-;7uJI|m|t+nub5Q_?#}&6QbdWc5w_bnS889p zb^-Xu(ptGkAJ?G_M;C{e%8Wx;DsqffdWf|$1SN0)mv`1>+*pSe4d5kXrBUZ4ypFW8 z*fFF;0|V%JTRa@Ux<-QOmU=g(+;#I;* zY-+zGozgnVy<)?Xq@Vle*#rA7*2lzATj|5^C%)5{ z4D}cL|Id~Fyf0SS`4|2#;diWzh5qyKzass2BTZxy_*Y)QKje@8zSjS1@!#V3e+P1w z>CY%#_B+N)%X_J?$-Zkhfir4PTK@{#{6khOU**!@rm5zw#Si z4V%t>hIw%lJ?2U_-(hngu?HgYAES{i}W8s zvh-M|X(iBw-(vaj@9_KYKr1Z{^l#Vt!*3{uBJNN4cliB}NEP`7`sbBC{BGo)F8udQ z_>2C&0>q;Gf&N23?fV~oUlQi{qsz)d|AHR<0P>dWf8l3+PWXMyQJ?-Nv^)Gh0^()* zKT!I`?= 0); - if (!_t68) goto else8; + if (!_t68) goto else7; _t69 = (int64_t)argCount; _t70 = (d < _t69); *(bool*)&__and_tmp_0 = _t70; - goto endif9; - else8:; + goto endif8; + else7:; *(bool*)&__and_tmp_0 = 0; - endif9:; + endif8:; bool _t71; _t71 = *(bool*)&__and_tmp_0; - if (!_t71) goto endif11; + if (!_t71) goto endif10; { _t72 = i + 2; i = _t72; _t73 = (i < tmplLen); - if (!_t73) goto endif13; + if (!_t73) goto endif12; { const char* closeCh; const char* _t74; @@ -915,7 +914,7 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { closeCh = _t74; bool _t75; _t75 = String_Eq(closeCh, "}"); - if (!_t75) goto endif15; + if (!_t75) goto endif14; { _t76 = i + 1; i = _t76; @@ -928,22 +927,22 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { StringBuilder_Append(_t79, argStr); goto while1; } - endif15:; + endif14:; } - endif13:; + endif12:; } - endif11:; + endif10:; } - endif7:; + endif6:; } - endif5:; + endif4:; _t80 = &sb; StringBuilder_Append(_t80, ch); _t81 = i + 1; i = _t81; } goto while1; - wend3:; + wend2:; _t82 = &sb; const char* _t83; _t83 = StringBuilder_Build(_t82); @@ -951,276 +950,276 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { } const char* Fmt_Fmt1(const char* tmpl, const char* a1) { - const char** _t86; + const char** _t85; const char** args; /* sizeof(const char*) */ - void* _t85; - _t85 = bux_alloc(sizeof(const char*)); - _t86 = (const char**)_t85; - args = _t86; + void* _t84; + _t84 = bux_alloc(sizeof(const char*)); + _t85 = (const char**)_t84; + args = _t85; args[0] = a1; - const char* _t87; - _t87 = Fmt_Format(tmpl, args, 1); - return _t87; + const char* _t86; + _t86 = Fmt_Format(tmpl, args, 1); + return _t86; } const char* Fmt_FmtInt(const char* tmpl, int64_t val) { const char* s; + const char* _t87; + _t87 = String_FromInt(val); + s = _t87; const char* _t88; - _t88 = String_FromInt(val); - s = _t88; - const char* _t89; - _t89 = Fmt_Fmt1(tmpl, s); - return _t89; + _t88 = Fmt_Fmt1(tmpl, s); + return _t88; } const char* Fmt_FmtBool(const char* tmpl, bool val) { const char* s; + const char* _t89; + _t89 = String_FromBool(val); + s = _t89; const char* _t90; - _t90 = String_FromBool(val); - s = _t90; - const char* _t91; - _t91 = Fmt_Fmt1(tmpl, s); - return _t91; + _t90 = Fmt_Fmt1(tmpl, s); + return _t90; } const char* Fmt_FmtFloat(const char* tmpl, double val) { const char* s; + const char* _t91; + _t91 = String_FromFloat(val); + s = _t91; const char* _t92; - _t92 = String_FromFloat(val); - s = _t92; - const char* _t93; - _t93 = Fmt_Fmt1(tmpl, s); - return _t93; + _t92 = Fmt_Fmt1(tmpl, s); + return _t92; } const char* Fmt_Fmt2(const char* tmpl, const char* a1, const char* a2) { - int _t95; - const char** _t97; + int _t93; + const char** _t95; const char** args; /* sizeof(const char*) */ - _t95 = 2 * sizeof(const char*); - void* _t96; - _t96 = bux_alloc(_t95); - _t97 = (const char**)_t96; - args = _t97; + _t93 = 2 * sizeof(const char*); + void* _t94; + _t94 = bux_alloc(_t93); + _t95 = (const char**)_t94; + args = _t95; args[0] = a1; args[1] = a2; - const char* _t98; - _t98 = Fmt_Format(tmpl, args, 2); - return _t98; + const char* _t96; + _t96 = Fmt_Format(tmpl, args, 2); + return _t96; } const char* Fmt_Fmt3(const char* tmpl, const char* a1, const char* a2, const char* a3) { - int _t100; - const char** _t102; + int _t97; + const char** _t99; const char** args; /* sizeof(const char*) */ - _t100 = 3 * sizeof(const char*); - void* _t101; - _t101 = bux_alloc(_t100); - _t102 = (const char**)_t101; - args = _t102; + _t97 = 3 * sizeof(const char*); + void* _t98; + _t98 = bux_alloc(_t97); + _t99 = (const char**)_t98; + args = _t99; args[0] = a1; args[1] = a2; args[2] = a3; - const char* _t103; - _t103 = Fmt_Format(tmpl, args, 3); - return _t103; + const char* _t100; + _t100 = Fmt_Format(tmpl, args, 3); + return _t100; } const char* Crypto_Sha256(const char* data) { - int _t105; - void* _t107; + int _t102; + void* _t104; int len; - unsigned int _t104; - _t104 = String_Len(data); - _t105 = (int)_t104; - len = _t105; + unsigned int _t101; + _t101 = String_Len(data); + _t102 = (int)_t101; + len = _t102; void* hashBuf; - void* _t106; - _t106 = Alloc(32); - hashBuf = _t106; + void* _t103; + _t103 = Alloc(32); + hashBuf = _t103; bux_sha256(data, len, hashBuf); const char* result; - _t107 = (void*)hashBuf; - const char* _t108; - _t108 = bux_bytes_to_hex(_t107, 32); - result = _t108; + _t104 = (void*)hashBuf; + const char* _t105; + _t105 = bux_bytes_to_hex(_t104, 32); + result = _t105; Free(hashBuf); return result; } const char* Crypto_HmacSha256(const char* key, const char* message) { - int _t110; - int _t112; - void* _t114; + int _t107; + int _t109; + void* _t111; int keylen; - unsigned int _t109; - _t109 = String_Len(key); - _t110 = (int)_t109; - keylen = _t110; + unsigned int _t106; + _t106 = String_Len(key); + _t107 = (int)_t106; + keylen = _t107; int msglen; - unsigned int _t111; - _t111 = String_Len(message); - _t112 = (int)_t111; - msglen = _t112; + unsigned int _t108; + _t108 = String_Len(message); + _t109 = (int)_t108; + msglen = _t109; void* hmacBuf; - void* _t113; - _t113 = Alloc(32); - hmacBuf = _t113; + void* _t110; + _t110 = Alloc(32); + hmacBuf = _t110; bux_hmac_sha256(key, keylen, message, msglen, hmacBuf); const char* result; - _t114 = (void*)hmacBuf; - const char* _t115; - _t115 = bux_bytes_to_hex(_t114, 32); - result = _t115; + _t111 = (void*)hmacBuf; + const char* _t112; + _t112 = bux_bytes_to_hex(_t111, 32); + result = _t112; Free(hmacBuf); return result; } const char* Crypto_RandomBytes(int n) { - int _t116; - unsigned int _t117; - int _t120; - const char* _t121; - _t116 = (n <= 0); - if (!_t116) goto endif17; + int _t113; + unsigned int _t114; + int _t117; + const char* _t118; + _t113 = (n <= 0); + if (!_t113) goto endif16; { return ""; } - endif17:; + endif16:; void* buf; - _t117 = (unsigned int)n; - void* _t118; - _t118 = Alloc(_t117); - buf = _t118; - int _t119; - _t119 = bux_random_bytes(buf, n); - _t120 = (_t119 != 1); - if (!_t120) goto endif19; + _t114 = (unsigned int)n; + void* _t115; + _t115 = Alloc(_t114); + buf = _t115; + int _t116; + _t116 = bux_random_bytes(buf, n); + _t117 = (_t116 != 1); + if (!_t117) goto endif18; { Free(buf); return ""; } - endif19:; + endif18:; const char* result; - _t121 = (const char*)buf; - const char* _t122; - _t122 = bux_base64_encode(_t121, n); - result = _t122; + _t118 = (const char*)buf; + const char* _t119; + _t119 = bux_base64_encode(_t118, n); + result = _t119; Free(buf); return result; } const char* Crypto_Base64Encode(const char* s) { - int _t124; - unsigned int _t123; - _t123 = String_Len(s); - _t124 = (int)_t123; - const char* _t125; - _t125 = bux_base64_encode(s, _t124); - return _t125; + int _t121; + unsigned int _t120; + _t120 = String_Len(s); + _t121 = (int)_t120; + const char* _t122; + _t122 = bux_base64_encode(s, _t121); + return _t122; } const char* Crypto_HmacSha256Raw(const char* key, const char* message) { - int _t127; - int _t129; - const char* _t131; + int _t124; + int _t126; + const char* _t128; int keylen; - unsigned int _t126; - _t126 = String_Len(key); - _t127 = (int)_t126; - keylen = _t127; + unsigned int _t123; + _t123 = String_Len(key); + _t124 = (int)_t123; + keylen = _t124; int msglen; - unsigned int _t128; - _t128 = String_Len(message); - _t129 = (int)_t128; - msglen = _t129; + unsigned int _t125; + _t125 = String_Len(message); + _t126 = (int)_t125; + msglen = _t126; void* hmacBuf; - void* _t130; - _t130 = Alloc(32); - hmacBuf = _t130; + void* _t127; + _t127 = Alloc(32); + hmacBuf = _t127; bux_hmac_sha256(key, keylen, message, msglen, hmacBuf); const char* result; - _t131 = (const char*)hmacBuf; - const char* _t132; - _t132 = bux_base64_encode(_t131, 32); - result = _t132; + _t128 = (const char*)hmacBuf; + const char* _t129; + _t129 = bux_base64_encode(_t128, 32); + result = _t129; Free(hmacBuf); return result; } const char* Crypto_Base64Decode(const char* s) { - int _t134; - void* _t135; + int _t131; + void* _t132; int outlen; outlen = 0; - unsigned int _t133; - _t133 = String_Len(s); - _t134 = (int)_t133; - _t135 = &outlen; - const char* _t136; - _t136 = bux_base64_decode(s, _t134, _t135); - return _t136; + unsigned int _t130; + _t130 = String_Len(s); + _t131 = (int)_t130; + _t132 = &outlen; + const char* _t133; + _t133 = bux_base64_decode(s, _t131, _t132); + return _t133; } Mutex Mutex_New(void) { - Mutex _t138; - void* _t137; - _t137 = bux_mutex_new(); - _t138 = (Mutex){.handle = _t137}; - return _t138; + Mutex _t135; + void* _t134; + _t134 = bux_mutex_new(); + _t135 = (Mutex){.handle = _t134}; + return _t135; } void Mutex_Lock(Mutex* m) { - void* _t139; - _t139 = m->handle; - bux_mutex_lock(_t139); + void* _t136; + _t136 = m->handle; + bux_mutex_lock(_t136); } void Mutex_Unlock(Mutex* m) { - void* _t140; - _t140 = m->handle; - bux_mutex_unlock(_t140); + void* _t137; + _t137 = m->handle; + bux_mutex_unlock(_t137); } void Mutex_Free(Mutex* m) { - void* _t141; - _t141 = m->handle; - bux_mutex_free(_t141); + void* _t138; + _t138 = m->handle; + bux_mutex_free(_t138); } RwLock RwLock_New(void) { - RwLock _t143; - void* _t142; - _t142 = bux_rwlock_new(); - _t143 = (RwLock){.handle = _t142}; - return _t143; + RwLock _t140; + void* _t139; + _t139 = bux_rwlock_new(); + _t140 = (RwLock){.handle = _t139}; + return _t140; } void RwLock_ReadLock(RwLock* rw) { - void* _t144; - _t144 = rw->handle; - bux_rwlock_rdlock(_t144); + void* _t141; + _t141 = rw->handle; + bux_rwlock_rdlock(_t141); } void RwLock_WriteLock(RwLock* rw) { - void* _t145; - _t145 = rw->handle; - bux_rwlock_wrlock(_t145); + void* _t142; + _t142 = rw->handle; + bux_rwlock_wrlock(_t142); } void RwLock_Unlock(RwLock* rw) { - void* _t146; - _t146 = rw->handle; - bux_rwlock_unlock(_t146); + void* _t143; + _t143 = rw->handle; + bux_rwlock_unlock(_t143); } void RwLock_Free(RwLock* rw) { - void* _t147; - _t147 = rw->handle; - bux_rwlock_free(_t147); + void* _t144; + _t144 = rw->handle; + bux_rwlock_free(_t144); } void Test_Exit(int code) { @@ -1228,15 +1227,15 @@ void Test_Exit(int code) { } void Test_Assert(bool cond) { - int _t148; - _t148 = (int)cond; - bux_assert(_t148, "", 0, ""); + int _t145; + _t145 = (int)cond; + bux_assert(_t145, "", 0, ""); } void Test_AssertEqInt(int a, int b) { - int _t149; - _t149 = (a != b); - if (!_t149) goto endif21; + int _t146; + _t146 = (a != b); + if (!_t146) goto endif20; { PrintLine("ASSERT_EQ FAILED:"); PrintInt(a); @@ -1244,27 +1243,27 @@ void Test_AssertEqInt(int a, int b) { PrintInt(b); bux_exit(1); } - endif21:; + endif20:; } void Test_AssertTrue(bool cond) { - int _t150; - _t150 = !cond; - if (!_t150) goto endif23; + int _t147; + _t147 = !cond; + if (!_t147) goto endif22; { PrintLine("ASSERT_TRUE FAILED"); bux_exit(1); } - endif23:; + endif22:; } void Test_AssertFalse(bool cond) { - if (!cond) goto endif25; + if (!cond) goto endif24; { PrintLine("ASSERT_FALSE FAILED"); bux_exit(1); } - endif25:; + endif24:; } void Test_Fail(const char* msg) { @@ -1274,735 +1273,744 @@ void Test_Fail(const char* msg) { } Result Result_NewOk(int value) { - Result _t151; + Result _t148; Result r; - _t151 = (Result){.tag = Result_Ok}; - r = _t151; + _t148 = (Result){.tag = Result_Ok}; + r = _t148; r.data.Ok_0 = value; return r; } Result Result_NewErr(const char* msg) { - Result _t152; + Result _t149; Result r; - _t152 = (Result){.tag = Result_Err}; - r = _t152; + _t149 = (Result){.tag = Result_Err}; + r = _t149; r.data.Err_0 = msg; return r; } bool Result_IsOk(Result r) { - int _t154; - Result_Tag _t153; - _t153 = r.tag; - _t154 = (_t153 == Result_Ok); - return _t154; + int _t151; + Result_Tag _t150; + _t150 = r.tag; + _t151 = (_t150 == Result_Ok); + return _t151; } bool Result_IsErr(Result r) { - int _t156; - Result_Tag _t155; - _t155 = r.tag; - _t156 = (_t155 == Result_Err); - return _t156; + int _t153; + Result_Tag _t152; + _t152 = r.tag; + _t153 = (_t152 == Result_Err); + return _t153; } int Result_Unwrap(Result r) { - int _t158; - Result_Tag _t157; - _t157 = r.tag; - _t158 = (_t157 != Result_Ok); - if (!_t158) goto endif27; + int _t155; + Result_Tag _t154; + _t154 = r.tag; + _t155 = (_t154 != Result_Ok); + if (!_t155) goto endif26; { PrintLine("panic: unwrap on Err"); return 0; } - endif27:; - Result_Data _t159; - _t159 = r.data; - int _t160; - _t160 = _t159.Ok_0; - return _t160; + endif26:; + Result_Data _t156; + _t156 = r.data; + int _t157; + _t157 = _t156.Ok_0; + return _t157; } int Result_UnwrapOr(Result r, int fallback) { - int _t162; - Result_Tag _t161; - _t161 = r.tag; - _t162 = (_t161 == Result_Ok); - if (!_t162) goto endif29; + int _t159; + Result_Tag _t158; + _t158 = r.tag; + _t159 = (_t158 == Result_Ok); + if (!_t159) goto endif28; { - Result_Data _t163; - _t163 = r.data; - int _t164; - _t164 = _t163.Ok_0; - return _t164; + Result_Data _t160; + _t160 = r.data; + int _t161; + _t161 = _t160.Ok_0; + return _t161; } - endif29:; + endif28:; return fallback; } Option Option_NewSome(int value) { - Option _t165; + Option _t162; Option o; - _t165 = (Option){.tag = Option_Some}; - o = _t165; + _t162 = (Option){.tag = Option_Some}; + o = _t162; o.data.Some_0 = value; return o; } Option Option_NewNone(void) { - Option _t166; - _t166 = (Option){.tag = Option_None}; - return _t166; + Option _t163; + _t163 = (Option){.tag = Option_None}; + return _t163; } bool Option_IsSome(Option o) { - int _t168; - Option_Tag _t167; - _t167 = o.tag; - _t168 = (_t167 == Option_Some); - return _t168; + int _t165; + Option_Tag _t164; + _t164 = o.tag; + _t165 = (_t164 == Option_Some); + return _t165; } bool Option_IsNone(Option o) { - int _t170; - Option_Tag _t169; - _t169 = o.tag; - _t170 = (_t169 == Option_None); - return _t170; + int _t167; + Option_Tag _t166; + _t166 = o.tag; + _t167 = (_t166 == Option_None); + return _t167; } int Option_Unwrap(Option o) { - int _t172; - Option_Tag _t171; - _t171 = o.tag; - _t172 = (_t171 != Option_Some); - if (!_t172) goto endif31; + int _t169; + Option_Tag _t168; + _t168 = o.tag; + _t169 = (_t168 != Option_Some); + if (!_t169) goto endif30; { PrintLine("panic: unwrap on None"); return 0; } - endif31:; - Option_Data _t173; - _t173 = o.data; - int _t174; - _t174 = _t173.Some_0; - return _t174; + endif30:; + Option_Data _t170; + _t170 = o.data; + int _t171; + _t171 = _t170.Some_0; + return _t171; } int Option_UnwrapOr(Option o, int fallback) { - int _t176; - Option_Tag _t175; - _t175 = o.tag; - _t176 = (_t175 == Option_Some); - if (!_t176) goto endif33; + int _t173; + Option_Tag _t172; + _t172 = o.tag; + _t173 = (_t172 == Option_Some); + if (!_t173) goto endif32; { - Option_Data _t177; - _t177 = o.data; - int _t178; - _t178 = _t177.Some_0; - return _t178; + Option_Data _t174; + _t174 = o.data; + int _t175; + _t175 = _t174.Some_0; + return _t175; } - endif33:; + endif32:; return fallback; } JsonValue Json_Null(void) { - JsonValue _t179; - _t179 = (JsonValue){.tag = JsonTagNull, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t179; + JsonValue _t176; + _t176 = (JsonValue){.tag = JsonTagNull, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t176; } JsonValue Json_Bool(bool b) { - JsonValue _t180; - _t180 = (JsonValue){.tag = JsonTagBool, .boolVal = b, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t180; + JsonValue _t177; + _t177 = (JsonValue){.tag = JsonTagBool, .boolVal = b, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t177; } JsonValue Json_Number(double n) { - JsonValue _t181; - _t181 = (JsonValue){.tag = JsonTagNumber, .boolVal = 0, .numVal = n, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t181; + JsonValue _t178; + _t178 = (JsonValue){.tag = JsonTagNumber, .boolVal = 0, .numVal = n, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t178; } JsonValue Json_String(const char* s) { - JsonValue _t182; - _t182 = (JsonValue){.tag = JsonTagString, .boolVal = 0, .numVal = 0.0, .strVal = s, .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t182; + JsonValue _t179; + _t179 = (JsonValue){.tag = JsonTagString, .boolVal = 0, .numVal = 0.0, .strVal = s, .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t179; } JsonValue Json_Array(void) { - JsonValue _t183; - _t183 = (JsonValue){.tag = JsonTagArray, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t183; + JsonValue _t180; + _t180 = (JsonValue){.tag = JsonTagArray, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t180; } JsonValue Json_Object(void) { - JsonValue _t184; - _t184 = (JsonValue){.tag = JsonTagObject, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t184; + JsonValue _t181; + _t181 = (JsonValue){.tag = JsonTagObject, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t181; } unsigned int Json_ArrayLen(JsonValue v) { - int _t186; - int _t185; - _t185 = v.tag; - _t186 = (_t185 != JsonTagArray); - if (!_t186) goto endif35; + int _t183; + int _t182; + _t182 = v.tag; + _t183 = (_t182 != JsonTagArray); + if (!_t183) goto endif34; { return 0; } - endif35:; - unsigned int _t187; - _t187 = v.arrLen; - return _t187; + endif34:; + unsigned int _t184; + _t184 = v.arrLen; + return _t184; } JsonValue Json_ArrayGet(JsonValue v, unsigned int index) { + int _t186; int _t189; - int _t192; - int _t188; - _t188 = v.tag; - _t189 = (_t188 != JsonTagArray); - if (!_t189) goto endif37; + int _t185; + _t185 = v.tag; + _t186 = (_t185 != JsonTagArray); + if (!_t186) goto endif36; + { + JsonValue _t187; + _t187 = Json_Null(); + return _t187; + } + endif36:; + unsigned int _t188; + _t188 = v.arrLen; + _t189 = (index >= _t188); + if (!_t189) goto endif38; { JsonValue _t190; _t190 = Json_Null(); return _t190; } - endif37:; - unsigned int _t191; - _t191 = v.arrLen; - _t192 = (index >= _t191); - if (!_t192) goto endif39; - { - JsonValue _t193; - _t193 = Json_Null(); - return _t193; - } - endif39:; - JsonValue* _t194; - _t194 = v.arrData; - JsonValue _t195; - _t195 = _t194[index]; - return _t195; + endif38:; + JsonValue* _t191; + _t191 = v.arrData; + JsonValue _t192; + _t192 = _t191[index]; + return _t192; } void Json_ArrayPush(JsonValue* self, JsonValue val) { + int _t194; int _t197; + int _t199; int _t200; - int _t202; - int _t204; - JsonValue* _t206; - int _t207; - void* _t209; - int _t211; - JsonValue* _t213; - int _t217; - int _t196; - _t196 = self->tag; - _t197 = (_t196 != JsonTagArray); - if (!_t197) goto endif41; + JsonValue* _t202; + int _t203; + void* _t205; + int _t206; + JsonValue* _t208; + int _t212; + int _t193; + _t193 = self->tag; + _t194 = (_t193 != JsonTagArray); + if (!_t194) goto endif40; { return; } - endif41:; - unsigned int _t198; - _t198 = self->arrLen; - unsigned int _t199; - _t199 = self->arrCap; - _t200 = (_t198 >= _t199); - if (!_t200) goto endif43; + endif40:; + unsigned int _t195; + _t195 = self->arrLen; + unsigned int _t196; + _t196 = self->arrCap; + _t197 = (_t195 >= _t196); + if (!_t197) goto endif42; { unsigned int arrNewCap; - unsigned int _t201; - _t201 = self->arrCap; - arrNewCap = _t201; - _t202 = (arrNewCap == 0); - if (!_t202) goto else44; + unsigned int _t198; + _t198 = self->arrCap; + arrNewCap = _t198; + _t199 = (arrNewCap == 0); + if (!_t199) goto else43; { self->arrCap = 4; /* sizeof(JsonValue) */ - _t204 = 4 * sizeof(JsonValue); - void* _t205; - _t205 = Alloc(_t204); - _t206 = (JsonValue*)_t205; - self->arrData = _t206; + _t200 = 4 * sizeof(JsonValue); + void* _t201; + _t201 = Alloc(_t200); + _t202 = (JsonValue*)_t201; + self->arrData = _t202; } - goto endif45; - else44:; + goto endif44; + else43:; { unsigned int doubleCap; - _t207 = arrNewCap * 2; - doubleCap = _t207; + _t203 = arrNewCap * 2; + doubleCap = _t203; self->arrCap = doubleCap; - JsonValue* _t208; - _t208 = self->arrData; - _t209 = (void*)_t208; + JsonValue* _t204; + _t204 = self->arrData; + _t205 = (void*)_t204; /* sizeof(JsonValue) */ - _t211 = doubleCap * sizeof(JsonValue); - void* _t212; - _t212 = Realloc(_t209, _t211); - _t213 = (JsonValue*)_t212; - self->arrData = _t213; + _t206 = doubleCap * sizeof(JsonValue); + void* _t207; + _t207 = Realloc(_t205, _t206); + _t208 = (JsonValue*)_t207; + self->arrData = _t208; } - endif45:; + endif44:; } - endif43:; - JsonValue* _t214; - _t214 = self->arrData; - unsigned int _t215; - _t215 = self->arrLen; - _t214[_t215] = val; - unsigned int _t216; - _t216 = self->arrLen; - _t217 = _t216 + 1; - self->arrLen = _t217; + endif42:; + JsonValue* _t209; + _t209 = self->arrData; + unsigned int _t210; + _t210 = self->arrLen; + _t209[_t210] = val; + unsigned int _t211; + _t211 = self->arrLen; + _t212 = _t211 + 1; + self->arrLen = _t212; } unsigned int Json_ObjectLen(JsonValue v) { - int _t219; - int _t218; - _t218 = v.tag; - _t219 = (_t218 != JsonTagObject); - if (!_t219) goto endif47; + int _t214; + int _t213; + _t213 = v.tag; + _t214 = (_t213 != JsonTagObject); + if (!_t214) goto endif46; { return 0; } - endif47:; - unsigned int _t220; - _t220 = v.objLen; - return _t220; + endif46:; + unsigned int _t215; + _t215 = v.objLen; + return _t215; } JsonValue Json_ObjectGet(JsonValue v, const char* key) { - int _t222; - int _t225; - int _t231; - int _t221; - _t221 = v.tag; - _t222 = (_t221 != JsonTagObject); - if (!_t222) goto endif49; + int _t217; + int _t220; + int _t226; + int _t216; + _t216 = v.tag; + _t217 = (_t216 != JsonTagObject); + if (!_t217) goto endif48; { - JsonValue _t223; - _t223 = Json_Null(); - return _t223; + JsonValue _t218; + _t218 = Json_Null(); + return _t218; } - endif49:; + endif48:; unsigned int i; i = 0; - while50:; - unsigned int _t224; - _t224 = v.objLen; - _t225 = (i < _t224); - if (!_t225) goto wend52; + while49:; + unsigned int _t219; + _t219 = v.objLen; + _t220 = (i < _t219); + if (!_t220) goto wend50; { - const char** _t226; - _t226 = v.objKeys; - const char* _t227; - _t227 = _t226[i]; - bool _t228; - _t228 = String_Eq(_t227, key); - if (!_t228) goto endif54; + const char** _t221; + _t221 = v.objKeys; + const char* _t222; + _t222 = _t221[i]; + bool _t223; + _t223 = String_Eq(_t222, key); + if (!_t223) goto endif52; { - JsonValue* _t229; - _t229 = v.objValues; - JsonValue _t230; - _t230 = _t229[i]; - return _t230; + JsonValue* _t224; + _t224 = v.objValues; + JsonValue _t225; + _t225 = _t224[i]; + return _t225; } - endif54:; - _t231 = i + 1; - i = _t231; + endif52:; + _t226 = i + 1; + i = _t226; } - goto while50; - wend52:; - JsonValue _t232; - _t232 = Json_Null(); - return _t232; + goto while49; + wend50:; + JsonValue _t227; + _t227 = Json_Null(); + return _t227; } bool Json_ObjectHas(JsonValue v, const char* key) { - int _t234; - int _t236; - int _t240; - int _t233; - _t233 = v.tag; - _t234 = (_t233 != JsonTagObject); - if (!_t234) goto endif56; + int _t229; + int _t231; + int _t235; + int _t228; + _t228 = v.tag; + _t229 = (_t228 != JsonTagObject); + if (!_t229) goto endif54; { return 0; } - endif56:; + endif54:; unsigned int i; i = 0; - while57:; - unsigned int _t235; - _t235 = v.objLen; - _t236 = (i < _t235); - if (!_t236) goto wend59; + while55:; + unsigned int _t230; + _t230 = v.objLen; + _t231 = (i < _t230); + if (!_t231) goto wend56; { - const char** _t237; - _t237 = v.objKeys; - const char* _t238; - _t238 = _t237[i]; - bool _t239; - _t239 = String_Eq(_t238, key); - if (!_t239) goto endif61; + const char** _t232; + _t232 = v.objKeys; + const char* _t233; + _t233 = _t232[i]; + bool _t234; + _t234 = String_Eq(_t233, key); + if (!_t234) goto endif58; { return 1; } - endif61:; - _t240 = i + 1; - i = _t240; + endif58:; + _t235 = i + 1; + i = _t235; } - goto while57; - wend59:; + goto while55; + wend56:; return 0; } void Json_ObjectSet(JsonValue* self, const char* key, JsonValue val) { - int _t242; + int _t237; + int _t239; int _t244; + int _t247; int _t249; - int _t252; - int _t254; + int _t250; + const char** _t252; + int _t253; + JsonValue* _t255; int _t256; - const char** _t258; - int _t260; - JsonValue* _t262; - int _t263; - void* _t265; - int _t267; - const char** _t269; - void* _t271; - int _t273; - JsonValue* _t275; - int _t281; - int _t241; - _t241 = self->tag; - _t242 = (_t241 != JsonTagObject); - if (!_t242) goto endif63; + void* _t258; + int _t259; + const char** _t261; + void* _t263; + int _t264; + JsonValue* _t266; + int _t272; + int _t236; + _t236 = self->tag; + _t237 = (_t236 != JsonTagObject); + if (!_t237) goto endif60; { return; } - endif63:; + endif60:; unsigned int i; i = 0; - while64:; - unsigned int _t243; - _t243 = self->objLen; - _t244 = (i < _t243); - if (!_t244) goto wend66; + while61:; + unsigned int _t238; + _t238 = self->objLen; + _t239 = (i < _t238); + if (!_t239) goto wend62; { - const char** _t245; - _t245 = self->objKeys; - const char* _t246; - _t246 = _t245[i]; - bool _t247; - _t247 = String_Eq(_t246, key); - if (!_t247) goto endif68; + const char** _t240; + _t240 = self->objKeys; + const char* _t241; + _t241 = _t240[i]; + bool _t242; + _t242 = String_Eq(_t241, key); + if (!_t242) goto endif64; { - JsonValue* _t248; - _t248 = self->objValues; - _t248[i] = val; + JsonValue* _t243; + _t243 = self->objValues; + _t243[i] = val; return; } - endif68:; - _t249 = i + 1; - i = _t249; + endif64:; + _t244 = i + 1; + i = _t244; } - goto while64; - wend66:; - unsigned int _t250; - _t250 = self->objLen; - unsigned int _t251; - _t251 = self->objCap; - _t252 = (_t250 >= _t251); - if (!_t252) goto endif70; + goto while61; + wend62:; + unsigned int _t245; + _t245 = self->objLen; + unsigned int _t246; + _t246 = self->objCap; + _t247 = (_t245 >= _t246); + if (!_t247) goto endif66; { unsigned int objNewCap; - unsigned int _t253; - _t253 = self->objCap; - objNewCap = _t253; - _t254 = (objNewCap == 0); - if (!_t254) goto else71; + unsigned int _t248; + _t248 = self->objCap; + objNewCap = _t248; + _t249 = (objNewCap == 0); + if (!_t249) goto else67; { self->objCap = 4; /* sizeof(const char*) */ - _t256 = 4 * sizeof(const char*); - void* _t257; - _t257 = Alloc(_t256); - _t258 = (const char**)_t257; - self->objKeys = _t258; + _t250 = 4 * sizeof(const char*); + void* _t251; + _t251 = Alloc(_t250); + _t252 = (const char**)_t251; + self->objKeys = _t252; /* sizeof(JsonValue) */ - _t260 = 4 * sizeof(JsonValue); - void* _t261; - _t261 = Alloc(_t260); - _t262 = (JsonValue*)_t261; - self->objValues = _t262; + _t253 = 4 * sizeof(JsonValue); + void* _t254; + _t254 = Alloc(_t253); + _t255 = (JsonValue*)_t254; + self->objValues = _t255; } - goto endif72; - else71:; + goto endif68; + else67:; { unsigned int doubleCap; - _t263 = objNewCap * 2; - doubleCap = _t263; + _t256 = objNewCap * 2; + doubleCap = _t256; self->objCap = doubleCap; - const char** _t264; - _t264 = self->objKeys; - _t265 = (void*)_t264; + const char** _t257; + _t257 = self->objKeys; + _t258 = (void*)_t257; /* sizeof(const char*) */ - _t267 = doubleCap * sizeof(const char*); - void* _t268; - _t268 = Realloc(_t265, _t267); - _t269 = (const char**)_t268; - self->objKeys = _t269; - JsonValue* _t270; - _t270 = self->objValues; - _t271 = (void*)_t270; + _t259 = doubleCap * sizeof(const char*); + void* _t260; + _t260 = Realloc(_t258, _t259); + _t261 = (const char**)_t260; + self->objKeys = _t261; + JsonValue* _t262; + _t262 = self->objValues; + _t263 = (void*)_t262; /* sizeof(JsonValue) */ - _t273 = doubleCap * sizeof(JsonValue); - void* _t274; - _t274 = Realloc(_t271, _t273); - _t275 = (JsonValue*)_t274; - self->objValues = _t275; + _t264 = doubleCap * sizeof(JsonValue); + void* _t265; + _t265 = Realloc(_t263, _t264); + _t266 = (JsonValue*)_t265; + self->objValues = _t266; } - endif72:; + endif68:; } - endif70:; - const char** _t276; - _t276 = self->objKeys; - unsigned int _t277; - _t277 = self->objLen; - _t276[_t277] = key; - JsonValue* _t278; - _t278 = self->objValues; - unsigned int _t279; - _t279 = self->objLen; - _t278[_t279] = val; - unsigned int _t280; - _t280 = self->objLen; - _t281 = _t280 + 1; - self->objLen = _t281; + endif66:; + const char** _t267; + _t267 = self->objKeys; + unsigned int _t268; + _t268 = self->objLen; + _t267[_t268] = key; + JsonValue* _t269; + _t269 = self->objValues; + unsigned int _t270; + _t270 = self->objLen; + _t269[_t270] = val; + unsigned int _t271; + _t271 = self->objLen; + _t272 = _t271 + 1; + self->objLen = _t272; } bool Json_IsNull(JsonValue v) { - int _t283; - int _t282; - _t282 = v.tag; - _t283 = (_t282 == JsonTagNull); - return _t283; + int _t274; + int _t273; + _t273 = v.tag; + _t274 = (_t273 == JsonTagNull); + return _t274; } bool Json_AsBool(JsonValue v) { - int _t285; - int _t284; - _t284 = v.tag; - _t285 = (_t284 == JsonTagBool); - if (!_t285) goto endif74; + int _t276; + int _t275; + _t275 = v.tag; + _t276 = (_t275 == JsonTagBool); + if (!_t276) goto endif70; { - bool _t286; - _t286 = v.boolVal; - return _t286; + bool _t277; + _t277 = v.boolVal; + return _t277; } - endif74:; + endif70:; return 0; } double Json_AsNumber(JsonValue v) { - int _t288; - int _t287; - _t287 = v.tag; - _t288 = (_t287 == JsonTagNumber); - if (!_t288) goto endif76; + int _t279; + int _t278; + _t278 = v.tag; + _t279 = (_t278 == JsonTagNumber); + if (!_t279) goto endif72; { - double _t289; - _t289 = v.numVal; - return _t289; + double _t280; + _t280 = v.numVal; + return _t280; } - endif76:; + endif72:; return 0.0; } const char* Json_AsString(JsonValue v) { - int _t291; - int _t290; - _t290 = v.tag; - _t291 = (_t290 == JsonTagString); - if (!_t291) goto endif78; + int _t282; + int _t281; + _t281 = v.tag; + _t282 = (_t281 == JsonTagString); + if (!_t282) goto endif74; { - const char* _t292; - _t292 = v.strVal; - return _t292; + const char* _t283; + _t283 = v.strVal; + return _t283; } - endif78:; + endif74:; return ""; } int JsonParser_Peek(JsonParser* p) { - int _t295; - int _t299; - unsigned int _t293; - _t293 = p->pos; - unsigned int _t294; - _t294 = p->len; - _t295 = (_t293 >= _t294); - if (!_t295) goto endif80; + int _t286; + int _t290; + unsigned int _t284; + _t284 = p->pos; + unsigned int _t285; + _t285 = p->len; + _t286 = (_t284 >= _t285); + if (!_t286) goto endif76; { return 0; } - endif80:; - const char* _t296; - _t296 = p->src; - unsigned int _t297; - _t297 = p->pos; - int _t298; - _t298 = _t296[_t297]; - _t299 = (int)_t298; - return _t299; + endif76:; + const char* _t287; + _t287 = p->src; + unsigned int _t288; + _t288 = p->pos; + int _t289; + _t289 = _t287[_t288]; + _t290 = (int)_t289; + return _t290; } void JsonParser_Advance(JsonParser* p) { - int _t302; - int _t304; - unsigned int _t300; - _t300 = p->pos; - unsigned int _t301; - _t301 = p->len; - _t302 = (_t300 < _t301); - if (!_t302) goto endif82; + int _t293; + int _t295; + unsigned int _t291; + _t291 = p->pos; + unsigned int _t292; + _t292 = p->len; + _t293 = (_t291 < _t292); + if (!_t293) goto endif78; { - unsigned int _t303; - _t303 = p->pos; - _t304 = _t303 + 1; - p->pos = _t304; + unsigned int _t294; + _t294 = p->pos; + _t295 = _t294 + 1; + p->pos = _t295; } - endif82:; + endif78:; } void JsonParser_SkipWhitespace(JsonParser* p) { - int _t306; - int _t307; - int _t309; - int _t311; - while83:; - if (!1) goto wend85; + int _t297; + int _t298; + int _t300; + int _t302; + while79:; + if (!1) goto wend80; { int c; - int _t305; - _t305 = JsonParser_Peek(p); - c = _t305; + int _t296; + _t296 = JsonParser_Peek(p); + c = _t296; bool __or_tmp_1; bool __or_tmp_2; bool __or_tmp_3; - _t306 = (c == 32); - if (!_t306) goto else86; + _t297 = (c == 32); + if (!_t297) goto else81; *(bool*)&__or_tmp_3 = 1; - goto endif87; - else86:; - _t307 = (c == 9); - *(bool*)&__or_tmp_3 = _t307; - endif87:; - bool _t308; - _t308 = *(bool*)&__or_tmp_3; - if (!_t308) goto else88; + goto endif82; + else81:; + _t298 = (c == 9); + *(bool*)&__or_tmp_3 = _t298; + endif82:; + bool _t299; + _t299 = *(bool*)&__or_tmp_3; + if (!_t299) goto else83; *(bool*)&__or_tmp_2 = 1; - goto endif89; - else88:; - _t309 = (c == 10); - *(bool*)&__or_tmp_2 = _t309; - endif89:; - bool _t310; - _t310 = *(bool*)&__or_tmp_2; - if (!_t310) goto else90; + goto endif84; + else83:; + _t300 = (c == 10); + *(bool*)&__or_tmp_2 = _t300; + endif84:; + bool _t301; + _t301 = *(bool*)&__or_tmp_2; + if (!_t301) goto else85; *(bool*)&__or_tmp_1 = 1; - goto endif91; - else90:; - _t311 = (c == 13); - *(bool*)&__or_tmp_1 = _t311; - endif91:; - bool _t312; - _t312 = *(bool*)&__or_tmp_1; - if (!_t312) goto else92; + goto endif86; + else85:; + _t302 = (c == 13); + *(bool*)&__or_tmp_1 = _t302; + endif86:; + bool _t303; + _t303 = *(bool*)&__or_tmp_1; + if (!_t303) goto else87; { JsonParser_Advance(p); } - goto endif93; - else92:; + goto endif88; + else87:; { return; } - endif93:; + endif88:; } - goto while83; - wend85:; + goto while79; + wend80:; } bool JsonParser_Match(JsonParser* p, const char* expected) { + int _t306; + int _t308; + int _t309; + int _t312; int _t315; - int _t317; + int _t316; int _t318; - int _t321; - int _t324; - int _t325; - int _t327; unsigned int elen; - unsigned int _t313; - _t313 = String_Len(expected); - elen = _t313; - unsigned int _t314; - _t314 = p->pos; - _t315 = _t314 + elen; - unsigned int _t316; - _t316 = p->len; - _t317 = (_t315 > _t316); - if (!_t317) goto endif95; + unsigned int _t304; + _t304 = String_Len(expected); + elen = _t304; + unsigned int _t305; + _t305 = p->pos; + _t306 = _t305 + elen; + unsigned int _t307; + _t307 = p->len; + _t308 = (_t306 > _t307); + if (!_t308) goto endif90; { return 0; } - endif95:; + endif90:; unsigned int i; i = 0; - while96:; - _t318 = (i < elen); - if (!_t318) goto wend98; + while91:; + _t309 = (i < elen); + if (!_t309) goto wend92; { - const char* _t319; - _t319 = p->src; - unsigned int _t320; - _t320 = p->pos; - _t321 = _t320 + i; - int _t322; - _t322 = _t319[_t321]; - int _t323; - _t323 = expected[i]; - _t324 = (_t322 != _t323); - if (!_t324) goto endif100; + const char* _t310; + _t310 = p->src; + unsigned int _t311; + _t311 = p->pos; + _t312 = _t311 + i; + int _t313; + _t313 = _t310[_t312]; + int _t314; + _t314 = expected[i]; + _t315 = (_t313 != _t314); + if (!_t315) goto endif94; { return 0; } - endif100:; - _t325 = i + 1; - i = _t325; + endif94:; + _t316 = i + 1; + i = _t316; } - goto while96; - wend98:; - unsigned int _t326; - _t326 = p->pos; - _t327 = _t326 + elen; - p->pos = _t327; + goto while91; + wend92:; + unsigned int _t317; + _t317 = p->pos; + _t318 = _t317 + elen; + p->pos = _t318; return 1; } const char* JsonParser_ParseString(JsonParser* p) { - int _t329; - int _t332; + int _t320; + int _t323; + int _t324; + int _t326; + int _t328; + void* _t329; + int _t330; + void* _t331; + char _t332; int _t333; - int _t335; - int _t337; - void* _t338; + void* _t334; + char _t335; + int _t336; + void* _t337; + char _t338; int _t339; void* _t340; char _t341; @@ -2015,234 +2023,262 @@ const char* JsonParser_ParseString(JsonParser* p) { int _t348; void* _t349; char _t350; - int _t351; - void* _t352; - char _t353; - int _t354; + void* _t351; + char _t352; + void* _t353; + char _t354; void* _t355; char _t356; - int _t357; - void* _t358; - char _t359; + int _t358; + void* _t359; void* _t360; - char _t361; void* _t362; - char _t363; - void* _t364; - char _t365; - int _t367; - void* _t368; - void* _t369; - void* _t371; - int _t328; - _t328 = JsonParser_Peek(p); - _t329 = (_t328 != 34); - if (!_t329) goto endif102; + int _t319; + _t319 = JsonParser_Peek(p); + _t320 = (_t319 != 34); + if (!_t320) goto endif96; { p->error = "Expected string"; return ""; } - endif102:; + endif96:; JsonParser_Advance(p); StringBuilder sb; - StringBuilder _t330; - _t330 = StringBuilder_New(); - sb = _t330; - while103:; - if (!1) goto wend105; + StringBuilder _t321; + _t321 = StringBuilder_New(); + sb = _t321; + while97:; + if (!1) goto wend98; { int c; - int _t331; - _t331 = JsonParser_Peek(p); - c = _t331; + int _t322; + _t322 = JsonParser_Peek(p); + c = _t322; bool __or_tmp_4; - _t332 = (c == 0); - if (!_t332) goto else106; + _t323 = (c == 0); + if (!_t323) goto else99; *(bool*)&__or_tmp_4 = 1; - goto endif107; - else106:; - _t333 = (c == 34); - *(bool*)&__or_tmp_4 = _t333; - endif107:; - bool _t334; - _t334 = *(bool*)&__or_tmp_4; - if (!_t334) goto endif109; + goto endif100; + else99:; + _t324 = (c == 34); + *(bool*)&__or_tmp_4 = _t324; + endif100:; + bool _t325; + _t325 = *(bool*)&__or_tmp_4; + if (!_t325) goto endif102; { - goto wend105; + goto wend98; } - endif109:; - _t335 = (c == 92); - if (!_t335) goto else110; + endif102:; + _t326 = (c == 92); + if (!_t326) goto else103; { JsonParser_Advance(p); int esc; - int _t336; - _t336 = JsonParser_Peek(p); - esc = _t336; - _t337 = (esc == 0); - if (!_t337) goto endif113; + int _t327; + _t327 = JsonParser_Peek(p); + esc = _t327; + _t328 = (esc == 0); + if (!_t328) goto endif106; { p->error = "Unterminated string escape"; - _t338 = &sb; - StringBuilder_Free(_t338); + _t329 = &sb; + StringBuilder_Free(_t329); return ""; } - endif113:; - _t339 = (esc == 110); - if (!_t339) goto else114; + endif106:; + _t330 = (esc == 110); + if (!_t330) goto else107; + { + _t331 = &sb; + _t332 = (char)10; + StringBuilder_AppendChar(_t331, _t332); + } + goto endif108; + else107:; + _t333 = (esc == 116); + if (!_t333) goto else109; + { + _t334 = &sb; + _t335 = (char)9; + StringBuilder_AppendChar(_t334, _t335); + } + goto endif110; + else109:; + _t336 = (esc == 114); + if (!_t336) goto else111; + { + _t337 = &sb; + _t338 = (char)13; + StringBuilder_AppendChar(_t337, _t338); + } + goto endif112; + else111:; + _t339 = (esc == 98); + if (!_t339) goto else113; { _t340 = &sb; - _t341 = (char)10; + _t341 = (char)8; StringBuilder_AppendChar(_t340, _t341); } - goto endif115; - else114:; - _t342 = (esc == 116); - if (!_t342) goto else116; + goto endif114; + else113:; + _t342 = (esc == 102); + if (!_t342) goto else115; { _t343 = &sb; - _t344 = (char)9; + _t344 = (char)12; StringBuilder_AppendChar(_t343, _t344); } - goto endif117; - else116:; - _t345 = (esc == 114); - if (!_t345) goto else118; + goto endif116; + else115:; + _t345 = (esc == 34); + if (!_t345) goto else117; { _t346 = &sb; - _t347 = (char)13; + _t347 = (char)34; StringBuilder_AppendChar(_t346, _t347); } - goto endif119; - else118:; - _t348 = (esc == 98); - if (!_t348) goto else120; + goto endif118; + else117:; + _t348 = (esc == 92); + if (!_t348) goto else119; { _t349 = &sb; - _t350 = (char)8; + _t350 = (char)92; StringBuilder_AppendChar(_t349, _t350); } - goto endif121; - else120:; - _t351 = (esc == 102); - if (!_t351) goto else122; + goto endif120; + else119:; { - _t352 = &sb; - _t353 = (char)12; - StringBuilder_AppendChar(_t352, _t353); + _t351 = &sb; + _t352 = (char)92; + StringBuilder_AppendChar(_t351, _t352); + _t353 = &sb; + _t354 = (char)esc; + StringBuilder_AppendChar(_t353, _t354); } - goto endif123; - else122:; - _t354 = (esc == 34); - if (!_t354) goto else124; + endif120:; + endif118:; + endif116:; + endif114:; + endif112:; + endif110:; + endif108:; + JsonParser_Advance(p); + } + goto endif104; + else103:; { _t355 = &sb; - _t356 = (char)34; + _t356 = (char)c; StringBuilder_AppendChar(_t355, _t356); - } - goto endif125; - else124:; - _t357 = (esc == 92); - if (!_t357) goto else126; - { - _t358 = &sb; - _t359 = (char)92; - StringBuilder_AppendChar(_t358, _t359); - } - goto endif127; - else126:; - { - _t360 = &sb; - _t361 = (char)92; - StringBuilder_AppendChar(_t360, _t361); - _t362 = &sb; - _t363 = (char)esc; - StringBuilder_AppendChar(_t362, _t363); - } - endif127:; - endif125:; - endif123:; - endif121:; - endif119:; - endif117:; - endif115:; JsonParser_Advance(p); } - goto endif111; - else110:; - { - _t364 = &sb; - _t365 = (char)c; - StringBuilder_AppendChar(_t364, _t365); - JsonParser_Advance(p); + endif104:; } - endif111:; - } - goto while103; - wend105:; - int _t366; - _t366 = JsonParser_Peek(p); - _t367 = (_t366 != 34); - if (!_t367) goto endif129; + goto while97; + wend98:; + int _t357; + _t357 = JsonParser_Peek(p); + _t358 = (_t357 != 34); + if (!_t358) goto endif122; { p->error = "Unterminated string"; - _t368 = &sb; - StringBuilder_Free(_t368); + _t359 = &sb; + StringBuilder_Free(_t359); return ""; } - endif129:; + endif122:; JsonParser_Advance(p); const char* result; - _t369 = &sb; - const char* _t370; - _t370 = StringBuilder_Build(_t369); - result = _t370; - _t371 = &sb; - StringBuilder_Free(_t371); + _t360 = &sb; + const char* _t361; + _t361 = StringBuilder_Build(_t360); + result = _t361; + _t362 = &sb; + StringBuilder_Free(_t362); return result; } JsonValue JsonParser_ParseNumber(JsonParser* p) { - int _t374; - int _t376; - int _t377; - int _t380; - int _t382; - int _t383; - int _t387; - unsigned int start; - unsigned int _t372; - _t372 = p->pos; - start = _t372; - int c0; + int _t365; + int _t367; + int _t368; + int _t371; int _t373; - _t373 = JsonParser_Peek(p); - c0 = _t373; - _t374 = (c0 == 45); - if (!_t374) goto endif131; + int _t374; + int _t378; + unsigned int start; + unsigned int _t363; + _t363 = p->pos; + start = _t363; + int c0; + int _t364; + _t364 = JsonParser_Peek(p); + c0 = _t364; + _t365 = (c0 == 45); + if (!_t365) goto endif124; { JsonParser_Advance(p); } - endif131:; - while132:; + endif124:; + while125:; + if (!1) goto wend126; + { + int c; + int _t366; + _t366 = JsonParser_Peek(p); + c = _t366; + bool __and_tmp_5; + _t367 = (c >= 48); + if (!_t367) goto else127; + _t368 = (c <= 57); + *(bool*)&__and_tmp_5 = _t368; + goto endif128; + else127:; + *(bool*)&__and_tmp_5 = 0; + endif128:; + bool _t369; + _t369 = *(bool*)&__and_tmp_5; + if (!_t369) goto else129; + { + JsonParser_Advance(p); + } + goto endif130; + else129:; + { + goto wend126; + } + endif130:; + } + goto while125; + wend126:; + int _t370; + _t370 = JsonParser_Peek(p); + _t371 = (_t370 == 46); + if (!_t371) goto endif132; + { + JsonParser_Advance(p); + while133:; if (!1) goto wend134; { int c; - int _t375; - _t375 = JsonParser_Peek(p); - c = _t375; - bool __and_tmp_5; - _t376 = (c >= 48); - if (!_t376) goto else135; - _t377 = (c <= 57); - *(bool*)&__and_tmp_5 = _t377; + int _t372; + _t372 = JsonParser_Peek(p); + c = _t372; + bool __and_tmp_6; + _t373 = (c >= 48); + if (!_t373) goto else135; + _t374 = (c <= 57); + *(bool*)&__and_tmp_6 = _t374; goto endif136; else135:; - *(bool*)&__and_tmp_5 = 0; + *(bool*)&__and_tmp_6 = 0; endif136:; - bool _t378; - _t378 = *(bool*)&__and_tmp_5; - if (!_t378) goto else137; + bool _t375; + _t375 = *(bool*)&__and_tmp_6; + if (!_t375) goto else137; { JsonParser_Advance(p); } @@ -2253,1098 +2289,1061 @@ JsonValue JsonParser_ParseNumber(JsonParser* p) { } endif138:; } - goto while132; + goto while133; wend134:; - int _t379; - _t379 = JsonParser_Peek(p); - _t380 = (_t379 == 46); - if (!_t380) goto endif140; - { - JsonParser_Advance(p); - while141:; - if (!1) goto wend143; - { - int c; - int _t381; - _t381 = JsonParser_Peek(p); - c = _t381; - bool __and_tmp_6; - _t382 = (c >= 48); - if (!_t382) goto else144; - _t383 = (c <= 57); - *(bool*)&__and_tmp_6 = _t383; - goto endif145; - else144:; - *(bool*)&__and_tmp_6 = 0; - endif145:; - bool _t384; - _t384 = *(bool*)&__and_tmp_6; - if (!_t384) goto else146; - { - JsonParser_Advance(p); } - goto endif147; - else146:; - { - goto wend143; - } - endif147:; - } - goto while141; - wend143:; - } - endif140:; + endif132:; const char* numStr; - const char* _t385; - _t385 = p->src; - unsigned int _t386; - _t386 = p->pos; - _t387 = _t386 - start; - const char* _t388; - _t388 = String_Slice(_t385, start, _t387); - numStr = _t388; + const char* _t376; + _t376 = p->src; + unsigned int _t377; + _t377 = p->pos; + _t378 = _t377 - start; + const char* _t379; + _t379 = String_Slice(_t376, start, _t378); + numStr = _t379; double n; - double _t389; - _t389 = String_ToFloat(numStr); - n = _t389; - JsonValue _t390; - _t390 = Json_Number(n); - return _t390; + double _t380; + _t380 = String_ToFloat(numStr); + n = _t380; + JsonValue _t381; + _t381 = Json_Number(n); + return _t381; } JsonValue JsonParser_ParseArray(JsonParser* p) { - int _t393; - int _t396; - void* _t398; - int _t400; - int _t401; + int _t384; + int _t387; + void* _t389; + int _t391; + int _t392; JsonParser_Advance(p); JsonValue arr; - JsonValue _t391; - _t391 = Json_Array(); - arr = _t391; + JsonValue _t382; + _t382 = Json_Array(); + arr = _t382; JsonParser_SkipWhitespace(p); - int _t392; - _t392 = JsonParser_Peek(p); - _t393 = (_t392 == 93); - if (!_t393) goto endif149; + int _t383; + _t383 = JsonParser_Peek(p); + _t384 = (_t383 == 93); + if (!_t384) goto endif140; { JsonParser_Advance(p); return arr; } - endif149:; - while150:; - if (!1) goto wend152; + endif140:; + while141:; + if (!1) goto wend142; { JsonParser_SkipWhitespace(p); JsonValue val; - JsonValue _t394; - _t394 = JsonParser_ParseValue(p); - val = _t394; - const char* _t395; - _t395 = p->error; - _t396 = (_t395 != ""); - if (!_t396) goto endif154; + JsonValue _t385; + _t385 = JsonParser_ParseValue(p); + val = _t385; + const char* _t386; + _t386 = p->error; + _t387 = (_t386 != ""); + if (!_t387) goto endif144; { - JsonValue _t397; - _t397 = Json_Null(); - return _t397; + JsonValue _t388; + _t388 = Json_Null(); + return _t388; } - endif154:; - _t398 = &arr; - Json_ArrayPush(_t398, val); + endif144:; + _t389 = &arr; + Json_ArrayPush(_t389, val); JsonParser_SkipWhitespace(p); int c; - int _t399; - _t399 = JsonParser_Peek(p); - c = _t399; - _t400 = (c == 93); - if (!_t400) goto endif156; + int _t390; + _t390 = JsonParser_Peek(p); + c = _t390; + _t391 = (c == 93); + if (!_t391) goto endif146; { JsonParser_Advance(p); return arr; } - endif156:; - _t401 = (c == 44); - if (!_t401) goto else157; + endif146:; + _t392 = (c == 44); + if (!_t392) goto else147; { JsonParser_Advance(p); } - goto endif158; - else157:; + goto endif148; + else147:; { p->error = "Expected ',' or ']' in array"; - JsonValue _t402; - _t402 = Json_Null(); - return _t402; + JsonValue _t393; + _t393 = Json_Null(); + return _t393; } - endif158:; + endif148:; } - goto while150; - wend152:; + goto while141; + wend142:; } JsonValue JsonParser_ParseObject(JsonParser* p) { - int _t405; - int _t408; + int _t396; + int _t399; + int _t402; + int _t406; + void* _t408; + int _t410; int _t411; - int _t415; - void* _t417; - int _t419; - int _t420; JsonParser_Advance(p); JsonValue obj; - JsonValue _t403; - _t403 = Json_Object(); - obj = _t403; + JsonValue _t394; + _t394 = Json_Object(); + obj = _t394; JsonParser_SkipWhitespace(p); - int _t404; - _t404 = JsonParser_Peek(p); - _t405 = (_t404 == 125); - if (!_t405) goto endif160; + int _t395; + _t395 = JsonParser_Peek(p); + _t396 = (_t395 == 125); + if (!_t396) goto endif150; + { + JsonParser_Advance(p); + return obj; + } + endif150:; + while151:; + if (!1) goto wend152; + { + JsonParser_SkipWhitespace(p); + const char* key; + const char* _t397; + _t397 = JsonParser_ParseString(p); + key = _t397; + const char* _t398; + _t398 = p->error; + _t399 = (_t398 != ""); + if (!_t399) goto endif154; + { + JsonValue _t400; + _t400 = Json_Null(); + return _t400; + } + endif154:; + JsonParser_SkipWhitespace(p); + int _t401; + _t401 = JsonParser_Peek(p); + _t402 = (_t401 != 58); + if (!_t402) goto endif156; + { + p->error = "Expected ':' after object key"; + JsonValue _t403; + _t403 = Json_Null(); + return _t403; + } + endif156:; + JsonParser_Advance(p); + JsonParser_SkipWhitespace(p); + JsonValue val; + JsonValue _t404; + _t404 = JsonParser_ParseValue(p); + val = _t404; + const char* _t405; + _t405 = p->error; + _t406 = (_t405 != ""); + if (!_t406) goto endif158; + { + JsonValue _t407; + _t407 = Json_Null(); + return _t407; + } + endif158:; + _t408 = &obj; + Json_ObjectSet(_t408, key, val); + JsonParser_SkipWhitespace(p); + int c; + int _t409; + _t409 = JsonParser_Peek(p); + c = _t409; + _t410 = (c == 125); + if (!_t410) goto endif160; { JsonParser_Advance(p); return obj; } endif160:; - while161:; - if (!1) goto wend163; + _t411 = (c == 44); + if (!_t411) goto else161; { - JsonParser_SkipWhitespace(p); - const char* key; - const char* _t406; - _t406 = JsonParser_ParseString(p); - key = _t406; - const char* _t407; - _t407 = p->error; - _t408 = (_t407 != ""); - if (!_t408) goto endif165; - { - JsonValue _t409; - _t409 = Json_Null(); - return _t409; + JsonParser_Advance(p); } - endif165:; - JsonParser_SkipWhitespace(p); - int _t410; - _t410 = JsonParser_Peek(p); - _t411 = (_t410 != 58); - if (!_t411) goto endif167; + goto endif162; + else161:; { - p->error = "Expected ':' after object key"; + p->error = "Expected ',' or '}' in object"; JsonValue _t412; _t412 = Json_Null(); return _t412; } - endif167:; - JsonParser_Advance(p); - JsonParser_SkipWhitespace(p); - JsonValue val; - JsonValue _t413; - _t413 = JsonParser_ParseValue(p); - val = _t413; - const char* _t414; - _t414 = p->error; - _t415 = (_t414 != ""); - if (!_t415) goto endif169; - { - JsonValue _t416; - _t416 = Json_Null(); - return _t416; + endif162:; } - endif169:; - _t417 = &obj; - Json_ObjectSet(_t417, key, val); - JsonParser_SkipWhitespace(p); - int c; - int _t418; - _t418 = JsonParser_Peek(p); - c = _t418; - _t419 = (c == 125); - if (!_t419) goto endif171; - { - JsonParser_Advance(p); - return obj; - } - endif171:; - _t420 = (c == 44); - if (!_t420) goto else172; - { - JsonParser_Advance(p); - } - goto endif173; - else172:; - { - p->error = "Expected ',' or '}' in object"; - JsonValue _t421; - _t421 = Json_Null(); - return _t421; - } - endif173:; - } - goto while161; - wend163:; + goto while151; + wend152:; } JsonValue JsonParser_ParseValue(JsonParser* p) { + int _t414; + int _t416; + int _t419; + int _t421; int _t423; - int _t425; - int _t428; - int _t430; - int _t432; + int _t427; + int _t431; + int _t435; int _t436; - int _t440; - int _t444; - int _t445; - int _t447; + int _t438; JsonParser_SkipWhitespace(p); int c; - int _t422; - _t422 = JsonParser_Peek(p); - c = _t422; - _t423 = (c == 0); - if (!_t423) goto endif175; + int _t413; + _t413 = JsonParser_Peek(p); + c = _t413; + _t414 = (c == 0); + if (!_t414) goto endif164; { p->error = "Unexpected end of input"; - JsonValue _t424; - _t424 = Json_Null(); - return _t424; + JsonValue _t415; + _t415 = Json_Null(); + return _t415; } - endif175:; - _t425 = (c == 34); - if (!_t425) goto endif177; + endif164:; + _t416 = (c == 34); + if (!_t416) goto endif166; { - const char* _t426; - _t426 = JsonParser_ParseString(p); - JsonValue _t427; - _t427 = Json_String(_t426); - return _t427; + const char* _t417; + _t417 = JsonParser_ParseString(p); + JsonValue _t418; + _t418 = Json_String(_t417); + return _t418; } - endif177:; - _t428 = (c == 123); - if (!_t428) goto endif179; + endif166:; + _t419 = (c == 123); + if (!_t419) goto endif168; + { + JsonValue _t420; + _t420 = JsonParser_ParseObject(p); + return _t420; + } + endif168:; + _t421 = (c == 91); + if (!_t421) goto endif170; + { + JsonValue _t422; + _t422 = JsonParser_ParseArray(p); + return _t422; + } + endif170:; + _t423 = (c == 116); + if (!_t423) goto endif172; + { + bool _t424; + _t424 = JsonParser_Match(p, "true"); + if (!_t424) goto endif174; + { + JsonValue _t425; + _t425 = Json_Bool(1); + return _t425; + } + endif174:; + p->error = "Expected 'true'"; + JsonValue _t426; + _t426 = Json_Null(); + return _t426; + } + endif172:; + _t427 = (c == 102); + if (!_t427) goto endif176; + { + bool _t428; + _t428 = JsonParser_Match(p, "false"); + if (!_t428) goto endif178; { JsonValue _t429; - _t429 = JsonParser_ParseObject(p); + _t429 = Json_Bool(0); return _t429; } - endif179:; - _t430 = (c == 91); - if (!_t430) goto endif181; - { - JsonValue _t431; - _t431 = JsonParser_ParseArray(p); - return _t431; + endif178:; + p->error = "Expected 'false'"; + JsonValue _t430; + _t430 = Json_Null(); + return _t430; } - endif181:; - _t432 = (c == 116); - if (!_t432) goto endif183; + endif176:; + _t431 = (c == 110); + if (!_t431) goto endif180; { - bool _t433; - _t433 = JsonParser_Match(p, "true"); - if (!_t433) goto endif185; + bool _t432; + _t432 = JsonParser_Match(p, "null"); + if (!_t432) goto endif182; { + JsonValue _t433; + _t433 = Json_Null(); + return _t433; + } + endif182:; + p->error = "Expected 'null'"; JsonValue _t434; - _t434 = Json_Bool(1); + _t434 = Json_Null(); return _t434; } - endif185:; - p->error = "Expected 'true'"; - JsonValue _t435; - _t435 = Json_Null(); - return _t435; - } - endif183:; - _t436 = (c == 102); - if (!_t436) goto endif187; - { - bool _t437; - _t437 = JsonParser_Match(p, "false"); - if (!_t437) goto endif189; - { - JsonValue _t438; - _t438 = Json_Bool(0); - return _t438; - } - endif189:; - p->error = "Expected 'false'"; - JsonValue _t439; - _t439 = Json_Null(); - return _t439; - } - endif187:; - _t440 = (c == 110); - if (!_t440) goto endif191; - { - bool _t441; - _t441 = JsonParser_Match(p, "null"); - if (!_t441) goto endif193; - { - JsonValue _t442; - _t442 = Json_Null(); - return _t442; - } - endif193:; - p->error = "Expected 'null'"; - JsonValue _t443; - _t443 = Json_Null(); - return _t443; - } - endif191:; + endif180:; bool __or_tmp_7; bool __and_tmp_8; - _t444 = (c >= 48); - if (!_t444) goto else194; - _t445 = (c <= 57); - *(bool*)&__and_tmp_8 = _t445; - goto endif195; - else194:; + _t435 = (c >= 48); + if (!_t435) goto else183; + _t436 = (c <= 57); + *(bool*)&__and_tmp_8 = _t436; + goto endif184; + else183:; *(bool*)&__and_tmp_8 = 0; - endif195:; - bool _t446; - _t446 = *(bool*)&__and_tmp_8; - if (!_t446) goto else196; + endif184:; + bool _t437; + _t437 = *(bool*)&__and_tmp_8; + if (!_t437) goto else185; *(bool*)&__or_tmp_7 = 1; - goto endif197; - else196:; - _t447 = (c == 45); - *(bool*)&__or_tmp_7 = _t447; - endif197:; - bool _t448; - _t448 = *(bool*)&__or_tmp_7; - if (!_t448) goto endif199; + goto endif186; + else185:; + _t438 = (c == 45); + *(bool*)&__or_tmp_7 = _t438; + endif186:; + bool _t439; + _t439 = *(bool*)&__or_tmp_7; + if (!_t439) goto endif188; { - JsonValue _t449; - _t449 = JsonParser_ParseNumber(p); - return _t449; + JsonValue _t440; + _t440 = JsonParser_ParseNumber(p); + return _t440; } - endif199:; + endif188:; p->error = "Unexpected character"; - JsonValue _t450; - _t450 = Json_Null(); - return _t450; + JsonValue _t441; + _t441 = Json_Null(); + return _t441; } JsonValue Json_Parse(const char* s) { - JsonParser _t452; - void* _t453; - void* _t455; - int _t457; - int _t460; + JsonParser _t443; + void* _t444; + void* _t446; + int _t448; + int _t451; JsonParser p; - unsigned int _t451; - _t451 = String_Len(s); - _t452 = (JsonParser){.src = s, .pos = 0, .len = _t451, .error = ""}; - p = _t452; + unsigned int _t442; + _t442 = String_Len(s); + _t443 = (JsonParser){.src = s, .pos = 0, .len = _t442, .error = ""}; + p = _t443; JsonValue result; - _t453 = &p; - JsonValue _t454; - _t454 = JsonParser_ParseValue(_t453); - result = _t454; - _t455 = &p; - JsonParser_SkipWhitespace(_t455); + _t444 = &p; + JsonValue _t445; + _t445 = JsonParser_ParseValue(_t444); + result = _t445; + _t446 = &p; + JsonParser_SkipWhitespace(_t446); bool __and_tmp_9; - const char* _t456; - _t456 = p.error; - _t457 = (_t456 == ""); - if (!_t457) goto else200; - unsigned int _t458; - _t458 = p.pos; - unsigned int _t459; - _t459 = p.len; - _t460 = (_t458 != _t459); - *(bool*)&__and_tmp_9 = _t460; - goto endif201; - else200:; + const char* _t447; + _t447 = p.error; + _t448 = (_t447 == ""); + if (!_t448) goto else189; + unsigned int _t449; + _t449 = p.pos; + unsigned int _t450; + _t450 = p.len; + _t451 = (_t449 != _t450); + *(bool*)&__and_tmp_9 = _t451; + goto endif190; + else189:; *(bool*)&__and_tmp_9 = 0; - endif201:; - bool _t461; - _t461 = *(bool*)&__and_tmp_9; - if (!_t461) goto endif203; + endif190:; + bool _t452; + _t452 = *(bool*)&__and_tmp_9; + if (!_t452) goto endif192; { p.error = "Trailing data after JSON value"; - JsonValue _t462; - _t462 = Json_Null(); - return _t462; + JsonValue _t453; + _t453 = Json_Null(); + return _t453; } - endif203:; + endif192:; return result; } void Json_StringifyImpl(StringBuilder* sb, JsonValue v) { - int _t464; - int _t466; - int _t469; + int _t455; + int _t457; + int _t460; + int _t463; + char _t464; + char _t466; + int _t468; + char _t469; + int _t471; int _t472; char _t473; - char _t475; - int _t477; - char _t478; - int _t480; - int _t481; - char _t482; - int _t485; - char _t486; - int _t488; + int _t476; + char _t477; + int _t479; + char _t480; + int _t482; + int _t483; + char _t484; + char _t485; + char _t488; char _t489; - int _t491; int _t492; char _t493; - char _t494; - char _t497; - char _t498; - int _t501; - char _t502; - int _t463; - _t463 = v.tag; - _t464 = (_t463 == JsonTagNull); - if (!_t464) goto endif205; + int _t454; + _t454 = v.tag; + _t455 = (_t454 == JsonTagNull); + if (!_t455) goto endif194; { StringBuilder_Append(sb, "null"); return; } - endif205:; - int _t465; - _t465 = v.tag; - _t466 = (_t465 == JsonTagBool); - if (!_t466) goto endif207; + endif194:; + int _t456; + _t456 = v.tag; + _t457 = (_t456 == JsonTagBool); + if (!_t457) goto endif196; { - bool _t467; - _t467 = v.boolVal; - if (!_t467) goto else208; + bool _t458; + _t458 = v.boolVal; + if (!_t458) goto else197; { StringBuilder_Append(sb, "true"); } - goto endif209; - else208:; + goto endif198; + else197:; { StringBuilder_Append(sb, "false"); } - endif209:; + endif198:; return; } - endif207:; - int _t468; - _t468 = v.tag; - _t469 = (_t468 == JsonTagNumber); - if (!_t469) goto endif211; + endif196:; + int _t459; + _t459 = v.tag; + _t460 = (_t459 == JsonTagNumber); + if (!_t460) goto endif200; { - double _t470; - _t470 = v.numVal; - StringBuilder_AppendFloat(sb, _t470); + double _t461; + _t461 = v.numVal; + StringBuilder_AppendFloat(sb, _t461); return; } - endif211:; - int _t471; - _t471 = v.tag; - _t472 = (_t471 == JsonTagString); - if (!_t472) goto endif213; + endif200:; + int _t462; + _t462 = v.tag; + _t463 = (_t462 == JsonTagString); + if (!_t463) goto endif202; { - _t473 = (char)34; + _t464 = (char)34; + StringBuilder_AppendChar(sb, _t464); + const char* _t465; + _t465 = v.strVal; + StringBuilder_Append(sb, _t465); + _t466 = (char)34; + StringBuilder_AppendChar(sb, _t466); + return; + } + endif202:; + int _t467; + _t467 = v.tag; + _t468 = (_t467 == JsonTagArray); + if (!_t468) goto endif204; + { + _t469 = (char)91; + StringBuilder_AppendChar(sb, _t469); + unsigned int i; + i = 0; + while205:; + unsigned int _t470; + _t470 = v.arrLen; + _t471 = (i < _t470); + if (!_t471) goto wend206; + { + _t472 = (i > 0); + if (!_t472) goto endif208; + { + _t473 = (char)44; StringBuilder_AppendChar(sb, _t473); - const char* _t474; - _t474 = v.strVal; - StringBuilder_Append(sb, _t474); - _t475 = (char)34; - StringBuilder_AppendChar(sb, _t475); + } + endif208:; + JsonValue* _t474; + _t474 = v.arrData; + JsonValue _t475; + _t475 = _t474[i]; + Json_StringifyImpl(sb, _t475); + _t476 = i + 1; + i = _t476; + } + goto while205; + wend206:; + _t477 = (char)93; + StringBuilder_AppendChar(sb, _t477); return; } - endif213:; - int _t476; - _t476 = v.tag; - _t477 = (_t476 == JsonTagArray); - if (!_t477) goto endif215; + endif204:; + int _t478; + _t478 = v.tag; + _t479 = (_t478 == JsonTagObject); + if (!_t479) goto endif210; { - _t478 = (char)91; - StringBuilder_AppendChar(sb, _t478); + _t480 = (char)123; + StringBuilder_AppendChar(sb, _t480); unsigned int i; i = 0; - while216:; - unsigned int _t479; - _t479 = v.arrLen; - _t480 = (i < _t479); - if (!_t480) goto wend218; + while211:; + unsigned int _t481; + _t481 = v.objLen; + _t482 = (i < _t481); + if (!_t482) goto wend212; { - _t481 = (i > 0); - if (!_t481) goto endif220; + _t483 = (i > 0); + if (!_t483) goto endif214; { - _t482 = (char)44; - StringBuilder_AppendChar(sb, _t482); + _t484 = (char)44; + StringBuilder_AppendChar(sb, _t484); } - endif220:; - JsonValue* _t483; - _t483 = v.arrData; - JsonValue _t484; - _t484 = _t483[i]; - Json_StringifyImpl(sb, _t484); - _t485 = i + 1; - i = _t485; - } - goto while216; - wend218:; - _t486 = (char)93; - StringBuilder_AppendChar(sb, _t486); - return; - } - endif215:; - int _t487; - _t487 = v.tag; - _t488 = (_t487 == JsonTagObject); - if (!_t488) goto endif222; - { - _t489 = (char)123; + endif214:; + _t485 = (char)34; + StringBuilder_AppendChar(sb, _t485); + const char** _t486; + _t486 = v.objKeys; + const char* _t487; + _t487 = _t486[i]; + StringBuilder_Append(sb, _t487); + _t488 = (char)34; + StringBuilder_AppendChar(sb, _t488); + _t489 = (char)58; StringBuilder_AppendChar(sb, _t489); - unsigned int i; - i = 0; - while223:; - unsigned int _t490; - _t490 = v.objLen; - _t491 = (i < _t490); - if (!_t491) goto wend225; - { - _t492 = (i > 0); - if (!_t492) goto endif227; - { - _t493 = (char)44; + JsonValue* _t490; + _t490 = v.objValues; + JsonValue _t491; + _t491 = _t490[i]; + Json_StringifyImpl(sb, _t491); + _t492 = i + 1; + i = _t492; + } + goto while211; + wend212:; + _t493 = (char)125; StringBuilder_AppendChar(sb, _t493); - } - endif227:; - _t494 = (char)34; - StringBuilder_AppendChar(sb, _t494); - const char** _t495; - _t495 = v.objKeys; - const char* _t496; - _t496 = _t495[i]; - StringBuilder_Append(sb, _t496); - _t497 = (char)34; - StringBuilder_AppendChar(sb, _t497); - _t498 = (char)58; - StringBuilder_AppendChar(sb, _t498); - JsonValue* _t499; - _t499 = v.objValues; - JsonValue _t500; - _t500 = _t499[i]; - Json_StringifyImpl(sb, _t500); - _t501 = i + 1; - i = _t501; - } - goto while223; - wend225:; - _t502 = (char)125; - StringBuilder_AppendChar(sb, _t502); return; } - endif222:; + endif210:; } const char* Json_Stringify(JsonValue v) { - void* _t504; - void* _t505; + void* _t495; + void* _t496; StringBuilder sb; - StringBuilder _t503; - _t503 = StringBuilder_New(); - sb = _t503; - _t504 = &sb; - Json_StringifyImpl(_t504, v); - _t505 = &sb; - const char* _t506; - _t506 = StringBuilder_Build(_t505); - return _t506; + StringBuilder _t494; + _t494 = StringBuilder_New(); + sb = _t494; + _t495 = &sb; + Json_StringifyImpl(_t495, v); + _t496 = &sb; + const char* _t497; + _t497 = StringBuilder_Build(_t496); + return _t497; } unsigned int String_Len(const char* s) { - unsigned int _t507; - _t507 = bux_strlen(s); - return _t507; + unsigned int _t498; + _t498 = bux_strlen(s); + return _t498; } bool String_IsNull(const char* s) { - int _t509; - int _t508; - _t508 = bux_str_is_null(s); - _t509 = (_t508 != 0); - return _t509; + int _t500; + int _t499; + _t499 = bux_str_is_null(s); + _t500 = (_t499 != 0); + return _t500; } bool String_Eq(const char* a, const char* b) { - int _t511; - int _t510; - _t510 = bux_strcmp(a, b); - _t511 = (_t510 == 0); - return _t511; + int _t502; + int _t501; + _t501 = bux_strcmp(a, b); + _t502 = (_t501 == 0); + return _t502; } const char* String_Concat(const char* a, const char* b) { - int _t514; - int _t515; - char* _t517; + int _t505; + int _t506; + char* _t508; unsigned int len_a; - unsigned int _t512; - _t512 = bux_strlen(a); - len_a = _t512; + unsigned int _t503; + _t503 = bux_strlen(a); + len_a = _t503; unsigned int len_b; - unsigned int _t513; - _t513 = bux_strlen(b); - len_b = _t513; + unsigned int _t504; + _t504 = bux_strlen(b); + len_b = _t504; unsigned int total; - _t514 = len_a + len_b; - _t515 = _t514 + 1; - total = _t515; + _t505 = len_a + len_b; + _t506 = _t505 + 1; + total = _t506; char* buf; - void* _t516; - _t516 = bux_alloc(total); - _t517 = (char*)_t516; - buf = _t517; + void* _t507; + _t507 = bux_alloc(total); + _t508 = (char*)_t507; + buf = _t508; bux_strcpy(buf, a); bux_strcat(buf, b); return buf; } const char* String_Copy(const char* s) { - int _t519; - char* _t521; + int _t510; + char* _t512; unsigned int len; - unsigned int _t518; - _t518 = bux_strlen(s); - len = _t518; + unsigned int _t509; + _t509 = bux_strlen(s); + len = _t509; char* buf; - _t519 = len + 1; - void* _t520; - _t520 = bux_alloc(_t519); - _t521 = (char*)_t520; - buf = _t521; + _t510 = len + 1; + void* _t511; + _t511 = bux_alloc(_t510); + _t512 = (char*)_t511; + buf = _t512; bux_strcpy(buf, s); return buf; } bool String_StartsWith(const char* s, const char* prefix) { - int _t524; - int _t526; + int _t515; + int _t517; unsigned int s_len; - unsigned int _t522; - _t522 = bux_strlen(s); - s_len = _t522; + unsigned int _t513; + _t513 = bux_strlen(s); + s_len = _t513; unsigned int p_len; - unsigned int _t523; - _t523 = bux_strlen(prefix); - p_len = _t523; - _t524 = (p_len > s_len); - if (!_t524) goto endif229; + unsigned int _t514; + _t514 = bux_strlen(prefix); + p_len = _t514; + _t515 = (p_len > s_len); + if (!_t515) goto endif216; { return 0; } - endif229:; + endif216:; int r; - int _t525; - _t525 = bux_strncmp(s, prefix, p_len); - r = _t525; - _t526 = (r == 0); - return _t526; + int _t516; + _t516 = bux_strncmp(s, prefix, p_len); + r = _t516; + _t517 = (r == 0); + return _t517; } bool String_EndsWith(const char* s, const char* suffix) { - int _t529; - int _t530; - int _t533; + int _t520; + int _t521; + int _t524; unsigned int s_len; - unsigned int _t527; - _t527 = bux_strlen(s); - s_len = _t527; + unsigned int _t518; + _t518 = bux_strlen(s); + s_len = _t518; unsigned int suf_len; - unsigned int _t528; - _t528 = bux_strlen(suffix); - suf_len = _t528; - _t529 = (suf_len > s_len); - if (!_t529) goto endif231; + unsigned int _t519; + _t519 = bux_strlen(suffix); + suf_len = _t519; + _t520 = (suf_len > s_len); + if (!_t520) goto endif218; { return 0; } - endif231:; + endif218:; unsigned int start; - _t530 = s_len - suf_len; - start = _t530; + _t521 = s_len - suf_len; + start = _t521; const char* tail; - const char* _t531; - _t531 = bux_str_slice(s, start, suf_len); - tail = _t531; + const char* _t522; + _t522 = bux_str_slice(s, start, suf_len); + tail = _t522; bool eq; - int _t532; - _t532 = bux_strcmp(tail, suffix); - _t533 = (_t532 == 0); - eq = _t533; + int _t523; + _t523 = bux_strcmp(tail, suffix); + _t524 = (_t523 == 0); + eq = _t524; return eq; } bool String_Contains(const char* s, const char* substr) { - int _t535; + int _t526; int r; - int _t534; - _t534 = bux_str_contains(s, substr); - r = _t534; - _t535 = (r != 0); - return _t535; + int _t525; + _t525 = bux_str_contains(s, substr); + r = _t525; + _t526 = (r != 0); + return _t526; } const char* String_Slice(const char* s, unsigned int start, unsigned int len) { - const char* _t536; - _t536 = bux_str_slice(s, start, len); - return _t536; + const char* _t527; + _t527 = bux_str_slice(s, start, len); + return _t527; } const char* String_Trim(const char* s) { - const char* _t537; - _t537 = bux_str_trim(s); - return _t537; + const char* _t528; + _t528 = bux_str_trim(s); + return _t528; } const char* String_TrimLeft(const char* s) { - const char* _t538; - _t538 = bux_str_trim_left(s); - return _t538; + const char* _t529; + _t529 = bux_str_trim_left(s); + return _t529; } const char* String_TrimRight(const char* s) { - const char* _t539; - _t539 = bux_str_trim_right(s); - return _t539; + const char* _t530; + _t530 = bux_str_trim_right(s); + return _t530; } const char* String_FromInt(int64_t n) { - const char* _t540; - _t540 = bux_int_to_str(n); - return _t540; + const char* _t531; + _t531 = bux_int_to_str(n); + return _t531; } int64_t String_ToInt(const char* s) { - int64_t _t541; - _t541 = bux_str_to_int(s); - return _t541; + int64_t _t532; + _t532 = bux_str_to_int(s); + return _t532; } StringBuilder StringBuilder_New(void) { - StringBuilder _t543; - void* _t542; - _t542 = bux_sb_new(64); - _t543 = (StringBuilder){.handle = _t542}; - return _t543; + StringBuilder _t534; + void* _t533; + _t533 = bux_sb_new(64); + _t534 = (StringBuilder){.handle = _t533}; + return _t534; } StringBuilder StringBuilder_NewCap(unsigned int cap) { - StringBuilder _t545; - void* _t544; - _t544 = bux_sb_new(cap); - _t545 = (StringBuilder){.handle = _t544}; - return _t545; + StringBuilder _t536; + void* _t535; + _t535 = bux_sb_new(cap); + _t536 = (StringBuilder){.handle = _t535}; + return _t536; } void StringBuilder_Append(StringBuilder* sb, const char* s) { - void* _t546; - _t546 = sb->handle; - bux_sb_append(_t546, s); + void* _t537; + _t537 = sb->handle; + bux_sb_append(_t537, s); } void StringBuilder_AppendInt(StringBuilder* sb, int64_t n) { - void* _t547; - _t547 = sb->handle; - bux_sb_append_int(_t547, n); + void* _t538; + _t538 = sb->handle; + bux_sb_append_int(_t538, n); } void StringBuilder_AppendFloat(StringBuilder* sb, double f) { - void* _t548; - _t548 = sb->handle; - bux_sb_append_float(_t548, f); + void* _t539; + _t539 = sb->handle; + bux_sb_append_float(_t539, f); } void StringBuilder_AppendChar(StringBuilder* sb, char c) { - void* _t549; - _t549 = sb->handle; - bux_sb_append_char(_t549, c); + void* _t540; + _t540 = sb->handle; + bux_sb_append_char(_t540, c); } const char* StringBuilder_Build(StringBuilder* sb) { - void* _t550; - _t550 = sb->handle; - const char* _t551; - _t551 = bux_sb_build(_t550); - return _t551; + void* _t541; + _t541 = sb->handle; + const char* _t542; + _t542 = bux_sb_build(_t541); + return _t542; } void StringBuilder_Free(StringBuilder* sb) { - void* _t552; - _t552 = sb->handle; - bux_sb_free(_t552); + void* _t543; + _t543 = sb->handle; + bux_sb_free(_t543); } unsigned int String_SplitCount(const char* s, const char* delim) { - unsigned int _t553; - _t553 = bux_str_split_count(s, delim); - return _t553; + unsigned int _t544; + _t544 = bux_str_split_count(s, delim); + return _t544; } const char* String_SplitPart(const char* s, const char* delim, unsigned int index) { - const char* _t554; - _t554 = bux_str_split_part(s, delim, index); - return _t554; + const char* _t545; + _t545 = bux_str_split_part(s, delim, index); + return _t545; } const char* String_Join2(const char* a, const char* b, const char* sep) { - const char* _t555; - _t555 = bux_str_join2(a, b, sep); - return _t555; + const char* _t546; + _t546 = bux_str_join2(a, b, sep); + return _t546; } const char* String_Chars(const char* s, unsigned int index) { - const char* _t556; - _t556 = bux_str_slice(s, index, 1); - return _t556; + const char* _t547; + _t547 = bux_str_slice(s, index, 1); + return _t547; } const char* String_Find(const char* haystack, const char* needle) { - const char* _t557; - _t557 = bux_strstr(haystack, needle); - return _t557; + const char* _t548; + _t548 = bux_strstr(haystack, needle); + return _t548; } unsigned int String_Offset(const char* pos, const char* base) { - unsigned int _t558; - _t558 = bux_str_offset(pos, base); - return _t558; + unsigned int _t549; + _t549 = bux_str_offset(pos, base); + return _t549; } const char* String_Replace(const char* s, const char* old, const char* new) { - int _t564; - int _t566; - int _t567; + int _t555; + int _t557; + int _t558; const char* pos; - const char* _t559; - _t559 = bux_strstr(s, old); - pos = _t559; - bool _t560; - _t560 = String_IsNull(pos); - if (!_t560) goto endif233; + const char* _t550; + _t550 = bux_strstr(s, old); + pos = _t550; + bool _t551; + _t551 = String_IsNull(pos); + if (!_t551) goto endif220; { return s; } - endif233:; + endif220:; unsigned int oldLen; - unsigned int _t561; - _t561 = bux_strlen(old); - oldLen = _t561; + unsigned int _t552; + _t552 = bux_strlen(old); + oldLen = _t552; unsigned int prefixLen; - unsigned int _t562; - _t562 = String_Offset(pos, s); - prefixLen = _t562; + unsigned int _t553; + _t553 = String_Offset(pos, s); + prefixLen = _t553; const char* prefix; - const char* _t563; - _t563 = bux_str_slice(s, 0, prefixLen); - prefix = _t563; + const char* _t554; + _t554 = bux_str_slice(s, 0, prefixLen); + prefix = _t554; const char* suffix; - _t564 = prefixLen + oldLen; - unsigned int _t565; - _t565 = bux_strlen(s); - _t566 = _t565 - prefixLen; - _t567 = _t566 - oldLen; - const char* _t568; - _t568 = bux_str_slice(s, _t564, _t567); - suffix = _t568; + _t555 = prefixLen + oldLen; + unsigned int _t556; + _t556 = bux_strlen(s); + _t557 = _t556 - prefixLen; + _t558 = _t557 - oldLen; + const char* _t559; + _t559 = bux_str_slice(s, _t555, _t558); + suffix = _t559; const char* temp; - const char* _t569; - _t569 = String_Concat(prefix, new); - temp = _t569; + const char* _t560; + _t560 = String_Concat(prefix, new); + temp = _t560; const char* result; - const char* _t570; - _t570 = String_Concat(temp, suffix); - result = _t570; + const char* _t561; + _t561 = String_Concat(temp, suffix); + result = _t561; return result; } double String_ToFloat(const char* s) { - double _t571; - _t571 = bux_str_to_float(s); - return _t571; + double _t562; + _t562 = bux_str_to_float(s); + return _t562; } const char* String_FromBool(bool b) { - if (!b) goto endif235; + if (!b) goto endif222; { return "true"; } - endif235:; + endif222:; return "false"; } const char* String_FromFloat(double f) { - const char* _t572; - _t572 = bux_float_to_string(f); - return _t572; + const char* _t563; + _t563 = bux_float_to_string(f); + return _t563; } const char* String_Format1(const char* pattern, const char* a0) { - const char* _t573; - _t573 = bux_str_format(pattern, a0, "", "", "", "", "", "", ""); - return _t573; + const char* _t564; + _t564 = bux_str_format(pattern, a0, "", "", "", "", "", "", ""); + return _t564; } const char* String_Format2(const char* pattern, const char* a0, const char* a1) { - const char* _t574; - _t574 = bux_str_format(pattern, a0, a1, "", "", "", "", "", ""); - return _t574; + const char* _t565; + _t565 = bux_str_format(pattern, a0, a1, "", "", "", "", "", ""); + return _t565; } const char* String_Format3(const char* pattern, const char* a0, const char* a1, const char* a2) { - const char* _t575; - _t575 = bux_str_format(pattern, a0, a1, a2, "", "", "", "", ""); - return _t575; + const char* _t566; + _t566 = bux_str_format(pattern, a0, a1, a2, "", "", "", "", ""); + return _t566; } void Channel_SendInt(Channel_int* ch, int value) { - void* _t577; - void* _t578; - void* _t576; - _t576 = ch->handle; - _t577 = &value; - _t578 = (void*)_t577; - bux_channel_send(_t576, _t578); + void* _t568; + void* _t569; + void* _t567; + _t567 = ch->handle; + _t568 = &value; + _t569 = (void*)_t568; + bux_channel_send(_t567, _t569); } int Channel_RecvInt(Channel_int* ch) { - void* _t580; - void* _t581; + void* _t571; + void* _t572; int result; result = 0; - void* _t579; - _t579 = ch->handle; - _t580 = &result; - _t581 = (void*)_t580; - bux_channel_recv(_t579, _t581); + void* _t570; + _t570 = ch->handle; + _t571 = &result; + _t572 = (void*)_t571; + bux_channel_recv(_t570, _t572); return result; } void Channel_SendFloat64(Channel_float64* ch, double value) { - void* _t583; - void* _t584; - void* _t582; - _t582 = ch->handle; - _t583 = &value; - _t584 = (void*)_t583; - bux_channel_send(_t582, _t584); + void* _t574; + void* _t575; + void* _t573; + _t573 = ch->handle; + _t574 = &value; + _t575 = (void*)_t574; + bux_channel_send(_t573, _t575); } double Channel_RecvFloat64(Channel_float64* ch) { - void* _t586; - void* _t587; + void* _t577; + void* _t578; double result; result = 0.0; - void* _t585; - _t585 = ch->handle; - _t586 = &result; - _t587 = (void*)_t586; - bux_channel_recv(_t585, _t587); + void* _t576; + _t576 = ch->handle; + _t577 = &result; + _t578 = (void*)_t577; + bux_channel_recv(_t576, _t578); return result; } const char* Hash_Sha1(const char* data) { - int _t589; + int _t580; int len; - unsigned int _t588; - _t588 = String_Len(data); - _t589 = (int)_t588; - len = _t589; + unsigned int _t579; + _t579 = String_Len(data); + _t580 = (int)_t579; + len = _t580; void* buf; - void* _t590; - _t590 = Alloc(20); - buf = _t590; + void* _t581; + _t581 = Alloc(20); + buf = _t581; bux_sha1(data, len, buf); const char* result; - const char* _t591; - _t591 = bux_bytes_to_hex(buf, 20); - result = _t591; + const char* _t582; + _t582 = bux_bytes_to_hex(buf, 20); + result = _t582; Free(buf); return result; } const char* Hash_Sha256(const char* data) { - int _t593; + int _t584; int len; - unsigned int _t592; - _t592 = String_Len(data); - _t593 = (int)_t592; - len = _t593; + unsigned int _t583; + _t583 = String_Len(data); + _t584 = (int)_t583; + len = _t584; void* buf; - void* _t594; - _t594 = Alloc(32); - buf = _t594; + void* _t585; + _t585 = Alloc(32); + buf = _t585; bux_sha256(data, len, buf); const char* result; - const char* _t595; - _t595 = bux_bytes_to_hex(buf, 32); - result = _t595; + const char* _t586; + _t586 = bux_bytes_to_hex(buf, 32); + result = _t586; Free(buf); return result; } const char* Hash_Sha384(const char* data) { - int _t597; + int _t588; int len; - unsigned int _t596; - _t596 = String_Len(data); - _t597 = (int)_t596; - len = _t597; + unsigned int _t587; + _t587 = String_Len(data); + _t588 = (int)_t587; + len = _t588; void* buf; - void* _t598; - _t598 = Alloc(48); - buf = _t598; + void* _t589; + _t589 = Alloc(48); + buf = _t589; bux_sha384(data, len, buf); const char* result; - const char* _t599; - _t599 = bux_bytes_to_hex(buf, 48); - result = _t599; + const char* _t590; + _t590 = bux_bytes_to_hex(buf, 48); + result = _t590; Free(buf); return result; } const char* Hash_Sha512(const char* data) { - int _t601; + int _t592; int len; - unsigned int _t600; - _t600 = String_Len(data); - _t601 = (int)_t600; - len = _t601; + unsigned int _t591; + _t591 = String_Len(data); + _t592 = (int)_t591; + len = _t592; void* buf; - void* _t602; - _t602 = Alloc(64); - buf = _t602; + void* _t593; + _t593 = Alloc(64); + buf = _t593; bux_sha512(data, len, buf); const char* result; - const char* _t603; - _t603 = bux_bytes_to_hex(buf, 64); - result = _t603; + const char* _t594; + _t594 = bux_bytes_to_hex(buf, 64); + result = _t594; Free(buf); return result; } void Hash_Sha256Raw(const char* data, void* out) { - int _t605; - unsigned int _t604; - _t604 = String_Len(data); - _t605 = (int)_t604; - bux_sha256(data, _t605, out); + int _t596; + unsigned int _t595; + _t595 = String_Len(data); + _t596 = (int)_t595; + bux_sha256(data, _t596, out); } void Hash_Sha384Raw(const char* data, void* out) { - int _t607; - unsigned int _t606; - _t606 = String_Len(data); - _t607 = (int)_t606; - bux_sha384(data, _t607, out); + int _t598; + unsigned int _t597; + _t597 = String_Len(data); + _t598 = (int)_t597; + bux_sha384(data, _t598, out); } void Hash_Sha512Raw(const char* data, void* out) { - int _t609; - unsigned int _t608; - _t608 = String_Len(data); - _t609 = (int)_t608; - bux_sha512(data, _t609, out); + int _t600; + unsigned int _t599; + _t599 = String_Len(data); + _t600 = (int)_t599; + bux_sha512(data, _t600, out); } int Hash_Sha1Size(void) { @@ -3364,1497 +3363,1497 @@ int Hash_Sha512Size(void) { } const char* Base64_Encode(const char* s) { - int _t611; - unsigned int _t610; - _t610 = String_Len(s); - _t611 = (int)_t610; - const char* _t612; - _t612 = bux_base64_encode(s, _t611); - return _t612; + int _t602; + unsigned int _t601; + _t601 = String_Len(s); + _t602 = (int)_t601; + const char* _t603; + _t603 = bux_base64_encode(s, _t602); + return _t603; } const char* Base64_Decode(const char* s) { - int _t614; - void* _t615; + int _t605; + void* _t606; int outlen; outlen = 0; - unsigned int _t613; - _t613 = String_Len(s); - _t614 = (int)_t613; - _t615 = &outlen; - const char* _t616; - _t616 = bux_base64_decode(s, _t614, _t615); - return _t616; + unsigned int _t604; + _t604 = String_Len(s); + _t605 = (int)_t604; + _t606 = &outlen; + const char* _t607; + _t607 = bux_base64_decode(s, _t605, _t606); + return _t607; } const char* Base64URL_Encode(const char* s) { - int _t618; - unsigned int _t617; - _t617 = String_Len(s); - _t618 = (int)_t617; - const char* _t619; - _t619 = bux_base64url_encode(s, _t618); - return _t619; + int _t609; + unsigned int _t608; + _t608 = String_Len(s); + _t609 = (int)_t608; + const char* _t610; + _t610 = bux_base64url_encode(s, _t609); + return _t610; } const char* Base64URL_Decode(const char* s) { - int _t621; - void* _t622; + int _t612; + void* _t613; int outlen; outlen = 0; - unsigned int _t620; - _t620 = String_Len(s); - _t621 = (int)_t620; - _t622 = &outlen; - const char* _t623; - _t623 = bux_base64url_decode(s, _t621, _t622); - return _t623; + unsigned int _t611; + _t611 = String_Len(s); + _t612 = (int)_t611; + _t613 = &outlen; + const char* _t614; + _t614 = bux_base64url_decode(s, _t612, _t613); + return _t614; } const char* Hmac_Sha256(const char* key, const char* message) { - int _t625; - int _t627; + int _t616; + int _t618; int kl; - unsigned int _t624; - _t624 = String_Len(key); - _t625 = (int)_t624; - kl = _t625; + unsigned int _t615; + _t615 = String_Len(key); + _t616 = (int)_t615; + kl = _t616; int ml; - unsigned int _t626; - _t626 = String_Len(message); - _t627 = (int)_t626; - ml = _t627; + unsigned int _t617; + _t617 = String_Len(message); + _t618 = (int)_t617; + ml = _t618; void* buf; - void* _t628; - _t628 = Alloc(32); - buf = _t628; + void* _t619; + _t619 = Alloc(32); + buf = _t619; bux_hmac_sha256(key, kl, message, ml, buf); const char* result; - const char* _t629; - _t629 = bux_bytes_to_hex(buf, 32); - result = _t629; + const char* _t620; + _t620 = bux_bytes_to_hex(buf, 32); + result = _t620; Free(buf); return result; } void Hmac_Sha256Raw(const char* key, const char* message, void* out) { - int _t631; - int _t633; - unsigned int _t630; - _t630 = String_Len(key); - _t631 = (int)_t630; - unsigned int _t632; - _t632 = String_Len(message); - _t633 = (int)_t632; - bux_hmac_sha256(key, _t631, message, _t633, out); + int _t622; + int _t624; + unsigned int _t621; + _t621 = String_Len(key); + _t622 = (int)_t621; + unsigned int _t623; + _t623 = String_Len(message); + _t624 = (int)_t623; + bux_hmac_sha256(key, _t622, message, _t624, out); } const char* Hmac_Sha256Base64(const char* key, const char* message) { - int _t635; - int _t637; - const char* _t639; + int _t626; + int _t628; + const char* _t630; int kl; - unsigned int _t634; - _t634 = String_Len(key); - _t635 = (int)_t634; - kl = _t635; + unsigned int _t625; + _t625 = String_Len(key); + _t626 = (int)_t625; + kl = _t626; int ml; - unsigned int _t636; - _t636 = String_Len(message); - _t637 = (int)_t636; - ml = _t637; + unsigned int _t627; + _t627 = String_Len(message); + _t628 = (int)_t627; + ml = _t628; void* buf; - void* _t638; - _t638 = Alloc(32); - buf = _t638; + void* _t629; + _t629 = Alloc(32); + buf = _t629; bux_hmac_sha256(key, kl, message, ml, buf); const char* result; - _t639 = (const char*)buf; - const char* _t640; - _t640 = bux_base64_encode(_t639, 32); - result = _t640; + _t630 = (const char*)buf; + const char* _t631; + _t631 = bux_base64_encode(_t630, 32); + result = _t631; Free(buf); return result; } const char* Hmac_Sha384(const char* key, const char* message) { - int _t642; - int _t644; + int _t633; + int _t635; int kl; - unsigned int _t641; - _t641 = String_Len(key); - _t642 = (int)_t641; - kl = _t642; + unsigned int _t632; + _t632 = String_Len(key); + _t633 = (int)_t632; + kl = _t633; int ml; - unsigned int _t643; - _t643 = String_Len(message); - _t644 = (int)_t643; - ml = _t644; + unsigned int _t634; + _t634 = String_Len(message); + _t635 = (int)_t634; + ml = _t635; void* buf; - void* _t645; - _t645 = Alloc(48); - buf = _t645; + void* _t636; + _t636 = Alloc(48); + buf = _t636; bux_hmac_sha384(key, kl, message, ml, buf); const char* result; - const char* _t646; - _t646 = bux_bytes_to_hex(buf, 48); - result = _t646; + const char* _t637; + _t637 = bux_bytes_to_hex(buf, 48); + result = _t637; Free(buf); return result; } void Hmac_Sha384Raw(const char* key, const char* message, void* out) { - int _t648; - int _t650; - unsigned int _t647; - _t647 = String_Len(key); - _t648 = (int)_t647; - unsigned int _t649; - _t649 = String_Len(message); - _t650 = (int)_t649; - bux_hmac_sha384(key, _t648, message, _t650, out); + int _t639; + int _t641; + unsigned int _t638; + _t638 = String_Len(key); + _t639 = (int)_t638; + unsigned int _t640; + _t640 = String_Len(message); + _t641 = (int)_t640; + bux_hmac_sha384(key, _t639, message, _t641, out); } const char* Hmac_Sha384Base64(const char* key, const char* message) { - int _t652; - int _t654; - const char* _t656; + int _t643; + int _t645; + const char* _t647; int kl; - unsigned int _t651; - _t651 = String_Len(key); - _t652 = (int)_t651; - kl = _t652; + unsigned int _t642; + _t642 = String_Len(key); + _t643 = (int)_t642; + kl = _t643; int ml; - unsigned int _t653; - _t653 = String_Len(message); - _t654 = (int)_t653; - ml = _t654; + unsigned int _t644; + _t644 = String_Len(message); + _t645 = (int)_t644; + ml = _t645; void* buf; - void* _t655; - _t655 = Alloc(48); - buf = _t655; + void* _t646; + _t646 = Alloc(48); + buf = _t646; bux_hmac_sha384(key, kl, message, ml, buf); const char* result; - _t656 = (const char*)buf; - const char* _t657; - _t657 = bux_base64_encode(_t656, 48); - result = _t657; + _t647 = (const char*)buf; + const char* _t648; + _t648 = bux_base64_encode(_t647, 48); + result = _t648; Free(buf); return result; } const char* Hmac_Sha512(const char* key, const char* message) { - int _t659; - int _t661; + int _t650; + int _t652; int kl; - unsigned int _t658; - _t658 = String_Len(key); - _t659 = (int)_t658; - kl = _t659; + unsigned int _t649; + _t649 = String_Len(key); + _t650 = (int)_t649; + kl = _t650; int ml; - unsigned int _t660; - _t660 = String_Len(message); - _t661 = (int)_t660; - ml = _t661; + unsigned int _t651; + _t651 = String_Len(message); + _t652 = (int)_t651; + ml = _t652; void* buf; - void* _t662; - _t662 = Alloc(64); - buf = _t662; + void* _t653; + _t653 = Alloc(64); + buf = _t653; bux_hmac_sha512(key, kl, message, ml, buf); const char* result; - const char* _t663; - _t663 = bux_bytes_to_hex(buf, 64); - result = _t663; + const char* _t654; + _t654 = bux_bytes_to_hex(buf, 64); + result = _t654; Free(buf); return result; } void Hmac_Sha512Raw(const char* key, const char* message, void* out) { - int _t665; - int _t667; - unsigned int _t664; - _t664 = String_Len(key); - _t665 = (int)_t664; - unsigned int _t666; - _t666 = String_Len(message); - _t667 = (int)_t666; - bux_hmac_sha512(key, _t665, message, _t667, out); + int _t656; + int _t658; + unsigned int _t655; + _t655 = String_Len(key); + _t656 = (int)_t655; + unsigned int _t657; + _t657 = String_Len(message); + _t658 = (int)_t657; + bux_hmac_sha512(key, _t656, message, _t658, out); } const char* Hmac_Sha512Base64(const char* key, const char* message) { - int _t669; - int _t671; - const char* _t673; + int _t660; + int _t662; + const char* _t664; int kl; - unsigned int _t668; - _t668 = String_Len(key); - _t669 = (int)_t668; - kl = _t669; + unsigned int _t659; + _t659 = String_Len(key); + _t660 = (int)_t659; + kl = _t660; int ml; - unsigned int _t670; - _t670 = String_Len(message); - _t671 = (int)_t670; - ml = _t671; + unsigned int _t661; + _t661 = String_Len(message); + _t662 = (int)_t661; + ml = _t662; void* buf; - void* _t672; - _t672 = Alloc(64); - buf = _t672; + void* _t663; + _t663 = Alloc(64); + buf = _t663; bux_hmac_sha512(key, kl, message, ml, buf); const char* result; - _t673 = (const char*)buf; - const char* _t674; - _t674 = bux_base64_encode(_t673, 64); - result = _t674; + _t664 = (const char*)buf; + const char* _t665; + _t665 = bux_base64_encode(_t664, 64); + result = _t665; Free(buf); return result; } const char* Random_Bytes(int n) { - int _t675; - unsigned int _t676; - int _t679; - const char* _t680; - _t675 = (n <= 0); - if (!_t675) goto endif237; + int _t666; + unsigned int _t667; + int _t670; + const char* _t671; + _t666 = (n <= 0); + if (!_t666) goto endif224; { return ""; } - endif237:; + endif224:; void* buf; - _t676 = (unsigned int)n; - void* _t677; - _t677 = Alloc(_t676); - buf = _t677; - int _t678; - _t678 = bux_random_bytes(buf, n); - _t679 = (_t678 != 1); - if (!_t679) goto endif239; + _t667 = (unsigned int)n; + void* _t668; + _t668 = Alloc(_t667); + buf = _t668; + int _t669; + _t669 = bux_random_bytes(buf, n); + _t670 = (_t669 != 1); + if (!_t670) goto endif226; { Free(buf); return ""; } - endif239:; - _t680 = (const char*)buf; - return _t680; + endif226:; + _t671 = (const char*)buf; + return _t671; } const char* Random_Hex(int n) { - int _t681; - unsigned int _t682; - int _t685; - _t681 = (n <= 0); - if (!_t681) goto endif241; + int _t672; + unsigned int _t673; + int _t676; + _t672 = (n <= 0); + if (!_t672) goto endif228; { return ""; } - endif241:; + endif228:; void* buf; - _t682 = (unsigned int)n; - void* _t683; - _t683 = Alloc(_t682); - buf = _t683; - int _t684; - _t684 = bux_random_bytes(buf, n); - _t685 = (_t684 != 1); - if (!_t685) goto endif243; + _t673 = (unsigned int)n; + void* _t674; + _t674 = Alloc(_t673); + buf = _t674; + int _t675; + _t675 = bux_random_bytes(buf, n); + _t676 = (_t675 != 1); + if (!_t676) goto endif230; { Free(buf); return ""; } - endif243:; + endif230:; const char* result; - const char* _t686; - _t686 = bux_bytes_to_hex(buf, n); - result = _t686; + const char* _t677; + _t677 = bux_bytes_to_hex(buf, n); + result = _t677; Free(buf); return result; } const char* Random_Base64(int n) { - int _t687; - unsigned int _t688; - int _t691; - const char* _t692; - _t687 = (n <= 0); - if (!_t687) goto endif245; + int _t678; + unsigned int _t679; + int _t682; + const char* _t683; + _t678 = (n <= 0); + if (!_t678) goto endif232; { return ""; } - endif245:; + endif232:; void* buf; - _t688 = (unsigned int)n; - void* _t689; - _t689 = Alloc(_t688); - buf = _t689; - int _t690; - _t690 = bux_random_bytes(buf, n); - _t691 = (_t690 != 1); - if (!_t691) goto endif247; + _t679 = (unsigned int)n; + void* _t680; + _t680 = Alloc(_t679); + buf = _t680; + int _t681; + _t681 = bux_random_bytes(buf, n); + _t682 = (_t681 != 1); + if (!_t682) goto endif234; { Free(buf); return ""; } - endif247:; + endif234:; const char* result; - _t692 = (const char*)buf; - const char* _t693; - _t693 = bux_base64_encode(_t692, n); - result = _t693; + _t683 = (const char*)buf; + const char* _t684; + _t684 = bux_base64_encode(_t683, n); + result = _t684; Free(buf); return result; } unsigned int Random_Uint32(void) { - int _t696; - unsigned int* _t697; - unsigned int _t698; + int _t687; + unsigned int* _t688; + unsigned int _t689; void* buf; - void* _t694; - _t694 = Alloc(4); - buf = _t694; - int _t695; - _t695 = bux_random_bytes(buf, 4); - _t696 = (_t695 != 1); - if (!_t696) goto endif249; + void* _t685; + _t685 = Alloc(4); + buf = _t685; + int _t686; + _t686 = bux_random_bytes(buf, 4); + _t687 = (_t686 != 1); + if (!_t687) goto endif236; { Free(buf); return 0; } - endif249:; + endif236:; unsigned int* ptr; - _t697 = (unsigned int*)buf; - ptr = _t697; + _t688 = (unsigned int*)buf; + ptr = _t688; unsigned int val; - _t698 = *ptr; - val = _t698; + _t689 = *ptr; + val = _t689; Free(buf); return val; } const char* Aes_GenerateKey(void) { - unsigned int _t699; - int _t702; - const char* _t703; + unsigned int _t690; + int _t693; + const char* _t694; void* buf; - _t699 = (unsigned int)AES_KEY_SIZE; - void* _t700; - _t700 = Alloc(_t699); - buf = _t700; - int _t701; - _t701 = bux_random_bytes(buf, AES_KEY_SIZE); - _t702 = (_t701 != 1); - if (!_t702) goto endif251; + _t690 = (unsigned int)AES_KEY_SIZE; + void* _t691; + _t691 = Alloc(_t690); + buf = _t691; + int _t692; + _t692 = bux_random_bytes(buf, AES_KEY_SIZE); + _t693 = (_t692 != 1); + if (!_t693) goto endif238; { Free(buf); return ""; } - endif251:; - _t703 = (const char*)buf; - return _t703; + endif238:; + _t694 = (const char*)buf; + return _t694; } const char* Aes_GenerateIV(void) { - unsigned int _t704; - int _t707; - const char* _t708; + unsigned int _t695; + int _t698; + const char* _t699; void* buf; - _t704 = (unsigned int)AES_IV_SIZE; - void* _t705; - _t705 = Alloc(_t704); - buf = _t705; - int _t706; - _t706 = bux_random_bytes(buf, AES_IV_SIZE); - _t707 = (_t706 != 1); - if (!_t707) goto endif253; + _t695 = (unsigned int)AES_IV_SIZE; + void* _t696; + _t696 = Alloc(_t695); + buf = _t696; + int _t697; + _t697 = bux_random_bytes(buf, AES_IV_SIZE); + _t698 = (_t697 != 1); + if (!_t698) goto endif240; { Free(buf); return ""; } - endif253:; - _t708 = (const char*)buf; - return _t708; + endif240:; + _t699 = (const char*)buf; + return _t699; } const char* Aes_CbcEncrypt(const char* plain, const char* key, const char* iv) { - int _t710; - void* _t711; + int _t701; + void* _t702; int outlen; outlen = 0; - unsigned int _t709; - _t709 = String_Len(plain); - _t710 = (int)_t709; - _t711 = &outlen; - const char* _t712; - _t712 = bux_aes_256_cbc_encrypt(plain, _t710, key, iv, _t711); - return _t712; + unsigned int _t700; + _t700 = String_Len(plain); + _t701 = (int)_t700; + _t702 = &outlen; + const char* _t703; + _t703 = bux_aes_256_cbc_encrypt(plain, _t701, key, iv, _t702); + return _t703; } const char* Aes_CbcDecrypt(const char* cipher, const char* key, const char* iv) { - int _t714; - void* _t715; + int _t705; + void* _t706; int outlen; outlen = 0; - unsigned int _t713; - _t713 = String_Len(cipher); - _t714 = (int)_t713; - _t715 = &outlen; - const char* _t716; - _t716 = bux_aes_256_cbc_decrypt(cipher, _t714, key, iv, _t715); - return _t716; + unsigned int _t704; + _t704 = String_Len(cipher); + _t705 = (int)_t704; + _t706 = &outlen; + const char* _t707; + _t707 = bux_aes_256_cbc_decrypt(cipher, _t705, key, iv, _t706); + return _t707; } const char* Aes_GcmEncrypt(const char* plain, const char* key, const char* iv, void* tag) { - int _t718; - void* _t719; + int _t709; + void* _t710; int outlen; outlen = 0; - unsigned int _t717; - _t717 = String_Len(plain); - _t718 = (int)_t717; - _t719 = &outlen; - const char* _t720; - _t720 = bux_aes_256_gcm_encrypt(plain, _t718, key, iv, tag, _t719); - return _t720; + unsigned int _t708; + _t708 = String_Len(plain); + _t709 = (int)_t708; + _t710 = &outlen; + const char* _t711; + _t711 = bux_aes_256_gcm_encrypt(plain, _t709, key, iv, tag, _t710); + return _t711; } const char* Aes_GcmDecrypt(const char* cipher, const char* key, const char* iv, const char* tag) { - int _t722; - void* _t723; + int _t713; + void* _t714; int outlen; outlen = 0; - unsigned int _t721; - _t721 = String_Len(cipher); - _t722 = (int)_t721; - _t723 = &outlen; - const char* _t724; - _t724 = bux_aes_256_gcm_decrypt(cipher, _t722, key, iv, tag, _t723); - return _t724; + unsigned int _t712; + _t712 = String_Len(cipher); + _t713 = (int)_t712; + _t714 = &outlen; + const char* _t715; + _t715 = bux_aes_256_gcm_decrypt(cipher, _t713, key, iv, tag, _t714); + return _t715; } const char* Jwt_MakeHeader(JwtAlg alg) { - int _t725; - int _t726; - int _t727; - int _t728; - int _t729; - int _t730; - int _t731; - int _t732; - int _t733; - _t725 = (alg == JwtAlg_HS256); - if (!_t725) goto endif255; + int _t716; + int _t717; + int _t718; + int _t719; + int _t720; + int _t721; + int _t722; + int _t723; + int _t724; + _t716 = (alg == JwtAlg_HS256); + if (!_t716) goto endif242; { return "{\"alg\":\"HS256\",\"typ\":\"JWT\"}"; } - endif255:; - _t726 = (alg == JwtAlg_HS384); - if (!_t726) goto endif257; + endif242:; + _t717 = (alg == JwtAlg_HS384); + if (!_t717) goto endif244; { return "{\"alg\":\"HS384\",\"typ\":\"JWT\"}"; } - endif257:; - _t727 = (alg == JwtAlg_HS512); - if (!_t727) goto endif259; + endif244:; + _t718 = (alg == JwtAlg_HS512); + if (!_t718) goto endif246; { return "{\"alg\":\"HS512\",\"typ\":\"JWT\"}"; } - endif259:; - _t728 = (alg == JwtAlg_RS256); - if (!_t728) goto endif261; + endif246:; + _t719 = (alg == JwtAlg_RS256); + if (!_t719) goto endif248; { return "{\"alg\":\"RS256\",\"typ\":\"JWT\"}"; } - endif261:; - _t729 = (alg == JwtAlg_RS384); - if (!_t729) goto endif263; + endif248:; + _t720 = (alg == JwtAlg_RS384); + if (!_t720) goto endif250; { return "{\"alg\":\"RS384\",\"typ\":\"JWT\"}"; } - endif263:; - _t730 = (alg == JwtAlg_RS512); - if (!_t730) goto endif265; + endif250:; + _t721 = (alg == JwtAlg_RS512); + if (!_t721) goto endif252; { return "{\"alg\":\"RS512\",\"typ\":\"JWT\"}"; } - endif265:; - _t731 = (alg == JwtAlg_ES256); - if (!_t731) goto endif267; + endif252:; + _t722 = (alg == JwtAlg_ES256); + if (!_t722) goto endif254; { return "{\"alg\":\"ES256\",\"typ\":\"JWT\"}"; } - endif267:; - _t732 = (alg == JwtAlg_ES384); - if (!_t732) goto endif269; + endif254:; + _t723 = (alg == JwtAlg_ES384); + if (!_t723) goto endif256; { return "{\"alg\":\"ES384\",\"typ\":\"JWT\"}"; } - endif269:; - _t733 = (alg == JwtAlg_EdDSA); - if (!_t733) goto endif271; + endif256:; + _t724 = (alg == JwtAlg_EdDSA); + if (!_t724) goto endif258; { return "{\"alg\":\"EdDSA\",\"typ\":\"JWT\"}"; } - endif271:; + endif258:; return "{\"alg\":\"none\",\"typ\":\"JWT\"}"; } const char* Jwt_Sign(JwtAlg alg, const char* signingInput, const char* key) { - int _t734; - const char* _t736; - int _t738; - const char* _t740; + int _t725; + const char* _t727; + int _t729; + const char* _t731; + int _t733; + const char* _t735; + int _t737; + int _t740; int _t742; - const char* _t744; - int _t746; - int _t749; - int _t751; - int _t754; - int _t756; - int _t759; - int _t761; - int _t764; - int _t766; - int _t769; - int _t771; - _t734 = (alg == JwtAlg_HS256); - if (!_t734) goto endif273; + int _t745; + int _t747; + int _t750; + int _t752; + int _t755; + int _t757; + int _t760; + int _t762; + _t725 = (alg == JwtAlg_HS256); + if (!_t725) goto endif260; { void* buf; - void* _t735; - _t735 = Alloc(32); - buf = _t735; + void* _t726; + _t726 = Alloc(32); + buf = _t726; Hmac_Sha256Raw(key, signingInput, buf); const char* result; - _t736 = (const char*)buf; - const char* _t737; - _t737 = bux_base64_encode(_t736, 32); - result = _t737; + _t727 = (const char*)buf; + const char* _t728; + _t728 = bux_base64_encode(_t727, 32); + result = _t728; Free(buf); return result; } - endif273:; - _t738 = (alg == JwtAlg_HS384); - if (!_t738) goto endif275; + endif260:; + _t729 = (alg == JwtAlg_HS384); + if (!_t729) goto endif262; { void* buf; - void* _t739; - _t739 = Alloc(48); - buf = _t739; + void* _t730; + _t730 = Alloc(48); + buf = _t730; Hmac_Sha384Raw(key, signingInput, buf); const char* result; - _t740 = (const char*)buf; - const char* _t741; - _t741 = bux_base64_encode(_t740, 48); - result = _t741; + _t731 = (const char*)buf; + const char* _t732; + _t732 = bux_base64_encode(_t731, 48); + result = _t732; Free(buf); return result; } - endif275:; - _t742 = (alg == JwtAlg_HS512); - if (!_t742) goto endif277; + endif262:; + _t733 = (alg == JwtAlg_HS512); + if (!_t733) goto endif264; { void* buf; - void* _t743; - _t743 = Alloc(64); - buf = _t743; + void* _t734; + _t734 = Alloc(64); + buf = _t734; Hmac_Sha512Raw(key, signingInput, buf); const char* result; - _t744 = (const char*)buf; - const char* _t745; - _t745 = bux_base64_encode(_t744, 64); - result = _t745; + _t735 = (const char*)buf; + const char* _t736; + _t736 = bux_base64_encode(_t735, 64); + result = _t736; Free(buf); return result; } - endif277:; - _t746 = (alg == JwtAlg_RS256); - if (!_t746) goto endif279; + endif264:; + _t737 = (alg == JwtAlg_RS256); + if (!_t737) goto endif266; { const char* raw; - const char* _t747; - _t747 = Rsa_SignSha256(key, signingInput); - raw = _t747; - unsigned int _t748; - _t748 = String_Len(raw); - _t749 = (int)_t748; - const char* _t750; - _t750 = bux_base64_encode(raw, _t749); - return _t750; + const char* _t738; + _t738 = Rsa_SignSha256(key, signingInput); + raw = _t738; + unsigned int _t739; + _t739 = String_Len(raw); + _t740 = (int)_t739; + const char* _t741; + _t741 = bux_base64_encode(raw, _t740); + return _t741; } - endif279:; - _t751 = (alg == JwtAlg_RS384); - if (!_t751) goto endif281; + endif266:; + _t742 = (alg == JwtAlg_RS384); + if (!_t742) goto endif268; { const char* raw; - const char* _t752; - _t752 = Rsa_SignSha384(key, signingInput); - raw = _t752; - unsigned int _t753; - _t753 = String_Len(raw); - _t754 = (int)_t753; - const char* _t755; - _t755 = bux_base64_encode(raw, _t754); - return _t755; + const char* _t743; + _t743 = Rsa_SignSha384(key, signingInput); + raw = _t743; + unsigned int _t744; + _t744 = String_Len(raw); + _t745 = (int)_t744; + const char* _t746; + _t746 = bux_base64_encode(raw, _t745); + return _t746; } - endif281:; - _t756 = (alg == JwtAlg_RS512); - if (!_t756) goto endif283; + endif268:; + _t747 = (alg == JwtAlg_RS512); + if (!_t747) goto endif270; { const char* raw; - const char* _t757; - _t757 = Rsa_SignSha512(key, signingInput); - raw = _t757; - unsigned int _t758; - _t758 = String_Len(raw); - _t759 = (int)_t758; - const char* _t760; - _t760 = bux_base64_encode(raw, _t759); - return _t760; + const char* _t748; + _t748 = Rsa_SignSha512(key, signingInput); + raw = _t748; + unsigned int _t749; + _t749 = String_Len(raw); + _t750 = (int)_t749; + const char* _t751; + _t751 = bux_base64_encode(raw, _t750); + return _t751; } - endif283:; - _t761 = (alg == JwtAlg_ES256); - if (!_t761) goto endif285; + endif270:; + _t752 = (alg == JwtAlg_ES256); + if (!_t752) goto endif272; { const char* raw; - const char* _t762; - _t762 = Ecdsa_SignP256(key, signingInput); - raw = _t762; - unsigned int _t763; - _t763 = String_Len(raw); - _t764 = (int)_t763; - const char* _t765; - _t765 = bux_base64_encode(raw, _t764); - return _t765; + const char* _t753; + _t753 = Ecdsa_SignP256(key, signingInput); + raw = _t753; + unsigned int _t754; + _t754 = String_Len(raw); + _t755 = (int)_t754; + const char* _t756; + _t756 = bux_base64_encode(raw, _t755); + return _t756; } - endif285:; - _t766 = (alg == JwtAlg_ES384); - if (!_t766) goto endif287; + endif272:; + _t757 = (alg == JwtAlg_ES384); + if (!_t757) goto endif274; { const char* raw; - const char* _t767; - _t767 = Ecdsa_SignP384(key, signingInput); - raw = _t767; - unsigned int _t768; - _t768 = String_Len(raw); - _t769 = (int)_t768; - const char* _t770; - _t770 = bux_base64_encode(raw, _t769); - return _t770; + const char* _t758; + _t758 = Ecdsa_SignP384(key, signingInput); + raw = _t758; + unsigned int _t759; + _t759 = String_Len(raw); + _t760 = (int)_t759; + const char* _t761; + _t761 = bux_base64_encode(raw, _t760); + return _t761; } - endif287:; - _t771 = (alg == JwtAlg_EdDSA); - if (!_t771) goto endif289; + endif274:; + _t762 = (alg == JwtAlg_EdDSA); + if (!_t762) goto endif276; { - const char* _t772; - _t772 = Ed25519_Sign(key, signingInput); - return _t772; + const char* _t763; + _t763 = Ed25519_Sign(key, signingInput); + return _t763; } - endif289:; + endif276:; return ""; } bool Jwt_Verify(JwtAlg alg, const char* signingInput, const char* signatureB64, const char* key) { - int _t773; - const char* _t775; - int _t778; - const char* _t780; + int _t764; + const char* _t766; + int _t769; + const char* _t771; + int _t774; + const char* _t776; + int _t779; + int _t781; int _t783; - const char* _t785; - int _t788; - int _t790; - int _t792; - int _t794; - int _t796; - int _t798; - _t773 = (alg == JwtAlg_HS256); - if (!_t773) goto endif291; + int _t785; + int _t787; + int _t789; + _t764 = (alg == JwtAlg_HS256); + if (!_t764) goto endif278; { void* expectBuf; - void* _t774; - _t774 = Alloc(32); - expectBuf = _t774; + void* _t765; + _t765 = Alloc(32); + expectBuf = _t765; Hmac_Sha256Raw(key, signingInput, expectBuf); const char* expectB64; - _t775 = (const char*)expectBuf; - const char* _t776; - _t776 = bux_base64_encode(_t775, 32); - expectB64 = _t776; + _t766 = (const char*)expectBuf; + const char* _t767; + _t767 = bux_base64_encode(_t766, 32); + expectB64 = _t767; Free(expectBuf); - bool _t777; - _t777 = String_Eq(expectB64, signatureB64); - return _t777; + bool _t768; + _t768 = String_Eq(expectB64, signatureB64); + return _t768; } - endif291:; - _t778 = (alg == JwtAlg_HS384); - if (!_t778) goto endif293; + endif278:; + _t769 = (alg == JwtAlg_HS384); + if (!_t769) goto endif280; { void* expectBuf; - void* _t779; - _t779 = Alloc(48); - expectBuf = _t779; + void* _t770; + _t770 = Alloc(48); + expectBuf = _t770; Hmac_Sha384Raw(key, signingInput, expectBuf); const char* expectB64; - _t780 = (const char*)expectBuf; - const char* _t781; - _t781 = bux_base64_encode(_t780, 48); - expectB64 = _t781; + _t771 = (const char*)expectBuf; + const char* _t772; + _t772 = bux_base64_encode(_t771, 48); + expectB64 = _t772; Free(expectBuf); - bool _t782; - _t782 = String_Eq(expectB64, signatureB64); - return _t782; + bool _t773; + _t773 = String_Eq(expectB64, signatureB64); + return _t773; } - endif293:; - _t783 = (alg == JwtAlg_HS512); - if (!_t783) goto endif295; + endif280:; + _t774 = (alg == JwtAlg_HS512); + if (!_t774) goto endif282; { void* expectBuf; - void* _t784; - _t784 = Alloc(64); - expectBuf = _t784; + void* _t775; + _t775 = Alloc(64); + expectBuf = _t775; Hmac_Sha512Raw(key, signingInput, expectBuf); const char* expectB64; - _t785 = (const char*)expectBuf; - const char* _t786; - _t786 = bux_base64_encode(_t785, 64); - expectB64 = _t786; + _t776 = (const char*)expectBuf; + const char* _t777; + _t777 = bux_base64_encode(_t776, 64); + expectB64 = _t777; Free(expectBuf); - bool _t787; - _t787 = String_Eq(expectB64, signatureB64); - return _t787; + bool _t778; + _t778 = String_Eq(expectB64, signatureB64); + return _t778; } - endif295:; - _t788 = (alg == JwtAlg_RS256); - if (!_t788) goto endif297; + endif282:; + _t779 = (alg == JwtAlg_RS256); + if (!_t779) goto endif284; { - bool _t789; - _t789 = Rsa_VerifySha256(key, signingInput, signatureB64); - return _t789; + bool _t780; + _t780 = Rsa_VerifySha256(key, signingInput, signatureB64); + return _t780; } - endif297:; - _t790 = (alg == JwtAlg_RS384); - if (!_t790) goto endif299; + endif284:; + _t781 = (alg == JwtAlg_RS384); + if (!_t781) goto endif286; { - bool _t791; - _t791 = Rsa_VerifySha384(key, signingInput, signatureB64); - return _t791; + bool _t782; + _t782 = Rsa_VerifySha384(key, signingInput, signatureB64); + return _t782; } - endif299:; - _t792 = (alg == JwtAlg_RS512); - if (!_t792) goto endif301; + endif286:; + _t783 = (alg == JwtAlg_RS512); + if (!_t783) goto endif288; { - bool _t793; - _t793 = Rsa_VerifySha512(key, signingInput, signatureB64); - return _t793; + bool _t784; + _t784 = Rsa_VerifySha512(key, signingInput, signatureB64); + return _t784; } - endif301:; - _t794 = (alg == JwtAlg_ES256); - if (!_t794) goto endif303; + endif288:; + _t785 = (alg == JwtAlg_ES256); + if (!_t785) goto endif290; { - bool _t795; - _t795 = Ecdsa_VerifyP256(key, signingInput, signatureB64); - return _t795; + bool _t786; + _t786 = Ecdsa_VerifyP256(key, signingInput, signatureB64); + return _t786; } - endif303:; - _t796 = (alg == JwtAlg_ES384); - if (!_t796) goto endif305; + endif290:; + _t787 = (alg == JwtAlg_ES384); + if (!_t787) goto endif292; { - bool _t797; - _t797 = Ecdsa_VerifyP384(key, signingInput, signatureB64); - return _t797; + bool _t788; + _t788 = Ecdsa_VerifyP384(key, signingInput, signatureB64); + return _t788; } - endif305:; - _t798 = (alg == JwtAlg_EdDSA); - if (!_t798) goto endif307; + endif292:; + _t789 = (alg == JwtAlg_EdDSA); + if (!_t789) goto endif294; { - bool _t799; - _t799 = Ed25519_Verify(key, signatureB64, signingInput); - return _t799; + bool _t790; + _t790 = Ed25519_Verify(key, signatureB64, signingInput); + return _t790; } - endif307:; + endif294:; return 0; } const char* Jwt_Encode(const char* headerJson, const char* payloadJson, JwtAlg alg, const char* key) { const char* headerB64; - const char* _t800; - _t800 = Base64URL_Encode(headerJson); - headerB64 = _t800; + const char* _t791; + _t791 = Base64URL_Encode(headerJson); + headerB64 = _t791; const char* payloadB64; - const char* _t801; - _t801 = Base64URL_Encode(payloadJson); - payloadB64 = _t801; + const char* _t792; + _t792 = Base64URL_Encode(payloadJson); + payloadB64 = _t792; const char* signingInput; - const char* _t802; - _t802 = String_Concat(headerB64, "."); - signingInput = _t802; + const char* _t793; + _t793 = String_Concat(headerB64, "."); + signingInput = _t793; const char* signingInputFull; - const char* _t803; - _t803 = String_Concat(signingInput, payloadB64); - signingInputFull = _t803; + const char* _t794; + _t794 = String_Concat(signingInput, payloadB64); + signingInputFull = _t794; const char* sigB64; - const char* _t804; - _t804 = Jwt_Sign(alg, signingInputFull, key); - sigB64 = _t804; + const char* _t795; + _t795 = Jwt_Sign(alg, signingInputFull, key); + sigB64 = _t795; const char* part1; - const char* _t805; - _t805 = String_Concat(signingInputFull, "."); - part1 = _t805; - const char* _t806; - _t806 = String_Concat(part1, sigB64); - return _t806; + const char* _t796; + _t796 = String_Concat(signingInputFull, "."); + part1 = _t796; + const char* _t797; + _t797 = String_Concat(part1, sigB64); + return _t797; } bool Jwt_Decode(const char* token, JwtAlg alg, const char* key, const char** headerOut, const char** payloadOut) { - int _t808; - int _t815; + int _t799; + int _t806; unsigned int partCount; - unsigned int _t807; - _t807 = bux_str_split_count(token, "."); - partCount = _t807; - _t808 = (partCount != 3); - if (!_t808) goto endif309; + unsigned int _t798; + _t798 = bux_str_split_count(token, "."); + partCount = _t798; + _t799 = (partCount != 3); + if (!_t799) goto endif296; { return 0; } - endif309:; + endif296:; const char* headerB64; - const char* _t809; - _t809 = bux_str_split_part(token, ".", 0); - headerB64 = _t809; + const char* _t800; + _t800 = bux_str_split_part(token, ".", 0); + headerB64 = _t800; const char* payloadB64; - const char* _t810; - _t810 = bux_str_split_part(token, ".", 1); - payloadB64 = _t810; + const char* _t801; + _t801 = bux_str_split_part(token, ".", 1); + payloadB64 = _t801; const char* sigB64; - const char* _t811; - _t811 = bux_str_split_part(token, ".", 2); - sigB64 = _t811; + const char* _t802; + _t802 = bux_str_split_part(token, ".", 2); + sigB64 = _t802; const char* input; - const char* _t812; - _t812 = String_Concat(headerB64, "."); - input = _t812; + const char* _t803; + _t803 = String_Concat(headerB64, "."); + input = _t803; const char* signingInput; - const char* _t813; - _t813 = String_Concat(input, payloadB64); - signingInput = _t813; - bool _t814; - _t814 = Jwt_Verify(alg, signingInput, sigB64, key); - _t815 = !_t814; - if (!_t815) goto endif311; + const char* _t804; + _t804 = String_Concat(input, payloadB64); + signingInput = _t804; + bool _t805; + _t805 = Jwt_Verify(alg, signingInput, sigB64, key); + _t806 = !_t805; + if (!_t806) goto endif298; { return 0; } - endif311:; - const char* _t816; - _t816 = Base64URL_Decode(headerB64); - headerOut[0] = _t816; - const char* _t817; - _t817 = Base64URL_Decode(payloadB64); - payloadOut[0] = _t817; + endif298:; + const char* _t807; + _t807 = Base64URL_Decode(headerB64); + headerOut[0] = _t807; + const char* _t808; + _t808 = Base64URL_Decode(payloadB64); + payloadOut[0] = _t808; return 1; } const char* Jwt_EncodeHS256(const char* payloadJson, const char* secret) { const char* header; - const char* _t818; - _t818 = Jwt_MakeHeader(JwtAlg_HS256); - header = _t818; - const char* _t819; - _t819 = Jwt_Encode(header, payloadJson, JwtAlg_HS256, secret); - return _t819; + const char* _t809; + _t809 = Jwt_MakeHeader(JwtAlg_HS256); + header = _t809; + const char* _t810; + _t810 = Jwt_Encode(header, payloadJson, JwtAlg_HS256, secret); + return _t810; } const char* Jwt_EncodeHS384(const char* payloadJson, const char* secret) { const char* header; - const char* _t820; - _t820 = Jwt_MakeHeader(JwtAlg_HS384); - header = _t820; - const char* _t821; - _t821 = Jwt_Encode(header, payloadJson, JwtAlg_HS384, secret); - return _t821; + const char* _t811; + _t811 = Jwt_MakeHeader(JwtAlg_HS384); + header = _t811; + const char* _t812; + _t812 = Jwt_Encode(header, payloadJson, JwtAlg_HS384, secret); + return _t812; } const char* Jwt_EncodeHS512(const char* payloadJson, const char* secret) { const char* header; - const char* _t822; - _t822 = Jwt_MakeHeader(JwtAlg_HS512); - header = _t822; - const char* _t823; - _t823 = Jwt_Encode(header, payloadJson, JwtAlg_HS512, secret); - return _t823; + const char* _t813; + _t813 = Jwt_MakeHeader(JwtAlg_HS512); + header = _t813; + const char* _t814; + _t814 = Jwt_Encode(header, payloadJson, JwtAlg_HS512, secret); + return _t814; } const char* Jwt_EncodeRS256(const char* payloadJson, const char* pemPrivateKey) { const char* header; - const char* _t824; - _t824 = Jwt_MakeHeader(JwtAlg_RS256); - header = _t824; - const char* _t825; - _t825 = Jwt_Encode(header, payloadJson, JwtAlg_RS256, pemPrivateKey); - return _t825; + const char* _t815; + _t815 = Jwt_MakeHeader(JwtAlg_RS256); + header = _t815; + const char* _t816; + _t816 = Jwt_Encode(header, payloadJson, JwtAlg_RS256, pemPrivateKey); + return _t816; } const char* Jwt_EncodeES256(const char* payloadJson, const char* pemPrivateKey) { const char* header; - const char* _t826; - _t826 = Jwt_MakeHeader(JwtAlg_ES256); - header = _t826; - const char* _t827; - _t827 = Jwt_Encode(header, payloadJson, JwtAlg_ES256, pemPrivateKey); - return _t827; + const char* _t817; + _t817 = Jwt_MakeHeader(JwtAlg_ES256); + header = _t817; + const char* _t818; + _t818 = Jwt_Encode(header, payloadJson, JwtAlg_ES256, pemPrivateKey); + return _t818; } const char* Jwt_EncodeEdDSA(const char* payloadJson, const char* rawPrivKey) { const char* header; - const char* _t828; - _t828 = Jwt_MakeHeader(JwtAlg_EdDSA); - header = _t828; - const char* _t829; - _t829 = Jwt_Encode(header, payloadJson, JwtAlg_EdDSA, rawPrivKey); - return _t829; + const char* _t819; + _t819 = Jwt_MakeHeader(JwtAlg_EdDSA); + header = _t819; + const char* _t820; + _t820 = Jwt_Encode(header, payloadJson, JwtAlg_EdDSA, rawPrivKey); + return _t820; } const char* Ecdsa_SignP256(const char* pemPrivateKey, const char* data) { - int _t831; - int _t833; - void* _t834; + int _t822; + int _t824; + void* _t825; int siglen; siglen = 0; - unsigned int _t830; - _t830 = String_Len(pemPrivateKey); - _t831 = (int)_t830; - unsigned int _t832; - _t832 = String_Len(data); - _t833 = (int)_t832; - _t834 = &siglen; - const char* _t835; - _t835 = bux_ecdsa_sign_p256(pemPrivateKey, _t831, data, _t833, _t834); - return _t835; + unsigned int _t821; + _t821 = String_Len(pemPrivateKey); + _t822 = (int)_t821; + unsigned int _t823; + _t823 = String_Len(data); + _t824 = (int)_t823; + _t825 = &siglen; + const char* _t826; + _t826 = bux_ecdsa_sign_p256(pemPrivateKey, _t822, data, _t824, _t825); + return _t826; } const char* Ecdsa_SignP256Base64(const char* pemPrivateKey, const char* data) { - int _t838; + int _t829; const char* raw; - const char* _t836; - _t836 = Ecdsa_SignP256(pemPrivateKey, data); - raw = _t836; - unsigned int _t837; - _t837 = String_Len(raw); - _t838 = (int)_t837; - const char* _t839; - _t839 = bux_base64_encode(raw, _t838); - return _t839; + const char* _t827; + _t827 = Ecdsa_SignP256(pemPrivateKey, data); + raw = _t827; + unsigned int _t828; + _t828 = String_Len(raw); + _t829 = (int)_t828; + const char* _t830; + _t830 = bux_base64_encode(raw, _t829); + return _t830; } bool Ecdsa_VerifyP256(const char* pemPublicKey, const char* data, const char* signature) { - int _t841; - int _t843; - int _t845; - int _t847; + int _t832; + int _t834; + int _t836; + int _t838; int r; - unsigned int _t840; - _t840 = String_Len(pemPublicKey); - _t841 = (int)_t840; - unsigned int _t842; - _t842 = String_Len(data); - _t843 = (int)_t842; - unsigned int _t844; - _t844 = String_Len(signature); - _t845 = (int)_t844; - int _t846; - _t846 = bux_ecdsa_verify_p256(pemPublicKey, _t841, data, _t843, signature, _t845); - r = _t846; - _t847 = (r == 1); - return _t847; + unsigned int _t831; + _t831 = String_Len(pemPublicKey); + _t832 = (int)_t831; + unsigned int _t833; + _t833 = String_Len(data); + _t834 = (int)_t833; + unsigned int _t835; + _t835 = String_Len(signature); + _t836 = (int)_t835; + int _t837; + _t837 = bux_ecdsa_verify_p256(pemPublicKey, _t832, data, _t834, signature, _t836); + r = _t837; + _t838 = (r == 1); + return _t838; } bool Ecdsa_VerifyP256Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t849; - void* _t850; + int _t840; + void* _t841; int outlen; outlen = 0; const char* sig; - unsigned int _t848; - _t848 = String_Len(signatureB64); - _t849 = (int)_t848; - _t850 = &outlen; - const char* _t851; - _t851 = bux_base64_decode(signatureB64, _t849, _t850); - sig = _t851; - bool _t852; - _t852 = Ecdsa_VerifyP256(pemPublicKey, data, sig); - return _t852; + unsigned int _t839; + _t839 = String_Len(signatureB64); + _t840 = (int)_t839; + _t841 = &outlen; + const char* _t842; + _t842 = bux_base64_decode(signatureB64, _t840, _t841); + sig = _t842; + bool _t843; + _t843 = Ecdsa_VerifyP256(pemPublicKey, data, sig); + return _t843; } const char* Ecdsa_SignP384(const char* pemPrivateKey, const char* data) { - int _t854; - int _t856; - void* _t857; + int _t845; + int _t847; + void* _t848; int siglen; siglen = 0; - unsigned int _t853; - _t853 = String_Len(pemPrivateKey); - _t854 = (int)_t853; - unsigned int _t855; - _t855 = String_Len(data); - _t856 = (int)_t855; - _t857 = &siglen; - const char* _t858; - _t858 = bux_ecdsa_sign_p384(pemPrivateKey, _t854, data, _t856, _t857); - return _t858; + unsigned int _t844; + _t844 = String_Len(pemPrivateKey); + _t845 = (int)_t844; + unsigned int _t846; + _t846 = String_Len(data); + _t847 = (int)_t846; + _t848 = &siglen; + const char* _t849; + _t849 = bux_ecdsa_sign_p384(pemPrivateKey, _t845, data, _t847, _t848); + return _t849; } const char* Ecdsa_SignP384Base64(const char* pemPrivateKey, const char* data) { - int _t861; + int _t852; const char* raw; - const char* _t859; - _t859 = Ecdsa_SignP384(pemPrivateKey, data); - raw = _t859; - unsigned int _t860; - _t860 = String_Len(raw); - _t861 = (int)_t860; - const char* _t862; - _t862 = bux_base64_encode(raw, _t861); - return _t862; + const char* _t850; + _t850 = Ecdsa_SignP384(pemPrivateKey, data); + raw = _t850; + unsigned int _t851; + _t851 = String_Len(raw); + _t852 = (int)_t851; + const char* _t853; + _t853 = bux_base64_encode(raw, _t852); + return _t853; } bool Ecdsa_VerifyP384(const char* pemPublicKey, const char* data, const char* signature) { - int _t864; - int _t866; - int _t868; - int _t870; + int _t855; + int _t857; + int _t859; + int _t861; int r; - unsigned int _t863; - _t863 = String_Len(pemPublicKey); - _t864 = (int)_t863; - unsigned int _t865; - _t865 = String_Len(data); - _t866 = (int)_t865; - unsigned int _t867; - _t867 = String_Len(signature); - _t868 = (int)_t867; - int _t869; - _t869 = bux_ecdsa_verify_p384(pemPublicKey, _t864, data, _t866, signature, _t868); - r = _t869; - _t870 = (r == 1); - return _t870; + unsigned int _t854; + _t854 = String_Len(pemPublicKey); + _t855 = (int)_t854; + unsigned int _t856; + _t856 = String_Len(data); + _t857 = (int)_t856; + unsigned int _t858; + _t858 = String_Len(signature); + _t859 = (int)_t858; + int _t860; + _t860 = bux_ecdsa_verify_p384(pemPublicKey, _t855, data, _t857, signature, _t859); + r = _t860; + _t861 = (r == 1); + return _t861; } bool Ecdsa_VerifyP384Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t872; - void* _t873; + int _t863; + void* _t864; int outlen; outlen = 0; const char* sig; - unsigned int _t871; - _t871 = String_Len(signatureB64); - _t872 = (int)_t871; - _t873 = &outlen; - const char* _t874; - _t874 = bux_base64_decode(signatureB64, _t872, _t873); - sig = _t874; - bool _t875; - _t875 = Ecdsa_VerifyP384(pemPublicKey, data, sig); - return _t875; + unsigned int _t862; + _t862 = String_Len(signatureB64); + _t863 = (int)_t862; + _t864 = &outlen; + const char* _t865; + _t865 = bux_base64_decode(signatureB64, _t863, _t864); + sig = _t865; + bool _t866; + _t866 = Ecdsa_VerifyP384(pemPublicKey, data, sig); + return _t866; } bool Ed25519_Keypair(void* pubKey, void* privKey) { - int _t877; + int _t868; int r; - int _t876; - _t876 = bux_ed25519_keypair(pubKey, privKey); - r = _t876; - _t877 = (r == 1); - return _t877; + int _t867; + _t867 = bux_ed25519_keypair(pubKey, privKey); + r = _t867; + _t868 = (r == 1); + return _t868; } const char* Ed25519_KeypairBase64(void) { - unsigned int _t878; - unsigned int _t880; - int _t883; - const char* _t884; - const char* _t886; + unsigned int _t869; + unsigned int _t871; + int _t874; + const char* _t875; + const char* _t877; void* pubBuf; - _t878 = (unsigned int)ED25519_PUBKEY_SIZE; - void* _t879; - _t879 = Alloc(_t878); - pubBuf = _t879; + _t869 = (unsigned int)ED25519_PUBKEY_SIZE; + void* _t870; + _t870 = Alloc(_t869); + pubBuf = _t870; void* priv; - _t880 = (unsigned int)ED25519_PRIVKEY_SIZE; - void* _t881; - _t881 = Alloc(_t880); - priv = _t881; - int _t882; - _t882 = bux_ed25519_keypair(pubBuf, priv); - _t883 = (_t882 != 1); - if (!_t883) goto endif313; + _t871 = (unsigned int)ED25519_PRIVKEY_SIZE; + void* _t872; + _t872 = Alloc(_t871); + priv = _t872; + int _t873; + _t873 = bux_ed25519_keypair(pubBuf, priv); + _t874 = (_t873 != 1); + if (!_t874) goto endif300; { Free(pubBuf); Free(priv); return ""; } - endif313:; + endif300:; const char* pubB64; - _t884 = (const char*)pubBuf; - const char* _t885; - _t885 = bux_base64_encode(_t884, ED25519_PUBKEY_SIZE); - pubB64 = _t885; + _t875 = (const char*)pubBuf; + const char* _t876; + _t876 = bux_base64_encode(_t875, ED25519_PUBKEY_SIZE); + pubB64 = _t876; const char* privB64; - _t886 = (const char*)priv; - const char* _t887; - _t887 = bux_base64_encode(_t886, ED25519_PRIVKEY_SIZE); - privB64 = _t887; + _t877 = (const char*)priv; + const char* _t878; + _t878 = bux_base64_encode(_t877, ED25519_PRIVKEY_SIZE); + privB64 = _t878; Free(pubBuf); Free(priv); const char* pair; - const char* _t888; - _t888 = String_Concat(pubB64, ":"); - pair = _t888; - const char* _t889; - _t889 = String_Concat(pair, privB64); - return _t889; + const char* _t879; + _t879 = String_Concat(pubB64, ":"); + pair = _t879; + const char* _t880; + _t880 = String_Concat(pair, privB64); + return _t880; } const char* Ed25519_Sign(const char* privKey, const char* data) { - unsigned int _t890; - int _t893; - int _t895; - const char* _t896; + unsigned int _t881; + int _t884; + int _t886; + const char* _t887; void* sig; - _t890 = (unsigned int)ED25519_SIG_SIZE; - void* _t891; - _t891 = Alloc(_t890); - sig = _t891; - unsigned int _t892; - _t892 = String_Len(data); - _t893 = (int)_t892; - int _t894; - _t894 = bux_ed25519_sign(privKey, data, _t893, sig); - _t895 = (_t894 != 1); - if (!_t895) goto endif315; + _t881 = (unsigned int)ED25519_SIG_SIZE; + void* _t882; + _t882 = Alloc(_t881); + sig = _t882; + unsigned int _t883; + _t883 = String_Len(data); + _t884 = (int)_t883; + int _t885; + _t885 = bux_ed25519_sign(privKey, data, _t884, sig); + _t886 = (_t885 != 1); + if (!_t886) goto endif302; { Free(sig); return ""; } - endif315:; - _t896 = (const char*)sig; - return _t896; + endif302:; + _t887 = (const char*)sig; + return _t887; } const char* Ed25519_SignBase64(const char* privKey, const char* data) { - int _t899; + int _t890; const char* sig; - const char* _t897; - _t897 = Ed25519_Sign(privKey, data); - sig = _t897; - unsigned int _t898; - _t898 = String_Len(sig); - _t899 = (_t898 == 0); - if (!_t899) goto endif317; + const char* _t888; + _t888 = Ed25519_Sign(privKey, data); + sig = _t888; + unsigned int _t889; + _t889 = String_Len(sig); + _t890 = (_t889 == 0); + if (!_t890) goto endif304; { return ""; } - endif317:; - const char* _t900; - _t900 = bux_base64_encode(sig, ED25519_SIG_SIZE); - return _t900; + endif304:; + const char* _t891; + _t891 = bux_base64_encode(sig, ED25519_SIG_SIZE); + return _t891; } bool Ed25519_Verify(const char* pubKey, const char* signature, const char* data) { - int _t902; - int _t904; + int _t893; + int _t895; int r; - unsigned int _t901; - _t901 = String_Len(data); - _t902 = (int)_t901; - int _t903; - _t903 = bux_ed25519_verify(pubKey, signature, data, _t902); - r = _t903; - _t904 = (r == 1); - return _t904; + unsigned int _t892; + _t892 = String_Len(data); + _t893 = (int)_t892; + int _t894; + _t894 = bux_ed25519_verify(pubKey, signature, data, _t893); + r = _t894; + _t895 = (r == 1); + return _t895; } bool Ed25519_VerifyBase64(const char* pubKey, const char* signatureB64, const char* data) { - int _t906; - void* _t907; - int _t909; + int _t897; + void* _t898; + int _t900; int outlen; outlen = 0; const char* sig; - unsigned int _t905; - _t905 = String_Len(signatureB64); - _t906 = (int)_t905; - _t907 = &outlen; - const char* _t908; - _t908 = bux_base64_decode(signatureB64, _t906, _t907); - sig = _t908; - _t909 = (outlen != ED25519_SIG_SIZE); - if (!_t909) goto endif319; + unsigned int _t896; + _t896 = String_Len(signatureB64); + _t897 = (int)_t896; + _t898 = &outlen; + const char* _t899; + _t899 = bux_base64_decode(signatureB64, _t897, _t898); + sig = _t899; + _t900 = (outlen != ED25519_SIG_SIZE); + if (!_t900) goto endif306; { return 0; } - endif319:; - bool _t910; - _t910 = Ed25519_Verify(pubKey, sig, data); - return _t910; + endif306:; + bool _t901; + _t901 = Ed25519_Verify(pubKey, sig, data); + return _t901; } const char* Rsa_SignSha256(const char* pemPrivateKey, const char* data) { - int _t912; - int _t914; - void* _t915; + int _t903; + int _t905; + void* _t906; int siglen; siglen = 0; - unsigned int _t911; - _t911 = String_Len(pemPrivateKey); - _t912 = (int)_t911; - unsigned int _t913; - _t913 = String_Len(data); - _t914 = (int)_t913; - _t915 = &siglen; - const char* _t916; - _t916 = bux_rsa_sign_sha256(pemPrivateKey, _t912, data, _t914, _t915); - return _t916; + unsigned int _t902; + _t902 = String_Len(pemPrivateKey); + _t903 = (int)_t902; + unsigned int _t904; + _t904 = String_Len(data); + _t905 = (int)_t904; + _t906 = &siglen; + const char* _t907; + _t907 = bux_rsa_sign_sha256(pemPrivateKey, _t903, data, _t905, _t906); + return _t907; } const char* Rsa_SignSha384(const char* pemPrivateKey, const char* data) { - int _t918; - int _t920; - void* _t921; + int _t909; + int _t911; + void* _t912; int siglen; siglen = 0; - unsigned int _t917; - _t917 = String_Len(pemPrivateKey); - _t918 = (int)_t917; - unsigned int _t919; - _t919 = String_Len(data); - _t920 = (int)_t919; - _t921 = &siglen; - const char* _t922; - _t922 = bux_rsa_sign_sha384(pemPrivateKey, _t918, data, _t920, _t921); - return _t922; + unsigned int _t908; + _t908 = String_Len(pemPrivateKey); + _t909 = (int)_t908; + unsigned int _t910; + _t910 = String_Len(data); + _t911 = (int)_t910; + _t912 = &siglen; + const char* _t913; + _t913 = bux_rsa_sign_sha384(pemPrivateKey, _t909, data, _t911, _t912); + return _t913; } const char* Rsa_SignSha512(const char* pemPrivateKey, const char* data) { - int _t924; - int _t926; - void* _t927; + int _t915; + int _t917; + void* _t918; int siglen; siglen = 0; - unsigned int _t923; - _t923 = String_Len(pemPrivateKey); - _t924 = (int)_t923; - unsigned int _t925; - _t925 = String_Len(data); - _t926 = (int)_t925; - _t927 = &siglen; - const char* _t928; - _t928 = bux_rsa_sign_sha512(pemPrivateKey, _t924, data, _t926, _t927); - return _t928; + unsigned int _t914; + _t914 = String_Len(pemPrivateKey); + _t915 = (int)_t914; + unsigned int _t916; + _t916 = String_Len(data); + _t917 = (int)_t916; + _t918 = &siglen; + const char* _t919; + _t919 = bux_rsa_sign_sha512(pemPrivateKey, _t915, data, _t917, _t918); + return _t919; } const char* Rsa_SignSha256Base64(const char* pemPrivateKey, const char* data) { - int _t931; + int _t922; const char* raw; - const char* _t929; - _t929 = Rsa_SignSha256(pemPrivateKey, data); - raw = _t929; - unsigned int _t930; - _t930 = String_Len(raw); - _t931 = (int)_t930; - const char* _t932; - _t932 = bux_base64_encode(raw, _t931); - return _t932; + const char* _t920; + _t920 = Rsa_SignSha256(pemPrivateKey, data); + raw = _t920; + unsigned int _t921; + _t921 = String_Len(raw); + _t922 = (int)_t921; + const char* _t923; + _t923 = bux_base64_encode(raw, _t922); + return _t923; } const char* Rsa_SignSha384Base64(const char* pemPrivateKey, const char* data) { - int _t935; + int _t926; const char* raw; - const char* _t933; - _t933 = Rsa_SignSha384(pemPrivateKey, data); - raw = _t933; - unsigned int _t934; - _t934 = String_Len(raw); - _t935 = (int)_t934; - const char* _t936; - _t936 = bux_base64_encode(raw, _t935); - return _t936; + const char* _t924; + _t924 = Rsa_SignSha384(pemPrivateKey, data); + raw = _t924; + unsigned int _t925; + _t925 = String_Len(raw); + _t926 = (int)_t925; + const char* _t927; + _t927 = bux_base64_encode(raw, _t926); + return _t927; } const char* Rsa_SignSha512Base64(const char* pemPrivateKey, const char* data) { - int _t939; + int _t930; const char* raw; - const char* _t937; - _t937 = Rsa_SignSha512(pemPrivateKey, data); - raw = _t937; - unsigned int _t938; - _t938 = String_Len(raw); - _t939 = (int)_t938; - const char* _t940; - _t940 = bux_base64_encode(raw, _t939); - return _t940; + const char* _t928; + _t928 = Rsa_SignSha512(pemPrivateKey, data); + raw = _t928; + unsigned int _t929; + _t929 = String_Len(raw); + _t930 = (int)_t929; + const char* _t931; + _t931 = bux_base64_encode(raw, _t930); + return _t931; } bool Rsa_VerifySha256(const char* pemPublicKey, const char* data, const char* signature) { - int _t942; - int _t944; - int _t946; - int _t948; + int _t933; + int _t935; + int _t937; + int _t939; int r; - unsigned int _t941; - _t941 = String_Len(pemPublicKey); - _t942 = (int)_t941; - unsigned int _t943; - _t943 = String_Len(data); - _t944 = (int)_t943; - unsigned int _t945; - _t945 = String_Len(signature); - _t946 = (int)_t945; - int _t947; - _t947 = bux_rsa_verify_sha256(pemPublicKey, _t942, data, _t944, signature, _t946); - r = _t947; - _t948 = (r == 1); - return _t948; + unsigned int _t932; + _t932 = String_Len(pemPublicKey); + _t933 = (int)_t932; + unsigned int _t934; + _t934 = String_Len(data); + _t935 = (int)_t934; + unsigned int _t936; + _t936 = String_Len(signature); + _t937 = (int)_t936; + int _t938; + _t938 = bux_rsa_verify_sha256(pemPublicKey, _t933, data, _t935, signature, _t937); + r = _t938; + _t939 = (r == 1); + return _t939; } bool Rsa_VerifySha384(const char* pemPublicKey, const char* data, const char* signature) { - int _t950; - int _t952; - int _t954; - int _t956; + int _t941; + int _t943; + int _t945; + int _t947; int r; - unsigned int _t949; - _t949 = String_Len(pemPublicKey); - _t950 = (int)_t949; - unsigned int _t951; - _t951 = String_Len(data); - _t952 = (int)_t951; - unsigned int _t953; - _t953 = String_Len(signature); - _t954 = (int)_t953; - int _t955; - _t955 = bux_rsa_verify_sha384(pemPublicKey, _t950, data, _t952, signature, _t954); - r = _t955; - _t956 = (r == 1); - return _t956; + unsigned int _t940; + _t940 = String_Len(pemPublicKey); + _t941 = (int)_t940; + unsigned int _t942; + _t942 = String_Len(data); + _t943 = (int)_t942; + unsigned int _t944; + _t944 = String_Len(signature); + _t945 = (int)_t944; + int _t946; + _t946 = bux_rsa_verify_sha384(pemPublicKey, _t941, data, _t943, signature, _t945); + r = _t946; + _t947 = (r == 1); + return _t947; } bool Rsa_VerifySha512(const char* pemPublicKey, const char* data, const char* signature) { - int _t958; - int _t960; - int _t962; - int _t964; + int _t949; + int _t951; + int _t953; + int _t955; int r; - unsigned int _t957; - _t957 = String_Len(pemPublicKey); - _t958 = (int)_t957; - unsigned int _t959; - _t959 = String_Len(data); - _t960 = (int)_t959; - unsigned int _t961; - _t961 = String_Len(signature); - _t962 = (int)_t961; - int _t963; - _t963 = bux_rsa_verify_sha512(pemPublicKey, _t958, data, _t960, signature, _t962); - r = _t963; - _t964 = (r == 1); - return _t964; + unsigned int _t948; + _t948 = String_Len(pemPublicKey); + _t949 = (int)_t948; + unsigned int _t950; + _t950 = String_Len(data); + _t951 = (int)_t950; + unsigned int _t952; + _t952 = String_Len(signature); + _t953 = (int)_t952; + int _t954; + _t954 = bux_rsa_verify_sha512(pemPublicKey, _t949, data, _t951, signature, _t953); + r = _t954; + _t955 = (r == 1); + return _t955; } bool Rsa_VerifySha256Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t966; - void* _t967; + int _t957; + void* _t958; int outlen; outlen = 0; const char* sig; - unsigned int _t965; - _t965 = String_Len(signatureB64); - _t966 = (int)_t965; - _t967 = &outlen; - const char* _t968; - _t968 = bux_base64_decode(signatureB64, _t966, _t967); - sig = _t968; - bool _t969; - _t969 = Rsa_VerifySha256(pemPublicKey, data, sig); - return _t969; + unsigned int _t956; + _t956 = String_Len(signatureB64); + _t957 = (int)_t956; + _t958 = &outlen; + const char* _t959; + _t959 = bux_base64_decode(signatureB64, _t957, _t958); + sig = _t959; + bool _t960; + _t960 = Rsa_VerifySha256(pemPublicKey, data, sig); + return _t960; } bool Rsa_VerifySha384Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t971; - void* _t972; + int _t962; + void* _t963; int outlen; outlen = 0; const char* sig; - unsigned int _t970; - _t970 = String_Len(signatureB64); - _t971 = (int)_t970; - _t972 = &outlen; - const char* _t973; - _t973 = bux_base64_decode(signatureB64, _t971, _t972); - sig = _t973; - bool _t974; - _t974 = Rsa_VerifySha384(pemPublicKey, data, sig); - return _t974; + unsigned int _t961; + _t961 = String_Len(signatureB64); + _t962 = (int)_t961; + _t963 = &outlen; + const char* _t964; + _t964 = bux_base64_decode(signatureB64, _t962, _t963); + sig = _t964; + bool _t965; + _t965 = Rsa_VerifySha384(pemPublicKey, data, sig); + return _t965; } bool Rsa_VerifySha512Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t976; - void* _t977; + int _t967; + void* _t968; int outlen; outlen = 0; const char* sig; - unsigned int _t975; - _t975 = String_Len(signatureB64); - _t976 = (int)_t975; - _t977 = &outlen; - const char* _t978; - _t978 = bux_base64_decode(signatureB64, _t976, _t977); - sig = _t978; - bool _t979; - _t979 = Rsa_VerifySha512(pemPublicKey, data, sig); - return _t979; + unsigned int _t966; + _t966 = String_Len(signatureB64); + _t967 = (int)_t966; + _t968 = &outlen; + const char* _t969; + _t969 = bux_base64_decode(signatureB64, _t967, _t968); + sig = _t969; + bool _t970; + _t970 = Rsa_VerifySha512(pemPublicKey, data, sig); + return _t970; } int Main(void) { - Result _t980; - Result _t981; - int _t983; - int _t987; + Result _t971; + Result _t972; + int _t974; + int _t978; Result r1; - _t980 = (Result){.tag = Result_Ok}; - r1 = _t980; + _t971 = (Result){.tag = Result_Ok}; + r1 = _t971; r1.data.Ok_0 = 42; Result r2; - _t981 = (Result){.tag = Result_Err}; - r2 = _t981; + _t972 = (Result){.tag = Result_Err}; + r2 = _t972; r2.data.Err_0 = "error message"; - Result_Tag _t982; - _t982 = r1.tag; - _t983 = (_t982 == Result_Ok); - if (!_t983) goto endif321; + Result_Tag _t973; + _t973 = r1.tag; + _t974 = (_t973 == Result_Ok); + if (!_t974) goto endif308; { PrintLine("r1 is Ok:"); - Result_Data _t984; - _t984 = r1.data; - int _t985; - _t985 = _t984.Ok_0; - PrintInt(_t985); + Result_Data _t975; + _t975 = r1.data; + int _t976; + _t976 = _t975.Ok_0; + PrintInt(_t976); PrintLine(""); } - endif321:; - Result_Tag _t986; - _t986 = r2.tag; - _t987 = (_t986 == Result_Err); - if (!_t987) goto endif323; + endif308:; + Result_Tag _t977; + _t977 = r2.tag; + _t978 = (_t977 == Result_Err); + if (!_t978) goto endif310; { PrintLine("r2 is Err:"); - Result_Data _t988; - _t988 = r2.data; - const char* _t989; - _t989 = _t988.Err_0; - PrintLine(_t989); + Result_Data _t979; + _t979 = r2.data; + const char* _t980; + _t980 = _t979.Err_0; + PrintLine(_t980); } - endif323:; + endif310:; return 0; } diff --git a/tests/golden/enums/expected.c b/tests/golden/enums/expected.c index 58512e7..5db141c 100644 --- a/tests/golden/enums/expected.c +++ b/tests/golden/enums/expected.c @@ -198,6 +198,40 @@ extern const char* bux_base64_decode(const char* data, int len, int* outlen); #define ED25519_PRIVKEY_SIZE 32 #define ED25519_SIG_SIZE 64 +typedef struct Channel_float64 { + void* handle; +} Channel_float64; + +typedef struct TaskHandle { + void* handle; +} TaskHandle; + +typedef struct RwLock { + void* handle; +} RwLock; + +typedef enum { + Color_Red, + Color_Green, + Color_Blue +} Color; + +typedef struct Channel_int { + void* handle; +} Channel_int; + +typedef enum { + JwtAlg_HS256, + JwtAlg_HS384, + JwtAlg_HS512, + JwtAlg_RS256, + JwtAlg_RS384, + JwtAlg_RS512, + JwtAlg_ES256, + JwtAlg_ES384, + JwtAlg_EdDSA +} JwtAlg; + typedef enum { Result_Ok, Result_Err @@ -227,37 +261,6 @@ typedef struct { Option_Data data; } Option; -typedef enum { - JwtAlg_HS256, - JwtAlg_HS384, - JwtAlg_HS512, - JwtAlg_RS256, - JwtAlg_RS384, - JwtAlg_RS512, - JwtAlg_ES256, - JwtAlg_ES384, - JwtAlg_EdDSA -} JwtAlg; - -typedef enum { - Color_Red, - Color_Green, - Color_Blue -} Color; - - -typedef struct TaskHandle { - void* handle; -} TaskHandle; - -typedef struct Mutex { - void* handle; -} Mutex; - -typedef struct RwLock { - void* handle; -} RwLock; - typedef struct JsonValue { int tag; bool boolVal; @@ -272,6 +275,14 @@ typedef struct JsonValue { unsigned int objCap; } JsonValue; +typedef struct Mutex { + void* handle; +} Mutex; + +typedef struct StringBuilder { + void* handle; +} StringBuilder; + typedef struct JsonParser { const char* src; unsigned int pos; @@ -279,18 +290,6 @@ typedef struct JsonParser { const char* error; } JsonParser; -typedef struct StringBuilder { - void* handle; -} StringBuilder; - -typedef struct Channel_int { - void* handle; -} Channel_int; - -typedef struct Channel_float64 { - void* handle; -} Channel_float64; - bool DirExists(const char* path); bool Mkdir(const char* path); const char** ListDir(const char* dir, const char* ext, int* count); @@ -873,7 +872,7 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { tmplLen = _t60; while1:; _t61 = (i < tmplLen); - if (!_t61) goto wend3; + if (!_t61) goto wend2; { const char* ch; const char* _t62; @@ -881,13 +880,13 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { ch = _t62; bool _t63; _t63 = String_Eq(ch, "{"); - if (!_t63) goto endif5; + if (!_t63) goto endif4; { unsigned int digitIdx; _t64 = i + 1; digitIdx = _t64; _t65 = (digitIdx < tmplLen); - if (!_t65) goto endif7; + if (!_t65) goto endif6; { const char* digitCh; const char* _t66; @@ -899,22 +898,22 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { d = _t67; bool __and_tmp_0; _t68 = (d >= 0); - if (!_t68) goto else8; + if (!_t68) goto else7; _t69 = (int64_t)argCount; _t70 = (d < _t69); *(bool*)&__and_tmp_0 = _t70; - goto endif9; - else8:; + goto endif8; + else7:; *(bool*)&__and_tmp_0 = 0; - endif9:; + endif8:; bool _t71; _t71 = *(bool*)&__and_tmp_0; - if (!_t71) goto endif11; + if (!_t71) goto endif10; { _t72 = i + 2; i = _t72; _t73 = (i < tmplLen); - if (!_t73) goto endif13; + if (!_t73) goto endif12; { const char* closeCh; const char* _t74; @@ -922,7 +921,7 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { closeCh = _t74; bool _t75; _t75 = String_Eq(closeCh, "}"); - if (!_t75) goto endif15; + if (!_t75) goto endif14; { _t76 = i + 1; i = _t76; @@ -935,22 +934,22 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { StringBuilder_Append(_t79, argStr); goto while1; } - endif15:; + endif14:; } - endif13:; + endif12:; } - endif11:; + endif10:; } - endif7:; + endif6:; } - endif5:; + endif4:; _t80 = &sb; StringBuilder_Append(_t80, ch); _t81 = i + 1; i = _t81; } goto while1; - wend3:; + wend2:; _t82 = &sb; const char* _t83; _t83 = StringBuilder_Build(_t82); @@ -958,276 +957,276 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { } const char* Fmt_Fmt1(const char* tmpl, const char* a1) { - const char** _t86; + const char** _t85; const char** args; /* sizeof(const char*) */ - void* _t85; - _t85 = bux_alloc(sizeof(const char*)); - _t86 = (const char**)_t85; - args = _t86; + void* _t84; + _t84 = bux_alloc(sizeof(const char*)); + _t85 = (const char**)_t84; + args = _t85; args[0] = a1; - const char* _t87; - _t87 = Fmt_Format(tmpl, args, 1); - return _t87; + const char* _t86; + _t86 = Fmt_Format(tmpl, args, 1); + return _t86; } const char* Fmt_FmtInt(const char* tmpl, int64_t val) { const char* s; + const char* _t87; + _t87 = String_FromInt(val); + s = _t87; const char* _t88; - _t88 = String_FromInt(val); - s = _t88; - const char* _t89; - _t89 = Fmt_Fmt1(tmpl, s); - return _t89; + _t88 = Fmt_Fmt1(tmpl, s); + return _t88; } const char* Fmt_FmtBool(const char* tmpl, bool val) { const char* s; + const char* _t89; + _t89 = String_FromBool(val); + s = _t89; const char* _t90; - _t90 = String_FromBool(val); - s = _t90; - const char* _t91; - _t91 = Fmt_Fmt1(tmpl, s); - return _t91; + _t90 = Fmt_Fmt1(tmpl, s); + return _t90; } const char* Fmt_FmtFloat(const char* tmpl, double val) { const char* s; + const char* _t91; + _t91 = String_FromFloat(val); + s = _t91; const char* _t92; - _t92 = String_FromFloat(val); - s = _t92; - const char* _t93; - _t93 = Fmt_Fmt1(tmpl, s); - return _t93; + _t92 = Fmt_Fmt1(tmpl, s); + return _t92; } const char* Fmt_Fmt2(const char* tmpl, const char* a1, const char* a2) { - int _t95; - const char** _t97; + int _t93; + const char** _t95; const char** args; /* sizeof(const char*) */ - _t95 = 2 * sizeof(const char*); - void* _t96; - _t96 = bux_alloc(_t95); - _t97 = (const char**)_t96; - args = _t97; + _t93 = 2 * sizeof(const char*); + void* _t94; + _t94 = bux_alloc(_t93); + _t95 = (const char**)_t94; + args = _t95; args[0] = a1; args[1] = a2; - const char* _t98; - _t98 = Fmt_Format(tmpl, args, 2); - return _t98; + const char* _t96; + _t96 = Fmt_Format(tmpl, args, 2); + return _t96; } const char* Fmt_Fmt3(const char* tmpl, const char* a1, const char* a2, const char* a3) { - int _t100; - const char** _t102; + int _t97; + const char** _t99; const char** args; /* sizeof(const char*) */ - _t100 = 3 * sizeof(const char*); - void* _t101; - _t101 = bux_alloc(_t100); - _t102 = (const char**)_t101; - args = _t102; + _t97 = 3 * sizeof(const char*); + void* _t98; + _t98 = bux_alloc(_t97); + _t99 = (const char**)_t98; + args = _t99; args[0] = a1; args[1] = a2; args[2] = a3; - const char* _t103; - _t103 = Fmt_Format(tmpl, args, 3); - return _t103; + const char* _t100; + _t100 = Fmt_Format(tmpl, args, 3); + return _t100; } const char* Crypto_Sha256(const char* data) { - int _t105; - void* _t107; + int _t102; + void* _t104; int len; - unsigned int _t104; - _t104 = String_Len(data); - _t105 = (int)_t104; - len = _t105; + unsigned int _t101; + _t101 = String_Len(data); + _t102 = (int)_t101; + len = _t102; void* hashBuf; - void* _t106; - _t106 = Alloc(32); - hashBuf = _t106; + void* _t103; + _t103 = Alloc(32); + hashBuf = _t103; bux_sha256(data, len, hashBuf); const char* result; - _t107 = (void*)hashBuf; - const char* _t108; - _t108 = bux_bytes_to_hex(_t107, 32); - result = _t108; + _t104 = (void*)hashBuf; + const char* _t105; + _t105 = bux_bytes_to_hex(_t104, 32); + result = _t105; Free(hashBuf); return result; } const char* Crypto_HmacSha256(const char* key, const char* message) { - int _t110; - int _t112; - void* _t114; + int _t107; + int _t109; + void* _t111; int keylen; - unsigned int _t109; - _t109 = String_Len(key); - _t110 = (int)_t109; - keylen = _t110; + unsigned int _t106; + _t106 = String_Len(key); + _t107 = (int)_t106; + keylen = _t107; int msglen; - unsigned int _t111; - _t111 = String_Len(message); - _t112 = (int)_t111; - msglen = _t112; + unsigned int _t108; + _t108 = String_Len(message); + _t109 = (int)_t108; + msglen = _t109; void* hmacBuf; - void* _t113; - _t113 = Alloc(32); - hmacBuf = _t113; + void* _t110; + _t110 = Alloc(32); + hmacBuf = _t110; bux_hmac_sha256(key, keylen, message, msglen, hmacBuf); const char* result; - _t114 = (void*)hmacBuf; - const char* _t115; - _t115 = bux_bytes_to_hex(_t114, 32); - result = _t115; + _t111 = (void*)hmacBuf; + const char* _t112; + _t112 = bux_bytes_to_hex(_t111, 32); + result = _t112; Free(hmacBuf); return result; } const char* Crypto_RandomBytes(int n) { - int _t116; - unsigned int _t117; - int _t120; - const char* _t121; - _t116 = (n <= 0); - if (!_t116) goto endif17; + int _t113; + unsigned int _t114; + int _t117; + const char* _t118; + _t113 = (n <= 0); + if (!_t113) goto endif16; { return ""; } - endif17:; + endif16:; void* buf; - _t117 = (unsigned int)n; - void* _t118; - _t118 = Alloc(_t117); - buf = _t118; - int _t119; - _t119 = bux_random_bytes(buf, n); - _t120 = (_t119 != 1); - if (!_t120) goto endif19; + _t114 = (unsigned int)n; + void* _t115; + _t115 = Alloc(_t114); + buf = _t115; + int _t116; + _t116 = bux_random_bytes(buf, n); + _t117 = (_t116 != 1); + if (!_t117) goto endif18; { Free(buf); return ""; } - endif19:; + endif18:; const char* result; - _t121 = (const char*)buf; - const char* _t122; - _t122 = bux_base64_encode(_t121, n); - result = _t122; + _t118 = (const char*)buf; + const char* _t119; + _t119 = bux_base64_encode(_t118, n); + result = _t119; Free(buf); return result; } const char* Crypto_Base64Encode(const char* s) { - int _t124; - unsigned int _t123; - _t123 = String_Len(s); - _t124 = (int)_t123; - const char* _t125; - _t125 = bux_base64_encode(s, _t124); - return _t125; + int _t121; + unsigned int _t120; + _t120 = String_Len(s); + _t121 = (int)_t120; + const char* _t122; + _t122 = bux_base64_encode(s, _t121); + return _t122; } const char* Crypto_HmacSha256Raw(const char* key, const char* message) { - int _t127; - int _t129; - const char* _t131; + int _t124; + int _t126; + const char* _t128; int keylen; - unsigned int _t126; - _t126 = String_Len(key); - _t127 = (int)_t126; - keylen = _t127; + unsigned int _t123; + _t123 = String_Len(key); + _t124 = (int)_t123; + keylen = _t124; int msglen; - unsigned int _t128; - _t128 = String_Len(message); - _t129 = (int)_t128; - msglen = _t129; + unsigned int _t125; + _t125 = String_Len(message); + _t126 = (int)_t125; + msglen = _t126; void* hmacBuf; - void* _t130; - _t130 = Alloc(32); - hmacBuf = _t130; + void* _t127; + _t127 = Alloc(32); + hmacBuf = _t127; bux_hmac_sha256(key, keylen, message, msglen, hmacBuf); const char* result; - _t131 = (const char*)hmacBuf; - const char* _t132; - _t132 = bux_base64_encode(_t131, 32); - result = _t132; + _t128 = (const char*)hmacBuf; + const char* _t129; + _t129 = bux_base64_encode(_t128, 32); + result = _t129; Free(hmacBuf); return result; } const char* Crypto_Base64Decode(const char* s) { - int _t134; - void* _t135; + int _t131; + void* _t132; int outlen; outlen = 0; - unsigned int _t133; - _t133 = String_Len(s); - _t134 = (int)_t133; - _t135 = &outlen; - const char* _t136; - _t136 = bux_base64_decode(s, _t134, _t135); - return _t136; + unsigned int _t130; + _t130 = String_Len(s); + _t131 = (int)_t130; + _t132 = &outlen; + const char* _t133; + _t133 = bux_base64_decode(s, _t131, _t132); + return _t133; } Mutex Mutex_New(void) { - Mutex _t138; - void* _t137; - _t137 = bux_mutex_new(); - _t138 = (Mutex){.handle = _t137}; - return _t138; + Mutex _t135; + void* _t134; + _t134 = bux_mutex_new(); + _t135 = (Mutex){.handle = _t134}; + return _t135; } void Mutex_Lock(Mutex* m) { - void* _t139; - _t139 = m->handle; - bux_mutex_lock(_t139); + void* _t136; + _t136 = m->handle; + bux_mutex_lock(_t136); } void Mutex_Unlock(Mutex* m) { - void* _t140; - _t140 = m->handle; - bux_mutex_unlock(_t140); + void* _t137; + _t137 = m->handle; + bux_mutex_unlock(_t137); } void Mutex_Free(Mutex* m) { - void* _t141; - _t141 = m->handle; - bux_mutex_free(_t141); + void* _t138; + _t138 = m->handle; + bux_mutex_free(_t138); } RwLock RwLock_New(void) { - RwLock _t143; - void* _t142; - _t142 = bux_rwlock_new(); - _t143 = (RwLock){.handle = _t142}; - return _t143; + RwLock _t140; + void* _t139; + _t139 = bux_rwlock_new(); + _t140 = (RwLock){.handle = _t139}; + return _t140; } void RwLock_ReadLock(RwLock* rw) { - void* _t144; - _t144 = rw->handle; - bux_rwlock_rdlock(_t144); + void* _t141; + _t141 = rw->handle; + bux_rwlock_rdlock(_t141); } void RwLock_WriteLock(RwLock* rw) { - void* _t145; - _t145 = rw->handle; - bux_rwlock_wrlock(_t145); + void* _t142; + _t142 = rw->handle; + bux_rwlock_wrlock(_t142); } void RwLock_Unlock(RwLock* rw) { - void* _t146; - _t146 = rw->handle; - bux_rwlock_unlock(_t146); + void* _t143; + _t143 = rw->handle; + bux_rwlock_unlock(_t143); } void RwLock_Free(RwLock* rw) { - void* _t147; - _t147 = rw->handle; - bux_rwlock_free(_t147); + void* _t144; + _t144 = rw->handle; + bux_rwlock_free(_t144); } void Test_Exit(int code) { @@ -1235,15 +1234,15 @@ void Test_Exit(int code) { } void Test_Assert(bool cond) { - int _t148; - _t148 = (int)cond; - bux_assert(_t148, "", 0, ""); + int _t145; + _t145 = (int)cond; + bux_assert(_t145, "", 0, ""); } void Test_AssertEqInt(int a, int b) { - int _t149; - _t149 = (a != b); - if (!_t149) goto endif21; + int _t146; + _t146 = (a != b); + if (!_t146) goto endif20; { PrintLine("ASSERT_EQ FAILED:"); PrintInt(a); @@ -1251,27 +1250,27 @@ void Test_AssertEqInt(int a, int b) { PrintInt(b); bux_exit(1); } - endif21:; + endif20:; } void Test_AssertTrue(bool cond) { - int _t150; - _t150 = !cond; - if (!_t150) goto endif23; + int _t147; + _t147 = !cond; + if (!_t147) goto endif22; { PrintLine("ASSERT_TRUE FAILED"); bux_exit(1); } - endif23:; + endif22:; } void Test_AssertFalse(bool cond) { - if (!cond) goto endif25; + if (!cond) goto endif24; { PrintLine("ASSERT_FALSE FAILED"); bux_exit(1); } - endif25:; + endif24:; } void Test_Fail(const char* msg) { @@ -1281,735 +1280,744 @@ void Test_Fail(const char* msg) { } Result Result_NewOk(int value) { - Result _t151; + Result _t148; Result r; - _t151 = (Result){.tag = Result_Ok}; - r = _t151; + _t148 = (Result){.tag = Result_Ok}; + r = _t148; r.data.Ok_0 = value; return r; } Result Result_NewErr(const char* msg) { - Result _t152; + Result _t149; Result r; - _t152 = (Result){.tag = Result_Err}; - r = _t152; + _t149 = (Result){.tag = Result_Err}; + r = _t149; r.data.Err_0 = msg; return r; } bool Result_IsOk(Result r) { - int _t154; - Result_Tag _t153; - _t153 = r.tag; - _t154 = (_t153 == Result_Ok); - return _t154; + int _t151; + Result_Tag _t150; + _t150 = r.tag; + _t151 = (_t150 == Result_Ok); + return _t151; } bool Result_IsErr(Result r) { - int _t156; - Result_Tag _t155; - _t155 = r.tag; - _t156 = (_t155 == Result_Err); - return _t156; + int _t153; + Result_Tag _t152; + _t152 = r.tag; + _t153 = (_t152 == Result_Err); + return _t153; } int Result_Unwrap(Result r) { - int _t158; - Result_Tag _t157; - _t157 = r.tag; - _t158 = (_t157 != Result_Ok); - if (!_t158) goto endif27; + int _t155; + Result_Tag _t154; + _t154 = r.tag; + _t155 = (_t154 != Result_Ok); + if (!_t155) goto endif26; { PrintLine("panic: unwrap on Err"); return 0; } - endif27:; - Result_Data _t159; - _t159 = r.data; - int _t160; - _t160 = _t159.Ok_0; - return _t160; + endif26:; + Result_Data _t156; + _t156 = r.data; + int _t157; + _t157 = _t156.Ok_0; + return _t157; } int Result_UnwrapOr(Result r, int fallback) { - int _t162; - Result_Tag _t161; - _t161 = r.tag; - _t162 = (_t161 == Result_Ok); - if (!_t162) goto endif29; + int _t159; + Result_Tag _t158; + _t158 = r.tag; + _t159 = (_t158 == Result_Ok); + if (!_t159) goto endif28; { - Result_Data _t163; - _t163 = r.data; - int _t164; - _t164 = _t163.Ok_0; - return _t164; + Result_Data _t160; + _t160 = r.data; + int _t161; + _t161 = _t160.Ok_0; + return _t161; } - endif29:; + endif28:; return fallback; } Option Option_NewSome(int value) { - Option _t165; + Option _t162; Option o; - _t165 = (Option){.tag = Option_Some}; - o = _t165; + _t162 = (Option){.tag = Option_Some}; + o = _t162; o.data.Some_0 = value; return o; } Option Option_NewNone(void) { - Option _t166; - _t166 = (Option){.tag = Option_None}; - return _t166; + Option _t163; + _t163 = (Option){.tag = Option_None}; + return _t163; } bool Option_IsSome(Option o) { - int _t168; - Option_Tag _t167; - _t167 = o.tag; - _t168 = (_t167 == Option_Some); - return _t168; + int _t165; + Option_Tag _t164; + _t164 = o.tag; + _t165 = (_t164 == Option_Some); + return _t165; } bool Option_IsNone(Option o) { - int _t170; - Option_Tag _t169; - _t169 = o.tag; - _t170 = (_t169 == Option_None); - return _t170; + int _t167; + Option_Tag _t166; + _t166 = o.tag; + _t167 = (_t166 == Option_None); + return _t167; } int Option_Unwrap(Option o) { - int _t172; - Option_Tag _t171; - _t171 = o.tag; - _t172 = (_t171 != Option_Some); - if (!_t172) goto endif31; + int _t169; + Option_Tag _t168; + _t168 = o.tag; + _t169 = (_t168 != Option_Some); + if (!_t169) goto endif30; { PrintLine("panic: unwrap on None"); return 0; } - endif31:; - Option_Data _t173; - _t173 = o.data; - int _t174; - _t174 = _t173.Some_0; - return _t174; + endif30:; + Option_Data _t170; + _t170 = o.data; + int _t171; + _t171 = _t170.Some_0; + return _t171; } int Option_UnwrapOr(Option o, int fallback) { - int _t176; - Option_Tag _t175; - _t175 = o.tag; - _t176 = (_t175 == Option_Some); - if (!_t176) goto endif33; + int _t173; + Option_Tag _t172; + _t172 = o.tag; + _t173 = (_t172 == Option_Some); + if (!_t173) goto endif32; { - Option_Data _t177; - _t177 = o.data; - int _t178; - _t178 = _t177.Some_0; - return _t178; + Option_Data _t174; + _t174 = o.data; + int _t175; + _t175 = _t174.Some_0; + return _t175; } - endif33:; + endif32:; return fallback; } JsonValue Json_Null(void) { - JsonValue _t179; - _t179 = (JsonValue){.tag = JsonTagNull, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t179; + JsonValue _t176; + _t176 = (JsonValue){.tag = JsonTagNull, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t176; } JsonValue Json_Bool(bool b) { - JsonValue _t180; - _t180 = (JsonValue){.tag = JsonTagBool, .boolVal = b, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t180; + JsonValue _t177; + _t177 = (JsonValue){.tag = JsonTagBool, .boolVal = b, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t177; } JsonValue Json_Number(double n) { - JsonValue _t181; - _t181 = (JsonValue){.tag = JsonTagNumber, .boolVal = 0, .numVal = n, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t181; + JsonValue _t178; + _t178 = (JsonValue){.tag = JsonTagNumber, .boolVal = 0, .numVal = n, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t178; } JsonValue Json_String(const char* s) { - JsonValue _t182; - _t182 = (JsonValue){.tag = JsonTagString, .boolVal = 0, .numVal = 0.0, .strVal = s, .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t182; + JsonValue _t179; + _t179 = (JsonValue){.tag = JsonTagString, .boolVal = 0, .numVal = 0.0, .strVal = s, .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t179; } JsonValue Json_Array(void) { - JsonValue _t183; - _t183 = (JsonValue){.tag = JsonTagArray, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t183; + JsonValue _t180; + _t180 = (JsonValue){.tag = JsonTagArray, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t180; } JsonValue Json_Object(void) { - JsonValue _t184; - _t184 = (JsonValue){.tag = JsonTagObject, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t184; + JsonValue _t181; + _t181 = (JsonValue){.tag = JsonTagObject, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t181; } unsigned int Json_ArrayLen(JsonValue v) { - int _t186; - int _t185; - _t185 = v.tag; - _t186 = (_t185 != JsonTagArray); - if (!_t186) goto endif35; + int _t183; + int _t182; + _t182 = v.tag; + _t183 = (_t182 != JsonTagArray); + if (!_t183) goto endif34; { return 0; } - endif35:; - unsigned int _t187; - _t187 = v.arrLen; - return _t187; + endif34:; + unsigned int _t184; + _t184 = v.arrLen; + return _t184; } JsonValue Json_ArrayGet(JsonValue v, unsigned int index) { + int _t186; int _t189; - int _t192; - int _t188; - _t188 = v.tag; - _t189 = (_t188 != JsonTagArray); - if (!_t189) goto endif37; + int _t185; + _t185 = v.tag; + _t186 = (_t185 != JsonTagArray); + if (!_t186) goto endif36; + { + JsonValue _t187; + _t187 = Json_Null(); + return _t187; + } + endif36:; + unsigned int _t188; + _t188 = v.arrLen; + _t189 = (index >= _t188); + if (!_t189) goto endif38; { JsonValue _t190; _t190 = Json_Null(); return _t190; } - endif37:; - unsigned int _t191; - _t191 = v.arrLen; - _t192 = (index >= _t191); - if (!_t192) goto endif39; - { - JsonValue _t193; - _t193 = Json_Null(); - return _t193; - } - endif39:; - JsonValue* _t194; - _t194 = v.arrData; - JsonValue _t195; - _t195 = _t194[index]; - return _t195; + endif38:; + JsonValue* _t191; + _t191 = v.arrData; + JsonValue _t192; + _t192 = _t191[index]; + return _t192; } void Json_ArrayPush(JsonValue* self, JsonValue val) { + int _t194; int _t197; + int _t199; int _t200; - int _t202; - int _t204; - JsonValue* _t206; - int _t207; - void* _t209; - int _t211; - JsonValue* _t213; - int _t217; - int _t196; - _t196 = self->tag; - _t197 = (_t196 != JsonTagArray); - if (!_t197) goto endif41; + JsonValue* _t202; + int _t203; + void* _t205; + int _t206; + JsonValue* _t208; + int _t212; + int _t193; + _t193 = self->tag; + _t194 = (_t193 != JsonTagArray); + if (!_t194) goto endif40; { return; } - endif41:; - unsigned int _t198; - _t198 = self->arrLen; - unsigned int _t199; - _t199 = self->arrCap; - _t200 = (_t198 >= _t199); - if (!_t200) goto endif43; + endif40:; + unsigned int _t195; + _t195 = self->arrLen; + unsigned int _t196; + _t196 = self->arrCap; + _t197 = (_t195 >= _t196); + if (!_t197) goto endif42; { unsigned int arrNewCap; - unsigned int _t201; - _t201 = self->arrCap; - arrNewCap = _t201; - _t202 = (arrNewCap == 0); - if (!_t202) goto else44; + unsigned int _t198; + _t198 = self->arrCap; + arrNewCap = _t198; + _t199 = (arrNewCap == 0); + if (!_t199) goto else43; { self->arrCap = 4; /* sizeof(JsonValue) */ - _t204 = 4 * sizeof(JsonValue); - void* _t205; - _t205 = Alloc(_t204); - _t206 = (JsonValue*)_t205; - self->arrData = _t206; + _t200 = 4 * sizeof(JsonValue); + void* _t201; + _t201 = Alloc(_t200); + _t202 = (JsonValue*)_t201; + self->arrData = _t202; } - goto endif45; - else44:; + goto endif44; + else43:; { unsigned int doubleCap; - _t207 = arrNewCap * 2; - doubleCap = _t207; + _t203 = arrNewCap * 2; + doubleCap = _t203; self->arrCap = doubleCap; - JsonValue* _t208; - _t208 = self->arrData; - _t209 = (void*)_t208; + JsonValue* _t204; + _t204 = self->arrData; + _t205 = (void*)_t204; /* sizeof(JsonValue) */ - _t211 = doubleCap * sizeof(JsonValue); - void* _t212; - _t212 = Realloc(_t209, _t211); - _t213 = (JsonValue*)_t212; - self->arrData = _t213; + _t206 = doubleCap * sizeof(JsonValue); + void* _t207; + _t207 = Realloc(_t205, _t206); + _t208 = (JsonValue*)_t207; + self->arrData = _t208; } - endif45:; + endif44:; } - endif43:; - JsonValue* _t214; - _t214 = self->arrData; - unsigned int _t215; - _t215 = self->arrLen; - _t214[_t215] = val; - unsigned int _t216; - _t216 = self->arrLen; - _t217 = _t216 + 1; - self->arrLen = _t217; + endif42:; + JsonValue* _t209; + _t209 = self->arrData; + unsigned int _t210; + _t210 = self->arrLen; + _t209[_t210] = val; + unsigned int _t211; + _t211 = self->arrLen; + _t212 = _t211 + 1; + self->arrLen = _t212; } unsigned int Json_ObjectLen(JsonValue v) { - int _t219; - int _t218; - _t218 = v.tag; - _t219 = (_t218 != JsonTagObject); - if (!_t219) goto endif47; + int _t214; + int _t213; + _t213 = v.tag; + _t214 = (_t213 != JsonTagObject); + if (!_t214) goto endif46; { return 0; } - endif47:; - unsigned int _t220; - _t220 = v.objLen; - return _t220; + endif46:; + unsigned int _t215; + _t215 = v.objLen; + return _t215; } JsonValue Json_ObjectGet(JsonValue v, const char* key) { - int _t222; - int _t225; - int _t231; - int _t221; - _t221 = v.tag; - _t222 = (_t221 != JsonTagObject); - if (!_t222) goto endif49; + int _t217; + int _t220; + int _t226; + int _t216; + _t216 = v.tag; + _t217 = (_t216 != JsonTagObject); + if (!_t217) goto endif48; { - JsonValue _t223; - _t223 = Json_Null(); - return _t223; + JsonValue _t218; + _t218 = Json_Null(); + return _t218; } - endif49:; + endif48:; unsigned int i; i = 0; - while50:; - unsigned int _t224; - _t224 = v.objLen; - _t225 = (i < _t224); - if (!_t225) goto wend52; + while49:; + unsigned int _t219; + _t219 = v.objLen; + _t220 = (i < _t219); + if (!_t220) goto wend50; { - const char** _t226; - _t226 = v.objKeys; - const char* _t227; - _t227 = _t226[i]; - bool _t228; - _t228 = String_Eq(_t227, key); - if (!_t228) goto endif54; + const char** _t221; + _t221 = v.objKeys; + const char* _t222; + _t222 = _t221[i]; + bool _t223; + _t223 = String_Eq(_t222, key); + if (!_t223) goto endif52; { - JsonValue* _t229; - _t229 = v.objValues; - JsonValue _t230; - _t230 = _t229[i]; - return _t230; + JsonValue* _t224; + _t224 = v.objValues; + JsonValue _t225; + _t225 = _t224[i]; + return _t225; } - endif54:; - _t231 = i + 1; - i = _t231; + endif52:; + _t226 = i + 1; + i = _t226; } - goto while50; - wend52:; - JsonValue _t232; - _t232 = Json_Null(); - return _t232; + goto while49; + wend50:; + JsonValue _t227; + _t227 = Json_Null(); + return _t227; } bool Json_ObjectHas(JsonValue v, const char* key) { - int _t234; - int _t236; - int _t240; - int _t233; - _t233 = v.tag; - _t234 = (_t233 != JsonTagObject); - if (!_t234) goto endif56; + int _t229; + int _t231; + int _t235; + int _t228; + _t228 = v.tag; + _t229 = (_t228 != JsonTagObject); + if (!_t229) goto endif54; { return 0; } - endif56:; + endif54:; unsigned int i; i = 0; - while57:; - unsigned int _t235; - _t235 = v.objLen; - _t236 = (i < _t235); - if (!_t236) goto wend59; + while55:; + unsigned int _t230; + _t230 = v.objLen; + _t231 = (i < _t230); + if (!_t231) goto wend56; { - const char** _t237; - _t237 = v.objKeys; - const char* _t238; - _t238 = _t237[i]; - bool _t239; - _t239 = String_Eq(_t238, key); - if (!_t239) goto endif61; + const char** _t232; + _t232 = v.objKeys; + const char* _t233; + _t233 = _t232[i]; + bool _t234; + _t234 = String_Eq(_t233, key); + if (!_t234) goto endif58; { return 1; } - endif61:; - _t240 = i + 1; - i = _t240; + endif58:; + _t235 = i + 1; + i = _t235; } - goto while57; - wend59:; + goto while55; + wend56:; return 0; } void Json_ObjectSet(JsonValue* self, const char* key, JsonValue val) { - int _t242; + int _t237; + int _t239; int _t244; + int _t247; int _t249; - int _t252; - int _t254; + int _t250; + const char** _t252; + int _t253; + JsonValue* _t255; int _t256; - const char** _t258; - int _t260; - JsonValue* _t262; - int _t263; - void* _t265; - int _t267; - const char** _t269; - void* _t271; - int _t273; - JsonValue* _t275; - int _t281; - int _t241; - _t241 = self->tag; - _t242 = (_t241 != JsonTagObject); - if (!_t242) goto endif63; + void* _t258; + int _t259; + const char** _t261; + void* _t263; + int _t264; + JsonValue* _t266; + int _t272; + int _t236; + _t236 = self->tag; + _t237 = (_t236 != JsonTagObject); + if (!_t237) goto endif60; { return; } - endif63:; + endif60:; unsigned int i; i = 0; - while64:; - unsigned int _t243; - _t243 = self->objLen; - _t244 = (i < _t243); - if (!_t244) goto wend66; + while61:; + unsigned int _t238; + _t238 = self->objLen; + _t239 = (i < _t238); + if (!_t239) goto wend62; { - const char** _t245; - _t245 = self->objKeys; - const char* _t246; - _t246 = _t245[i]; - bool _t247; - _t247 = String_Eq(_t246, key); - if (!_t247) goto endif68; + const char** _t240; + _t240 = self->objKeys; + const char* _t241; + _t241 = _t240[i]; + bool _t242; + _t242 = String_Eq(_t241, key); + if (!_t242) goto endif64; { - JsonValue* _t248; - _t248 = self->objValues; - _t248[i] = val; + JsonValue* _t243; + _t243 = self->objValues; + _t243[i] = val; return; } - endif68:; - _t249 = i + 1; - i = _t249; + endif64:; + _t244 = i + 1; + i = _t244; } - goto while64; - wend66:; - unsigned int _t250; - _t250 = self->objLen; - unsigned int _t251; - _t251 = self->objCap; - _t252 = (_t250 >= _t251); - if (!_t252) goto endif70; + goto while61; + wend62:; + unsigned int _t245; + _t245 = self->objLen; + unsigned int _t246; + _t246 = self->objCap; + _t247 = (_t245 >= _t246); + if (!_t247) goto endif66; { unsigned int objNewCap; - unsigned int _t253; - _t253 = self->objCap; - objNewCap = _t253; - _t254 = (objNewCap == 0); - if (!_t254) goto else71; + unsigned int _t248; + _t248 = self->objCap; + objNewCap = _t248; + _t249 = (objNewCap == 0); + if (!_t249) goto else67; { self->objCap = 4; /* sizeof(const char*) */ - _t256 = 4 * sizeof(const char*); - void* _t257; - _t257 = Alloc(_t256); - _t258 = (const char**)_t257; - self->objKeys = _t258; + _t250 = 4 * sizeof(const char*); + void* _t251; + _t251 = Alloc(_t250); + _t252 = (const char**)_t251; + self->objKeys = _t252; /* sizeof(JsonValue) */ - _t260 = 4 * sizeof(JsonValue); - void* _t261; - _t261 = Alloc(_t260); - _t262 = (JsonValue*)_t261; - self->objValues = _t262; + _t253 = 4 * sizeof(JsonValue); + void* _t254; + _t254 = Alloc(_t253); + _t255 = (JsonValue*)_t254; + self->objValues = _t255; } - goto endif72; - else71:; + goto endif68; + else67:; { unsigned int doubleCap; - _t263 = objNewCap * 2; - doubleCap = _t263; + _t256 = objNewCap * 2; + doubleCap = _t256; self->objCap = doubleCap; - const char** _t264; - _t264 = self->objKeys; - _t265 = (void*)_t264; + const char** _t257; + _t257 = self->objKeys; + _t258 = (void*)_t257; /* sizeof(const char*) */ - _t267 = doubleCap * sizeof(const char*); - void* _t268; - _t268 = Realloc(_t265, _t267); - _t269 = (const char**)_t268; - self->objKeys = _t269; - JsonValue* _t270; - _t270 = self->objValues; - _t271 = (void*)_t270; + _t259 = doubleCap * sizeof(const char*); + void* _t260; + _t260 = Realloc(_t258, _t259); + _t261 = (const char**)_t260; + self->objKeys = _t261; + JsonValue* _t262; + _t262 = self->objValues; + _t263 = (void*)_t262; /* sizeof(JsonValue) */ - _t273 = doubleCap * sizeof(JsonValue); - void* _t274; - _t274 = Realloc(_t271, _t273); - _t275 = (JsonValue*)_t274; - self->objValues = _t275; + _t264 = doubleCap * sizeof(JsonValue); + void* _t265; + _t265 = Realloc(_t263, _t264); + _t266 = (JsonValue*)_t265; + self->objValues = _t266; } - endif72:; + endif68:; } - endif70:; - const char** _t276; - _t276 = self->objKeys; - unsigned int _t277; - _t277 = self->objLen; - _t276[_t277] = key; - JsonValue* _t278; - _t278 = self->objValues; - unsigned int _t279; - _t279 = self->objLen; - _t278[_t279] = val; - unsigned int _t280; - _t280 = self->objLen; - _t281 = _t280 + 1; - self->objLen = _t281; + endif66:; + const char** _t267; + _t267 = self->objKeys; + unsigned int _t268; + _t268 = self->objLen; + _t267[_t268] = key; + JsonValue* _t269; + _t269 = self->objValues; + unsigned int _t270; + _t270 = self->objLen; + _t269[_t270] = val; + unsigned int _t271; + _t271 = self->objLen; + _t272 = _t271 + 1; + self->objLen = _t272; } bool Json_IsNull(JsonValue v) { - int _t283; - int _t282; - _t282 = v.tag; - _t283 = (_t282 == JsonTagNull); - return _t283; + int _t274; + int _t273; + _t273 = v.tag; + _t274 = (_t273 == JsonTagNull); + return _t274; } bool Json_AsBool(JsonValue v) { - int _t285; - int _t284; - _t284 = v.tag; - _t285 = (_t284 == JsonTagBool); - if (!_t285) goto endif74; + int _t276; + int _t275; + _t275 = v.tag; + _t276 = (_t275 == JsonTagBool); + if (!_t276) goto endif70; { - bool _t286; - _t286 = v.boolVal; - return _t286; + bool _t277; + _t277 = v.boolVal; + return _t277; } - endif74:; + endif70:; return 0; } double Json_AsNumber(JsonValue v) { - int _t288; - int _t287; - _t287 = v.tag; - _t288 = (_t287 == JsonTagNumber); - if (!_t288) goto endif76; + int _t279; + int _t278; + _t278 = v.tag; + _t279 = (_t278 == JsonTagNumber); + if (!_t279) goto endif72; { - double _t289; - _t289 = v.numVal; - return _t289; + double _t280; + _t280 = v.numVal; + return _t280; } - endif76:; + endif72:; return 0.0; } const char* Json_AsString(JsonValue v) { - int _t291; - int _t290; - _t290 = v.tag; - _t291 = (_t290 == JsonTagString); - if (!_t291) goto endif78; + int _t282; + int _t281; + _t281 = v.tag; + _t282 = (_t281 == JsonTagString); + if (!_t282) goto endif74; { - const char* _t292; - _t292 = v.strVal; - return _t292; + const char* _t283; + _t283 = v.strVal; + return _t283; } - endif78:; + endif74:; return ""; } int JsonParser_Peek(JsonParser* p) { - int _t295; - int _t299; - unsigned int _t293; - _t293 = p->pos; - unsigned int _t294; - _t294 = p->len; - _t295 = (_t293 >= _t294); - if (!_t295) goto endif80; + int _t286; + int _t290; + unsigned int _t284; + _t284 = p->pos; + unsigned int _t285; + _t285 = p->len; + _t286 = (_t284 >= _t285); + if (!_t286) goto endif76; { return 0; } - endif80:; - const char* _t296; - _t296 = p->src; - unsigned int _t297; - _t297 = p->pos; - int _t298; - _t298 = _t296[_t297]; - _t299 = (int)_t298; - return _t299; + endif76:; + const char* _t287; + _t287 = p->src; + unsigned int _t288; + _t288 = p->pos; + int _t289; + _t289 = _t287[_t288]; + _t290 = (int)_t289; + return _t290; } void JsonParser_Advance(JsonParser* p) { - int _t302; - int _t304; - unsigned int _t300; - _t300 = p->pos; - unsigned int _t301; - _t301 = p->len; - _t302 = (_t300 < _t301); - if (!_t302) goto endif82; + int _t293; + int _t295; + unsigned int _t291; + _t291 = p->pos; + unsigned int _t292; + _t292 = p->len; + _t293 = (_t291 < _t292); + if (!_t293) goto endif78; { - unsigned int _t303; - _t303 = p->pos; - _t304 = _t303 + 1; - p->pos = _t304; + unsigned int _t294; + _t294 = p->pos; + _t295 = _t294 + 1; + p->pos = _t295; } - endif82:; + endif78:; } void JsonParser_SkipWhitespace(JsonParser* p) { - int _t306; - int _t307; - int _t309; - int _t311; - while83:; - if (!1) goto wend85; + int _t297; + int _t298; + int _t300; + int _t302; + while79:; + if (!1) goto wend80; { int c; - int _t305; - _t305 = JsonParser_Peek(p); - c = _t305; + int _t296; + _t296 = JsonParser_Peek(p); + c = _t296; bool __or_tmp_1; bool __or_tmp_2; bool __or_tmp_3; - _t306 = (c == 32); - if (!_t306) goto else86; + _t297 = (c == 32); + if (!_t297) goto else81; *(bool*)&__or_tmp_3 = 1; - goto endif87; - else86:; - _t307 = (c == 9); - *(bool*)&__or_tmp_3 = _t307; - endif87:; - bool _t308; - _t308 = *(bool*)&__or_tmp_3; - if (!_t308) goto else88; + goto endif82; + else81:; + _t298 = (c == 9); + *(bool*)&__or_tmp_3 = _t298; + endif82:; + bool _t299; + _t299 = *(bool*)&__or_tmp_3; + if (!_t299) goto else83; *(bool*)&__or_tmp_2 = 1; - goto endif89; - else88:; - _t309 = (c == 10); - *(bool*)&__or_tmp_2 = _t309; - endif89:; - bool _t310; - _t310 = *(bool*)&__or_tmp_2; - if (!_t310) goto else90; + goto endif84; + else83:; + _t300 = (c == 10); + *(bool*)&__or_tmp_2 = _t300; + endif84:; + bool _t301; + _t301 = *(bool*)&__or_tmp_2; + if (!_t301) goto else85; *(bool*)&__or_tmp_1 = 1; - goto endif91; - else90:; - _t311 = (c == 13); - *(bool*)&__or_tmp_1 = _t311; - endif91:; - bool _t312; - _t312 = *(bool*)&__or_tmp_1; - if (!_t312) goto else92; + goto endif86; + else85:; + _t302 = (c == 13); + *(bool*)&__or_tmp_1 = _t302; + endif86:; + bool _t303; + _t303 = *(bool*)&__or_tmp_1; + if (!_t303) goto else87; { JsonParser_Advance(p); } - goto endif93; - else92:; + goto endif88; + else87:; { return; } - endif93:; + endif88:; } - goto while83; - wend85:; + goto while79; + wend80:; } bool JsonParser_Match(JsonParser* p, const char* expected) { + int _t306; + int _t308; + int _t309; + int _t312; int _t315; - int _t317; + int _t316; int _t318; - int _t321; - int _t324; - int _t325; - int _t327; unsigned int elen; - unsigned int _t313; - _t313 = String_Len(expected); - elen = _t313; - unsigned int _t314; - _t314 = p->pos; - _t315 = _t314 + elen; - unsigned int _t316; - _t316 = p->len; - _t317 = (_t315 > _t316); - if (!_t317) goto endif95; + unsigned int _t304; + _t304 = String_Len(expected); + elen = _t304; + unsigned int _t305; + _t305 = p->pos; + _t306 = _t305 + elen; + unsigned int _t307; + _t307 = p->len; + _t308 = (_t306 > _t307); + if (!_t308) goto endif90; { return 0; } - endif95:; + endif90:; unsigned int i; i = 0; - while96:; - _t318 = (i < elen); - if (!_t318) goto wend98; + while91:; + _t309 = (i < elen); + if (!_t309) goto wend92; { - const char* _t319; - _t319 = p->src; - unsigned int _t320; - _t320 = p->pos; - _t321 = _t320 + i; - int _t322; - _t322 = _t319[_t321]; - int _t323; - _t323 = expected[i]; - _t324 = (_t322 != _t323); - if (!_t324) goto endif100; + const char* _t310; + _t310 = p->src; + unsigned int _t311; + _t311 = p->pos; + _t312 = _t311 + i; + int _t313; + _t313 = _t310[_t312]; + int _t314; + _t314 = expected[i]; + _t315 = (_t313 != _t314); + if (!_t315) goto endif94; { return 0; } - endif100:; - _t325 = i + 1; - i = _t325; + endif94:; + _t316 = i + 1; + i = _t316; } - goto while96; - wend98:; - unsigned int _t326; - _t326 = p->pos; - _t327 = _t326 + elen; - p->pos = _t327; + goto while91; + wend92:; + unsigned int _t317; + _t317 = p->pos; + _t318 = _t317 + elen; + p->pos = _t318; return 1; } const char* JsonParser_ParseString(JsonParser* p) { - int _t329; - int _t332; + int _t320; + int _t323; + int _t324; + int _t326; + int _t328; + void* _t329; + int _t330; + void* _t331; + char _t332; int _t333; - int _t335; - int _t337; - void* _t338; + void* _t334; + char _t335; + int _t336; + void* _t337; + char _t338; int _t339; void* _t340; char _t341; @@ -2022,234 +2030,262 @@ const char* JsonParser_ParseString(JsonParser* p) { int _t348; void* _t349; char _t350; - int _t351; - void* _t352; - char _t353; - int _t354; + void* _t351; + char _t352; + void* _t353; + char _t354; void* _t355; char _t356; - int _t357; - void* _t358; - char _t359; + int _t358; + void* _t359; void* _t360; - char _t361; void* _t362; - char _t363; - void* _t364; - char _t365; - int _t367; - void* _t368; - void* _t369; - void* _t371; - int _t328; - _t328 = JsonParser_Peek(p); - _t329 = (_t328 != 34); - if (!_t329) goto endif102; + int _t319; + _t319 = JsonParser_Peek(p); + _t320 = (_t319 != 34); + if (!_t320) goto endif96; { p->error = "Expected string"; return ""; } - endif102:; + endif96:; JsonParser_Advance(p); StringBuilder sb; - StringBuilder _t330; - _t330 = StringBuilder_New(); - sb = _t330; - while103:; - if (!1) goto wend105; + StringBuilder _t321; + _t321 = StringBuilder_New(); + sb = _t321; + while97:; + if (!1) goto wend98; { int c; - int _t331; - _t331 = JsonParser_Peek(p); - c = _t331; + int _t322; + _t322 = JsonParser_Peek(p); + c = _t322; bool __or_tmp_4; - _t332 = (c == 0); - if (!_t332) goto else106; + _t323 = (c == 0); + if (!_t323) goto else99; *(bool*)&__or_tmp_4 = 1; - goto endif107; - else106:; - _t333 = (c == 34); - *(bool*)&__or_tmp_4 = _t333; - endif107:; - bool _t334; - _t334 = *(bool*)&__or_tmp_4; - if (!_t334) goto endif109; + goto endif100; + else99:; + _t324 = (c == 34); + *(bool*)&__or_tmp_4 = _t324; + endif100:; + bool _t325; + _t325 = *(bool*)&__or_tmp_4; + if (!_t325) goto endif102; { - goto wend105; + goto wend98; } - endif109:; - _t335 = (c == 92); - if (!_t335) goto else110; + endif102:; + _t326 = (c == 92); + if (!_t326) goto else103; { JsonParser_Advance(p); int esc; - int _t336; - _t336 = JsonParser_Peek(p); - esc = _t336; - _t337 = (esc == 0); - if (!_t337) goto endif113; + int _t327; + _t327 = JsonParser_Peek(p); + esc = _t327; + _t328 = (esc == 0); + if (!_t328) goto endif106; { p->error = "Unterminated string escape"; - _t338 = &sb; - StringBuilder_Free(_t338); + _t329 = &sb; + StringBuilder_Free(_t329); return ""; } - endif113:; - _t339 = (esc == 110); - if (!_t339) goto else114; + endif106:; + _t330 = (esc == 110); + if (!_t330) goto else107; + { + _t331 = &sb; + _t332 = (char)10; + StringBuilder_AppendChar(_t331, _t332); + } + goto endif108; + else107:; + _t333 = (esc == 116); + if (!_t333) goto else109; + { + _t334 = &sb; + _t335 = (char)9; + StringBuilder_AppendChar(_t334, _t335); + } + goto endif110; + else109:; + _t336 = (esc == 114); + if (!_t336) goto else111; + { + _t337 = &sb; + _t338 = (char)13; + StringBuilder_AppendChar(_t337, _t338); + } + goto endif112; + else111:; + _t339 = (esc == 98); + if (!_t339) goto else113; { _t340 = &sb; - _t341 = (char)10; + _t341 = (char)8; StringBuilder_AppendChar(_t340, _t341); } - goto endif115; - else114:; - _t342 = (esc == 116); - if (!_t342) goto else116; + goto endif114; + else113:; + _t342 = (esc == 102); + if (!_t342) goto else115; { _t343 = &sb; - _t344 = (char)9; + _t344 = (char)12; StringBuilder_AppendChar(_t343, _t344); } - goto endif117; - else116:; - _t345 = (esc == 114); - if (!_t345) goto else118; + goto endif116; + else115:; + _t345 = (esc == 34); + if (!_t345) goto else117; { _t346 = &sb; - _t347 = (char)13; + _t347 = (char)34; StringBuilder_AppendChar(_t346, _t347); } - goto endif119; - else118:; - _t348 = (esc == 98); - if (!_t348) goto else120; + goto endif118; + else117:; + _t348 = (esc == 92); + if (!_t348) goto else119; { _t349 = &sb; - _t350 = (char)8; + _t350 = (char)92; StringBuilder_AppendChar(_t349, _t350); } - goto endif121; - else120:; - _t351 = (esc == 102); - if (!_t351) goto else122; + goto endif120; + else119:; { - _t352 = &sb; - _t353 = (char)12; - StringBuilder_AppendChar(_t352, _t353); + _t351 = &sb; + _t352 = (char)92; + StringBuilder_AppendChar(_t351, _t352); + _t353 = &sb; + _t354 = (char)esc; + StringBuilder_AppendChar(_t353, _t354); } - goto endif123; - else122:; - _t354 = (esc == 34); - if (!_t354) goto else124; + endif120:; + endif118:; + endif116:; + endif114:; + endif112:; + endif110:; + endif108:; + JsonParser_Advance(p); + } + goto endif104; + else103:; { _t355 = &sb; - _t356 = (char)34; + _t356 = (char)c; StringBuilder_AppendChar(_t355, _t356); - } - goto endif125; - else124:; - _t357 = (esc == 92); - if (!_t357) goto else126; - { - _t358 = &sb; - _t359 = (char)92; - StringBuilder_AppendChar(_t358, _t359); - } - goto endif127; - else126:; - { - _t360 = &sb; - _t361 = (char)92; - StringBuilder_AppendChar(_t360, _t361); - _t362 = &sb; - _t363 = (char)esc; - StringBuilder_AppendChar(_t362, _t363); - } - endif127:; - endif125:; - endif123:; - endif121:; - endif119:; - endif117:; - endif115:; JsonParser_Advance(p); } - goto endif111; - else110:; - { - _t364 = &sb; - _t365 = (char)c; - StringBuilder_AppendChar(_t364, _t365); - JsonParser_Advance(p); + endif104:; } - endif111:; - } - goto while103; - wend105:; - int _t366; - _t366 = JsonParser_Peek(p); - _t367 = (_t366 != 34); - if (!_t367) goto endif129; + goto while97; + wend98:; + int _t357; + _t357 = JsonParser_Peek(p); + _t358 = (_t357 != 34); + if (!_t358) goto endif122; { p->error = "Unterminated string"; - _t368 = &sb; - StringBuilder_Free(_t368); + _t359 = &sb; + StringBuilder_Free(_t359); return ""; } - endif129:; + endif122:; JsonParser_Advance(p); const char* result; - _t369 = &sb; - const char* _t370; - _t370 = StringBuilder_Build(_t369); - result = _t370; - _t371 = &sb; - StringBuilder_Free(_t371); + _t360 = &sb; + const char* _t361; + _t361 = StringBuilder_Build(_t360); + result = _t361; + _t362 = &sb; + StringBuilder_Free(_t362); return result; } JsonValue JsonParser_ParseNumber(JsonParser* p) { - int _t374; - int _t376; - int _t377; - int _t380; - int _t382; - int _t383; - int _t387; - unsigned int start; - unsigned int _t372; - _t372 = p->pos; - start = _t372; - int c0; + int _t365; + int _t367; + int _t368; + int _t371; int _t373; - _t373 = JsonParser_Peek(p); - c0 = _t373; - _t374 = (c0 == 45); - if (!_t374) goto endif131; + int _t374; + int _t378; + unsigned int start; + unsigned int _t363; + _t363 = p->pos; + start = _t363; + int c0; + int _t364; + _t364 = JsonParser_Peek(p); + c0 = _t364; + _t365 = (c0 == 45); + if (!_t365) goto endif124; { JsonParser_Advance(p); } - endif131:; - while132:; + endif124:; + while125:; + if (!1) goto wend126; + { + int c; + int _t366; + _t366 = JsonParser_Peek(p); + c = _t366; + bool __and_tmp_5; + _t367 = (c >= 48); + if (!_t367) goto else127; + _t368 = (c <= 57); + *(bool*)&__and_tmp_5 = _t368; + goto endif128; + else127:; + *(bool*)&__and_tmp_5 = 0; + endif128:; + bool _t369; + _t369 = *(bool*)&__and_tmp_5; + if (!_t369) goto else129; + { + JsonParser_Advance(p); + } + goto endif130; + else129:; + { + goto wend126; + } + endif130:; + } + goto while125; + wend126:; + int _t370; + _t370 = JsonParser_Peek(p); + _t371 = (_t370 == 46); + if (!_t371) goto endif132; + { + JsonParser_Advance(p); + while133:; if (!1) goto wend134; { int c; - int _t375; - _t375 = JsonParser_Peek(p); - c = _t375; - bool __and_tmp_5; - _t376 = (c >= 48); - if (!_t376) goto else135; - _t377 = (c <= 57); - *(bool*)&__and_tmp_5 = _t377; + int _t372; + _t372 = JsonParser_Peek(p); + c = _t372; + bool __and_tmp_6; + _t373 = (c >= 48); + if (!_t373) goto else135; + _t374 = (c <= 57); + *(bool*)&__and_tmp_6 = _t374; goto endif136; else135:; - *(bool*)&__and_tmp_5 = 0; + *(bool*)&__and_tmp_6 = 0; endif136:; - bool _t378; - _t378 = *(bool*)&__and_tmp_5; - if (!_t378) goto else137; + bool _t375; + _t375 = *(bool*)&__and_tmp_6; + if (!_t375) goto else137; { JsonParser_Advance(p); } @@ -2260,1098 +2296,1061 @@ JsonValue JsonParser_ParseNumber(JsonParser* p) { } endif138:; } - goto while132; + goto while133; wend134:; - int _t379; - _t379 = JsonParser_Peek(p); - _t380 = (_t379 == 46); - if (!_t380) goto endif140; - { - JsonParser_Advance(p); - while141:; - if (!1) goto wend143; - { - int c; - int _t381; - _t381 = JsonParser_Peek(p); - c = _t381; - bool __and_tmp_6; - _t382 = (c >= 48); - if (!_t382) goto else144; - _t383 = (c <= 57); - *(bool*)&__and_tmp_6 = _t383; - goto endif145; - else144:; - *(bool*)&__and_tmp_6 = 0; - endif145:; - bool _t384; - _t384 = *(bool*)&__and_tmp_6; - if (!_t384) goto else146; - { - JsonParser_Advance(p); } - goto endif147; - else146:; - { - goto wend143; - } - endif147:; - } - goto while141; - wend143:; - } - endif140:; + endif132:; const char* numStr; - const char* _t385; - _t385 = p->src; - unsigned int _t386; - _t386 = p->pos; - _t387 = _t386 - start; - const char* _t388; - _t388 = String_Slice(_t385, start, _t387); - numStr = _t388; + const char* _t376; + _t376 = p->src; + unsigned int _t377; + _t377 = p->pos; + _t378 = _t377 - start; + const char* _t379; + _t379 = String_Slice(_t376, start, _t378); + numStr = _t379; double n; - double _t389; - _t389 = String_ToFloat(numStr); - n = _t389; - JsonValue _t390; - _t390 = Json_Number(n); - return _t390; + double _t380; + _t380 = String_ToFloat(numStr); + n = _t380; + JsonValue _t381; + _t381 = Json_Number(n); + return _t381; } JsonValue JsonParser_ParseArray(JsonParser* p) { - int _t393; - int _t396; - void* _t398; - int _t400; - int _t401; + int _t384; + int _t387; + void* _t389; + int _t391; + int _t392; JsonParser_Advance(p); JsonValue arr; - JsonValue _t391; - _t391 = Json_Array(); - arr = _t391; + JsonValue _t382; + _t382 = Json_Array(); + arr = _t382; JsonParser_SkipWhitespace(p); - int _t392; - _t392 = JsonParser_Peek(p); - _t393 = (_t392 == 93); - if (!_t393) goto endif149; + int _t383; + _t383 = JsonParser_Peek(p); + _t384 = (_t383 == 93); + if (!_t384) goto endif140; { JsonParser_Advance(p); return arr; } - endif149:; - while150:; - if (!1) goto wend152; + endif140:; + while141:; + if (!1) goto wend142; { JsonParser_SkipWhitespace(p); JsonValue val; - JsonValue _t394; - _t394 = JsonParser_ParseValue(p); - val = _t394; - const char* _t395; - _t395 = p->error; - _t396 = (_t395 != ""); - if (!_t396) goto endif154; + JsonValue _t385; + _t385 = JsonParser_ParseValue(p); + val = _t385; + const char* _t386; + _t386 = p->error; + _t387 = (_t386 != ""); + if (!_t387) goto endif144; { - JsonValue _t397; - _t397 = Json_Null(); - return _t397; + JsonValue _t388; + _t388 = Json_Null(); + return _t388; } - endif154:; - _t398 = &arr; - Json_ArrayPush(_t398, val); + endif144:; + _t389 = &arr; + Json_ArrayPush(_t389, val); JsonParser_SkipWhitespace(p); int c; - int _t399; - _t399 = JsonParser_Peek(p); - c = _t399; - _t400 = (c == 93); - if (!_t400) goto endif156; + int _t390; + _t390 = JsonParser_Peek(p); + c = _t390; + _t391 = (c == 93); + if (!_t391) goto endif146; { JsonParser_Advance(p); return arr; } - endif156:; - _t401 = (c == 44); - if (!_t401) goto else157; + endif146:; + _t392 = (c == 44); + if (!_t392) goto else147; { JsonParser_Advance(p); } - goto endif158; - else157:; + goto endif148; + else147:; { p->error = "Expected ',' or ']' in array"; - JsonValue _t402; - _t402 = Json_Null(); - return _t402; + JsonValue _t393; + _t393 = Json_Null(); + return _t393; } - endif158:; + endif148:; } - goto while150; - wend152:; + goto while141; + wend142:; } JsonValue JsonParser_ParseObject(JsonParser* p) { - int _t405; - int _t408; + int _t396; + int _t399; + int _t402; + int _t406; + void* _t408; + int _t410; int _t411; - int _t415; - void* _t417; - int _t419; - int _t420; JsonParser_Advance(p); JsonValue obj; - JsonValue _t403; - _t403 = Json_Object(); - obj = _t403; + JsonValue _t394; + _t394 = Json_Object(); + obj = _t394; JsonParser_SkipWhitespace(p); - int _t404; - _t404 = JsonParser_Peek(p); - _t405 = (_t404 == 125); - if (!_t405) goto endif160; + int _t395; + _t395 = JsonParser_Peek(p); + _t396 = (_t395 == 125); + if (!_t396) goto endif150; + { + JsonParser_Advance(p); + return obj; + } + endif150:; + while151:; + if (!1) goto wend152; + { + JsonParser_SkipWhitespace(p); + const char* key; + const char* _t397; + _t397 = JsonParser_ParseString(p); + key = _t397; + const char* _t398; + _t398 = p->error; + _t399 = (_t398 != ""); + if (!_t399) goto endif154; + { + JsonValue _t400; + _t400 = Json_Null(); + return _t400; + } + endif154:; + JsonParser_SkipWhitespace(p); + int _t401; + _t401 = JsonParser_Peek(p); + _t402 = (_t401 != 58); + if (!_t402) goto endif156; + { + p->error = "Expected ':' after object key"; + JsonValue _t403; + _t403 = Json_Null(); + return _t403; + } + endif156:; + JsonParser_Advance(p); + JsonParser_SkipWhitespace(p); + JsonValue val; + JsonValue _t404; + _t404 = JsonParser_ParseValue(p); + val = _t404; + const char* _t405; + _t405 = p->error; + _t406 = (_t405 != ""); + if (!_t406) goto endif158; + { + JsonValue _t407; + _t407 = Json_Null(); + return _t407; + } + endif158:; + _t408 = &obj; + Json_ObjectSet(_t408, key, val); + JsonParser_SkipWhitespace(p); + int c; + int _t409; + _t409 = JsonParser_Peek(p); + c = _t409; + _t410 = (c == 125); + if (!_t410) goto endif160; { JsonParser_Advance(p); return obj; } endif160:; - while161:; - if (!1) goto wend163; + _t411 = (c == 44); + if (!_t411) goto else161; { - JsonParser_SkipWhitespace(p); - const char* key; - const char* _t406; - _t406 = JsonParser_ParseString(p); - key = _t406; - const char* _t407; - _t407 = p->error; - _t408 = (_t407 != ""); - if (!_t408) goto endif165; - { - JsonValue _t409; - _t409 = Json_Null(); - return _t409; + JsonParser_Advance(p); } - endif165:; - JsonParser_SkipWhitespace(p); - int _t410; - _t410 = JsonParser_Peek(p); - _t411 = (_t410 != 58); - if (!_t411) goto endif167; + goto endif162; + else161:; { - p->error = "Expected ':' after object key"; + p->error = "Expected ',' or '}' in object"; JsonValue _t412; _t412 = Json_Null(); return _t412; } - endif167:; - JsonParser_Advance(p); - JsonParser_SkipWhitespace(p); - JsonValue val; - JsonValue _t413; - _t413 = JsonParser_ParseValue(p); - val = _t413; - const char* _t414; - _t414 = p->error; - _t415 = (_t414 != ""); - if (!_t415) goto endif169; - { - JsonValue _t416; - _t416 = Json_Null(); - return _t416; + endif162:; } - endif169:; - _t417 = &obj; - Json_ObjectSet(_t417, key, val); - JsonParser_SkipWhitespace(p); - int c; - int _t418; - _t418 = JsonParser_Peek(p); - c = _t418; - _t419 = (c == 125); - if (!_t419) goto endif171; - { - JsonParser_Advance(p); - return obj; - } - endif171:; - _t420 = (c == 44); - if (!_t420) goto else172; - { - JsonParser_Advance(p); - } - goto endif173; - else172:; - { - p->error = "Expected ',' or '}' in object"; - JsonValue _t421; - _t421 = Json_Null(); - return _t421; - } - endif173:; - } - goto while161; - wend163:; + goto while151; + wend152:; } JsonValue JsonParser_ParseValue(JsonParser* p) { + int _t414; + int _t416; + int _t419; + int _t421; int _t423; - int _t425; - int _t428; - int _t430; - int _t432; + int _t427; + int _t431; + int _t435; int _t436; - int _t440; - int _t444; - int _t445; - int _t447; + int _t438; JsonParser_SkipWhitespace(p); int c; - int _t422; - _t422 = JsonParser_Peek(p); - c = _t422; - _t423 = (c == 0); - if (!_t423) goto endif175; + int _t413; + _t413 = JsonParser_Peek(p); + c = _t413; + _t414 = (c == 0); + if (!_t414) goto endif164; { p->error = "Unexpected end of input"; - JsonValue _t424; - _t424 = Json_Null(); - return _t424; + JsonValue _t415; + _t415 = Json_Null(); + return _t415; } - endif175:; - _t425 = (c == 34); - if (!_t425) goto endif177; + endif164:; + _t416 = (c == 34); + if (!_t416) goto endif166; { - const char* _t426; - _t426 = JsonParser_ParseString(p); - JsonValue _t427; - _t427 = Json_String(_t426); - return _t427; + const char* _t417; + _t417 = JsonParser_ParseString(p); + JsonValue _t418; + _t418 = Json_String(_t417); + return _t418; } - endif177:; - _t428 = (c == 123); - if (!_t428) goto endif179; + endif166:; + _t419 = (c == 123); + if (!_t419) goto endif168; + { + JsonValue _t420; + _t420 = JsonParser_ParseObject(p); + return _t420; + } + endif168:; + _t421 = (c == 91); + if (!_t421) goto endif170; + { + JsonValue _t422; + _t422 = JsonParser_ParseArray(p); + return _t422; + } + endif170:; + _t423 = (c == 116); + if (!_t423) goto endif172; + { + bool _t424; + _t424 = JsonParser_Match(p, "true"); + if (!_t424) goto endif174; + { + JsonValue _t425; + _t425 = Json_Bool(1); + return _t425; + } + endif174:; + p->error = "Expected 'true'"; + JsonValue _t426; + _t426 = Json_Null(); + return _t426; + } + endif172:; + _t427 = (c == 102); + if (!_t427) goto endif176; + { + bool _t428; + _t428 = JsonParser_Match(p, "false"); + if (!_t428) goto endif178; { JsonValue _t429; - _t429 = JsonParser_ParseObject(p); + _t429 = Json_Bool(0); return _t429; } - endif179:; - _t430 = (c == 91); - if (!_t430) goto endif181; - { - JsonValue _t431; - _t431 = JsonParser_ParseArray(p); - return _t431; + endif178:; + p->error = "Expected 'false'"; + JsonValue _t430; + _t430 = Json_Null(); + return _t430; } - endif181:; - _t432 = (c == 116); - if (!_t432) goto endif183; + endif176:; + _t431 = (c == 110); + if (!_t431) goto endif180; { - bool _t433; - _t433 = JsonParser_Match(p, "true"); - if (!_t433) goto endif185; + bool _t432; + _t432 = JsonParser_Match(p, "null"); + if (!_t432) goto endif182; { + JsonValue _t433; + _t433 = Json_Null(); + return _t433; + } + endif182:; + p->error = "Expected 'null'"; JsonValue _t434; - _t434 = Json_Bool(1); + _t434 = Json_Null(); return _t434; } - endif185:; - p->error = "Expected 'true'"; - JsonValue _t435; - _t435 = Json_Null(); - return _t435; - } - endif183:; - _t436 = (c == 102); - if (!_t436) goto endif187; - { - bool _t437; - _t437 = JsonParser_Match(p, "false"); - if (!_t437) goto endif189; - { - JsonValue _t438; - _t438 = Json_Bool(0); - return _t438; - } - endif189:; - p->error = "Expected 'false'"; - JsonValue _t439; - _t439 = Json_Null(); - return _t439; - } - endif187:; - _t440 = (c == 110); - if (!_t440) goto endif191; - { - bool _t441; - _t441 = JsonParser_Match(p, "null"); - if (!_t441) goto endif193; - { - JsonValue _t442; - _t442 = Json_Null(); - return _t442; - } - endif193:; - p->error = "Expected 'null'"; - JsonValue _t443; - _t443 = Json_Null(); - return _t443; - } - endif191:; + endif180:; bool __or_tmp_7; bool __and_tmp_8; - _t444 = (c >= 48); - if (!_t444) goto else194; - _t445 = (c <= 57); - *(bool*)&__and_tmp_8 = _t445; - goto endif195; - else194:; + _t435 = (c >= 48); + if (!_t435) goto else183; + _t436 = (c <= 57); + *(bool*)&__and_tmp_8 = _t436; + goto endif184; + else183:; *(bool*)&__and_tmp_8 = 0; - endif195:; - bool _t446; - _t446 = *(bool*)&__and_tmp_8; - if (!_t446) goto else196; + endif184:; + bool _t437; + _t437 = *(bool*)&__and_tmp_8; + if (!_t437) goto else185; *(bool*)&__or_tmp_7 = 1; - goto endif197; - else196:; - _t447 = (c == 45); - *(bool*)&__or_tmp_7 = _t447; - endif197:; - bool _t448; - _t448 = *(bool*)&__or_tmp_7; - if (!_t448) goto endif199; + goto endif186; + else185:; + _t438 = (c == 45); + *(bool*)&__or_tmp_7 = _t438; + endif186:; + bool _t439; + _t439 = *(bool*)&__or_tmp_7; + if (!_t439) goto endif188; { - JsonValue _t449; - _t449 = JsonParser_ParseNumber(p); - return _t449; + JsonValue _t440; + _t440 = JsonParser_ParseNumber(p); + return _t440; } - endif199:; + endif188:; p->error = "Unexpected character"; - JsonValue _t450; - _t450 = Json_Null(); - return _t450; + JsonValue _t441; + _t441 = Json_Null(); + return _t441; } JsonValue Json_Parse(const char* s) { - JsonParser _t452; - void* _t453; - void* _t455; - int _t457; - int _t460; + JsonParser _t443; + void* _t444; + void* _t446; + int _t448; + int _t451; JsonParser p; - unsigned int _t451; - _t451 = String_Len(s); - _t452 = (JsonParser){.src = s, .pos = 0, .len = _t451, .error = ""}; - p = _t452; + unsigned int _t442; + _t442 = String_Len(s); + _t443 = (JsonParser){.src = s, .pos = 0, .len = _t442, .error = ""}; + p = _t443; JsonValue result; - _t453 = &p; - JsonValue _t454; - _t454 = JsonParser_ParseValue(_t453); - result = _t454; - _t455 = &p; - JsonParser_SkipWhitespace(_t455); + _t444 = &p; + JsonValue _t445; + _t445 = JsonParser_ParseValue(_t444); + result = _t445; + _t446 = &p; + JsonParser_SkipWhitespace(_t446); bool __and_tmp_9; - const char* _t456; - _t456 = p.error; - _t457 = (_t456 == ""); - if (!_t457) goto else200; - unsigned int _t458; - _t458 = p.pos; - unsigned int _t459; - _t459 = p.len; - _t460 = (_t458 != _t459); - *(bool*)&__and_tmp_9 = _t460; - goto endif201; - else200:; + const char* _t447; + _t447 = p.error; + _t448 = (_t447 == ""); + if (!_t448) goto else189; + unsigned int _t449; + _t449 = p.pos; + unsigned int _t450; + _t450 = p.len; + _t451 = (_t449 != _t450); + *(bool*)&__and_tmp_9 = _t451; + goto endif190; + else189:; *(bool*)&__and_tmp_9 = 0; - endif201:; - bool _t461; - _t461 = *(bool*)&__and_tmp_9; - if (!_t461) goto endif203; + endif190:; + bool _t452; + _t452 = *(bool*)&__and_tmp_9; + if (!_t452) goto endif192; { p.error = "Trailing data after JSON value"; - JsonValue _t462; - _t462 = Json_Null(); - return _t462; + JsonValue _t453; + _t453 = Json_Null(); + return _t453; } - endif203:; + endif192:; return result; } void Json_StringifyImpl(StringBuilder* sb, JsonValue v) { - int _t464; - int _t466; - int _t469; + int _t455; + int _t457; + int _t460; + int _t463; + char _t464; + char _t466; + int _t468; + char _t469; + int _t471; int _t472; char _t473; - char _t475; - int _t477; - char _t478; - int _t480; - int _t481; - char _t482; - int _t485; - char _t486; - int _t488; + int _t476; + char _t477; + int _t479; + char _t480; + int _t482; + int _t483; + char _t484; + char _t485; + char _t488; char _t489; - int _t491; int _t492; char _t493; - char _t494; - char _t497; - char _t498; - int _t501; - char _t502; - int _t463; - _t463 = v.tag; - _t464 = (_t463 == JsonTagNull); - if (!_t464) goto endif205; + int _t454; + _t454 = v.tag; + _t455 = (_t454 == JsonTagNull); + if (!_t455) goto endif194; { StringBuilder_Append(sb, "null"); return; } - endif205:; - int _t465; - _t465 = v.tag; - _t466 = (_t465 == JsonTagBool); - if (!_t466) goto endif207; + endif194:; + int _t456; + _t456 = v.tag; + _t457 = (_t456 == JsonTagBool); + if (!_t457) goto endif196; { - bool _t467; - _t467 = v.boolVal; - if (!_t467) goto else208; + bool _t458; + _t458 = v.boolVal; + if (!_t458) goto else197; { StringBuilder_Append(sb, "true"); } - goto endif209; - else208:; + goto endif198; + else197:; { StringBuilder_Append(sb, "false"); } - endif209:; + endif198:; return; } - endif207:; - int _t468; - _t468 = v.tag; - _t469 = (_t468 == JsonTagNumber); - if (!_t469) goto endif211; + endif196:; + int _t459; + _t459 = v.tag; + _t460 = (_t459 == JsonTagNumber); + if (!_t460) goto endif200; { - double _t470; - _t470 = v.numVal; - StringBuilder_AppendFloat(sb, _t470); + double _t461; + _t461 = v.numVal; + StringBuilder_AppendFloat(sb, _t461); return; } - endif211:; - int _t471; - _t471 = v.tag; - _t472 = (_t471 == JsonTagString); - if (!_t472) goto endif213; + endif200:; + int _t462; + _t462 = v.tag; + _t463 = (_t462 == JsonTagString); + if (!_t463) goto endif202; { - _t473 = (char)34; + _t464 = (char)34; + StringBuilder_AppendChar(sb, _t464); + const char* _t465; + _t465 = v.strVal; + StringBuilder_Append(sb, _t465); + _t466 = (char)34; + StringBuilder_AppendChar(sb, _t466); + return; + } + endif202:; + int _t467; + _t467 = v.tag; + _t468 = (_t467 == JsonTagArray); + if (!_t468) goto endif204; + { + _t469 = (char)91; + StringBuilder_AppendChar(sb, _t469); + unsigned int i; + i = 0; + while205:; + unsigned int _t470; + _t470 = v.arrLen; + _t471 = (i < _t470); + if (!_t471) goto wend206; + { + _t472 = (i > 0); + if (!_t472) goto endif208; + { + _t473 = (char)44; StringBuilder_AppendChar(sb, _t473); - const char* _t474; - _t474 = v.strVal; - StringBuilder_Append(sb, _t474); - _t475 = (char)34; - StringBuilder_AppendChar(sb, _t475); + } + endif208:; + JsonValue* _t474; + _t474 = v.arrData; + JsonValue _t475; + _t475 = _t474[i]; + Json_StringifyImpl(sb, _t475); + _t476 = i + 1; + i = _t476; + } + goto while205; + wend206:; + _t477 = (char)93; + StringBuilder_AppendChar(sb, _t477); return; } - endif213:; - int _t476; - _t476 = v.tag; - _t477 = (_t476 == JsonTagArray); - if (!_t477) goto endif215; + endif204:; + int _t478; + _t478 = v.tag; + _t479 = (_t478 == JsonTagObject); + if (!_t479) goto endif210; { - _t478 = (char)91; - StringBuilder_AppendChar(sb, _t478); + _t480 = (char)123; + StringBuilder_AppendChar(sb, _t480); unsigned int i; i = 0; - while216:; - unsigned int _t479; - _t479 = v.arrLen; - _t480 = (i < _t479); - if (!_t480) goto wend218; + while211:; + unsigned int _t481; + _t481 = v.objLen; + _t482 = (i < _t481); + if (!_t482) goto wend212; { - _t481 = (i > 0); - if (!_t481) goto endif220; + _t483 = (i > 0); + if (!_t483) goto endif214; { - _t482 = (char)44; - StringBuilder_AppendChar(sb, _t482); + _t484 = (char)44; + StringBuilder_AppendChar(sb, _t484); } - endif220:; - JsonValue* _t483; - _t483 = v.arrData; - JsonValue _t484; - _t484 = _t483[i]; - Json_StringifyImpl(sb, _t484); - _t485 = i + 1; - i = _t485; - } - goto while216; - wend218:; - _t486 = (char)93; - StringBuilder_AppendChar(sb, _t486); - return; - } - endif215:; - int _t487; - _t487 = v.tag; - _t488 = (_t487 == JsonTagObject); - if (!_t488) goto endif222; - { - _t489 = (char)123; + endif214:; + _t485 = (char)34; + StringBuilder_AppendChar(sb, _t485); + const char** _t486; + _t486 = v.objKeys; + const char* _t487; + _t487 = _t486[i]; + StringBuilder_Append(sb, _t487); + _t488 = (char)34; + StringBuilder_AppendChar(sb, _t488); + _t489 = (char)58; StringBuilder_AppendChar(sb, _t489); - unsigned int i; - i = 0; - while223:; - unsigned int _t490; - _t490 = v.objLen; - _t491 = (i < _t490); - if (!_t491) goto wend225; - { - _t492 = (i > 0); - if (!_t492) goto endif227; - { - _t493 = (char)44; + JsonValue* _t490; + _t490 = v.objValues; + JsonValue _t491; + _t491 = _t490[i]; + Json_StringifyImpl(sb, _t491); + _t492 = i + 1; + i = _t492; + } + goto while211; + wend212:; + _t493 = (char)125; StringBuilder_AppendChar(sb, _t493); - } - endif227:; - _t494 = (char)34; - StringBuilder_AppendChar(sb, _t494); - const char** _t495; - _t495 = v.objKeys; - const char* _t496; - _t496 = _t495[i]; - StringBuilder_Append(sb, _t496); - _t497 = (char)34; - StringBuilder_AppendChar(sb, _t497); - _t498 = (char)58; - StringBuilder_AppendChar(sb, _t498); - JsonValue* _t499; - _t499 = v.objValues; - JsonValue _t500; - _t500 = _t499[i]; - Json_StringifyImpl(sb, _t500); - _t501 = i + 1; - i = _t501; - } - goto while223; - wend225:; - _t502 = (char)125; - StringBuilder_AppendChar(sb, _t502); return; } - endif222:; + endif210:; } const char* Json_Stringify(JsonValue v) { - void* _t504; - void* _t505; + void* _t495; + void* _t496; StringBuilder sb; - StringBuilder _t503; - _t503 = StringBuilder_New(); - sb = _t503; - _t504 = &sb; - Json_StringifyImpl(_t504, v); - _t505 = &sb; - const char* _t506; - _t506 = StringBuilder_Build(_t505); - return _t506; + StringBuilder _t494; + _t494 = StringBuilder_New(); + sb = _t494; + _t495 = &sb; + Json_StringifyImpl(_t495, v); + _t496 = &sb; + const char* _t497; + _t497 = StringBuilder_Build(_t496); + return _t497; } unsigned int String_Len(const char* s) { - unsigned int _t507; - _t507 = bux_strlen(s); - return _t507; + unsigned int _t498; + _t498 = bux_strlen(s); + return _t498; } bool String_IsNull(const char* s) { - int _t509; - int _t508; - _t508 = bux_str_is_null(s); - _t509 = (_t508 != 0); - return _t509; + int _t500; + int _t499; + _t499 = bux_str_is_null(s); + _t500 = (_t499 != 0); + return _t500; } bool String_Eq(const char* a, const char* b) { - int _t511; - int _t510; - _t510 = bux_strcmp(a, b); - _t511 = (_t510 == 0); - return _t511; + int _t502; + int _t501; + _t501 = bux_strcmp(a, b); + _t502 = (_t501 == 0); + return _t502; } const char* String_Concat(const char* a, const char* b) { - int _t514; - int _t515; - char* _t517; + int _t505; + int _t506; + char* _t508; unsigned int len_a; - unsigned int _t512; - _t512 = bux_strlen(a); - len_a = _t512; + unsigned int _t503; + _t503 = bux_strlen(a); + len_a = _t503; unsigned int len_b; - unsigned int _t513; - _t513 = bux_strlen(b); - len_b = _t513; + unsigned int _t504; + _t504 = bux_strlen(b); + len_b = _t504; unsigned int total; - _t514 = len_a + len_b; - _t515 = _t514 + 1; - total = _t515; + _t505 = len_a + len_b; + _t506 = _t505 + 1; + total = _t506; char* buf; - void* _t516; - _t516 = bux_alloc(total); - _t517 = (char*)_t516; - buf = _t517; + void* _t507; + _t507 = bux_alloc(total); + _t508 = (char*)_t507; + buf = _t508; bux_strcpy(buf, a); bux_strcat(buf, b); return buf; } const char* String_Copy(const char* s) { - int _t519; - char* _t521; + int _t510; + char* _t512; unsigned int len; - unsigned int _t518; - _t518 = bux_strlen(s); - len = _t518; + unsigned int _t509; + _t509 = bux_strlen(s); + len = _t509; char* buf; - _t519 = len + 1; - void* _t520; - _t520 = bux_alloc(_t519); - _t521 = (char*)_t520; - buf = _t521; + _t510 = len + 1; + void* _t511; + _t511 = bux_alloc(_t510); + _t512 = (char*)_t511; + buf = _t512; bux_strcpy(buf, s); return buf; } bool String_StartsWith(const char* s, const char* prefix) { - int _t524; - int _t526; + int _t515; + int _t517; unsigned int s_len; - unsigned int _t522; - _t522 = bux_strlen(s); - s_len = _t522; + unsigned int _t513; + _t513 = bux_strlen(s); + s_len = _t513; unsigned int p_len; - unsigned int _t523; - _t523 = bux_strlen(prefix); - p_len = _t523; - _t524 = (p_len > s_len); - if (!_t524) goto endif229; + unsigned int _t514; + _t514 = bux_strlen(prefix); + p_len = _t514; + _t515 = (p_len > s_len); + if (!_t515) goto endif216; { return 0; } - endif229:; + endif216:; int r; - int _t525; - _t525 = bux_strncmp(s, prefix, p_len); - r = _t525; - _t526 = (r == 0); - return _t526; + int _t516; + _t516 = bux_strncmp(s, prefix, p_len); + r = _t516; + _t517 = (r == 0); + return _t517; } bool String_EndsWith(const char* s, const char* suffix) { - int _t529; - int _t530; - int _t533; + int _t520; + int _t521; + int _t524; unsigned int s_len; - unsigned int _t527; - _t527 = bux_strlen(s); - s_len = _t527; + unsigned int _t518; + _t518 = bux_strlen(s); + s_len = _t518; unsigned int suf_len; - unsigned int _t528; - _t528 = bux_strlen(suffix); - suf_len = _t528; - _t529 = (suf_len > s_len); - if (!_t529) goto endif231; + unsigned int _t519; + _t519 = bux_strlen(suffix); + suf_len = _t519; + _t520 = (suf_len > s_len); + if (!_t520) goto endif218; { return 0; } - endif231:; + endif218:; unsigned int start; - _t530 = s_len - suf_len; - start = _t530; + _t521 = s_len - suf_len; + start = _t521; const char* tail; - const char* _t531; - _t531 = bux_str_slice(s, start, suf_len); - tail = _t531; + const char* _t522; + _t522 = bux_str_slice(s, start, suf_len); + tail = _t522; bool eq; - int _t532; - _t532 = bux_strcmp(tail, suffix); - _t533 = (_t532 == 0); - eq = _t533; + int _t523; + _t523 = bux_strcmp(tail, suffix); + _t524 = (_t523 == 0); + eq = _t524; return eq; } bool String_Contains(const char* s, const char* substr) { - int _t535; + int _t526; int r; - int _t534; - _t534 = bux_str_contains(s, substr); - r = _t534; - _t535 = (r != 0); - return _t535; + int _t525; + _t525 = bux_str_contains(s, substr); + r = _t525; + _t526 = (r != 0); + return _t526; } const char* String_Slice(const char* s, unsigned int start, unsigned int len) { - const char* _t536; - _t536 = bux_str_slice(s, start, len); - return _t536; + const char* _t527; + _t527 = bux_str_slice(s, start, len); + return _t527; } const char* String_Trim(const char* s) { - const char* _t537; - _t537 = bux_str_trim(s); - return _t537; + const char* _t528; + _t528 = bux_str_trim(s); + return _t528; } const char* String_TrimLeft(const char* s) { - const char* _t538; - _t538 = bux_str_trim_left(s); - return _t538; + const char* _t529; + _t529 = bux_str_trim_left(s); + return _t529; } const char* String_TrimRight(const char* s) { - const char* _t539; - _t539 = bux_str_trim_right(s); - return _t539; + const char* _t530; + _t530 = bux_str_trim_right(s); + return _t530; } const char* String_FromInt(int64_t n) { - const char* _t540; - _t540 = bux_int_to_str(n); - return _t540; + const char* _t531; + _t531 = bux_int_to_str(n); + return _t531; } int64_t String_ToInt(const char* s) { - int64_t _t541; - _t541 = bux_str_to_int(s); - return _t541; + int64_t _t532; + _t532 = bux_str_to_int(s); + return _t532; } StringBuilder StringBuilder_New(void) { - StringBuilder _t543; - void* _t542; - _t542 = bux_sb_new(64); - _t543 = (StringBuilder){.handle = _t542}; - return _t543; + StringBuilder _t534; + void* _t533; + _t533 = bux_sb_new(64); + _t534 = (StringBuilder){.handle = _t533}; + return _t534; } StringBuilder StringBuilder_NewCap(unsigned int cap) { - StringBuilder _t545; - void* _t544; - _t544 = bux_sb_new(cap); - _t545 = (StringBuilder){.handle = _t544}; - return _t545; + StringBuilder _t536; + void* _t535; + _t535 = bux_sb_new(cap); + _t536 = (StringBuilder){.handle = _t535}; + return _t536; } void StringBuilder_Append(StringBuilder* sb, const char* s) { - void* _t546; - _t546 = sb->handle; - bux_sb_append(_t546, s); + void* _t537; + _t537 = sb->handle; + bux_sb_append(_t537, s); } void StringBuilder_AppendInt(StringBuilder* sb, int64_t n) { - void* _t547; - _t547 = sb->handle; - bux_sb_append_int(_t547, n); + void* _t538; + _t538 = sb->handle; + bux_sb_append_int(_t538, n); } void StringBuilder_AppendFloat(StringBuilder* sb, double f) { - void* _t548; - _t548 = sb->handle; - bux_sb_append_float(_t548, f); + void* _t539; + _t539 = sb->handle; + bux_sb_append_float(_t539, f); } void StringBuilder_AppendChar(StringBuilder* sb, char c) { - void* _t549; - _t549 = sb->handle; - bux_sb_append_char(_t549, c); + void* _t540; + _t540 = sb->handle; + bux_sb_append_char(_t540, c); } const char* StringBuilder_Build(StringBuilder* sb) { - void* _t550; - _t550 = sb->handle; - const char* _t551; - _t551 = bux_sb_build(_t550); - return _t551; + void* _t541; + _t541 = sb->handle; + const char* _t542; + _t542 = bux_sb_build(_t541); + return _t542; } void StringBuilder_Free(StringBuilder* sb) { - void* _t552; - _t552 = sb->handle; - bux_sb_free(_t552); + void* _t543; + _t543 = sb->handle; + bux_sb_free(_t543); } unsigned int String_SplitCount(const char* s, const char* delim) { - unsigned int _t553; - _t553 = bux_str_split_count(s, delim); - return _t553; + unsigned int _t544; + _t544 = bux_str_split_count(s, delim); + return _t544; } const char* String_SplitPart(const char* s, const char* delim, unsigned int index) { - const char* _t554; - _t554 = bux_str_split_part(s, delim, index); - return _t554; + const char* _t545; + _t545 = bux_str_split_part(s, delim, index); + return _t545; } const char* String_Join2(const char* a, const char* b, const char* sep) { - const char* _t555; - _t555 = bux_str_join2(a, b, sep); - return _t555; + const char* _t546; + _t546 = bux_str_join2(a, b, sep); + return _t546; } const char* String_Chars(const char* s, unsigned int index) { - const char* _t556; - _t556 = bux_str_slice(s, index, 1); - return _t556; + const char* _t547; + _t547 = bux_str_slice(s, index, 1); + return _t547; } const char* String_Find(const char* haystack, const char* needle) { - const char* _t557; - _t557 = bux_strstr(haystack, needle); - return _t557; + const char* _t548; + _t548 = bux_strstr(haystack, needle); + return _t548; } unsigned int String_Offset(const char* pos, const char* base) { - unsigned int _t558; - _t558 = bux_str_offset(pos, base); - return _t558; + unsigned int _t549; + _t549 = bux_str_offset(pos, base); + return _t549; } const char* String_Replace(const char* s, const char* old, const char* new) { - int _t564; - int _t566; - int _t567; + int _t555; + int _t557; + int _t558; const char* pos; - const char* _t559; - _t559 = bux_strstr(s, old); - pos = _t559; - bool _t560; - _t560 = String_IsNull(pos); - if (!_t560) goto endif233; + const char* _t550; + _t550 = bux_strstr(s, old); + pos = _t550; + bool _t551; + _t551 = String_IsNull(pos); + if (!_t551) goto endif220; { return s; } - endif233:; + endif220:; unsigned int oldLen; - unsigned int _t561; - _t561 = bux_strlen(old); - oldLen = _t561; + unsigned int _t552; + _t552 = bux_strlen(old); + oldLen = _t552; unsigned int prefixLen; - unsigned int _t562; - _t562 = String_Offset(pos, s); - prefixLen = _t562; + unsigned int _t553; + _t553 = String_Offset(pos, s); + prefixLen = _t553; const char* prefix; - const char* _t563; - _t563 = bux_str_slice(s, 0, prefixLen); - prefix = _t563; + const char* _t554; + _t554 = bux_str_slice(s, 0, prefixLen); + prefix = _t554; const char* suffix; - _t564 = prefixLen + oldLen; - unsigned int _t565; - _t565 = bux_strlen(s); - _t566 = _t565 - prefixLen; - _t567 = _t566 - oldLen; - const char* _t568; - _t568 = bux_str_slice(s, _t564, _t567); - suffix = _t568; + _t555 = prefixLen + oldLen; + unsigned int _t556; + _t556 = bux_strlen(s); + _t557 = _t556 - prefixLen; + _t558 = _t557 - oldLen; + const char* _t559; + _t559 = bux_str_slice(s, _t555, _t558); + suffix = _t559; const char* temp; - const char* _t569; - _t569 = String_Concat(prefix, new); - temp = _t569; + const char* _t560; + _t560 = String_Concat(prefix, new); + temp = _t560; const char* result; - const char* _t570; - _t570 = String_Concat(temp, suffix); - result = _t570; + const char* _t561; + _t561 = String_Concat(temp, suffix); + result = _t561; return result; } double String_ToFloat(const char* s) { - double _t571; - _t571 = bux_str_to_float(s); - return _t571; + double _t562; + _t562 = bux_str_to_float(s); + return _t562; } const char* String_FromBool(bool b) { - if (!b) goto endif235; + if (!b) goto endif222; { return "true"; } - endif235:; + endif222:; return "false"; } const char* String_FromFloat(double f) { - const char* _t572; - _t572 = bux_float_to_string(f); - return _t572; + const char* _t563; + _t563 = bux_float_to_string(f); + return _t563; } const char* String_Format1(const char* pattern, const char* a0) { - const char* _t573; - _t573 = bux_str_format(pattern, a0, "", "", "", "", "", "", ""); - return _t573; + const char* _t564; + _t564 = bux_str_format(pattern, a0, "", "", "", "", "", "", ""); + return _t564; } const char* String_Format2(const char* pattern, const char* a0, const char* a1) { - const char* _t574; - _t574 = bux_str_format(pattern, a0, a1, "", "", "", "", "", ""); - return _t574; + const char* _t565; + _t565 = bux_str_format(pattern, a0, a1, "", "", "", "", "", ""); + return _t565; } const char* String_Format3(const char* pattern, const char* a0, const char* a1, const char* a2) { - const char* _t575; - _t575 = bux_str_format(pattern, a0, a1, a2, "", "", "", "", ""); - return _t575; + const char* _t566; + _t566 = bux_str_format(pattern, a0, a1, a2, "", "", "", "", ""); + return _t566; } void Channel_SendInt(Channel_int* ch, int value) { - void* _t577; - void* _t578; - void* _t576; - _t576 = ch->handle; - _t577 = &value; - _t578 = (void*)_t577; - bux_channel_send(_t576, _t578); + void* _t568; + void* _t569; + void* _t567; + _t567 = ch->handle; + _t568 = &value; + _t569 = (void*)_t568; + bux_channel_send(_t567, _t569); } int Channel_RecvInt(Channel_int* ch) { - void* _t580; - void* _t581; + void* _t571; + void* _t572; int result; result = 0; - void* _t579; - _t579 = ch->handle; - _t580 = &result; - _t581 = (void*)_t580; - bux_channel_recv(_t579, _t581); + void* _t570; + _t570 = ch->handle; + _t571 = &result; + _t572 = (void*)_t571; + bux_channel_recv(_t570, _t572); return result; } void Channel_SendFloat64(Channel_float64* ch, double value) { - void* _t583; - void* _t584; - void* _t582; - _t582 = ch->handle; - _t583 = &value; - _t584 = (void*)_t583; - bux_channel_send(_t582, _t584); + void* _t574; + void* _t575; + void* _t573; + _t573 = ch->handle; + _t574 = &value; + _t575 = (void*)_t574; + bux_channel_send(_t573, _t575); } double Channel_RecvFloat64(Channel_float64* ch) { - void* _t586; - void* _t587; + void* _t577; + void* _t578; double result; result = 0.0; - void* _t585; - _t585 = ch->handle; - _t586 = &result; - _t587 = (void*)_t586; - bux_channel_recv(_t585, _t587); + void* _t576; + _t576 = ch->handle; + _t577 = &result; + _t578 = (void*)_t577; + bux_channel_recv(_t576, _t578); return result; } const char* Hash_Sha1(const char* data) { - int _t589; + int _t580; int len; - unsigned int _t588; - _t588 = String_Len(data); - _t589 = (int)_t588; - len = _t589; + unsigned int _t579; + _t579 = String_Len(data); + _t580 = (int)_t579; + len = _t580; void* buf; - void* _t590; - _t590 = Alloc(20); - buf = _t590; + void* _t581; + _t581 = Alloc(20); + buf = _t581; bux_sha1(data, len, buf); const char* result; - const char* _t591; - _t591 = bux_bytes_to_hex(buf, 20); - result = _t591; + const char* _t582; + _t582 = bux_bytes_to_hex(buf, 20); + result = _t582; Free(buf); return result; } const char* Hash_Sha256(const char* data) { - int _t593; + int _t584; int len; - unsigned int _t592; - _t592 = String_Len(data); - _t593 = (int)_t592; - len = _t593; + unsigned int _t583; + _t583 = String_Len(data); + _t584 = (int)_t583; + len = _t584; void* buf; - void* _t594; - _t594 = Alloc(32); - buf = _t594; + void* _t585; + _t585 = Alloc(32); + buf = _t585; bux_sha256(data, len, buf); const char* result; - const char* _t595; - _t595 = bux_bytes_to_hex(buf, 32); - result = _t595; + const char* _t586; + _t586 = bux_bytes_to_hex(buf, 32); + result = _t586; Free(buf); return result; } const char* Hash_Sha384(const char* data) { - int _t597; + int _t588; int len; - unsigned int _t596; - _t596 = String_Len(data); - _t597 = (int)_t596; - len = _t597; + unsigned int _t587; + _t587 = String_Len(data); + _t588 = (int)_t587; + len = _t588; void* buf; - void* _t598; - _t598 = Alloc(48); - buf = _t598; + void* _t589; + _t589 = Alloc(48); + buf = _t589; bux_sha384(data, len, buf); const char* result; - const char* _t599; - _t599 = bux_bytes_to_hex(buf, 48); - result = _t599; + const char* _t590; + _t590 = bux_bytes_to_hex(buf, 48); + result = _t590; Free(buf); return result; } const char* Hash_Sha512(const char* data) { - int _t601; + int _t592; int len; - unsigned int _t600; - _t600 = String_Len(data); - _t601 = (int)_t600; - len = _t601; + unsigned int _t591; + _t591 = String_Len(data); + _t592 = (int)_t591; + len = _t592; void* buf; - void* _t602; - _t602 = Alloc(64); - buf = _t602; + void* _t593; + _t593 = Alloc(64); + buf = _t593; bux_sha512(data, len, buf); const char* result; - const char* _t603; - _t603 = bux_bytes_to_hex(buf, 64); - result = _t603; + const char* _t594; + _t594 = bux_bytes_to_hex(buf, 64); + result = _t594; Free(buf); return result; } void Hash_Sha256Raw(const char* data, void* out) { - int _t605; - unsigned int _t604; - _t604 = String_Len(data); - _t605 = (int)_t604; - bux_sha256(data, _t605, out); + int _t596; + unsigned int _t595; + _t595 = String_Len(data); + _t596 = (int)_t595; + bux_sha256(data, _t596, out); } void Hash_Sha384Raw(const char* data, void* out) { - int _t607; - unsigned int _t606; - _t606 = String_Len(data); - _t607 = (int)_t606; - bux_sha384(data, _t607, out); + int _t598; + unsigned int _t597; + _t597 = String_Len(data); + _t598 = (int)_t597; + bux_sha384(data, _t598, out); } void Hash_Sha512Raw(const char* data, void* out) { - int _t609; - unsigned int _t608; - _t608 = String_Len(data); - _t609 = (int)_t608; - bux_sha512(data, _t609, out); + int _t600; + unsigned int _t599; + _t599 = String_Len(data); + _t600 = (int)_t599; + bux_sha512(data, _t600, out); } int Hash_Sha1Size(void) { @@ -3371,1493 +3370,1493 @@ int Hash_Sha512Size(void) { } const char* Base64_Encode(const char* s) { - int _t611; - unsigned int _t610; - _t610 = String_Len(s); - _t611 = (int)_t610; - const char* _t612; - _t612 = bux_base64_encode(s, _t611); - return _t612; + int _t602; + unsigned int _t601; + _t601 = String_Len(s); + _t602 = (int)_t601; + const char* _t603; + _t603 = bux_base64_encode(s, _t602); + return _t603; } const char* Base64_Decode(const char* s) { - int _t614; - void* _t615; + int _t605; + void* _t606; int outlen; outlen = 0; - unsigned int _t613; - _t613 = String_Len(s); - _t614 = (int)_t613; - _t615 = &outlen; - const char* _t616; - _t616 = bux_base64_decode(s, _t614, _t615); - return _t616; + unsigned int _t604; + _t604 = String_Len(s); + _t605 = (int)_t604; + _t606 = &outlen; + const char* _t607; + _t607 = bux_base64_decode(s, _t605, _t606); + return _t607; } const char* Base64URL_Encode(const char* s) { - int _t618; - unsigned int _t617; - _t617 = String_Len(s); - _t618 = (int)_t617; - const char* _t619; - _t619 = bux_base64url_encode(s, _t618); - return _t619; + int _t609; + unsigned int _t608; + _t608 = String_Len(s); + _t609 = (int)_t608; + const char* _t610; + _t610 = bux_base64url_encode(s, _t609); + return _t610; } const char* Base64URL_Decode(const char* s) { - int _t621; - void* _t622; + int _t612; + void* _t613; int outlen; outlen = 0; - unsigned int _t620; - _t620 = String_Len(s); - _t621 = (int)_t620; - _t622 = &outlen; - const char* _t623; - _t623 = bux_base64url_decode(s, _t621, _t622); - return _t623; + unsigned int _t611; + _t611 = String_Len(s); + _t612 = (int)_t611; + _t613 = &outlen; + const char* _t614; + _t614 = bux_base64url_decode(s, _t612, _t613); + return _t614; } const char* Hmac_Sha256(const char* key, const char* message) { - int _t625; - int _t627; + int _t616; + int _t618; int kl; - unsigned int _t624; - _t624 = String_Len(key); - _t625 = (int)_t624; - kl = _t625; + unsigned int _t615; + _t615 = String_Len(key); + _t616 = (int)_t615; + kl = _t616; int ml; - unsigned int _t626; - _t626 = String_Len(message); - _t627 = (int)_t626; - ml = _t627; + unsigned int _t617; + _t617 = String_Len(message); + _t618 = (int)_t617; + ml = _t618; void* buf; - void* _t628; - _t628 = Alloc(32); - buf = _t628; + void* _t619; + _t619 = Alloc(32); + buf = _t619; bux_hmac_sha256(key, kl, message, ml, buf); const char* result; - const char* _t629; - _t629 = bux_bytes_to_hex(buf, 32); - result = _t629; + const char* _t620; + _t620 = bux_bytes_to_hex(buf, 32); + result = _t620; Free(buf); return result; } void Hmac_Sha256Raw(const char* key, const char* message, void* out) { - int _t631; - int _t633; - unsigned int _t630; - _t630 = String_Len(key); - _t631 = (int)_t630; - unsigned int _t632; - _t632 = String_Len(message); - _t633 = (int)_t632; - bux_hmac_sha256(key, _t631, message, _t633, out); + int _t622; + int _t624; + unsigned int _t621; + _t621 = String_Len(key); + _t622 = (int)_t621; + unsigned int _t623; + _t623 = String_Len(message); + _t624 = (int)_t623; + bux_hmac_sha256(key, _t622, message, _t624, out); } const char* Hmac_Sha256Base64(const char* key, const char* message) { - int _t635; - int _t637; - const char* _t639; + int _t626; + int _t628; + const char* _t630; int kl; - unsigned int _t634; - _t634 = String_Len(key); - _t635 = (int)_t634; - kl = _t635; + unsigned int _t625; + _t625 = String_Len(key); + _t626 = (int)_t625; + kl = _t626; int ml; - unsigned int _t636; - _t636 = String_Len(message); - _t637 = (int)_t636; - ml = _t637; + unsigned int _t627; + _t627 = String_Len(message); + _t628 = (int)_t627; + ml = _t628; void* buf; - void* _t638; - _t638 = Alloc(32); - buf = _t638; + void* _t629; + _t629 = Alloc(32); + buf = _t629; bux_hmac_sha256(key, kl, message, ml, buf); const char* result; - _t639 = (const char*)buf; - const char* _t640; - _t640 = bux_base64_encode(_t639, 32); - result = _t640; + _t630 = (const char*)buf; + const char* _t631; + _t631 = bux_base64_encode(_t630, 32); + result = _t631; Free(buf); return result; } const char* Hmac_Sha384(const char* key, const char* message) { - int _t642; - int _t644; + int _t633; + int _t635; int kl; - unsigned int _t641; - _t641 = String_Len(key); - _t642 = (int)_t641; - kl = _t642; + unsigned int _t632; + _t632 = String_Len(key); + _t633 = (int)_t632; + kl = _t633; int ml; - unsigned int _t643; - _t643 = String_Len(message); - _t644 = (int)_t643; - ml = _t644; + unsigned int _t634; + _t634 = String_Len(message); + _t635 = (int)_t634; + ml = _t635; void* buf; - void* _t645; - _t645 = Alloc(48); - buf = _t645; + void* _t636; + _t636 = Alloc(48); + buf = _t636; bux_hmac_sha384(key, kl, message, ml, buf); const char* result; - const char* _t646; - _t646 = bux_bytes_to_hex(buf, 48); - result = _t646; + const char* _t637; + _t637 = bux_bytes_to_hex(buf, 48); + result = _t637; Free(buf); return result; } void Hmac_Sha384Raw(const char* key, const char* message, void* out) { - int _t648; - int _t650; - unsigned int _t647; - _t647 = String_Len(key); - _t648 = (int)_t647; - unsigned int _t649; - _t649 = String_Len(message); - _t650 = (int)_t649; - bux_hmac_sha384(key, _t648, message, _t650, out); + int _t639; + int _t641; + unsigned int _t638; + _t638 = String_Len(key); + _t639 = (int)_t638; + unsigned int _t640; + _t640 = String_Len(message); + _t641 = (int)_t640; + bux_hmac_sha384(key, _t639, message, _t641, out); } const char* Hmac_Sha384Base64(const char* key, const char* message) { - int _t652; - int _t654; - const char* _t656; + int _t643; + int _t645; + const char* _t647; int kl; - unsigned int _t651; - _t651 = String_Len(key); - _t652 = (int)_t651; - kl = _t652; + unsigned int _t642; + _t642 = String_Len(key); + _t643 = (int)_t642; + kl = _t643; int ml; - unsigned int _t653; - _t653 = String_Len(message); - _t654 = (int)_t653; - ml = _t654; + unsigned int _t644; + _t644 = String_Len(message); + _t645 = (int)_t644; + ml = _t645; void* buf; - void* _t655; - _t655 = Alloc(48); - buf = _t655; + void* _t646; + _t646 = Alloc(48); + buf = _t646; bux_hmac_sha384(key, kl, message, ml, buf); const char* result; - _t656 = (const char*)buf; - const char* _t657; - _t657 = bux_base64_encode(_t656, 48); - result = _t657; + _t647 = (const char*)buf; + const char* _t648; + _t648 = bux_base64_encode(_t647, 48); + result = _t648; Free(buf); return result; } const char* Hmac_Sha512(const char* key, const char* message) { - int _t659; - int _t661; + int _t650; + int _t652; int kl; - unsigned int _t658; - _t658 = String_Len(key); - _t659 = (int)_t658; - kl = _t659; + unsigned int _t649; + _t649 = String_Len(key); + _t650 = (int)_t649; + kl = _t650; int ml; - unsigned int _t660; - _t660 = String_Len(message); - _t661 = (int)_t660; - ml = _t661; + unsigned int _t651; + _t651 = String_Len(message); + _t652 = (int)_t651; + ml = _t652; void* buf; - void* _t662; - _t662 = Alloc(64); - buf = _t662; + void* _t653; + _t653 = Alloc(64); + buf = _t653; bux_hmac_sha512(key, kl, message, ml, buf); const char* result; - const char* _t663; - _t663 = bux_bytes_to_hex(buf, 64); - result = _t663; + const char* _t654; + _t654 = bux_bytes_to_hex(buf, 64); + result = _t654; Free(buf); return result; } void Hmac_Sha512Raw(const char* key, const char* message, void* out) { - int _t665; - int _t667; - unsigned int _t664; - _t664 = String_Len(key); - _t665 = (int)_t664; - unsigned int _t666; - _t666 = String_Len(message); - _t667 = (int)_t666; - bux_hmac_sha512(key, _t665, message, _t667, out); + int _t656; + int _t658; + unsigned int _t655; + _t655 = String_Len(key); + _t656 = (int)_t655; + unsigned int _t657; + _t657 = String_Len(message); + _t658 = (int)_t657; + bux_hmac_sha512(key, _t656, message, _t658, out); } const char* Hmac_Sha512Base64(const char* key, const char* message) { - int _t669; - int _t671; - const char* _t673; + int _t660; + int _t662; + const char* _t664; int kl; - unsigned int _t668; - _t668 = String_Len(key); - _t669 = (int)_t668; - kl = _t669; + unsigned int _t659; + _t659 = String_Len(key); + _t660 = (int)_t659; + kl = _t660; int ml; - unsigned int _t670; - _t670 = String_Len(message); - _t671 = (int)_t670; - ml = _t671; + unsigned int _t661; + _t661 = String_Len(message); + _t662 = (int)_t661; + ml = _t662; void* buf; - void* _t672; - _t672 = Alloc(64); - buf = _t672; + void* _t663; + _t663 = Alloc(64); + buf = _t663; bux_hmac_sha512(key, kl, message, ml, buf); const char* result; - _t673 = (const char*)buf; - const char* _t674; - _t674 = bux_base64_encode(_t673, 64); - result = _t674; + _t664 = (const char*)buf; + const char* _t665; + _t665 = bux_base64_encode(_t664, 64); + result = _t665; Free(buf); return result; } const char* Random_Bytes(int n) { - int _t675; - unsigned int _t676; - int _t679; - const char* _t680; - _t675 = (n <= 0); - if (!_t675) goto endif237; + int _t666; + unsigned int _t667; + int _t670; + const char* _t671; + _t666 = (n <= 0); + if (!_t666) goto endif224; { return ""; } - endif237:; + endif224:; void* buf; - _t676 = (unsigned int)n; - void* _t677; - _t677 = Alloc(_t676); - buf = _t677; - int _t678; - _t678 = bux_random_bytes(buf, n); - _t679 = (_t678 != 1); - if (!_t679) goto endif239; + _t667 = (unsigned int)n; + void* _t668; + _t668 = Alloc(_t667); + buf = _t668; + int _t669; + _t669 = bux_random_bytes(buf, n); + _t670 = (_t669 != 1); + if (!_t670) goto endif226; { Free(buf); return ""; } - endif239:; - _t680 = (const char*)buf; - return _t680; + endif226:; + _t671 = (const char*)buf; + return _t671; } const char* Random_Hex(int n) { - int _t681; - unsigned int _t682; - int _t685; - _t681 = (n <= 0); - if (!_t681) goto endif241; + int _t672; + unsigned int _t673; + int _t676; + _t672 = (n <= 0); + if (!_t672) goto endif228; { return ""; } - endif241:; + endif228:; void* buf; - _t682 = (unsigned int)n; - void* _t683; - _t683 = Alloc(_t682); - buf = _t683; - int _t684; - _t684 = bux_random_bytes(buf, n); - _t685 = (_t684 != 1); - if (!_t685) goto endif243; + _t673 = (unsigned int)n; + void* _t674; + _t674 = Alloc(_t673); + buf = _t674; + int _t675; + _t675 = bux_random_bytes(buf, n); + _t676 = (_t675 != 1); + if (!_t676) goto endif230; { Free(buf); return ""; } - endif243:; + endif230:; const char* result; - const char* _t686; - _t686 = bux_bytes_to_hex(buf, n); - result = _t686; + const char* _t677; + _t677 = bux_bytes_to_hex(buf, n); + result = _t677; Free(buf); return result; } const char* Random_Base64(int n) { - int _t687; - unsigned int _t688; - int _t691; - const char* _t692; - _t687 = (n <= 0); - if (!_t687) goto endif245; + int _t678; + unsigned int _t679; + int _t682; + const char* _t683; + _t678 = (n <= 0); + if (!_t678) goto endif232; { return ""; } - endif245:; + endif232:; void* buf; - _t688 = (unsigned int)n; - void* _t689; - _t689 = Alloc(_t688); - buf = _t689; - int _t690; - _t690 = bux_random_bytes(buf, n); - _t691 = (_t690 != 1); - if (!_t691) goto endif247; + _t679 = (unsigned int)n; + void* _t680; + _t680 = Alloc(_t679); + buf = _t680; + int _t681; + _t681 = bux_random_bytes(buf, n); + _t682 = (_t681 != 1); + if (!_t682) goto endif234; { Free(buf); return ""; } - endif247:; + endif234:; const char* result; - _t692 = (const char*)buf; - const char* _t693; - _t693 = bux_base64_encode(_t692, n); - result = _t693; + _t683 = (const char*)buf; + const char* _t684; + _t684 = bux_base64_encode(_t683, n); + result = _t684; Free(buf); return result; } unsigned int Random_Uint32(void) { - int _t696; - unsigned int* _t697; - unsigned int _t698; + int _t687; + unsigned int* _t688; + unsigned int _t689; void* buf; - void* _t694; - _t694 = Alloc(4); - buf = _t694; - int _t695; - _t695 = bux_random_bytes(buf, 4); - _t696 = (_t695 != 1); - if (!_t696) goto endif249; + void* _t685; + _t685 = Alloc(4); + buf = _t685; + int _t686; + _t686 = bux_random_bytes(buf, 4); + _t687 = (_t686 != 1); + if (!_t687) goto endif236; { Free(buf); return 0; } - endif249:; + endif236:; unsigned int* ptr; - _t697 = (unsigned int*)buf; - ptr = _t697; + _t688 = (unsigned int*)buf; + ptr = _t688; unsigned int val; - _t698 = *ptr; - val = _t698; + _t689 = *ptr; + val = _t689; Free(buf); return val; } const char* Aes_GenerateKey(void) { - unsigned int _t699; - int _t702; - const char* _t703; + unsigned int _t690; + int _t693; + const char* _t694; void* buf; - _t699 = (unsigned int)AES_KEY_SIZE; - void* _t700; - _t700 = Alloc(_t699); - buf = _t700; - int _t701; - _t701 = bux_random_bytes(buf, AES_KEY_SIZE); - _t702 = (_t701 != 1); - if (!_t702) goto endif251; + _t690 = (unsigned int)AES_KEY_SIZE; + void* _t691; + _t691 = Alloc(_t690); + buf = _t691; + int _t692; + _t692 = bux_random_bytes(buf, AES_KEY_SIZE); + _t693 = (_t692 != 1); + if (!_t693) goto endif238; { Free(buf); return ""; } - endif251:; - _t703 = (const char*)buf; - return _t703; + endif238:; + _t694 = (const char*)buf; + return _t694; } const char* Aes_GenerateIV(void) { - unsigned int _t704; - int _t707; - const char* _t708; + unsigned int _t695; + int _t698; + const char* _t699; void* buf; - _t704 = (unsigned int)AES_IV_SIZE; - void* _t705; - _t705 = Alloc(_t704); - buf = _t705; - int _t706; - _t706 = bux_random_bytes(buf, AES_IV_SIZE); - _t707 = (_t706 != 1); - if (!_t707) goto endif253; + _t695 = (unsigned int)AES_IV_SIZE; + void* _t696; + _t696 = Alloc(_t695); + buf = _t696; + int _t697; + _t697 = bux_random_bytes(buf, AES_IV_SIZE); + _t698 = (_t697 != 1); + if (!_t698) goto endif240; { Free(buf); return ""; } - endif253:; - _t708 = (const char*)buf; - return _t708; + endif240:; + _t699 = (const char*)buf; + return _t699; } const char* Aes_CbcEncrypt(const char* plain, const char* key, const char* iv) { - int _t710; - void* _t711; + int _t701; + void* _t702; int outlen; outlen = 0; - unsigned int _t709; - _t709 = String_Len(plain); - _t710 = (int)_t709; - _t711 = &outlen; - const char* _t712; - _t712 = bux_aes_256_cbc_encrypt(plain, _t710, key, iv, _t711); - return _t712; + unsigned int _t700; + _t700 = String_Len(plain); + _t701 = (int)_t700; + _t702 = &outlen; + const char* _t703; + _t703 = bux_aes_256_cbc_encrypt(plain, _t701, key, iv, _t702); + return _t703; } const char* Aes_CbcDecrypt(const char* cipher, const char* key, const char* iv) { - int _t714; - void* _t715; + int _t705; + void* _t706; int outlen; outlen = 0; - unsigned int _t713; - _t713 = String_Len(cipher); - _t714 = (int)_t713; - _t715 = &outlen; - const char* _t716; - _t716 = bux_aes_256_cbc_decrypt(cipher, _t714, key, iv, _t715); - return _t716; + unsigned int _t704; + _t704 = String_Len(cipher); + _t705 = (int)_t704; + _t706 = &outlen; + const char* _t707; + _t707 = bux_aes_256_cbc_decrypt(cipher, _t705, key, iv, _t706); + return _t707; } const char* Aes_GcmEncrypt(const char* plain, const char* key, const char* iv, void* tag) { - int _t718; - void* _t719; + int _t709; + void* _t710; int outlen; outlen = 0; - unsigned int _t717; - _t717 = String_Len(plain); - _t718 = (int)_t717; - _t719 = &outlen; - const char* _t720; - _t720 = bux_aes_256_gcm_encrypt(plain, _t718, key, iv, tag, _t719); - return _t720; + unsigned int _t708; + _t708 = String_Len(plain); + _t709 = (int)_t708; + _t710 = &outlen; + const char* _t711; + _t711 = bux_aes_256_gcm_encrypt(plain, _t709, key, iv, tag, _t710); + return _t711; } const char* Aes_GcmDecrypt(const char* cipher, const char* key, const char* iv, const char* tag) { - int _t722; - void* _t723; + int _t713; + void* _t714; int outlen; outlen = 0; - unsigned int _t721; - _t721 = String_Len(cipher); - _t722 = (int)_t721; - _t723 = &outlen; - const char* _t724; - _t724 = bux_aes_256_gcm_decrypt(cipher, _t722, key, iv, tag, _t723); - return _t724; + unsigned int _t712; + _t712 = String_Len(cipher); + _t713 = (int)_t712; + _t714 = &outlen; + const char* _t715; + _t715 = bux_aes_256_gcm_decrypt(cipher, _t713, key, iv, tag, _t714); + return _t715; } const char* Jwt_MakeHeader(JwtAlg alg) { - int _t725; - int _t726; - int _t727; - int _t728; - int _t729; - int _t730; - int _t731; - int _t732; - int _t733; - _t725 = (alg == JwtAlg_HS256); - if (!_t725) goto endif255; + int _t716; + int _t717; + int _t718; + int _t719; + int _t720; + int _t721; + int _t722; + int _t723; + int _t724; + _t716 = (alg == JwtAlg_HS256); + if (!_t716) goto endif242; { return "{\"alg\":\"HS256\",\"typ\":\"JWT\"}"; } - endif255:; - _t726 = (alg == JwtAlg_HS384); - if (!_t726) goto endif257; + endif242:; + _t717 = (alg == JwtAlg_HS384); + if (!_t717) goto endif244; { return "{\"alg\":\"HS384\",\"typ\":\"JWT\"}"; } - endif257:; - _t727 = (alg == JwtAlg_HS512); - if (!_t727) goto endif259; + endif244:; + _t718 = (alg == JwtAlg_HS512); + if (!_t718) goto endif246; { return "{\"alg\":\"HS512\",\"typ\":\"JWT\"}"; } - endif259:; - _t728 = (alg == JwtAlg_RS256); - if (!_t728) goto endif261; + endif246:; + _t719 = (alg == JwtAlg_RS256); + if (!_t719) goto endif248; { return "{\"alg\":\"RS256\",\"typ\":\"JWT\"}"; } - endif261:; - _t729 = (alg == JwtAlg_RS384); - if (!_t729) goto endif263; + endif248:; + _t720 = (alg == JwtAlg_RS384); + if (!_t720) goto endif250; { return "{\"alg\":\"RS384\",\"typ\":\"JWT\"}"; } - endif263:; - _t730 = (alg == JwtAlg_RS512); - if (!_t730) goto endif265; + endif250:; + _t721 = (alg == JwtAlg_RS512); + if (!_t721) goto endif252; { return "{\"alg\":\"RS512\",\"typ\":\"JWT\"}"; } - endif265:; - _t731 = (alg == JwtAlg_ES256); - if (!_t731) goto endif267; + endif252:; + _t722 = (alg == JwtAlg_ES256); + if (!_t722) goto endif254; { return "{\"alg\":\"ES256\",\"typ\":\"JWT\"}"; } - endif267:; - _t732 = (alg == JwtAlg_ES384); - if (!_t732) goto endif269; + endif254:; + _t723 = (alg == JwtAlg_ES384); + if (!_t723) goto endif256; { return "{\"alg\":\"ES384\",\"typ\":\"JWT\"}"; } - endif269:; - _t733 = (alg == JwtAlg_EdDSA); - if (!_t733) goto endif271; + endif256:; + _t724 = (alg == JwtAlg_EdDSA); + if (!_t724) goto endif258; { return "{\"alg\":\"EdDSA\",\"typ\":\"JWT\"}"; } - endif271:; + endif258:; return "{\"alg\":\"none\",\"typ\":\"JWT\"}"; } const char* Jwt_Sign(JwtAlg alg, const char* signingInput, const char* key) { - int _t734; - const char* _t736; - int _t738; - const char* _t740; + int _t725; + const char* _t727; + int _t729; + const char* _t731; + int _t733; + const char* _t735; + int _t737; + int _t740; int _t742; - const char* _t744; - int _t746; - int _t749; - int _t751; - int _t754; - int _t756; - int _t759; - int _t761; - int _t764; - int _t766; - int _t769; - int _t771; - _t734 = (alg == JwtAlg_HS256); - if (!_t734) goto endif273; + int _t745; + int _t747; + int _t750; + int _t752; + int _t755; + int _t757; + int _t760; + int _t762; + _t725 = (alg == JwtAlg_HS256); + if (!_t725) goto endif260; { void* buf; - void* _t735; - _t735 = Alloc(32); - buf = _t735; + void* _t726; + _t726 = Alloc(32); + buf = _t726; Hmac_Sha256Raw(key, signingInput, buf); const char* result; - _t736 = (const char*)buf; - const char* _t737; - _t737 = bux_base64_encode(_t736, 32); - result = _t737; + _t727 = (const char*)buf; + const char* _t728; + _t728 = bux_base64_encode(_t727, 32); + result = _t728; Free(buf); return result; } - endif273:; - _t738 = (alg == JwtAlg_HS384); - if (!_t738) goto endif275; + endif260:; + _t729 = (alg == JwtAlg_HS384); + if (!_t729) goto endif262; { void* buf; - void* _t739; - _t739 = Alloc(48); - buf = _t739; + void* _t730; + _t730 = Alloc(48); + buf = _t730; Hmac_Sha384Raw(key, signingInput, buf); const char* result; - _t740 = (const char*)buf; - const char* _t741; - _t741 = bux_base64_encode(_t740, 48); - result = _t741; + _t731 = (const char*)buf; + const char* _t732; + _t732 = bux_base64_encode(_t731, 48); + result = _t732; Free(buf); return result; } - endif275:; - _t742 = (alg == JwtAlg_HS512); - if (!_t742) goto endif277; + endif262:; + _t733 = (alg == JwtAlg_HS512); + if (!_t733) goto endif264; { void* buf; - void* _t743; - _t743 = Alloc(64); - buf = _t743; + void* _t734; + _t734 = Alloc(64); + buf = _t734; Hmac_Sha512Raw(key, signingInput, buf); const char* result; - _t744 = (const char*)buf; - const char* _t745; - _t745 = bux_base64_encode(_t744, 64); - result = _t745; + _t735 = (const char*)buf; + const char* _t736; + _t736 = bux_base64_encode(_t735, 64); + result = _t736; Free(buf); return result; } - endif277:; - _t746 = (alg == JwtAlg_RS256); - if (!_t746) goto endif279; + endif264:; + _t737 = (alg == JwtAlg_RS256); + if (!_t737) goto endif266; { const char* raw; - const char* _t747; - _t747 = Rsa_SignSha256(key, signingInput); - raw = _t747; - unsigned int _t748; - _t748 = String_Len(raw); - _t749 = (int)_t748; - const char* _t750; - _t750 = bux_base64_encode(raw, _t749); - return _t750; + const char* _t738; + _t738 = Rsa_SignSha256(key, signingInput); + raw = _t738; + unsigned int _t739; + _t739 = String_Len(raw); + _t740 = (int)_t739; + const char* _t741; + _t741 = bux_base64_encode(raw, _t740); + return _t741; } - endif279:; - _t751 = (alg == JwtAlg_RS384); - if (!_t751) goto endif281; + endif266:; + _t742 = (alg == JwtAlg_RS384); + if (!_t742) goto endif268; { const char* raw; - const char* _t752; - _t752 = Rsa_SignSha384(key, signingInput); - raw = _t752; - unsigned int _t753; - _t753 = String_Len(raw); - _t754 = (int)_t753; - const char* _t755; - _t755 = bux_base64_encode(raw, _t754); - return _t755; + const char* _t743; + _t743 = Rsa_SignSha384(key, signingInput); + raw = _t743; + unsigned int _t744; + _t744 = String_Len(raw); + _t745 = (int)_t744; + const char* _t746; + _t746 = bux_base64_encode(raw, _t745); + return _t746; } - endif281:; - _t756 = (alg == JwtAlg_RS512); - if (!_t756) goto endif283; + endif268:; + _t747 = (alg == JwtAlg_RS512); + if (!_t747) goto endif270; { const char* raw; - const char* _t757; - _t757 = Rsa_SignSha512(key, signingInput); - raw = _t757; - unsigned int _t758; - _t758 = String_Len(raw); - _t759 = (int)_t758; - const char* _t760; - _t760 = bux_base64_encode(raw, _t759); - return _t760; + const char* _t748; + _t748 = Rsa_SignSha512(key, signingInput); + raw = _t748; + unsigned int _t749; + _t749 = String_Len(raw); + _t750 = (int)_t749; + const char* _t751; + _t751 = bux_base64_encode(raw, _t750); + return _t751; } - endif283:; - _t761 = (alg == JwtAlg_ES256); - if (!_t761) goto endif285; + endif270:; + _t752 = (alg == JwtAlg_ES256); + if (!_t752) goto endif272; { const char* raw; - const char* _t762; - _t762 = Ecdsa_SignP256(key, signingInput); - raw = _t762; - unsigned int _t763; - _t763 = String_Len(raw); - _t764 = (int)_t763; - const char* _t765; - _t765 = bux_base64_encode(raw, _t764); - return _t765; + const char* _t753; + _t753 = Ecdsa_SignP256(key, signingInput); + raw = _t753; + unsigned int _t754; + _t754 = String_Len(raw); + _t755 = (int)_t754; + const char* _t756; + _t756 = bux_base64_encode(raw, _t755); + return _t756; } - endif285:; - _t766 = (alg == JwtAlg_ES384); - if (!_t766) goto endif287; + endif272:; + _t757 = (alg == JwtAlg_ES384); + if (!_t757) goto endif274; { const char* raw; - const char* _t767; - _t767 = Ecdsa_SignP384(key, signingInput); - raw = _t767; - unsigned int _t768; - _t768 = String_Len(raw); - _t769 = (int)_t768; - const char* _t770; - _t770 = bux_base64_encode(raw, _t769); - return _t770; + const char* _t758; + _t758 = Ecdsa_SignP384(key, signingInput); + raw = _t758; + unsigned int _t759; + _t759 = String_Len(raw); + _t760 = (int)_t759; + const char* _t761; + _t761 = bux_base64_encode(raw, _t760); + return _t761; } - endif287:; - _t771 = (alg == JwtAlg_EdDSA); - if (!_t771) goto endif289; + endif274:; + _t762 = (alg == JwtAlg_EdDSA); + if (!_t762) goto endif276; { - const char* _t772; - _t772 = Ed25519_Sign(key, signingInput); - return _t772; + const char* _t763; + _t763 = Ed25519_Sign(key, signingInput); + return _t763; } - endif289:; + endif276:; return ""; } bool Jwt_Verify(JwtAlg alg, const char* signingInput, const char* signatureB64, const char* key) { - int _t773; - const char* _t775; - int _t778; - const char* _t780; + int _t764; + const char* _t766; + int _t769; + const char* _t771; + int _t774; + const char* _t776; + int _t779; + int _t781; int _t783; - const char* _t785; - int _t788; - int _t790; - int _t792; - int _t794; - int _t796; - int _t798; - _t773 = (alg == JwtAlg_HS256); - if (!_t773) goto endif291; + int _t785; + int _t787; + int _t789; + _t764 = (alg == JwtAlg_HS256); + if (!_t764) goto endif278; { void* expectBuf; - void* _t774; - _t774 = Alloc(32); - expectBuf = _t774; + void* _t765; + _t765 = Alloc(32); + expectBuf = _t765; Hmac_Sha256Raw(key, signingInput, expectBuf); const char* expectB64; - _t775 = (const char*)expectBuf; - const char* _t776; - _t776 = bux_base64_encode(_t775, 32); - expectB64 = _t776; + _t766 = (const char*)expectBuf; + const char* _t767; + _t767 = bux_base64_encode(_t766, 32); + expectB64 = _t767; Free(expectBuf); - bool _t777; - _t777 = String_Eq(expectB64, signatureB64); - return _t777; + bool _t768; + _t768 = String_Eq(expectB64, signatureB64); + return _t768; } - endif291:; - _t778 = (alg == JwtAlg_HS384); - if (!_t778) goto endif293; + endif278:; + _t769 = (alg == JwtAlg_HS384); + if (!_t769) goto endif280; { void* expectBuf; - void* _t779; - _t779 = Alloc(48); - expectBuf = _t779; + void* _t770; + _t770 = Alloc(48); + expectBuf = _t770; Hmac_Sha384Raw(key, signingInput, expectBuf); const char* expectB64; - _t780 = (const char*)expectBuf; - const char* _t781; - _t781 = bux_base64_encode(_t780, 48); - expectB64 = _t781; + _t771 = (const char*)expectBuf; + const char* _t772; + _t772 = bux_base64_encode(_t771, 48); + expectB64 = _t772; Free(expectBuf); - bool _t782; - _t782 = String_Eq(expectB64, signatureB64); - return _t782; + bool _t773; + _t773 = String_Eq(expectB64, signatureB64); + return _t773; } - endif293:; - _t783 = (alg == JwtAlg_HS512); - if (!_t783) goto endif295; + endif280:; + _t774 = (alg == JwtAlg_HS512); + if (!_t774) goto endif282; { void* expectBuf; - void* _t784; - _t784 = Alloc(64); - expectBuf = _t784; + void* _t775; + _t775 = Alloc(64); + expectBuf = _t775; Hmac_Sha512Raw(key, signingInput, expectBuf); const char* expectB64; - _t785 = (const char*)expectBuf; - const char* _t786; - _t786 = bux_base64_encode(_t785, 64); - expectB64 = _t786; + _t776 = (const char*)expectBuf; + const char* _t777; + _t777 = bux_base64_encode(_t776, 64); + expectB64 = _t777; Free(expectBuf); - bool _t787; - _t787 = String_Eq(expectB64, signatureB64); - return _t787; + bool _t778; + _t778 = String_Eq(expectB64, signatureB64); + return _t778; } - endif295:; - _t788 = (alg == JwtAlg_RS256); - if (!_t788) goto endif297; + endif282:; + _t779 = (alg == JwtAlg_RS256); + if (!_t779) goto endif284; { - bool _t789; - _t789 = Rsa_VerifySha256(key, signingInput, signatureB64); - return _t789; + bool _t780; + _t780 = Rsa_VerifySha256(key, signingInput, signatureB64); + return _t780; } - endif297:; - _t790 = (alg == JwtAlg_RS384); - if (!_t790) goto endif299; + endif284:; + _t781 = (alg == JwtAlg_RS384); + if (!_t781) goto endif286; { - bool _t791; - _t791 = Rsa_VerifySha384(key, signingInput, signatureB64); - return _t791; + bool _t782; + _t782 = Rsa_VerifySha384(key, signingInput, signatureB64); + return _t782; } - endif299:; - _t792 = (alg == JwtAlg_RS512); - if (!_t792) goto endif301; + endif286:; + _t783 = (alg == JwtAlg_RS512); + if (!_t783) goto endif288; { - bool _t793; - _t793 = Rsa_VerifySha512(key, signingInput, signatureB64); - return _t793; + bool _t784; + _t784 = Rsa_VerifySha512(key, signingInput, signatureB64); + return _t784; } - endif301:; - _t794 = (alg == JwtAlg_ES256); - if (!_t794) goto endif303; + endif288:; + _t785 = (alg == JwtAlg_ES256); + if (!_t785) goto endif290; { - bool _t795; - _t795 = Ecdsa_VerifyP256(key, signingInput, signatureB64); - return _t795; + bool _t786; + _t786 = Ecdsa_VerifyP256(key, signingInput, signatureB64); + return _t786; } - endif303:; - _t796 = (alg == JwtAlg_ES384); - if (!_t796) goto endif305; + endif290:; + _t787 = (alg == JwtAlg_ES384); + if (!_t787) goto endif292; { - bool _t797; - _t797 = Ecdsa_VerifyP384(key, signingInput, signatureB64); - return _t797; + bool _t788; + _t788 = Ecdsa_VerifyP384(key, signingInput, signatureB64); + return _t788; } - endif305:; - _t798 = (alg == JwtAlg_EdDSA); - if (!_t798) goto endif307; + endif292:; + _t789 = (alg == JwtAlg_EdDSA); + if (!_t789) goto endif294; { - bool _t799; - _t799 = Ed25519_Verify(key, signatureB64, signingInput); - return _t799; + bool _t790; + _t790 = Ed25519_Verify(key, signatureB64, signingInput); + return _t790; } - endif307:; + endif294:; return 0; } const char* Jwt_Encode(const char* headerJson, const char* payloadJson, JwtAlg alg, const char* key) { const char* headerB64; - const char* _t800; - _t800 = Base64URL_Encode(headerJson); - headerB64 = _t800; + const char* _t791; + _t791 = Base64URL_Encode(headerJson); + headerB64 = _t791; const char* payloadB64; - const char* _t801; - _t801 = Base64URL_Encode(payloadJson); - payloadB64 = _t801; + const char* _t792; + _t792 = Base64URL_Encode(payloadJson); + payloadB64 = _t792; const char* signingInput; - const char* _t802; - _t802 = String_Concat(headerB64, "."); - signingInput = _t802; + const char* _t793; + _t793 = String_Concat(headerB64, "."); + signingInput = _t793; const char* signingInputFull; - const char* _t803; - _t803 = String_Concat(signingInput, payloadB64); - signingInputFull = _t803; + const char* _t794; + _t794 = String_Concat(signingInput, payloadB64); + signingInputFull = _t794; const char* sigB64; - const char* _t804; - _t804 = Jwt_Sign(alg, signingInputFull, key); - sigB64 = _t804; + const char* _t795; + _t795 = Jwt_Sign(alg, signingInputFull, key); + sigB64 = _t795; const char* part1; - const char* _t805; - _t805 = String_Concat(signingInputFull, "."); - part1 = _t805; - const char* _t806; - _t806 = String_Concat(part1, sigB64); - return _t806; + const char* _t796; + _t796 = String_Concat(signingInputFull, "."); + part1 = _t796; + const char* _t797; + _t797 = String_Concat(part1, sigB64); + return _t797; } bool Jwt_Decode(const char* token, JwtAlg alg, const char* key, const char** headerOut, const char** payloadOut) { - int _t808; - int _t815; + int _t799; + int _t806; unsigned int partCount; - unsigned int _t807; - _t807 = bux_str_split_count(token, "."); - partCount = _t807; - _t808 = (partCount != 3); - if (!_t808) goto endif309; + unsigned int _t798; + _t798 = bux_str_split_count(token, "."); + partCount = _t798; + _t799 = (partCount != 3); + if (!_t799) goto endif296; { return 0; } - endif309:; + endif296:; const char* headerB64; - const char* _t809; - _t809 = bux_str_split_part(token, ".", 0); - headerB64 = _t809; + const char* _t800; + _t800 = bux_str_split_part(token, ".", 0); + headerB64 = _t800; const char* payloadB64; - const char* _t810; - _t810 = bux_str_split_part(token, ".", 1); - payloadB64 = _t810; + const char* _t801; + _t801 = bux_str_split_part(token, ".", 1); + payloadB64 = _t801; const char* sigB64; - const char* _t811; - _t811 = bux_str_split_part(token, ".", 2); - sigB64 = _t811; + const char* _t802; + _t802 = bux_str_split_part(token, ".", 2); + sigB64 = _t802; const char* input; - const char* _t812; - _t812 = String_Concat(headerB64, "."); - input = _t812; + const char* _t803; + _t803 = String_Concat(headerB64, "."); + input = _t803; const char* signingInput; - const char* _t813; - _t813 = String_Concat(input, payloadB64); - signingInput = _t813; - bool _t814; - _t814 = Jwt_Verify(alg, signingInput, sigB64, key); - _t815 = !_t814; - if (!_t815) goto endif311; + const char* _t804; + _t804 = String_Concat(input, payloadB64); + signingInput = _t804; + bool _t805; + _t805 = Jwt_Verify(alg, signingInput, sigB64, key); + _t806 = !_t805; + if (!_t806) goto endif298; { return 0; } - endif311:; - const char* _t816; - _t816 = Base64URL_Decode(headerB64); - headerOut[0] = _t816; - const char* _t817; - _t817 = Base64URL_Decode(payloadB64); - payloadOut[0] = _t817; + endif298:; + const char* _t807; + _t807 = Base64URL_Decode(headerB64); + headerOut[0] = _t807; + const char* _t808; + _t808 = Base64URL_Decode(payloadB64); + payloadOut[0] = _t808; return 1; } const char* Jwt_EncodeHS256(const char* payloadJson, const char* secret) { const char* header; - const char* _t818; - _t818 = Jwt_MakeHeader(JwtAlg_HS256); - header = _t818; - const char* _t819; - _t819 = Jwt_Encode(header, payloadJson, JwtAlg_HS256, secret); - return _t819; + const char* _t809; + _t809 = Jwt_MakeHeader(JwtAlg_HS256); + header = _t809; + const char* _t810; + _t810 = Jwt_Encode(header, payloadJson, JwtAlg_HS256, secret); + return _t810; } const char* Jwt_EncodeHS384(const char* payloadJson, const char* secret) { const char* header; - const char* _t820; - _t820 = Jwt_MakeHeader(JwtAlg_HS384); - header = _t820; - const char* _t821; - _t821 = Jwt_Encode(header, payloadJson, JwtAlg_HS384, secret); - return _t821; + const char* _t811; + _t811 = Jwt_MakeHeader(JwtAlg_HS384); + header = _t811; + const char* _t812; + _t812 = Jwt_Encode(header, payloadJson, JwtAlg_HS384, secret); + return _t812; } const char* Jwt_EncodeHS512(const char* payloadJson, const char* secret) { const char* header; - const char* _t822; - _t822 = Jwt_MakeHeader(JwtAlg_HS512); - header = _t822; - const char* _t823; - _t823 = Jwt_Encode(header, payloadJson, JwtAlg_HS512, secret); - return _t823; + const char* _t813; + _t813 = Jwt_MakeHeader(JwtAlg_HS512); + header = _t813; + const char* _t814; + _t814 = Jwt_Encode(header, payloadJson, JwtAlg_HS512, secret); + return _t814; } const char* Jwt_EncodeRS256(const char* payloadJson, const char* pemPrivateKey) { const char* header; - const char* _t824; - _t824 = Jwt_MakeHeader(JwtAlg_RS256); - header = _t824; - const char* _t825; - _t825 = Jwt_Encode(header, payloadJson, JwtAlg_RS256, pemPrivateKey); - return _t825; + const char* _t815; + _t815 = Jwt_MakeHeader(JwtAlg_RS256); + header = _t815; + const char* _t816; + _t816 = Jwt_Encode(header, payloadJson, JwtAlg_RS256, pemPrivateKey); + return _t816; } const char* Jwt_EncodeES256(const char* payloadJson, const char* pemPrivateKey) { const char* header; - const char* _t826; - _t826 = Jwt_MakeHeader(JwtAlg_ES256); - header = _t826; - const char* _t827; - _t827 = Jwt_Encode(header, payloadJson, JwtAlg_ES256, pemPrivateKey); - return _t827; + const char* _t817; + _t817 = Jwt_MakeHeader(JwtAlg_ES256); + header = _t817; + const char* _t818; + _t818 = Jwt_Encode(header, payloadJson, JwtAlg_ES256, pemPrivateKey); + return _t818; } const char* Jwt_EncodeEdDSA(const char* payloadJson, const char* rawPrivKey) { const char* header; - const char* _t828; - _t828 = Jwt_MakeHeader(JwtAlg_EdDSA); - header = _t828; - const char* _t829; - _t829 = Jwt_Encode(header, payloadJson, JwtAlg_EdDSA, rawPrivKey); - return _t829; + const char* _t819; + _t819 = Jwt_MakeHeader(JwtAlg_EdDSA); + header = _t819; + const char* _t820; + _t820 = Jwt_Encode(header, payloadJson, JwtAlg_EdDSA, rawPrivKey); + return _t820; } const char* Ecdsa_SignP256(const char* pemPrivateKey, const char* data) { - int _t831; - int _t833; - void* _t834; + int _t822; + int _t824; + void* _t825; int siglen; siglen = 0; - unsigned int _t830; - _t830 = String_Len(pemPrivateKey); - _t831 = (int)_t830; - unsigned int _t832; - _t832 = String_Len(data); - _t833 = (int)_t832; - _t834 = &siglen; - const char* _t835; - _t835 = bux_ecdsa_sign_p256(pemPrivateKey, _t831, data, _t833, _t834); - return _t835; + unsigned int _t821; + _t821 = String_Len(pemPrivateKey); + _t822 = (int)_t821; + unsigned int _t823; + _t823 = String_Len(data); + _t824 = (int)_t823; + _t825 = &siglen; + const char* _t826; + _t826 = bux_ecdsa_sign_p256(pemPrivateKey, _t822, data, _t824, _t825); + return _t826; } const char* Ecdsa_SignP256Base64(const char* pemPrivateKey, const char* data) { - int _t838; + int _t829; const char* raw; - const char* _t836; - _t836 = Ecdsa_SignP256(pemPrivateKey, data); - raw = _t836; - unsigned int _t837; - _t837 = String_Len(raw); - _t838 = (int)_t837; - const char* _t839; - _t839 = bux_base64_encode(raw, _t838); - return _t839; + const char* _t827; + _t827 = Ecdsa_SignP256(pemPrivateKey, data); + raw = _t827; + unsigned int _t828; + _t828 = String_Len(raw); + _t829 = (int)_t828; + const char* _t830; + _t830 = bux_base64_encode(raw, _t829); + return _t830; } bool Ecdsa_VerifyP256(const char* pemPublicKey, const char* data, const char* signature) { - int _t841; - int _t843; - int _t845; - int _t847; + int _t832; + int _t834; + int _t836; + int _t838; int r; - unsigned int _t840; - _t840 = String_Len(pemPublicKey); - _t841 = (int)_t840; - unsigned int _t842; - _t842 = String_Len(data); - _t843 = (int)_t842; - unsigned int _t844; - _t844 = String_Len(signature); - _t845 = (int)_t844; - int _t846; - _t846 = bux_ecdsa_verify_p256(pemPublicKey, _t841, data, _t843, signature, _t845); - r = _t846; - _t847 = (r == 1); - return _t847; + unsigned int _t831; + _t831 = String_Len(pemPublicKey); + _t832 = (int)_t831; + unsigned int _t833; + _t833 = String_Len(data); + _t834 = (int)_t833; + unsigned int _t835; + _t835 = String_Len(signature); + _t836 = (int)_t835; + int _t837; + _t837 = bux_ecdsa_verify_p256(pemPublicKey, _t832, data, _t834, signature, _t836); + r = _t837; + _t838 = (r == 1); + return _t838; } bool Ecdsa_VerifyP256Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t849; - void* _t850; + int _t840; + void* _t841; int outlen; outlen = 0; const char* sig; - unsigned int _t848; - _t848 = String_Len(signatureB64); - _t849 = (int)_t848; - _t850 = &outlen; - const char* _t851; - _t851 = bux_base64_decode(signatureB64, _t849, _t850); - sig = _t851; - bool _t852; - _t852 = Ecdsa_VerifyP256(pemPublicKey, data, sig); - return _t852; + unsigned int _t839; + _t839 = String_Len(signatureB64); + _t840 = (int)_t839; + _t841 = &outlen; + const char* _t842; + _t842 = bux_base64_decode(signatureB64, _t840, _t841); + sig = _t842; + bool _t843; + _t843 = Ecdsa_VerifyP256(pemPublicKey, data, sig); + return _t843; } const char* Ecdsa_SignP384(const char* pemPrivateKey, const char* data) { - int _t854; - int _t856; - void* _t857; + int _t845; + int _t847; + void* _t848; int siglen; siglen = 0; - unsigned int _t853; - _t853 = String_Len(pemPrivateKey); - _t854 = (int)_t853; - unsigned int _t855; - _t855 = String_Len(data); - _t856 = (int)_t855; - _t857 = &siglen; - const char* _t858; - _t858 = bux_ecdsa_sign_p384(pemPrivateKey, _t854, data, _t856, _t857); - return _t858; + unsigned int _t844; + _t844 = String_Len(pemPrivateKey); + _t845 = (int)_t844; + unsigned int _t846; + _t846 = String_Len(data); + _t847 = (int)_t846; + _t848 = &siglen; + const char* _t849; + _t849 = bux_ecdsa_sign_p384(pemPrivateKey, _t845, data, _t847, _t848); + return _t849; } const char* Ecdsa_SignP384Base64(const char* pemPrivateKey, const char* data) { - int _t861; + int _t852; const char* raw; - const char* _t859; - _t859 = Ecdsa_SignP384(pemPrivateKey, data); - raw = _t859; - unsigned int _t860; - _t860 = String_Len(raw); - _t861 = (int)_t860; - const char* _t862; - _t862 = bux_base64_encode(raw, _t861); - return _t862; + const char* _t850; + _t850 = Ecdsa_SignP384(pemPrivateKey, data); + raw = _t850; + unsigned int _t851; + _t851 = String_Len(raw); + _t852 = (int)_t851; + const char* _t853; + _t853 = bux_base64_encode(raw, _t852); + return _t853; } bool Ecdsa_VerifyP384(const char* pemPublicKey, const char* data, const char* signature) { - int _t864; - int _t866; - int _t868; - int _t870; + int _t855; + int _t857; + int _t859; + int _t861; int r; - unsigned int _t863; - _t863 = String_Len(pemPublicKey); - _t864 = (int)_t863; - unsigned int _t865; - _t865 = String_Len(data); - _t866 = (int)_t865; - unsigned int _t867; - _t867 = String_Len(signature); - _t868 = (int)_t867; - int _t869; - _t869 = bux_ecdsa_verify_p384(pemPublicKey, _t864, data, _t866, signature, _t868); - r = _t869; - _t870 = (r == 1); - return _t870; + unsigned int _t854; + _t854 = String_Len(pemPublicKey); + _t855 = (int)_t854; + unsigned int _t856; + _t856 = String_Len(data); + _t857 = (int)_t856; + unsigned int _t858; + _t858 = String_Len(signature); + _t859 = (int)_t858; + int _t860; + _t860 = bux_ecdsa_verify_p384(pemPublicKey, _t855, data, _t857, signature, _t859); + r = _t860; + _t861 = (r == 1); + return _t861; } bool Ecdsa_VerifyP384Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t872; - void* _t873; + int _t863; + void* _t864; int outlen; outlen = 0; const char* sig; - unsigned int _t871; - _t871 = String_Len(signatureB64); - _t872 = (int)_t871; - _t873 = &outlen; - const char* _t874; - _t874 = bux_base64_decode(signatureB64, _t872, _t873); - sig = _t874; - bool _t875; - _t875 = Ecdsa_VerifyP384(pemPublicKey, data, sig); - return _t875; + unsigned int _t862; + _t862 = String_Len(signatureB64); + _t863 = (int)_t862; + _t864 = &outlen; + const char* _t865; + _t865 = bux_base64_decode(signatureB64, _t863, _t864); + sig = _t865; + bool _t866; + _t866 = Ecdsa_VerifyP384(pemPublicKey, data, sig); + return _t866; } bool Ed25519_Keypair(void* pubKey, void* privKey) { - int _t877; + int _t868; int r; - int _t876; - _t876 = bux_ed25519_keypair(pubKey, privKey); - r = _t876; - _t877 = (r == 1); - return _t877; + int _t867; + _t867 = bux_ed25519_keypair(pubKey, privKey); + r = _t867; + _t868 = (r == 1); + return _t868; } const char* Ed25519_KeypairBase64(void) { - unsigned int _t878; - unsigned int _t880; - int _t883; - const char* _t884; - const char* _t886; + unsigned int _t869; + unsigned int _t871; + int _t874; + const char* _t875; + const char* _t877; void* pubBuf; - _t878 = (unsigned int)ED25519_PUBKEY_SIZE; - void* _t879; - _t879 = Alloc(_t878); - pubBuf = _t879; + _t869 = (unsigned int)ED25519_PUBKEY_SIZE; + void* _t870; + _t870 = Alloc(_t869); + pubBuf = _t870; void* priv; - _t880 = (unsigned int)ED25519_PRIVKEY_SIZE; - void* _t881; - _t881 = Alloc(_t880); - priv = _t881; - int _t882; - _t882 = bux_ed25519_keypair(pubBuf, priv); - _t883 = (_t882 != 1); - if (!_t883) goto endif313; + _t871 = (unsigned int)ED25519_PRIVKEY_SIZE; + void* _t872; + _t872 = Alloc(_t871); + priv = _t872; + int _t873; + _t873 = bux_ed25519_keypair(pubBuf, priv); + _t874 = (_t873 != 1); + if (!_t874) goto endif300; { Free(pubBuf); Free(priv); return ""; } - endif313:; + endif300:; const char* pubB64; - _t884 = (const char*)pubBuf; - const char* _t885; - _t885 = bux_base64_encode(_t884, ED25519_PUBKEY_SIZE); - pubB64 = _t885; + _t875 = (const char*)pubBuf; + const char* _t876; + _t876 = bux_base64_encode(_t875, ED25519_PUBKEY_SIZE); + pubB64 = _t876; const char* privB64; - _t886 = (const char*)priv; - const char* _t887; - _t887 = bux_base64_encode(_t886, ED25519_PRIVKEY_SIZE); - privB64 = _t887; + _t877 = (const char*)priv; + const char* _t878; + _t878 = bux_base64_encode(_t877, ED25519_PRIVKEY_SIZE); + privB64 = _t878; Free(pubBuf); Free(priv); const char* pair; - const char* _t888; - _t888 = String_Concat(pubB64, ":"); - pair = _t888; - const char* _t889; - _t889 = String_Concat(pair, privB64); - return _t889; + const char* _t879; + _t879 = String_Concat(pubB64, ":"); + pair = _t879; + const char* _t880; + _t880 = String_Concat(pair, privB64); + return _t880; } const char* Ed25519_Sign(const char* privKey, const char* data) { - unsigned int _t890; - int _t893; - int _t895; - const char* _t896; + unsigned int _t881; + int _t884; + int _t886; + const char* _t887; void* sig; - _t890 = (unsigned int)ED25519_SIG_SIZE; - void* _t891; - _t891 = Alloc(_t890); - sig = _t891; - unsigned int _t892; - _t892 = String_Len(data); - _t893 = (int)_t892; - int _t894; - _t894 = bux_ed25519_sign(privKey, data, _t893, sig); - _t895 = (_t894 != 1); - if (!_t895) goto endif315; + _t881 = (unsigned int)ED25519_SIG_SIZE; + void* _t882; + _t882 = Alloc(_t881); + sig = _t882; + unsigned int _t883; + _t883 = String_Len(data); + _t884 = (int)_t883; + int _t885; + _t885 = bux_ed25519_sign(privKey, data, _t884, sig); + _t886 = (_t885 != 1); + if (!_t886) goto endif302; { Free(sig); return ""; } - endif315:; - _t896 = (const char*)sig; - return _t896; + endif302:; + _t887 = (const char*)sig; + return _t887; } const char* Ed25519_SignBase64(const char* privKey, const char* data) { - int _t899; + int _t890; const char* sig; - const char* _t897; - _t897 = Ed25519_Sign(privKey, data); - sig = _t897; - unsigned int _t898; - _t898 = String_Len(sig); - _t899 = (_t898 == 0); - if (!_t899) goto endif317; + const char* _t888; + _t888 = Ed25519_Sign(privKey, data); + sig = _t888; + unsigned int _t889; + _t889 = String_Len(sig); + _t890 = (_t889 == 0); + if (!_t890) goto endif304; { return ""; } - endif317:; - const char* _t900; - _t900 = bux_base64_encode(sig, ED25519_SIG_SIZE); - return _t900; + endif304:; + const char* _t891; + _t891 = bux_base64_encode(sig, ED25519_SIG_SIZE); + return _t891; } bool Ed25519_Verify(const char* pubKey, const char* signature, const char* data) { - int _t902; - int _t904; + int _t893; + int _t895; int r; - unsigned int _t901; - _t901 = String_Len(data); - _t902 = (int)_t901; - int _t903; - _t903 = bux_ed25519_verify(pubKey, signature, data, _t902); - r = _t903; - _t904 = (r == 1); - return _t904; + unsigned int _t892; + _t892 = String_Len(data); + _t893 = (int)_t892; + int _t894; + _t894 = bux_ed25519_verify(pubKey, signature, data, _t893); + r = _t894; + _t895 = (r == 1); + return _t895; } bool Ed25519_VerifyBase64(const char* pubKey, const char* signatureB64, const char* data) { - int _t906; - void* _t907; - int _t909; + int _t897; + void* _t898; + int _t900; int outlen; outlen = 0; const char* sig; - unsigned int _t905; - _t905 = String_Len(signatureB64); - _t906 = (int)_t905; - _t907 = &outlen; - const char* _t908; - _t908 = bux_base64_decode(signatureB64, _t906, _t907); - sig = _t908; - _t909 = (outlen != ED25519_SIG_SIZE); - if (!_t909) goto endif319; + unsigned int _t896; + _t896 = String_Len(signatureB64); + _t897 = (int)_t896; + _t898 = &outlen; + const char* _t899; + _t899 = bux_base64_decode(signatureB64, _t897, _t898); + sig = _t899; + _t900 = (outlen != ED25519_SIG_SIZE); + if (!_t900) goto endif306; { return 0; } - endif319:; - bool _t910; - _t910 = Ed25519_Verify(pubKey, sig, data); - return _t910; + endif306:; + bool _t901; + _t901 = Ed25519_Verify(pubKey, sig, data); + return _t901; } const char* Rsa_SignSha256(const char* pemPrivateKey, const char* data) { - int _t912; - int _t914; - void* _t915; + int _t903; + int _t905; + void* _t906; int siglen; siglen = 0; - unsigned int _t911; - _t911 = String_Len(pemPrivateKey); - _t912 = (int)_t911; - unsigned int _t913; - _t913 = String_Len(data); - _t914 = (int)_t913; - _t915 = &siglen; - const char* _t916; - _t916 = bux_rsa_sign_sha256(pemPrivateKey, _t912, data, _t914, _t915); - return _t916; + unsigned int _t902; + _t902 = String_Len(pemPrivateKey); + _t903 = (int)_t902; + unsigned int _t904; + _t904 = String_Len(data); + _t905 = (int)_t904; + _t906 = &siglen; + const char* _t907; + _t907 = bux_rsa_sign_sha256(pemPrivateKey, _t903, data, _t905, _t906); + return _t907; } const char* Rsa_SignSha384(const char* pemPrivateKey, const char* data) { - int _t918; - int _t920; - void* _t921; + int _t909; + int _t911; + void* _t912; int siglen; siglen = 0; - unsigned int _t917; - _t917 = String_Len(pemPrivateKey); - _t918 = (int)_t917; - unsigned int _t919; - _t919 = String_Len(data); - _t920 = (int)_t919; - _t921 = &siglen; - const char* _t922; - _t922 = bux_rsa_sign_sha384(pemPrivateKey, _t918, data, _t920, _t921); - return _t922; + unsigned int _t908; + _t908 = String_Len(pemPrivateKey); + _t909 = (int)_t908; + unsigned int _t910; + _t910 = String_Len(data); + _t911 = (int)_t910; + _t912 = &siglen; + const char* _t913; + _t913 = bux_rsa_sign_sha384(pemPrivateKey, _t909, data, _t911, _t912); + return _t913; } const char* Rsa_SignSha512(const char* pemPrivateKey, const char* data) { - int _t924; - int _t926; - void* _t927; + int _t915; + int _t917; + void* _t918; int siglen; siglen = 0; - unsigned int _t923; - _t923 = String_Len(pemPrivateKey); - _t924 = (int)_t923; - unsigned int _t925; - _t925 = String_Len(data); - _t926 = (int)_t925; - _t927 = &siglen; - const char* _t928; - _t928 = bux_rsa_sign_sha512(pemPrivateKey, _t924, data, _t926, _t927); - return _t928; + unsigned int _t914; + _t914 = String_Len(pemPrivateKey); + _t915 = (int)_t914; + unsigned int _t916; + _t916 = String_Len(data); + _t917 = (int)_t916; + _t918 = &siglen; + const char* _t919; + _t919 = bux_rsa_sign_sha512(pemPrivateKey, _t915, data, _t917, _t918); + return _t919; } const char* Rsa_SignSha256Base64(const char* pemPrivateKey, const char* data) { - int _t931; + int _t922; const char* raw; - const char* _t929; - _t929 = Rsa_SignSha256(pemPrivateKey, data); - raw = _t929; - unsigned int _t930; - _t930 = String_Len(raw); - _t931 = (int)_t930; - const char* _t932; - _t932 = bux_base64_encode(raw, _t931); - return _t932; + const char* _t920; + _t920 = Rsa_SignSha256(pemPrivateKey, data); + raw = _t920; + unsigned int _t921; + _t921 = String_Len(raw); + _t922 = (int)_t921; + const char* _t923; + _t923 = bux_base64_encode(raw, _t922); + return _t923; } const char* Rsa_SignSha384Base64(const char* pemPrivateKey, const char* data) { - int _t935; + int _t926; const char* raw; - const char* _t933; - _t933 = Rsa_SignSha384(pemPrivateKey, data); - raw = _t933; - unsigned int _t934; - _t934 = String_Len(raw); - _t935 = (int)_t934; - const char* _t936; - _t936 = bux_base64_encode(raw, _t935); - return _t936; + const char* _t924; + _t924 = Rsa_SignSha384(pemPrivateKey, data); + raw = _t924; + unsigned int _t925; + _t925 = String_Len(raw); + _t926 = (int)_t925; + const char* _t927; + _t927 = bux_base64_encode(raw, _t926); + return _t927; } const char* Rsa_SignSha512Base64(const char* pemPrivateKey, const char* data) { - int _t939; + int _t930; const char* raw; - const char* _t937; - _t937 = Rsa_SignSha512(pemPrivateKey, data); - raw = _t937; - unsigned int _t938; - _t938 = String_Len(raw); - _t939 = (int)_t938; - const char* _t940; - _t940 = bux_base64_encode(raw, _t939); - return _t940; + const char* _t928; + _t928 = Rsa_SignSha512(pemPrivateKey, data); + raw = _t928; + unsigned int _t929; + _t929 = String_Len(raw); + _t930 = (int)_t929; + const char* _t931; + _t931 = bux_base64_encode(raw, _t930); + return _t931; } bool Rsa_VerifySha256(const char* pemPublicKey, const char* data, const char* signature) { - int _t942; - int _t944; - int _t946; - int _t948; + int _t933; + int _t935; + int _t937; + int _t939; int r; - unsigned int _t941; - _t941 = String_Len(pemPublicKey); - _t942 = (int)_t941; - unsigned int _t943; - _t943 = String_Len(data); - _t944 = (int)_t943; - unsigned int _t945; - _t945 = String_Len(signature); - _t946 = (int)_t945; - int _t947; - _t947 = bux_rsa_verify_sha256(pemPublicKey, _t942, data, _t944, signature, _t946); - r = _t947; - _t948 = (r == 1); - return _t948; + unsigned int _t932; + _t932 = String_Len(pemPublicKey); + _t933 = (int)_t932; + unsigned int _t934; + _t934 = String_Len(data); + _t935 = (int)_t934; + unsigned int _t936; + _t936 = String_Len(signature); + _t937 = (int)_t936; + int _t938; + _t938 = bux_rsa_verify_sha256(pemPublicKey, _t933, data, _t935, signature, _t937); + r = _t938; + _t939 = (r == 1); + return _t939; } bool Rsa_VerifySha384(const char* pemPublicKey, const char* data, const char* signature) { - int _t950; - int _t952; - int _t954; - int _t956; + int _t941; + int _t943; + int _t945; + int _t947; int r; - unsigned int _t949; - _t949 = String_Len(pemPublicKey); - _t950 = (int)_t949; - unsigned int _t951; - _t951 = String_Len(data); - _t952 = (int)_t951; - unsigned int _t953; - _t953 = String_Len(signature); - _t954 = (int)_t953; - int _t955; - _t955 = bux_rsa_verify_sha384(pemPublicKey, _t950, data, _t952, signature, _t954); - r = _t955; - _t956 = (r == 1); - return _t956; + unsigned int _t940; + _t940 = String_Len(pemPublicKey); + _t941 = (int)_t940; + unsigned int _t942; + _t942 = String_Len(data); + _t943 = (int)_t942; + unsigned int _t944; + _t944 = String_Len(signature); + _t945 = (int)_t944; + int _t946; + _t946 = bux_rsa_verify_sha384(pemPublicKey, _t941, data, _t943, signature, _t945); + r = _t946; + _t947 = (r == 1); + return _t947; } bool Rsa_VerifySha512(const char* pemPublicKey, const char* data, const char* signature) { - int _t958; - int _t960; - int _t962; - int _t964; + int _t949; + int _t951; + int _t953; + int _t955; int r; - unsigned int _t957; - _t957 = String_Len(pemPublicKey); - _t958 = (int)_t957; - unsigned int _t959; - _t959 = String_Len(data); - _t960 = (int)_t959; - unsigned int _t961; - _t961 = String_Len(signature); - _t962 = (int)_t961; - int _t963; - _t963 = bux_rsa_verify_sha512(pemPublicKey, _t958, data, _t960, signature, _t962); - r = _t963; - _t964 = (r == 1); - return _t964; + unsigned int _t948; + _t948 = String_Len(pemPublicKey); + _t949 = (int)_t948; + unsigned int _t950; + _t950 = String_Len(data); + _t951 = (int)_t950; + unsigned int _t952; + _t952 = String_Len(signature); + _t953 = (int)_t952; + int _t954; + _t954 = bux_rsa_verify_sha512(pemPublicKey, _t949, data, _t951, signature, _t953); + r = _t954; + _t955 = (r == 1); + return _t955; } bool Rsa_VerifySha256Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t966; - void* _t967; + int _t957; + void* _t958; int outlen; outlen = 0; const char* sig; - unsigned int _t965; - _t965 = String_Len(signatureB64); - _t966 = (int)_t965; - _t967 = &outlen; - const char* _t968; - _t968 = bux_base64_decode(signatureB64, _t966, _t967); - sig = _t968; - bool _t969; - _t969 = Rsa_VerifySha256(pemPublicKey, data, sig); - return _t969; + unsigned int _t956; + _t956 = String_Len(signatureB64); + _t957 = (int)_t956; + _t958 = &outlen; + const char* _t959; + _t959 = bux_base64_decode(signatureB64, _t957, _t958); + sig = _t959; + bool _t960; + _t960 = Rsa_VerifySha256(pemPublicKey, data, sig); + return _t960; } bool Rsa_VerifySha384Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t971; - void* _t972; + int _t962; + void* _t963; int outlen; outlen = 0; const char* sig; - unsigned int _t970; - _t970 = String_Len(signatureB64); - _t971 = (int)_t970; - _t972 = &outlen; - const char* _t973; - _t973 = bux_base64_decode(signatureB64, _t971, _t972); - sig = _t973; - bool _t974; - _t974 = Rsa_VerifySha384(pemPublicKey, data, sig); - return _t974; + unsigned int _t961; + _t961 = String_Len(signatureB64); + _t962 = (int)_t961; + _t963 = &outlen; + const char* _t964; + _t964 = bux_base64_decode(signatureB64, _t962, _t963); + sig = _t964; + bool _t965; + _t965 = Rsa_VerifySha384(pemPublicKey, data, sig); + return _t965; } bool Rsa_VerifySha512Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t976; - void* _t977; + int _t967; + void* _t968; int outlen; outlen = 0; const char* sig; - unsigned int _t975; - _t975 = String_Len(signatureB64); - _t976 = (int)_t975; - _t977 = &outlen; - const char* _t978; - _t978 = bux_base64_decode(signatureB64, _t976, _t977); - sig = _t978; - bool _t979; - _t979 = Rsa_VerifySha512(pemPublicKey, data, sig); - return _t979; + unsigned int _t966; + _t966 = String_Len(signatureB64); + _t967 = (int)_t966; + _t968 = &outlen; + const char* _t969; + _t969 = bux_base64_decode(signatureB64, _t967, _t968); + sig = _t969; + bool _t970; + _t970 = Rsa_VerifySha512(pemPublicKey, data, sig); + return _t970; } const char* ColorName(Color c) { - int _t980; - int _t981; - int _t982; - _t980 = (c == Color_Red); - if (!_t980) goto endif321; + int _t971; + int _t972; + int _t973; + _t971 = (c == Color_Red); + if (!_t971) goto endif308; { return "Red"; } - endif321:; - _t981 = (c == Color_Green); - if (!_t981) goto endif323; + endif308:; + _t972 = (c == Color_Green); + if (!_t972) goto endif310; { return "Green"; } - endif323:; - _t982 = (c == Color_Blue); - if (!_t982) goto endif325; + endif310:; + _t973 = (c == Color_Blue); + if (!_t973) goto endif312; { return "Blue"; } - endif325:; + endif312:; return "Unknown"; } int Main(void) { - int _t984; + int _t975; Color myColor; myColor = Color_Green; PrintLine("My color is:"); - const char* _t983; - _t983 = ColorName(myColor); - PrintLine(_t983); + const char* _t974; + _t974 = ColorName(myColor); + PrintLine(_t974); PrintLine("Color value:"); - _t984 = (int)myColor; - PrintInt(_t984); + _t975 = (int)myColor; + PrintInt(_t975); PrintLine(""); return 0; } diff --git a/tests/golden/fibonacci/expected.c b/tests/golden/fibonacci/expected.c index a4b8171..404bec1 100644 --- a/tests/golden/fibonacci/expected.c +++ b/tests/golden/fibonacci/expected.c @@ -198,6 +198,34 @@ extern const char* bux_base64_decode(const char* data, int len, int* outlen); #define ED25519_PRIVKEY_SIZE 32 #define ED25519_SIG_SIZE 64 +typedef struct Channel_float64 { + void* handle; +} Channel_float64; + +typedef struct TaskHandle { + void* handle; +} TaskHandle; + +typedef struct RwLock { + void* handle; +} RwLock; + +typedef struct Channel_int { + void* handle; +} Channel_int; + +typedef enum { + JwtAlg_HS256, + JwtAlg_HS384, + JwtAlg_HS512, + JwtAlg_RS256, + JwtAlg_RS384, + JwtAlg_RS512, + JwtAlg_ES256, + JwtAlg_ES384, + JwtAlg_EdDSA +} JwtAlg; + typedef enum { Result_Ok, Result_Err @@ -227,31 +255,6 @@ typedef struct { Option_Data data; } Option; -typedef enum { - JwtAlg_HS256, - JwtAlg_HS384, - JwtAlg_HS512, - JwtAlg_RS256, - JwtAlg_RS384, - JwtAlg_RS512, - JwtAlg_ES256, - JwtAlg_ES384, - JwtAlg_EdDSA -} JwtAlg; - - -typedef struct TaskHandle { - void* handle; -} TaskHandle; - -typedef struct Mutex { - void* handle; -} Mutex; - -typedef struct RwLock { - void* handle; -} RwLock; - typedef struct JsonValue { int tag; bool boolVal; @@ -266,6 +269,14 @@ typedef struct JsonValue { unsigned int objCap; } JsonValue; +typedef struct Mutex { + void* handle; +} Mutex; + +typedef struct StringBuilder { + void* handle; +} StringBuilder; + typedef struct JsonParser { const char* src; unsigned int pos; @@ -273,18 +284,6 @@ typedef struct JsonParser { const char* error; } JsonParser; -typedef struct StringBuilder { - void* handle; -} StringBuilder; - -typedef struct Channel_int { - void* handle; -} Channel_int; - -typedef struct Channel_float64 { - void* handle; -} Channel_float64; - bool DirExists(const char* path); bool Mkdir(const char* path); const char** ListDir(const char* dir, const char* ext, int* count); @@ -867,7 +866,7 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { tmplLen = _t60; while1:; _t61 = (i < tmplLen); - if (!_t61) goto wend3; + if (!_t61) goto wend2; { const char* ch; const char* _t62; @@ -875,13 +874,13 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { ch = _t62; bool _t63; _t63 = String_Eq(ch, "{"); - if (!_t63) goto endif5; + if (!_t63) goto endif4; { unsigned int digitIdx; _t64 = i + 1; digitIdx = _t64; _t65 = (digitIdx < tmplLen); - if (!_t65) goto endif7; + if (!_t65) goto endif6; { const char* digitCh; const char* _t66; @@ -893,22 +892,22 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { d = _t67; bool __and_tmp_0; _t68 = (d >= 0); - if (!_t68) goto else8; + if (!_t68) goto else7; _t69 = (int64_t)argCount; _t70 = (d < _t69); *(bool*)&__and_tmp_0 = _t70; - goto endif9; - else8:; + goto endif8; + else7:; *(bool*)&__and_tmp_0 = 0; - endif9:; + endif8:; bool _t71; _t71 = *(bool*)&__and_tmp_0; - if (!_t71) goto endif11; + if (!_t71) goto endif10; { _t72 = i + 2; i = _t72; _t73 = (i < tmplLen); - if (!_t73) goto endif13; + if (!_t73) goto endif12; { const char* closeCh; const char* _t74; @@ -916,7 +915,7 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { closeCh = _t74; bool _t75; _t75 = String_Eq(closeCh, "}"); - if (!_t75) goto endif15; + if (!_t75) goto endif14; { _t76 = i + 1; i = _t76; @@ -929,22 +928,22 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { StringBuilder_Append(_t79, argStr); goto while1; } - endif15:; + endif14:; } - endif13:; + endif12:; } - endif11:; + endif10:; } - endif7:; + endif6:; } - endif5:; + endif4:; _t80 = &sb; StringBuilder_Append(_t80, ch); _t81 = i + 1; i = _t81; } goto while1; - wend3:; + wend2:; _t82 = &sb; const char* _t83; _t83 = StringBuilder_Build(_t82); @@ -952,276 +951,276 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { } const char* Fmt_Fmt1(const char* tmpl, const char* a1) { - const char** _t86; + const char** _t85; const char** args; /* sizeof(const char*) */ - void* _t85; - _t85 = bux_alloc(sizeof(const char*)); - _t86 = (const char**)_t85; - args = _t86; + void* _t84; + _t84 = bux_alloc(sizeof(const char*)); + _t85 = (const char**)_t84; + args = _t85; args[0] = a1; - const char* _t87; - _t87 = Fmt_Format(tmpl, args, 1); - return _t87; + const char* _t86; + _t86 = Fmt_Format(tmpl, args, 1); + return _t86; } const char* Fmt_FmtInt(const char* tmpl, int64_t val) { const char* s; + const char* _t87; + _t87 = String_FromInt(val); + s = _t87; const char* _t88; - _t88 = String_FromInt(val); - s = _t88; - const char* _t89; - _t89 = Fmt_Fmt1(tmpl, s); - return _t89; + _t88 = Fmt_Fmt1(tmpl, s); + return _t88; } const char* Fmt_FmtBool(const char* tmpl, bool val) { const char* s; + const char* _t89; + _t89 = String_FromBool(val); + s = _t89; const char* _t90; - _t90 = String_FromBool(val); - s = _t90; - const char* _t91; - _t91 = Fmt_Fmt1(tmpl, s); - return _t91; + _t90 = Fmt_Fmt1(tmpl, s); + return _t90; } const char* Fmt_FmtFloat(const char* tmpl, double val) { const char* s; + const char* _t91; + _t91 = String_FromFloat(val); + s = _t91; const char* _t92; - _t92 = String_FromFloat(val); - s = _t92; - const char* _t93; - _t93 = Fmt_Fmt1(tmpl, s); - return _t93; + _t92 = Fmt_Fmt1(tmpl, s); + return _t92; } const char* Fmt_Fmt2(const char* tmpl, const char* a1, const char* a2) { - int _t95; - const char** _t97; + int _t93; + const char** _t95; const char** args; /* sizeof(const char*) */ - _t95 = 2 * sizeof(const char*); - void* _t96; - _t96 = bux_alloc(_t95); - _t97 = (const char**)_t96; - args = _t97; + _t93 = 2 * sizeof(const char*); + void* _t94; + _t94 = bux_alloc(_t93); + _t95 = (const char**)_t94; + args = _t95; args[0] = a1; args[1] = a2; - const char* _t98; - _t98 = Fmt_Format(tmpl, args, 2); - return _t98; + const char* _t96; + _t96 = Fmt_Format(tmpl, args, 2); + return _t96; } const char* Fmt_Fmt3(const char* tmpl, const char* a1, const char* a2, const char* a3) { - int _t100; - const char** _t102; + int _t97; + const char** _t99; const char** args; /* sizeof(const char*) */ - _t100 = 3 * sizeof(const char*); - void* _t101; - _t101 = bux_alloc(_t100); - _t102 = (const char**)_t101; - args = _t102; + _t97 = 3 * sizeof(const char*); + void* _t98; + _t98 = bux_alloc(_t97); + _t99 = (const char**)_t98; + args = _t99; args[0] = a1; args[1] = a2; args[2] = a3; - const char* _t103; - _t103 = Fmt_Format(tmpl, args, 3); - return _t103; + const char* _t100; + _t100 = Fmt_Format(tmpl, args, 3); + return _t100; } const char* Crypto_Sha256(const char* data) { - int _t105; - void* _t107; + int _t102; + void* _t104; int len; - unsigned int _t104; - _t104 = String_Len(data); - _t105 = (int)_t104; - len = _t105; + unsigned int _t101; + _t101 = String_Len(data); + _t102 = (int)_t101; + len = _t102; void* hashBuf; - void* _t106; - _t106 = Alloc(32); - hashBuf = _t106; + void* _t103; + _t103 = Alloc(32); + hashBuf = _t103; bux_sha256(data, len, hashBuf); const char* result; - _t107 = (void*)hashBuf; - const char* _t108; - _t108 = bux_bytes_to_hex(_t107, 32); - result = _t108; + _t104 = (void*)hashBuf; + const char* _t105; + _t105 = bux_bytes_to_hex(_t104, 32); + result = _t105; Free(hashBuf); return result; } const char* Crypto_HmacSha256(const char* key, const char* message) { - int _t110; - int _t112; - void* _t114; + int _t107; + int _t109; + void* _t111; int keylen; - unsigned int _t109; - _t109 = String_Len(key); - _t110 = (int)_t109; - keylen = _t110; + unsigned int _t106; + _t106 = String_Len(key); + _t107 = (int)_t106; + keylen = _t107; int msglen; - unsigned int _t111; - _t111 = String_Len(message); - _t112 = (int)_t111; - msglen = _t112; + unsigned int _t108; + _t108 = String_Len(message); + _t109 = (int)_t108; + msglen = _t109; void* hmacBuf; - void* _t113; - _t113 = Alloc(32); - hmacBuf = _t113; + void* _t110; + _t110 = Alloc(32); + hmacBuf = _t110; bux_hmac_sha256(key, keylen, message, msglen, hmacBuf); const char* result; - _t114 = (void*)hmacBuf; - const char* _t115; - _t115 = bux_bytes_to_hex(_t114, 32); - result = _t115; + _t111 = (void*)hmacBuf; + const char* _t112; + _t112 = bux_bytes_to_hex(_t111, 32); + result = _t112; Free(hmacBuf); return result; } const char* Crypto_RandomBytes(int n) { - int _t116; - unsigned int _t117; - int _t120; - const char* _t121; - _t116 = (n <= 0); - if (!_t116) goto endif17; + int _t113; + unsigned int _t114; + int _t117; + const char* _t118; + _t113 = (n <= 0); + if (!_t113) goto endif16; { return ""; } - endif17:; + endif16:; void* buf; - _t117 = (unsigned int)n; - void* _t118; - _t118 = Alloc(_t117); - buf = _t118; - int _t119; - _t119 = bux_random_bytes(buf, n); - _t120 = (_t119 != 1); - if (!_t120) goto endif19; + _t114 = (unsigned int)n; + void* _t115; + _t115 = Alloc(_t114); + buf = _t115; + int _t116; + _t116 = bux_random_bytes(buf, n); + _t117 = (_t116 != 1); + if (!_t117) goto endif18; { Free(buf); return ""; } - endif19:; + endif18:; const char* result; - _t121 = (const char*)buf; - const char* _t122; - _t122 = bux_base64_encode(_t121, n); - result = _t122; + _t118 = (const char*)buf; + const char* _t119; + _t119 = bux_base64_encode(_t118, n); + result = _t119; Free(buf); return result; } const char* Crypto_Base64Encode(const char* s) { - int _t124; - unsigned int _t123; - _t123 = String_Len(s); - _t124 = (int)_t123; - const char* _t125; - _t125 = bux_base64_encode(s, _t124); - return _t125; + int _t121; + unsigned int _t120; + _t120 = String_Len(s); + _t121 = (int)_t120; + const char* _t122; + _t122 = bux_base64_encode(s, _t121); + return _t122; } const char* Crypto_HmacSha256Raw(const char* key, const char* message) { - int _t127; - int _t129; - const char* _t131; + int _t124; + int _t126; + const char* _t128; int keylen; - unsigned int _t126; - _t126 = String_Len(key); - _t127 = (int)_t126; - keylen = _t127; + unsigned int _t123; + _t123 = String_Len(key); + _t124 = (int)_t123; + keylen = _t124; int msglen; - unsigned int _t128; - _t128 = String_Len(message); - _t129 = (int)_t128; - msglen = _t129; + unsigned int _t125; + _t125 = String_Len(message); + _t126 = (int)_t125; + msglen = _t126; void* hmacBuf; - void* _t130; - _t130 = Alloc(32); - hmacBuf = _t130; + void* _t127; + _t127 = Alloc(32); + hmacBuf = _t127; bux_hmac_sha256(key, keylen, message, msglen, hmacBuf); const char* result; - _t131 = (const char*)hmacBuf; - const char* _t132; - _t132 = bux_base64_encode(_t131, 32); - result = _t132; + _t128 = (const char*)hmacBuf; + const char* _t129; + _t129 = bux_base64_encode(_t128, 32); + result = _t129; Free(hmacBuf); return result; } const char* Crypto_Base64Decode(const char* s) { - int _t134; - void* _t135; + int _t131; + void* _t132; int outlen; outlen = 0; - unsigned int _t133; - _t133 = String_Len(s); - _t134 = (int)_t133; - _t135 = &outlen; - const char* _t136; - _t136 = bux_base64_decode(s, _t134, _t135); - return _t136; + unsigned int _t130; + _t130 = String_Len(s); + _t131 = (int)_t130; + _t132 = &outlen; + const char* _t133; + _t133 = bux_base64_decode(s, _t131, _t132); + return _t133; } Mutex Mutex_New(void) { - Mutex _t138; - void* _t137; - _t137 = bux_mutex_new(); - _t138 = (Mutex){.handle = _t137}; - return _t138; + Mutex _t135; + void* _t134; + _t134 = bux_mutex_new(); + _t135 = (Mutex){.handle = _t134}; + return _t135; } void Mutex_Lock(Mutex* m) { - void* _t139; - _t139 = m->handle; - bux_mutex_lock(_t139); + void* _t136; + _t136 = m->handle; + bux_mutex_lock(_t136); } void Mutex_Unlock(Mutex* m) { - void* _t140; - _t140 = m->handle; - bux_mutex_unlock(_t140); + void* _t137; + _t137 = m->handle; + bux_mutex_unlock(_t137); } void Mutex_Free(Mutex* m) { - void* _t141; - _t141 = m->handle; - bux_mutex_free(_t141); + void* _t138; + _t138 = m->handle; + bux_mutex_free(_t138); } RwLock RwLock_New(void) { - RwLock _t143; - void* _t142; - _t142 = bux_rwlock_new(); - _t143 = (RwLock){.handle = _t142}; - return _t143; + RwLock _t140; + void* _t139; + _t139 = bux_rwlock_new(); + _t140 = (RwLock){.handle = _t139}; + return _t140; } void RwLock_ReadLock(RwLock* rw) { - void* _t144; - _t144 = rw->handle; - bux_rwlock_rdlock(_t144); + void* _t141; + _t141 = rw->handle; + bux_rwlock_rdlock(_t141); } void RwLock_WriteLock(RwLock* rw) { - void* _t145; - _t145 = rw->handle; - bux_rwlock_wrlock(_t145); + void* _t142; + _t142 = rw->handle; + bux_rwlock_wrlock(_t142); } void RwLock_Unlock(RwLock* rw) { - void* _t146; - _t146 = rw->handle; - bux_rwlock_unlock(_t146); + void* _t143; + _t143 = rw->handle; + bux_rwlock_unlock(_t143); } void RwLock_Free(RwLock* rw) { - void* _t147; - _t147 = rw->handle; - bux_rwlock_free(_t147); + void* _t144; + _t144 = rw->handle; + bux_rwlock_free(_t144); } void Test_Exit(int code) { @@ -1229,15 +1228,15 @@ void Test_Exit(int code) { } void Test_Assert(bool cond) { - int _t148; - _t148 = (int)cond; - bux_assert(_t148, "", 0, ""); + int _t145; + _t145 = (int)cond; + bux_assert(_t145, "", 0, ""); } void Test_AssertEqInt(int a, int b) { - int _t149; - _t149 = (a != b); - if (!_t149) goto endif21; + int _t146; + _t146 = (a != b); + if (!_t146) goto endif20; { PrintLine("ASSERT_EQ FAILED:"); PrintInt(a); @@ -1245,27 +1244,27 @@ void Test_AssertEqInt(int a, int b) { PrintInt(b); bux_exit(1); } - endif21:; + endif20:; } void Test_AssertTrue(bool cond) { - int _t150; - _t150 = !cond; - if (!_t150) goto endif23; + int _t147; + _t147 = !cond; + if (!_t147) goto endif22; { PrintLine("ASSERT_TRUE FAILED"); bux_exit(1); } - endif23:; + endif22:; } void Test_AssertFalse(bool cond) { - if (!cond) goto endif25; + if (!cond) goto endif24; { PrintLine("ASSERT_FALSE FAILED"); bux_exit(1); } - endif25:; + endif24:; } void Test_Fail(const char* msg) { @@ -1275,735 +1274,744 @@ void Test_Fail(const char* msg) { } Result Result_NewOk(int value) { - Result _t151; + Result _t148; Result r; - _t151 = (Result){.tag = Result_Ok}; - r = _t151; + _t148 = (Result){.tag = Result_Ok}; + r = _t148; r.data.Ok_0 = value; return r; } Result Result_NewErr(const char* msg) { - Result _t152; + Result _t149; Result r; - _t152 = (Result){.tag = Result_Err}; - r = _t152; + _t149 = (Result){.tag = Result_Err}; + r = _t149; r.data.Err_0 = msg; return r; } bool Result_IsOk(Result r) { - int _t154; - Result_Tag _t153; - _t153 = r.tag; - _t154 = (_t153 == Result_Ok); - return _t154; + int _t151; + Result_Tag _t150; + _t150 = r.tag; + _t151 = (_t150 == Result_Ok); + return _t151; } bool Result_IsErr(Result r) { - int _t156; - Result_Tag _t155; - _t155 = r.tag; - _t156 = (_t155 == Result_Err); - return _t156; + int _t153; + Result_Tag _t152; + _t152 = r.tag; + _t153 = (_t152 == Result_Err); + return _t153; } int Result_Unwrap(Result r) { - int _t158; - Result_Tag _t157; - _t157 = r.tag; - _t158 = (_t157 != Result_Ok); - if (!_t158) goto endif27; + int _t155; + Result_Tag _t154; + _t154 = r.tag; + _t155 = (_t154 != Result_Ok); + if (!_t155) goto endif26; { PrintLine("panic: unwrap on Err"); return 0; } - endif27:; - Result_Data _t159; - _t159 = r.data; - int _t160; - _t160 = _t159.Ok_0; - return _t160; + endif26:; + Result_Data _t156; + _t156 = r.data; + int _t157; + _t157 = _t156.Ok_0; + return _t157; } int Result_UnwrapOr(Result r, int fallback) { - int _t162; - Result_Tag _t161; - _t161 = r.tag; - _t162 = (_t161 == Result_Ok); - if (!_t162) goto endif29; + int _t159; + Result_Tag _t158; + _t158 = r.tag; + _t159 = (_t158 == Result_Ok); + if (!_t159) goto endif28; { - Result_Data _t163; - _t163 = r.data; - int _t164; - _t164 = _t163.Ok_0; - return _t164; + Result_Data _t160; + _t160 = r.data; + int _t161; + _t161 = _t160.Ok_0; + return _t161; } - endif29:; + endif28:; return fallback; } Option Option_NewSome(int value) { - Option _t165; + Option _t162; Option o; - _t165 = (Option){.tag = Option_Some}; - o = _t165; + _t162 = (Option){.tag = Option_Some}; + o = _t162; o.data.Some_0 = value; return o; } Option Option_NewNone(void) { - Option _t166; - _t166 = (Option){.tag = Option_None}; - return _t166; + Option _t163; + _t163 = (Option){.tag = Option_None}; + return _t163; } bool Option_IsSome(Option o) { - int _t168; - Option_Tag _t167; - _t167 = o.tag; - _t168 = (_t167 == Option_Some); - return _t168; + int _t165; + Option_Tag _t164; + _t164 = o.tag; + _t165 = (_t164 == Option_Some); + return _t165; } bool Option_IsNone(Option o) { - int _t170; - Option_Tag _t169; - _t169 = o.tag; - _t170 = (_t169 == Option_None); - return _t170; + int _t167; + Option_Tag _t166; + _t166 = o.tag; + _t167 = (_t166 == Option_None); + return _t167; } int Option_Unwrap(Option o) { - int _t172; - Option_Tag _t171; - _t171 = o.tag; - _t172 = (_t171 != Option_Some); - if (!_t172) goto endif31; + int _t169; + Option_Tag _t168; + _t168 = o.tag; + _t169 = (_t168 != Option_Some); + if (!_t169) goto endif30; { PrintLine("panic: unwrap on None"); return 0; } - endif31:; - Option_Data _t173; - _t173 = o.data; - int _t174; - _t174 = _t173.Some_0; - return _t174; + endif30:; + Option_Data _t170; + _t170 = o.data; + int _t171; + _t171 = _t170.Some_0; + return _t171; } int Option_UnwrapOr(Option o, int fallback) { - int _t176; - Option_Tag _t175; - _t175 = o.tag; - _t176 = (_t175 == Option_Some); - if (!_t176) goto endif33; + int _t173; + Option_Tag _t172; + _t172 = o.tag; + _t173 = (_t172 == Option_Some); + if (!_t173) goto endif32; { - Option_Data _t177; - _t177 = o.data; - int _t178; - _t178 = _t177.Some_0; - return _t178; + Option_Data _t174; + _t174 = o.data; + int _t175; + _t175 = _t174.Some_0; + return _t175; } - endif33:; + endif32:; return fallback; } JsonValue Json_Null(void) { - JsonValue _t179; - _t179 = (JsonValue){.tag = JsonTagNull, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t179; + JsonValue _t176; + _t176 = (JsonValue){.tag = JsonTagNull, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t176; } JsonValue Json_Bool(bool b) { - JsonValue _t180; - _t180 = (JsonValue){.tag = JsonTagBool, .boolVal = b, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t180; + JsonValue _t177; + _t177 = (JsonValue){.tag = JsonTagBool, .boolVal = b, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t177; } JsonValue Json_Number(double n) { - JsonValue _t181; - _t181 = (JsonValue){.tag = JsonTagNumber, .boolVal = 0, .numVal = n, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t181; + JsonValue _t178; + _t178 = (JsonValue){.tag = JsonTagNumber, .boolVal = 0, .numVal = n, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t178; } JsonValue Json_String(const char* s) { - JsonValue _t182; - _t182 = (JsonValue){.tag = JsonTagString, .boolVal = 0, .numVal = 0.0, .strVal = s, .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t182; + JsonValue _t179; + _t179 = (JsonValue){.tag = JsonTagString, .boolVal = 0, .numVal = 0.0, .strVal = s, .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t179; } JsonValue Json_Array(void) { - JsonValue _t183; - _t183 = (JsonValue){.tag = JsonTagArray, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t183; + JsonValue _t180; + _t180 = (JsonValue){.tag = JsonTagArray, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t180; } JsonValue Json_Object(void) { - JsonValue _t184; - _t184 = (JsonValue){.tag = JsonTagObject, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t184; + JsonValue _t181; + _t181 = (JsonValue){.tag = JsonTagObject, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t181; } unsigned int Json_ArrayLen(JsonValue v) { - int _t186; - int _t185; - _t185 = v.tag; - _t186 = (_t185 != JsonTagArray); - if (!_t186) goto endif35; + int _t183; + int _t182; + _t182 = v.tag; + _t183 = (_t182 != JsonTagArray); + if (!_t183) goto endif34; { return 0; } - endif35:; - unsigned int _t187; - _t187 = v.arrLen; - return _t187; + endif34:; + unsigned int _t184; + _t184 = v.arrLen; + return _t184; } JsonValue Json_ArrayGet(JsonValue v, unsigned int index) { + int _t186; int _t189; - int _t192; - int _t188; - _t188 = v.tag; - _t189 = (_t188 != JsonTagArray); - if (!_t189) goto endif37; + int _t185; + _t185 = v.tag; + _t186 = (_t185 != JsonTagArray); + if (!_t186) goto endif36; + { + JsonValue _t187; + _t187 = Json_Null(); + return _t187; + } + endif36:; + unsigned int _t188; + _t188 = v.arrLen; + _t189 = (index >= _t188); + if (!_t189) goto endif38; { JsonValue _t190; _t190 = Json_Null(); return _t190; } - endif37:; - unsigned int _t191; - _t191 = v.arrLen; - _t192 = (index >= _t191); - if (!_t192) goto endif39; - { - JsonValue _t193; - _t193 = Json_Null(); - return _t193; - } - endif39:; - JsonValue* _t194; - _t194 = v.arrData; - JsonValue _t195; - _t195 = _t194[index]; - return _t195; + endif38:; + JsonValue* _t191; + _t191 = v.arrData; + JsonValue _t192; + _t192 = _t191[index]; + return _t192; } void Json_ArrayPush(JsonValue* self, JsonValue val) { + int _t194; int _t197; + int _t199; int _t200; - int _t202; - int _t204; - JsonValue* _t206; - int _t207; - void* _t209; - int _t211; - JsonValue* _t213; - int _t217; - int _t196; - _t196 = self->tag; - _t197 = (_t196 != JsonTagArray); - if (!_t197) goto endif41; + JsonValue* _t202; + int _t203; + void* _t205; + int _t206; + JsonValue* _t208; + int _t212; + int _t193; + _t193 = self->tag; + _t194 = (_t193 != JsonTagArray); + if (!_t194) goto endif40; { return; } - endif41:; - unsigned int _t198; - _t198 = self->arrLen; - unsigned int _t199; - _t199 = self->arrCap; - _t200 = (_t198 >= _t199); - if (!_t200) goto endif43; + endif40:; + unsigned int _t195; + _t195 = self->arrLen; + unsigned int _t196; + _t196 = self->arrCap; + _t197 = (_t195 >= _t196); + if (!_t197) goto endif42; { unsigned int arrNewCap; - unsigned int _t201; - _t201 = self->arrCap; - arrNewCap = _t201; - _t202 = (arrNewCap == 0); - if (!_t202) goto else44; + unsigned int _t198; + _t198 = self->arrCap; + arrNewCap = _t198; + _t199 = (arrNewCap == 0); + if (!_t199) goto else43; { self->arrCap = 4; /* sizeof(JsonValue) */ - _t204 = 4 * sizeof(JsonValue); - void* _t205; - _t205 = Alloc(_t204); - _t206 = (JsonValue*)_t205; - self->arrData = _t206; + _t200 = 4 * sizeof(JsonValue); + void* _t201; + _t201 = Alloc(_t200); + _t202 = (JsonValue*)_t201; + self->arrData = _t202; } - goto endif45; - else44:; + goto endif44; + else43:; { unsigned int doubleCap; - _t207 = arrNewCap * 2; - doubleCap = _t207; + _t203 = arrNewCap * 2; + doubleCap = _t203; self->arrCap = doubleCap; - JsonValue* _t208; - _t208 = self->arrData; - _t209 = (void*)_t208; + JsonValue* _t204; + _t204 = self->arrData; + _t205 = (void*)_t204; /* sizeof(JsonValue) */ - _t211 = doubleCap * sizeof(JsonValue); - void* _t212; - _t212 = Realloc(_t209, _t211); - _t213 = (JsonValue*)_t212; - self->arrData = _t213; + _t206 = doubleCap * sizeof(JsonValue); + void* _t207; + _t207 = Realloc(_t205, _t206); + _t208 = (JsonValue*)_t207; + self->arrData = _t208; } - endif45:; + endif44:; } - endif43:; - JsonValue* _t214; - _t214 = self->arrData; - unsigned int _t215; - _t215 = self->arrLen; - _t214[_t215] = val; - unsigned int _t216; - _t216 = self->arrLen; - _t217 = _t216 + 1; - self->arrLen = _t217; + endif42:; + JsonValue* _t209; + _t209 = self->arrData; + unsigned int _t210; + _t210 = self->arrLen; + _t209[_t210] = val; + unsigned int _t211; + _t211 = self->arrLen; + _t212 = _t211 + 1; + self->arrLen = _t212; } unsigned int Json_ObjectLen(JsonValue v) { - int _t219; - int _t218; - _t218 = v.tag; - _t219 = (_t218 != JsonTagObject); - if (!_t219) goto endif47; + int _t214; + int _t213; + _t213 = v.tag; + _t214 = (_t213 != JsonTagObject); + if (!_t214) goto endif46; { return 0; } - endif47:; - unsigned int _t220; - _t220 = v.objLen; - return _t220; + endif46:; + unsigned int _t215; + _t215 = v.objLen; + return _t215; } JsonValue Json_ObjectGet(JsonValue v, const char* key) { - int _t222; - int _t225; - int _t231; - int _t221; - _t221 = v.tag; - _t222 = (_t221 != JsonTagObject); - if (!_t222) goto endif49; + int _t217; + int _t220; + int _t226; + int _t216; + _t216 = v.tag; + _t217 = (_t216 != JsonTagObject); + if (!_t217) goto endif48; { - JsonValue _t223; - _t223 = Json_Null(); - return _t223; + JsonValue _t218; + _t218 = Json_Null(); + return _t218; } - endif49:; + endif48:; unsigned int i; i = 0; - while50:; - unsigned int _t224; - _t224 = v.objLen; - _t225 = (i < _t224); - if (!_t225) goto wend52; + while49:; + unsigned int _t219; + _t219 = v.objLen; + _t220 = (i < _t219); + if (!_t220) goto wend50; { - const char** _t226; - _t226 = v.objKeys; - const char* _t227; - _t227 = _t226[i]; - bool _t228; - _t228 = String_Eq(_t227, key); - if (!_t228) goto endif54; + const char** _t221; + _t221 = v.objKeys; + const char* _t222; + _t222 = _t221[i]; + bool _t223; + _t223 = String_Eq(_t222, key); + if (!_t223) goto endif52; { - JsonValue* _t229; - _t229 = v.objValues; - JsonValue _t230; - _t230 = _t229[i]; - return _t230; + JsonValue* _t224; + _t224 = v.objValues; + JsonValue _t225; + _t225 = _t224[i]; + return _t225; } - endif54:; - _t231 = i + 1; - i = _t231; + endif52:; + _t226 = i + 1; + i = _t226; } - goto while50; - wend52:; - JsonValue _t232; - _t232 = Json_Null(); - return _t232; + goto while49; + wend50:; + JsonValue _t227; + _t227 = Json_Null(); + return _t227; } bool Json_ObjectHas(JsonValue v, const char* key) { - int _t234; - int _t236; - int _t240; - int _t233; - _t233 = v.tag; - _t234 = (_t233 != JsonTagObject); - if (!_t234) goto endif56; + int _t229; + int _t231; + int _t235; + int _t228; + _t228 = v.tag; + _t229 = (_t228 != JsonTagObject); + if (!_t229) goto endif54; { return 0; } - endif56:; + endif54:; unsigned int i; i = 0; - while57:; - unsigned int _t235; - _t235 = v.objLen; - _t236 = (i < _t235); - if (!_t236) goto wend59; + while55:; + unsigned int _t230; + _t230 = v.objLen; + _t231 = (i < _t230); + if (!_t231) goto wend56; { - const char** _t237; - _t237 = v.objKeys; - const char* _t238; - _t238 = _t237[i]; - bool _t239; - _t239 = String_Eq(_t238, key); - if (!_t239) goto endif61; + const char** _t232; + _t232 = v.objKeys; + const char* _t233; + _t233 = _t232[i]; + bool _t234; + _t234 = String_Eq(_t233, key); + if (!_t234) goto endif58; { return 1; } - endif61:; - _t240 = i + 1; - i = _t240; + endif58:; + _t235 = i + 1; + i = _t235; } - goto while57; - wend59:; + goto while55; + wend56:; return 0; } void Json_ObjectSet(JsonValue* self, const char* key, JsonValue val) { - int _t242; + int _t237; + int _t239; int _t244; + int _t247; int _t249; - int _t252; - int _t254; + int _t250; + const char** _t252; + int _t253; + JsonValue* _t255; int _t256; - const char** _t258; - int _t260; - JsonValue* _t262; - int _t263; - void* _t265; - int _t267; - const char** _t269; - void* _t271; - int _t273; - JsonValue* _t275; - int _t281; - int _t241; - _t241 = self->tag; - _t242 = (_t241 != JsonTagObject); - if (!_t242) goto endif63; + void* _t258; + int _t259; + const char** _t261; + void* _t263; + int _t264; + JsonValue* _t266; + int _t272; + int _t236; + _t236 = self->tag; + _t237 = (_t236 != JsonTagObject); + if (!_t237) goto endif60; { return; } - endif63:; + endif60:; unsigned int i; i = 0; - while64:; - unsigned int _t243; - _t243 = self->objLen; - _t244 = (i < _t243); - if (!_t244) goto wend66; + while61:; + unsigned int _t238; + _t238 = self->objLen; + _t239 = (i < _t238); + if (!_t239) goto wend62; { - const char** _t245; - _t245 = self->objKeys; - const char* _t246; - _t246 = _t245[i]; - bool _t247; - _t247 = String_Eq(_t246, key); - if (!_t247) goto endif68; + const char** _t240; + _t240 = self->objKeys; + const char* _t241; + _t241 = _t240[i]; + bool _t242; + _t242 = String_Eq(_t241, key); + if (!_t242) goto endif64; { - JsonValue* _t248; - _t248 = self->objValues; - _t248[i] = val; + JsonValue* _t243; + _t243 = self->objValues; + _t243[i] = val; return; } - endif68:; - _t249 = i + 1; - i = _t249; + endif64:; + _t244 = i + 1; + i = _t244; } - goto while64; - wend66:; - unsigned int _t250; - _t250 = self->objLen; - unsigned int _t251; - _t251 = self->objCap; - _t252 = (_t250 >= _t251); - if (!_t252) goto endif70; + goto while61; + wend62:; + unsigned int _t245; + _t245 = self->objLen; + unsigned int _t246; + _t246 = self->objCap; + _t247 = (_t245 >= _t246); + if (!_t247) goto endif66; { unsigned int objNewCap; - unsigned int _t253; - _t253 = self->objCap; - objNewCap = _t253; - _t254 = (objNewCap == 0); - if (!_t254) goto else71; + unsigned int _t248; + _t248 = self->objCap; + objNewCap = _t248; + _t249 = (objNewCap == 0); + if (!_t249) goto else67; { self->objCap = 4; /* sizeof(const char*) */ - _t256 = 4 * sizeof(const char*); - void* _t257; - _t257 = Alloc(_t256); - _t258 = (const char**)_t257; - self->objKeys = _t258; + _t250 = 4 * sizeof(const char*); + void* _t251; + _t251 = Alloc(_t250); + _t252 = (const char**)_t251; + self->objKeys = _t252; /* sizeof(JsonValue) */ - _t260 = 4 * sizeof(JsonValue); - void* _t261; - _t261 = Alloc(_t260); - _t262 = (JsonValue*)_t261; - self->objValues = _t262; + _t253 = 4 * sizeof(JsonValue); + void* _t254; + _t254 = Alloc(_t253); + _t255 = (JsonValue*)_t254; + self->objValues = _t255; } - goto endif72; - else71:; + goto endif68; + else67:; { unsigned int doubleCap; - _t263 = objNewCap * 2; - doubleCap = _t263; + _t256 = objNewCap * 2; + doubleCap = _t256; self->objCap = doubleCap; - const char** _t264; - _t264 = self->objKeys; - _t265 = (void*)_t264; + const char** _t257; + _t257 = self->objKeys; + _t258 = (void*)_t257; /* sizeof(const char*) */ - _t267 = doubleCap * sizeof(const char*); - void* _t268; - _t268 = Realloc(_t265, _t267); - _t269 = (const char**)_t268; - self->objKeys = _t269; - JsonValue* _t270; - _t270 = self->objValues; - _t271 = (void*)_t270; + _t259 = doubleCap * sizeof(const char*); + void* _t260; + _t260 = Realloc(_t258, _t259); + _t261 = (const char**)_t260; + self->objKeys = _t261; + JsonValue* _t262; + _t262 = self->objValues; + _t263 = (void*)_t262; /* sizeof(JsonValue) */ - _t273 = doubleCap * sizeof(JsonValue); - void* _t274; - _t274 = Realloc(_t271, _t273); - _t275 = (JsonValue*)_t274; - self->objValues = _t275; + _t264 = doubleCap * sizeof(JsonValue); + void* _t265; + _t265 = Realloc(_t263, _t264); + _t266 = (JsonValue*)_t265; + self->objValues = _t266; } - endif72:; + endif68:; } - endif70:; - const char** _t276; - _t276 = self->objKeys; - unsigned int _t277; - _t277 = self->objLen; - _t276[_t277] = key; - JsonValue* _t278; - _t278 = self->objValues; - unsigned int _t279; - _t279 = self->objLen; - _t278[_t279] = val; - unsigned int _t280; - _t280 = self->objLen; - _t281 = _t280 + 1; - self->objLen = _t281; + endif66:; + const char** _t267; + _t267 = self->objKeys; + unsigned int _t268; + _t268 = self->objLen; + _t267[_t268] = key; + JsonValue* _t269; + _t269 = self->objValues; + unsigned int _t270; + _t270 = self->objLen; + _t269[_t270] = val; + unsigned int _t271; + _t271 = self->objLen; + _t272 = _t271 + 1; + self->objLen = _t272; } bool Json_IsNull(JsonValue v) { - int _t283; - int _t282; - _t282 = v.tag; - _t283 = (_t282 == JsonTagNull); - return _t283; + int _t274; + int _t273; + _t273 = v.tag; + _t274 = (_t273 == JsonTagNull); + return _t274; } bool Json_AsBool(JsonValue v) { - int _t285; - int _t284; - _t284 = v.tag; - _t285 = (_t284 == JsonTagBool); - if (!_t285) goto endif74; + int _t276; + int _t275; + _t275 = v.tag; + _t276 = (_t275 == JsonTagBool); + if (!_t276) goto endif70; { - bool _t286; - _t286 = v.boolVal; - return _t286; + bool _t277; + _t277 = v.boolVal; + return _t277; } - endif74:; + endif70:; return 0; } double Json_AsNumber(JsonValue v) { - int _t288; - int _t287; - _t287 = v.tag; - _t288 = (_t287 == JsonTagNumber); - if (!_t288) goto endif76; + int _t279; + int _t278; + _t278 = v.tag; + _t279 = (_t278 == JsonTagNumber); + if (!_t279) goto endif72; { - double _t289; - _t289 = v.numVal; - return _t289; + double _t280; + _t280 = v.numVal; + return _t280; } - endif76:; + endif72:; return 0.0; } const char* Json_AsString(JsonValue v) { - int _t291; - int _t290; - _t290 = v.tag; - _t291 = (_t290 == JsonTagString); - if (!_t291) goto endif78; + int _t282; + int _t281; + _t281 = v.tag; + _t282 = (_t281 == JsonTagString); + if (!_t282) goto endif74; { - const char* _t292; - _t292 = v.strVal; - return _t292; + const char* _t283; + _t283 = v.strVal; + return _t283; } - endif78:; + endif74:; return ""; } int JsonParser_Peek(JsonParser* p) { - int _t295; - int _t299; - unsigned int _t293; - _t293 = p->pos; - unsigned int _t294; - _t294 = p->len; - _t295 = (_t293 >= _t294); - if (!_t295) goto endif80; + int _t286; + int _t290; + unsigned int _t284; + _t284 = p->pos; + unsigned int _t285; + _t285 = p->len; + _t286 = (_t284 >= _t285); + if (!_t286) goto endif76; { return 0; } - endif80:; - const char* _t296; - _t296 = p->src; - unsigned int _t297; - _t297 = p->pos; - int _t298; - _t298 = _t296[_t297]; - _t299 = (int)_t298; - return _t299; + endif76:; + const char* _t287; + _t287 = p->src; + unsigned int _t288; + _t288 = p->pos; + int _t289; + _t289 = _t287[_t288]; + _t290 = (int)_t289; + return _t290; } void JsonParser_Advance(JsonParser* p) { - int _t302; - int _t304; - unsigned int _t300; - _t300 = p->pos; - unsigned int _t301; - _t301 = p->len; - _t302 = (_t300 < _t301); - if (!_t302) goto endif82; + int _t293; + int _t295; + unsigned int _t291; + _t291 = p->pos; + unsigned int _t292; + _t292 = p->len; + _t293 = (_t291 < _t292); + if (!_t293) goto endif78; { - unsigned int _t303; - _t303 = p->pos; - _t304 = _t303 + 1; - p->pos = _t304; + unsigned int _t294; + _t294 = p->pos; + _t295 = _t294 + 1; + p->pos = _t295; } - endif82:; + endif78:; } void JsonParser_SkipWhitespace(JsonParser* p) { - int _t306; - int _t307; - int _t309; - int _t311; - while83:; - if (!1) goto wend85; + int _t297; + int _t298; + int _t300; + int _t302; + while79:; + if (!1) goto wend80; { int c; - int _t305; - _t305 = JsonParser_Peek(p); - c = _t305; + int _t296; + _t296 = JsonParser_Peek(p); + c = _t296; bool __or_tmp_1; bool __or_tmp_2; bool __or_tmp_3; - _t306 = (c == 32); - if (!_t306) goto else86; + _t297 = (c == 32); + if (!_t297) goto else81; *(bool*)&__or_tmp_3 = 1; - goto endif87; - else86:; - _t307 = (c == 9); - *(bool*)&__or_tmp_3 = _t307; - endif87:; - bool _t308; - _t308 = *(bool*)&__or_tmp_3; - if (!_t308) goto else88; + goto endif82; + else81:; + _t298 = (c == 9); + *(bool*)&__or_tmp_3 = _t298; + endif82:; + bool _t299; + _t299 = *(bool*)&__or_tmp_3; + if (!_t299) goto else83; *(bool*)&__or_tmp_2 = 1; - goto endif89; - else88:; - _t309 = (c == 10); - *(bool*)&__or_tmp_2 = _t309; - endif89:; - bool _t310; - _t310 = *(bool*)&__or_tmp_2; - if (!_t310) goto else90; + goto endif84; + else83:; + _t300 = (c == 10); + *(bool*)&__or_tmp_2 = _t300; + endif84:; + bool _t301; + _t301 = *(bool*)&__or_tmp_2; + if (!_t301) goto else85; *(bool*)&__or_tmp_1 = 1; - goto endif91; - else90:; - _t311 = (c == 13); - *(bool*)&__or_tmp_1 = _t311; - endif91:; - bool _t312; - _t312 = *(bool*)&__or_tmp_1; - if (!_t312) goto else92; + goto endif86; + else85:; + _t302 = (c == 13); + *(bool*)&__or_tmp_1 = _t302; + endif86:; + bool _t303; + _t303 = *(bool*)&__or_tmp_1; + if (!_t303) goto else87; { JsonParser_Advance(p); } - goto endif93; - else92:; + goto endif88; + else87:; { return; } - endif93:; + endif88:; } - goto while83; - wend85:; + goto while79; + wend80:; } bool JsonParser_Match(JsonParser* p, const char* expected) { + int _t306; + int _t308; + int _t309; + int _t312; int _t315; - int _t317; + int _t316; int _t318; - int _t321; - int _t324; - int _t325; - int _t327; unsigned int elen; - unsigned int _t313; - _t313 = String_Len(expected); - elen = _t313; - unsigned int _t314; - _t314 = p->pos; - _t315 = _t314 + elen; - unsigned int _t316; - _t316 = p->len; - _t317 = (_t315 > _t316); - if (!_t317) goto endif95; + unsigned int _t304; + _t304 = String_Len(expected); + elen = _t304; + unsigned int _t305; + _t305 = p->pos; + _t306 = _t305 + elen; + unsigned int _t307; + _t307 = p->len; + _t308 = (_t306 > _t307); + if (!_t308) goto endif90; { return 0; } - endif95:; + endif90:; unsigned int i; i = 0; - while96:; - _t318 = (i < elen); - if (!_t318) goto wend98; + while91:; + _t309 = (i < elen); + if (!_t309) goto wend92; { - const char* _t319; - _t319 = p->src; - unsigned int _t320; - _t320 = p->pos; - _t321 = _t320 + i; - int _t322; - _t322 = _t319[_t321]; - int _t323; - _t323 = expected[i]; - _t324 = (_t322 != _t323); - if (!_t324) goto endif100; + const char* _t310; + _t310 = p->src; + unsigned int _t311; + _t311 = p->pos; + _t312 = _t311 + i; + int _t313; + _t313 = _t310[_t312]; + int _t314; + _t314 = expected[i]; + _t315 = (_t313 != _t314); + if (!_t315) goto endif94; { return 0; } - endif100:; - _t325 = i + 1; - i = _t325; + endif94:; + _t316 = i + 1; + i = _t316; } - goto while96; - wend98:; - unsigned int _t326; - _t326 = p->pos; - _t327 = _t326 + elen; - p->pos = _t327; + goto while91; + wend92:; + unsigned int _t317; + _t317 = p->pos; + _t318 = _t317 + elen; + p->pos = _t318; return 1; } const char* JsonParser_ParseString(JsonParser* p) { - int _t329; - int _t332; + int _t320; + int _t323; + int _t324; + int _t326; + int _t328; + void* _t329; + int _t330; + void* _t331; + char _t332; int _t333; - int _t335; - int _t337; - void* _t338; + void* _t334; + char _t335; + int _t336; + void* _t337; + char _t338; int _t339; void* _t340; char _t341; @@ -2016,234 +2024,262 @@ const char* JsonParser_ParseString(JsonParser* p) { int _t348; void* _t349; char _t350; - int _t351; - void* _t352; - char _t353; - int _t354; + void* _t351; + char _t352; + void* _t353; + char _t354; void* _t355; char _t356; - int _t357; - void* _t358; - char _t359; + int _t358; + void* _t359; void* _t360; - char _t361; void* _t362; - char _t363; - void* _t364; - char _t365; - int _t367; - void* _t368; - void* _t369; - void* _t371; - int _t328; - _t328 = JsonParser_Peek(p); - _t329 = (_t328 != 34); - if (!_t329) goto endif102; + int _t319; + _t319 = JsonParser_Peek(p); + _t320 = (_t319 != 34); + if (!_t320) goto endif96; { p->error = "Expected string"; return ""; } - endif102:; + endif96:; JsonParser_Advance(p); StringBuilder sb; - StringBuilder _t330; - _t330 = StringBuilder_New(); - sb = _t330; - while103:; - if (!1) goto wend105; + StringBuilder _t321; + _t321 = StringBuilder_New(); + sb = _t321; + while97:; + if (!1) goto wend98; { int c; - int _t331; - _t331 = JsonParser_Peek(p); - c = _t331; + int _t322; + _t322 = JsonParser_Peek(p); + c = _t322; bool __or_tmp_4; - _t332 = (c == 0); - if (!_t332) goto else106; + _t323 = (c == 0); + if (!_t323) goto else99; *(bool*)&__or_tmp_4 = 1; - goto endif107; - else106:; - _t333 = (c == 34); - *(bool*)&__or_tmp_4 = _t333; - endif107:; - bool _t334; - _t334 = *(bool*)&__or_tmp_4; - if (!_t334) goto endif109; + goto endif100; + else99:; + _t324 = (c == 34); + *(bool*)&__or_tmp_4 = _t324; + endif100:; + bool _t325; + _t325 = *(bool*)&__or_tmp_4; + if (!_t325) goto endif102; { - goto wend105; + goto wend98; } - endif109:; - _t335 = (c == 92); - if (!_t335) goto else110; + endif102:; + _t326 = (c == 92); + if (!_t326) goto else103; { JsonParser_Advance(p); int esc; - int _t336; - _t336 = JsonParser_Peek(p); - esc = _t336; - _t337 = (esc == 0); - if (!_t337) goto endif113; + int _t327; + _t327 = JsonParser_Peek(p); + esc = _t327; + _t328 = (esc == 0); + if (!_t328) goto endif106; { p->error = "Unterminated string escape"; - _t338 = &sb; - StringBuilder_Free(_t338); + _t329 = &sb; + StringBuilder_Free(_t329); return ""; } - endif113:; - _t339 = (esc == 110); - if (!_t339) goto else114; + endif106:; + _t330 = (esc == 110); + if (!_t330) goto else107; + { + _t331 = &sb; + _t332 = (char)10; + StringBuilder_AppendChar(_t331, _t332); + } + goto endif108; + else107:; + _t333 = (esc == 116); + if (!_t333) goto else109; + { + _t334 = &sb; + _t335 = (char)9; + StringBuilder_AppendChar(_t334, _t335); + } + goto endif110; + else109:; + _t336 = (esc == 114); + if (!_t336) goto else111; + { + _t337 = &sb; + _t338 = (char)13; + StringBuilder_AppendChar(_t337, _t338); + } + goto endif112; + else111:; + _t339 = (esc == 98); + if (!_t339) goto else113; { _t340 = &sb; - _t341 = (char)10; + _t341 = (char)8; StringBuilder_AppendChar(_t340, _t341); } - goto endif115; - else114:; - _t342 = (esc == 116); - if (!_t342) goto else116; + goto endif114; + else113:; + _t342 = (esc == 102); + if (!_t342) goto else115; { _t343 = &sb; - _t344 = (char)9; + _t344 = (char)12; StringBuilder_AppendChar(_t343, _t344); } - goto endif117; - else116:; - _t345 = (esc == 114); - if (!_t345) goto else118; + goto endif116; + else115:; + _t345 = (esc == 34); + if (!_t345) goto else117; { _t346 = &sb; - _t347 = (char)13; + _t347 = (char)34; StringBuilder_AppendChar(_t346, _t347); } - goto endif119; - else118:; - _t348 = (esc == 98); - if (!_t348) goto else120; + goto endif118; + else117:; + _t348 = (esc == 92); + if (!_t348) goto else119; { _t349 = &sb; - _t350 = (char)8; + _t350 = (char)92; StringBuilder_AppendChar(_t349, _t350); } - goto endif121; - else120:; - _t351 = (esc == 102); - if (!_t351) goto else122; + goto endif120; + else119:; { - _t352 = &sb; - _t353 = (char)12; - StringBuilder_AppendChar(_t352, _t353); + _t351 = &sb; + _t352 = (char)92; + StringBuilder_AppendChar(_t351, _t352); + _t353 = &sb; + _t354 = (char)esc; + StringBuilder_AppendChar(_t353, _t354); } - goto endif123; - else122:; - _t354 = (esc == 34); - if (!_t354) goto else124; + endif120:; + endif118:; + endif116:; + endif114:; + endif112:; + endif110:; + endif108:; + JsonParser_Advance(p); + } + goto endif104; + else103:; { _t355 = &sb; - _t356 = (char)34; + _t356 = (char)c; StringBuilder_AppendChar(_t355, _t356); - } - goto endif125; - else124:; - _t357 = (esc == 92); - if (!_t357) goto else126; - { - _t358 = &sb; - _t359 = (char)92; - StringBuilder_AppendChar(_t358, _t359); - } - goto endif127; - else126:; - { - _t360 = &sb; - _t361 = (char)92; - StringBuilder_AppendChar(_t360, _t361); - _t362 = &sb; - _t363 = (char)esc; - StringBuilder_AppendChar(_t362, _t363); - } - endif127:; - endif125:; - endif123:; - endif121:; - endif119:; - endif117:; - endif115:; JsonParser_Advance(p); } - goto endif111; - else110:; - { - _t364 = &sb; - _t365 = (char)c; - StringBuilder_AppendChar(_t364, _t365); - JsonParser_Advance(p); + endif104:; } - endif111:; - } - goto while103; - wend105:; - int _t366; - _t366 = JsonParser_Peek(p); - _t367 = (_t366 != 34); - if (!_t367) goto endif129; + goto while97; + wend98:; + int _t357; + _t357 = JsonParser_Peek(p); + _t358 = (_t357 != 34); + if (!_t358) goto endif122; { p->error = "Unterminated string"; - _t368 = &sb; - StringBuilder_Free(_t368); + _t359 = &sb; + StringBuilder_Free(_t359); return ""; } - endif129:; + endif122:; JsonParser_Advance(p); const char* result; - _t369 = &sb; - const char* _t370; - _t370 = StringBuilder_Build(_t369); - result = _t370; - _t371 = &sb; - StringBuilder_Free(_t371); + _t360 = &sb; + const char* _t361; + _t361 = StringBuilder_Build(_t360); + result = _t361; + _t362 = &sb; + StringBuilder_Free(_t362); return result; } JsonValue JsonParser_ParseNumber(JsonParser* p) { - int _t374; - int _t376; - int _t377; - int _t380; - int _t382; - int _t383; - int _t387; - unsigned int start; - unsigned int _t372; - _t372 = p->pos; - start = _t372; - int c0; + int _t365; + int _t367; + int _t368; + int _t371; int _t373; - _t373 = JsonParser_Peek(p); - c0 = _t373; - _t374 = (c0 == 45); - if (!_t374) goto endif131; + int _t374; + int _t378; + unsigned int start; + unsigned int _t363; + _t363 = p->pos; + start = _t363; + int c0; + int _t364; + _t364 = JsonParser_Peek(p); + c0 = _t364; + _t365 = (c0 == 45); + if (!_t365) goto endif124; { JsonParser_Advance(p); } - endif131:; - while132:; + endif124:; + while125:; + if (!1) goto wend126; + { + int c; + int _t366; + _t366 = JsonParser_Peek(p); + c = _t366; + bool __and_tmp_5; + _t367 = (c >= 48); + if (!_t367) goto else127; + _t368 = (c <= 57); + *(bool*)&__and_tmp_5 = _t368; + goto endif128; + else127:; + *(bool*)&__and_tmp_5 = 0; + endif128:; + bool _t369; + _t369 = *(bool*)&__and_tmp_5; + if (!_t369) goto else129; + { + JsonParser_Advance(p); + } + goto endif130; + else129:; + { + goto wend126; + } + endif130:; + } + goto while125; + wend126:; + int _t370; + _t370 = JsonParser_Peek(p); + _t371 = (_t370 == 46); + if (!_t371) goto endif132; + { + JsonParser_Advance(p); + while133:; if (!1) goto wend134; { int c; - int _t375; - _t375 = JsonParser_Peek(p); - c = _t375; - bool __and_tmp_5; - _t376 = (c >= 48); - if (!_t376) goto else135; - _t377 = (c <= 57); - *(bool*)&__and_tmp_5 = _t377; + int _t372; + _t372 = JsonParser_Peek(p); + c = _t372; + bool __and_tmp_6; + _t373 = (c >= 48); + if (!_t373) goto else135; + _t374 = (c <= 57); + *(bool*)&__and_tmp_6 = _t374; goto endif136; else135:; - *(bool*)&__and_tmp_5 = 0; + *(bool*)&__and_tmp_6 = 0; endif136:; - bool _t378; - _t378 = *(bool*)&__and_tmp_5; - if (!_t378) goto else137; + bool _t375; + _t375 = *(bool*)&__and_tmp_6; + if (!_t375) goto else137; { JsonParser_Advance(p); } @@ -2254,1098 +2290,1061 @@ JsonValue JsonParser_ParseNumber(JsonParser* p) { } endif138:; } - goto while132; + goto while133; wend134:; - int _t379; - _t379 = JsonParser_Peek(p); - _t380 = (_t379 == 46); - if (!_t380) goto endif140; - { - JsonParser_Advance(p); - while141:; - if (!1) goto wend143; - { - int c; - int _t381; - _t381 = JsonParser_Peek(p); - c = _t381; - bool __and_tmp_6; - _t382 = (c >= 48); - if (!_t382) goto else144; - _t383 = (c <= 57); - *(bool*)&__and_tmp_6 = _t383; - goto endif145; - else144:; - *(bool*)&__and_tmp_6 = 0; - endif145:; - bool _t384; - _t384 = *(bool*)&__and_tmp_6; - if (!_t384) goto else146; - { - JsonParser_Advance(p); } - goto endif147; - else146:; - { - goto wend143; - } - endif147:; - } - goto while141; - wend143:; - } - endif140:; + endif132:; const char* numStr; - const char* _t385; - _t385 = p->src; - unsigned int _t386; - _t386 = p->pos; - _t387 = _t386 - start; - const char* _t388; - _t388 = String_Slice(_t385, start, _t387); - numStr = _t388; + const char* _t376; + _t376 = p->src; + unsigned int _t377; + _t377 = p->pos; + _t378 = _t377 - start; + const char* _t379; + _t379 = String_Slice(_t376, start, _t378); + numStr = _t379; double n; - double _t389; - _t389 = String_ToFloat(numStr); - n = _t389; - JsonValue _t390; - _t390 = Json_Number(n); - return _t390; + double _t380; + _t380 = String_ToFloat(numStr); + n = _t380; + JsonValue _t381; + _t381 = Json_Number(n); + return _t381; } JsonValue JsonParser_ParseArray(JsonParser* p) { - int _t393; - int _t396; - void* _t398; - int _t400; - int _t401; + int _t384; + int _t387; + void* _t389; + int _t391; + int _t392; JsonParser_Advance(p); JsonValue arr; - JsonValue _t391; - _t391 = Json_Array(); - arr = _t391; + JsonValue _t382; + _t382 = Json_Array(); + arr = _t382; JsonParser_SkipWhitespace(p); - int _t392; - _t392 = JsonParser_Peek(p); - _t393 = (_t392 == 93); - if (!_t393) goto endif149; + int _t383; + _t383 = JsonParser_Peek(p); + _t384 = (_t383 == 93); + if (!_t384) goto endif140; { JsonParser_Advance(p); return arr; } - endif149:; - while150:; - if (!1) goto wend152; + endif140:; + while141:; + if (!1) goto wend142; { JsonParser_SkipWhitespace(p); JsonValue val; - JsonValue _t394; - _t394 = JsonParser_ParseValue(p); - val = _t394; - const char* _t395; - _t395 = p->error; - _t396 = (_t395 != ""); - if (!_t396) goto endif154; + JsonValue _t385; + _t385 = JsonParser_ParseValue(p); + val = _t385; + const char* _t386; + _t386 = p->error; + _t387 = (_t386 != ""); + if (!_t387) goto endif144; { - JsonValue _t397; - _t397 = Json_Null(); - return _t397; + JsonValue _t388; + _t388 = Json_Null(); + return _t388; } - endif154:; - _t398 = &arr; - Json_ArrayPush(_t398, val); + endif144:; + _t389 = &arr; + Json_ArrayPush(_t389, val); JsonParser_SkipWhitespace(p); int c; - int _t399; - _t399 = JsonParser_Peek(p); - c = _t399; - _t400 = (c == 93); - if (!_t400) goto endif156; + int _t390; + _t390 = JsonParser_Peek(p); + c = _t390; + _t391 = (c == 93); + if (!_t391) goto endif146; { JsonParser_Advance(p); return arr; } - endif156:; - _t401 = (c == 44); - if (!_t401) goto else157; + endif146:; + _t392 = (c == 44); + if (!_t392) goto else147; { JsonParser_Advance(p); } - goto endif158; - else157:; + goto endif148; + else147:; { p->error = "Expected ',' or ']' in array"; - JsonValue _t402; - _t402 = Json_Null(); - return _t402; + JsonValue _t393; + _t393 = Json_Null(); + return _t393; } - endif158:; + endif148:; } - goto while150; - wend152:; + goto while141; + wend142:; } JsonValue JsonParser_ParseObject(JsonParser* p) { - int _t405; - int _t408; + int _t396; + int _t399; + int _t402; + int _t406; + void* _t408; + int _t410; int _t411; - int _t415; - void* _t417; - int _t419; - int _t420; JsonParser_Advance(p); JsonValue obj; - JsonValue _t403; - _t403 = Json_Object(); - obj = _t403; + JsonValue _t394; + _t394 = Json_Object(); + obj = _t394; JsonParser_SkipWhitespace(p); - int _t404; - _t404 = JsonParser_Peek(p); - _t405 = (_t404 == 125); - if (!_t405) goto endif160; + int _t395; + _t395 = JsonParser_Peek(p); + _t396 = (_t395 == 125); + if (!_t396) goto endif150; + { + JsonParser_Advance(p); + return obj; + } + endif150:; + while151:; + if (!1) goto wend152; + { + JsonParser_SkipWhitespace(p); + const char* key; + const char* _t397; + _t397 = JsonParser_ParseString(p); + key = _t397; + const char* _t398; + _t398 = p->error; + _t399 = (_t398 != ""); + if (!_t399) goto endif154; + { + JsonValue _t400; + _t400 = Json_Null(); + return _t400; + } + endif154:; + JsonParser_SkipWhitespace(p); + int _t401; + _t401 = JsonParser_Peek(p); + _t402 = (_t401 != 58); + if (!_t402) goto endif156; + { + p->error = "Expected ':' after object key"; + JsonValue _t403; + _t403 = Json_Null(); + return _t403; + } + endif156:; + JsonParser_Advance(p); + JsonParser_SkipWhitespace(p); + JsonValue val; + JsonValue _t404; + _t404 = JsonParser_ParseValue(p); + val = _t404; + const char* _t405; + _t405 = p->error; + _t406 = (_t405 != ""); + if (!_t406) goto endif158; + { + JsonValue _t407; + _t407 = Json_Null(); + return _t407; + } + endif158:; + _t408 = &obj; + Json_ObjectSet(_t408, key, val); + JsonParser_SkipWhitespace(p); + int c; + int _t409; + _t409 = JsonParser_Peek(p); + c = _t409; + _t410 = (c == 125); + if (!_t410) goto endif160; { JsonParser_Advance(p); return obj; } endif160:; - while161:; - if (!1) goto wend163; + _t411 = (c == 44); + if (!_t411) goto else161; { - JsonParser_SkipWhitespace(p); - const char* key; - const char* _t406; - _t406 = JsonParser_ParseString(p); - key = _t406; - const char* _t407; - _t407 = p->error; - _t408 = (_t407 != ""); - if (!_t408) goto endif165; - { - JsonValue _t409; - _t409 = Json_Null(); - return _t409; + JsonParser_Advance(p); } - endif165:; - JsonParser_SkipWhitespace(p); - int _t410; - _t410 = JsonParser_Peek(p); - _t411 = (_t410 != 58); - if (!_t411) goto endif167; + goto endif162; + else161:; { - p->error = "Expected ':' after object key"; + p->error = "Expected ',' or '}' in object"; JsonValue _t412; _t412 = Json_Null(); return _t412; } - endif167:; - JsonParser_Advance(p); - JsonParser_SkipWhitespace(p); - JsonValue val; - JsonValue _t413; - _t413 = JsonParser_ParseValue(p); - val = _t413; - const char* _t414; - _t414 = p->error; - _t415 = (_t414 != ""); - if (!_t415) goto endif169; - { - JsonValue _t416; - _t416 = Json_Null(); - return _t416; + endif162:; } - endif169:; - _t417 = &obj; - Json_ObjectSet(_t417, key, val); - JsonParser_SkipWhitespace(p); - int c; - int _t418; - _t418 = JsonParser_Peek(p); - c = _t418; - _t419 = (c == 125); - if (!_t419) goto endif171; - { - JsonParser_Advance(p); - return obj; - } - endif171:; - _t420 = (c == 44); - if (!_t420) goto else172; - { - JsonParser_Advance(p); - } - goto endif173; - else172:; - { - p->error = "Expected ',' or '}' in object"; - JsonValue _t421; - _t421 = Json_Null(); - return _t421; - } - endif173:; - } - goto while161; - wend163:; + goto while151; + wend152:; } JsonValue JsonParser_ParseValue(JsonParser* p) { + int _t414; + int _t416; + int _t419; + int _t421; int _t423; - int _t425; - int _t428; - int _t430; - int _t432; + int _t427; + int _t431; + int _t435; int _t436; - int _t440; - int _t444; - int _t445; - int _t447; + int _t438; JsonParser_SkipWhitespace(p); int c; - int _t422; - _t422 = JsonParser_Peek(p); - c = _t422; - _t423 = (c == 0); - if (!_t423) goto endif175; + int _t413; + _t413 = JsonParser_Peek(p); + c = _t413; + _t414 = (c == 0); + if (!_t414) goto endif164; { p->error = "Unexpected end of input"; - JsonValue _t424; - _t424 = Json_Null(); - return _t424; + JsonValue _t415; + _t415 = Json_Null(); + return _t415; } - endif175:; - _t425 = (c == 34); - if (!_t425) goto endif177; + endif164:; + _t416 = (c == 34); + if (!_t416) goto endif166; { - const char* _t426; - _t426 = JsonParser_ParseString(p); - JsonValue _t427; - _t427 = Json_String(_t426); - return _t427; + const char* _t417; + _t417 = JsonParser_ParseString(p); + JsonValue _t418; + _t418 = Json_String(_t417); + return _t418; } - endif177:; - _t428 = (c == 123); - if (!_t428) goto endif179; + endif166:; + _t419 = (c == 123); + if (!_t419) goto endif168; + { + JsonValue _t420; + _t420 = JsonParser_ParseObject(p); + return _t420; + } + endif168:; + _t421 = (c == 91); + if (!_t421) goto endif170; + { + JsonValue _t422; + _t422 = JsonParser_ParseArray(p); + return _t422; + } + endif170:; + _t423 = (c == 116); + if (!_t423) goto endif172; + { + bool _t424; + _t424 = JsonParser_Match(p, "true"); + if (!_t424) goto endif174; + { + JsonValue _t425; + _t425 = Json_Bool(1); + return _t425; + } + endif174:; + p->error = "Expected 'true'"; + JsonValue _t426; + _t426 = Json_Null(); + return _t426; + } + endif172:; + _t427 = (c == 102); + if (!_t427) goto endif176; + { + bool _t428; + _t428 = JsonParser_Match(p, "false"); + if (!_t428) goto endif178; { JsonValue _t429; - _t429 = JsonParser_ParseObject(p); + _t429 = Json_Bool(0); return _t429; } - endif179:; - _t430 = (c == 91); - if (!_t430) goto endif181; - { - JsonValue _t431; - _t431 = JsonParser_ParseArray(p); - return _t431; + endif178:; + p->error = "Expected 'false'"; + JsonValue _t430; + _t430 = Json_Null(); + return _t430; } - endif181:; - _t432 = (c == 116); - if (!_t432) goto endif183; + endif176:; + _t431 = (c == 110); + if (!_t431) goto endif180; { - bool _t433; - _t433 = JsonParser_Match(p, "true"); - if (!_t433) goto endif185; + bool _t432; + _t432 = JsonParser_Match(p, "null"); + if (!_t432) goto endif182; { + JsonValue _t433; + _t433 = Json_Null(); + return _t433; + } + endif182:; + p->error = "Expected 'null'"; JsonValue _t434; - _t434 = Json_Bool(1); + _t434 = Json_Null(); return _t434; } - endif185:; - p->error = "Expected 'true'"; - JsonValue _t435; - _t435 = Json_Null(); - return _t435; - } - endif183:; - _t436 = (c == 102); - if (!_t436) goto endif187; - { - bool _t437; - _t437 = JsonParser_Match(p, "false"); - if (!_t437) goto endif189; - { - JsonValue _t438; - _t438 = Json_Bool(0); - return _t438; - } - endif189:; - p->error = "Expected 'false'"; - JsonValue _t439; - _t439 = Json_Null(); - return _t439; - } - endif187:; - _t440 = (c == 110); - if (!_t440) goto endif191; - { - bool _t441; - _t441 = JsonParser_Match(p, "null"); - if (!_t441) goto endif193; - { - JsonValue _t442; - _t442 = Json_Null(); - return _t442; - } - endif193:; - p->error = "Expected 'null'"; - JsonValue _t443; - _t443 = Json_Null(); - return _t443; - } - endif191:; + endif180:; bool __or_tmp_7; bool __and_tmp_8; - _t444 = (c >= 48); - if (!_t444) goto else194; - _t445 = (c <= 57); - *(bool*)&__and_tmp_8 = _t445; - goto endif195; - else194:; + _t435 = (c >= 48); + if (!_t435) goto else183; + _t436 = (c <= 57); + *(bool*)&__and_tmp_8 = _t436; + goto endif184; + else183:; *(bool*)&__and_tmp_8 = 0; - endif195:; - bool _t446; - _t446 = *(bool*)&__and_tmp_8; - if (!_t446) goto else196; + endif184:; + bool _t437; + _t437 = *(bool*)&__and_tmp_8; + if (!_t437) goto else185; *(bool*)&__or_tmp_7 = 1; - goto endif197; - else196:; - _t447 = (c == 45); - *(bool*)&__or_tmp_7 = _t447; - endif197:; - bool _t448; - _t448 = *(bool*)&__or_tmp_7; - if (!_t448) goto endif199; + goto endif186; + else185:; + _t438 = (c == 45); + *(bool*)&__or_tmp_7 = _t438; + endif186:; + bool _t439; + _t439 = *(bool*)&__or_tmp_7; + if (!_t439) goto endif188; { - JsonValue _t449; - _t449 = JsonParser_ParseNumber(p); - return _t449; + JsonValue _t440; + _t440 = JsonParser_ParseNumber(p); + return _t440; } - endif199:; + endif188:; p->error = "Unexpected character"; - JsonValue _t450; - _t450 = Json_Null(); - return _t450; + JsonValue _t441; + _t441 = Json_Null(); + return _t441; } JsonValue Json_Parse(const char* s) { - JsonParser _t452; - void* _t453; - void* _t455; - int _t457; - int _t460; + JsonParser _t443; + void* _t444; + void* _t446; + int _t448; + int _t451; JsonParser p; - unsigned int _t451; - _t451 = String_Len(s); - _t452 = (JsonParser){.src = s, .pos = 0, .len = _t451, .error = ""}; - p = _t452; + unsigned int _t442; + _t442 = String_Len(s); + _t443 = (JsonParser){.src = s, .pos = 0, .len = _t442, .error = ""}; + p = _t443; JsonValue result; - _t453 = &p; - JsonValue _t454; - _t454 = JsonParser_ParseValue(_t453); - result = _t454; - _t455 = &p; - JsonParser_SkipWhitespace(_t455); + _t444 = &p; + JsonValue _t445; + _t445 = JsonParser_ParseValue(_t444); + result = _t445; + _t446 = &p; + JsonParser_SkipWhitespace(_t446); bool __and_tmp_9; - const char* _t456; - _t456 = p.error; - _t457 = (_t456 == ""); - if (!_t457) goto else200; - unsigned int _t458; - _t458 = p.pos; - unsigned int _t459; - _t459 = p.len; - _t460 = (_t458 != _t459); - *(bool*)&__and_tmp_9 = _t460; - goto endif201; - else200:; + const char* _t447; + _t447 = p.error; + _t448 = (_t447 == ""); + if (!_t448) goto else189; + unsigned int _t449; + _t449 = p.pos; + unsigned int _t450; + _t450 = p.len; + _t451 = (_t449 != _t450); + *(bool*)&__and_tmp_9 = _t451; + goto endif190; + else189:; *(bool*)&__and_tmp_9 = 0; - endif201:; - bool _t461; - _t461 = *(bool*)&__and_tmp_9; - if (!_t461) goto endif203; + endif190:; + bool _t452; + _t452 = *(bool*)&__and_tmp_9; + if (!_t452) goto endif192; { p.error = "Trailing data after JSON value"; - JsonValue _t462; - _t462 = Json_Null(); - return _t462; + JsonValue _t453; + _t453 = Json_Null(); + return _t453; } - endif203:; + endif192:; return result; } void Json_StringifyImpl(StringBuilder* sb, JsonValue v) { - int _t464; - int _t466; - int _t469; + int _t455; + int _t457; + int _t460; + int _t463; + char _t464; + char _t466; + int _t468; + char _t469; + int _t471; int _t472; char _t473; - char _t475; - int _t477; - char _t478; - int _t480; - int _t481; - char _t482; - int _t485; - char _t486; - int _t488; + int _t476; + char _t477; + int _t479; + char _t480; + int _t482; + int _t483; + char _t484; + char _t485; + char _t488; char _t489; - int _t491; int _t492; char _t493; - char _t494; - char _t497; - char _t498; - int _t501; - char _t502; - int _t463; - _t463 = v.tag; - _t464 = (_t463 == JsonTagNull); - if (!_t464) goto endif205; + int _t454; + _t454 = v.tag; + _t455 = (_t454 == JsonTagNull); + if (!_t455) goto endif194; { StringBuilder_Append(sb, "null"); return; } - endif205:; - int _t465; - _t465 = v.tag; - _t466 = (_t465 == JsonTagBool); - if (!_t466) goto endif207; + endif194:; + int _t456; + _t456 = v.tag; + _t457 = (_t456 == JsonTagBool); + if (!_t457) goto endif196; { - bool _t467; - _t467 = v.boolVal; - if (!_t467) goto else208; + bool _t458; + _t458 = v.boolVal; + if (!_t458) goto else197; { StringBuilder_Append(sb, "true"); } - goto endif209; - else208:; + goto endif198; + else197:; { StringBuilder_Append(sb, "false"); } - endif209:; + endif198:; return; } - endif207:; - int _t468; - _t468 = v.tag; - _t469 = (_t468 == JsonTagNumber); - if (!_t469) goto endif211; + endif196:; + int _t459; + _t459 = v.tag; + _t460 = (_t459 == JsonTagNumber); + if (!_t460) goto endif200; { - double _t470; - _t470 = v.numVal; - StringBuilder_AppendFloat(sb, _t470); + double _t461; + _t461 = v.numVal; + StringBuilder_AppendFloat(sb, _t461); return; } - endif211:; - int _t471; - _t471 = v.tag; - _t472 = (_t471 == JsonTagString); - if (!_t472) goto endif213; + endif200:; + int _t462; + _t462 = v.tag; + _t463 = (_t462 == JsonTagString); + if (!_t463) goto endif202; { - _t473 = (char)34; + _t464 = (char)34; + StringBuilder_AppendChar(sb, _t464); + const char* _t465; + _t465 = v.strVal; + StringBuilder_Append(sb, _t465); + _t466 = (char)34; + StringBuilder_AppendChar(sb, _t466); + return; + } + endif202:; + int _t467; + _t467 = v.tag; + _t468 = (_t467 == JsonTagArray); + if (!_t468) goto endif204; + { + _t469 = (char)91; + StringBuilder_AppendChar(sb, _t469); + unsigned int i; + i = 0; + while205:; + unsigned int _t470; + _t470 = v.arrLen; + _t471 = (i < _t470); + if (!_t471) goto wend206; + { + _t472 = (i > 0); + if (!_t472) goto endif208; + { + _t473 = (char)44; StringBuilder_AppendChar(sb, _t473); - const char* _t474; - _t474 = v.strVal; - StringBuilder_Append(sb, _t474); - _t475 = (char)34; - StringBuilder_AppendChar(sb, _t475); + } + endif208:; + JsonValue* _t474; + _t474 = v.arrData; + JsonValue _t475; + _t475 = _t474[i]; + Json_StringifyImpl(sb, _t475); + _t476 = i + 1; + i = _t476; + } + goto while205; + wend206:; + _t477 = (char)93; + StringBuilder_AppendChar(sb, _t477); return; } - endif213:; - int _t476; - _t476 = v.tag; - _t477 = (_t476 == JsonTagArray); - if (!_t477) goto endif215; + endif204:; + int _t478; + _t478 = v.tag; + _t479 = (_t478 == JsonTagObject); + if (!_t479) goto endif210; { - _t478 = (char)91; - StringBuilder_AppendChar(sb, _t478); + _t480 = (char)123; + StringBuilder_AppendChar(sb, _t480); unsigned int i; i = 0; - while216:; - unsigned int _t479; - _t479 = v.arrLen; - _t480 = (i < _t479); - if (!_t480) goto wend218; + while211:; + unsigned int _t481; + _t481 = v.objLen; + _t482 = (i < _t481); + if (!_t482) goto wend212; { - _t481 = (i > 0); - if (!_t481) goto endif220; + _t483 = (i > 0); + if (!_t483) goto endif214; { - _t482 = (char)44; - StringBuilder_AppendChar(sb, _t482); + _t484 = (char)44; + StringBuilder_AppendChar(sb, _t484); } - endif220:; - JsonValue* _t483; - _t483 = v.arrData; - JsonValue _t484; - _t484 = _t483[i]; - Json_StringifyImpl(sb, _t484); - _t485 = i + 1; - i = _t485; - } - goto while216; - wend218:; - _t486 = (char)93; - StringBuilder_AppendChar(sb, _t486); - return; - } - endif215:; - int _t487; - _t487 = v.tag; - _t488 = (_t487 == JsonTagObject); - if (!_t488) goto endif222; - { - _t489 = (char)123; + endif214:; + _t485 = (char)34; + StringBuilder_AppendChar(sb, _t485); + const char** _t486; + _t486 = v.objKeys; + const char* _t487; + _t487 = _t486[i]; + StringBuilder_Append(sb, _t487); + _t488 = (char)34; + StringBuilder_AppendChar(sb, _t488); + _t489 = (char)58; StringBuilder_AppendChar(sb, _t489); - unsigned int i; - i = 0; - while223:; - unsigned int _t490; - _t490 = v.objLen; - _t491 = (i < _t490); - if (!_t491) goto wend225; - { - _t492 = (i > 0); - if (!_t492) goto endif227; - { - _t493 = (char)44; + JsonValue* _t490; + _t490 = v.objValues; + JsonValue _t491; + _t491 = _t490[i]; + Json_StringifyImpl(sb, _t491); + _t492 = i + 1; + i = _t492; + } + goto while211; + wend212:; + _t493 = (char)125; StringBuilder_AppendChar(sb, _t493); - } - endif227:; - _t494 = (char)34; - StringBuilder_AppendChar(sb, _t494); - const char** _t495; - _t495 = v.objKeys; - const char* _t496; - _t496 = _t495[i]; - StringBuilder_Append(sb, _t496); - _t497 = (char)34; - StringBuilder_AppendChar(sb, _t497); - _t498 = (char)58; - StringBuilder_AppendChar(sb, _t498); - JsonValue* _t499; - _t499 = v.objValues; - JsonValue _t500; - _t500 = _t499[i]; - Json_StringifyImpl(sb, _t500); - _t501 = i + 1; - i = _t501; - } - goto while223; - wend225:; - _t502 = (char)125; - StringBuilder_AppendChar(sb, _t502); return; } - endif222:; + endif210:; } const char* Json_Stringify(JsonValue v) { - void* _t504; - void* _t505; + void* _t495; + void* _t496; StringBuilder sb; - StringBuilder _t503; - _t503 = StringBuilder_New(); - sb = _t503; - _t504 = &sb; - Json_StringifyImpl(_t504, v); - _t505 = &sb; - const char* _t506; - _t506 = StringBuilder_Build(_t505); - return _t506; + StringBuilder _t494; + _t494 = StringBuilder_New(); + sb = _t494; + _t495 = &sb; + Json_StringifyImpl(_t495, v); + _t496 = &sb; + const char* _t497; + _t497 = StringBuilder_Build(_t496); + return _t497; } unsigned int String_Len(const char* s) { - unsigned int _t507; - _t507 = bux_strlen(s); - return _t507; + unsigned int _t498; + _t498 = bux_strlen(s); + return _t498; } bool String_IsNull(const char* s) { - int _t509; - int _t508; - _t508 = bux_str_is_null(s); - _t509 = (_t508 != 0); - return _t509; + int _t500; + int _t499; + _t499 = bux_str_is_null(s); + _t500 = (_t499 != 0); + return _t500; } bool String_Eq(const char* a, const char* b) { - int _t511; - int _t510; - _t510 = bux_strcmp(a, b); - _t511 = (_t510 == 0); - return _t511; + int _t502; + int _t501; + _t501 = bux_strcmp(a, b); + _t502 = (_t501 == 0); + return _t502; } const char* String_Concat(const char* a, const char* b) { - int _t514; - int _t515; - char* _t517; + int _t505; + int _t506; + char* _t508; unsigned int len_a; - unsigned int _t512; - _t512 = bux_strlen(a); - len_a = _t512; + unsigned int _t503; + _t503 = bux_strlen(a); + len_a = _t503; unsigned int len_b; - unsigned int _t513; - _t513 = bux_strlen(b); - len_b = _t513; + unsigned int _t504; + _t504 = bux_strlen(b); + len_b = _t504; unsigned int total; - _t514 = len_a + len_b; - _t515 = _t514 + 1; - total = _t515; + _t505 = len_a + len_b; + _t506 = _t505 + 1; + total = _t506; char* buf; - void* _t516; - _t516 = bux_alloc(total); - _t517 = (char*)_t516; - buf = _t517; + void* _t507; + _t507 = bux_alloc(total); + _t508 = (char*)_t507; + buf = _t508; bux_strcpy(buf, a); bux_strcat(buf, b); return buf; } const char* String_Copy(const char* s) { - int _t519; - char* _t521; + int _t510; + char* _t512; unsigned int len; - unsigned int _t518; - _t518 = bux_strlen(s); - len = _t518; + unsigned int _t509; + _t509 = bux_strlen(s); + len = _t509; char* buf; - _t519 = len + 1; - void* _t520; - _t520 = bux_alloc(_t519); - _t521 = (char*)_t520; - buf = _t521; + _t510 = len + 1; + void* _t511; + _t511 = bux_alloc(_t510); + _t512 = (char*)_t511; + buf = _t512; bux_strcpy(buf, s); return buf; } bool String_StartsWith(const char* s, const char* prefix) { - int _t524; - int _t526; + int _t515; + int _t517; unsigned int s_len; - unsigned int _t522; - _t522 = bux_strlen(s); - s_len = _t522; + unsigned int _t513; + _t513 = bux_strlen(s); + s_len = _t513; unsigned int p_len; - unsigned int _t523; - _t523 = bux_strlen(prefix); - p_len = _t523; - _t524 = (p_len > s_len); - if (!_t524) goto endif229; + unsigned int _t514; + _t514 = bux_strlen(prefix); + p_len = _t514; + _t515 = (p_len > s_len); + if (!_t515) goto endif216; { return 0; } - endif229:; + endif216:; int r; - int _t525; - _t525 = bux_strncmp(s, prefix, p_len); - r = _t525; - _t526 = (r == 0); - return _t526; + int _t516; + _t516 = bux_strncmp(s, prefix, p_len); + r = _t516; + _t517 = (r == 0); + return _t517; } bool String_EndsWith(const char* s, const char* suffix) { - int _t529; - int _t530; - int _t533; + int _t520; + int _t521; + int _t524; unsigned int s_len; - unsigned int _t527; - _t527 = bux_strlen(s); - s_len = _t527; + unsigned int _t518; + _t518 = bux_strlen(s); + s_len = _t518; unsigned int suf_len; - unsigned int _t528; - _t528 = bux_strlen(suffix); - suf_len = _t528; - _t529 = (suf_len > s_len); - if (!_t529) goto endif231; + unsigned int _t519; + _t519 = bux_strlen(suffix); + suf_len = _t519; + _t520 = (suf_len > s_len); + if (!_t520) goto endif218; { return 0; } - endif231:; + endif218:; unsigned int start; - _t530 = s_len - suf_len; - start = _t530; + _t521 = s_len - suf_len; + start = _t521; const char* tail; - const char* _t531; - _t531 = bux_str_slice(s, start, suf_len); - tail = _t531; + const char* _t522; + _t522 = bux_str_slice(s, start, suf_len); + tail = _t522; bool eq; - int _t532; - _t532 = bux_strcmp(tail, suffix); - _t533 = (_t532 == 0); - eq = _t533; + int _t523; + _t523 = bux_strcmp(tail, suffix); + _t524 = (_t523 == 0); + eq = _t524; return eq; } bool String_Contains(const char* s, const char* substr) { - int _t535; + int _t526; int r; - int _t534; - _t534 = bux_str_contains(s, substr); - r = _t534; - _t535 = (r != 0); - return _t535; + int _t525; + _t525 = bux_str_contains(s, substr); + r = _t525; + _t526 = (r != 0); + return _t526; } const char* String_Slice(const char* s, unsigned int start, unsigned int len) { - const char* _t536; - _t536 = bux_str_slice(s, start, len); - return _t536; + const char* _t527; + _t527 = bux_str_slice(s, start, len); + return _t527; } const char* String_Trim(const char* s) { - const char* _t537; - _t537 = bux_str_trim(s); - return _t537; + const char* _t528; + _t528 = bux_str_trim(s); + return _t528; } const char* String_TrimLeft(const char* s) { - const char* _t538; - _t538 = bux_str_trim_left(s); - return _t538; + const char* _t529; + _t529 = bux_str_trim_left(s); + return _t529; } const char* String_TrimRight(const char* s) { - const char* _t539; - _t539 = bux_str_trim_right(s); - return _t539; + const char* _t530; + _t530 = bux_str_trim_right(s); + return _t530; } const char* String_FromInt(int64_t n) { - const char* _t540; - _t540 = bux_int_to_str(n); - return _t540; + const char* _t531; + _t531 = bux_int_to_str(n); + return _t531; } int64_t String_ToInt(const char* s) { - int64_t _t541; - _t541 = bux_str_to_int(s); - return _t541; + int64_t _t532; + _t532 = bux_str_to_int(s); + return _t532; } StringBuilder StringBuilder_New(void) { - StringBuilder _t543; - void* _t542; - _t542 = bux_sb_new(64); - _t543 = (StringBuilder){.handle = _t542}; - return _t543; + StringBuilder _t534; + void* _t533; + _t533 = bux_sb_new(64); + _t534 = (StringBuilder){.handle = _t533}; + return _t534; } StringBuilder StringBuilder_NewCap(unsigned int cap) { - StringBuilder _t545; - void* _t544; - _t544 = bux_sb_new(cap); - _t545 = (StringBuilder){.handle = _t544}; - return _t545; + StringBuilder _t536; + void* _t535; + _t535 = bux_sb_new(cap); + _t536 = (StringBuilder){.handle = _t535}; + return _t536; } void StringBuilder_Append(StringBuilder* sb, const char* s) { - void* _t546; - _t546 = sb->handle; - bux_sb_append(_t546, s); + void* _t537; + _t537 = sb->handle; + bux_sb_append(_t537, s); } void StringBuilder_AppendInt(StringBuilder* sb, int64_t n) { - void* _t547; - _t547 = sb->handle; - bux_sb_append_int(_t547, n); + void* _t538; + _t538 = sb->handle; + bux_sb_append_int(_t538, n); } void StringBuilder_AppendFloat(StringBuilder* sb, double f) { - void* _t548; - _t548 = sb->handle; - bux_sb_append_float(_t548, f); + void* _t539; + _t539 = sb->handle; + bux_sb_append_float(_t539, f); } void StringBuilder_AppendChar(StringBuilder* sb, char c) { - void* _t549; - _t549 = sb->handle; - bux_sb_append_char(_t549, c); + void* _t540; + _t540 = sb->handle; + bux_sb_append_char(_t540, c); } const char* StringBuilder_Build(StringBuilder* sb) { - void* _t550; - _t550 = sb->handle; - const char* _t551; - _t551 = bux_sb_build(_t550); - return _t551; + void* _t541; + _t541 = sb->handle; + const char* _t542; + _t542 = bux_sb_build(_t541); + return _t542; } void StringBuilder_Free(StringBuilder* sb) { - void* _t552; - _t552 = sb->handle; - bux_sb_free(_t552); + void* _t543; + _t543 = sb->handle; + bux_sb_free(_t543); } unsigned int String_SplitCount(const char* s, const char* delim) { - unsigned int _t553; - _t553 = bux_str_split_count(s, delim); - return _t553; + unsigned int _t544; + _t544 = bux_str_split_count(s, delim); + return _t544; } const char* String_SplitPart(const char* s, const char* delim, unsigned int index) { - const char* _t554; - _t554 = bux_str_split_part(s, delim, index); - return _t554; + const char* _t545; + _t545 = bux_str_split_part(s, delim, index); + return _t545; } const char* String_Join2(const char* a, const char* b, const char* sep) { - const char* _t555; - _t555 = bux_str_join2(a, b, sep); - return _t555; + const char* _t546; + _t546 = bux_str_join2(a, b, sep); + return _t546; } const char* String_Chars(const char* s, unsigned int index) { - const char* _t556; - _t556 = bux_str_slice(s, index, 1); - return _t556; + const char* _t547; + _t547 = bux_str_slice(s, index, 1); + return _t547; } const char* String_Find(const char* haystack, const char* needle) { - const char* _t557; - _t557 = bux_strstr(haystack, needle); - return _t557; + const char* _t548; + _t548 = bux_strstr(haystack, needle); + return _t548; } unsigned int String_Offset(const char* pos, const char* base) { - unsigned int _t558; - _t558 = bux_str_offset(pos, base); - return _t558; + unsigned int _t549; + _t549 = bux_str_offset(pos, base); + return _t549; } const char* String_Replace(const char* s, const char* old, const char* new) { - int _t564; - int _t566; - int _t567; + int _t555; + int _t557; + int _t558; const char* pos; - const char* _t559; - _t559 = bux_strstr(s, old); - pos = _t559; - bool _t560; - _t560 = String_IsNull(pos); - if (!_t560) goto endif233; + const char* _t550; + _t550 = bux_strstr(s, old); + pos = _t550; + bool _t551; + _t551 = String_IsNull(pos); + if (!_t551) goto endif220; { return s; } - endif233:; + endif220:; unsigned int oldLen; - unsigned int _t561; - _t561 = bux_strlen(old); - oldLen = _t561; + unsigned int _t552; + _t552 = bux_strlen(old); + oldLen = _t552; unsigned int prefixLen; - unsigned int _t562; - _t562 = String_Offset(pos, s); - prefixLen = _t562; + unsigned int _t553; + _t553 = String_Offset(pos, s); + prefixLen = _t553; const char* prefix; - const char* _t563; - _t563 = bux_str_slice(s, 0, prefixLen); - prefix = _t563; + const char* _t554; + _t554 = bux_str_slice(s, 0, prefixLen); + prefix = _t554; const char* suffix; - _t564 = prefixLen + oldLen; - unsigned int _t565; - _t565 = bux_strlen(s); - _t566 = _t565 - prefixLen; - _t567 = _t566 - oldLen; - const char* _t568; - _t568 = bux_str_slice(s, _t564, _t567); - suffix = _t568; + _t555 = prefixLen + oldLen; + unsigned int _t556; + _t556 = bux_strlen(s); + _t557 = _t556 - prefixLen; + _t558 = _t557 - oldLen; + const char* _t559; + _t559 = bux_str_slice(s, _t555, _t558); + suffix = _t559; const char* temp; - const char* _t569; - _t569 = String_Concat(prefix, new); - temp = _t569; + const char* _t560; + _t560 = String_Concat(prefix, new); + temp = _t560; const char* result; - const char* _t570; - _t570 = String_Concat(temp, suffix); - result = _t570; + const char* _t561; + _t561 = String_Concat(temp, suffix); + result = _t561; return result; } double String_ToFloat(const char* s) { - double _t571; - _t571 = bux_str_to_float(s); - return _t571; + double _t562; + _t562 = bux_str_to_float(s); + return _t562; } const char* String_FromBool(bool b) { - if (!b) goto endif235; + if (!b) goto endif222; { return "true"; } - endif235:; + endif222:; return "false"; } const char* String_FromFloat(double f) { - const char* _t572; - _t572 = bux_float_to_string(f); - return _t572; + const char* _t563; + _t563 = bux_float_to_string(f); + return _t563; } const char* String_Format1(const char* pattern, const char* a0) { - const char* _t573; - _t573 = bux_str_format(pattern, a0, "", "", "", "", "", "", ""); - return _t573; + const char* _t564; + _t564 = bux_str_format(pattern, a0, "", "", "", "", "", "", ""); + return _t564; } const char* String_Format2(const char* pattern, const char* a0, const char* a1) { - const char* _t574; - _t574 = bux_str_format(pattern, a0, a1, "", "", "", "", "", ""); - return _t574; + const char* _t565; + _t565 = bux_str_format(pattern, a0, a1, "", "", "", "", "", ""); + return _t565; } const char* String_Format3(const char* pattern, const char* a0, const char* a1, const char* a2) { - const char* _t575; - _t575 = bux_str_format(pattern, a0, a1, a2, "", "", "", "", ""); - return _t575; + const char* _t566; + _t566 = bux_str_format(pattern, a0, a1, a2, "", "", "", "", ""); + return _t566; } void Channel_SendInt(Channel_int* ch, int value) { - void* _t577; - void* _t578; - void* _t576; - _t576 = ch->handle; - _t577 = &value; - _t578 = (void*)_t577; - bux_channel_send(_t576, _t578); + void* _t568; + void* _t569; + void* _t567; + _t567 = ch->handle; + _t568 = &value; + _t569 = (void*)_t568; + bux_channel_send(_t567, _t569); } int Channel_RecvInt(Channel_int* ch) { - void* _t580; - void* _t581; + void* _t571; + void* _t572; int result; result = 0; - void* _t579; - _t579 = ch->handle; - _t580 = &result; - _t581 = (void*)_t580; - bux_channel_recv(_t579, _t581); + void* _t570; + _t570 = ch->handle; + _t571 = &result; + _t572 = (void*)_t571; + bux_channel_recv(_t570, _t572); return result; } void Channel_SendFloat64(Channel_float64* ch, double value) { - void* _t583; - void* _t584; - void* _t582; - _t582 = ch->handle; - _t583 = &value; - _t584 = (void*)_t583; - bux_channel_send(_t582, _t584); + void* _t574; + void* _t575; + void* _t573; + _t573 = ch->handle; + _t574 = &value; + _t575 = (void*)_t574; + bux_channel_send(_t573, _t575); } double Channel_RecvFloat64(Channel_float64* ch) { - void* _t586; - void* _t587; + void* _t577; + void* _t578; double result; result = 0.0; - void* _t585; - _t585 = ch->handle; - _t586 = &result; - _t587 = (void*)_t586; - bux_channel_recv(_t585, _t587); + void* _t576; + _t576 = ch->handle; + _t577 = &result; + _t578 = (void*)_t577; + bux_channel_recv(_t576, _t578); return result; } const char* Hash_Sha1(const char* data) { - int _t589; + int _t580; int len; - unsigned int _t588; - _t588 = String_Len(data); - _t589 = (int)_t588; - len = _t589; + unsigned int _t579; + _t579 = String_Len(data); + _t580 = (int)_t579; + len = _t580; void* buf; - void* _t590; - _t590 = Alloc(20); - buf = _t590; + void* _t581; + _t581 = Alloc(20); + buf = _t581; bux_sha1(data, len, buf); const char* result; - const char* _t591; - _t591 = bux_bytes_to_hex(buf, 20); - result = _t591; + const char* _t582; + _t582 = bux_bytes_to_hex(buf, 20); + result = _t582; Free(buf); return result; } const char* Hash_Sha256(const char* data) { - int _t593; + int _t584; int len; - unsigned int _t592; - _t592 = String_Len(data); - _t593 = (int)_t592; - len = _t593; + unsigned int _t583; + _t583 = String_Len(data); + _t584 = (int)_t583; + len = _t584; void* buf; - void* _t594; - _t594 = Alloc(32); - buf = _t594; + void* _t585; + _t585 = Alloc(32); + buf = _t585; bux_sha256(data, len, buf); const char* result; - const char* _t595; - _t595 = bux_bytes_to_hex(buf, 32); - result = _t595; + const char* _t586; + _t586 = bux_bytes_to_hex(buf, 32); + result = _t586; Free(buf); return result; } const char* Hash_Sha384(const char* data) { - int _t597; + int _t588; int len; - unsigned int _t596; - _t596 = String_Len(data); - _t597 = (int)_t596; - len = _t597; + unsigned int _t587; + _t587 = String_Len(data); + _t588 = (int)_t587; + len = _t588; void* buf; - void* _t598; - _t598 = Alloc(48); - buf = _t598; + void* _t589; + _t589 = Alloc(48); + buf = _t589; bux_sha384(data, len, buf); const char* result; - const char* _t599; - _t599 = bux_bytes_to_hex(buf, 48); - result = _t599; + const char* _t590; + _t590 = bux_bytes_to_hex(buf, 48); + result = _t590; Free(buf); return result; } const char* Hash_Sha512(const char* data) { - int _t601; + int _t592; int len; - unsigned int _t600; - _t600 = String_Len(data); - _t601 = (int)_t600; - len = _t601; + unsigned int _t591; + _t591 = String_Len(data); + _t592 = (int)_t591; + len = _t592; void* buf; - void* _t602; - _t602 = Alloc(64); - buf = _t602; + void* _t593; + _t593 = Alloc(64); + buf = _t593; bux_sha512(data, len, buf); const char* result; - const char* _t603; - _t603 = bux_bytes_to_hex(buf, 64); - result = _t603; + const char* _t594; + _t594 = bux_bytes_to_hex(buf, 64); + result = _t594; Free(buf); return result; } void Hash_Sha256Raw(const char* data, void* out) { - int _t605; - unsigned int _t604; - _t604 = String_Len(data); - _t605 = (int)_t604; - bux_sha256(data, _t605, out); + int _t596; + unsigned int _t595; + _t595 = String_Len(data); + _t596 = (int)_t595; + bux_sha256(data, _t596, out); } void Hash_Sha384Raw(const char* data, void* out) { - int _t607; - unsigned int _t606; - _t606 = String_Len(data); - _t607 = (int)_t606; - bux_sha384(data, _t607, out); + int _t598; + unsigned int _t597; + _t597 = String_Len(data); + _t598 = (int)_t597; + bux_sha384(data, _t598, out); } void Hash_Sha512Raw(const char* data, void* out) { - int _t609; - unsigned int _t608; - _t608 = String_Len(data); - _t609 = (int)_t608; - bux_sha512(data, _t609, out); + int _t600; + unsigned int _t599; + _t599 = String_Len(data); + _t600 = (int)_t599; + bux_sha512(data, _t600, out); } int Hash_Sha1Size(void) { @@ -3365,1502 +3364,1502 @@ int Hash_Sha512Size(void) { } const char* Base64_Encode(const char* s) { - int _t611; - unsigned int _t610; - _t610 = String_Len(s); - _t611 = (int)_t610; - const char* _t612; - _t612 = bux_base64_encode(s, _t611); - return _t612; + int _t602; + unsigned int _t601; + _t601 = String_Len(s); + _t602 = (int)_t601; + const char* _t603; + _t603 = bux_base64_encode(s, _t602); + return _t603; } const char* Base64_Decode(const char* s) { - int _t614; - void* _t615; + int _t605; + void* _t606; int outlen; outlen = 0; - unsigned int _t613; - _t613 = String_Len(s); - _t614 = (int)_t613; - _t615 = &outlen; - const char* _t616; - _t616 = bux_base64_decode(s, _t614, _t615); - return _t616; + unsigned int _t604; + _t604 = String_Len(s); + _t605 = (int)_t604; + _t606 = &outlen; + const char* _t607; + _t607 = bux_base64_decode(s, _t605, _t606); + return _t607; } const char* Base64URL_Encode(const char* s) { - int _t618; - unsigned int _t617; - _t617 = String_Len(s); - _t618 = (int)_t617; - const char* _t619; - _t619 = bux_base64url_encode(s, _t618); - return _t619; + int _t609; + unsigned int _t608; + _t608 = String_Len(s); + _t609 = (int)_t608; + const char* _t610; + _t610 = bux_base64url_encode(s, _t609); + return _t610; } const char* Base64URL_Decode(const char* s) { - int _t621; - void* _t622; + int _t612; + void* _t613; int outlen; outlen = 0; - unsigned int _t620; - _t620 = String_Len(s); - _t621 = (int)_t620; - _t622 = &outlen; - const char* _t623; - _t623 = bux_base64url_decode(s, _t621, _t622); - return _t623; + unsigned int _t611; + _t611 = String_Len(s); + _t612 = (int)_t611; + _t613 = &outlen; + const char* _t614; + _t614 = bux_base64url_decode(s, _t612, _t613); + return _t614; } const char* Hmac_Sha256(const char* key, const char* message) { - int _t625; - int _t627; + int _t616; + int _t618; int kl; - unsigned int _t624; - _t624 = String_Len(key); - _t625 = (int)_t624; - kl = _t625; + unsigned int _t615; + _t615 = String_Len(key); + _t616 = (int)_t615; + kl = _t616; int ml; - unsigned int _t626; - _t626 = String_Len(message); - _t627 = (int)_t626; - ml = _t627; + unsigned int _t617; + _t617 = String_Len(message); + _t618 = (int)_t617; + ml = _t618; void* buf; - void* _t628; - _t628 = Alloc(32); - buf = _t628; + void* _t619; + _t619 = Alloc(32); + buf = _t619; bux_hmac_sha256(key, kl, message, ml, buf); const char* result; - const char* _t629; - _t629 = bux_bytes_to_hex(buf, 32); - result = _t629; + const char* _t620; + _t620 = bux_bytes_to_hex(buf, 32); + result = _t620; Free(buf); return result; } void Hmac_Sha256Raw(const char* key, const char* message, void* out) { - int _t631; - int _t633; - unsigned int _t630; - _t630 = String_Len(key); - _t631 = (int)_t630; - unsigned int _t632; - _t632 = String_Len(message); - _t633 = (int)_t632; - bux_hmac_sha256(key, _t631, message, _t633, out); + int _t622; + int _t624; + unsigned int _t621; + _t621 = String_Len(key); + _t622 = (int)_t621; + unsigned int _t623; + _t623 = String_Len(message); + _t624 = (int)_t623; + bux_hmac_sha256(key, _t622, message, _t624, out); } const char* Hmac_Sha256Base64(const char* key, const char* message) { - int _t635; - int _t637; - const char* _t639; + int _t626; + int _t628; + const char* _t630; int kl; - unsigned int _t634; - _t634 = String_Len(key); - _t635 = (int)_t634; - kl = _t635; + unsigned int _t625; + _t625 = String_Len(key); + _t626 = (int)_t625; + kl = _t626; int ml; - unsigned int _t636; - _t636 = String_Len(message); - _t637 = (int)_t636; - ml = _t637; + unsigned int _t627; + _t627 = String_Len(message); + _t628 = (int)_t627; + ml = _t628; void* buf; - void* _t638; - _t638 = Alloc(32); - buf = _t638; + void* _t629; + _t629 = Alloc(32); + buf = _t629; bux_hmac_sha256(key, kl, message, ml, buf); const char* result; - _t639 = (const char*)buf; - const char* _t640; - _t640 = bux_base64_encode(_t639, 32); - result = _t640; + _t630 = (const char*)buf; + const char* _t631; + _t631 = bux_base64_encode(_t630, 32); + result = _t631; Free(buf); return result; } const char* Hmac_Sha384(const char* key, const char* message) { - int _t642; - int _t644; + int _t633; + int _t635; int kl; - unsigned int _t641; - _t641 = String_Len(key); - _t642 = (int)_t641; - kl = _t642; + unsigned int _t632; + _t632 = String_Len(key); + _t633 = (int)_t632; + kl = _t633; int ml; - unsigned int _t643; - _t643 = String_Len(message); - _t644 = (int)_t643; - ml = _t644; + unsigned int _t634; + _t634 = String_Len(message); + _t635 = (int)_t634; + ml = _t635; void* buf; - void* _t645; - _t645 = Alloc(48); - buf = _t645; + void* _t636; + _t636 = Alloc(48); + buf = _t636; bux_hmac_sha384(key, kl, message, ml, buf); const char* result; - const char* _t646; - _t646 = bux_bytes_to_hex(buf, 48); - result = _t646; + const char* _t637; + _t637 = bux_bytes_to_hex(buf, 48); + result = _t637; Free(buf); return result; } void Hmac_Sha384Raw(const char* key, const char* message, void* out) { - int _t648; - int _t650; - unsigned int _t647; - _t647 = String_Len(key); - _t648 = (int)_t647; - unsigned int _t649; - _t649 = String_Len(message); - _t650 = (int)_t649; - bux_hmac_sha384(key, _t648, message, _t650, out); + int _t639; + int _t641; + unsigned int _t638; + _t638 = String_Len(key); + _t639 = (int)_t638; + unsigned int _t640; + _t640 = String_Len(message); + _t641 = (int)_t640; + bux_hmac_sha384(key, _t639, message, _t641, out); } const char* Hmac_Sha384Base64(const char* key, const char* message) { - int _t652; - int _t654; - const char* _t656; + int _t643; + int _t645; + const char* _t647; int kl; - unsigned int _t651; - _t651 = String_Len(key); - _t652 = (int)_t651; - kl = _t652; + unsigned int _t642; + _t642 = String_Len(key); + _t643 = (int)_t642; + kl = _t643; int ml; - unsigned int _t653; - _t653 = String_Len(message); - _t654 = (int)_t653; - ml = _t654; + unsigned int _t644; + _t644 = String_Len(message); + _t645 = (int)_t644; + ml = _t645; void* buf; - void* _t655; - _t655 = Alloc(48); - buf = _t655; + void* _t646; + _t646 = Alloc(48); + buf = _t646; bux_hmac_sha384(key, kl, message, ml, buf); const char* result; - _t656 = (const char*)buf; - const char* _t657; - _t657 = bux_base64_encode(_t656, 48); - result = _t657; + _t647 = (const char*)buf; + const char* _t648; + _t648 = bux_base64_encode(_t647, 48); + result = _t648; Free(buf); return result; } const char* Hmac_Sha512(const char* key, const char* message) { - int _t659; - int _t661; + int _t650; + int _t652; int kl; - unsigned int _t658; - _t658 = String_Len(key); - _t659 = (int)_t658; - kl = _t659; + unsigned int _t649; + _t649 = String_Len(key); + _t650 = (int)_t649; + kl = _t650; int ml; - unsigned int _t660; - _t660 = String_Len(message); - _t661 = (int)_t660; - ml = _t661; + unsigned int _t651; + _t651 = String_Len(message); + _t652 = (int)_t651; + ml = _t652; void* buf; - void* _t662; - _t662 = Alloc(64); - buf = _t662; + void* _t653; + _t653 = Alloc(64); + buf = _t653; bux_hmac_sha512(key, kl, message, ml, buf); const char* result; - const char* _t663; - _t663 = bux_bytes_to_hex(buf, 64); - result = _t663; + const char* _t654; + _t654 = bux_bytes_to_hex(buf, 64); + result = _t654; Free(buf); return result; } void Hmac_Sha512Raw(const char* key, const char* message, void* out) { - int _t665; - int _t667; - unsigned int _t664; - _t664 = String_Len(key); - _t665 = (int)_t664; - unsigned int _t666; - _t666 = String_Len(message); - _t667 = (int)_t666; - bux_hmac_sha512(key, _t665, message, _t667, out); + int _t656; + int _t658; + unsigned int _t655; + _t655 = String_Len(key); + _t656 = (int)_t655; + unsigned int _t657; + _t657 = String_Len(message); + _t658 = (int)_t657; + bux_hmac_sha512(key, _t656, message, _t658, out); } const char* Hmac_Sha512Base64(const char* key, const char* message) { - int _t669; - int _t671; - const char* _t673; + int _t660; + int _t662; + const char* _t664; int kl; - unsigned int _t668; - _t668 = String_Len(key); - _t669 = (int)_t668; - kl = _t669; + unsigned int _t659; + _t659 = String_Len(key); + _t660 = (int)_t659; + kl = _t660; int ml; - unsigned int _t670; - _t670 = String_Len(message); - _t671 = (int)_t670; - ml = _t671; + unsigned int _t661; + _t661 = String_Len(message); + _t662 = (int)_t661; + ml = _t662; void* buf; - void* _t672; - _t672 = Alloc(64); - buf = _t672; + void* _t663; + _t663 = Alloc(64); + buf = _t663; bux_hmac_sha512(key, kl, message, ml, buf); const char* result; - _t673 = (const char*)buf; - const char* _t674; - _t674 = bux_base64_encode(_t673, 64); - result = _t674; + _t664 = (const char*)buf; + const char* _t665; + _t665 = bux_base64_encode(_t664, 64); + result = _t665; Free(buf); return result; } const char* Random_Bytes(int n) { - int _t675; - unsigned int _t676; - int _t679; - const char* _t680; - _t675 = (n <= 0); - if (!_t675) goto endif237; + int _t666; + unsigned int _t667; + int _t670; + const char* _t671; + _t666 = (n <= 0); + if (!_t666) goto endif224; { return ""; } - endif237:; + endif224:; void* buf; - _t676 = (unsigned int)n; - void* _t677; - _t677 = Alloc(_t676); - buf = _t677; - int _t678; - _t678 = bux_random_bytes(buf, n); - _t679 = (_t678 != 1); - if (!_t679) goto endif239; + _t667 = (unsigned int)n; + void* _t668; + _t668 = Alloc(_t667); + buf = _t668; + int _t669; + _t669 = bux_random_bytes(buf, n); + _t670 = (_t669 != 1); + if (!_t670) goto endif226; { Free(buf); return ""; } - endif239:; - _t680 = (const char*)buf; - return _t680; + endif226:; + _t671 = (const char*)buf; + return _t671; } const char* Random_Hex(int n) { - int _t681; - unsigned int _t682; - int _t685; - _t681 = (n <= 0); - if (!_t681) goto endif241; + int _t672; + unsigned int _t673; + int _t676; + _t672 = (n <= 0); + if (!_t672) goto endif228; { return ""; } - endif241:; + endif228:; void* buf; - _t682 = (unsigned int)n; - void* _t683; - _t683 = Alloc(_t682); - buf = _t683; - int _t684; - _t684 = bux_random_bytes(buf, n); - _t685 = (_t684 != 1); - if (!_t685) goto endif243; + _t673 = (unsigned int)n; + void* _t674; + _t674 = Alloc(_t673); + buf = _t674; + int _t675; + _t675 = bux_random_bytes(buf, n); + _t676 = (_t675 != 1); + if (!_t676) goto endif230; { Free(buf); return ""; } - endif243:; + endif230:; const char* result; - const char* _t686; - _t686 = bux_bytes_to_hex(buf, n); - result = _t686; + const char* _t677; + _t677 = bux_bytes_to_hex(buf, n); + result = _t677; Free(buf); return result; } const char* Random_Base64(int n) { - int _t687; - unsigned int _t688; - int _t691; - const char* _t692; - _t687 = (n <= 0); - if (!_t687) goto endif245; + int _t678; + unsigned int _t679; + int _t682; + const char* _t683; + _t678 = (n <= 0); + if (!_t678) goto endif232; { return ""; } - endif245:; + endif232:; void* buf; - _t688 = (unsigned int)n; - void* _t689; - _t689 = Alloc(_t688); - buf = _t689; - int _t690; - _t690 = bux_random_bytes(buf, n); - _t691 = (_t690 != 1); - if (!_t691) goto endif247; + _t679 = (unsigned int)n; + void* _t680; + _t680 = Alloc(_t679); + buf = _t680; + int _t681; + _t681 = bux_random_bytes(buf, n); + _t682 = (_t681 != 1); + if (!_t682) goto endif234; { Free(buf); return ""; } - endif247:; + endif234:; const char* result; - _t692 = (const char*)buf; - const char* _t693; - _t693 = bux_base64_encode(_t692, n); - result = _t693; + _t683 = (const char*)buf; + const char* _t684; + _t684 = bux_base64_encode(_t683, n); + result = _t684; Free(buf); return result; } unsigned int Random_Uint32(void) { - int _t696; - unsigned int* _t697; - unsigned int _t698; + int _t687; + unsigned int* _t688; + unsigned int _t689; void* buf; - void* _t694; - _t694 = Alloc(4); - buf = _t694; - int _t695; - _t695 = bux_random_bytes(buf, 4); - _t696 = (_t695 != 1); - if (!_t696) goto endif249; + void* _t685; + _t685 = Alloc(4); + buf = _t685; + int _t686; + _t686 = bux_random_bytes(buf, 4); + _t687 = (_t686 != 1); + if (!_t687) goto endif236; { Free(buf); return 0; } - endif249:; + endif236:; unsigned int* ptr; - _t697 = (unsigned int*)buf; - ptr = _t697; + _t688 = (unsigned int*)buf; + ptr = _t688; unsigned int val; - _t698 = *ptr; - val = _t698; + _t689 = *ptr; + val = _t689; Free(buf); return val; } const char* Aes_GenerateKey(void) { - unsigned int _t699; - int _t702; - const char* _t703; + unsigned int _t690; + int _t693; + const char* _t694; void* buf; - _t699 = (unsigned int)AES_KEY_SIZE; - void* _t700; - _t700 = Alloc(_t699); - buf = _t700; - int _t701; - _t701 = bux_random_bytes(buf, AES_KEY_SIZE); - _t702 = (_t701 != 1); - if (!_t702) goto endif251; + _t690 = (unsigned int)AES_KEY_SIZE; + void* _t691; + _t691 = Alloc(_t690); + buf = _t691; + int _t692; + _t692 = bux_random_bytes(buf, AES_KEY_SIZE); + _t693 = (_t692 != 1); + if (!_t693) goto endif238; { Free(buf); return ""; } - endif251:; - _t703 = (const char*)buf; - return _t703; + endif238:; + _t694 = (const char*)buf; + return _t694; } const char* Aes_GenerateIV(void) { - unsigned int _t704; - int _t707; - const char* _t708; + unsigned int _t695; + int _t698; + const char* _t699; void* buf; - _t704 = (unsigned int)AES_IV_SIZE; - void* _t705; - _t705 = Alloc(_t704); - buf = _t705; - int _t706; - _t706 = bux_random_bytes(buf, AES_IV_SIZE); - _t707 = (_t706 != 1); - if (!_t707) goto endif253; + _t695 = (unsigned int)AES_IV_SIZE; + void* _t696; + _t696 = Alloc(_t695); + buf = _t696; + int _t697; + _t697 = bux_random_bytes(buf, AES_IV_SIZE); + _t698 = (_t697 != 1); + if (!_t698) goto endif240; { Free(buf); return ""; } - endif253:; - _t708 = (const char*)buf; - return _t708; + endif240:; + _t699 = (const char*)buf; + return _t699; } const char* Aes_CbcEncrypt(const char* plain, const char* key, const char* iv) { - int _t710; - void* _t711; + int _t701; + void* _t702; int outlen; outlen = 0; - unsigned int _t709; - _t709 = String_Len(plain); - _t710 = (int)_t709; - _t711 = &outlen; - const char* _t712; - _t712 = bux_aes_256_cbc_encrypt(plain, _t710, key, iv, _t711); - return _t712; + unsigned int _t700; + _t700 = String_Len(plain); + _t701 = (int)_t700; + _t702 = &outlen; + const char* _t703; + _t703 = bux_aes_256_cbc_encrypt(plain, _t701, key, iv, _t702); + return _t703; } const char* Aes_CbcDecrypt(const char* cipher, const char* key, const char* iv) { - int _t714; - void* _t715; + int _t705; + void* _t706; int outlen; outlen = 0; - unsigned int _t713; - _t713 = String_Len(cipher); - _t714 = (int)_t713; - _t715 = &outlen; - const char* _t716; - _t716 = bux_aes_256_cbc_decrypt(cipher, _t714, key, iv, _t715); - return _t716; + unsigned int _t704; + _t704 = String_Len(cipher); + _t705 = (int)_t704; + _t706 = &outlen; + const char* _t707; + _t707 = bux_aes_256_cbc_decrypt(cipher, _t705, key, iv, _t706); + return _t707; } const char* Aes_GcmEncrypt(const char* plain, const char* key, const char* iv, void* tag) { - int _t718; - void* _t719; + int _t709; + void* _t710; int outlen; outlen = 0; - unsigned int _t717; - _t717 = String_Len(plain); - _t718 = (int)_t717; - _t719 = &outlen; - const char* _t720; - _t720 = bux_aes_256_gcm_encrypt(plain, _t718, key, iv, tag, _t719); - return _t720; + unsigned int _t708; + _t708 = String_Len(plain); + _t709 = (int)_t708; + _t710 = &outlen; + const char* _t711; + _t711 = bux_aes_256_gcm_encrypt(plain, _t709, key, iv, tag, _t710); + return _t711; } const char* Aes_GcmDecrypt(const char* cipher, const char* key, const char* iv, const char* tag) { - int _t722; - void* _t723; + int _t713; + void* _t714; int outlen; outlen = 0; - unsigned int _t721; - _t721 = String_Len(cipher); - _t722 = (int)_t721; - _t723 = &outlen; - const char* _t724; - _t724 = bux_aes_256_gcm_decrypt(cipher, _t722, key, iv, tag, _t723); - return _t724; + unsigned int _t712; + _t712 = String_Len(cipher); + _t713 = (int)_t712; + _t714 = &outlen; + const char* _t715; + _t715 = bux_aes_256_gcm_decrypt(cipher, _t713, key, iv, tag, _t714); + return _t715; } const char* Jwt_MakeHeader(JwtAlg alg) { - int _t725; - int _t726; - int _t727; - int _t728; - int _t729; - int _t730; - int _t731; - int _t732; - int _t733; - _t725 = (alg == JwtAlg_HS256); - if (!_t725) goto endif255; + int _t716; + int _t717; + int _t718; + int _t719; + int _t720; + int _t721; + int _t722; + int _t723; + int _t724; + _t716 = (alg == JwtAlg_HS256); + if (!_t716) goto endif242; { return "{\"alg\":\"HS256\",\"typ\":\"JWT\"}"; } - endif255:; - _t726 = (alg == JwtAlg_HS384); - if (!_t726) goto endif257; + endif242:; + _t717 = (alg == JwtAlg_HS384); + if (!_t717) goto endif244; { return "{\"alg\":\"HS384\",\"typ\":\"JWT\"}"; } - endif257:; - _t727 = (alg == JwtAlg_HS512); - if (!_t727) goto endif259; + endif244:; + _t718 = (alg == JwtAlg_HS512); + if (!_t718) goto endif246; { return "{\"alg\":\"HS512\",\"typ\":\"JWT\"}"; } - endif259:; - _t728 = (alg == JwtAlg_RS256); - if (!_t728) goto endif261; + endif246:; + _t719 = (alg == JwtAlg_RS256); + if (!_t719) goto endif248; { return "{\"alg\":\"RS256\",\"typ\":\"JWT\"}"; } - endif261:; - _t729 = (alg == JwtAlg_RS384); - if (!_t729) goto endif263; + endif248:; + _t720 = (alg == JwtAlg_RS384); + if (!_t720) goto endif250; { return "{\"alg\":\"RS384\",\"typ\":\"JWT\"}"; } - endif263:; - _t730 = (alg == JwtAlg_RS512); - if (!_t730) goto endif265; + endif250:; + _t721 = (alg == JwtAlg_RS512); + if (!_t721) goto endif252; { return "{\"alg\":\"RS512\",\"typ\":\"JWT\"}"; } - endif265:; - _t731 = (alg == JwtAlg_ES256); - if (!_t731) goto endif267; + endif252:; + _t722 = (alg == JwtAlg_ES256); + if (!_t722) goto endif254; { return "{\"alg\":\"ES256\",\"typ\":\"JWT\"}"; } - endif267:; - _t732 = (alg == JwtAlg_ES384); - if (!_t732) goto endif269; + endif254:; + _t723 = (alg == JwtAlg_ES384); + if (!_t723) goto endif256; { return "{\"alg\":\"ES384\",\"typ\":\"JWT\"}"; } - endif269:; - _t733 = (alg == JwtAlg_EdDSA); - if (!_t733) goto endif271; + endif256:; + _t724 = (alg == JwtAlg_EdDSA); + if (!_t724) goto endif258; { return "{\"alg\":\"EdDSA\",\"typ\":\"JWT\"}"; } - endif271:; + endif258:; return "{\"alg\":\"none\",\"typ\":\"JWT\"}"; } const char* Jwt_Sign(JwtAlg alg, const char* signingInput, const char* key) { - int _t734; - const char* _t736; - int _t738; - const char* _t740; + int _t725; + const char* _t727; + int _t729; + const char* _t731; + int _t733; + const char* _t735; + int _t737; + int _t740; int _t742; - const char* _t744; - int _t746; - int _t749; - int _t751; - int _t754; - int _t756; - int _t759; - int _t761; - int _t764; - int _t766; - int _t769; - int _t771; - _t734 = (alg == JwtAlg_HS256); - if (!_t734) goto endif273; + int _t745; + int _t747; + int _t750; + int _t752; + int _t755; + int _t757; + int _t760; + int _t762; + _t725 = (alg == JwtAlg_HS256); + if (!_t725) goto endif260; { void* buf; - void* _t735; - _t735 = Alloc(32); - buf = _t735; + void* _t726; + _t726 = Alloc(32); + buf = _t726; Hmac_Sha256Raw(key, signingInput, buf); const char* result; - _t736 = (const char*)buf; - const char* _t737; - _t737 = bux_base64_encode(_t736, 32); - result = _t737; + _t727 = (const char*)buf; + const char* _t728; + _t728 = bux_base64_encode(_t727, 32); + result = _t728; Free(buf); return result; } - endif273:; - _t738 = (alg == JwtAlg_HS384); - if (!_t738) goto endif275; + endif260:; + _t729 = (alg == JwtAlg_HS384); + if (!_t729) goto endif262; { void* buf; - void* _t739; - _t739 = Alloc(48); - buf = _t739; + void* _t730; + _t730 = Alloc(48); + buf = _t730; Hmac_Sha384Raw(key, signingInput, buf); const char* result; - _t740 = (const char*)buf; - const char* _t741; - _t741 = bux_base64_encode(_t740, 48); - result = _t741; + _t731 = (const char*)buf; + const char* _t732; + _t732 = bux_base64_encode(_t731, 48); + result = _t732; Free(buf); return result; } - endif275:; - _t742 = (alg == JwtAlg_HS512); - if (!_t742) goto endif277; + endif262:; + _t733 = (alg == JwtAlg_HS512); + if (!_t733) goto endif264; { void* buf; - void* _t743; - _t743 = Alloc(64); - buf = _t743; + void* _t734; + _t734 = Alloc(64); + buf = _t734; Hmac_Sha512Raw(key, signingInput, buf); const char* result; - _t744 = (const char*)buf; - const char* _t745; - _t745 = bux_base64_encode(_t744, 64); - result = _t745; + _t735 = (const char*)buf; + const char* _t736; + _t736 = bux_base64_encode(_t735, 64); + result = _t736; Free(buf); return result; } - endif277:; - _t746 = (alg == JwtAlg_RS256); - if (!_t746) goto endif279; + endif264:; + _t737 = (alg == JwtAlg_RS256); + if (!_t737) goto endif266; { const char* raw; - const char* _t747; - _t747 = Rsa_SignSha256(key, signingInput); - raw = _t747; - unsigned int _t748; - _t748 = String_Len(raw); - _t749 = (int)_t748; - const char* _t750; - _t750 = bux_base64_encode(raw, _t749); - return _t750; + const char* _t738; + _t738 = Rsa_SignSha256(key, signingInput); + raw = _t738; + unsigned int _t739; + _t739 = String_Len(raw); + _t740 = (int)_t739; + const char* _t741; + _t741 = bux_base64_encode(raw, _t740); + return _t741; } - endif279:; - _t751 = (alg == JwtAlg_RS384); - if (!_t751) goto endif281; + endif266:; + _t742 = (alg == JwtAlg_RS384); + if (!_t742) goto endif268; { const char* raw; - const char* _t752; - _t752 = Rsa_SignSha384(key, signingInput); - raw = _t752; - unsigned int _t753; - _t753 = String_Len(raw); - _t754 = (int)_t753; - const char* _t755; - _t755 = bux_base64_encode(raw, _t754); - return _t755; + const char* _t743; + _t743 = Rsa_SignSha384(key, signingInput); + raw = _t743; + unsigned int _t744; + _t744 = String_Len(raw); + _t745 = (int)_t744; + const char* _t746; + _t746 = bux_base64_encode(raw, _t745); + return _t746; } - endif281:; - _t756 = (alg == JwtAlg_RS512); - if (!_t756) goto endif283; + endif268:; + _t747 = (alg == JwtAlg_RS512); + if (!_t747) goto endif270; { const char* raw; - const char* _t757; - _t757 = Rsa_SignSha512(key, signingInput); - raw = _t757; - unsigned int _t758; - _t758 = String_Len(raw); - _t759 = (int)_t758; - const char* _t760; - _t760 = bux_base64_encode(raw, _t759); - return _t760; + const char* _t748; + _t748 = Rsa_SignSha512(key, signingInput); + raw = _t748; + unsigned int _t749; + _t749 = String_Len(raw); + _t750 = (int)_t749; + const char* _t751; + _t751 = bux_base64_encode(raw, _t750); + return _t751; } - endif283:; - _t761 = (alg == JwtAlg_ES256); - if (!_t761) goto endif285; + endif270:; + _t752 = (alg == JwtAlg_ES256); + if (!_t752) goto endif272; { const char* raw; - const char* _t762; - _t762 = Ecdsa_SignP256(key, signingInput); - raw = _t762; - unsigned int _t763; - _t763 = String_Len(raw); - _t764 = (int)_t763; - const char* _t765; - _t765 = bux_base64_encode(raw, _t764); - return _t765; + const char* _t753; + _t753 = Ecdsa_SignP256(key, signingInput); + raw = _t753; + unsigned int _t754; + _t754 = String_Len(raw); + _t755 = (int)_t754; + const char* _t756; + _t756 = bux_base64_encode(raw, _t755); + return _t756; } - endif285:; - _t766 = (alg == JwtAlg_ES384); - if (!_t766) goto endif287; + endif272:; + _t757 = (alg == JwtAlg_ES384); + if (!_t757) goto endif274; { const char* raw; - const char* _t767; - _t767 = Ecdsa_SignP384(key, signingInput); - raw = _t767; - unsigned int _t768; - _t768 = String_Len(raw); - _t769 = (int)_t768; - const char* _t770; - _t770 = bux_base64_encode(raw, _t769); - return _t770; + const char* _t758; + _t758 = Ecdsa_SignP384(key, signingInput); + raw = _t758; + unsigned int _t759; + _t759 = String_Len(raw); + _t760 = (int)_t759; + const char* _t761; + _t761 = bux_base64_encode(raw, _t760); + return _t761; } - endif287:; - _t771 = (alg == JwtAlg_EdDSA); - if (!_t771) goto endif289; + endif274:; + _t762 = (alg == JwtAlg_EdDSA); + if (!_t762) goto endif276; { - const char* _t772; - _t772 = Ed25519_Sign(key, signingInput); - return _t772; + const char* _t763; + _t763 = Ed25519_Sign(key, signingInput); + return _t763; } - endif289:; + endif276:; return ""; } bool Jwt_Verify(JwtAlg alg, const char* signingInput, const char* signatureB64, const char* key) { - int _t773; - const char* _t775; - int _t778; - const char* _t780; + int _t764; + const char* _t766; + int _t769; + const char* _t771; + int _t774; + const char* _t776; + int _t779; + int _t781; int _t783; - const char* _t785; - int _t788; - int _t790; - int _t792; - int _t794; - int _t796; - int _t798; - _t773 = (alg == JwtAlg_HS256); - if (!_t773) goto endif291; + int _t785; + int _t787; + int _t789; + _t764 = (alg == JwtAlg_HS256); + if (!_t764) goto endif278; { void* expectBuf; - void* _t774; - _t774 = Alloc(32); - expectBuf = _t774; + void* _t765; + _t765 = Alloc(32); + expectBuf = _t765; Hmac_Sha256Raw(key, signingInput, expectBuf); const char* expectB64; - _t775 = (const char*)expectBuf; - const char* _t776; - _t776 = bux_base64_encode(_t775, 32); - expectB64 = _t776; + _t766 = (const char*)expectBuf; + const char* _t767; + _t767 = bux_base64_encode(_t766, 32); + expectB64 = _t767; Free(expectBuf); - bool _t777; - _t777 = String_Eq(expectB64, signatureB64); - return _t777; + bool _t768; + _t768 = String_Eq(expectB64, signatureB64); + return _t768; } - endif291:; - _t778 = (alg == JwtAlg_HS384); - if (!_t778) goto endif293; + endif278:; + _t769 = (alg == JwtAlg_HS384); + if (!_t769) goto endif280; { void* expectBuf; - void* _t779; - _t779 = Alloc(48); - expectBuf = _t779; + void* _t770; + _t770 = Alloc(48); + expectBuf = _t770; Hmac_Sha384Raw(key, signingInput, expectBuf); const char* expectB64; - _t780 = (const char*)expectBuf; - const char* _t781; - _t781 = bux_base64_encode(_t780, 48); - expectB64 = _t781; + _t771 = (const char*)expectBuf; + const char* _t772; + _t772 = bux_base64_encode(_t771, 48); + expectB64 = _t772; Free(expectBuf); - bool _t782; - _t782 = String_Eq(expectB64, signatureB64); - return _t782; + bool _t773; + _t773 = String_Eq(expectB64, signatureB64); + return _t773; } - endif293:; - _t783 = (alg == JwtAlg_HS512); - if (!_t783) goto endif295; + endif280:; + _t774 = (alg == JwtAlg_HS512); + if (!_t774) goto endif282; { void* expectBuf; - void* _t784; - _t784 = Alloc(64); - expectBuf = _t784; + void* _t775; + _t775 = Alloc(64); + expectBuf = _t775; Hmac_Sha512Raw(key, signingInput, expectBuf); const char* expectB64; - _t785 = (const char*)expectBuf; - const char* _t786; - _t786 = bux_base64_encode(_t785, 64); - expectB64 = _t786; + _t776 = (const char*)expectBuf; + const char* _t777; + _t777 = bux_base64_encode(_t776, 64); + expectB64 = _t777; Free(expectBuf); - bool _t787; - _t787 = String_Eq(expectB64, signatureB64); - return _t787; + bool _t778; + _t778 = String_Eq(expectB64, signatureB64); + return _t778; } - endif295:; - _t788 = (alg == JwtAlg_RS256); - if (!_t788) goto endif297; + endif282:; + _t779 = (alg == JwtAlg_RS256); + if (!_t779) goto endif284; { - bool _t789; - _t789 = Rsa_VerifySha256(key, signingInput, signatureB64); - return _t789; + bool _t780; + _t780 = Rsa_VerifySha256(key, signingInput, signatureB64); + return _t780; } - endif297:; - _t790 = (alg == JwtAlg_RS384); - if (!_t790) goto endif299; + endif284:; + _t781 = (alg == JwtAlg_RS384); + if (!_t781) goto endif286; { - bool _t791; - _t791 = Rsa_VerifySha384(key, signingInput, signatureB64); - return _t791; + bool _t782; + _t782 = Rsa_VerifySha384(key, signingInput, signatureB64); + return _t782; } - endif299:; - _t792 = (alg == JwtAlg_RS512); - if (!_t792) goto endif301; + endif286:; + _t783 = (alg == JwtAlg_RS512); + if (!_t783) goto endif288; { - bool _t793; - _t793 = Rsa_VerifySha512(key, signingInput, signatureB64); - return _t793; + bool _t784; + _t784 = Rsa_VerifySha512(key, signingInput, signatureB64); + return _t784; } - endif301:; - _t794 = (alg == JwtAlg_ES256); - if (!_t794) goto endif303; + endif288:; + _t785 = (alg == JwtAlg_ES256); + if (!_t785) goto endif290; { - bool _t795; - _t795 = Ecdsa_VerifyP256(key, signingInput, signatureB64); - return _t795; + bool _t786; + _t786 = Ecdsa_VerifyP256(key, signingInput, signatureB64); + return _t786; } - endif303:; - _t796 = (alg == JwtAlg_ES384); - if (!_t796) goto endif305; + endif290:; + _t787 = (alg == JwtAlg_ES384); + if (!_t787) goto endif292; { - bool _t797; - _t797 = Ecdsa_VerifyP384(key, signingInput, signatureB64); - return _t797; + bool _t788; + _t788 = Ecdsa_VerifyP384(key, signingInput, signatureB64); + return _t788; } - endif305:; - _t798 = (alg == JwtAlg_EdDSA); - if (!_t798) goto endif307; + endif292:; + _t789 = (alg == JwtAlg_EdDSA); + if (!_t789) goto endif294; { - bool _t799; - _t799 = Ed25519_Verify(key, signatureB64, signingInput); - return _t799; + bool _t790; + _t790 = Ed25519_Verify(key, signatureB64, signingInput); + return _t790; } - endif307:; + endif294:; return 0; } const char* Jwt_Encode(const char* headerJson, const char* payloadJson, JwtAlg alg, const char* key) { const char* headerB64; - const char* _t800; - _t800 = Base64URL_Encode(headerJson); - headerB64 = _t800; + const char* _t791; + _t791 = Base64URL_Encode(headerJson); + headerB64 = _t791; const char* payloadB64; - const char* _t801; - _t801 = Base64URL_Encode(payloadJson); - payloadB64 = _t801; + const char* _t792; + _t792 = Base64URL_Encode(payloadJson); + payloadB64 = _t792; const char* signingInput; - const char* _t802; - _t802 = String_Concat(headerB64, "."); - signingInput = _t802; + const char* _t793; + _t793 = String_Concat(headerB64, "."); + signingInput = _t793; const char* signingInputFull; - const char* _t803; - _t803 = String_Concat(signingInput, payloadB64); - signingInputFull = _t803; + const char* _t794; + _t794 = String_Concat(signingInput, payloadB64); + signingInputFull = _t794; const char* sigB64; - const char* _t804; - _t804 = Jwt_Sign(alg, signingInputFull, key); - sigB64 = _t804; + const char* _t795; + _t795 = Jwt_Sign(alg, signingInputFull, key); + sigB64 = _t795; const char* part1; - const char* _t805; - _t805 = String_Concat(signingInputFull, "."); - part1 = _t805; - const char* _t806; - _t806 = String_Concat(part1, sigB64); - return _t806; + const char* _t796; + _t796 = String_Concat(signingInputFull, "."); + part1 = _t796; + const char* _t797; + _t797 = String_Concat(part1, sigB64); + return _t797; } bool Jwt_Decode(const char* token, JwtAlg alg, const char* key, const char** headerOut, const char** payloadOut) { - int _t808; - int _t815; + int _t799; + int _t806; unsigned int partCount; - unsigned int _t807; - _t807 = bux_str_split_count(token, "."); - partCount = _t807; - _t808 = (partCount != 3); - if (!_t808) goto endif309; + unsigned int _t798; + _t798 = bux_str_split_count(token, "."); + partCount = _t798; + _t799 = (partCount != 3); + if (!_t799) goto endif296; { return 0; } - endif309:; + endif296:; const char* headerB64; - const char* _t809; - _t809 = bux_str_split_part(token, ".", 0); - headerB64 = _t809; + const char* _t800; + _t800 = bux_str_split_part(token, ".", 0); + headerB64 = _t800; const char* payloadB64; - const char* _t810; - _t810 = bux_str_split_part(token, ".", 1); - payloadB64 = _t810; + const char* _t801; + _t801 = bux_str_split_part(token, ".", 1); + payloadB64 = _t801; const char* sigB64; - const char* _t811; - _t811 = bux_str_split_part(token, ".", 2); - sigB64 = _t811; + const char* _t802; + _t802 = bux_str_split_part(token, ".", 2); + sigB64 = _t802; const char* input; - const char* _t812; - _t812 = String_Concat(headerB64, "."); - input = _t812; + const char* _t803; + _t803 = String_Concat(headerB64, "."); + input = _t803; const char* signingInput; - const char* _t813; - _t813 = String_Concat(input, payloadB64); - signingInput = _t813; - bool _t814; - _t814 = Jwt_Verify(alg, signingInput, sigB64, key); - _t815 = !_t814; - if (!_t815) goto endif311; + const char* _t804; + _t804 = String_Concat(input, payloadB64); + signingInput = _t804; + bool _t805; + _t805 = Jwt_Verify(alg, signingInput, sigB64, key); + _t806 = !_t805; + if (!_t806) goto endif298; { return 0; } - endif311:; - const char* _t816; - _t816 = Base64URL_Decode(headerB64); - headerOut[0] = _t816; - const char* _t817; - _t817 = Base64URL_Decode(payloadB64); - payloadOut[0] = _t817; + endif298:; + const char* _t807; + _t807 = Base64URL_Decode(headerB64); + headerOut[0] = _t807; + const char* _t808; + _t808 = Base64URL_Decode(payloadB64); + payloadOut[0] = _t808; return 1; } const char* Jwt_EncodeHS256(const char* payloadJson, const char* secret) { const char* header; - const char* _t818; - _t818 = Jwt_MakeHeader(JwtAlg_HS256); - header = _t818; - const char* _t819; - _t819 = Jwt_Encode(header, payloadJson, JwtAlg_HS256, secret); - return _t819; + const char* _t809; + _t809 = Jwt_MakeHeader(JwtAlg_HS256); + header = _t809; + const char* _t810; + _t810 = Jwt_Encode(header, payloadJson, JwtAlg_HS256, secret); + return _t810; } const char* Jwt_EncodeHS384(const char* payloadJson, const char* secret) { const char* header; - const char* _t820; - _t820 = Jwt_MakeHeader(JwtAlg_HS384); - header = _t820; - const char* _t821; - _t821 = Jwt_Encode(header, payloadJson, JwtAlg_HS384, secret); - return _t821; + const char* _t811; + _t811 = Jwt_MakeHeader(JwtAlg_HS384); + header = _t811; + const char* _t812; + _t812 = Jwt_Encode(header, payloadJson, JwtAlg_HS384, secret); + return _t812; } const char* Jwt_EncodeHS512(const char* payloadJson, const char* secret) { const char* header; - const char* _t822; - _t822 = Jwt_MakeHeader(JwtAlg_HS512); - header = _t822; - const char* _t823; - _t823 = Jwt_Encode(header, payloadJson, JwtAlg_HS512, secret); - return _t823; + const char* _t813; + _t813 = Jwt_MakeHeader(JwtAlg_HS512); + header = _t813; + const char* _t814; + _t814 = Jwt_Encode(header, payloadJson, JwtAlg_HS512, secret); + return _t814; } const char* Jwt_EncodeRS256(const char* payloadJson, const char* pemPrivateKey) { const char* header; - const char* _t824; - _t824 = Jwt_MakeHeader(JwtAlg_RS256); - header = _t824; - const char* _t825; - _t825 = Jwt_Encode(header, payloadJson, JwtAlg_RS256, pemPrivateKey); - return _t825; + const char* _t815; + _t815 = Jwt_MakeHeader(JwtAlg_RS256); + header = _t815; + const char* _t816; + _t816 = Jwt_Encode(header, payloadJson, JwtAlg_RS256, pemPrivateKey); + return _t816; } const char* Jwt_EncodeES256(const char* payloadJson, const char* pemPrivateKey) { const char* header; - const char* _t826; - _t826 = Jwt_MakeHeader(JwtAlg_ES256); - header = _t826; - const char* _t827; - _t827 = Jwt_Encode(header, payloadJson, JwtAlg_ES256, pemPrivateKey); - return _t827; + const char* _t817; + _t817 = Jwt_MakeHeader(JwtAlg_ES256); + header = _t817; + const char* _t818; + _t818 = Jwt_Encode(header, payloadJson, JwtAlg_ES256, pemPrivateKey); + return _t818; } const char* Jwt_EncodeEdDSA(const char* payloadJson, const char* rawPrivKey) { const char* header; - const char* _t828; - _t828 = Jwt_MakeHeader(JwtAlg_EdDSA); - header = _t828; - const char* _t829; - _t829 = Jwt_Encode(header, payloadJson, JwtAlg_EdDSA, rawPrivKey); - return _t829; + const char* _t819; + _t819 = Jwt_MakeHeader(JwtAlg_EdDSA); + header = _t819; + const char* _t820; + _t820 = Jwt_Encode(header, payloadJson, JwtAlg_EdDSA, rawPrivKey); + return _t820; } const char* Ecdsa_SignP256(const char* pemPrivateKey, const char* data) { - int _t831; - int _t833; - void* _t834; + int _t822; + int _t824; + void* _t825; int siglen; siglen = 0; - unsigned int _t830; - _t830 = String_Len(pemPrivateKey); - _t831 = (int)_t830; - unsigned int _t832; - _t832 = String_Len(data); - _t833 = (int)_t832; - _t834 = &siglen; - const char* _t835; - _t835 = bux_ecdsa_sign_p256(pemPrivateKey, _t831, data, _t833, _t834); - return _t835; + unsigned int _t821; + _t821 = String_Len(pemPrivateKey); + _t822 = (int)_t821; + unsigned int _t823; + _t823 = String_Len(data); + _t824 = (int)_t823; + _t825 = &siglen; + const char* _t826; + _t826 = bux_ecdsa_sign_p256(pemPrivateKey, _t822, data, _t824, _t825); + return _t826; } const char* Ecdsa_SignP256Base64(const char* pemPrivateKey, const char* data) { - int _t838; + int _t829; const char* raw; - const char* _t836; - _t836 = Ecdsa_SignP256(pemPrivateKey, data); - raw = _t836; - unsigned int _t837; - _t837 = String_Len(raw); - _t838 = (int)_t837; - const char* _t839; - _t839 = bux_base64_encode(raw, _t838); - return _t839; + const char* _t827; + _t827 = Ecdsa_SignP256(pemPrivateKey, data); + raw = _t827; + unsigned int _t828; + _t828 = String_Len(raw); + _t829 = (int)_t828; + const char* _t830; + _t830 = bux_base64_encode(raw, _t829); + return _t830; } bool Ecdsa_VerifyP256(const char* pemPublicKey, const char* data, const char* signature) { - int _t841; - int _t843; - int _t845; - int _t847; + int _t832; + int _t834; + int _t836; + int _t838; int r; - unsigned int _t840; - _t840 = String_Len(pemPublicKey); - _t841 = (int)_t840; - unsigned int _t842; - _t842 = String_Len(data); - _t843 = (int)_t842; - unsigned int _t844; - _t844 = String_Len(signature); - _t845 = (int)_t844; - int _t846; - _t846 = bux_ecdsa_verify_p256(pemPublicKey, _t841, data, _t843, signature, _t845); - r = _t846; - _t847 = (r == 1); - return _t847; + unsigned int _t831; + _t831 = String_Len(pemPublicKey); + _t832 = (int)_t831; + unsigned int _t833; + _t833 = String_Len(data); + _t834 = (int)_t833; + unsigned int _t835; + _t835 = String_Len(signature); + _t836 = (int)_t835; + int _t837; + _t837 = bux_ecdsa_verify_p256(pemPublicKey, _t832, data, _t834, signature, _t836); + r = _t837; + _t838 = (r == 1); + return _t838; } bool Ecdsa_VerifyP256Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t849; - void* _t850; + int _t840; + void* _t841; int outlen; outlen = 0; const char* sig; - unsigned int _t848; - _t848 = String_Len(signatureB64); - _t849 = (int)_t848; - _t850 = &outlen; - const char* _t851; - _t851 = bux_base64_decode(signatureB64, _t849, _t850); - sig = _t851; - bool _t852; - _t852 = Ecdsa_VerifyP256(pemPublicKey, data, sig); - return _t852; + unsigned int _t839; + _t839 = String_Len(signatureB64); + _t840 = (int)_t839; + _t841 = &outlen; + const char* _t842; + _t842 = bux_base64_decode(signatureB64, _t840, _t841); + sig = _t842; + bool _t843; + _t843 = Ecdsa_VerifyP256(pemPublicKey, data, sig); + return _t843; } const char* Ecdsa_SignP384(const char* pemPrivateKey, const char* data) { - int _t854; - int _t856; - void* _t857; + int _t845; + int _t847; + void* _t848; int siglen; siglen = 0; - unsigned int _t853; - _t853 = String_Len(pemPrivateKey); - _t854 = (int)_t853; - unsigned int _t855; - _t855 = String_Len(data); - _t856 = (int)_t855; - _t857 = &siglen; - const char* _t858; - _t858 = bux_ecdsa_sign_p384(pemPrivateKey, _t854, data, _t856, _t857); - return _t858; + unsigned int _t844; + _t844 = String_Len(pemPrivateKey); + _t845 = (int)_t844; + unsigned int _t846; + _t846 = String_Len(data); + _t847 = (int)_t846; + _t848 = &siglen; + const char* _t849; + _t849 = bux_ecdsa_sign_p384(pemPrivateKey, _t845, data, _t847, _t848); + return _t849; } const char* Ecdsa_SignP384Base64(const char* pemPrivateKey, const char* data) { - int _t861; + int _t852; const char* raw; - const char* _t859; - _t859 = Ecdsa_SignP384(pemPrivateKey, data); - raw = _t859; - unsigned int _t860; - _t860 = String_Len(raw); - _t861 = (int)_t860; - const char* _t862; - _t862 = bux_base64_encode(raw, _t861); - return _t862; + const char* _t850; + _t850 = Ecdsa_SignP384(pemPrivateKey, data); + raw = _t850; + unsigned int _t851; + _t851 = String_Len(raw); + _t852 = (int)_t851; + const char* _t853; + _t853 = bux_base64_encode(raw, _t852); + return _t853; } bool Ecdsa_VerifyP384(const char* pemPublicKey, const char* data, const char* signature) { - int _t864; - int _t866; - int _t868; - int _t870; + int _t855; + int _t857; + int _t859; + int _t861; int r; - unsigned int _t863; - _t863 = String_Len(pemPublicKey); - _t864 = (int)_t863; - unsigned int _t865; - _t865 = String_Len(data); - _t866 = (int)_t865; - unsigned int _t867; - _t867 = String_Len(signature); - _t868 = (int)_t867; - int _t869; - _t869 = bux_ecdsa_verify_p384(pemPublicKey, _t864, data, _t866, signature, _t868); - r = _t869; - _t870 = (r == 1); - return _t870; + unsigned int _t854; + _t854 = String_Len(pemPublicKey); + _t855 = (int)_t854; + unsigned int _t856; + _t856 = String_Len(data); + _t857 = (int)_t856; + unsigned int _t858; + _t858 = String_Len(signature); + _t859 = (int)_t858; + int _t860; + _t860 = bux_ecdsa_verify_p384(pemPublicKey, _t855, data, _t857, signature, _t859); + r = _t860; + _t861 = (r == 1); + return _t861; } bool Ecdsa_VerifyP384Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t872; - void* _t873; + int _t863; + void* _t864; int outlen; outlen = 0; const char* sig; - unsigned int _t871; - _t871 = String_Len(signatureB64); - _t872 = (int)_t871; - _t873 = &outlen; - const char* _t874; - _t874 = bux_base64_decode(signatureB64, _t872, _t873); - sig = _t874; - bool _t875; - _t875 = Ecdsa_VerifyP384(pemPublicKey, data, sig); - return _t875; + unsigned int _t862; + _t862 = String_Len(signatureB64); + _t863 = (int)_t862; + _t864 = &outlen; + const char* _t865; + _t865 = bux_base64_decode(signatureB64, _t863, _t864); + sig = _t865; + bool _t866; + _t866 = Ecdsa_VerifyP384(pemPublicKey, data, sig); + return _t866; } bool Ed25519_Keypair(void* pubKey, void* privKey) { - int _t877; + int _t868; int r; - int _t876; - _t876 = bux_ed25519_keypair(pubKey, privKey); - r = _t876; - _t877 = (r == 1); - return _t877; + int _t867; + _t867 = bux_ed25519_keypair(pubKey, privKey); + r = _t867; + _t868 = (r == 1); + return _t868; } const char* Ed25519_KeypairBase64(void) { - unsigned int _t878; - unsigned int _t880; - int _t883; - const char* _t884; - const char* _t886; + unsigned int _t869; + unsigned int _t871; + int _t874; + const char* _t875; + const char* _t877; void* pubBuf; - _t878 = (unsigned int)ED25519_PUBKEY_SIZE; - void* _t879; - _t879 = Alloc(_t878); - pubBuf = _t879; + _t869 = (unsigned int)ED25519_PUBKEY_SIZE; + void* _t870; + _t870 = Alloc(_t869); + pubBuf = _t870; void* priv; - _t880 = (unsigned int)ED25519_PRIVKEY_SIZE; - void* _t881; - _t881 = Alloc(_t880); - priv = _t881; - int _t882; - _t882 = bux_ed25519_keypair(pubBuf, priv); - _t883 = (_t882 != 1); - if (!_t883) goto endif313; + _t871 = (unsigned int)ED25519_PRIVKEY_SIZE; + void* _t872; + _t872 = Alloc(_t871); + priv = _t872; + int _t873; + _t873 = bux_ed25519_keypair(pubBuf, priv); + _t874 = (_t873 != 1); + if (!_t874) goto endif300; { Free(pubBuf); Free(priv); return ""; } - endif313:; + endif300:; const char* pubB64; - _t884 = (const char*)pubBuf; - const char* _t885; - _t885 = bux_base64_encode(_t884, ED25519_PUBKEY_SIZE); - pubB64 = _t885; + _t875 = (const char*)pubBuf; + const char* _t876; + _t876 = bux_base64_encode(_t875, ED25519_PUBKEY_SIZE); + pubB64 = _t876; const char* privB64; - _t886 = (const char*)priv; - const char* _t887; - _t887 = bux_base64_encode(_t886, ED25519_PRIVKEY_SIZE); - privB64 = _t887; + _t877 = (const char*)priv; + const char* _t878; + _t878 = bux_base64_encode(_t877, ED25519_PRIVKEY_SIZE); + privB64 = _t878; Free(pubBuf); Free(priv); const char* pair; - const char* _t888; - _t888 = String_Concat(pubB64, ":"); - pair = _t888; - const char* _t889; - _t889 = String_Concat(pair, privB64); - return _t889; + const char* _t879; + _t879 = String_Concat(pubB64, ":"); + pair = _t879; + const char* _t880; + _t880 = String_Concat(pair, privB64); + return _t880; } const char* Ed25519_Sign(const char* privKey, const char* data) { - unsigned int _t890; - int _t893; - int _t895; - const char* _t896; + unsigned int _t881; + int _t884; + int _t886; + const char* _t887; void* sig; - _t890 = (unsigned int)ED25519_SIG_SIZE; - void* _t891; - _t891 = Alloc(_t890); - sig = _t891; - unsigned int _t892; - _t892 = String_Len(data); - _t893 = (int)_t892; - int _t894; - _t894 = bux_ed25519_sign(privKey, data, _t893, sig); - _t895 = (_t894 != 1); - if (!_t895) goto endif315; + _t881 = (unsigned int)ED25519_SIG_SIZE; + void* _t882; + _t882 = Alloc(_t881); + sig = _t882; + unsigned int _t883; + _t883 = String_Len(data); + _t884 = (int)_t883; + int _t885; + _t885 = bux_ed25519_sign(privKey, data, _t884, sig); + _t886 = (_t885 != 1); + if (!_t886) goto endif302; { Free(sig); return ""; } - endif315:; - _t896 = (const char*)sig; - return _t896; + endif302:; + _t887 = (const char*)sig; + return _t887; } const char* Ed25519_SignBase64(const char* privKey, const char* data) { - int _t899; + int _t890; const char* sig; - const char* _t897; - _t897 = Ed25519_Sign(privKey, data); - sig = _t897; - unsigned int _t898; - _t898 = String_Len(sig); - _t899 = (_t898 == 0); - if (!_t899) goto endif317; + const char* _t888; + _t888 = Ed25519_Sign(privKey, data); + sig = _t888; + unsigned int _t889; + _t889 = String_Len(sig); + _t890 = (_t889 == 0); + if (!_t890) goto endif304; { return ""; } - endif317:; - const char* _t900; - _t900 = bux_base64_encode(sig, ED25519_SIG_SIZE); - return _t900; + endif304:; + const char* _t891; + _t891 = bux_base64_encode(sig, ED25519_SIG_SIZE); + return _t891; } bool Ed25519_Verify(const char* pubKey, const char* signature, const char* data) { - int _t902; - int _t904; + int _t893; + int _t895; int r; - unsigned int _t901; - _t901 = String_Len(data); - _t902 = (int)_t901; - int _t903; - _t903 = bux_ed25519_verify(pubKey, signature, data, _t902); - r = _t903; - _t904 = (r == 1); - return _t904; + unsigned int _t892; + _t892 = String_Len(data); + _t893 = (int)_t892; + int _t894; + _t894 = bux_ed25519_verify(pubKey, signature, data, _t893); + r = _t894; + _t895 = (r == 1); + return _t895; } bool Ed25519_VerifyBase64(const char* pubKey, const char* signatureB64, const char* data) { - int _t906; - void* _t907; - int _t909; + int _t897; + void* _t898; + int _t900; int outlen; outlen = 0; const char* sig; - unsigned int _t905; - _t905 = String_Len(signatureB64); - _t906 = (int)_t905; - _t907 = &outlen; - const char* _t908; - _t908 = bux_base64_decode(signatureB64, _t906, _t907); - sig = _t908; - _t909 = (outlen != ED25519_SIG_SIZE); - if (!_t909) goto endif319; + unsigned int _t896; + _t896 = String_Len(signatureB64); + _t897 = (int)_t896; + _t898 = &outlen; + const char* _t899; + _t899 = bux_base64_decode(signatureB64, _t897, _t898); + sig = _t899; + _t900 = (outlen != ED25519_SIG_SIZE); + if (!_t900) goto endif306; { return 0; } - endif319:; - bool _t910; - _t910 = Ed25519_Verify(pubKey, sig, data); - return _t910; + endif306:; + bool _t901; + _t901 = Ed25519_Verify(pubKey, sig, data); + return _t901; } const char* Rsa_SignSha256(const char* pemPrivateKey, const char* data) { - int _t912; - int _t914; - void* _t915; + int _t903; + int _t905; + void* _t906; int siglen; siglen = 0; - unsigned int _t911; - _t911 = String_Len(pemPrivateKey); - _t912 = (int)_t911; - unsigned int _t913; - _t913 = String_Len(data); - _t914 = (int)_t913; - _t915 = &siglen; - const char* _t916; - _t916 = bux_rsa_sign_sha256(pemPrivateKey, _t912, data, _t914, _t915); - return _t916; + unsigned int _t902; + _t902 = String_Len(pemPrivateKey); + _t903 = (int)_t902; + unsigned int _t904; + _t904 = String_Len(data); + _t905 = (int)_t904; + _t906 = &siglen; + const char* _t907; + _t907 = bux_rsa_sign_sha256(pemPrivateKey, _t903, data, _t905, _t906); + return _t907; } const char* Rsa_SignSha384(const char* pemPrivateKey, const char* data) { - int _t918; - int _t920; - void* _t921; + int _t909; + int _t911; + void* _t912; int siglen; siglen = 0; - unsigned int _t917; - _t917 = String_Len(pemPrivateKey); - _t918 = (int)_t917; - unsigned int _t919; - _t919 = String_Len(data); - _t920 = (int)_t919; - _t921 = &siglen; - const char* _t922; - _t922 = bux_rsa_sign_sha384(pemPrivateKey, _t918, data, _t920, _t921); - return _t922; + unsigned int _t908; + _t908 = String_Len(pemPrivateKey); + _t909 = (int)_t908; + unsigned int _t910; + _t910 = String_Len(data); + _t911 = (int)_t910; + _t912 = &siglen; + const char* _t913; + _t913 = bux_rsa_sign_sha384(pemPrivateKey, _t909, data, _t911, _t912); + return _t913; } const char* Rsa_SignSha512(const char* pemPrivateKey, const char* data) { - int _t924; - int _t926; - void* _t927; + int _t915; + int _t917; + void* _t918; int siglen; siglen = 0; - unsigned int _t923; - _t923 = String_Len(pemPrivateKey); - _t924 = (int)_t923; - unsigned int _t925; - _t925 = String_Len(data); - _t926 = (int)_t925; - _t927 = &siglen; - const char* _t928; - _t928 = bux_rsa_sign_sha512(pemPrivateKey, _t924, data, _t926, _t927); - return _t928; + unsigned int _t914; + _t914 = String_Len(pemPrivateKey); + _t915 = (int)_t914; + unsigned int _t916; + _t916 = String_Len(data); + _t917 = (int)_t916; + _t918 = &siglen; + const char* _t919; + _t919 = bux_rsa_sign_sha512(pemPrivateKey, _t915, data, _t917, _t918); + return _t919; } const char* Rsa_SignSha256Base64(const char* pemPrivateKey, const char* data) { - int _t931; + int _t922; const char* raw; - const char* _t929; - _t929 = Rsa_SignSha256(pemPrivateKey, data); - raw = _t929; - unsigned int _t930; - _t930 = String_Len(raw); - _t931 = (int)_t930; - const char* _t932; - _t932 = bux_base64_encode(raw, _t931); - return _t932; + const char* _t920; + _t920 = Rsa_SignSha256(pemPrivateKey, data); + raw = _t920; + unsigned int _t921; + _t921 = String_Len(raw); + _t922 = (int)_t921; + const char* _t923; + _t923 = bux_base64_encode(raw, _t922); + return _t923; } const char* Rsa_SignSha384Base64(const char* pemPrivateKey, const char* data) { - int _t935; + int _t926; const char* raw; - const char* _t933; - _t933 = Rsa_SignSha384(pemPrivateKey, data); - raw = _t933; - unsigned int _t934; - _t934 = String_Len(raw); - _t935 = (int)_t934; - const char* _t936; - _t936 = bux_base64_encode(raw, _t935); - return _t936; + const char* _t924; + _t924 = Rsa_SignSha384(pemPrivateKey, data); + raw = _t924; + unsigned int _t925; + _t925 = String_Len(raw); + _t926 = (int)_t925; + const char* _t927; + _t927 = bux_base64_encode(raw, _t926); + return _t927; } const char* Rsa_SignSha512Base64(const char* pemPrivateKey, const char* data) { - int _t939; + int _t930; const char* raw; - const char* _t937; - _t937 = Rsa_SignSha512(pemPrivateKey, data); - raw = _t937; - unsigned int _t938; - _t938 = String_Len(raw); - _t939 = (int)_t938; - const char* _t940; - _t940 = bux_base64_encode(raw, _t939); - return _t940; + const char* _t928; + _t928 = Rsa_SignSha512(pemPrivateKey, data); + raw = _t928; + unsigned int _t929; + _t929 = String_Len(raw); + _t930 = (int)_t929; + const char* _t931; + _t931 = bux_base64_encode(raw, _t930); + return _t931; } bool Rsa_VerifySha256(const char* pemPublicKey, const char* data, const char* signature) { - int _t942; - int _t944; - int _t946; - int _t948; + int _t933; + int _t935; + int _t937; + int _t939; int r; - unsigned int _t941; - _t941 = String_Len(pemPublicKey); - _t942 = (int)_t941; - unsigned int _t943; - _t943 = String_Len(data); - _t944 = (int)_t943; - unsigned int _t945; - _t945 = String_Len(signature); - _t946 = (int)_t945; - int _t947; - _t947 = bux_rsa_verify_sha256(pemPublicKey, _t942, data, _t944, signature, _t946); - r = _t947; - _t948 = (r == 1); - return _t948; + unsigned int _t932; + _t932 = String_Len(pemPublicKey); + _t933 = (int)_t932; + unsigned int _t934; + _t934 = String_Len(data); + _t935 = (int)_t934; + unsigned int _t936; + _t936 = String_Len(signature); + _t937 = (int)_t936; + int _t938; + _t938 = bux_rsa_verify_sha256(pemPublicKey, _t933, data, _t935, signature, _t937); + r = _t938; + _t939 = (r == 1); + return _t939; } bool Rsa_VerifySha384(const char* pemPublicKey, const char* data, const char* signature) { - int _t950; - int _t952; - int _t954; - int _t956; + int _t941; + int _t943; + int _t945; + int _t947; int r; - unsigned int _t949; - _t949 = String_Len(pemPublicKey); - _t950 = (int)_t949; - unsigned int _t951; - _t951 = String_Len(data); - _t952 = (int)_t951; - unsigned int _t953; - _t953 = String_Len(signature); - _t954 = (int)_t953; - int _t955; - _t955 = bux_rsa_verify_sha384(pemPublicKey, _t950, data, _t952, signature, _t954); - r = _t955; - _t956 = (r == 1); - return _t956; + unsigned int _t940; + _t940 = String_Len(pemPublicKey); + _t941 = (int)_t940; + unsigned int _t942; + _t942 = String_Len(data); + _t943 = (int)_t942; + unsigned int _t944; + _t944 = String_Len(signature); + _t945 = (int)_t944; + int _t946; + _t946 = bux_rsa_verify_sha384(pemPublicKey, _t941, data, _t943, signature, _t945); + r = _t946; + _t947 = (r == 1); + return _t947; } bool Rsa_VerifySha512(const char* pemPublicKey, const char* data, const char* signature) { - int _t958; - int _t960; - int _t962; - int _t964; + int _t949; + int _t951; + int _t953; + int _t955; int r; - unsigned int _t957; - _t957 = String_Len(pemPublicKey); - _t958 = (int)_t957; - unsigned int _t959; - _t959 = String_Len(data); - _t960 = (int)_t959; - unsigned int _t961; - _t961 = String_Len(signature); - _t962 = (int)_t961; - int _t963; - _t963 = bux_rsa_verify_sha512(pemPublicKey, _t958, data, _t960, signature, _t962); - r = _t963; - _t964 = (r == 1); - return _t964; + unsigned int _t948; + _t948 = String_Len(pemPublicKey); + _t949 = (int)_t948; + unsigned int _t950; + _t950 = String_Len(data); + _t951 = (int)_t950; + unsigned int _t952; + _t952 = String_Len(signature); + _t953 = (int)_t952; + int _t954; + _t954 = bux_rsa_verify_sha512(pemPublicKey, _t949, data, _t951, signature, _t953); + r = _t954; + _t955 = (r == 1); + return _t955; } bool Rsa_VerifySha256Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t966; - void* _t967; + int _t957; + void* _t958; int outlen; outlen = 0; const char* sig; - unsigned int _t965; - _t965 = String_Len(signatureB64); - _t966 = (int)_t965; - _t967 = &outlen; - const char* _t968; - _t968 = bux_base64_decode(signatureB64, _t966, _t967); - sig = _t968; - bool _t969; - _t969 = Rsa_VerifySha256(pemPublicKey, data, sig); - return _t969; + unsigned int _t956; + _t956 = String_Len(signatureB64); + _t957 = (int)_t956; + _t958 = &outlen; + const char* _t959; + _t959 = bux_base64_decode(signatureB64, _t957, _t958); + sig = _t959; + bool _t960; + _t960 = Rsa_VerifySha256(pemPublicKey, data, sig); + return _t960; } bool Rsa_VerifySha384Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t971; - void* _t972; + int _t962; + void* _t963; int outlen; outlen = 0; const char* sig; - unsigned int _t970; - _t970 = String_Len(signatureB64); - _t971 = (int)_t970; - _t972 = &outlen; - const char* _t973; - _t973 = bux_base64_decode(signatureB64, _t971, _t972); - sig = _t973; - bool _t974; - _t974 = Rsa_VerifySha384(pemPublicKey, data, sig); - return _t974; + unsigned int _t961; + _t961 = String_Len(signatureB64); + _t962 = (int)_t961; + _t963 = &outlen; + const char* _t964; + _t964 = bux_base64_decode(signatureB64, _t962, _t963); + sig = _t964; + bool _t965; + _t965 = Rsa_VerifySha384(pemPublicKey, data, sig); + return _t965; } bool Rsa_VerifySha512Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t976; - void* _t977; + int _t967; + void* _t968; int outlen; outlen = 0; const char* sig; - unsigned int _t975; - _t975 = String_Len(signatureB64); - _t976 = (int)_t975; - _t977 = &outlen; - const char* _t978; - _t978 = bux_base64_decode(signatureB64, _t976, _t977); - sig = _t978; - bool _t979; - _t979 = Rsa_VerifySha512(pemPublicKey, data, sig); - return _t979; + unsigned int _t966; + _t966 = String_Len(signatureB64); + _t967 = (int)_t966; + _t968 = &outlen; + const char* _t969; + _t969 = bux_base64_decode(signatureB64, _t967, _t968); + sig = _t969; + bool _t970; + _t970 = Rsa_VerifySha512(pemPublicKey, data, sig); + return _t970; } int Fibonacci(int n) { - int _t980; - int _t981; - int _t983; - int _t985; - _t980 = (n <= 1); - if (!_t980) goto endif321; + int _t971; + int _t972; + int _t974; + int _t976; + _t971 = (n <= 1); + if (!_t971) goto endif308; { return n; } - endif321:; - _t981 = n - 1; - int _t982; - _t982 = Fibonacci(_t981); - _t983 = n - 2; - int _t984; - _t984 = Fibonacci(_t983); - _t985 = _t982 + _t984; - return _t985; + endif308:; + _t972 = n - 1; + int _t973; + _t973 = Fibonacci(_t972); + _t974 = n - 2; + int _t975; + _t975 = Fibonacci(_t974); + _t976 = _t973 + _t975; + return _t976; } int Main(void) { - int _t986; - int _t990; + int _t977; + int _t981; PrintLine("Fibonacci sequence:"); int i; i = 0; - while322:; - _t986 = (i < 10); - if (!_t986) goto wend324; + while309:; + _t977 = (i < 10); + if (!_t977) goto wend310; { int fib; - int _t987; - _t987 = Fibonacci(i); - fib = _t987; - const char* _t988; - _t988 = String_FromInt(fib); - const char* _t989; - _t989 = Fmt_Fmt1("{0}", _t988); - PrintLine(_t989); - _t990 = i + 1; - i = _t990; + int _t978; + _t978 = Fibonacci(i); + fib = _t978; + const char* _t979; + _t979 = String_FromInt(fib); + const char* _t980; + _t980 = Fmt_Fmt1("{0}", _t979); + PrintLine(_t980); + _t981 = i + 1; + i = _t981; } - goto while322; - wend324:; + goto while309; + wend310:; return 0; } diff --git a/tests/golden/generics/expected.c b/tests/golden/generics/expected.c index 042d303..e6a7146 100644 --- a/tests/golden/generics/expected.c +++ b/tests/golden/generics/expected.c @@ -198,6 +198,34 @@ extern const char* bux_base64_decode(const char* data, int len, int* outlen); #define ED25519_PRIVKEY_SIZE 32 #define ED25519_SIG_SIZE 64 +typedef struct Channel_float64 { + void* handle; +} Channel_float64; + +typedef struct TaskHandle { + void* handle; +} TaskHandle; + +typedef struct RwLock { + void* handle; +} RwLock; + +typedef struct Channel_int { + void* handle; +} Channel_int; + +typedef enum { + JwtAlg_HS256, + JwtAlg_HS384, + JwtAlg_HS512, + JwtAlg_RS256, + JwtAlg_RS384, + JwtAlg_RS512, + JwtAlg_ES256, + JwtAlg_ES384, + JwtAlg_EdDSA +} JwtAlg; + typedef enum { Result_Ok, Result_Err @@ -227,31 +255,6 @@ typedef struct { Option_Data data; } Option; -typedef enum { - JwtAlg_HS256, - JwtAlg_HS384, - JwtAlg_HS512, - JwtAlg_RS256, - JwtAlg_RS384, - JwtAlg_RS512, - JwtAlg_ES256, - JwtAlg_ES384, - JwtAlg_EdDSA -} JwtAlg; - - -typedef struct TaskHandle { - void* handle; -} TaskHandle; - -typedef struct Mutex { - void* handle; -} Mutex; - -typedef struct RwLock { - void* handle; -} RwLock; - typedef struct JsonValue { int tag; bool boolVal; @@ -266,6 +269,14 @@ typedef struct JsonValue { unsigned int objCap; } JsonValue; +typedef struct Mutex { + void* handle; +} Mutex; + +typedef struct StringBuilder { + void* handle; +} StringBuilder; + typedef struct JsonParser { const char* src; unsigned int pos; @@ -273,18 +284,6 @@ typedef struct JsonParser { const char* error; } JsonParser; -typedef struct StringBuilder { - void* handle; -} StringBuilder; - -typedef struct Channel_int { - void* handle; -} Channel_int; - -typedef struct Channel_float64 { - void* handle; -} Channel_float64; - bool DirExists(const char* path); bool Mkdir(const char* path); const char** ListDir(const char* dir, const char* ext, int* count); @@ -860,7 +859,7 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { tmplLen = _t59; while1:; _t60 = (i < tmplLen); - if (!_t60) goto wend3; + if (!_t60) goto wend2; { const char* ch; const char* _t61; @@ -868,13 +867,13 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { ch = _t61; bool _t62; _t62 = String_Eq(ch, "{"); - if (!_t62) goto endif5; + if (!_t62) goto endif4; { unsigned int digitIdx; _t63 = i + 1; digitIdx = _t63; _t64 = (digitIdx < tmplLen); - if (!_t64) goto endif7; + if (!_t64) goto endif6; { const char* digitCh; const char* _t65; @@ -886,22 +885,22 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { d = _t66; bool __and_tmp_0; _t67 = (d >= 0); - if (!_t67) goto else8; + if (!_t67) goto else7; _t68 = (int64_t)argCount; _t69 = (d < _t68); *(bool*)&__and_tmp_0 = _t69; - goto endif9; - else8:; + goto endif8; + else7:; *(bool*)&__and_tmp_0 = 0; - endif9:; + endif8:; bool _t70; _t70 = *(bool*)&__and_tmp_0; - if (!_t70) goto endif11; + if (!_t70) goto endif10; { _t71 = i + 2; i = _t71; _t72 = (i < tmplLen); - if (!_t72) goto endif13; + if (!_t72) goto endif12; { const char* closeCh; const char* _t73; @@ -909,7 +908,7 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { closeCh = _t73; bool _t74; _t74 = String_Eq(closeCh, "}"); - if (!_t74) goto endif15; + if (!_t74) goto endif14; { _t75 = i + 1; i = _t75; @@ -922,22 +921,22 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { StringBuilder_Append(_t78, argStr); goto while1; } - endif15:; + endif14:; } - endif13:; + endif12:; } - endif11:; + endif10:; } - endif7:; + endif6:; } - endif5:; + endif4:; _t79 = &sb; StringBuilder_Append(_t79, ch); _t80 = i + 1; i = _t80; } goto while1; - wend3:; + wend2:; _t81 = &sb; const char* _t82; _t82 = StringBuilder_Build(_t81); @@ -945,276 +944,276 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { } const char* Fmt_Fmt1(const char* tmpl, const char* a1) { - const char** _t85; + const char** _t84; const char** args; /* sizeof(const char*) */ - void* _t84; - _t84 = bux_alloc(sizeof(const char*)); - _t85 = (const char**)_t84; - args = _t85; + void* _t83; + _t83 = bux_alloc(sizeof(const char*)); + _t84 = (const char**)_t83; + args = _t84; args[0] = a1; - const char* _t86; - _t86 = Fmt_Format(tmpl, args, 1); - return _t86; + const char* _t85; + _t85 = Fmt_Format(tmpl, args, 1); + return _t85; } const char* Fmt_FmtInt(const char* tmpl, int64_t val) { const char* s; + const char* _t86; + _t86 = String_FromInt(val); + s = _t86; const char* _t87; - _t87 = String_FromInt(val); - s = _t87; - const char* _t88; - _t88 = Fmt_Fmt1(tmpl, s); - return _t88; + _t87 = Fmt_Fmt1(tmpl, s); + return _t87; } const char* Fmt_FmtBool(const char* tmpl, bool val) { const char* s; + const char* _t88; + _t88 = String_FromBool(val); + s = _t88; const char* _t89; - _t89 = String_FromBool(val); - s = _t89; - const char* _t90; - _t90 = Fmt_Fmt1(tmpl, s); - return _t90; + _t89 = Fmt_Fmt1(tmpl, s); + return _t89; } const char* Fmt_FmtFloat(const char* tmpl, double val) { const char* s; + const char* _t90; + _t90 = String_FromFloat(val); + s = _t90; const char* _t91; - _t91 = String_FromFloat(val); - s = _t91; - const char* _t92; - _t92 = Fmt_Fmt1(tmpl, s); - return _t92; + _t91 = Fmt_Fmt1(tmpl, s); + return _t91; } const char* Fmt_Fmt2(const char* tmpl, const char* a1, const char* a2) { - int _t94; - const char** _t96; + int _t92; + const char** _t94; const char** args; /* sizeof(const char*) */ - _t94 = 2 * sizeof(const char*); - void* _t95; - _t95 = bux_alloc(_t94); - _t96 = (const char**)_t95; - args = _t96; + _t92 = 2 * sizeof(const char*); + void* _t93; + _t93 = bux_alloc(_t92); + _t94 = (const char**)_t93; + args = _t94; args[0] = a1; args[1] = a2; - const char* _t97; - _t97 = Fmt_Format(tmpl, args, 2); - return _t97; + const char* _t95; + _t95 = Fmt_Format(tmpl, args, 2); + return _t95; } const char* Fmt_Fmt3(const char* tmpl, const char* a1, const char* a2, const char* a3) { - int _t99; - const char** _t101; + int _t96; + const char** _t98; const char** args; /* sizeof(const char*) */ - _t99 = 3 * sizeof(const char*); - void* _t100; - _t100 = bux_alloc(_t99); - _t101 = (const char**)_t100; - args = _t101; + _t96 = 3 * sizeof(const char*); + void* _t97; + _t97 = bux_alloc(_t96); + _t98 = (const char**)_t97; + args = _t98; args[0] = a1; args[1] = a2; args[2] = a3; - const char* _t102; - _t102 = Fmt_Format(tmpl, args, 3); - return _t102; + const char* _t99; + _t99 = Fmt_Format(tmpl, args, 3); + return _t99; } const char* Crypto_Sha256(const char* data) { - int _t104; - void* _t106; + int _t101; + void* _t103; int len; - unsigned int _t103; - _t103 = String_Len(data); - _t104 = (int)_t103; - len = _t104; + unsigned int _t100; + _t100 = String_Len(data); + _t101 = (int)_t100; + len = _t101; void* hashBuf; - void* _t105; - _t105 = Alloc(32); - hashBuf = _t105; + void* _t102; + _t102 = Alloc(32); + hashBuf = _t102; bux_sha256(data, len, hashBuf); const char* result; - _t106 = (void*)hashBuf; - const char* _t107; - _t107 = bux_bytes_to_hex(_t106, 32); - result = _t107; + _t103 = (void*)hashBuf; + const char* _t104; + _t104 = bux_bytes_to_hex(_t103, 32); + result = _t104; Free(hashBuf); return result; } const char* Crypto_HmacSha256(const char* key, const char* message) { - int _t109; - int _t111; - void* _t113; + int _t106; + int _t108; + void* _t110; int keylen; - unsigned int _t108; - _t108 = String_Len(key); - _t109 = (int)_t108; - keylen = _t109; + unsigned int _t105; + _t105 = String_Len(key); + _t106 = (int)_t105; + keylen = _t106; int msglen; - unsigned int _t110; - _t110 = String_Len(message); - _t111 = (int)_t110; - msglen = _t111; + unsigned int _t107; + _t107 = String_Len(message); + _t108 = (int)_t107; + msglen = _t108; void* hmacBuf; - void* _t112; - _t112 = Alloc(32); - hmacBuf = _t112; + void* _t109; + _t109 = Alloc(32); + hmacBuf = _t109; bux_hmac_sha256(key, keylen, message, msglen, hmacBuf); const char* result; - _t113 = (void*)hmacBuf; - const char* _t114; - _t114 = bux_bytes_to_hex(_t113, 32); - result = _t114; + _t110 = (void*)hmacBuf; + const char* _t111; + _t111 = bux_bytes_to_hex(_t110, 32); + result = _t111; Free(hmacBuf); return result; } const char* Crypto_RandomBytes(int n) { - int _t115; - unsigned int _t116; - int _t119; - const char* _t120; - _t115 = (n <= 0); - if (!_t115) goto endif17; + int _t112; + unsigned int _t113; + int _t116; + const char* _t117; + _t112 = (n <= 0); + if (!_t112) goto endif16; { return ""; } - endif17:; + endif16:; void* buf; - _t116 = (unsigned int)n; - void* _t117; - _t117 = Alloc(_t116); - buf = _t117; - int _t118; - _t118 = bux_random_bytes(buf, n); - _t119 = (_t118 != 1); - if (!_t119) goto endif19; + _t113 = (unsigned int)n; + void* _t114; + _t114 = Alloc(_t113); + buf = _t114; + int _t115; + _t115 = bux_random_bytes(buf, n); + _t116 = (_t115 != 1); + if (!_t116) goto endif18; { Free(buf); return ""; } - endif19:; + endif18:; const char* result; - _t120 = (const char*)buf; - const char* _t121; - _t121 = bux_base64_encode(_t120, n); - result = _t121; + _t117 = (const char*)buf; + const char* _t118; + _t118 = bux_base64_encode(_t117, n); + result = _t118; Free(buf); return result; } const char* Crypto_Base64Encode(const char* s) { - int _t123; - unsigned int _t122; - _t122 = String_Len(s); - _t123 = (int)_t122; - const char* _t124; - _t124 = bux_base64_encode(s, _t123); - return _t124; + int _t120; + unsigned int _t119; + _t119 = String_Len(s); + _t120 = (int)_t119; + const char* _t121; + _t121 = bux_base64_encode(s, _t120); + return _t121; } const char* Crypto_HmacSha256Raw(const char* key, const char* message) { - int _t126; - int _t128; - const char* _t130; + int _t123; + int _t125; + const char* _t127; int keylen; - unsigned int _t125; - _t125 = String_Len(key); - _t126 = (int)_t125; - keylen = _t126; + unsigned int _t122; + _t122 = String_Len(key); + _t123 = (int)_t122; + keylen = _t123; int msglen; - unsigned int _t127; - _t127 = String_Len(message); - _t128 = (int)_t127; - msglen = _t128; + unsigned int _t124; + _t124 = String_Len(message); + _t125 = (int)_t124; + msglen = _t125; void* hmacBuf; - void* _t129; - _t129 = Alloc(32); - hmacBuf = _t129; + void* _t126; + _t126 = Alloc(32); + hmacBuf = _t126; bux_hmac_sha256(key, keylen, message, msglen, hmacBuf); const char* result; - _t130 = (const char*)hmacBuf; - const char* _t131; - _t131 = bux_base64_encode(_t130, 32); - result = _t131; + _t127 = (const char*)hmacBuf; + const char* _t128; + _t128 = bux_base64_encode(_t127, 32); + result = _t128; Free(hmacBuf); return result; } const char* Crypto_Base64Decode(const char* s) { - int _t133; - void* _t134; + int _t130; + void* _t131; int outlen; outlen = 0; - unsigned int _t132; - _t132 = String_Len(s); - _t133 = (int)_t132; - _t134 = &outlen; - const char* _t135; - _t135 = bux_base64_decode(s, _t133, _t134); - return _t135; + unsigned int _t129; + _t129 = String_Len(s); + _t130 = (int)_t129; + _t131 = &outlen; + const char* _t132; + _t132 = bux_base64_decode(s, _t130, _t131); + return _t132; } Mutex Mutex_New(void) { - Mutex _t137; - void* _t136; - _t136 = bux_mutex_new(); - _t137 = (Mutex){.handle = _t136}; - return _t137; + Mutex _t134; + void* _t133; + _t133 = bux_mutex_new(); + _t134 = (Mutex){.handle = _t133}; + return _t134; } void Mutex_Lock(Mutex* m) { - void* _t138; - _t138 = m->handle; - bux_mutex_lock(_t138); + void* _t135; + _t135 = m->handle; + bux_mutex_lock(_t135); } void Mutex_Unlock(Mutex* m) { - void* _t139; - _t139 = m->handle; - bux_mutex_unlock(_t139); + void* _t136; + _t136 = m->handle; + bux_mutex_unlock(_t136); } void Mutex_Free(Mutex* m) { - void* _t140; - _t140 = m->handle; - bux_mutex_free(_t140); + void* _t137; + _t137 = m->handle; + bux_mutex_free(_t137); } RwLock RwLock_New(void) { - RwLock _t142; - void* _t141; - _t141 = bux_rwlock_new(); - _t142 = (RwLock){.handle = _t141}; - return _t142; + RwLock _t139; + void* _t138; + _t138 = bux_rwlock_new(); + _t139 = (RwLock){.handle = _t138}; + return _t139; } void RwLock_ReadLock(RwLock* rw) { - void* _t143; - _t143 = rw->handle; - bux_rwlock_rdlock(_t143); + void* _t140; + _t140 = rw->handle; + bux_rwlock_rdlock(_t140); } void RwLock_WriteLock(RwLock* rw) { - void* _t144; - _t144 = rw->handle; - bux_rwlock_wrlock(_t144); + void* _t141; + _t141 = rw->handle; + bux_rwlock_wrlock(_t141); } void RwLock_Unlock(RwLock* rw) { - void* _t145; - _t145 = rw->handle; - bux_rwlock_unlock(_t145); + void* _t142; + _t142 = rw->handle; + bux_rwlock_unlock(_t142); } void RwLock_Free(RwLock* rw) { - void* _t146; - _t146 = rw->handle; - bux_rwlock_free(_t146); + void* _t143; + _t143 = rw->handle; + bux_rwlock_free(_t143); } void Test_Exit(int code) { @@ -1222,15 +1221,15 @@ void Test_Exit(int code) { } void Test_Assert(bool cond) { - int _t147; - _t147 = (int)cond; - bux_assert(_t147, "", 0, ""); + int _t144; + _t144 = (int)cond; + bux_assert(_t144, "", 0, ""); } void Test_AssertEqInt(int a, int b) { - int _t148; - _t148 = (a != b); - if (!_t148) goto endif21; + int _t145; + _t145 = (a != b); + if (!_t145) goto endif20; { PrintLine("ASSERT_EQ FAILED:"); PrintInt(a); @@ -1238,27 +1237,27 @@ void Test_AssertEqInt(int a, int b) { PrintInt(b); bux_exit(1); } - endif21:; + endif20:; } void Test_AssertTrue(bool cond) { - int _t149; - _t149 = !cond; - if (!_t149) goto endif23; + int _t146; + _t146 = !cond; + if (!_t146) goto endif22; { PrintLine("ASSERT_TRUE FAILED"); bux_exit(1); } - endif23:; + endif22:; } void Test_AssertFalse(bool cond) { - if (!cond) goto endif25; + if (!cond) goto endif24; { PrintLine("ASSERT_FALSE FAILED"); bux_exit(1); } - endif25:; + endif24:; } void Test_Fail(const char* msg) { @@ -1268,735 +1267,744 @@ void Test_Fail(const char* msg) { } Result Result_NewOk(int value) { - Result _t150; + Result _t147; Result r; - _t150 = (Result){.tag = Result_Ok}; - r = _t150; + _t147 = (Result){.tag = Result_Ok}; + r = _t147; r.data.Ok_0 = value; return r; } Result Result_NewErr(const char* msg) { - Result _t151; + Result _t148; Result r; - _t151 = (Result){.tag = Result_Err}; - r = _t151; + _t148 = (Result){.tag = Result_Err}; + r = _t148; r.data.Err_0 = msg; return r; } bool Result_IsOk(Result r) { - int _t153; - Result_Tag _t152; - _t152 = r.tag; - _t153 = (_t152 == Result_Ok); - return _t153; + int _t150; + Result_Tag _t149; + _t149 = r.tag; + _t150 = (_t149 == Result_Ok); + return _t150; } bool Result_IsErr(Result r) { - int _t155; - Result_Tag _t154; - _t154 = r.tag; - _t155 = (_t154 == Result_Err); - return _t155; + int _t152; + Result_Tag _t151; + _t151 = r.tag; + _t152 = (_t151 == Result_Err); + return _t152; } int Result_Unwrap(Result r) { - int _t157; - Result_Tag _t156; - _t156 = r.tag; - _t157 = (_t156 != Result_Ok); - if (!_t157) goto endif27; + int _t154; + Result_Tag _t153; + _t153 = r.tag; + _t154 = (_t153 != Result_Ok); + if (!_t154) goto endif26; { PrintLine("panic: unwrap on Err"); return 0; } - endif27:; - Result_Data _t158; - _t158 = r.data; - int _t159; - _t159 = _t158.Ok_0; - return _t159; + endif26:; + Result_Data _t155; + _t155 = r.data; + int _t156; + _t156 = _t155.Ok_0; + return _t156; } int Result_UnwrapOr(Result r, int fallback) { - int _t161; - Result_Tag _t160; - _t160 = r.tag; - _t161 = (_t160 == Result_Ok); - if (!_t161) goto endif29; + int _t158; + Result_Tag _t157; + _t157 = r.tag; + _t158 = (_t157 == Result_Ok); + if (!_t158) goto endif28; { - Result_Data _t162; - _t162 = r.data; - int _t163; - _t163 = _t162.Ok_0; - return _t163; + Result_Data _t159; + _t159 = r.data; + int _t160; + _t160 = _t159.Ok_0; + return _t160; } - endif29:; + endif28:; return fallback; } Option Option_NewSome(int value) { - Option _t164; + Option _t161; Option o; - _t164 = (Option){.tag = Option_Some}; - o = _t164; + _t161 = (Option){.tag = Option_Some}; + o = _t161; o.data.Some_0 = value; return o; } Option Option_NewNone(void) { - Option _t165; - _t165 = (Option){.tag = Option_None}; - return _t165; + Option _t162; + _t162 = (Option){.tag = Option_None}; + return _t162; } bool Option_IsSome(Option o) { - int _t167; - Option_Tag _t166; - _t166 = o.tag; - _t167 = (_t166 == Option_Some); - return _t167; + int _t164; + Option_Tag _t163; + _t163 = o.tag; + _t164 = (_t163 == Option_Some); + return _t164; } bool Option_IsNone(Option o) { - int _t169; - Option_Tag _t168; - _t168 = o.tag; - _t169 = (_t168 == Option_None); - return _t169; + int _t166; + Option_Tag _t165; + _t165 = o.tag; + _t166 = (_t165 == Option_None); + return _t166; } int Option_Unwrap(Option o) { - int _t171; - Option_Tag _t170; - _t170 = o.tag; - _t171 = (_t170 != Option_Some); - if (!_t171) goto endif31; + int _t168; + Option_Tag _t167; + _t167 = o.tag; + _t168 = (_t167 != Option_Some); + if (!_t168) goto endif30; { PrintLine("panic: unwrap on None"); return 0; } - endif31:; - Option_Data _t172; - _t172 = o.data; - int _t173; - _t173 = _t172.Some_0; - return _t173; + endif30:; + Option_Data _t169; + _t169 = o.data; + int _t170; + _t170 = _t169.Some_0; + return _t170; } int Option_UnwrapOr(Option o, int fallback) { - int _t175; - Option_Tag _t174; - _t174 = o.tag; - _t175 = (_t174 == Option_Some); - if (!_t175) goto endif33; + int _t172; + Option_Tag _t171; + _t171 = o.tag; + _t172 = (_t171 == Option_Some); + if (!_t172) goto endif32; { - Option_Data _t176; - _t176 = o.data; - int _t177; - _t177 = _t176.Some_0; - return _t177; + Option_Data _t173; + _t173 = o.data; + int _t174; + _t174 = _t173.Some_0; + return _t174; } - endif33:; + endif32:; return fallback; } JsonValue Json_Null(void) { - JsonValue _t178; - _t178 = (JsonValue){.tag = JsonTagNull, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t178; + JsonValue _t175; + _t175 = (JsonValue){.tag = JsonTagNull, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t175; } JsonValue Json_Bool(bool b) { - JsonValue _t179; - _t179 = (JsonValue){.tag = JsonTagBool, .boolVal = b, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t179; + JsonValue _t176; + _t176 = (JsonValue){.tag = JsonTagBool, .boolVal = b, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t176; } JsonValue Json_Number(double n) { - JsonValue _t180; - _t180 = (JsonValue){.tag = JsonTagNumber, .boolVal = 0, .numVal = n, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t180; + JsonValue _t177; + _t177 = (JsonValue){.tag = JsonTagNumber, .boolVal = 0, .numVal = n, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t177; } JsonValue Json_String(const char* s) { - JsonValue _t181; - _t181 = (JsonValue){.tag = JsonTagString, .boolVal = 0, .numVal = 0.0, .strVal = s, .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t181; + JsonValue _t178; + _t178 = (JsonValue){.tag = JsonTagString, .boolVal = 0, .numVal = 0.0, .strVal = s, .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t178; } JsonValue Json_Array(void) { - JsonValue _t182; - _t182 = (JsonValue){.tag = JsonTagArray, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t182; + JsonValue _t179; + _t179 = (JsonValue){.tag = JsonTagArray, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t179; } JsonValue Json_Object(void) { - JsonValue _t183; - _t183 = (JsonValue){.tag = JsonTagObject, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t183; + JsonValue _t180; + _t180 = (JsonValue){.tag = JsonTagObject, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t180; } unsigned int Json_ArrayLen(JsonValue v) { - int _t185; - int _t184; - _t184 = v.tag; - _t185 = (_t184 != JsonTagArray); - if (!_t185) goto endif35; + int _t182; + int _t181; + _t181 = v.tag; + _t182 = (_t181 != JsonTagArray); + if (!_t182) goto endif34; { return 0; } - endif35:; - unsigned int _t186; - _t186 = v.arrLen; - return _t186; + endif34:; + unsigned int _t183; + _t183 = v.arrLen; + return _t183; } JsonValue Json_ArrayGet(JsonValue v, unsigned int index) { + int _t185; int _t188; - int _t191; - int _t187; - _t187 = v.tag; - _t188 = (_t187 != JsonTagArray); - if (!_t188) goto endif37; + int _t184; + _t184 = v.tag; + _t185 = (_t184 != JsonTagArray); + if (!_t185) goto endif36; + { + JsonValue _t186; + _t186 = Json_Null(); + return _t186; + } + endif36:; + unsigned int _t187; + _t187 = v.arrLen; + _t188 = (index >= _t187); + if (!_t188) goto endif38; { JsonValue _t189; _t189 = Json_Null(); return _t189; } - endif37:; - unsigned int _t190; - _t190 = v.arrLen; - _t191 = (index >= _t190); - if (!_t191) goto endif39; - { - JsonValue _t192; - _t192 = Json_Null(); - return _t192; - } - endif39:; - JsonValue* _t193; - _t193 = v.arrData; - JsonValue _t194; - _t194 = _t193[index]; - return _t194; + endif38:; + JsonValue* _t190; + _t190 = v.arrData; + JsonValue _t191; + _t191 = _t190[index]; + return _t191; } void Json_ArrayPush(JsonValue* self, JsonValue val) { + int _t193; int _t196; + int _t198; int _t199; - int _t201; - int _t203; - JsonValue* _t205; - int _t206; - void* _t208; - int _t210; - JsonValue* _t212; - int _t216; - int _t195; - _t195 = self->tag; - _t196 = (_t195 != JsonTagArray); - if (!_t196) goto endif41; + JsonValue* _t201; + int _t202; + void* _t204; + int _t205; + JsonValue* _t207; + int _t211; + int _t192; + _t192 = self->tag; + _t193 = (_t192 != JsonTagArray); + if (!_t193) goto endif40; { return; } - endif41:; - unsigned int _t197; - _t197 = self->arrLen; - unsigned int _t198; - _t198 = self->arrCap; - _t199 = (_t197 >= _t198); - if (!_t199) goto endif43; + endif40:; + unsigned int _t194; + _t194 = self->arrLen; + unsigned int _t195; + _t195 = self->arrCap; + _t196 = (_t194 >= _t195); + if (!_t196) goto endif42; { unsigned int arrNewCap; - unsigned int _t200; - _t200 = self->arrCap; - arrNewCap = _t200; - _t201 = (arrNewCap == 0); - if (!_t201) goto else44; + unsigned int _t197; + _t197 = self->arrCap; + arrNewCap = _t197; + _t198 = (arrNewCap == 0); + if (!_t198) goto else43; { self->arrCap = 4; /* sizeof(JsonValue) */ - _t203 = 4 * sizeof(JsonValue); - void* _t204; - _t204 = Alloc(_t203); - _t205 = (JsonValue*)_t204; - self->arrData = _t205; + _t199 = 4 * sizeof(JsonValue); + void* _t200; + _t200 = Alloc(_t199); + _t201 = (JsonValue*)_t200; + self->arrData = _t201; } - goto endif45; - else44:; + goto endif44; + else43:; { unsigned int doubleCap; - _t206 = arrNewCap * 2; - doubleCap = _t206; + _t202 = arrNewCap * 2; + doubleCap = _t202; self->arrCap = doubleCap; - JsonValue* _t207; - _t207 = self->arrData; - _t208 = (void*)_t207; + JsonValue* _t203; + _t203 = self->arrData; + _t204 = (void*)_t203; /* sizeof(JsonValue) */ - _t210 = doubleCap * sizeof(JsonValue); - void* _t211; - _t211 = Realloc(_t208, _t210); - _t212 = (JsonValue*)_t211; - self->arrData = _t212; + _t205 = doubleCap * sizeof(JsonValue); + void* _t206; + _t206 = Realloc(_t204, _t205); + _t207 = (JsonValue*)_t206; + self->arrData = _t207; } - endif45:; + endif44:; } - endif43:; - JsonValue* _t213; - _t213 = self->arrData; - unsigned int _t214; - _t214 = self->arrLen; - _t213[_t214] = val; - unsigned int _t215; - _t215 = self->arrLen; - _t216 = _t215 + 1; - self->arrLen = _t216; + endif42:; + JsonValue* _t208; + _t208 = self->arrData; + unsigned int _t209; + _t209 = self->arrLen; + _t208[_t209] = val; + unsigned int _t210; + _t210 = self->arrLen; + _t211 = _t210 + 1; + self->arrLen = _t211; } unsigned int Json_ObjectLen(JsonValue v) { - int _t218; - int _t217; - _t217 = v.tag; - _t218 = (_t217 != JsonTagObject); - if (!_t218) goto endif47; + int _t213; + int _t212; + _t212 = v.tag; + _t213 = (_t212 != JsonTagObject); + if (!_t213) goto endif46; { return 0; } - endif47:; - unsigned int _t219; - _t219 = v.objLen; - return _t219; + endif46:; + unsigned int _t214; + _t214 = v.objLen; + return _t214; } JsonValue Json_ObjectGet(JsonValue v, const char* key) { - int _t221; - int _t224; - int _t230; - int _t220; - _t220 = v.tag; - _t221 = (_t220 != JsonTagObject); - if (!_t221) goto endif49; + int _t216; + int _t219; + int _t225; + int _t215; + _t215 = v.tag; + _t216 = (_t215 != JsonTagObject); + if (!_t216) goto endif48; { - JsonValue _t222; - _t222 = Json_Null(); - return _t222; + JsonValue _t217; + _t217 = Json_Null(); + return _t217; } - endif49:; + endif48:; unsigned int i; i = 0; - while50:; - unsigned int _t223; - _t223 = v.objLen; - _t224 = (i < _t223); - if (!_t224) goto wend52; + while49:; + unsigned int _t218; + _t218 = v.objLen; + _t219 = (i < _t218); + if (!_t219) goto wend50; { - const char** _t225; - _t225 = v.objKeys; - const char* _t226; - _t226 = _t225[i]; - bool _t227; - _t227 = String_Eq(_t226, key); - if (!_t227) goto endif54; + const char** _t220; + _t220 = v.objKeys; + const char* _t221; + _t221 = _t220[i]; + bool _t222; + _t222 = String_Eq(_t221, key); + if (!_t222) goto endif52; { - JsonValue* _t228; - _t228 = v.objValues; - JsonValue _t229; - _t229 = _t228[i]; - return _t229; + JsonValue* _t223; + _t223 = v.objValues; + JsonValue _t224; + _t224 = _t223[i]; + return _t224; } - endif54:; - _t230 = i + 1; - i = _t230; + endif52:; + _t225 = i + 1; + i = _t225; } - goto while50; - wend52:; - JsonValue _t231; - _t231 = Json_Null(); - return _t231; + goto while49; + wend50:; + JsonValue _t226; + _t226 = Json_Null(); + return _t226; } bool Json_ObjectHas(JsonValue v, const char* key) { - int _t233; - int _t235; - int _t239; - int _t232; - _t232 = v.tag; - _t233 = (_t232 != JsonTagObject); - if (!_t233) goto endif56; + int _t228; + int _t230; + int _t234; + int _t227; + _t227 = v.tag; + _t228 = (_t227 != JsonTagObject); + if (!_t228) goto endif54; { return 0; } - endif56:; + endif54:; unsigned int i; i = 0; - while57:; - unsigned int _t234; - _t234 = v.objLen; - _t235 = (i < _t234); - if (!_t235) goto wend59; + while55:; + unsigned int _t229; + _t229 = v.objLen; + _t230 = (i < _t229); + if (!_t230) goto wend56; { - const char** _t236; - _t236 = v.objKeys; - const char* _t237; - _t237 = _t236[i]; - bool _t238; - _t238 = String_Eq(_t237, key); - if (!_t238) goto endif61; + const char** _t231; + _t231 = v.objKeys; + const char* _t232; + _t232 = _t231[i]; + bool _t233; + _t233 = String_Eq(_t232, key); + if (!_t233) goto endif58; { return 1; } - endif61:; - _t239 = i + 1; - i = _t239; + endif58:; + _t234 = i + 1; + i = _t234; } - goto while57; - wend59:; + goto while55; + wend56:; return 0; } void Json_ObjectSet(JsonValue* self, const char* key, JsonValue val) { - int _t241; + int _t236; + int _t238; int _t243; + int _t246; int _t248; - int _t251; - int _t253; + int _t249; + const char** _t251; + int _t252; + JsonValue* _t254; int _t255; - const char** _t257; - int _t259; - JsonValue* _t261; - int _t262; - void* _t264; - int _t266; - const char** _t268; - void* _t270; - int _t272; - JsonValue* _t274; - int _t280; - int _t240; - _t240 = self->tag; - _t241 = (_t240 != JsonTagObject); - if (!_t241) goto endif63; + void* _t257; + int _t258; + const char** _t260; + void* _t262; + int _t263; + JsonValue* _t265; + int _t271; + int _t235; + _t235 = self->tag; + _t236 = (_t235 != JsonTagObject); + if (!_t236) goto endif60; { return; } - endif63:; + endif60:; unsigned int i; i = 0; - while64:; - unsigned int _t242; - _t242 = self->objLen; - _t243 = (i < _t242); - if (!_t243) goto wend66; + while61:; + unsigned int _t237; + _t237 = self->objLen; + _t238 = (i < _t237); + if (!_t238) goto wend62; { - const char** _t244; - _t244 = self->objKeys; - const char* _t245; - _t245 = _t244[i]; - bool _t246; - _t246 = String_Eq(_t245, key); - if (!_t246) goto endif68; + const char** _t239; + _t239 = self->objKeys; + const char* _t240; + _t240 = _t239[i]; + bool _t241; + _t241 = String_Eq(_t240, key); + if (!_t241) goto endif64; { - JsonValue* _t247; - _t247 = self->objValues; - _t247[i] = val; + JsonValue* _t242; + _t242 = self->objValues; + _t242[i] = val; return; } - endif68:; - _t248 = i + 1; - i = _t248; + endif64:; + _t243 = i + 1; + i = _t243; } - goto while64; - wend66:; - unsigned int _t249; - _t249 = self->objLen; - unsigned int _t250; - _t250 = self->objCap; - _t251 = (_t249 >= _t250); - if (!_t251) goto endif70; + goto while61; + wend62:; + unsigned int _t244; + _t244 = self->objLen; + unsigned int _t245; + _t245 = self->objCap; + _t246 = (_t244 >= _t245); + if (!_t246) goto endif66; { unsigned int objNewCap; - unsigned int _t252; - _t252 = self->objCap; - objNewCap = _t252; - _t253 = (objNewCap == 0); - if (!_t253) goto else71; + unsigned int _t247; + _t247 = self->objCap; + objNewCap = _t247; + _t248 = (objNewCap == 0); + if (!_t248) goto else67; { self->objCap = 4; /* sizeof(const char*) */ - _t255 = 4 * sizeof(const char*); - void* _t256; - _t256 = Alloc(_t255); - _t257 = (const char**)_t256; - self->objKeys = _t257; + _t249 = 4 * sizeof(const char*); + void* _t250; + _t250 = Alloc(_t249); + _t251 = (const char**)_t250; + self->objKeys = _t251; /* sizeof(JsonValue) */ - _t259 = 4 * sizeof(JsonValue); - void* _t260; - _t260 = Alloc(_t259); - _t261 = (JsonValue*)_t260; - self->objValues = _t261; + _t252 = 4 * sizeof(JsonValue); + void* _t253; + _t253 = Alloc(_t252); + _t254 = (JsonValue*)_t253; + self->objValues = _t254; } - goto endif72; - else71:; + goto endif68; + else67:; { unsigned int doubleCap; - _t262 = objNewCap * 2; - doubleCap = _t262; + _t255 = objNewCap * 2; + doubleCap = _t255; self->objCap = doubleCap; - const char** _t263; - _t263 = self->objKeys; - _t264 = (void*)_t263; + const char** _t256; + _t256 = self->objKeys; + _t257 = (void*)_t256; /* sizeof(const char*) */ - _t266 = doubleCap * sizeof(const char*); - void* _t267; - _t267 = Realloc(_t264, _t266); - _t268 = (const char**)_t267; - self->objKeys = _t268; - JsonValue* _t269; - _t269 = self->objValues; - _t270 = (void*)_t269; + _t258 = doubleCap * sizeof(const char*); + void* _t259; + _t259 = Realloc(_t257, _t258); + _t260 = (const char**)_t259; + self->objKeys = _t260; + JsonValue* _t261; + _t261 = self->objValues; + _t262 = (void*)_t261; /* sizeof(JsonValue) */ - _t272 = doubleCap * sizeof(JsonValue); - void* _t273; - _t273 = Realloc(_t270, _t272); - _t274 = (JsonValue*)_t273; - self->objValues = _t274; + _t263 = doubleCap * sizeof(JsonValue); + void* _t264; + _t264 = Realloc(_t262, _t263); + _t265 = (JsonValue*)_t264; + self->objValues = _t265; } - endif72:; + endif68:; } - endif70:; - const char** _t275; - _t275 = self->objKeys; - unsigned int _t276; - _t276 = self->objLen; - _t275[_t276] = key; - JsonValue* _t277; - _t277 = self->objValues; - unsigned int _t278; - _t278 = self->objLen; - _t277[_t278] = val; - unsigned int _t279; - _t279 = self->objLen; - _t280 = _t279 + 1; - self->objLen = _t280; + endif66:; + const char** _t266; + _t266 = self->objKeys; + unsigned int _t267; + _t267 = self->objLen; + _t266[_t267] = key; + JsonValue* _t268; + _t268 = self->objValues; + unsigned int _t269; + _t269 = self->objLen; + _t268[_t269] = val; + unsigned int _t270; + _t270 = self->objLen; + _t271 = _t270 + 1; + self->objLen = _t271; } bool Json_IsNull(JsonValue v) { - int _t282; - int _t281; - _t281 = v.tag; - _t282 = (_t281 == JsonTagNull); - return _t282; + int _t273; + int _t272; + _t272 = v.tag; + _t273 = (_t272 == JsonTagNull); + return _t273; } bool Json_AsBool(JsonValue v) { - int _t284; - int _t283; - _t283 = v.tag; - _t284 = (_t283 == JsonTagBool); - if (!_t284) goto endif74; + int _t275; + int _t274; + _t274 = v.tag; + _t275 = (_t274 == JsonTagBool); + if (!_t275) goto endif70; { - bool _t285; - _t285 = v.boolVal; - return _t285; + bool _t276; + _t276 = v.boolVal; + return _t276; } - endif74:; + endif70:; return 0; } double Json_AsNumber(JsonValue v) { - int _t287; - int _t286; - _t286 = v.tag; - _t287 = (_t286 == JsonTagNumber); - if (!_t287) goto endif76; + int _t278; + int _t277; + _t277 = v.tag; + _t278 = (_t277 == JsonTagNumber); + if (!_t278) goto endif72; { - double _t288; - _t288 = v.numVal; - return _t288; + double _t279; + _t279 = v.numVal; + return _t279; } - endif76:; + endif72:; return 0.0; } const char* Json_AsString(JsonValue v) { - int _t290; - int _t289; - _t289 = v.tag; - _t290 = (_t289 == JsonTagString); - if (!_t290) goto endif78; + int _t281; + int _t280; + _t280 = v.tag; + _t281 = (_t280 == JsonTagString); + if (!_t281) goto endif74; { - const char* _t291; - _t291 = v.strVal; - return _t291; + const char* _t282; + _t282 = v.strVal; + return _t282; } - endif78:; + endif74:; return ""; } int JsonParser_Peek(JsonParser* p) { - int _t294; - int _t298; - unsigned int _t292; - _t292 = p->pos; - unsigned int _t293; - _t293 = p->len; - _t294 = (_t292 >= _t293); - if (!_t294) goto endif80; + int _t285; + int _t289; + unsigned int _t283; + _t283 = p->pos; + unsigned int _t284; + _t284 = p->len; + _t285 = (_t283 >= _t284); + if (!_t285) goto endif76; { return 0; } - endif80:; - const char* _t295; - _t295 = p->src; - unsigned int _t296; - _t296 = p->pos; - int _t297; - _t297 = _t295[_t296]; - _t298 = (int)_t297; - return _t298; + endif76:; + const char* _t286; + _t286 = p->src; + unsigned int _t287; + _t287 = p->pos; + int _t288; + _t288 = _t286[_t287]; + _t289 = (int)_t288; + return _t289; } void JsonParser_Advance(JsonParser* p) { - int _t301; - int _t303; - unsigned int _t299; - _t299 = p->pos; - unsigned int _t300; - _t300 = p->len; - _t301 = (_t299 < _t300); - if (!_t301) goto endif82; + int _t292; + int _t294; + unsigned int _t290; + _t290 = p->pos; + unsigned int _t291; + _t291 = p->len; + _t292 = (_t290 < _t291); + if (!_t292) goto endif78; { - unsigned int _t302; - _t302 = p->pos; - _t303 = _t302 + 1; - p->pos = _t303; + unsigned int _t293; + _t293 = p->pos; + _t294 = _t293 + 1; + p->pos = _t294; } - endif82:; + endif78:; } void JsonParser_SkipWhitespace(JsonParser* p) { - int _t305; - int _t306; - int _t308; - int _t310; - while83:; - if (!1) goto wend85; + int _t296; + int _t297; + int _t299; + int _t301; + while79:; + if (!1) goto wend80; { int c; - int _t304; - _t304 = JsonParser_Peek(p); - c = _t304; + int _t295; + _t295 = JsonParser_Peek(p); + c = _t295; bool __or_tmp_1; bool __or_tmp_2; bool __or_tmp_3; - _t305 = (c == 32); - if (!_t305) goto else86; + _t296 = (c == 32); + if (!_t296) goto else81; *(bool*)&__or_tmp_3 = 1; - goto endif87; - else86:; - _t306 = (c == 9); - *(bool*)&__or_tmp_3 = _t306; - endif87:; - bool _t307; - _t307 = *(bool*)&__or_tmp_3; - if (!_t307) goto else88; + goto endif82; + else81:; + _t297 = (c == 9); + *(bool*)&__or_tmp_3 = _t297; + endif82:; + bool _t298; + _t298 = *(bool*)&__or_tmp_3; + if (!_t298) goto else83; *(bool*)&__or_tmp_2 = 1; - goto endif89; - else88:; - _t308 = (c == 10); - *(bool*)&__or_tmp_2 = _t308; - endif89:; - bool _t309; - _t309 = *(bool*)&__or_tmp_2; - if (!_t309) goto else90; + goto endif84; + else83:; + _t299 = (c == 10); + *(bool*)&__or_tmp_2 = _t299; + endif84:; + bool _t300; + _t300 = *(bool*)&__or_tmp_2; + if (!_t300) goto else85; *(bool*)&__or_tmp_1 = 1; - goto endif91; - else90:; - _t310 = (c == 13); - *(bool*)&__or_tmp_1 = _t310; - endif91:; - bool _t311; - _t311 = *(bool*)&__or_tmp_1; - if (!_t311) goto else92; + goto endif86; + else85:; + _t301 = (c == 13); + *(bool*)&__or_tmp_1 = _t301; + endif86:; + bool _t302; + _t302 = *(bool*)&__or_tmp_1; + if (!_t302) goto else87; { JsonParser_Advance(p); } - goto endif93; - else92:; + goto endif88; + else87:; { return; } - endif93:; + endif88:; } - goto while83; - wend85:; + goto while79; + wend80:; } bool JsonParser_Match(JsonParser* p, const char* expected) { + int _t305; + int _t307; + int _t308; + int _t311; int _t314; - int _t316; + int _t315; int _t317; - int _t320; - int _t323; - int _t324; - int _t326; unsigned int elen; - unsigned int _t312; - _t312 = String_Len(expected); - elen = _t312; - unsigned int _t313; - _t313 = p->pos; - _t314 = _t313 + elen; - unsigned int _t315; - _t315 = p->len; - _t316 = (_t314 > _t315); - if (!_t316) goto endif95; + unsigned int _t303; + _t303 = String_Len(expected); + elen = _t303; + unsigned int _t304; + _t304 = p->pos; + _t305 = _t304 + elen; + unsigned int _t306; + _t306 = p->len; + _t307 = (_t305 > _t306); + if (!_t307) goto endif90; { return 0; } - endif95:; + endif90:; unsigned int i; i = 0; - while96:; - _t317 = (i < elen); - if (!_t317) goto wend98; + while91:; + _t308 = (i < elen); + if (!_t308) goto wend92; { - const char* _t318; - _t318 = p->src; - unsigned int _t319; - _t319 = p->pos; - _t320 = _t319 + i; - int _t321; - _t321 = _t318[_t320]; - int _t322; - _t322 = expected[i]; - _t323 = (_t321 != _t322); - if (!_t323) goto endif100; + const char* _t309; + _t309 = p->src; + unsigned int _t310; + _t310 = p->pos; + _t311 = _t310 + i; + int _t312; + _t312 = _t309[_t311]; + int _t313; + _t313 = expected[i]; + _t314 = (_t312 != _t313); + if (!_t314) goto endif94; { return 0; } - endif100:; - _t324 = i + 1; - i = _t324; + endif94:; + _t315 = i + 1; + i = _t315; } - goto while96; - wend98:; - unsigned int _t325; - _t325 = p->pos; - _t326 = _t325 + elen; - p->pos = _t326; + goto while91; + wend92:; + unsigned int _t316; + _t316 = p->pos; + _t317 = _t316 + elen; + p->pos = _t317; return 1; } const char* JsonParser_ParseString(JsonParser* p) { - int _t328; - int _t331; + int _t319; + int _t322; + int _t323; + int _t325; + int _t327; + void* _t328; + int _t329; + void* _t330; + char _t331; int _t332; - int _t334; - int _t336; - void* _t337; + void* _t333; + char _t334; + int _t335; + void* _t336; + char _t337; int _t338; void* _t339; char _t340; @@ -2009,234 +2017,262 @@ const char* JsonParser_ParseString(JsonParser* p) { int _t347; void* _t348; char _t349; - int _t350; - void* _t351; - char _t352; - int _t353; + void* _t350; + char _t351; + void* _t352; + char _t353; void* _t354; char _t355; - int _t356; - void* _t357; - char _t358; + int _t357; + void* _t358; void* _t359; - char _t360; void* _t361; - char _t362; - void* _t363; - char _t364; - int _t366; - void* _t367; - void* _t368; - void* _t370; - int _t327; - _t327 = JsonParser_Peek(p); - _t328 = (_t327 != 34); - if (!_t328) goto endif102; + int _t318; + _t318 = JsonParser_Peek(p); + _t319 = (_t318 != 34); + if (!_t319) goto endif96; { p->error = "Expected string"; return ""; } - endif102:; + endif96:; JsonParser_Advance(p); StringBuilder sb; - StringBuilder _t329; - _t329 = StringBuilder_New(); - sb = _t329; - while103:; - if (!1) goto wend105; + StringBuilder _t320; + _t320 = StringBuilder_New(); + sb = _t320; + while97:; + if (!1) goto wend98; { int c; - int _t330; - _t330 = JsonParser_Peek(p); - c = _t330; + int _t321; + _t321 = JsonParser_Peek(p); + c = _t321; bool __or_tmp_4; - _t331 = (c == 0); - if (!_t331) goto else106; + _t322 = (c == 0); + if (!_t322) goto else99; *(bool*)&__or_tmp_4 = 1; - goto endif107; - else106:; - _t332 = (c == 34); - *(bool*)&__or_tmp_4 = _t332; - endif107:; - bool _t333; - _t333 = *(bool*)&__or_tmp_4; - if (!_t333) goto endif109; + goto endif100; + else99:; + _t323 = (c == 34); + *(bool*)&__or_tmp_4 = _t323; + endif100:; + bool _t324; + _t324 = *(bool*)&__or_tmp_4; + if (!_t324) goto endif102; { - goto wend105; + goto wend98; } - endif109:; - _t334 = (c == 92); - if (!_t334) goto else110; + endif102:; + _t325 = (c == 92); + if (!_t325) goto else103; { JsonParser_Advance(p); int esc; - int _t335; - _t335 = JsonParser_Peek(p); - esc = _t335; - _t336 = (esc == 0); - if (!_t336) goto endif113; + int _t326; + _t326 = JsonParser_Peek(p); + esc = _t326; + _t327 = (esc == 0); + if (!_t327) goto endif106; { p->error = "Unterminated string escape"; - _t337 = &sb; - StringBuilder_Free(_t337); + _t328 = &sb; + StringBuilder_Free(_t328); return ""; } - endif113:; - _t338 = (esc == 110); - if (!_t338) goto else114; + endif106:; + _t329 = (esc == 110); + if (!_t329) goto else107; + { + _t330 = &sb; + _t331 = (char)10; + StringBuilder_AppendChar(_t330, _t331); + } + goto endif108; + else107:; + _t332 = (esc == 116); + if (!_t332) goto else109; + { + _t333 = &sb; + _t334 = (char)9; + StringBuilder_AppendChar(_t333, _t334); + } + goto endif110; + else109:; + _t335 = (esc == 114); + if (!_t335) goto else111; + { + _t336 = &sb; + _t337 = (char)13; + StringBuilder_AppendChar(_t336, _t337); + } + goto endif112; + else111:; + _t338 = (esc == 98); + if (!_t338) goto else113; { _t339 = &sb; - _t340 = (char)10; + _t340 = (char)8; StringBuilder_AppendChar(_t339, _t340); } - goto endif115; - else114:; - _t341 = (esc == 116); - if (!_t341) goto else116; + goto endif114; + else113:; + _t341 = (esc == 102); + if (!_t341) goto else115; { _t342 = &sb; - _t343 = (char)9; + _t343 = (char)12; StringBuilder_AppendChar(_t342, _t343); } - goto endif117; - else116:; - _t344 = (esc == 114); - if (!_t344) goto else118; + goto endif116; + else115:; + _t344 = (esc == 34); + if (!_t344) goto else117; { _t345 = &sb; - _t346 = (char)13; + _t346 = (char)34; StringBuilder_AppendChar(_t345, _t346); } - goto endif119; - else118:; - _t347 = (esc == 98); - if (!_t347) goto else120; + goto endif118; + else117:; + _t347 = (esc == 92); + if (!_t347) goto else119; { _t348 = &sb; - _t349 = (char)8; + _t349 = (char)92; StringBuilder_AppendChar(_t348, _t349); } - goto endif121; - else120:; - _t350 = (esc == 102); - if (!_t350) goto else122; + goto endif120; + else119:; { - _t351 = &sb; - _t352 = (char)12; - StringBuilder_AppendChar(_t351, _t352); + _t350 = &sb; + _t351 = (char)92; + StringBuilder_AppendChar(_t350, _t351); + _t352 = &sb; + _t353 = (char)esc; + StringBuilder_AppendChar(_t352, _t353); } - goto endif123; - else122:; - _t353 = (esc == 34); - if (!_t353) goto else124; + endif120:; + endif118:; + endif116:; + endif114:; + endif112:; + endif110:; + endif108:; + JsonParser_Advance(p); + } + goto endif104; + else103:; { _t354 = &sb; - _t355 = (char)34; + _t355 = (char)c; StringBuilder_AppendChar(_t354, _t355); - } - goto endif125; - else124:; - _t356 = (esc == 92); - if (!_t356) goto else126; - { - _t357 = &sb; - _t358 = (char)92; - StringBuilder_AppendChar(_t357, _t358); - } - goto endif127; - else126:; - { - _t359 = &sb; - _t360 = (char)92; - StringBuilder_AppendChar(_t359, _t360); - _t361 = &sb; - _t362 = (char)esc; - StringBuilder_AppendChar(_t361, _t362); - } - endif127:; - endif125:; - endif123:; - endif121:; - endif119:; - endif117:; - endif115:; JsonParser_Advance(p); } - goto endif111; - else110:; - { - _t363 = &sb; - _t364 = (char)c; - StringBuilder_AppendChar(_t363, _t364); - JsonParser_Advance(p); + endif104:; } - endif111:; - } - goto while103; - wend105:; - int _t365; - _t365 = JsonParser_Peek(p); - _t366 = (_t365 != 34); - if (!_t366) goto endif129; + goto while97; + wend98:; + int _t356; + _t356 = JsonParser_Peek(p); + _t357 = (_t356 != 34); + if (!_t357) goto endif122; { p->error = "Unterminated string"; - _t367 = &sb; - StringBuilder_Free(_t367); + _t358 = &sb; + StringBuilder_Free(_t358); return ""; } - endif129:; + endif122:; JsonParser_Advance(p); const char* result; - _t368 = &sb; - const char* _t369; - _t369 = StringBuilder_Build(_t368); - result = _t369; - _t370 = &sb; - StringBuilder_Free(_t370); + _t359 = &sb; + const char* _t360; + _t360 = StringBuilder_Build(_t359); + result = _t360; + _t361 = &sb; + StringBuilder_Free(_t361); return result; } JsonValue JsonParser_ParseNumber(JsonParser* p) { - int _t373; - int _t375; - int _t376; - int _t379; - int _t381; - int _t382; - int _t386; - unsigned int start; - unsigned int _t371; - _t371 = p->pos; - start = _t371; - int c0; + int _t364; + int _t366; + int _t367; + int _t370; int _t372; - _t372 = JsonParser_Peek(p); - c0 = _t372; - _t373 = (c0 == 45); - if (!_t373) goto endif131; + int _t373; + int _t377; + unsigned int start; + unsigned int _t362; + _t362 = p->pos; + start = _t362; + int c0; + int _t363; + _t363 = JsonParser_Peek(p); + c0 = _t363; + _t364 = (c0 == 45); + if (!_t364) goto endif124; { JsonParser_Advance(p); } - endif131:; - while132:; + endif124:; + while125:; + if (!1) goto wend126; + { + int c; + int _t365; + _t365 = JsonParser_Peek(p); + c = _t365; + bool __and_tmp_5; + _t366 = (c >= 48); + if (!_t366) goto else127; + _t367 = (c <= 57); + *(bool*)&__and_tmp_5 = _t367; + goto endif128; + else127:; + *(bool*)&__and_tmp_5 = 0; + endif128:; + bool _t368; + _t368 = *(bool*)&__and_tmp_5; + if (!_t368) goto else129; + { + JsonParser_Advance(p); + } + goto endif130; + else129:; + { + goto wend126; + } + endif130:; + } + goto while125; + wend126:; + int _t369; + _t369 = JsonParser_Peek(p); + _t370 = (_t369 == 46); + if (!_t370) goto endif132; + { + JsonParser_Advance(p); + while133:; if (!1) goto wend134; { int c; - int _t374; - _t374 = JsonParser_Peek(p); - c = _t374; - bool __and_tmp_5; - _t375 = (c >= 48); - if (!_t375) goto else135; - _t376 = (c <= 57); - *(bool*)&__and_tmp_5 = _t376; + int _t371; + _t371 = JsonParser_Peek(p); + c = _t371; + bool __and_tmp_6; + _t372 = (c >= 48); + if (!_t372) goto else135; + _t373 = (c <= 57); + *(bool*)&__and_tmp_6 = _t373; goto endif136; else135:; - *(bool*)&__and_tmp_5 = 0; + *(bool*)&__and_tmp_6 = 0; endif136:; - bool _t377; - _t377 = *(bool*)&__and_tmp_5; - if (!_t377) goto else137; + bool _t374; + _t374 = *(bool*)&__and_tmp_6; + if (!_t374) goto else137; { JsonParser_Advance(p); } @@ -2247,1098 +2283,1061 @@ JsonValue JsonParser_ParseNumber(JsonParser* p) { } endif138:; } - goto while132; + goto while133; wend134:; - int _t378; - _t378 = JsonParser_Peek(p); - _t379 = (_t378 == 46); - if (!_t379) goto endif140; - { - JsonParser_Advance(p); - while141:; - if (!1) goto wend143; - { - int c; - int _t380; - _t380 = JsonParser_Peek(p); - c = _t380; - bool __and_tmp_6; - _t381 = (c >= 48); - if (!_t381) goto else144; - _t382 = (c <= 57); - *(bool*)&__and_tmp_6 = _t382; - goto endif145; - else144:; - *(bool*)&__and_tmp_6 = 0; - endif145:; - bool _t383; - _t383 = *(bool*)&__and_tmp_6; - if (!_t383) goto else146; - { - JsonParser_Advance(p); } - goto endif147; - else146:; - { - goto wend143; - } - endif147:; - } - goto while141; - wend143:; - } - endif140:; + endif132:; const char* numStr; - const char* _t384; - _t384 = p->src; - unsigned int _t385; - _t385 = p->pos; - _t386 = _t385 - start; - const char* _t387; - _t387 = String_Slice(_t384, start, _t386); - numStr = _t387; + const char* _t375; + _t375 = p->src; + unsigned int _t376; + _t376 = p->pos; + _t377 = _t376 - start; + const char* _t378; + _t378 = String_Slice(_t375, start, _t377); + numStr = _t378; double n; - double _t388; - _t388 = String_ToFloat(numStr); - n = _t388; - JsonValue _t389; - _t389 = Json_Number(n); - return _t389; + double _t379; + _t379 = String_ToFloat(numStr); + n = _t379; + JsonValue _t380; + _t380 = Json_Number(n); + return _t380; } JsonValue JsonParser_ParseArray(JsonParser* p) { - int _t392; - int _t395; - void* _t397; - int _t399; - int _t400; + int _t383; + int _t386; + void* _t388; + int _t390; + int _t391; JsonParser_Advance(p); JsonValue arr; - JsonValue _t390; - _t390 = Json_Array(); - arr = _t390; + JsonValue _t381; + _t381 = Json_Array(); + arr = _t381; JsonParser_SkipWhitespace(p); - int _t391; - _t391 = JsonParser_Peek(p); - _t392 = (_t391 == 93); - if (!_t392) goto endif149; + int _t382; + _t382 = JsonParser_Peek(p); + _t383 = (_t382 == 93); + if (!_t383) goto endif140; { JsonParser_Advance(p); return arr; } - endif149:; - while150:; - if (!1) goto wend152; + endif140:; + while141:; + if (!1) goto wend142; { JsonParser_SkipWhitespace(p); JsonValue val; - JsonValue _t393; - _t393 = JsonParser_ParseValue(p); - val = _t393; - const char* _t394; - _t394 = p->error; - _t395 = (_t394 != ""); - if (!_t395) goto endif154; + JsonValue _t384; + _t384 = JsonParser_ParseValue(p); + val = _t384; + const char* _t385; + _t385 = p->error; + _t386 = (_t385 != ""); + if (!_t386) goto endif144; { - JsonValue _t396; - _t396 = Json_Null(); - return _t396; + JsonValue _t387; + _t387 = Json_Null(); + return _t387; } - endif154:; - _t397 = &arr; - Json_ArrayPush(_t397, val); + endif144:; + _t388 = &arr; + Json_ArrayPush(_t388, val); JsonParser_SkipWhitespace(p); int c; - int _t398; - _t398 = JsonParser_Peek(p); - c = _t398; - _t399 = (c == 93); - if (!_t399) goto endif156; + int _t389; + _t389 = JsonParser_Peek(p); + c = _t389; + _t390 = (c == 93); + if (!_t390) goto endif146; { JsonParser_Advance(p); return arr; } - endif156:; - _t400 = (c == 44); - if (!_t400) goto else157; + endif146:; + _t391 = (c == 44); + if (!_t391) goto else147; { JsonParser_Advance(p); } - goto endif158; - else157:; + goto endif148; + else147:; { p->error = "Expected ',' or ']' in array"; - JsonValue _t401; - _t401 = Json_Null(); - return _t401; + JsonValue _t392; + _t392 = Json_Null(); + return _t392; } - endif158:; + endif148:; } - goto while150; - wend152:; + goto while141; + wend142:; } JsonValue JsonParser_ParseObject(JsonParser* p) { - int _t404; - int _t407; + int _t395; + int _t398; + int _t401; + int _t405; + void* _t407; + int _t409; int _t410; - int _t414; - void* _t416; - int _t418; - int _t419; JsonParser_Advance(p); JsonValue obj; - JsonValue _t402; - _t402 = Json_Object(); - obj = _t402; + JsonValue _t393; + _t393 = Json_Object(); + obj = _t393; JsonParser_SkipWhitespace(p); - int _t403; - _t403 = JsonParser_Peek(p); - _t404 = (_t403 == 125); - if (!_t404) goto endif160; + int _t394; + _t394 = JsonParser_Peek(p); + _t395 = (_t394 == 125); + if (!_t395) goto endif150; + { + JsonParser_Advance(p); + return obj; + } + endif150:; + while151:; + if (!1) goto wend152; + { + JsonParser_SkipWhitespace(p); + const char* key; + const char* _t396; + _t396 = JsonParser_ParseString(p); + key = _t396; + const char* _t397; + _t397 = p->error; + _t398 = (_t397 != ""); + if (!_t398) goto endif154; + { + JsonValue _t399; + _t399 = Json_Null(); + return _t399; + } + endif154:; + JsonParser_SkipWhitespace(p); + int _t400; + _t400 = JsonParser_Peek(p); + _t401 = (_t400 != 58); + if (!_t401) goto endif156; + { + p->error = "Expected ':' after object key"; + JsonValue _t402; + _t402 = Json_Null(); + return _t402; + } + endif156:; + JsonParser_Advance(p); + JsonParser_SkipWhitespace(p); + JsonValue val; + JsonValue _t403; + _t403 = JsonParser_ParseValue(p); + val = _t403; + const char* _t404; + _t404 = p->error; + _t405 = (_t404 != ""); + if (!_t405) goto endif158; + { + JsonValue _t406; + _t406 = Json_Null(); + return _t406; + } + endif158:; + _t407 = &obj; + Json_ObjectSet(_t407, key, val); + JsonParser_SkipWhitespace(p); + int c; + int _t408; + _t408 = JsonParser_Peek(p); + c = _t408; + _t409 = (c == 125); + if (!_t409) goto endif160; { JsonParser_Advance(p); return obj; } endif160:; - while161:; - if (!1) goto wend163; + _t410 = (c == 44); + if (!_t410) goto else161; { - JsonParser_SkipWhitespace(p); - const char* key; - const char* _t405; - _t405 = JsonParser_ParseString(p); - key = _t405; - const char* _t406; - _t406 = p->error; - _t407 = (_t406 != ""); - if (!_t407) goto endif165; - { - JsonValue _t408; - _t408 = Json_Null(); - return _t408; + JsonParser_Advance(p); } - endif165:; - JsonParser_SkipWhitespace(p); - int _t409; - _t409 = JsonParser_Peek(p); - _t410 = (_t409 != 58); - if (!_t410) goto endif167; + goto endif162; + else161:; { - p->error = "Expected ':' after object key"; + p->error = "Expected ',' or '}' in object"; JsonValue _t411; _t411 = Json_Null(); return _t411; } - endif167:; - JsonParser_Advance(p); - JsonParser_SkipWhitespace(p); - JsonValue val; - JsonValue _t412; - _t412 = JsonParser_ParseValue(p); - val = _t412; - const char* _t413; - _t413 = p->error; - _t414 = (_t413 != ""); - if (!_t414) goto endif169; - { - JsonValue _t415; - _t415 = Json_Null(); - return _t415; + endif162:; } - endif169:; - _t416 = &obj; - Json_ObjectSet(_t416, key, val); - JsonParser_SkipWhitespace(p); - int c; - int _t417; - _t417 = JsonParser_Peek(p); - c = _t417; - _t418 = (c == 125); - if (!_t418) goto endif171; - { - JsonParser_Advance(p); - return obj; - } - endif171:; - _t419 = (c == 44); - if (!_t419) goto else172; - { - JsonParser_Advance(p); - } - goto endif173; - else172:; - { - p->error = "Expected ',' or '}' in object"; - JsonValue _t420; - _t420 = Json_Null(); - return _t420; - } - endif173:; - } - goto while161; - wend163:; + goto while151; + wend152:; } JsonValue JsonParser_ParseValue(JsonParser* p) { + int _t413; + int _t415; + int _t418; + int _t420; int _t422; - int _t424; - int _t427; - int _t429; - int _t431; + int _t426; + int _t430; + int _t434; int _t435; - int _t439; - int _t443; - int _t444; - int _t446; + int _t437; JsonParser_SkipWhitespace(p); int c; - int _t421; - _t421 = JsonParser_Peek(p); - c = _t421; - _t422 = (c == 0); - if (!_t422) goto endif175; + int _t412; + _t412 = JsonParser_Peek(p); + c = _t412; + _t413 = (c == 0); + if (!_t413) goto endif164; { p->error = "Unexpected end of input"; - JsonValue _t423; - _t423 = Json_Null(); - return _t423; + JsonValue _t414; + _t414 = Json_Null(); + return _t414; } - endif175:; - _t424 = (c == 34); - if (!_t424) goto endif177; + endif164:; + _t415 = (c == 34); + if (!_t415) goto endif166; { - const char* _t425; - _t425 = JsonParser_ParseString(p); - JsonValue _t426; - _t426 = Json_String(_t425); - return _t426; + const char* _t416; + _t416 = JsonParser_ParseString(p); + JsonValue _t417; + _t417 = Json_String(_t416); + return _t417; } - endif177:; - _t427 = (c == 123); - if (!_t427) goto endif179; + endif166:; + _t418 = (c == 123); + if (!_t418) goto endif168; + { + JsonValue _t419; + _t419 = JsonParser_ParseObject(p); + return _t419; + } + endif168:; + _t420 = (c == 91); + if (!_t420) goto endif170; + { + JsonValue _t421; + _t421 = JsonParser_ParseArray(p); + return _t421; + } + endif170:; + _t422 = (c == 116); + if (!_t422) goto endif172; + { + bool _t423; + _t423 = JsonParser_Match(p, "true"); + if (!_t423) goto endif174; + { + JsonValue _t424; + _t424 = Json_Bool(1); + return _t424; + } + endif174:; + p->error = "Expected 'true'"; + JsonValue _t425; + _t425 = Json_Null(); + return _t425; + } + endif172:; + _t426 = (c == 102); + if (!_t426) goto endif176; + { + bool _t427; + _t427 = JsonParser_Match(p, "false"); + if (!_t427) goto endif178; { JsonValue _t428; - _t428 = JsonParser_ParseObject(p); + _t428 = Json_Bool(0); return _t428; } - endif179:; - _t429 = (c == 91); - if (!_t429) goto endif181; - { - JsonValue _t430; - _t430 = JsonParser_ParseArray(p); - return _t430; + endif178:; + p->error = "Expected 'false'"; + JsonValue _t429; + _t429 = Json_Null(); + return _t429; } - endif181:; - _t431 = (c == 116); - if (!_t431) goto endif183; + endif176:; + _t430 = (c == 110); + if (!_t430) goto endif180; { - bool _t432; - _t432 = JsonParser_Match(p, "true"); - if (!_t432) goto endif185; + bool _t431; + _t431 = JsonParser_Match(p, "null"); + if (!_t431) goto endif182; { + JsonValue _t432; + _t432 = Json_Null(); + return _t432; + } + endif182:; + p->error = "Expected 'null'"; JsonValue _t433; - _t433 = Json_Bool(1); + _t433 = Json_Null(); return _t433; } - endif185:; - p->error = "Expected 'true'"; - JsonValue _t434; - _t434 = Json_Null(); - return _t434; - } - endif183:; - _t435 = (c == 102); - if (!_t435) goto endif187; - { - bool _t436; - _t436 = JsonParser_Match(p, "false"); - if (!_t436) goto endif189; - { - JsonValue _t437; - _t437 = Json_Bool(0); - return _t437; - } - endif189:; - p->error = "Expected 'false'"; - JsonValue _t438; - _t438 = Json_Null(); - return _t438; - } - endif187:; - _t439 = (c == 110); - if (!_t439) goto endif191; - { - bool _t440; - _t440 = JsonParser_Match(p, "null"); - if (!_t440) goto endif193; - { - JsonValue _t441; - _t441 = Json_Null(); - return _t441; - } - endif193:; - p->error = "Expected 'null'"; - JsonValue _t442; - _t442 = Json_Null(); - return _t442; - } - endif191:; + endif180:; bool __or_tmp_7; bool __and_tmp_8; - _t443 = (c >= 48); - if (!_t443) goto else194; - _t444 = (c <= 57); - *(bool*)&__and_tmp_8 = _t444; - goto endif195; - else194:; + _t434 = (c >= 48); + if (!_t434) goto else183; + _t435 = (c <= 57); + *(bool*)&__and_tmp_8 = _t435; + goto endif184; + else183:; *(bool*)&__and_tmp_8 = 0; - endif195:; - bool _t445; - _t445 = *(bool*)&__and_tmp_8; - if (!_t445) goto else196; + endif184:; + bool _t436; + _t436 = *(bool*)&__and_tmp_8; + if (!_t436) goto else185; *(bool*)&__or_tmp_7 = 1; - goto endif197; - else196:; - _t446 = (c == 45); - *(bool*)&__or_tmp_7 = _t446; - endif197:; - bool _t447; - _t447 = *(bool*)&__or_tmp_7; - if (!_t447) goto endif199; + goto endif186; + else185:; + _t437 = (c == 45); + *(bool*)&__or_tmp_7 = _t437; + endif186:; + bool _t438; + _t438 = *(bool*)&__or_tmp_7; + if (!_t438) goto endif188; { - JsonValue _t448; - _t448 = JsonParser_ParseNumber(p); - return _t448; + JsonValue _t439; + _t439 = JsonParser_ParseNumber(p); + return _t439; } - endif199:; + endif188:; p->error = "Unexpected character"; - JsonValue _t449; - _t449 = Json_Null(); - return _t449; + JsonValue _t440; + _t440 = Json_Null(); + return _t440; } JsonValue Json_Parse(const char* s) { - JsonParser _t451; - void* _t452; - void* _t454; - int _t456; - int _t459; + JsonParser _t442; + void* _t443; + void* _t445; + int _t447; + int _t450; JsonParser p; - unsigned int _t450; - _t450 = String_Len(s); - _t451 = (JsonParser){.src = s, .pos = 0, .len = _t450, .error = ""}; - p = _t451; + unsigned int _t441; + _t441 = String_Len(s); + _t442 = (JsonParser){.src = s, .pos = 0, .len = _t441, .error = ""}; + p = _t442; JsonValue result; - _t452 = &p; - JsonValue _t453; - _t453 = JsonParser_ParseValue(_t452); - result = _t453; - _t454 = &p; - JsonParser_SkipWhitespace(_t454); + _t443 = &p; + JsonValue _t444; + _t444 = JsonParser_ParseValue(_t443); + result = _t444; + _t445 = &p; + JsonParser_SkipWhitespace(_t445); bool __and_tmp_9; - const char* _t455; - _t455 = p.error; - _t456 = (_t455 == ""); - if (!_t456) goto else200; - unsigned int _t457; - _t457 = p.pos; - unsigned int _t458; - _t458 = p.len; - _t459 = (_t457 != _t458); - *(bool*)&__and_tmp_9 = _t459; - goto endif201; - else200:; + const char* _t446; + _t446 = p.error; + _t447 = (_t446 == ""); + if (!_t447) goto else189; + unsigned int _t448; + _t448 = p.pos; + unsigned int _t449; + _t449 = p.len; + _t450 = (_t448 != _t449); + *(bool*)&__and_tmp_9 = _t450; + goto endif190; + else189:; *(bool*)&__and_tmp_9 = 0; - endif201:; - bool _t460; - _t460 = *(bool*)&__and_tmp_9; - if (!_t460) goto endif203; + endif190:; + bool _t451; + _t451 = *(bool*)&__and_tmp_9; + if (!_t451) goto endif192; { p.error = "Trailing data after JSON value"; - JsonValue _t461; - _t461 = Json_Null(); - return _t461; + JsonValue _t452; + _t452 = Json_Null(); + return _t452; } - endif203:; + endif192:; return result; } void Json_StringifyImpl(StringBuilder* sb, JsonValue v) { - int _t463; - int _t465; - int _t468; + int _t454; + int _t456; + int _t459; + int _t462; + char _t463; + char _t465; + int _t467; + char _t468; + int _t470; int _t471; char _t472; - char _t474; - int _t476; - char _t477; - int _t479; - int _t480; - char _t481; - int _t484; - char _t485; - int _t487; + int _t475; + char _t476; + int _t478; + char _t479; + int _t481; + int _t482; + char _t483; + char _t484; + char _t487; char _t488; - int _t490; int _t491; char _t492; - char _t493; - char _t496; - char _t497; - int _t500; - char _t501; - int _t462; - _t462 = v.tag; - _t463 = (_t462 == JsonTagNull); - if (!_t463) goto endif205; + int _t453; + _t453 = v.tag; + _t454 = (_t453 == JsonTagNull); + if (!_t454) goto endif194; { StringBuilder_Append(sb, "null"); return; } - endif205:; - int _t464; - _t464 = v.tag; - _t465 = (_t464 == JsonTagBool); - if (!_t465) goto endif207; + endif194:; + int _t455; + _t455 = v.tag; + _t456 = (_t455 == JsonTagBool); + if (!_t456) goto endif196; { - bool _t466; - _t466 = v.boolVal; - if (!_t466) goto else208; + bool _t457; + _t457 = v.boolVal; + if (!_t457) goto else197; { StringBuilder_Append(sb, "true"); } - goto endif209; - else208:; + goto endif198; + else197:; { StringBuilder_Append(sb, "false"); } - endif209:; + endif198:; return; } - endif207:; - int _t467; - _t467 = v.tag; - _t468 = (_t467 == JsonTagNumber); - if (!_t468) goto endif211; + endif196:; + int _t458; + _t458 = v.tag; + _t459 = (_t458 == JsonTagNumber); + if (!_t459) goto endif200; { - double _t469; - _t469 = v.numVal; - StringBuilder_AppendFloat(sb, _t469); + double _t460; + _t460 = v.numVal; + StringBuilder_AppendFloat(sb, _t460); return; } - endif211:; - int _t470; - _t470 = v.tag; - _t471 = (_t470 == JsonTagString); - if (!_t471) goto endif213; + endif200:; + int _t461; + _t461 = v.tag; + _t462 = (_t461 == JsonTagString); + if (!_t462) goto endif202; { - _t472 = (char)34; + _t463 = (char)34; + StringBuilder_AppendChar(sb, _t463); + const char* _t464; + _t464 = v.strVal; + StringBuilder_Append(sb, _t464); + _t465 = (char)34; + StringBuilder_AppendChar(sb, _t465); + return; + } + endif202:; + int _t466; + _t466 = v.tag; + _t467 = (_t466 == JsonTagArray); + if (!_t467) goto endif204; + { + _t468 = (char)91; + StringBuilder_AppendChar(sb, _t468); + unsigned int i; + i = 0; + while205:; + unsigned int _t469; + _t469 = v.arrLen; + _t470 = (i < _t469); + if (!_t470) goto wend206; + { + _t471 = (i > 0); + if (!_t471) goto endif208; + { + _t472 = (char)44; StringBuilder_AppendChar(sb, _t472); - const char* _t473; - _t473 = v.strVal; - StringBuilder_Append(sb, _t473); - _t474 = (char)34; - StringBuilder_AppendChar(sb, _t474); + } + endif208:; + JsonValue* _t473; + _t473 = v.arrData; + JsonValue _t474; + _t474 = _t473[i]; + Json_StringifyImpl(sb, _t474); + _t475 = i + 1; + i = _t475; + } + goto while205; + wend206:; + _t476 = (char)93; + StringBuilder_AppendChar(sb, _t476); return; } - endif213:; - int _t475; - _t475 = v.tag; - _t476 = (_t475 == JsonTagArray); - if (!_t476) goto endif215; + endif204:; + int _t477; + _t477 = v.tag; + _t478 = (_t477 == JsonTagObject); + if (!_t478) goto endif210; { - _t477 = (char)91; - StringBuilder_AppendChar(sb, _t477); + _t479 = (char)123; + StringBuilder_AppendChar(sb, _t479); unsigned int i; i = 0; - while216:; - unsigned int _t478; - _t478 = v.arrLen; - _t479 = (i < _t478); - if (!_t479) goto wend218; + while211:; + unsigned int _t480; + _t480 = v.objLen; + _t481 = (i < _t480); + if (!_t481) goto wend212; { - _t480 = (i > 0); - if (!_t480) goto endif220; + _t482 = (i > 0); + if (!_t482) goto endif214; { - _t481 = (char)44; - StringBuilder_AppendChar(sb, _t481); + _t483 = (char)44; + StringBuilder_AppendChar(sb, _t483); } - endif220:; - JsonValue* _t482; - _t482 = v.arrData; - JsonValue _t483; - _t483 = _t482[i]; - Json_StringifyImpl(sb, _t483); - _t484 = i + 1; - i = _t484; - } - goto while216; - wend218:; - _t485 = (char)93; - StringBuilder_AppendChar(sb, _t485); - return; - } - endif215:; - int _t486; - _t486 = v.tag; - _t487 = (_t486 == JsonTagObject); - if (!_t487) goto endif222; - { - _t488 = (char)123; + endif214:; + _t484 = (char)34; + StringBuilder_AppendChar(sb, _t484); + const char** _t485; + _t485 = v.objKeys; + const char* _t486; + _t486 = _t485[i]; + StringBuilder_Append(sb, _t486); + _t487 = (char)34; + StringBuilder_AppendChar(sb, _t487); + _t488 = (char)58; StringBuilder_AppendChar(sb, _t488); - unsigned int i; - i = 0; - while223:; - unsigned int _t489; - _t489 = v.objLen; - _t490 = (i < _t489); - if (!_t490) goto wend225; - { - _t491 = (i > 0); - if (!_t491) goto endif227; - { - _t492 = (char)44; + JsonValue* _t489; + _t489 = v.objValues; + JsonValue _t490; + _t490 = _t489[i]; + Json_StringifyImpl(sb, _t490); + _t491 = i + 1; + i = _t491; + } + goto while211; + wend212:; + _t492 = (char)125; StringBuilder_AppendChar(sb, _t492); - } - endif227:; - _t493 = (char)34; - StringBuilder_AppendChar(sb, _t493); - const char** _t494; - _t494 = v.objKeys; - const char* _t495; - _t495 = _t494[i]; - StringBuilder_Append(sb, _t495); - _t496 = (char)34; - StringBuilder_AppendChar(sb, _t496); - _t497 = (char)58; - StringBuilder_AppendChar(sb, _t497); - JsonValue* _t498; - _t498 = v.objValues; - JsonValue _t499; - _t499 = _t498[i]; - Json_StringifyImpl(sb, _t499); - _t500 = i + 1; - i = _t500; - } - goto while223; - wend225:; - _t501 = (char)125; - StringBuilder_AppendChar(sb, _t501); return; } - endif222:; + endif210:; } const char* Json_Stringify(JsonValue v) { - void* _t503; - void* _t504; + void* _t494; + void* _t495; StringBuilder sb; - StringBuilder _t502; - _t502 = StringBuilder_New(); - sb = _t502; - _t503 = &sb; - Json_StringifyImpl(_t503, v); - _t504 = &sb; - const char* _t505; - _t505 = StringBuilder_Build(_t504); - return _t505; + StringBuilder _t493; + _t493 = StringBuilder_New(); + sb = _t493; + _t494 = &sb; + Json_StringifyImpl(_t494, v); + _t495 = &sb; + const char* _t496; + _t496 = StringBuilder_Build(_t495); + return _t496; } unsigned int String_Len(const char* s) { - unsigned int _t506; - _t506 = bux_strlen(s); - return _t506; + unsigned int _t497; + _t497 = bux_strlen(s); + return _t497; } bool String_IsNull(const char* s) { - int _t508; - int _t507; - _t507 = bux_str_is_null(s); - _t508 = (_t507 != 0); - return _t508; + int _t499; + int _t498; + _t498 = bux_str_is_null(s); + _t499 = (_t498 != 0); + return _t499; } bool String_Eq(const char* a, const char* b) { - int _t510; - int _t509; - _t509 = bux_strcmp(a, b); - _t510 = (_t509 == 0); - return _t510; + int _t501; + int _t500; + _t500 = bux_strcmp(a, b); + _t501 = (_t500 == 0); + return _t501; } const char* String_Concat(const char* a, const char* b) { - int _t513; - int _t514; - char* _t516; + int _t504; + int _t505; + char* _t507; unsigned int len_a; - unsigned int _t511; - _t511 = bux_strlen(a); - len_a = _t511; + unsigned int _t502; + _t502 = bux_strlen(a); + len_a = _t502; unsigned int len_b; - unsigned int _t512; - _t512 = bux_strlen(b); - len_b = _t512; + unsigned int _t503; + _t503 = bux_strlen(b); + len_b = _t503; unsigned int total; - _t513 = len_a + len_b; - _t514 = _t513 + 1; - total = _t514; + _t504 = len_a + len_b; + _t505 = _t504 + 1; + total = _t505; char* buf; - void* _t515; - _t515 = bux_alloc(total); - _t516 = (char*)_t515; - buf = _t516; + void* _t506; + _t506 = bux_alloc(total); + _t507 = (char*)_t506; + buf = _t507; bux_strcpy(buf, a); bux_strcat(buf, b); return buf; } const char* String_Copy(const char* s) { - int _t518; - char* _t520; + int _t509; + char* _t511; unsigned int len; - unsigned int _t517; - _t517 = bux_strlen(s); - len = _t517; + unsigned int _t508; + _t508 = bux_strlen(s); + len = _t508; char* buf; - _t518 = len + 1; - void* _t519; - _t519 = bux_alloc(_t518); - _t520 = (char*)_t519; - buf = _t520; + _t509 = len + 1; + void* _t510; + _t510 = bux_alloc(_t509); + _t511 = (char*)_t510; + buf = _t511; bux_strcpy(buf, s); return buf; } bool String_StartsWith(const char* s, const char* prefix) { - int _t523; - int _t525; + int _t514; + int _t516; unsigned int s_len; - unsigned int _t521; - _t521 = bux_strlen(s); - s_len = _t521; + unsigned int _t512; + _t512 = bux_strlen(s); + s_len = _t512; unsigned int p_len; - unsigned int _t522; - _t522 = bux_strlen(prefix); - p_len = _t522; - _t523 = (p_len > s_len); - if (!_t523) goto endif229; + unsigned int _t513; + _t513 = bux_strlen(prefix); + p_len = _t513; + _t514 = (p_len > s_len); + if (!_t514) goto endif216; { return 0; } - endif229:; + endif216:; int r; - int _t524; - _t524 = bux_strncmp(s, prefix, p_len); - r = _t524; - _t525 = (r == 0); - return _t525; + int _t515; + _t515 = bux_strncmp(s, prefix, p_len); + r = _t515; + _t516 = (r == 0); + return _t516; } bool String_EndsWith(const char* s, const char* suffix) { - int _t528; - int _t529; - int _t532; + int _t519; + int _t520; + int _t523; unsigned int s_len; - unsigned int _t526; - _t526 = bux_strlen(s); - s_len = _t526; + unsigned int _t517; + _t517 = bux_strlen(s); + s_len = _t517; unsigned int suf_len; - unsigned int _t527; - _t527 = bux_strlen(suffix); - suf_len = _t527; - _t528 = (suf_len > s_len); - if (!_t528) goto endif231; + unsigned int _t518; + _t518 = bux_strlen(suffix); + suf_len = _t518; + _t519 = (suf_len > s_len); + if (!_t519) goto endif218; { return 0; } - endif231:; + endif218:; unsigned int start; - _t529 = s_len - suf_len; - start = _t529; + _t520 = s_len - suf_len; + start = _t520; const char* tail; - const char* _t530; - _t530 = bux_str_slice(s, start, suf_len); - tail = _t530; + const char* _t521; + _t521 = bux_str_slice(s, start, suf_len); + tail = _t521; bool eq; - int _t531; - _t531 = bux_strcmp(tail, suffix); - _t532 = (_t531 == 0); - eq = _t532; + int _t522; + _t522 = bux_strcmp(tail, suffix); + _t523 = (_t522 == 0); + eq = _t523; return eq; } bool String_Contains(const char* s, const char* substr) { - int _t534; + int _t525; int r; - int _t533; - _t533 = bux_str_contains(s, substr); - r = _t533; - _t534 = (r != 0); - return _t534; + int _t524; + _t524 = bux_str_contains(s, substr); + r = _t524; + _t525 = (r != 0); + return _t525; } const char* String_Slice(const char* s, unsigned int start, unsigned int len) { - const char* _t535; - _t535 = bux_str_slice(s, start, len); - return _t535; + const char* _t526; + _t526 = bux_str_slice(s, start, len); + return _t526; } const char* String_Trim(const char* s) { - const char* _t536; - _t536 = bux_str_trim(s); - return _t536; + const char* _t527; + _t527 = bux_str_trim(s); + return _t527; } const char* String_TrimLeft(const char* s) { - const char* _t537; - _t537 = bux_str_trim_left(s); - return _t537; + const char* _t528; + _t528 = bux_str_trim_left(s); + return _t528; } const char* String_TrimRight(const char* s) { - const char* _t538; - _t538 = bux_str_trim_right(s); - return _t538; + const char* _t529; + _t529 = bux_str_trim_right(s); + return _t529; } const char* String_FromInt(int64_t n) { - const char* _t539; - _t539 = bux_int_to_str(n); - return _t539; + const char* _t530; + _t530 = bux_int_to_str(n); + return _t530; } int64_t String_ToInt(const char* s) { - int64_t _t540; - _t540 = bux_str_to_int(s); - return _t540; + int64_t _t531; + _t531 = bux_str_to_int(s); + return _t531; } StringBuilder StringBuilder_New(void) { - StringBuilder _t542; - void* _t541; - _t541 = bux_sb_new(64); - _t542 = (StringBuilder){.handle = _t541}; - return _t542; + StringBuilder _t533; + void* _t532; + _t532 = bux_sb_new(64); + _t533 = (StringBuilder){.handle = _t532}; + return _t533; } StringBuilder StringBuilder_NewCap(unsigned int cap) { - StringBuilder _t544; - void* _t543; - _t543 = bux_sb_new(cap); - _t544 = (StringBuilder){.handle = _t543}; - return _t544; + StringBuilder _t535; + void* _t534; + _t534 = bux_sb_new(cap); + _t535 = (StringBuilder){.handle = _t534}; + return _t535; } void StringBuilder_Append(StringBuilder* sb, const char* s) { - void* _t545; - _t545 = sb->handle; - bux_sb_append(_t545, s); + void* _t536; + _t536 = sb->handle; + bux_sb_append(_t536, s); } void StringBuilder_AppendInt(StringBuilder* sb, int64_t n) { - void* _t546; - _t546 = sb->handle; - bux_sb_append_int(_t546, n); + void* _t537; + _t537 = sb->handle; + bux_sb_append_int(_t537, n); } void StringBuilder_AppendFloat(StringBuilder* sb, double f) { - void* _t547; - _t547 = sb->handle; - bux_sb_append_float(_t547, f); + void* _t538; + _t538 = sb->handle; + bux_sb_append_float(_t538, f); } void StringBuilder_AppendChar(StringBuilder* sb, char c) { - void* _t548; - _t548 = sb->handle; - bux_sb_append_char(_t548, c); + void* _t539; + _t539 = sb->handle; + bux_sb_append_char(_t539, c); } const char* StringBuilder_Build(StringBuilder* sb) { - void* _t549; - _t549 = sb->handle; - const char* _t550; - _t550 = bux_sb_build(_t549); - return _t550; + void* _t540; + _t540 = sb->handle; + const char* _t541; + _t541 = bux_sb_build(_t540); + return _t541; } void StringBuilder_Free(StringBuilder* sb) { - void* _t551; - _t551 = sb->handle; - bux_sb_free(_t551); + void* _t542; + _t542 = sb->handle; + bux_sb_free(_t542); } unsigned int String_SplitCount(const char* s, const char* delim) { - unsigned int _t552; - _t552 = bux_str_split_count(s, delim); - return _t552; + unsigned int _t543; + _t543 = bux_str_split_count(s, delim); + return _t543; } const char* String_SplitPart(const char* s, const char* delim, unsigned int index) { - const char* _t553; - _t553 = bux_str_split_part(s, delim, index); - return _t553; + const char* _t544; + _t544 = bux_str_split_part(s, delim, index); + return _t544; } const char* String_Join2(const char* a, const char* b, const char* sep) { - const char* _t554; - _t554 = bux_str_join2(a, b, sep); - return _t554; + const char* _t545; + _t545 = bux_str_join2(a, b, sep); + return _t545; } const char* String_Chars(const char* s, unsigned int index) { - const char* _t555; - _t555 = bux_str_slice(s, index, 1); - return _t555; + const char* _t546; + _t546 = bux_str_slice(s, index, 1); + return _t546; } const char* String_Find(const char* haystack, const char* needle) { - const char* _t556; - _t556 = bux_strstr(haystack, needle); - return _t556; + const char* _t547; + _t547 = bux_strstr(haystack, needle); + return _t547; } unsigned int String_Offset(const char* pos, const char* base) { - unsigned int _t557; - _t557 = bux_str_offset(pos, base); - return _t557; + unsigned int _t548; + _t548 = bux_str_offset(pos, base); + return _t548; } const char* String_Replace(const char* s, const char* old, const char* new) { - int _t563; - int _t565; - int _t566; + int _t554; + int _t556; + int _t557; const char* pos; - const char* _t558; - _t558 = bux_strstr(s, old); - pos = _t558; - bool _t559; - _t559 = String_IsNull(pos); - if (!_t559) goto endif233; + const char* _t549; + _t549 = bux_strstr(s, old); + pos = _t549; + bool _t550; + _t550 = String_IsNull(pos); + if (!_t550) goto endif220; { return s; } - endif233:; + endif220:; unsigned int oldLen; - unsigned int _t560; - _t560 = bux_strlen(old); - oldLen = _t560; + unsigned int _t551; + _t551 = bux_strlen(old); + oldLen = _t551; unsigned int prefixLen; - unsigned int _t561; - _t561 = String_Offset(pos, s); - prefixLen = _t561; + unsigned int _t552; + _t552 = String_Offset(pos, s); + prefixLen = _t552; const char* prefix; - const char* _t562; - _t562 = bux_str_slice(s, 0, prefixLen); - prefix = _t562; + const char* _t553; + _t553 = bux_str_slice(s, 0, prefixLen); + prefix = _t553; const char* suffix; - _t563 = prefixLen + oldLen; - unsigned int _t564; - _t564 = bux_strlen(s); - _t565 = _t564 - prefixLen; - _t566 = _t565 - oldLen; - const char* _t567; - _t567 = bux_str_slice(s, _t563, _t566); - suffix = _t567; + _t554 = prefixLen + oldLen; + unsigned int _t555; + _t555 = bux_strlen(s); + _t556 = _t555 - prefixLen; + _t557 = _t556 - oldLen; + const char* _t558; + _t558 = bux_str_slice(s, _t554, _t557); + suffix = _t558; const char* temp; - const char* _t568; - _t568 = String_Concat(prefix, new); - temp = _t568; + const char* _t559; + _t559 = String_Concat(prefix, new); + temp = _t559; const char* result; - const char* _t569; - _t569 = String_Concat(temp, suffix); - result = _t569; + const char* _t560; + _t560 = String_Concat(temp, suffix); + result = _t560; return result; } double String_ToFloat(const char* s) { - double _t570; - _t570 = bux_str_to_float(s); - return _t570; + double _t561; + _t561 = bux_str_to_float(s); + return _t561; } const char* String_FromBool(bool b) { - if (!b) goto endif235; + if (!b) goto endif222; { return "true"; } - endif235:; + endif222:; return "false"; } const char* String_FromFloat(double f) { - const char* _t571; - _t571 = bux_float_to_string(f); - return _t571; + const char* _t562; + _t562 = bux_float_to_string(f); + return _t562; } const char* String_Format1(const char* pattern, const char* a0) { - const char* _t572; - _t572 = bux_str_format(pattern, a0, "", "", "", "", "", "", ""); - return _t572; + const char* _t563; + _t563 = bux_str_format(pattern, a0, "", "", "", "", "", "", ""); + return _t563; } const char* String_Format2(const char* pattern, const char* a0, const char* a1) { - const char* _t573; - _t573 = bux_str_format(pattern, a0, a1, "", "", "", "", "", ""); - return _t573; + const char* _t564; + _t564 = bux_str_format(pattern, a0, a1, "", "", "", "", "", ""); + return _t564; } const char* String_Format3(const char* pattern, const char* a0, const char* a1, const char* a2) { - const char* _t574; - _t574 = bux_str_format(pattern, a0, a1, a2, "", "", "", "", ""); - return _t574; + const char* _t565; + _t565 = bux_str_format(pattern, a0, a1, a2, "", "", "", "", ""); + return _t565; } void Channel_SendInt(Channel_int* ch, int value) { - void* _t576; - void* _t577; - void* _t575; - _t575 = ch->handle; - _t576 = &value; - _t577 = (void*)_t576; - bux_channel_send(_t575, _t577); + void* _t567; + void* _t568; + void* _t566; + _t566 = ch->handle; + _t567 = &value; + _t568 = (void*)_t567; + bux_channel_send(_t566, _t568); } int Channel_RecvInt(Channel_int* ch) { - void* _t579; - void* _t580; + void* _t570; + void* _t571; int result; result = 0; - void* _t578; - _t578 = ch->handle; - _t579 = &result; - _t580 = (void*)_t579; - bux_channel_recv(_t578, _t580); + void* _t569; + _t569 = ch->handle; + _t570 = &result; + _t571 = (void*)_t570; + bux_channel_recv(_t569, _t571); return result; } void Channel_SendFloat64(Channel_float64* ch, double value) { - void* _t582; - void* _t583; - void* _t581; - _t581 = ch->handle; - _t582 = &value; - _t583 = (void*)_t582; - bux_channel_send(_t581, _t583); + void* _t573; + void* _t574; + void* _t572; + _t572 = ch->handle; + _t573 = &value; + _t574 = (void*)_t573; + bux_channel_send(_t572, _t574); } double Channel_RecvFloat64(Channel_float64* ch) { - void* _t585; - void* _t586; + void* _t576; + void* _t577; double result; result = 0.0; - void* _t584; - _t584 = ch->handle; - _t585 = &result; - _t586 = (void*)_t585; - bux_channel_recv(_t584, _t586); + void* _t575; + _t575 = ch->handle; + _t576 = &result; + _t577 = (void*)_t576; + bux_channel_recv(_t575, _t577); return result; } const char* Hash_Sha1(const char* data) { - int _t588; + int _t579; int len; - unsigned int _t587; - _t587 = String_Len(data); - _t588 = (int)_t587; - len = _t588; + unsigned int _t578; + _t578 = String_Len(data); + _t579 = (int)_t578; + len = _t579; void* buf; - void* _t589; - _t589 = Alloc(20); - buf = _t589; + void* _t580; + _t580 = Alloc(20); + buf = _t580; bux_sha1(data, len, buf); const char* result; - const char* _t590; - _t590 = bux_bytes_to_hex(buf, 20); - result = _t590; + const char* _t581; + _t581 = bux_bytes_to_hex(buf, 20); + result = _t581; Free(buf); return result; } const char* Hash_Sha256(const char* data) { - int _t592; + int _t583; int len; - unsigned int _t591; - _t591 = String_Len(data); - _t592 = (int)_t591; - len = _t592; + unsigned int _t582; + _t582 = String_Len(data); + _t583 = (int)_t582; + len = _t583; void* buf; - void* _t593; - _t593 = Alloc(32); - buf = _t593; + void* _t584; + _t584 = Alloc(32); + buf = _t584; bux_sha256(data, len, buf); const char* result; - const char* _t594; - _t594 = bux_bytes_to_hex(buf, 32); - result = _t594; + const char* _t585; + _t585 = bux_bytes_to_hex(buf, 32); + result = _t585; Free(buf); return result; } const char* Hash_Sha384(const char* data) { - int _t596; + int _t587; int len; - unsigned int _t595; - _t595 = String_Len(data); - _t596 = (int)_t595; - len = _t596; + unsigned int _t586; + _t586 = String_Len(data); + _t587 = (int)_t586; + len = _t587; void* buf; - void* _t597; - _t597 = Alloc(48); - buf = _t597; + void* _t588; + _t588 = Alloc(48); + buf = _t588; bux_sha384(data, len, buf); const char* result; - const char* _t598; - _t598 = bux_bytes_to_hex(buf, 48); - result = _t598; + const char* _t589; + _t589 = bux_bytes_to_hex(buf, 48); + result = _t589; Free(buf); return result; } const char* Hash_Sha512(const char* data) { - int _t600; + int _t591; int len; - unsigned int _t599; - _t599 = String_Len(data); - _t600 = (int)_t599; - len = _t600; + unsigned int _t590; + _t590 = String_Len(data); + _t591 = (int)_t590; + len = _t591; void* buf; - void* _t601; - _t601 = Alloc(64); - buf = _t601; + void* _t592; + _t592 = Alloc(64); + buf = _t592; bux_sha512(data, len, buf); const char* result; - const char* _t602; - _t602 = bux_bytes_to_hex(buf, 64); - result = _t602; + const char* _t593; + _t593 = bux_bytes_to_hex(buf, 64); + result = _t593; Free(buf); return result; } void Hash_Sha256Raw(const char* data, void* out) { - int _t604; - unsigned int _t603; - _t603 = String_Len(data); - _t604 = (int)_t603; - bux_sha256(data, _t604, out); + int _t595; + unsigned int _t594; + _t594 = String_Len(data); + _t595 = (int)_t594; + bux_sha256(data, _t595, out); } void Hash_Sha384Raw(const char* data, void* out) { - int _t606; - unsigned int _t605; - _t605 = String_Len(data); - _t606 = (int)_t605; - bux_sha384(data, _t606, out); + int _t597; + unsigned int _t596; + _t596 = String_Len(data); + _t597 = (int)_t596; + bux_sha384(data, _t597, out); } void Hash_Sha512Raw(const char* data, void* out) { - int _t608; - unsigned int _t607; - _t607 = String_Len(data); - _t608 = (int)_t607; - bux_sha512(data, _t608, out); + int _t599; + unsigned int _t598; + _t598 = String_Len(data); + _t599 = (int)_t598; + bux_sha512(data, _t599, out); } int Hash_Sha1Size(void) { @@ -3358,1466 +3357,1466 @@ int Hash_Sha512Size(void) { } const char* Base64_Encode(const char* s) { - int _t610; - unsigned int _t609; - _t609 = String_Len(s); - _t610 = (int)_t609; - const char* _t611; - _t611 = bux_base64_encode(s, _t610); - return _t611; + int _t601; + unsigned int _t600; + _t600 = String_Len(s); + _t601 = (int)_t600; + const char* _t602; + _t602 = bux_base64_encode(s, _t601); + return _t602; } const char* Base64_Decode(const char* s) { - int _t613; - void* _t614; + int _t604; + void* _t605; int outlen; outlen = 0; - unsigned int _t612; - _t612 = String_Len(s); - _t613 = (int)_t612; - _t614 = &outlen; - const char* _t615; - _t615 = bux_base64_decode(s, _t613, _t614); - return _t615; + unsigned int _t603; + _t603 = String_Len(s); + _t604 = (int)_t603; + _t605 = &outlen; + const char* _t606; + _t606 = bux_base64_decode(s, _t604, _t605); + return _t606; } const char* Base64URL_Encode(const char* s) { - int _t617; - unsigned int _t616; - _t616 = String_Len(s); - _t617 = (int)_t616; - const char* _t618; - _t618 = bux_base64url_encode(s, _t617); - return _t618; + int _t608; + unsigned int _t607; + _t607 = String_Len(s); + _t608 = (int)_t607; + const char* _t609; + _t609 = bux_base64url_encode(s, _t608); + return _t609; } const char* Base64URL_Decode(const char* s) { - int _t620; - void* _t621; + int _t611; + void* _t612; int outlen; outlen = 0; - unsigned int _t619; - _t619 = String_Len(s); - _t620 = (int)_t619; - _t621 = &outlen; - const char* _t622; - _t622 = bux_base64url_decode(s, _t620, _t621); - return _t622; + unsigned int _t610; + _t610 = String_Len(s); + _t611 = (int)_t610; + _t612 = &outlen; + const char* _t613; + _t613 = bux_base64url_decode(s, _t611, _t612); + return _t613; } const char* Hmac_Sha256(const char* key, const char* message) { - int _t624; - int _t626; + int _t615; + int _t617; int kl; - unsigned int _t623; - _t623 = String_Len(key); - _t624 = (int)_t623; - kl = _t624; + unsigned int _t614; + _t614 = String_Len(key); + _t615 = (int)_t614; + kl = _t615; int ml; - unsigned int _t625; - _t625 = String_Len(message); - _t626 = (int)_t625; - ml = _t626; + unsigned int _t616; + _t616 = String_Len(message); + _t617 = (int)_t616; + ml = _t617; void* buf; - void* _t627; - _t627 = Alloc(32); - buf = _t627; + void* _t618; + _t618 = Alloc(32); + buf = _t618; bux_hmac_sha256(key, kl, message, ml, buf); const char* result; - const char* _t628; - _t628 = bux_bytes_to_hex(buf, 32); - result = _t628; + const char* _t619; + _t619 = bux_bytes_to_hex(buf, 32); + result = _t619; Free(buf); return result; } void Hmac_Sha256Raw(const char* key, const char* message, void* out) { - int _t630; - int _t632; - unsigned int _t629; - _t629 = String_Len(key); - _t630 = (int)_t629; - unsigned int _t631; - _t631 = String_Len(message); - _t632 = (int)_t631; - bux_hmac_sha256(key, _t630, message, _t632, out); + int _t621; + int _t623; + unsigned int _t620; + _t620 = String_Len(key); + _t621 = (int)_t620; + unsigned int _t622; + _t622 = String_Len(message); + _t623 = (int)_t622; + bux_hmac_sha256(key, _t621, message, _t623, out); } const char* Hmac_Sha256Base64(const char* key, const char* message) { - int _t634; - int _t636; - const char* _t638; + int _t625; + int _t627; + const char* _t629; int kl; - unsigned int _t633; - _t633 = String_Len(key); - _t634 = (int)_t633; - kl = _t634; + unsigned int _t624; + _t624 = String_Len(key); + _t625 = (int)_t624; + kl = _t625; int ml; - unsigned int _t635; - _t635 = String_Len(message); - _t636 = (int)_t635; - ml = _t636; + unsigned int _t626; + _t626 = String_Len(message); + _t627 = (int)_t626; + ml = _t627; void* buf; - void* _t637; - _t637 = Alloc(32); - buf = _t637; + void* _t628; + _t628 = Alloc(32); + buf = _t628; bux_hmac_sha256(key, kl, message, ml, buf); const char* result; - _t638 = (const char*)buf; - const char* _t639; - _t639 = bux_base64_encode(_t638, 32); - result = _t639; + _t629 = (const char*)buf; + const char* _t630; + _t630 = bux_base64_encode(_t629, 32); + result = _t630; Free(buf); return result; } const char* Hmac_Sha384(const char* key, const char* message) { - int _t641; - int _t643; + int _t632; + int _t634; int kl; - unsigned int _t640; - _t640 = String_Len(key); - _t641 = (int)_t640; - kl = _t641; + unsigned int _t631; + _t631 = String_Len(key); + _t632 = (int)_t631; + kl = _t632; int ml; - unsigned int _t642; - _t642 = String_Len(message); - _t643 = (int)_t642; - ml = _t643; + unsigned int _t633; + _t633 = String_Len(message); + _t634 = (int)_t633; + ml = _t634; void* buf; - void* _t644; - _t644 = Alloc(48); - buf = _t644; + void* _t635; + _t635 = Alloc(48); + buf = _t635; bux_hmac_sha384(key, kl, message, ml, buf); const char* result; - const char* _t645; - _t645 = bux_bytes_to_hex(buf, 48); - result = _t645; + const char* _t636; + _t636 = bux_bytes_to_hex(buf, 48); + result = _t636; Free(buf); return result; } void Hmac_Sha384Raw(const char* key, const char* message, void* out) { - int _t647; - int _t649; - unsigned int _t646; - _t646 = String_Len(key); - _t647 = (int)_t646; - unsigned int _t648; - _t648 = String_Len(message); - _t649 = (int)_t648; - bux_hmac_sha384(key, _t647, message, _t649, out); + int _t638; + int _t640; + unsigned int _t637; + _t637 = String_Len(key); + _t638 = (int)_t637; + unsigned int _t639; + _t639 = String_Len(message); + _t640 = (int)_t639; + bux_hmac_sha384(key, _t638, message, _t640, out); } const char* Hmac_Sha384Base64(const char* key, const char* message) { - int _t651; - int _t653; - const char* _t655; + int _t642; + int _t644; + const char* _t646; int kl; - unsigned int _t650; - _t650 = String_Len(key); - _t651 = (int)_t650; - kl = _t651; + unsigned int _t641; + _t641 = String_Len(key); + _t642 = (int)_t641; + kl = _t642; int ml; - unsigned int _t652; - _t652 = String_Len(message); - _t653 = (int)_t652; - ml = _t653; + unsigned int _t643; + _t643 = String_Len(message); + _t644 = (int)_t643; + ml = _t644; void* buf; - void* _t654; - _t654 = Alloc(48); - buf = _t654; + void* _t645; + _t645 = Alloc(48); + buf = _t645; bux_hmac_sha384(key, kl, message, ml, buf); const char* result; - _t655 = (const char*)buf; - const char* _t656; - _t656 = bux_base64_encode(_t655, 48); - result = _t656; + _t646 = (const char*)buf; + const char* _t647; + _t647 = bux_base64_encode(_t646, 48); + result = _t647; Free(buf); return result; } const char* Hmac_Sha512(const char* key, const char* message) { - int _t658; - int _t660; + int _t649; + int _t651; int kl; - unsigned int _t657; - _t657 = String_Len(key); - _t658 = (int)_t657; - kl = _t658; + unsigned int _t648; + _t648 = String_Len(key); + _t649 = (int)_t648; + kl = _t649; int ml; - unsigned int _t659; - _t659 = String_Len(message); - _t660 = (int)_t659; - ml = _t660; + unsigned int _t650; + _t650 = String_Len(message); + _t651 = (int)_t650; + ml = _t651; void* buf; - void* _t661; - _t661 = Alloc(64); - buf = _t661; + void* _t652; + _t652 = Alloc(64); + buf = _t652; bux_hmac_sha512(key, kl, message, ml, buf); const char* result; - const char* _t662; - _t662 = bux_bytes_to_hex(buf, 64); - result = _t662; + const char* _t653; + _t653 = bux_bytes_to_hex(buf, 64); + result = _t653; Free(buf); return result; } void Hmac_Sha512Raw(const char* key, const char* message, void* out) { - int _t664; - int _t666; - unsigned int _t663; - _t663 = String_Len(key); - _t664 = (int)_t663; - unsigned int _t665; - _t665 = String_Len(message); - _t666 = (int)_t665; - bux_hmac_sha512(key, _t664, message, _t666, out); + int _t655; + int _t657; + unsigned int _t654; + _t654 = String_Len(key); + _t655 = (int)_t654; + unsigned int _t656; + _t656 = String_Len(message); + _t657 = (int)_t656; + bux_hmac_sha512(key, _t655, message, _t657, out); } const char* Hmac_Sha512Base64(const char* key, const char* message) { - int _t668; - int _t670; - const char* _t672; + int _t659; + int _t661; + const char* _t663; int kl; - unsigned int _t667; - _t667 = String_Len(key); - _t668 = (int)_t667; - kl = _t668; + unsigned int _t658; + _t658 = String_Len(key); + _t659 = (int)_t658; + kl = _t659; int ml; - unsigned int _t669; - _t669 = String_Len(message); - _t670 = (int)_t669; - ml = _t670; + unsigned int _t660; + _t660 = String_Len(message); + _t661 = (int)_t660; + ml = _t661; void* buf; - void* _t671; - _t671 = Alloc(64); - buf = _t671; + void* _t662; + _t662 = Alloc(64); + buf = _t662; bux_hmac_sha512(key, kl, message, ml, buf); const char* result; - _t672 = (const char*)buf; - const char* _t673; - _t673 = bux_base64_encode(_t672, 64); - result = _t673; + _t663 = (const char*)buf; + const char* _t664; + _t664 = bux_base64_encode(_t663, 64); + result = _t664; Free(buf); return result; } const char* Random_Bytes(int n) { - int _t674; - unsigned int _t675; - int _t678; - const char* _t679; - _t674 = (n <= 0); - if (!_t674) goto endif237; + int _t665; + unsigned int _t666; + int _t669; + const char* _t670; + _t665 = (n <= 0); + if (!_t665) goto endif224; { return ""; } - endif237:; + endif224:; void* buf; - _t675 = (unsigned int)n; - void* _t676; - _t676 = Alloc(_t675); - buf = _t676; - int _t677; - _t677 = bux_random_bytes(buf, n); - _t678 = (_t677 != 1); - if (!_t678) goto endif239; + _t666 = (unsigned int)n; + void* _t667; + _t667 = Alloc(_t666); + buf = _t667; + int _t668; + _t668 = bux_random_bytes(buf, n); + _t669 = (_t668 != 1); + if (!_t669) goto endif226; { Free(buf); return ""; } - endif239:; - _t679 = (const char*)buf; - return _t679; + endif226:; + _t670 = (const char*)buf; + return _t670; } const char* Random_Hex(int n) { - int _t680; - unsigned int _t681; - int _t684; - _t680 = (n <= 0); - if (!_t680) goto endif241; + int _t671; + unsigned int _t672; + int _t675; + _t671 = (n <= 0); + if (!_t671) goto endif228; { return ""; } - endif241:; + endif228:; void* buf; - _t681 = (unsigned int)n; - void* _t682; - _t682 = Alloc(_t681); - buf = _t682; - int _t683; - _t683 = bux_random_bytes(buf, n); - _t684 = (_t683 != 1); - if (!_t684) goto endif243; + _t672 = (unsigned int)n; + void* _t673; + _t673 = Alloc(_t672); + buf = _t673; + int _t674; + _t674 = bux_random_bytes(buf, n); + _t675 = (_t674 != 1); + if (!_t675) goto endif230; { Free(buf); return ""; } - endif243:; + endif230:; const char* result; - const char* _t685; - _t685 = bux_bytes_to_hex(buf, n); - result = _t685; + const char* _t676; + _t676 = bux_bytes_to_hex(buf, n); + result = _t676; Free(buf); return result; } const char* Random_Base64(int n) { - int _t686; - unsigned int _t687; - int _t690; - const char* _t691; - _t686 = (n <= 0); - if (!_t686) goto endif245; + int _t677; + unsigned int _t678; + int _t681; + const char* _t682; + _t677 = (n <= 0); + if (!_t677) goto endif232; { return ""; } - endif245:; + endif232:; void* buf; - _t687 = (unsigned int)n; - void* _t688; - _t688 = Alloc(_t687); - buf = _t688; - int _t689; - _t689 = bux_random_bytes(buf, n); - _t690 = (_t689 != 1); - if (!_t690) goto endif247; + _t678 = (unsigned int)n; + void* _t679; + _t679 = Alloc(_t678); + buf = _t679; + int _t680; + _t680 = bux_random_bytes(buf, n); + _t681 = (_t680 != 1); + if (!_t681) goto endif234; { Free(buf); return ""; } - endif247:; + endif234:; const char* result; - _t691 = (const char*)buf; - const char* _t692; - _t692 = bux_base64_encode(_t691, n); - result = _t692; + _t682 = (const char*)buf; + const char* _t683; + _t683 = bux_base64_encode(_t682, n); + result = _t683; Free(buf); return result; } unsigned int Random_Uint32(void) { - int _t695; - unsigned int* _t696; - unsigned int _t697; + int _t686; + unsigned int* _t687; + unsigned int _t688; void* buf; - void* _t693; - _t693 = Alloc(4); - buf = _t693; - int _t694; - _t694 = bux_random_bytes(buf, 4); - _t695 = (_t694 != 1); - if (!_t695) goto endif249; + void* _t684; + _t684 = Alloc(4); + buf = _t684; + int _t685; + _t685 = bux_random_bytes(buf, 4); + _t686 = (_t685 != 1); + if (!_t686) goto endif236; { Free(buf); return 0; } - endif249:; + endif236:; unsigned int* ptr; - _t696 = (unsigned int*)buf; - ptr = _t696; + _t687 = (unsigned int*)buf; + ptr = _t687; unsigned int val; - _t697 = *ptr; - val = _t697; + _t688 = *ptr; + val = _t688; Free(buf); return val; } const char* Aes_GenerateKey(void) { - unsigned int _t698; - int _t701; - const char* _t702; + unsigned int _t689; + int _t692; + const char* _t693; void* buf; - _t698 = (unsigned int)AES_KEY_SIZE; - void* _t699; - _t699 = Alloc(_t698); - buf = _t699; - int _t700; - _t700 = bux_random_bytes(buf, AES_KEY_SIZE); - _t701 = (_t700 != 1); - if (!_t701) goto endif251; + _t689 = (unsigned int)AES_KEY_SIZE; + void* _t690; + _t690 = Alloc(_t689); + buf = _t690; + int _t691; + _t691 = bux_random_bytes(buf, AES_KEY_SIZE); + _t692 = (_t691 != 1); + if (!_t692) goto endif238; { Free(buf); return ""; } - endif251:; - _t702 = (const char*)buf; - return _t702; + endif238:; + _t693 = (const char*)buf; + return _t693; } const char* Aes_GenerateIV(void) { - unsigned int _t703; - int _t706; - const char* _t707; + unsigned int _t694; + int _t697; + const char* _t698; void* buf; - _t703 = (unsigned int)AES_IV_SIZE; - void* _t704; - _t704 = Alloc(_t703); - buf = _t704; - int _t705; - _t705 = bux_random_bytes(buf, AES_IV_SIZE); - _t706 = (_t705 != 1); - if (!_t706) goto endif253; + _t694 = (unsigned int)AES_IV_SIZE; + void* _t695; + _t695 = Alloc(_t694); + buf = _t695; + int _t696; + _t696 = bux_random_bytes(buf, AES_IV_SIZE); + _t697 = (_t696 != 1); + if (!_t697) goto endif240; { Free(buf); return ""; } - endif253:; - _t707 = (const char*)buf; - return _t707; + endif240:; + _t698 = (const char*)buf; + return _t698; } const char* Aes_CbcEncrypt(const char* plain, const char* key, const char* iv) { - int _t709; - void* _t710; + int _t700; + void* _t701; int outlen; outlen = 0; - unsigned int _t708; - _t708 = String_Len(plain); - _t709 = (int)_t708; - _t710 = &outlen; - const char* _t711; - _t711 = bux_aes_256_cbc_encrypt(plain, _t709, key, iv, _t710); - return _t711; + unsigned int _t699; + _t699 = String_Len(plain); + _t700 = (int)_t699; + _t701 = &outlen; + const char* _t702; + _t702 = bux_aes_256_cbc_encrypt(plain, _t700, key, iv, _t701); + return _t702; } const char* Aes_CbcDecrypt(const char* cipher, const char* key, const char* iv) { - int _t713; - void* _t714; + int _t704; + void* _t705; int outlen; outlen = 0; - unsigned int _t712; - _t712 = String_Len(cipher); - _t713 = (int)_t712; - _t714 = &outlen; - const char* _t715; - _t715 = bux_aes_256_cbc_decrypt(cipher, _t713, key, iv, _t714); - return _t715; + unsigned int _t703; + _t703 = String_Len(cipher); + _t704 = (int)_t703; + _t705 = &outlen; + const char* _t706; + _t706 = bux_aes_256_cbc_decrypt(cipher, _t704, key, iv, _t705); + return _t706; } const char* Aes_GcmEncrypt(const char* plain, const char* key, const char* iv, void* tag) { - int _t717; - void* _t718; + int _t708; + void* _t709; int outlen; outlen = 0; - unsigned int _t716; - _t716 = String_Len(plain); - _t717 = (int)_t716; - _t718 = &outlen; - const char* _t719; - _t719 = bux_aes_256_gcm_encrypt(plain, _t717, key, iv, tag, _t718); - return _t719; + unsigned int _t707; + _t707 = String_Len(plain); + _t708 = (int)_t707; + _t709 = &outlen; + const char* _t710; + _t710 = bux_aes_256_gcm_encrypt(plain, _t708, key, iv, tag, _t709); + return _t710; } const char* Aes_GcmDecrypt(const char* cipher, const char* key, const char* iv, const char* tag) { - int _t721; - void* _t722; + int _t712; + void* _t713; int outlen; outlen = 0; - unsigned int _t720; - _t720 = String_Len(cipher); - _t721 = (int)_t720; - _t722 = &outlen; - const char* _t723; - _t723 = bux_aes_256_gcm_decrypt(cipher, _t721, key, iv, tag, _t722); - return _t723; + unsigned int _t711; + _t711 = String_Len(cipher); + _t712 = (int)_t711; + _t713 = &outlen; + const char* _t714; + _t714 = bux_aes_256_gcm_decrypt(cipher, _t712, key, iv, tag, _t713); + return _t714; } const char* Jwt_MakeHeader(JwtAlg alg) { - int _t724; - int _t725; - int _t726; - int _t727; - int _t728; - int _t729; - int _t730; - int _t731; - int _t732; - _t724 = (alg == JwtAlg_HS256); - if (!_t724) goto endif255; + int _t715; + int _t716; + int _t717; + int _t718; + int _t719; + int _t720; + int _t721; + int _t722; + int _t723; + _t715 = (alg == JwtAlg_HS256); + if (!_t715) goto endif242; { return "{\"alg\":\"HS256\",\"typ\":\"JWT\"}"; } - endif255:; - _t725 = (alg == JwtAlg_HS384); - if (!_t725) goto endif257; + endif242:; + _t716 = (alg == JwtAlg_HS384); + if (!_t716) goto endif244; { return "{\"alg\":\"HS384\",\"typ\":\"JWT\"}"; } - endif257:; - _t726 = (alg == JwtAlg_HS512); - if (!_t726) goto endif259; + endif244:; + _t717 = (alg == JwtAlg_HS512); + if (!_t717) goto endif246; { return "{\"alg\":\"HS512\",\"typ\":\"JWT\"}"; } - endif259:; - _t727 = (alg == JwtAlg_RS256); - if (!_t727) goto endif261; + endif246:; + _t718 = (alg == JwtAlg_RS256); + if (!_t718) goto endif248; { return "{\"alg\":\"RS256\",\"typ\":\"JWT\"}"; } - endif261:; - _t728 = (alg == JwtAlg_RS384); - if (!_t728) goto endif263; + endif248:; + _t719 = (alg == JwtAlg_RS384); + if (!_t719) goto endif250; { return "{\"alg\":\"RS384\",\"typ\":\"JWT\"}"; } - endif263:; - _t729 = (alg == JwtAlg_RS512); - if (!_t729) goto endif265; + endif250:; + _t720 = (alg == JwtAlg_RS512); + if (!_t720) goto endif252; { return "{\"alg\":\"RS512\",\"typ\":\"JWT\"}"; } - endif265:; - _t730 = (alg == JwtAlg_ES256); - if (!_t730) goto endif267; + endif252:; + _t721 = (alg == JwtAlg_ES256); + if (!_t721) goto endif254; { return "{\"alg\":\"ES256\",\"typ\":\"JWT\"}"; } - endif267:; - _t731 = (alg == JwtAlg_ES384); - if (!_t731) goto endif269; + endif254:; + _t722 = (alg == JwtAlg_ES384); + if (!_t722) goto endif256; { return "{\"alg\":\"ES384\",\"typ\":\"JWT\"}"; } - endif269:; - _t732 = (alg == JwtAlg_EdDSA); - if (!_t732) goto endif271; + endif256:; + _t723 = (alg == JwtAlg_EdDSA); + if (!_t723) goto endif258; { return "{\"alg\":\"EdDSA\",\"typ\":\"JWT\"}"; } - endif271:; + endif258:; return "{\"alg\":\"none\",\"typ\":\"JWT\"}"; } const char* Jwt_Sign(JwtAlg alg, const char* signingInput, const char* key) { - int _t733; - const char* _t735; - int _t737; - const char* _t739; + int _t724; + const char* _t726; + int _t728; + const char* _t730; + int _t732; + const char* _t734; + int _t736; + int _t739; int _t741; - const char* _t743; - int _t745; - int _t748; - int _t750; - int _t753; - int _t755; - int _t758; - int _t760; - int _t763; - int _t765; - int _t768; - int _t770; - _t733 = (alg == JwtAlg_HS256); - if (!_t733) goto endif273; + int _t744; + int _t746; + int _t749; + int _t751; + int _t754; + int _t756; + int _t759; + int _t761; + _t724 = (alg == JwtAlg_HS256); + if (!_t724) goto endif260; { void* buf; - void* _t734; - _t734 = Alloc(32); - buf = _t734; + void* _t725; + _t725 = Alloc(32); + buf = _t725; Hmac_Sha256Raw(key, signingInput, buf); const char* result; - _t735 = (const char*)buf; - const char* _t736; - _t736 = bux_base64_encode(_t735, 32); - result = _t736; + _t726 = (const char*)buf; + const char* _t727; + _t727 = bux_base64_encode(_t726, 32); + result = _t727; Free(buf); return result; } - endif273:; - _t737 = (alg == JwtAlg_HS384); - if (!_t737) goto endif275; + endif260:; + _t728 = (alg == JwtAlg_HS384); + if (!_t728) goto endif262; { void* buf; - void* _t738; - _t738 = Alloc(48); - buf = _t738; + void* _t729; + _t729 = Alloc(48); + buf = _t729; Hmac_Sha384Raw(key, signingInput, buf); const char* result; - _t739 = (const char*)buf; - const char* _t740; - _t740 = bux_base64_encode(_t739, 48); - result = _t740; + _t730 = (const char*)buf; + const char* _t731; + _t731 = bux_base64_encode(_t730, 48); + result = _t731; Free(buf); return result; } - endif275:; - _t741 = (alg == JwtAlg_HS512); - if (!_t741) goto endif277; + endif262:; + _t732 = (alg == JwtAlg_HS512); + if (!_t732) goto endif264; { void* buf; - void* _t742; - _t742 = Alloc(64); - buf = _t742; + void* _t733; + _t733 = Alloc(64); + buf = _t733; Hmac_Sha512Raw(key, signingInput, buf); const char* result; - _t743 = (const char*)buf; - const char* _t744; - _t744 = bux_base64_encode(_t743, 64); - result = _t744; + _t734 = (const char*)buf; + const char* _t735; + _t735 = bux_base64_encode(_t734, 64); + result = _t735; Free(buf); return result; } - endif277:; - _t745 = (alg == JwtAlg_RS256); - if (!_t745) goto endif279; + endif264:; + _t736 = (alg == JwtAlg_RS256); + if (!_t736) goto endif266; { const char* raw; - const char* _t746; - _t746 = Rsa_SignSha256(key, signingInput); - raw = _t746; - unsigned int _t747; - _t747 = String_Len(raw); - _t748 = (int)_t747; - const char* _t749; - _t749 = bux_base64_encode(raw, _t748); - return _t749; + const char* _t737; + _t737 = Rsa_SignSha256(key, signingInput); + raw = _t737; + unsigned int _t738; + _t738 = String_Len(raw); + _t739 = (int)_t738; + const char* _t740; + _t740 = bux_base64_encode(raw, _t739); + return _t740; } - endif279:; - _t750 = (alg == JwtAlg_RS384); - if (!_t750) goto endif281; + endif266:; + _t741 = (alg == JwtAlg_RS384); + if (!_t741) goto endif268; { const char* raw; - const char* _t751; - _t751 = Rsa_SignSha384(key, signingInput); - raw = _t751; - unsigned int _t752; - _t752 = String_Len(raw); - _t753 = (int)_t752; - const char* _t754; - _t754 = bux_base64_encode(raw, _t753); - return _t754; + const char* _t742; + _t742 = Rsa_SignSha384(key, signingInput); + raw = _t742; + unsigned int _t743; + _t743 = String_Len(raw); + _t744 = (int)_t743; + const char* _t745; + _t745 = bux_base64_encode(raw, _t744); + return _t745; } - endif281:; - _t755 = (alg == JwtAlg_RS512); - if (!_t755) goto endif283; + endif268:; + _t746 = (alg == JwtAlg_RS512); + if (!_t746) goto endif270; { const char* raw; - const char* _t756; - _t756 = Rsa_SignSha512(key, signingInput); - raw = _t756; - unsigned int _t757; - _t757 = String_Len(raw); - _t758 = (int)_t757; - const char* _t759; - _t759 = bux_base64_encode(raw, _t758); - return _t759; + const char* _t747; + _t747 = Rsa_SignSha512(key, signingInput); + raw = _t747; + unsigned int _t748; + _t748 = String_Len(raw); + _t749 = (int)_t748; + const char* _t750; + _t750 = bux_base64_encode(raw, _t749); + return _t750; } - endif283:; - _t760 = (alg == JwtAlg_ES256); - if (!_t760) goto endif285; + endif270:; + _t751 = (alg == JwtAlg_ES256); + if (!_t751) goto endif272; { const char* raw; - const char* _t761; - _t761 = Ecdsa_SignP256(key, signingInput); - raw = _t761; - unsigned int _t762; - _t762 = String_Len(raw); - _t763 = (int)_t762; - const char* _t764; - _t764 = bux_base64_encode(raw, _t763); - return _t764; + const char* _t752; + _t752 = Ecdsa_SignP256(key, signingInput); + raw = _t752; + unsigned int _t753; + _t753 = String_Len(raw); + _t754 = (int)_t753; + const char* _t755; + _t755 = bux_base64_encode(raw, _t754); + return _t755; } - endif285:; - _t765 = (alg == JwtAlg_ES384); - if (!_t765) goto endif287; + endif272:; + _t756 = (alg == JwtAlg_ES384); + if (!_t756) goto endif274; { const char* raw; - const char* _t766; - _t766 = Ecdsa_SignP384(key, signingInput); - raw = _t766; - unsigned int _t767; - _t767 = String_Len(raw); - _t768 = (int)_t767; - const char* _t769; - _t769 = bux_base64_encode(raw, _t768); - return _t769; + const char* _t757; + _t757 = Ecdsa_SignP384(key, signingInput); + raw = _t757; + unsigned int _t758; + _t758 = String_Len(raw); + _t759 = (int)_t758; + const char* _t760; + _t760 = bux_base64_encode(raw, _t759); + return _t760; } - endif287:; - _t770 = (alg == JwtAlg_EdDSA); - if (!_t770) goto endif289; + endif274:; + _t761 = (alg == JwtAlg_EdDSA); + if (!_t761) goto endif276; { - const char* _t771; - _t771 = Ed25519_Sign(key, signingInput); - return _t771; + const char* _t762; + _t762 = Ed25519_Sign(key, signingInput); + return _t762; } - endif289:; + endif276:; return ""; } bool Jwt_Verify(JwtAlg alg, const char* signingInput, const char* signatureB64, const char* key) { - int _t772; - const char* _t774; - int _t777; - const char* _t779; + int _t763; + const char* _t765; + int _t768; + const char* _t770; + int _t773; + const char* _t775; + int _t778; + int _t780; int _t782; - const char* _t784; - int _t787; - int _t789; - int _t791; - int _t793; - int _t795; - int _t797; - _t772 = (alg == JwtAlg_HS256); - if (!_t772) goto endif291; + int _t784; + int _t786; + int _t788; + _t763 = (alg == JwtAlg_HS256); + if (!_t763) goto endif278; { void* expectBuf; - void* _t773; - _t773 = Alloc(32); - expectBuf = _t773; + void* _t764; + _t764 = Alloc(32); + expectBuf = _t764; Hmac_Sha256Raw(key, signingInput, expectBuf); const char* expectB64; - _t774 = (const char*)expectBuf; - const char* _t775; - _t775 = bux_base64_encode(_t774, 32); - expectB64 = _t775; + _t765 = (const char*)expectBuf; + const char* _t766; + _t766 = bux_base64_encode(_t765, 32); + expectB64 = _t766; Free(expectBuf); - bool _t776; - _t776 = String_Eq(expectB64, signatureB64); - return _t776; + bool _t767; + _t767 = String_Eq(expectB64, signatureB64); + return _t767; } - endif291:; - _t777 = (alg == JwtAlg_HS384); - if (!_t777) goto endif293; + endif278:; + _t768 = (alg == JwtAlg_HS384); + if (!_t768) goto endif280; { void* expectBuf; - void* _t778; - _t778 = Alloc(48); - expectBuf = _t778; + void* _t769; + _t769 = Alloc(48); + expectBuf = _t769; Hmac_Sha384Raw(key, signingInput, expectBuf); const char* expectB64; - _t779 = (const char*)expectBuf; - const char* _t780; - _t780 = bux_base64_encode(_t779, 48); - expectB64 = _t780; + _t770 = (const char*)expectBuf; + const char* _t771; + _t771 = bux_base64_encode(_t770, 48); + expectB64 = _t771; Free(expectBuf); - bool _t781; - _t781 = String_Eq(expectB64, signatureB64); - return _t781; + bool _t772; + _t772 = String_Eq(expectB64, signatureB64); + return _t772; } - endif293:; - _t782 = (alg == JwtAlg_HS512); - if (!_t782) goto endif295; + endif280:; + _t773 = (alg == JwtAlg_HS512); + if (!_t773) goto endif282; { void* expectBuf; - void* _t783; - _t783 = Alloc(64); - expectBuf = _t783; + void* _t774; + _t774 = Alloc(64); + expectBuf = _t774; Hmac_Sha512Raw(key, signingInput, expectBuf); const char* expectB64; - _t784 = (const char*)expectBuf; - const char* _t785; - _t785 = bux_base64_encode(_t784, 64); - expectB64 = _t785; + _t775 = (const char*)expectBuf; + const char* _t776; + _t776 = bux_base64_encode(_t775, 64); + expectB64 = _t776; Free(expectBuf); - bool _t786; - _t786 = String_Eq(expectB64, signatureB64); - return _t786; + bool _t777; + _t777 = String_Eq(expectB64, signatureB64); + return _t777; } - endif295:; - _t787 = (alg == JwtAlg_RS256); - if (!_t787) goto endif297; + endif282:; + _t778 = (alg == JwtAlg_RS256); + if (!_t778) goto endif284; { - bool _t788; - _t788 = Rsa_VerifySha256(key, signingInput, signatureB64); - return _t788; + bool _t779; + _t779 = Rsa_VerifySha256(key, signingInput, signatureB64); + return _t779; } - endif297:; - _t789 = (alg == JwtAlg_RS384); - if (!_t789) goto endif299; + endif284:; + _t780 = (alg == JwtAlg_RS384); + if (!_t780) goto endif286; { - bool _t790; - _t790 = Rsa_VerifySha384(key, signingInput, signatureB64); - return _t790; + bool _t781; + _t781 = Rsa_VerifySha384(key, signingInput, signatureB64); + return _t781; } - endif299:; - _t791 = (alg == JwtAlg_RS512); - if (!_t791) goto endif301; + endif286:; + _t782 = (alg == JwtAlg_RS512); + if (!_t782) goto endif288; { - bool _t792; - _t792 = Rsa_VerifySha512(key, signingInput, signatureB64); - return _t792; + bool _t783; + _t783 = Rsa_VerifySha512(key, signingInput, signatureB64); + return _t783; } - endif301:; - _t793 = (alg == JwtAlg_ES256); - if (!_t793) goto endif303; + endif288:; + _t784 = (alg == JwtAlg_ES256); + if (!_t784) goto endif290; { - bool _t794; - _t794 = Ecdsa_VerifyP256(key, signingInput, signatureB64); - return _t794; + bool _t785; + _t785 = Ecdsa_VerifyP256(key, signingInput, signatureB64); + return _t785; } - endif303:; - _t795 = (alg == JwtAlg_ES384); - if (!_t795) goto endif305; + endif290:; + _t786 = (alg == JwtAlg_ES384); + if (!_t786) goto endif292; { - bool _t796; - _t796 = Ecdsa_VerifyP384(key, signingInput, signatureB64); - return _t796; + bool _t787; + _t787 = Ecdsa_VerifyP384(key, signingInput, signatureB64); + return _t787; } - endif305:; - _t797 = (alg == JwtAlg_EdDSA); - if (!_t797) goto endif307; + endif292:; + _t788 = (alg == JwtAlg_EdDSA); + if (!_t788) goto endif294; { - bool _t798; - _t798 = Ed25519_Verify(key, signatureB64, signingInput); - return _t798; + bool _t789; + _t789 = Ed25519_Verify(key, signatureB64, signingInput); + return _t789; } - endif307:; + endif294:; return 0; } const char* Jwt_Encode(const char* headerJson, const char* payloadJson, JwtAlg alg, const char* key) { const char* headerB64; - const char* _t799; - _t799 = Base64URL_Encode(headerJson); - headerB64 = _t799; + const char* _t790; + _t790 = Base64URL_Encode(headerJson); + headerB64 = _t790; const char* payloadB64; - const char* _t800; - _t800 = Base64URL_Encode(payloadJson); - payloadB64 = _t800; + const char* _t791; + _t791 = Base64URL_Encode(payloadJson); + payloadB64 = _t791; const char* signingInput; - const char* _t801; - _t801 = String_Concat(headerB64, "."); - signingInput = _t801; + const char* _t792; + _t792 = String_Concat(headerB64, "."); + signingInput = _t792; const char* signingInputFull; - const char* _t802; - _t802 = String_Concat(signingInput, payloadB64); - signingInputFull = _t802; + const char* _t793; + _t793 = String_Concat(signingInput, payloadB64); + signingInputFull = _t793; const char* sigB64; - const char* _t803; - _t803 = Jwt_Sign(alg, signingInputFull, key); - sigB64 = _t803; + const char* _t794; + _t794 = Jwt_Sign(alg, signingInputFull, key); + sigB64 = _t794; const char* part1; - const char* _t804; - _t804 = String_Concat(signingInputFull, "."); - part1 = _t804; - const char* _t805; - _t805 = String_Concat(part1, sigB64); - return _t805; + const char* _t795; + _t795 = String_Concat(signingInputFull, "."); + part1 = _t795; + const char* _t796; + _t796 = String_Concat(part1, sigB64); + return _t796; } bool Jwt_Decode(const char* token, JwtAlg alg, const char* key, const char** headerOut, const char** payloadOut) { - int _t807; - int _t814; + int _t798; + int _t805; unsigned int partCount; - unsigned int _t806; - _t806 = bux_str_split_count(token, "."); - partCount = _t806; - _t807 = (partCount != 3); - if (!_t807) goto endif309; + unsigned int _t797; + _t797 = bux_str_split_count(token, "."); + partCount = _t797; + _t798 = (partCount != 3); + if (!_t798) goto endif296; { return 0; } - endif309:; + endif296:; const char* headerB64; - const char* _t808; - _t808 = bux_str_split_part(token, ".", 0); - headerB64 = _t808; + const char* _t799; + _t799 = bux_str_split_part(token, ".", 0); + headerB64 = _t799; const char* payloadB64; - const char* _t809; - _t809 = bux_str_split_part(token, ".", 1); - payloadB64 = _t809; + const char* _t800; + _t800 = bux_str_split_part(token, ".", 1); + payloadB64 = _t800; const char* sigB64; - const char* _t810; - _t810 = bux_str_split_part(token, ".", 2); - sigB64 = _t810; + const char* _t801; + _t801 = bux_str_split_part(token, ".", 2); + sigB64 = _t801; const char* input; - const char* _t811; - _t811 = String_Concat(headerB64, "."); - input = _t811; + const char* _t802; + _t802 = String_Concat(headerB64, "."); + input = _t802; const char* signingInput; - const char* _t812; - _t812 = String_Concat(input, payloadB64); - signingInput = _t812; - bool _t813; - _t813 = Jwt_Verify(alg, signingInput, sigB64, key); - _t814 = !_t813; - if (!_t814) goto endif311; + const char* _t803; + _t803 = String_Concat(input, payloadB64); + signingInput = _t803; + bool _t804; + _t804 = Jwt_Verify(alg, signingInput, sigB64, key); + _t805 = !_t804; + if (!_t805) goto endif298; { return 0; } - endif311:; - const char* _t815; - _t815 = Base64URL_Decode(headerB64); - headerOut[0] = _t815; - const char* _t816; - _t816 = Base64URL_Decode(payloadB64); - payloadOut[0] = _t816; + endif298:; + const char* _t806; + _t806 = Base64URL_Decode(headerB64); + headerOut[0] = _t806; + const char* _t807; + _t807 = Base64URL_Decode(payloadB64); + payloadOut[0] = _t807; return 1; } const char* Jwt_EncodeHS256(const char* payloadJson, const char* secret) { const char* header; - const char* _t817; - _t817 = Jwt_MakeHeader(JwtAlg_HS256); - header = _t817; - const char* _t818; - _t818 = Jwt_Encode(header, payloadJson, JwtAlg_HS256, secret); - return _t818; + const char* _t808; + _t808 = Jwt_MakeHeader(JwtAlg_HS256); + header = _t808; + const char* _t809; + _t809 = Jwt_Encode(header, payloadJson, JwtAlg_HS256, secret); + return _t809; } const char* Jwt_EncodeHS384(const char* payloadJson, const char* secret) { const char* header; - const char* _t819; - _t819 = Jwt_MakeHeader(JwtAlg_HS384); - header = _t819; - const char* _t820; - _t820 = Jwt_Encode(header, payloadJson, JwtAlg_HS384, secret); - return _t820; + const char* _t810; + _t810 = Jwt_MakeHeader(JwtAlg_HS384); + header = _t810; + const char* _t811; + _t811 = Jwt_Encode(header, payloadJson, JwtAlg_HS384, secret); + return _t811; } const char* Jwt_EncodeHS512(const char* payloadJson, const char* secret) { const char* header; - const char* _t821; - _t821 = Jwt_MakeHeader(JwtAlg_HS512); - header = _t821; - const char* _t822; - _t822 = Jwt_Encode(header, payloadJson, JwtAlg_HS512, secret); - return _t822; + const char* _t812; + _t812 = Jwt_MakeHeader(JwtAlg_HS512); + header = _t812; + const char* _t813; + _t813 = Jwt_Encode(header, payloadJson, JwtAlg_HS512, secret); + return _t813; } const char* Jwt_EncodeRS256(const char* payloadJson, const char* pemPrivateKey) { const char* header; - const char* _t823; - _t823 = Jwt_MakeHeader(JwtAlg_RS256); - header = _t823; - const char* _t824; - _t824 = Jwt_Encode(header, payloadJson, JwtAlg_RS256, pemPrivateKey); - return _t824; + const char* _t814; + _t814 = Jwt_MakeHeader(JwtAlg_RS256); + header = _t814; + const char* _t815; + _t815 = Jwt_Encode(header, payloadJson, JwtAlg_RS256, pemPrivateKey); + return _t815; } const char* Jwt_EncodeES256(const char* payloadJson, const char* pemPrivateKey) { const char* header; - const char* _t825; - _t825 = Jwt_MakeHeader(JwtAlg_ES256); - header = _t825; - const char* _t826; - _t826 = Jwt_Encode(header, payloadJson, JwtAlg_ES256, pemPrivateKey); - return _t826; + const char* _t816; + _t816 = Jwt_MakeHeader(JwtAlg_ES256); + header = _t816; + const char* _t817; + _t817 = Jwt_Encode(header, payloadJson, JwtAlg_ES256, pemPrivateKey); + return _t817; } const char* Jwt_EncodeEdDSA(const char* payloadJson, const char* rawPrivKey) { const char* header; - const char* _t827; - _t827 = Jwt_MakeHeader(JwtAlg_EdDSA); - header = _t827; - const char* _t828; - _t828 = Jwt_Encode(header, payloadJson, JwtAlg_EdDSA, rawPrivKey); - return _t828; + const char* _t818; + _t818 = Jwt_MakeHeader(JwtAlg_EdDSA); + header = _t818; + const char* _t819; + _t819 = Jwt_Encode(header, payloadJson, JwtAlg_EdDSA, rawPrivKey); + return _t819; } const char* Ecdsa_SignP256(const char* pemPrivateKey, const char* data) { - int _t830; - int _t832; - void* _t833; + int _t821; + int _t823; + void* _t824; int siglen; siglen = 0; - unsigned int _t829; - _t829 = String_Len(pemPrivateKey); - _t830 = (int)_t829; - unsigned int _t831; - _t831 = String_Len(data); - _t832 = (int)_t831; - _t833 = &siglen; - const char* _t834; - _t834 = bux_ecdsa_sign_p256(pemPrivateKey, _t830, data, _t832, _t833); - return _t834; + unsigned int _t820; + _t820 = String_Len(pemPrivateKey); + _t821 = (int)_t820; + unsigned int _t822; + _t822 = String_Len(data); + _t823 = (int)_t822; + _t824 = &siglen; + const char* _t825; + _t825 = bux_ecdsa_sign_p256(pemPrivateKey, _t821, data, _t823, _t824); + return _t825; } const char* Ecdsa_SignP256Base64(const char* pemPrivateKey, const char* data) { - int _t837; + int _t828; const char* raw; - const char* _t835; - _t835 = Ecdsa_SignP256(pemPrivateKey, data); - raw = _t835; - unsigned int _t836; - _t836 = String_Len(raw); - _t837 = (int)_t836; - const char* _t838; - _t838 = bux_base64_encode(raw, _t837); - return _t838; + const char* _t826; + _t826 = Ecdsa_SignP256(pemPrivateKey, data); + raw = _t826; + unsigned int _t827; + _t827 = String_Len(raw); + _t828 = (int)_t827; + const char* _t829; + _t829 = bux_base64_encode(raw, _t828); + return _t829; } bool Ecdsa_VerifyP256(const char* pemPublicKey, const char* data, const char* signature) { - int _t840; - int _t842; - int _t844; - int _t846; + int _t831; + int _t833; + int _t835; + int _t837; int r; - unsigned int _t839; - _t839 = String_Len(pemPublicKey); - _t840 = (int)_t839; - unsigned int _t841; - _t841 = String_Len(data); - _t842 = (int)_t841; - unsigned int _t843; - _t843 = String_Len(signature); - _t844 = (int)_t843; - int _t845; - _t845 = bux_ecdsa_verify_p256(pemPublicKey, _t840, data, _t842, signature, _t844); - r = _t845; - _t846 = (r == 1); - return _t846; + unsigned int _t830; + _t830 = String_Len(pemPublicKey); + _t831 = (int)_t830; + unsigned int _t832; + _t832 = String_Len(data); + _t833 = (int)_t832; + unsigned int _t834; + _t834 = String_Len(signature); + _t835 = (int)_t834; + int _t836; + _t836 = bux_ecdsa_verify_p256(pemPublicKey, _t831, data, _t833, signature, _t835); + r = _t836; + _t837 = (r == 1); + return _t837; } bool Ecdsa_VerifyP256Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t848; - void* _t849; + int _t839; + void* _t840; int outlen; outlen = 0; const char* sig; - unsigned int _t847; - _t847 = String_Len(signatureB64); - _t848 = (int)_t847; - _t849 = &outlen; - const char* _t850; - _t850 = bux_base64_decode(signatureB64, _t848, _t849); - sig = _t850; - bool _t851; - _t851 = Ecdsa_VerifyP256(pemPublicKey, data, sig); - return _t851; + unsigned int _t838; + _t838 = String_Len(signatureB64); + _t839 = (int)_t838; + _t840 = &outlen; + const char* _t841; + _t841 = bux_base64_decode(signatureB64, _t839, _t840); + sig = _t841; + bool _t842; + _t842 = Ecdsa_VerifyP256(pemPublicKey, data, sig); + return _t842; } const char* Ecdsa_SignP384(const char* pemPrivateKey, const char* data) { - int _t853; - int _t855; - void* _t856; + int _t844; + int _t846; + void* _t847; int siglen; siglen = 0; - unsigned int _t852; - _t852 = String_Len(pemPrivateKey); - _t853 = (int)_t852; - unsigned int _t854; - _t854 = String_Len(data); - _t855 = (int)_t854; - _t856 = &siglen; - const char* _t857; - _t857 = bux_ecdsa_sign_p384(pemPrivateKey, _t853, data, _t855, _t856); - return _t857; + unsigned int _t843; + _t843 = String_Len(pemPrivateKey); + _t844 = (int)_t843; + unsigned int _t845; + _t845 = String_Len(data); + _t846 = (int)_t845; + _t847 = &siglen; + const char* _t848; + _t848 = bux_ecdsa_sign_p384(pemPrivateKey, _t844, data, _t846, _t847); + return _t848; } const char* Ecdsa_SignP384Base64(const char* pemPrivateKey, const char* data) { - int _t860; + int _t851; const char* raw; - const char* _t858; - _t858 = Ecdsa_SignP384(pemPrivateKey, data); - raw = _t858; - unsigned int _t859; - _t859 = String_Len(raw); - _t860 = (int)_t859; - const char* _t861; - _t861 = bux_base64_encode(raw, _t860); - return _t861; + const char* _t849; + _t849 = Ecdsa_SignP384(pemPrivateKey, data); + raw = _t849; + unsigned int _t850; + _t850 = String_Len(raw); + _t851 = (int)_t850; + const char* _t852; + _t852 = bux_base64_encode(raw, _t851); + return _t852; } bool Ecdsa_VerifyP384(const char* pemPublicKey, const char* data, const char* signature) { - int _t863; - int _t865; - int _t867; - int _t869; + int _t854; + int _t856; + int _t858; + int _t860; int r; - unsigned int _t862; - _t862 = String_Len(pemPublicKey); - _t863 = (int)_t862; - unsigned int _t864; - _t864 = String_Len(data); - _t865 = (int)_t864; - unsigned int _t866; - _t866 = String_Len(signature); - _t867 = (int)_t866; - int _t868; - _t868 = bux_ecdsa_verify_p384(pemPublicKey, _t863, data, _t865, signature, _t867); - r = _t868; - _t869 = (r == 1); - return _t869; + unsigned int _t853; + _t853 = String_Len(pemPublicKey); + _t854 = (int)_t853; + unsigned int _t855; + _t855 = String_Len(data); + _t856 = (int)_t855; + unsigned int _t857; + _t857 = String_Len(signature); + _t858 = (int)_t857; + int _t859; + _t859 = bux_ecdsa_verify_p384(pemPublicKey, _t854, data, _t856, signature, _t858); + r = _t859; + _t860 = (r == 1); + return _t860; } bool Ecdsa_VerifyP384Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t871; - void* _t872; + int _t862; + void* _t863; int outlen; outlen = 0; const char* sig; - unsigned int _t870; - _t870 = String_Len(signatureB64); - _t871 = (int)_t870; - _t872 = &outlen; - const char* _t873; - _t873 = bux_base64_decode(signatureB64, _t871, _t872); - sig = _t873; - bool _t874; - _t874 = Ecdsa_VerifyP384(pemPublicKey, data, sig); - return _t874; + unsigned int _t861; + _t861 = String_Len(signatureB64); + _t862 = (int)_t861; + _t863 = &outlen; + const char* _t864; + _t864 = bux_base64_decode(signatureB64, _t862, _t863); + sig = _t864; + bool _t865; + _t865 = Ecdsa_VerifyP384(pemPublicKey, data, sig); + return _t865; } bool Ed25519_Keypair(void* pubKey, void* privKey) { - int _t876; + int _t867; int r; - int _t875; - _t875 = bux_ed25519_keypair(pubKey, privKey); - r = _t875; - _t876 = (r == 1); - return _t876; + int _t866; + _t866 = bux_ed25519_keypair(pubKey, privKey); + r = _t866; + _t867 = (r == 1); + return _t867; } const char* Ed25519_KeypairBase64(void) { - unsigned int _t877; - unsigned int _t879; - int _t882; - const char* _t883; - const char* _t885; + unsigned int _t868; + unsigned int _t870; + int _t873; + const char* _t874; + const char* _t876; void* pubBuf; - _t877 = (unsigned int)ED25519_PUBKEY_SIZE; - void* _t878; - _t878 = Alloc(_t877); - pubBuf = _t878; + _t868 = (unsigned int)ED25519_PUBKEY_SIZE; + void* _t869; + _t869 = Alloc(_t868); + pubBuf = _t869; void* priv; - _t879 = (unsigned int)ED25519_PRIVKEY_SIZE; - void* _t880; - _t880 = Alloc(_t879); - priv = _t880; - int _t881; - _t881 = bux_ed25519_keypair(pubBuf, priv); - _t882 = (_t881 != 1); - if (!_t882) goto endif313; + _t870 = (unsigned int)ED25519_PRIVKEY_SIZE; + void* _t871; + _t871 = Alloc(_t870); + priv = _t871; + int _t872; + _t872 = bux_ed25519_keypair(pubBuf, priv); + _t873 = (_t872 != 1); + if (!_t873) goto endif300; { Free(pubBuf); Free(priv); return ""; } - endif313:; + endif300:; const char* pubB64; - _t883 = (const char*)pubBuf; - const char* _t884; - _t884 = bux_base64_encode(_t883, ED25519_PUBKEY_SIZE); - pubB64 = _t884; + _t874 = (const char*)pubBuf; + const char* _t875; + _t875 = bux_base64_encode(_t874, ED25519_PUBKEY_SIZE); + pubB64 = _t875; const char* privB64; - _t885 = (const char*)priv; - const char* _t886; - _t886 = bux_base64_encode(_t885, ED25519_PRIVKEY_SIZE); - privB64 = _t886; + _t876 = (const char*)priv; + const char* _t877; + _t877 = bux_base64_encode(_t876, ED25519_PRIVKEY_SIZE); + privB64 = _t877; Free(pubBuf); Free(priv); const char* pair; - const char* _t887; - _t887 = String_Concat(pubB64, ":"); - pair = _t887; - const char* _t888; - _t888 = String_Concat(pair, privB64); - return _t888; + const char* _t878; + _t878 = String_Concat(pubB64, ":"); + pair = _t878; + const char* _t879; + _t879 = String_Concat(pair, privB64); + return _t879; } const char* Ed25519_Sign(const char* privKey, const char* data) { - unsigned int _t889; - int _t892; - int _t894; - const char* _t895; + unsigned int _t880; + int _t883; + int _t885; + const char* _t886; void* sig; - _t889 = (unsigned int)ED25519_SIG_SIZE; - void* _t890; - _t890 = Alloc(_t889); - sig = _t890; - unsigned int _t891; - _t891 = String_Len(data); - _t892 = (int)_t891; - int _t893; - _t893 = bux_ed25519_sign(privKey, data, _t892, sig); - _t894 = (_t893 != 1); - if (!_t894) goto endif315; + _t880 = (unsigned int)ED25519_SIG_SIZE; + void* _t881; + _t881 = Alloc(_t880); + sig = _t881; + unsigned int _t882; + _t882 = String_Len(data); + _t883 = (int)_t882; + int _t884; + _t884 = bux_ed25519_sign(privKey, data, _t883, sig); + _t885 = (_t884 != 1); + if (!_t885) goto endif302; { Free(sig); return ""; } - endif315:; - _t895 = (const char*)sig; - return _t895; + endif302:; + _t886 = (const char*)sig; + return _t886; } const char* Ed25519_SignBase64(const char* privKey, const char* data) { - int _t898; + int _t889; const char* sig; - const char* _t896; - _t896 = Ed25519_Sign(privKey, data); - sig = _t896; - unsigned int _t897; - _t897 = String_Len(sig); - _t898 = (_t897 == 0); - if (!_t898) goto endif317; + const char* _t887; + _t887 = Ed25519_Sign(privKey, data); + sig = _t887; + unsigned int _t888; + _t888 = String_Len(sig); + _t889 = (_t888 == 0); + if (!_t889) goto endif304; { return ""; } - endif317:; - const char* _t899; - _t899 = bux_base64_encode(sig, ED25519_SIG_SIZE); - return _t899; + endif304:; + const char* _t890; + _t890 = bux_base64_encode(sig, ED25519_SIG_SIZE); + return _t890; } bool Ed25519_Verify(const char* pubKey, const char* signature, const char* data) { - int _t901; - int _t903; + int _t892; + int _t894; int r; - unsigned int _t900; - _t900 = String_Len(data); - _t901 = (int)_t900; - int _t902; - _t902 = bux_ed25519_verify(pubKey, signature, data, _t901); - r = _t902; - _t903 = (r == 1); - return _t903; + unsigned int _t891; + _t891 = String_Len(data); + _t892 = (int)_t891; + int _t893; + _t893 = bux_ed25519_verify(pubKey, signature, data, _t892); + r = _t893; + _t894 = (r == 1); + return _t894; } bool Ed25519_VerifyBase64(const char* pubKey, const char* signatureB64, const char* data) { - int _t905; - void* _t906; - int _t908; + int _t896; + void* _t897; + int _t899; int outlen; outlen = 0; const char* sig; - unsigned int _t904; - _t904 = String_Len(signatureB64); - _t905 = (int)_t904; - _t906 = &outlen; - const char* _t907; - _t907 = bux_base64_decode(signatureB64, _t905, _t906); - sig = _t907; - _t908 = (outlen != ED25519_SIG_SIZE); - if (!_t908) goto endif319; + unsigned int _t895; + _t895 = String_Len(signatureB64); + _t896 = (int)_t895; + _t897 = &outlen; + const char* _t898; + _t898 = bux_base64_decode(signatureB64, _t896, _t897); + sig = _t898; + _t899 = (outlen != ED25519_SIG_SIZE); + if (!_t899) goto endif306; { return 0; } - endif319:; - bool _t909; - _t909 = Ed25519_Verify(pubKey, sig, data); - return _t909; + endif306:; + bool _t900; + _t900 = Ed25519_Verify(pubKey, sig, data); + return _t900; } const char* Rsa_SignSha256(const char* pemPrivateKey, const char* data) { - int _t911; - int _t913; - void* _t914; + int _t902; + int _t904; + void* _t905; int siglen; siglen = 0; - unsigned int _t910; - _t910 = String_Len(pemPrivateKey); - _t911 = (int)_t910; - unsigned int _t912; - _t912 = String_Len(data); - _t913 = (int)_t912; - _t914 = &siglen; - const char* _t915; - _t915 = bux_rsa_sign_sha256(pemPrivateKey, _t911, data, _t913, _t914); - return _t915; + unsigned int _t901; + _t901 = String_Len(pemPrivateKey); + _t902 = (int)_t901; + unsigned int _t903; + _t903 = String_Len(data); + _t904 = (int)_t903; + _t905 = &siglen; + const char* _t906; + _t906 = bux_rsa_sign_sha256(pemPrivateKey, _t902, data, _t904, _t905); + return _t906; } const char* Rsa_SignSha384(const char* pemPrivateKey, const char* data) { - int _t917; - int _t919; - void* _t920; + int _t908; + int _t910; + void* _t911; int siglen; siglen = 0; - unsigned int _t916; - _t916 = String_Len(pemPrivateKey); - _t917 = (int)_t916; - unsigned int _t918; - _t918 = String_Len(data); - _t919 = (int)_t918; - _t920 = &siglen; - const char* _t921; - _t921 = bux_rsa_sign_sha384(pemPrivateKey, _t917, data, _t919, _t920); - return _t921; + unsigned int _t907; + _t907 = String_Len(pemPrivateKey); + _t908 = (int)_t907; + unsigned int _t909; + _t909 = String_Len(data); + _t910 = (int)_t909; + _t911 = &siglen; + const char* _t912; + _t912 = bux_rsa_sign_sha384(pemPrivateKey, _t908, data, _t910, _t911); + return _t912; } const char* Rsa_SignSha512(const char* pemPrivateKey, const char* data) { - int _t923; - int _t925; - void* _t926; + int _t914; + int _t916; + void* _t917; int siglen; siglen = 0; - unsigned int _t922; - _t922 = String_Len(pemPrivateKey); - _t923 = (int)_t922; - unsigned int _t924; - _t924 = String_Len(data); - _t925 = (int)_t924; - _t926 = &siglen; - const char* _t927; - _t927 = bux_rsa_sign_sha512(pemPrivateKey, _t923, data, _t925, _t926); - return _t927; + unsigned int _t913; + _t913 = String_Len(pemPrivateKey); + _t914 = (int)_t913; + unsigned int _t915; + _t915 = String_Len(data); + _t916 = (int)_t915; + _t917 = &siglen; + const char* _t918; + _t918 = bux_rsa_sign_sha512(pemPrivateKey, _t914, data, _t916, _t917); + return _t918; } const char* Rsa_SignSha256Base64(const char* pemPrivateKey, const char* data) { - int _t930; + int _t921; const char* raw; - const char* _t928; - _t928 = Rsa_SignSha256(pemPrivateKey, data); - raw = _t928; - unsigned int _t929; - _t929 = String_Len(raw); - _t930 = (int)_t929; - const char* _t931; - _t931 = bux_base64_encode(raw, _t930); - return _t931; + const char* _t919; + _t919 = Rsa_SignSha256(pemPrivateKey, data); + raw = _t919; + unsigned int _t920; + _t920 = String_Len(raw); + _t921 = (int)_t920; + const char* _t922; + _t922 = bux_base64_encode(raw, _t921); + return _t922; } const char* Rsa_SignSha384Base64(const char* pemPrivateKey, const char* data) { - int _t934; + int _t925; const char* raw; - const char* _t932; - _t932 = Rsa_SignSha384(pemPrivateKey, data); - raw = _t932; - unsigned int _t933; - _t933 = String_Len(raw); - _t934 = (int)_t933; - const char* _t935; - _t935 = bux_base64_encode(raw, _t934); - return _t935; + const char* _t923; + _t923 = Rsa_SignSha384(pemPrivateKey, data); + raw = _t923; + unsigned int _t924; + _t924 = String_Len(raw); + _t925 = (int)_t924; + const char* _t926; + _t926 = bux_base64_encode(raw, _t925); + return _t926; } const char* Rsa_SignSha512Base64(const char* pemPrivateKey, const char* data) { - int _t938; + int _t929; const char* raw; - const char* _t936; - _t936 = Rsa_SignSha512(pemPrivateKey, data); - raw = _t936; - unsigned int _t937; - _t937 = String_Len(raw); - _t938 = (int)_t937; - const char* _t939; - _t939 = bux_base64_encode(raw, _t938); - return _t939; + const char* _t927; + _t927 = Rsa_SignSha512(pemPrivateKey, data); + raw = _t927; + unsigned int _t928; + _t928 = String_Len(raw); + _t929 = (int)_t928; + const char* _t930; + _t930 = bux_base64_encode(raw, _t929); + return _t930; } bool Rsa_VerifySha256(const char* pemPublicKey, const char* data, const char* signature) { - int _t941; - int _t943; - int _t945; - int _t947; + int _t932; + int _t934; + int _t936; + int _t938; int r; - unsigned int _t940; - _t940 = String_Len(pemPublicKey); - _t941 = (int)_t940; - unsigned int _t942; - _t942 = String_Len(data); - _t943 = (int)_t942; - unsigned int _t944; - _t944 = String_Len(signature); - _t945 = (int)_t944; - int _t946; - _t946 = bux_rsa_verify_sha256(pemPublicKey, _t941, data, _t943, signature, _t945); - r = _t946; - _t947 = (r == 1); - return _t947; + unsigned int _t931; + _t931 = String_Len(pemPublicKey); + _t932 = (int)_t931; + unsigned int _t933; + _t933 = String_Len(data); + _t934 = (int)_t933; + unsigned int _t935; + _t935 = String_Len(signature); + _t936 = (int)_t935; + int _t937; + _t937 = bux_rsa_verify_sha256(pemPublicKey, _t932, data, _t934, signature, _t936); + r = _t937; + _t938 = (r == 1); + return _t938; } bool Rsa_VerifySha384(const char* pemPublicKey, const char* data, const char* signature) { - int _t949; - int _t951; - int _t953; - int _t955; + int _t940; + int _t942; + int _t944; + int _t946; int r; - unsigned int _t948; - _t948 = String_Len(pemPublicKey); - _t949 = (int)_t948; - unsigned int _t950; - _t950 = String_Len(data); - _t951 = (int)_t950; - unsigned int _t952; - _t952 = String_Len(signature); - _t953 = (int)_t952; - int _t954; - _t954 = bux_rsa_verify_sha384(pemPublicKey, _t949, data, _t951, signature, _t953); - r = _t954; - _t955 = (r == 1); - return _t955; + unsigned int _t939; + _t939 = String_Len(pemPublicKey); + _t940 = (int)_t939; + unsigned int _t941; + _t941 = String_Len(data); + _t942 = (int)_t941; + unsigned int _t943; + _t943 = String_Len(signature); + _t944 = (int)_t943; + int _t945; + _t945 = bux_rsa_verify_sha384(pemPublicKey, _t940, data, _t942, signature, _t944); + r = _t945; + _t946 = (r == 1); + return _t946; } bool Rsa_VerifySha512(const char* pemPublicKey, const char* data, const char* signature) { - int _t957; - int _t959; - int _t961; - int _t963; + int _t948; + int _t950; + int _t952; + int _t954; int r; - unsigned int _t956; - _t956 = String_Len(pemPublicKey); - _t957 = (int)_t956; - unsigned int _t958; - _t958 = String_Len(data); - _t959 = (int)_t958; - unsigned int _t960; - _t960 = String_Len(signature); - _t961 = (int)_t960; - int _t962; - _t962 = bux_rsa_verify_sha512(pemPublicKey, _t957, data, _t959, signature, _t961); - r = _t962; - _t963 = (r == 1); - return _t963; + unsigned int _t947; + _t947 = String_Len(pemPublicKey); + _t948 = (int)_t947; + unsigned int _t949; + _t949 = String_Len(data); + _t950 = (int)_t949; + unsigned int _t951; + _t951 = String_Len(signature); + _t952 = (int)_t951; + int _t953; + _t953 = bux_rsa_verify_sha512(pemPublicKey, _t948, data, _t950, signature, _t952); + r = _t953; + _t954 = (r == 1); + return _t954; } bool Rsa_VerifySha256Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t965; - void* _t966; + int _t956; + void* _t957; int outlen; outlen = 0; const char* sig; - unsigned int _t964; - _t964 = String_Len(signatureB64); - _t965 = (int)_t964; - _t966 = &outlen; - const char* _t967; - _t967 = bux_base64_decode(signatureB64, _t965, _t966); - sig = _t967; - bool _t968; - _t968 = Rsa_VerifySha256(pemPublicKey, data, sig); - return _t968; + unsigned int _t955; + _t955 = String_Len(signatureB64); + _t956 = (int)_t955; + _t957 = &outlen; + const char* _t958; + _t958 = bux_base64_decode(signatureB64, _t956, _t957); + sig = _t958; + bool _t959; + _t959 = Rsa_VerifySha256(pemPublicKey, data, sig); + return _t959; } bool Rsa_VerifySha384Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t970; - void* _t971; + int _t961; + void* _t962; int outlen; outlen = 0; const char* sig; - unsigned int _t969; - _t969 = String_Len(signatureB64); - _t970 = (int)_t969; - _t971 = &outlen; - const char* _t972; - _t972 = bux_base64_decode(signatureB64, _t970, _t971); - sig = _t972; - bool _t973; - _t973 = Rsa_VerifySha384(pemPublicKey, data, sig); - return _t973; + unsigned int _t960; + _t960 = String_Len(signatureB64); + _t961 = (int)_t960; + _t962 = &outlen; + const char* _t963; + _t963 = bux_base64_decode(signatureB64, _t961, _t962); + sig = _t963; + bool _t964; + _t964 = Rsa_VerifySha384(pemPublicKey, data, sig); + return _t964; } bool Rsa_VerifySha512Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t975; - void* _t976; + int _t966; + void* _t967; int outlen; outlen = 0; const char* sig; - unsigned int _t974; - _t974 = String_Len(signatureB64); - _t975 = (int)_t974; - _t976 = &outlen; - const char* _t977; - _t977 = bux_base64_decode(signatureB64, _t975, _t976); - sig = _t977; - bool _t978; - _t978 = Rsa_VerifySha512(pemPublicKey, data, sig); - return _t978; + unsigned int _t965; + _t965 = String_Len(signatureB64); + _t966 = (int)_t965; + _t967 = &outlen; + const char* _t968; + _t968 = bux_base64_decode(signatureB64, _t966, _t967); + sig = _t968; + bool _t969; + _t969 = Rsa_VerifySha512(pemPublicKey, data, sig); + return _t969; } int Main(void) { int m1; - int _t979; - _t979 = Max_int(10, 20); - m1 = _t979; + int _t970; + _t970 = Max_int(10, 20); + m1 = _t970; int m2; - int _t980; - _t980 = Max_int(5, 3); - m2 = _t980; + int _t971; + _t971 = Max_int(5, 3); + m2 = _t971; PrintLine("Max(10, 20) = "); PrintInt(m1); PrintLine(""); @@ -4828,18 +4827,18 @@ int Main(void) { } int Max_int(int a, int b) { - int _t981; - _t981 = (a > b); - if (!_t981) goto else320; + int _t972; + _t972 = (a > b); + if (!_t972) goto else307; { return a; } - goto endif321; - else320:; + goto endif308; + else307:; { return b; } - endif321:; + endif308:; } /* C entry point wrapper */ diff --git a/tests/golden/hello/expected.c b/tests/golden/hello/expected.c index 584ddaf..c810b9c 100644 --- a/tests/golden/hello/expected.c +++ b/tests/golden/hello/expected.c @@ -198,6 +198,34 @@ extern const char* bux_base64_decode(const char* data, int len, int* outlen); #define ED25519_PRIVKEY_SIZE 32 #define ED25519_SIG_SIZE 64 +typedef struct Channel_float64 { + void* handle; +} Channel_float64; + +typedef struct TaskHandle { + void* handle; +} TaskHandle; + +typedef struct RwLock { + void* handle; +} RwLock; + +typedef struct Channel_int { + void* handle; +} Channel_int; + +typedef enum { + JwtAlg_HS256, + JwtAlg_HS384, + JwtAlg_HS512, + JwtAlg_RS256, + JwtAlg_RS384, + JwtAlg_RS512, + JwtAlg_ES256, + JwtAlg_ES384, + JwtAlg_EdDSA +} JwtAlg; + typedef enum { Result_Ok, Result_Err @@ -227,31 +255,6 @@ typedef struct { Option_Data data; } Option; -typedef enum { - JwtAlg_HS256, - JwtAlg_HS384, - JwtAlg_HS512, - JwtAlg_RS256, - JwtAlg_RS384, - JwtAlg_RS512, - JwtAlg_ES256, - JwtAlg_ES384, - JwtAlg_EdDSA -} JwtAlg; - - -typedef struct TaskHandle { - void* handle; -} TaskHandle; - -typedef struct Mutex { - void* handle; -} Mutex; - -typedef struct RwLock { - void* handle; -} RwLock; - typedef struct JsonValue { int tag; bool boolVal; @@ -266,6 +269,14 @@ typedef struct JsonValue { unsigned int objCap; } JsonValue; +typedef struct Mutex { + void* handle; +} Mutex; + +typedef struct StringBuilder { + void* handle; +} StringBuilder; + typedef struct JsonParser { const char* src; unsigned int pos; @@ -273,18 +284,6 @@ typedef struct JsonParser { const char* error; } JsonParser; -typedef struct StringBuilder { - void* handle; -} StringBuilder; - -typedef struct Channel_int { - void* handle; -} Channel_int; - -typedef struct Channel_float64 { - void* handle; -} Channel_float64; - bool DirExists(const char* path); bool Mkdir(const char* path); const char** ListDir(const char* dir, const char* ext, int* count); @@ -866,7 +865,7 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { tmplLen = _t60; while1:; _t61 = (i < tmplLen); - if (!_t61) goto wend3; + if (!_t61) goto wend2; { const char* ch; const char* _t62; @@ -874,13 +873,13 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { ch = _t62; bool _t63; _t63 = String_Eq(ch, "{"); - if (!_t63) goto endif5; + if (!_t63) goto endif4; { unsigned int digitIdx; _t64 = i + 1; digitIdx = _t64; _t65 = (digitIdx < tmplLen); - if (!_t65) goto endif7; + if (!_t65) goto endif6; { const char* digitCh; const char* _t66; @@ -892,22 +891,22 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { d = _t67; bool __and_tmp_0; _t68 = (d >= 0); - if (!_t68) goto else8; + if (!_t68) goto else7; _t69 = (int64_t)argCount; _t70 = (d < _t69); *(bool*)&__and_tmp_0 = _t70; - goto endif9; - else8:; + goto endif8; + else7:; *(bool*)&__and_tmp_0 = 0; - endif9:; + endif8:; bool _t71; _t71 = *(bool*)&__and_tmp_0; - if (!_t71) goto endif11; + if (!_t71) goto endif10; { _t72 = i + 2; i = _t72; _t73 = (i < tmplLen); - if (!_t73) goto endif13; + if (!_t73) goto endif12; { const char* closeCh; const char* _t74; @@ -915,7 +914,7 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { closeCh = _t74; bool _t75; _t75 = String_Eq(closeCh, "}"); - if (!_t75) goto endif15; + if (!_t75) goto endif14; { _t76 = i + 1; i = _t76; @@ -928,22 +927,22 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { StringBuilder_Append(_t79, argStr); goto while1; } - endif15:; + endif14:; } - endif13:; + endif12:; } - endif11:; + endif10:; } - endif7:; + endif6:; } - endif5:; + endif4:; _t80 = &sb; StringBuilder_Append(_t80, ch); _t81 = i + 1; i = _t81; } goto while1; - wend3:; + wend2:; _t82 = &sb; const char* _t83; _t83 = StringBuilder_Build(_t82); @@ -951,276 +950,276 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { } const char* Fmt_Fmt1(const char* tmpl, const char* a1) { - const char** _t86; + const char** _t85; const char** args; /* sizeof(const char*) */ - void* _t85; - _t85 = bux_alloc(sizeof(const char*)); - _t86 = (const char**)_t85; - args = _t86; + void* _t84; + _t84 = bux_alloc(sizeof(const char*)); + _t85 = (const char**)_t84; + args = _t85; args[0] = a1; - const char* _t87; - _t87 = Fmt_Format(tmpl, args, 1); - return _t87; + const char* _t86; + _t86 = Fmt_Format(tmpl, args, 1); + return _t86; } const char* Fmt_FmtInt(const char* tmpl, int64_t val) { const char* s; + const char* _t87; + _t87 = String_FromInt(val); + s = _t87; const char* _t88; - _t88 = String_FromInt(val); - s = _t88; - const char* _t89; - _t89 = Fmt_Fmt1(tmpl, s); - return _t89; + _t88 = Fmt_Fmt1(tmpl, s); + return _t88; } const char* Fmt_FmtBool(const char* tmpl, bool val) { const char* s; + const char* _t89; + _t89 = String_FromBool(val); + s = _t89; const char* _t90; - _t90 = String_FromBool(val); - s = _t90; - const char* _t91; - _t91 = Fmt_Fmt1(tmpl, s); - return _t91; + _t90 = Fmt_Fmt1(tmpl, s); + return _t90; } const char* Fmt_FmtFloat(const char* tmpl, double val) { const char* s; + const char* _t91; + _t91 = String_FromFloat(val); + s = _t91; const char* _t92; - _t92 = String_FromFloat(val); - s = _t92; - const char* _t93; - _t93 = Fmt_Fmt1(tmpl, s); - return _t93; + _t92 = Fmt_Fmt1(tmpl, s); + return _t92; } const char* Fmt_Fmt2(const char* tmpl, const char* a1, const char* a2) { - int _t95; - const char** _t97; + int _t93; + const char** _t95; const char** args; /* sizeof(const char*) */ - _t95 = 2 * sizeof(const char*); - void* _t96; - _t96 = bux_alloc(_t95); - _t97 = (const char**)_t96; - args = _t97; + _t93 = 2 * sizeof(const char*); + void* _t94; + _t94 = bux_alloc(_t93); + _t95 = (const char**)_t94; + args = _t95; args[0] = a1; args[1] = a2; - const char* _t98; - _t98 = Fmt_Format(tmpl, args, 2); - return _t98; + const char* _t96; + _t96 = Fmt_Format(tmpl, args, 2); + return _t96; } const char* Fmt_Fmt3(const char* tmpl, const char* a1, const char* a2, const char* a3) { - int _t100; - const char** _t102; + int _t97; + const char** _t99; const char** args; /* sizeof(const char*) */ - _t100 = 3 * sizeof(const char*); - void* _t101; - _t101 = bux_alloc(_t100); - _t102 = (const char**)_t101; - args = _t102; + _t97 = 3 * sizeof(const char*); + void* _t98; + _t98 = bux_alloc(_t97); + _t99 = (const char**)_t98; + args = _t99; args[0] = a1; args[1] = a2; args[2] = a3; - const char* _t103; - _t103 = Fmt_Format(tmpl, args, 3); - return _t103; + const char* _t100; + _t100 = Fmt_Format(tmpl, args, 3); + return _t100; } const char* Crypto_Sha256(const char* data) { - int _t105; - void* _t107; + int _t102; + void* _t104; int len; - unsigned int _t104; - _t104 = String_Len(data); - _t105 = (int)_t104; - len = _t105; + unsigned int _t101; + _t101 = String_Len(data); + _t102 = (int)_t101; + len = _t102; void* hashBuf; - void* _t106; - _t106 = Alloc(32); - hashBuf = _t106; + void* _t103; + _t103 = Alloc(32); + hashBuf = _t103; bux_sha256(data, len, hashBuf); const char* result; - _t107 = (void*)hashBuf; - const char* _t108; - _t108 = bux_bytes_to_hex(_t107, 32); - result = _t108; + _t104 = (void*)hashBuf; + const char* _t105; + _t105 = bux_bytes_to_hex(_t104, 32); + result = _t105; Free(hashBuf); return result; } const char* Crypto_HmacSha256(const char* key, const char* message) { - int _t110; - int _t112; - void* _t114; + int _t107; + int _t109; + void* _t111; int keylen; - unsigned int _t109; - _t109 = String_Len(key); - _t110 = (int)_t109; - keylen = _t110; + unsigned int _t106; + _t106 = String_Len(key); + _t107 = (int)_t106; + keylen = _t107; int msglen; - unsigned int _t111; - _t111 = String_Len(message); - _t112 = (int)_t111; - msglen = _t112; + unsigned int _t108; + _t108 = String_Len(message); + _t109 = (int)_t108; + msglen = _t109; void* hmacBuf; - void* _t113; - _t113 = Alloc(32); - hmacBuf = _t113; + void* _t110; + _t110 = Alloc(32); + hmacBuf = _t110; bux_hmac_sha256(key, keylen, message, msglen, hmacBuf); const char* result; - _t114 = (void*)hmacBuf; - const char* _t115; - _t115 = bux_bytes_to_hex(_t114, 32); - result = _t115; + _t111 = (void*)hmacBuf; + const char* _t112; + _t112 = bux_bytes_to_hex(_t111, 32); + result = _t112; Free(hmacBuf); return result; } const char* Crypto_RandomBytes(int n) { - int _t116; - unsigned int _t117; - int _t120; - const char* _t121; - _t116 = (n <= 0); - if (!_t116) goto endif17; + int _t113; + unsigned int _t114; + int _t117; + const char* _t118; + _t113 = (n <= 0); + if (!_t113) goto endif16; { return ""; } - endif17:; + endif16:; void* buf; - _t117 = (unsigned int)n; - void* _t118; - _t118 = Alloc(_t117); - buf = _t118; - int _t119; - _t119 = bux_random_bytes(buf, n); - _t120 = (_t119 != 1); - if (!_t120) goto endif19; + _t114 = (unsigned int)n; + void* _t115; + _t115 = Alloc(_t114); + buf = _t115; + int _t116; + _t116 = bux_random_bytes(buf, n); + _t117 = (_t116 != 1); + if (!_t117) goto endif18; { Free(buf); return ""; } - endif19:; + endif18:; const char* result; - _t121 = (const char*)buf; - const char* _t122; - _t122 = bux_base64_encode(_t121, n); - result = _t122; + _t118 = (const char*)buf; + const char* _t119; + _t119 = bux_base64_encode(_t118, n); + result = _t119; Free(buf); return result; } const char* Crypto_Base64Encode(const char* s) { - int _t124; - unsigned int _t123; - _t123 = String_Len(s); - _t124 = (int)_t123; - const char* _t125; - _t125 = bux_base64_encode(s, _t124); - return _t125; + int _t121; + unsigned int _t120; + _t120 = String_Len(s); + _t121 = (int)_t120; + const char* _t122; + _t122 = bux_base64_encode(s, _t121); + return _t122; } const char* Crypto_HmacSha256Raw(const char* key, const char* message) { - int _t127; - int _t129; - const char* _t131; + int _t124; + int _t126; + const char* _t128; int keylen; - unsigned int _t126; - _t126 = String_Len(key); - _t127 = (int)_t126; - keylen = _t127; + unsigned int _t123; + _t123 = String_Len(key); + _t124 = (int)_t123; + keylen = _t124; int msglen; - unsigned int _t128; - _t128 = String_Len(message); - _t129 = (int)_t128; - msglen = _t129; + unsigned int _t125; + _t125 = String_Len(message); + _t126 = (int)_t125; + msglen = _t126; void* hmacBuf; - void* _t130; - _t130 = Alloc(32); - hmacBuf = _t130; + void* _t127; + _t127 = Alloc(32); + hmacBuf = _t127; bux_hmac_sha256(key, keylen, message, msglen, hmacBuf); const char* result; - _t131 = (const char*)hmacBuf; - const char* _t132; - _t132 = bux_base64_encode(_t131, 32); - result = _t132; + _t128 = (const char*)hmacBuf; + const char* _t129; + _t129 = bux_base64_encode(_t128, 32); + result = _t129; Free(hmacBuf); return result; } const char* Crypto_Base64Decode(const char* s) { - int _t134; - void* _t135; + int _t131; + void* _t132; int outlen; outlen = 0; - unsigned int _t133; - _t133 = String_Len(s); - _t134 = (int)_t133; - _t135 = &outlen; - const char* _t136; - _t136 = bux_base64_decode(s, _t134, _t135); - return _t136; + unsigned int _t130; + _t130 = String_Len(s); + _t131 = (int)_t130; + _t132 = &outlen; + const char* _t133; + _t133 = bux_base64_decode(s, _t131, _t132); + return _t133; } Mutex Mutex_New(void) { - Mutex _t138; - void* _t137; - _t137 = bux_mutex_new(); - _t138 = (Mutex){.handle = _t137}; - return _t138; + Mutex _t135; + void* _t134; + _t134 = bux_mutex_new(); + _t135 = (Mutex){.handle = _t134}; + return _t135; } void Mutex_Lock(Mutex* m) { - void* _t139; - _t139 = m->handle; - bux_mutex_lock(_t139); + void* _t136; + _t136 = m->handle; + bux_mutex_lock(_t136); } void Mutex_Unlock(Mutex* m) { - void* _t140; - _t140 = m->handle; - bux_mutex_unlock(_t140); + void* _t137; + _t137 = m->handle; + bux_mutex_unlock(_t137); } void Mutex_Free(Mutex* m) { - void* _t141; - _t141 = m->handle; - bux_mutex_free(_t141); + void* _t138; + _t138 = m->handle; + bux_mutex_free(_t138); } RwLock RwLock_New(void) { - RwLock _t143; - void* _t142; - _t142 = bux_rwlock_new(); - _t143 = (RwLock){.handle = _t142}; - return _t143; + RwLock _t140; + void* _t139; + _t139 = bux_rwlock_new(); + _t140 = (RwLock){.handle = _t139}; + return _t140; } void RwLock_ReadLock(RwLock* rw) { - void* _t144; - _t144 = rw->handle; - bux_rwlock_rdlock(_t144); + void* _t141; + _t141 = rw->handle; + bux_rwlock_rdlock(_t141); } void RwLock_WriteLock(RwLock* rw) { - void* _t145; - _t145 = rw->handle; - bux_rwlock_wrlock(_t145); + void* _t142; + _t142 = rw->handle; + bux_rwlock_wrlock(_t142); } void RwLock_Unlock(RwLock* rw) { - void* _t146; - _t146 = rw->handle; - bux_rwlock_unlock(_t146); + void* _t143; + _t143 = rw->handle; + bux_rwlock_unlock(_t143); } void RwLock_Free(RwLock* rw) { - void* _t147; - _t147 = rw->handle; - bux_rwlock_free(_t147); + void* _t144; + _t144 = rw->handle; + bux_rwlock_free(_t144); } void Test_Exit(int code) { @@ -1228,15 +1227,15 @@ void Test_Exit(int code) { } void Test_Assert(bool cond) { - int _t148; - _t148 = (int)cond; - bux_assert(_t148, "", 0, ""); + int _t145; + _t145 = (int)cond; + bux_assert(_t145, "", 0, ""); } void Test_AssertEqInt(int a, int b) { - int _t149; - _t149 = (a != b); - if (!_t149) goto endif21; + int _t146; + _t146 = (a != b); + if (!_t146) goto endif20; { PrintLine("ASSERT_EQ FAILED:"); PrintInt(a); @@ -1244,27 +1243,27 @@ void Test_AssertEqInt(int a, int b) { PrintInt(b); bux_exit(1); } - endif21:; + endif20:; } void Test_AssertTrue(bool cond) { - int _t150; - _t150 = !cond; - if (!_t150) goto endif23; + int _t147; + _t147 = !cond; + if (!_t147) goto endif22; { PrintLine("ASSERT_TRUE FAILED"); bux_exit(1); } - endif23:; + endif22:; } void Test_AssertFalse(bool cond) { - if (!cond) goto endif25; + if (!cond) goto endif24; { PrintLine("ASSERT_FALSE FAILED"); bux_exit(1); } - endif25:; + endif24:; } void Test_Fail(const char* msg) { @@ -1274,735 +1273,744 @@ void Test_Fail(const char* msg) { } Result Result_NewOk(int value) { - Result _t151; + Result _t148; Result r; - _t151 = (Result){.tag = Result_Ok}; - r = _t151; + _t148 = (Result){.tag = Result_Ok}; + r = _t148; r.data.Ok_0 = value; return r; } Result Result_NewErr(const char* msg) { - Result _t152; + Result _t149; Result r; - _t152 = (Result){.tag = Result_Err}; - r = _t152; + _t149 = (Result){.tag = Result_Err}; + r = _t149; r.data.Err_0 = msg; return r; } bool Result_IsOk(Result r) { - int _t154; - Result_Tag _t153; - _t153 = r.tag; - _t154 = (_t153 == Result_Ok); - return _t154; + int _t151; + Result_Tag _t150; + _t150 = r.tag; + _t151 = (_t150 == Result_Ok); + return _t151; } bool Result_IsErr(Result r) { - int _t156; - Result_Tag _t155; - _t155 = r.tag; - _t156 = (_t155 == Result_Err); - return _t156; + int _t153; + Result_Tag _t152; + _t152 = r.tag; + _t153 = (_t152 == Result_Err); + return _t153; } int Result_Unwrap(Result r) { - int _t158; - Result_Tag _t157; - _t157 = r.tag; - _t158 = (_t157 != Result_Ok); - if (!_t158) goto endif27; + int _t155; + Result_Tag _t154; + _t154 = r.tag; + _t155 = (_t154 != Result_Ok); + if (!_t155) goto endif26; { PrintLine("panic: unwrap on Err"); return 0; } - endif27:; - Result_Data _t159; - _t159 = r.data; - int _t160; - _t160 = _t159.Ok_0; - return _t160; + endif26:; + Result_Data _t156; + _t156 = r.data; + int _t157; + _t157 = _t156.Ok_0; + return _t157; } int Result_UnwrapOr(Result r, int fallback) { - int _t162; - Result_Tag _t161; - _t161 = r.tag; - _t162 = (_t161 == Result_Ok); - if (!_t162) goto endif29; + int _t159; + Result_Tag _t158; + _t158 = r.tag; + _t159 = (_t158 == Result_Ok); + if (!_t159) goto endif28; { - Result_Data _t163; - _t163 = r.data; - int _t164; - _t164 = _t163.Ok_0; - return _t164; + Result_Data _t160; + _t160 = r.data; + int _t161; + _t161 = _t160.Ok_0; + return _t161; } - endif29:; + endif28:; return fallback; } Option Option_NewSome(int value) { - Option _t165; + Option _t162; Option o; - _t165 = (Option){.tag = Option_Some}; - o = _t165; + _t162 = (Option){.tag = Option_Some}; + o = _t162; o.data.Some_0 = value; return o; } Option Option_NewNone(void) { - Option _t166; - _t166 = (Option){.tag = Option_None}; - return _t166; + Option _t163; + _t163 = (Option){.tag = Option_None}; + return _t163; } bool Option_IsSome(Option o) { - int _t168; - Option_Tag _t167; - _t167 = o.tag; - _t168 = (_t167 == Option_Some); - return _t168; + int _t165; + Option_Tag _t164; + _t164 = o.tag; + _t165 = (_t164 == Option_Some); + return _t165; } bool Option_IsNone(Option o) { - int _t170; - Option_Tag _t169; - _t169 = o.tag; - _t170 = (_t169 == Option_None); - return _t170; + int _t167; + Option_Tag _t166; + _t166 = o.tag; + _t167 = (_t166 == Option_None); + return _t167; } int Option_Unwrap(Option o) { - int _t172; - Option_Tag _t171; - _t171 = o.tag; - _t172 = (_t171 != Option_Some); - if (!_t172) goto endif31; + int _t169; + Option_Tag _t168; + _t168 = o.tag; + _t169 = (_t168 != Option_Some); + if (!_t169) goto endif30; { PrintLine("panic: unwrap on None"); return 0; } - endif31:; - Option_Data _t173; - _t173 = o.data; - int _t174; - _t174 = _t173.Some_0; - return _t174; + endif30:; + Option_Data _t170; + _t170 = o.data; + int _t171; + _t171 = _t170.Some_0; + return _t171; } int Option_UnwrapOr(Option o, int fallback) { - int _t176; - Option_Tag _t175; - _t175 = o.tag; - _t176 = (_t175 == Option_Some); - if (!_t176) goto endif33; + int _t173; + Option_Tag _t172; + _t172 = o.tag; + _t173 = (_t172 == Option_Some); + if (!_t173) goto endif32; { - Option_Data _t177; - _t177 = o.data; - int _t178; - _t178 = _t177.Some_0; - return _t178; + Option_Data _t174; + _t174 = o.data; + int _t175; + _t175 = _t174.Some_0; + return _t175; } - endif33:; + endif32:; return fallback; } JsonValue Json_Null(void) { - JsonValue _t179; - _t179 = (JsonValue){.tag = JsonTagNull, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t179; + JsonValue _t176; + _t176 = (JsonValue){.tag = JsonTagNull, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t176; } JsonValue Json_Bool(bool b) { - JsonValue _t180; - _t180 = (JsonValue){.tag = JsonTagBool, .boolVal = b, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t180; + JsonValue _t177; + _t177 = (JsonValue){.tag = JsonTagBool, .boolVal = b, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t177; } JsonValue Json_Number(double n) { - JsonValue _t181; - _t181 = (JsonValue){.tag = JsonTagNumber, .boolVal = 0, .numVal = n, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t181; + JsonValue _t178; + _t178 = (JsonValue){.tag = JsonTagNumber, .boolVal = 0, .numVal = n, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t178; } JsonValue Json_String(const char* s) { - JsonValue _t182; - _t182 = (JsonValue){.tag = JsonTagString, .boolVal = 0, .numVal = 0.0, .strVal = s, .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t182; + JsonValue _t179; + _t179 = (JsonValue){.tag = JsonTagString, .boolVal = 0, .numVal = 0.0, .strVal = s, .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t179; } JsonValue Json_Array(void) { - JsonValue _t183; - _t183 = (JsonValue){.tag = JsonTagArray, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t183; + JsonValue _t180; + _t180 = (JsonValue){.tag = JsonTagArray, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t180; } JsonValue Json_Object(void) { - JsonValue _t184; - _t184 = (JsonValue){.tag = JsonTagObject, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t184; + JsonValue _t181; + _t181 = (JsonValue){.tag = JsonTagObject, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t181; } unsigned int Json_ArrayLen(JsonValue v) { - int _t186; - int _t185; - _t185 = v.tag; - _t186 = (_t185 != JsonTagArray); - if (!_t186) goto endif35; + int _t183; + int _t182; + _t182 = v.tag; + _t183 = (_t182 != JsonTagArray); + if (!_t183) goto endif34; { return 0; } - endif35:; - unsigned int _t187; - _t187 = v.arrLen; - return _t187; + endif34:; + unsigned int _t184; + _t184 = v.arrLen; + return _t184; } JsonValue Json_ArrayGet(JsonValue v, unsigned int index) { + int _t186; int _t189; - int _t192; - int _t188; - _t188 = v.tag; - _t189 = (_t188 != JsonTagArray); - if (!_t189) goto endif37; + int _t185; + _t185 = v.tag; + _t186 = (_t185 != JsonTagArray); + if (!_t186) goto endif36; + { + JsonValue _t187; + _t187 = Json_Null(); + return _t187; + } + endif36:; + unsigned int _t188; + _t188 = v.arrLen; + _t189 = (index >= _t188); + if (!_t189) goto endif38; { JsonValue _t190; _t190 = Json_Null(); return _t190; } - endif37:; - unsigned int _t191; - _t191 = v.arrLen; - _t192 = (index >= _t191); - if (!_t192) goto endif39; - { - JsonValue _t193; - _t193 = Json_Null(); - return _t193; - } - endif39:; - JsonValue* _t194; - _t194 = v.arrData; - JsonValue _t195; - _t195 = _t194[index]; - return _t195; + endif38:; + JsonValue* _t191; + _t191 = v.arrData; + JsonValue _t192; + _t192 = _t191[index]; + return _t192; } void Json_ArrayPush(JsonValue* self, JsonValue val) { + int _t194; int _t197; + int _t199; int _t200; - int _t202; - int _t204; - JsonValue* _t206; - int _t207; - void* _t209; - int _t211; - JsonValue* _t213; - int _t217; - int _t196; - _t196 = self->tag; - _t197 = (_t196 != JsonTagArray); - if (!_t197) goto endif41; + JsonValue* _t202; + int _t203; + void* _t205; + int _t206; + JsonValue* _t208; + int _t212; + int _t193; + _t193 = self->tag; + _t194 = (_t193 != JsonTagArray); + if (!_t194) goto endif40; { return; } - endif41:; - unsigned int _t198; - _t198 = self->arrLen; - unsigned int _t199; - _t199 = self->arrCap; - _t200 = (_t198 >= _t199); - if (!_t200) goto endif43; + endif40:; + unsigned int _t195; + _t195 = self->arrLen; + unsigned int _t196; + _t196 = self->arrCap; + _t197 = (_t195 >= _t196); + if (!_t197) goto endif42; { unsigned int arrNewCap; - unsigned int _t201; - _t201 = self->arrCap; - arrNewCap = _t201; - _t202 = (arrNewCap == 0); - if (!_t202) goto else44; + unsigned int _t198; + _t198 = self->arrCap; + arrNewCap = _t198; + _t199 = (arrNewCap == 0); + if (!_t199) goto else43; { self->arrCap = 4; /* sizeof(JsonValue) */ - _t204 = 4 * sizeof(JsonValue); - void* _t205; - _t205 = Alloc(_t204); - _t206 = (JsonValue*)_t205; - self->arrData = _t206; + _t200 = 4 * sizeof(JsonValue); + void* _t201; + _t201 = Alloc(_t200); + _t202 = (JsonValue*)_t201; + self->arrData = _t202; } - goto endif45; - else44:; + goto endif44; + else43:; { unsigned int doubleCap; - _t207 = arrNewCap * 2; - doubleCap = _t207; + _t203 = arrNewCap * 2; + doubleCap = _t203; self->arrCap = doubleCap; - JsonValue* _t208; - _t208 = self->arrData; - _t209 = (void*)_t208; + JsonValue* _t204; + _t204 = self->arrData; + _t205 = (void*)_t204; /* sizeof(JsonValue) */ - _t211 = doubleCap * sizeof(JsonValue); - void* _t212; - _t212 = Realloc(_t209, _t211); - _t213 = (JsonValue*)_t212; - self->arrData = _t213; + _t206 = doubleCap * sizeof(JsonValue); + void* _t207; + _t207 = Realloc(_t205, _t206); + _t208 = (JsonValue*)_t207; + self->arrData = _t208; } - endif45:; + endif44:; } - endif43:; - JsonValue* _t214; - _t214 = self->arrData; - unsigned int _t215; - _t215 = self->arrLen; - _t214[_t215] = val; - unsigned int _t216; - _t216 = self->arrLen; - _t217 = _t216 + 1; - self->arrLen = _t217; + endif42:; + JsonValue* _t209; + _t209 = self->arrData; + unsigned int _t210; + _t210 = self->arrLen; + _t209[_t210] = val; + unsigned int _t211; + _t211 = self->arrLen; + _t212 = _t211 + 1; + self->arrLen = _t212; } unsigned int Json_ObjectLen(JsonValue v) { - int _t219; - int _t218; - _t218 = v.tag; - _t219 = (_t218 != JsonTagObject); - if (!_t219) goto endif47; + int _t214; + int _t213; + _t213 = v.tag; + _t214 = (_t213 != JsonTagObject); + if (!_t214) goto endif46; { return 0; } - endif47:; - unsigned int _t220; - _t220 = v.objLen; - return _t220; + endif46:; + unsigned int _t215; + _t215 = v.objLen; + return _t215; } JsonValue Json_ObjectGet(JsonValue v, const char* key) { - int _t222; - int _t225; - int _t231; - int _t221; - _t221 = v.tag; - _t222 = (_t221 != JsonTagObject); - if (!_t222) goto endif49; + int _t217; + int _t220; + int _t226; + int _t216; + _t216 = v.tag; + _t217 = (_t216 != JsonTagObject); + if (!_t217) goto endif48; { - JsonValue _t223; - _t223 = Json_Null(); - return _t223; + JsonValue _t218; + _t218 = Json_Null(); + return _t218; } - endif49:; + endif48:; unsigned int i; i = 0; - while50:; - unsigned int _t224; - _t224 = v.objLen; - _t225 = (i < _t224); - if (!_t225) goto wend52; + while49:; + unsigned int _t219; + _t219 = v.objLen; + _t220 = (i < _t219); + if (!_t220) goto wend50; { - const char** _t226; - _t226 = v.objKeys; - const char* _t227; - _t227 = _t226[i]; - bool _t228; - _t228 = String_Eq(_t227, key); - if (!_t228) goto endif54; + const char** _t221; + _t221 = v.objKeys; + const char* _t222; + _t222 = _t221[i]; + bool _t223; + _t223 = String_Eq(_t222, key); + if (!_t223) goto endif52; { - JsonValue* _t229; - _t229 = v.objValues; - JsonValue _t230; - _t230 = _t229[i]; - return _t230; + JsonValue* _t224; + _t224 = v.objValues; + JsonValue _t225; + _t225 = _t224[i]; + return _t225; } - endif54:; - _t231 = i + 1; - i = _t231; + endif52:; + _t226 = i + 1; + i = _t226; } - goto while50; - wend52:; - JsonValue _t232; - _t232 = Json_Null(); - return _t232; + goto while49; + wend50:; + JsonValue _t227; + _t227 = Json_Null(); + return _t227; } bool Json_ObjectHas(JsonValue v, const char* key) { - int _t234; - int _t236; - int _t240; - int _t233; - _t233 = v.tag; - _t234 = (_t233 != JsonTagObject); - if (!_t234) goto endif56; + int _t229; + int _t231; + int _t235; + int _t228; + _t228 = v.tag; + _t229 = (_t228 != JsonTagObject); + if (!_t229) goto endif54; { return 0; } - endif56:; + endif54:; unsigned int i; i = 0; - while57:; - unsigned int _t235; - _t235 = v.objLen; - _t236 = (i < _t235); - if (!_t236) goto wend59; + while55:; + unsigned int _t230; + _t230 = v.objLen; + _t231 = (i < _t230); + if (!_t231) goto wend56; { - const char** _t237; - _t237 = v.objKeys; - const char* _t238; - _t238 = _t237[i]; - bool _t239; - _t239 = String_Eq(_t238, key); - if (!_t239) goto endif61; + const char** _t232; + _t232 = v.objKeys; + const char* _t233; + _t233 = _t232[i]; + bool _t234; + _t234 = String_Eq(_t233, key); + if (!_t234) goto endif58; { return 1; } - endif61:; - _t240 = i + 1; - i = _t240; + endif58:; + _t235 = i + 1; + i = _t235; } - goto while57; - wend59:; + goto while55; + wend56:; return 0; } void Json_ObjectSet(JsonValue* self, const char* key, JsonValue val) { - int _t242; + int _t237; + int _t239; int _t244; + int _t247; int _t249; - int _t252; - int _t254; + int _t250; + const char** _t252; + int _t253; + JsonValue* _t255; int _t256; - const char** _t258; - int _t260; - JsonValue* _t262; - int _t263; - void* _t265; - int _t267; - const char** _t269; - void* _t271; - int _t273; - JsonValue* _t275; - int _t281; - int _t241; - _t241 = self->tag; - _t242 = (_t241 != JsonTagObject); - if (!_t242) goto endif63; + void* _t258; + int _t259; + const char** _t261; + void* _t263; + int _t264; + JsonValue* _t266; + int _t272; + int _t236; + _t236 = self->tag; + _t237 = (_t236 != JsonTagObject); + if (!_t237) goto endif60; { return; } - endif63:; + endif60:; unsigned int i; i = 0; - while64:; - unsigned int _t243; - _t243 = self->objLen; - _t244 = (i < _t243); - if (!_t244) goto wend66; + while61:; + unsigned int _t238; + _t238 = self->objLen; + _t239 = (i < _t238); + if (!_t239) goto wend62; { - const char** _t245; - _t245 = self->objKeys; - const char* _t246; - _t246 = _t245[i]; - bool _t247; - _t247 = String_Eq(_t246, key); - if (!_t247) goto endif68; + const char** _t240; + _t240 = self->objKeys; + const char* _t241; + _t241 = _t240[i]; + bool _t242; + _t242 = String_Eq(_t241, key); + if (!_t242) goto endif64; { - JsonValue* _t248; - _t248 = self->objValues; - _t248[i] = val; + JsonValue* _t243; + _t243 = self->objValues; + _t243[i] = val; return; } - endif68:; - _t249 = i + 1; - i = _t249; + endif64:; + _t244 = i + 1; + i = _t244; } - goto while64; - wend66:; - unsigned int _t250; - _t250 = self->objLen; - unsigned int _t251; - _t251 = self->objCap; - _t252 = (_t250 >= _t251); - if (!_t252) goto endif70; + goto while61; + wend62:; + unsigned int _t245; + _t245 = self->objLen; + unsigned int _t246; + _t246 = self->objCap; + _t247 = (_t245 >= _t246); + if (!_t247) goto endif66; { unsigned int objNewCap; - unsigned int _t253; - _t253 = self->objCap; - objNewCap = _t253; - _t254 = (objNewCap == 0); - if (!_t254) goto else71; + unsigned int _t248; + _t248 = self->objCap; + objNewCap = _t248; + _t249 = (objNewCap == 0); + if (!_t249) goto else67; { self->objCap = 4; /* sizeof(const char*) */ - _t256 = 4 * sizeof(const char*); - void* _t257; - _t257 = Alloc(_t256); - _t258 = (const char**)_t257; - self->objKeys = _t258; + _t250 = 4 * sizeof(const char*); + void* _t251; + _t251 = Alloc(_t250); + _t252 = (const char**)_t251; + self->objKeys = _t252; /* sizeof(JsonValue) */ - _t260 = 4 * sizeof(JsonValue); - void* _t261; - _t261 = Alloc(_t260); - _t262 = (JsonValue*)_t261; - self->objValues = _t262; + _t253 = 4 * sizeof(JsonValue); + void* _t254; + _t254 = Alloc(_t253); + _t255 = (JsonValue*)_t254; + self->objValues = _t255; } - goto endif72; - else71:; + goto endif68; + else67:; { unsigned int doubleCap; - _t263 = objNewCap * 2; - doubleCap = _t263; + _t256 = objNewCap * 2; + doubleCap = _t256; self->objCap = doubleCap; - const char** _t264; - _t264 = self->objKeys; - _t265 = (void*)_t264; + const char** _t257; + _t257 = self->objKeys; + _t258 = (void*)_t257; /* sizeof(const char*) */ - _t267 = doubleCap * sizeof(const char*); - void* _t268; - _t268 = Realloc(_t265, _t267); - _t269 = (const char**)_t268; - self->objKeys = _t269; - JsonValue* _t270; - _t270 = self->objValues; - _t271 = (void*)_t270; + _t259 = doubleCap * sizeof(const char*); + void* _t260; + _t260 = Realloc(_t258, _t259); + _t261 = (const char**)_t260; + self->objKeys = _t261; + JsonValue* _t262; + _t262 = self->objValues; + _t263 = (void*)_t262; /* sizeof(JsonValue) */ - _t273 = doubleCap * sizeof(JsonValue); - void* _t274; - _t274 = Realloc(_t271, _t273); - _t275 = (JsonValue*)_t274; - self->objValues = _t275; + _t264 = doubleCap * sizeof(JsonValue); + void* _t265; + _t265 = Realloc(_t263, _t264); + _t266 = (JsonValue*)_t265; + self->objValues = _t266; } - endif72:; + endif68:; } - endif70:; - const char** _t276; - _t276 = self->objKeys; - unsigned int _t277; - _t277 = self->objLen; - _t276[_t277] = key; - JsonValue* _t278; - _t278 = self->objValues; - unsigned int _t279; - _t279 = self->objLen; - _t278[_t279] = val; - unsigned int _t280; - _t280 = self->objLen; - _t281 = _t280 + 1; - self->objLen = _t281; + endif66:; + const char** _t267; + _t267 = self->objKeys; + unsigned int _t268; + _t268 = self->objLen; + _t267[_t268] = key; + JsonValue* _t269; + _t269 = self->objValues; + unsigned int _t270; + _t270 = self->objLen; + _t269[_t270] = val; + unsigned int _t271; + _t271 = self->objLen; + _t272 = _t271 + 1; + self->objLen = _t272; } bool Json_IsNull(JsonValue v) { - int _t283; - int _t282; - _t282 = v.tag; - _t283 = (_t282 == JsonTagNull); - return _t283; + int _t274; + int _t273; + _t273 = v.tag; + _t274 = (_t273 == JsonTagNull); + return _t274; } bool Json_AsBool(JsonValue v) { - int _t285; - int _t284; - _t284 = v.tag; - _t285 = (_t284 == JsonTagBool); - if (!_t285) goto endif74; + int _t276; + int _t275; + _t275 = v.tag; + _t276 = (_t275 == JsonTagBool); + if (!_t276) goto endif70; { - bool _t286; - _t286 = v.boolVal; - return _t286; + bool _t277; + _t277 = v.boolVal; + return _t277; } - endif74:; + endif70:; return 0; } double Json_AsNumber(JsonValue v) { - int _t288; - int _t287; - _t287 = v.tag; - _t288 = (_t287 == JsonTagNumber); - if (!_t288) goto endif76; + int _t279; + int _t278; + _t278 = v.tag; + _t279 = (_t278 == JsonTagNumber); + if (!_t279) goto endif72; { - double _t289; - _t289 = v.numVal; - return _t289; + double _t280; + _t280 = v.numVal; + return _t280; } - endif76:; + endif72:; return 0.0; } const char* Json_AsString(JsonValue v) { - int _t291; - int _t290; - _t290 = v.tag; - _t291 = (_t290 == JsonTagString); - if (!_t291) goto endif78; + int _t282; + int _t281; + _t281 = v.tag; + _t282 = (_t281 == JsonTagString); + if (!_t282) goto endif74; { - const char* _t292; - _t292 = v.strVal; - return _t292; + const char* _t283; + _t283 = v.strVal; + return _t283; } - endif78:; + endif74:; return ""; } int JsonParser_Peek(JsonParser* p) { - int _t295; - int _t299; - unsigned int _t293; - _t293 = p->pos; - unsigned int _t294; - _t294 = p->len; - _t295 = (_t293 >= _t294); - if (!_t295) goto endif80; + int _t286; + int _t290; + unsigned int _t284; + _t284 = p->pos; + unsigned int _t285; + _t285 = p->len; + _t286 = (_t284 >= _t285); + if (!_t286) goto endif76; { return 0; } - endif80:; - const char* _t296; - _t296 = p->src; - unsigned int _t297; - _t297 = p->pos; - int _t298; - _t298 = _t296[_t297]; - _t299 = (int)_t298; - return _t299; + endif76:; + const char* _t287; + _t287 = p->src; + unsigned int _t288; + _t288 = p->pos; + int _t289; + _t289 = _t287[_t288]; + _t290 = (int)_t289; + return _t290; } void JsonParser_Advance(JsonParser* p) { - int _t302; - int _t304; - unsigned int _t300; - _t300 = p->pos; - unsigned int _t301; - _t301 = p->len; - _t302 = (_t300 < _t301); - if (!_t302) goto endif82; + int _t293; + int _t295; + unsigned int _t291; + _t291 = p->pos; + unsigned int _t292; + _t292 = p->len; + _t293 = (_t291 < _t292); + if (!_t293) goto endif78; { - unsigned int _t303; - _t303 = p->pos; - _t304 = _t303 + 1; - p->pos = _t304; + unsigned int _t294; + _t294 = p->pos; + _t295 = _t294 + 1; + p->pos = _t295; } - endif82:; + endif78:; } void JsonParser_SkipWhitespace(JsonParser* p) { - int _t306; - int _t307; - int _t309; - int _t311; - while83:; - if (!1) goto wend85; + int _t297; + int _t298; + int _t300; + int _t302; + while79:; + if (!1) goto wend80; { int c; - int _t305; - _t305 = JsonParser_Peek(p); - c = _t305; + int _t296; + _t296 = JsonParser_Peek(p); + c = _t296; bool __or_tmp_1; bool __or_tmp_2; bool __or_tmp_3; - _t306 = (c == 32); - if (!_t306) goto else86; + _t297 = (c == 32); + if (!_t297) goto else81; *(bool*)&__or_tmp_3 = 1; - goto endif87; - else86:; - _t307 = (c == 9); - *(bool*)&__or_tmp_3 = _t307; - endif87:; - bool _t308; - _t308 = *(bool*)&__or_tmp_3; - if (!_t308) goto else88; + goto endif82; + else81:; + _t298 = (c == 9); + *(bool*)&__or_tmp_3 = _t298; + endif82:; + bool _t299; + _t299 = *(bool*)&__or_tmp_3; + if (!_t299) goto else83; *(bool*)&__or_tmp_2 = 1; - goto endif89; - else88:; - _t309 = (c == 10); - *(bool*)&__or_tmp_2 = _t309; - endif89:; - bool _t310; - _t310 = *(bool*)&__or_tmp_2; - if (!_t310) goto else90; + goto endif84; + else83:; + _t300 = (c == 10); + *(bool*)&__or_tmp_2 = _t300; + endif84:; + bool _t301; + _t301 = *(bool*)&__or_tmp_2; + if (!_t301) goto else85; *(bool*)&__or_tmp_1 = 1; - goto endif91; - else90:; - _t311 = (c == 13); - *(bool*)&__or_tmp_1 = _t311; - endif91:; - bool _t312; - _t312 = *(bool*)&__or_tmp_1; - if (!_t312) goto else92; + goto endif86; + else85:; + _t302 = (c == 13); + *(bool*)&__or_tmp_1 = _t302; + endif86:; + bool _t303; + _t303 = *(bool*)&__or_tmp_1; + if (!_t303) goto else87; { JsonParser_Advance(p); } - goto endif93; - else92:; + goto endif88; + else87:; { return; } - endif93:; + endif88:; } - goto while83; - wend85:; + goto while79; + wend80:; } bool JsonParser_Match(JsonParser* p, const char* expected) { + int _t306; + int _t308; + int _t309; + int _t312; int _t315; - int _t317; + int _t316; int _t318; - int _t321; - int _t324; - int _t325; - int _t327; unsigned int elen; - unsigned int _t313; - _t313 = String_Len(expected); - elen = _t313; - unsigned int _t314; - _t314 = p->pos; - _t315 = _t314 + elen; - unsigned int _t316; - _t316 = p->len; - _t317 = (_t315 > _t316); - if (!_t317) goto endif95; + unsigned int _t304; + _t304 = String_Len(expected); + elen = _t304; + unsigned int _t305; + _t305 = p->pos; + _t306 = _t305 + elen; + unsigned int _t307; + _t307 = p->len; + _t308 = (_t306 > _t307); + if (!_t308) goto endif90; { return 0; } - endif95:; + endif90:; unsigned int i; i = 0; - while96:; - _t318 = (i < elen); - if (!_t318) goto wend98; + while91:; + _t309 = (i < elen); + if (!_t309) goto wend92; { - const char* _t319; - _t319 = p->src; - unsigned int _t320; - _t320 = p->pos; - _t321 = _t320 + i; - int _t322; - _t322 = _t319[_t321]; - int _t323; - _t323 = expected[i]; - _t324 = (_t322 != _t323); - if (!_t324) goto endif100; + const char* _t310; + _t310 = p->src; + unsigned int _t311; + _t311 = p->pos; + _t312 = _t311 + i; + int _t313; + _t313 = _t310[_t312]; + int _t314; + _t314 = expected[i]; + _t315 = (_t313 != _t314); + if (!_t315) goto endif94; { return 0; } - endif100:; - _t325 = i + 1; - i = _t325; + endif94:; + _t316 = i + 1; + i = _t316; } - goto while96; - wend98:; - unsigned int _t326; - _t326 = p->pos; - _t327 = _t326 + elen; - p->pos = _t327; + goto while91; + wend92:; + unsigned int _t317; + _t317 = p->pos; + _t318 = _t317 + elen; + p->pos = _t318; return 1; } const char* JsonParser_ParseString(JsonParser* p) { - int _t329; - int _t332; + int _t320; + int _t323; + int _t324; + int _t326; + int _t328; + void* _t329; + int _t330; + void* _t331; + char _t332; int _t333; - int _t335; - int _t337; - void* _t338; + void* _t334; + char _t335; + int _t336; + void* _t337; + char _t338; int _t339; void* _t340; char _t341; @@ -2015,234 +2023,262 @@ const char* JsonParser_ParseString(JsonParser* p) { int _t348; void* _t349; char _t350; - int _t351; - void* _t352; - char _t353; - int _t354; + void* _t351; + char _t352; + void* _t353; + char _t354; void* _t355; char _t356; - int _t357; - void* _t358; - char _t359; + int _t358; + void* _t359; void* _t360; - char _t361; void* _t362; - char _t363; - void* _t364; - char _t365; - int _t367; - void* _t368; - void* _t369; - void* _t371; - int _t328; - _t328 = JsonParser_Peek(p); - _t329 = (_t328 != 34); - if (!_t329) goto endif102; + int _t319; + _t319 = JsonParser_Peek(p); + _t320 = (_t319 != 34); + if (!_t320) goto endif96; { p->error = "Expected string"; return ""; } - endif102:; + endif96:; JsonParser_Advance(p); StringBuilder sb; - StringBuilder _t330; - _t330 = StringBuilder_New(); - sb = _t330; - while103:; - if (!1) goto wend105; + StringBuilder _t321; + _t321 = StringBuilder_New(); + sb = _t321; + while97:; + if (!1) goto wend98; { int c; - int _t331; - _t331 = JsonParser_Peek(p); - c = _t331; + int _t322; + _t322 = JsonParser_Peek(p); + c = _t322; bool __or_tmp_4; - _t332 = (c == 0); - if (!_t332) goto else106; + _t323 = (c == 0); + if (!_t323) goto else99; *(bool*)&__or_tmp_4 = 1; - goto endif107; - else106:; - _t333 = (c == 34); - *(bool*)&__or_tmp_4 = _t333; - endif107:; - bool _t334; - _t334 = *(bool*)&__or_tmp_4; - if (!_t334) goto endif109; + goto endif100; + else99:; + _t324 = (c == 34); + *(bool*)&__or_tmp_4 = _t324; + endif100:; + bool _t325; + _t325 = *(bool*)&__or_tmp_4; + if (!_t325) goto endif102; { - goto wend105; + goto wend98; } - endif109:; - _t335 = (c == 92); - if (!_t335) goto else110; + endif102:; + _t326 = (c == 92); + if (!_t326) goto else103; { JsonParser_Advance(p); int esc; - int _t336; - _t336 = JsonParser_Peek(p); - esc = _t336; - _t337 = (esc == 0); - if (!_t337) goto endif113; + int _t327; + _t327 = JsonParser_Peek(p); + esc = _t327; + _t328 = (esc == 0); + if (!_t328) goto endif106; { p->error = "Unterminated string escape"; - _t338 = &sb; - StringBuilder_Free(_t338); + _t329 = &sb; + StringBuilder_Free(_t329); return ""; } - endif113:; - _t339 = (esc == 110); - if (!_t339) goto else114; + endif106:; + _t330 = (esc == 110); + if (!_t330) goto else107; + { + _t331 = &sb; + _t332 = (char)10; + StringBuilder_AppendChar(_t331, _t332); + } + goto endif108; + else107:; + _t333 = (esc == 116); + if (!_t333) goto else109; + { + _t334 = &sb; + _t335 = (char)9; + StringBuilder_AppendChar(_t334, _t335); + } + goto endif110; + else109:; + _t336 = (esc == 114); + if (!_t336) goto else111; + { + _t337 = &sb; + _t338 = (char)13; + StringBuilder_AppendChar(_t337, _t338); + } + goto endif112; + else111:; + _t339 = (esc == 98); + if (!_t339) goto else113; { _t340 = &sb; - _t341 = (char)10; + _t341 = (char)8; StringBuilder_AppendChar(_t340, _t341); } - goto endif115; - else114:; - _t342 = (esc == 116); - if (!_t342) goto else116; + goto endif114; + else113:; + _t342 = (esc == 102); + if (!_t342) goto else115; { _t343 = &sb; - _t344 = (char)9; + _t344 = (char)12; StringBuilder_AppendChar(_t343, _t344); } - goto endif117; - else116:; - _t345 = (esc == 114); - if (!_t345) goto else118; + goto endif116; + else115:; + _t345 = (esc == 34); + if (!_t345) goto else117; { _t346 = &sb; - _t347 = (char)13; + _t347 = (char)34; StringBuilder_AppendChar(_t346, _t347); } - goto endif119; - else118:; - _t348 = (esc == 98); - if (!_t348) goto else120; + goto endif118; + else117:; + _t348 = (esc == 92); + if (!_t348) goto else119; { _t349 = &sb; - _t350 = (char)8; + _t350 = (char)92; StringBuilder_AppendChar(_t349, _t350); } - goto endif121; - else120:; - _t351 = (esc == 102); - if (!_t351) goto else122; + goto endif120; + else119:; { - _t352 = &sb; - _t353 = (char)12; - StringBuilder_AppendChar(_t352, _t353); + _t351 = &sb; + _t352 = (char)92; + StringBuilder_AppendChar(_t351, _t352); + _t353 = &sb; + _t354 = (char)esc; + StringBuilder_AppendChar(_t353, _t354); } - goto endif123; - else122:; - _t354 = (esc == 34); - if (!_t354) goto else124; + endif120:; + endif118:; + endif116:; + endif114:; + endif112:; + endif110:; + endif108:; + JsonParser_Advance(p); + } + goto endif104; + else103:; { _t355 = &sb; - _t356 = (char)34; + _t356 = (char)c; StringBuilder_AppendChar(_t355, _t356); - } - goto endif125; - else124:; - _t357 = (esc == 92); - if (!_t357) goto else126; - { - _t358 = &sb; - _t359 = (char)92; - StringBuilder_AppendChar(_t358, _t359); - } - goto endif127; - else126:; - { - _t360 = &sb; - _t361 = (char)92; - StringBuilder_AppendChar(_t360, _t361); - _t362 = &sb; - _t363 = (char)esc; - StringBuilder_AppendChar(_t362, _t363); - } - endif127:; - endif125:; - endif123:; - endif121:; - endif119:; - endif117:; - endif115:; JsonParser_Advance(p); } - goto endif111; - else110:; - { - _t364 = &sb; - _t365 = (char)c; - StringBuilder_AppendChar(_t364, _t365); - JsonParser_Advance(p); + endif104:; } - endif111:; - } - goto while103; - wend105:; - int _t366; - _t366 = JsonParser_Peek(p); - _t367 = (_t366 != 34); - if (!_t367) goto endif129; + goto while97; + wend98:; + int _t357; + _t357 = JsonParser_Peek(p); + _t358 = (_t357 != 34); + if (!_t358) goto endif122; { p->error = "Unterminated string"; - _t368 = &sb; - StringBuilder_Free(_t368); + _t359 = &sb; + StringBuilder_Free(_t359); return ""; } - endif129:; + endif122:; JsonParser_Advance(p); const char* result; - _t369 = &sb; - const char* _t370; - _t370 = StringBuilder_Build(_t369); - result = _t370; - _t371 = &sb; - StringBuilder_Free(_t371); + _t360 = &sb; + const char* _t361; + _t361 = StringBuilder_Build(_t360); + result = _t361; + _t362 = &sb; + StringBuilder_Free(_t362); return result; } JsonValue JsonParser_ParseNumber(JsonParser* p) { - int _t374; - int _t376; - int _t377; - int _t380; - int _t382; - int _t383; - int _t387; - unsigned int start; - unsigned int _t372; - _t372 = p->pos; - start = _t372; - int c0; + int _t365; + int _t367; + int _t368; + int _t371; int _t373; - _t373 = JsonParser_Peek(p); - c0 = _t373; - _t374 = (c0 == 45); - if (!_t374) goto endif131; + int _t374; + int _t378; + unsigned int start; + unsigned int _t363; + _t363 = p->pos; + start = _t363; + int c0; + int _t364; + _t364 = JsonParser_Peek(p); + c0 = _t364; + _t365 = (c0 == 45); + if (!_t365) goto endif124; { JsonParser_Advance(p); } - endif131:; - while132:; + endif124:; + while125:; + if (!1) goto wend126; + { + int c; + int _t366; + _t366 = JsonParser_Peek(p); + c = _t366; + bool __and_tmp_5; + _t367 = (c >= 48); + if (!_t367) goto else127; + _t368 = (c <= 57); + *(bool*)&__and_tmp_5 = _t368; + goto endif128; + else127:; + *(bool*)&__and_tmp_5 = 0; + endif128:; + bool _t369; + _t369 = *(bool*)&__and_tmp_5; + if (!_t369) goto else129; + { + JsonParser_Advance(p); + } + goto endif130; + else129:; + { + goto wend126; + } + endif130:; + } + goto while125; + wend126:; + int _t370; + _t370 = JsonParser_Peek(p); + _t371 = (_t370 == 46); + if (!_t371) goto endif132; + { + JsonParser_Advance(p); + while133:; if (!1) goto wend134; { int c; - int _t375; - _t375 = JsonParser_Peek(p); - c = _t375; - bool __and_tmp_5; - _t376 = (c >= 48); - if (!_t376) goto else135; - _t377 = (c <= 57); - *(bool*)&__and_tmp_5 = _t377; + int _t372; + _t372 = JsonParser_Peek(p); + c = _t372; + bool __and_tmp_6; + _t373 = (c >= 48); + if (!_t373) goto else135; + _t374 = (c <= 57); + *(bool*)&__and_tmp_6 = _t374; goto endif136; else135:; - *(bool*)&__and_tmp_5 = 0; + *(bool*)&__and_tmp_6 = 0; endif136:; - bool _t378; - _t378 = *(bool*)&__and_tmp_5; - if (!_t378) goto else137; + bool _t375; + _t375 = *(bool*)&__and_tmp_6; + if (!_t375) goto else137; { JsonParser_Advance(p); } @@ -2253,1098 +2289,1061 @@ JsonValue JsonParser_ParseNumber(JsonParser* p) { } endif138:; } - goto while132; + goto while133; wend134:; - int _t379; - _t379 = JsonParser_Peek(p); - _t380 = (_t379 == 46); - if (!_t380) goto endif140; - { - JsonParser_Advance(p); - while141:; - if (!1) goto wend143; - { - int c; - int _t381; - _t381 = JsonParser_Peek(p); - c = _t381; - bool __and_tmp_6; - _t382 = (c >= 48); - if (!_t382) goto else144; - _t383 = (c <= 57); - *(bool*)&__and_tmp_6 = _t383; - goto endif145; - else144:; - *(bool*)&__and_tmp_6 = 0; - endif145:; - bool _t384; - _t384 = *(bool*)&__and_tmp_6; - if (!_t384) goto else146; - { - JsonParser_Advance(p); } - goto endif147; - else146:; - { - goto wend143; - } - endif147:; - } - goto while141; - wend143:; - } - endif140:; + endif132:; const char* numStr; - const char* _t385; - _t385 = p->src; - unsigned int _t386; - _t386 = p->pos; - _t387 = _t386 - start; - const char* _t388; - _t388 = String_Slice(_t385, start, _t387); - numStr = _t388; + const char* _t376; + _t376 = p->src; + unsigned int _t377; + _t377 = p->pos; + _t378 = _t377 - start; + const char* _t379; + _t379 = String_Slice(_t376, start, _t378); + numStr = _t379; double n; - double _t389; - _t389 = String_ToFloat(numStr); - n = _t389; - JsonValue _t390; - _t390 = Json_Number(n); - return _t390; + double _t380; + _t380 = String_ToFloat(numStr); + n = _t380; + JsonValue _t381; + _t381 = Json_Number(n); + return _t381; } JsonValue JsonParser_ParseArray(JsonParser* p) { - int _t393; - int _t396; - void* _t398; - int _t400; - int _t401; + int _t384; + int _t387; + void* _t389; + int _t391; + int _t392; JsonParser_Advance(p); JsonValue arr; - JsonValue _t391; - _t391 = Json_Array(); - arr = _t391; + JsonValue _t382; + _t382 = Json_Array(); + arr = _t382; JsonParser_SkipWhitespace(p); - int _t392; - _t392 = JsonParser_Peek(p); - _t393 = (_t392 == 93); - if (!_t393) goto endif149; + int _t383; + _t383 = JsonParser_Peek(p); + _t384 = (_t383 == 93); + if (!_t384) goto endif140; { JsonParser_Advance(p); return arr; } - endif149:; - while150:; - if (!1) goto wend152; + endif140:; + while141:; + if (!1) goto wend142; { JsonParser_SkipWhitespace(p); JsonValue val; - JsonValue _t394; - _t394 = JsonParser_ParseValue(p); - val = _t394; - const char* _t395; - _t395 = p->error; - _t396 = (_t395 != ""); - if (!_t396) goto endif154; + JsonValue _t385; + _t385 = JsonParser_ParseValue(p); + val = _t385; + const char* _t386; + _t386 = p->error; + _t387 = (_t386 != ""); + if (!_t387) goto endif144; { - JsonValue _t397; - _t397 = Json_Null(); - return _t397; + JsonValue _t388; + _t388 = Json_Null(); + return _t388; } - endif154:; - _t398 = &arr; - Json_ArrayPush(_t398, val); + endif144:; + _t389 = &arr; + Json_ArrayPush(_t389, val); JsonParser_SkipWhitespace(p); int c; - int _t399; - _t399 = JsonParser_Peek(p); - c = _t399; - _t400 = (c == 93); - if (!_t400) goto endif156; + int _t390; + _t390 = JsonParser_Peek(p); + c = _t390; + _t391 = (c == 93); + if (!_t391) goto endif146; { JsonParser_Advance(p); return arr; } - endif156:; - _t401 = (c == 44); - if (!_t401) goto else157; + endif146:; + _t392 = (c == 44); + if (!_t392) goto else147; { JsonParser_Advance(p); } - goto endif158; - else157:; + goto endif148; + else147:; { p->error = "Expected ',' or ']' in array"; - JsonValue _t402; - _t402 = Json_Null(); - return _t402; + JsonValue _t393; + _t393 = Json_Null(); + return _t393; } - endif158:; + endif148:; } - goto while150; - wend152:; + goto while141; + wend142:; } JsonValue JsonParser_ParseObject(JsonParser* p) { - int _t405; - int _t408; + int _t396; + int _t399; + int _t402; + int _t406; + void* _t408; + int _t410; int _t411; - int _t415; - void* _t417; - int _t419; - int _t420; JsonParser_Advance(p); JsonValue obj; - JsonValue _t403; - _t403 = Json_Object(); - obj = _t403; + JsonValue _t394; + _t394 = Json_Object(); + obj = _t394; JsonParser_SkipWhitespace(p); - int _t404; - _t404 = JsonParser_Peek(p); - _t405 = (_t404 == 125); - if (!_t405) goto endif160; + int _t395; + _t395 = JsonParser_Peek(p); + _t396 = (_t395 == 125); + if (!_t396) goto endif150; + { + JsonParser_Advance(p); + return obj; + } + endif150:; + while151:; + if (!1) goto wend152; + { + JsonParser_SkipWhitespace(p); + const char* key; + const char* _t397; + _t397 = JsonParser_ParseString(p); + key = _t397; + const char* _t398; + _t398 = p->error; + _t399 = (_t398 != ""); + if (!_t399) goto endif154; + { + JsonValue _t400; + _t400 = Json_Null(); + return _t400; + } + endif154:; + JsonParser_SkipWhitespace(p); + int _t401; + _t401 = JsonParser_Peek(p); + _t402 = (_t401 != 58); + if (!_t402) goto endif156; + { + p->error = "Expected ':' after object key"; + JsonValue _t403; + _t403 = Json_Null(); + return _t403; + } + endif156:; + JsonParser_Advance(p); + JsonParser_SkipWhitespace(p); + JsonValue val; + JsonValue _t404; + _t404 = JsonParser_ParseValue(p); + val = _t404; + const char* _t405; + _t405 = p->error; + _t406 = (_t405 != ""); + if (!_t406) goto endif158; + { + JsonValue _t407; + _t407 = Json_Null(); + return _t407; + } + endif158:; + _t408 = &obj; + Json_ObjectSet(_t408, key, val); + JsonParser_SkipWhitespace(p); + int c; + int _t409; + _t409 = JsonParser_Peek(p); + c = _t409; + _t410 = (c == 125); + if (!_t410) goto endif160; { JsonParser_Advance(p); return obj; } endif160:; - while161:; - if (!1) goto wend163; + _t411 = (c == 44); + if (!_t411) goto else161; { - JsonParser_SkipWhitespace(p); - const char* key; - const char* _t406; - _t406 = JsonParser_ParseString(p); - key = _t406; - const char* _t407; - _t407 = p->error; - _t408 = (_t407 != ""); - if (!_t408) goto endif165; - { - JsonValue _t409; - _t409 = Json_Null(); - return _t409; + JsonParser_Advance(p); } - endif165:; - JsonParser_SkipWhitespace(p); - int _t410; - _t410 = JsonParser_Peek(p); - _t411 = (_t410 != 58); - if (!_t411) goto endif167; + goto endif162; + else161:; { - p->error = "Expected ':' after object key"; + p->error = "Expected ',' or '}' in object"; JsonValue _t412; _t412 = Json_Null(); return _t412; } - endif167:; - JsonParser_Advance(p); - JsonParser_SkipWhitespace(p); - JsonValue val; - JsonValue _t413; - _t413 = JsonParser_ParseValue(p); - val = _t413; - const char* _t414; - _t414 = p->error; - _t415 = (_t414 != ""); - if (!_t415) goto endif169; - { - JsonValue _t416; - _t416 = Json_Null(); - return _t416; + endif162:; } - endif169:; - _t417 = &obj; - Json_ObjectSet(_t417, key, val); - JsonParser_SkipWhitespace(p); - int c; - int _t418; - _t418 = JsonParser_Peek(p); - c = _t418; - _t419 = (c == 125); - if (!_t419) goto endif171; - { - JsonParser_Advance(p); - return obj; - } - endif171:; - _t420 = (c == 44); - if (!_t420) goto else172; - { - JsonParser_Advance(p); - } - goto endif173; - else172:; - { - p->error = "Expected ',' or '}' in object"; - JsonValue _t421; - _t421 = Json_Null(); - return _t421; - } - endif173:; - } - goto while161; - wend163:; + goto while151; + wend152:; } JsonValue JsonParser_ParseValue(JsonParser* p) { + int _t414; + int _t416; + int _t419; + int _t421; int _t423; - int _t425; - int _t428; - int _t430; - int _t432; + int _t427; + int _t431; + int _t435; int _t436; - int _t440; - int _t444; - int _t445; - int _t447; + int _t438; JsonParser_SkipWhitespace(p); int c; - int _t422; - _t422 = JsonParser_Peek(p); - c = _t422; - _t423 = (c == 0); - if (!_t423) goto endif175; + int _t413; + _t413 = JsonParser_Peek(p); + c = _t413; + _t414 = (c == 0); + if (!_t414) goto endif164; { p->error = "Unexpected end of input"; - JsonValue _t424; - _t424 = Json_Null(); - return _t424; + JsonValue _t415; + _t415 = Json_Null(); + return _t415; } - endif175:; - _t425 = (c == 34); - if (!_t425) goto endif177; + endif164:; + _t416 = (c == 34); + if (!_t416) goto endif166; { - const char* _t426; - _t426 = JsonParser_ParseString(p); - JsonValue _t427; - _t427 = Json_String(_t426); - return _t427; + const char* _t417; + _t417 = JsonParser_ParseString(p); + JsonValue _t418; + _t418 = Json_String(_t417); + return _t418; } - endif177:; - _t428 = (c == 123); - if (!_t428) goto endif179; + endif166:; + _t419 = (c == 123); + if (!_t419) goto endif168; + { + JsonValue _t420; + _t420 = JsonParser_ParseObject(p); + return _t420; + } + endif168:; + _t421 = (c == 91); + if (!_t421) goto endif170; + { + JsonValue _t422; + _t422 = JsonParser_ParseArray(p); + return _t422; + } + endif170:; + _t423 = (c == 116); + if (!_t423) goto endif172; + { + bool _t424; + _t424 = JsonParser_Match(p, "true"); + if (!_t424) goto endif174; + { + JsonValue _t425; + _t425 = Json_Bool(1); + return _t425; + } + endif174:; + p->error = "Expected 'true'"; + JsonValue _t426; + _t426 = Json_Null(); + return _t426; + } + endif172:; + _t427 = (c == 102); + if (!_t427) goto endif176; + { + bool _t428; + _t428 = JsonParser_Match(p, "false"); + if (!_t428) goto endif178; { JsonValue _t429; - _t429 = JsonParser_ParseObject(p); + _t429 = Json_Bool(0); return _t429; } - endif179:; - _t430 = (c == 91); - if (!_t430) goto endif181; - { - JsonValue _t431; - _t431 = JsonParser_ParseArray(p); - return _t431; + endif178:; + p->error = "Expected 'false'"; + JsonValue _t430; + _t430 = Json_Null(); + return _t430; } - endif181:; - _t432 = (c == 116); - if (!_t432) goto endif183; + endif176:; + _t431 = (c == 110); + if (!_t431) goto endif180; { - bool _t433; - _t433 = JsonParser_Match(p, "true"); - if (!_t433) goto endif185; + bool _t432; + _t432 = JsonParser_Match(p, "null"); + if (!_t432) goto endif182; { + JsonValue _t433; + _t433 = Json_Null(); + return _t433; + } + endif182:; + p->error = "Expected 'null'"; JsonValue _t434; - _t434 = Json_Bool(1); + _t434 = Json_Null(); return _t434; } - endif185:; - p->error = "Expected 'true'"; - JsonValue _t435; - _t435 = Json_Null(); - return _t435; - } - endif183:; - _t436 = (c == 102); - if (!_t436) goto endif187; - { - bool _t437; - _t437 = JsonParser_Match(p, "false"); - if (!_t437) goto endif189; - { - JsonValue _t438; - _t438 = Json_Bool(0); - return _t438; - } - endif189:; - p->error = "Expected 'false'"; - JsonValue _t439; - _t439 = Json_Null(); - return _t439; - } - endif187:; - _t440 = (c == 110); - if (!_t440) goto endif191; - { - bool _t441; - _t441 = JsonParser_Match(p, "null"); - if (!_t441) goto endif193; - { - JsonValue _t442; - _t442 = Json_Null(); - return _t442; - } - endif193:; - p->error = "Expected 'null'"; - JsonValue _t443; - _t443 = Json_Null(); - return _t443; - } - endif191:; + endif180:; bool __or_tmp_7; bool __and_tmp_8; - _t444 = (c >= 48); - if (!_t444) goto else194; - _t445 = (c <= 57); - *(bool*)&__and_tmp_8 = _t445; - goto endif195; - else194:; + _t435 = (c >= 48); + if (!_t435) goto else183; + _t436 = (c <= 57); + *(bool*)&__and_tmp_8 = _t436; + goto endif184; + else183:; *(bool*)&__and_tmp_8 = 0; - endif195:; - bool _t446; - _t446 = *(bool*)&__and_tmp_8; - if (!_t446) goto else196; + endif184:; + bool _t437; + _t437 = *(bool*)&__and_tmp_8; + if (!_t437) goto else185; *(bool*)&__or_tmp_7 = 1; - goto endif197; - else196:; - _t447 = (c == 45); - *(bool*)&__or_tmp_7 = _t447; - endif197:; - bool _t448; - _t448 = *(bool*)&__or_tmp_7; - if (!_t448) goto endif199; + goto endif186; + else185:; + _t438 = (c == 45); + *(bool*)&__or_tmp_7 = _t438; + endif186:; + bool _t439; + _t439 = *(bool*)&__or_tmp_7; + if (!_t439) goto endif188; { - JsonValue _t449; - _t449 = JsonParser_ParseNumber(p); - return _t449; + JsonValue _t440; + _t440 = JsonParser_ParseNumber(p); + return _t440; } - endif199:; + endif188:; p->error = "Unexpected character"; - JsonValue _t450; - _t450 = Json_Null(); - return _t450; + JsonValue _t441; + _t441 = Json_Null(); + return _t441; } JsonValue Json_Parse(const char* s) { - JsonParser _t452; - void* _t453; - void* _t455; - int _t457; - int _t460; + JsonParser _t443; + void* _t444; + void* _t446; + int _t448; + int _t451; JsonParser p; - unsigned int _t451; - _t451 = String_Len(s); - _t452 = (JsonParser){.src = s, .pos = 0, .len = _t451, .error = ""}; - p = _t452; + unsigned int _t442; + _t442 = String_Len(s); + _t443 = (JsonParser){.src = s, .pos = 0, .len = _t442, .error = ""}; + p = _t443; JsonValue result; - _t453 = &p; - JsonValue _t454; - _t454 = JsonParser_ParseValue(_t453); - result = _t454; - _t455 = &p; - JsonParser_SkipWhitespace(_t455); + _t444 = &p; + JsonValue _t445; + _t445 = JsonParser_ParseValue(_t444); + result = _t445; + _t446 = &p; + JsonParser_SkipWhitespace(_t446); bool __and_tmp_9; - const char* _t456; - _t456 = p.error; - _t457 = (_t456 == ""); - if (!_t457) goto else200; - unsigned int _t458; - _t458 = p.pos; - unsigned int _t459; - _t459 = p.len; - _t460 = (_t458 != _t459); - *(bool*)&__and_tmp_9 = _t460; - goto endif201; - else200:; + const char* _t447; + _t447 = p.error; + _t448 = (_t447 == ""); + if (!_t448) goto else189; + unsigned int _t449; + _t449 = p.pos; + unsigned int _t450; + _t450 = p.len; + _t451 = (_t449 != _t450); + *(bool*)&__and_tmp_9 = _t451; + goto endif190; + else189:; *(bool*)&__and_tmp_9 = 0; - endif201:; - bool _t461; - _t461 = *(bool*)&__and_tmp_9; - if (!_t461) goto endif203; + endif190:; + bool _t452; + _t452 = *(bool*)&__and_tmp_9; + if (!_t452) goto endif192; { p.error = "Trailing data after JSON value"; - JsonValue _t462; - _t462 = Json_Null(); - return _t462; + JsonValue _t453; + _t453 = Json_Null(); + return _t453; } - endif203:; + endif192:; return result; } void Json_StringifyImpl(StringBuilder* sb, JsonValue v) { - int _t464; - int _t466; - int _t469; + int _t455; + int _t457; + int _t460; + int _t463; + char _t464; + char _t466; + int _t468; + char _t469; + int _t471; int _t472; char _t473; - char _t475; - int _t477; - char _t478; - int _t480; - int _t481; - char _t482; - int _t485; - char _t486; - int _t488; + int _t476; + char _t477; + int _t479; + char _t480; + int _t482; + int _t483; + char _t484; + char _t485; + char _t488; char _t489; - int _t491; int _t492; char _t493; - char _t494; - char _t497; - char _t498; - int _t501; - char _t502; - int _t463; - _t463 = v.tag; - _t464 = (_t463 == JsonTagNull); - if (!_t464) goto endif205; + int _t454; + _t454 = v.tag; + _t455 = (_t454 == JsonTagNull); + if (!_t455) goto endif194; { StringBuilder_Append(sb, "null"); return; } - endif205:; - int _t465; - _t465 = v.tag; - _t466 = (_t465 == JsonTagBool); - if (!_t466) goto endif207; + endif194:; + int _t456; + _t456 = v.tag; + _t457 = (_t456 == JsonTagBool); + if (!_t457) goto endif196; { - bool _t467; - _t467 = v.boolVal; - if (!_t467) goto else208; + bool _t458; + _t458 = v.boolVal; + if (!_t458) goto else197; { StringBuilder_Append(sb, "true"); } - goto endif209; - else208:; + goto endif198; + else197:; { StringBuilder_Append(sb, "false"); } - endif209:; + endif198:; return; } - endif207:; - int _t468; - _t468 = v.tag; - _t469 = (_t468 == JsonTagNumber); - if (!_t469) goto endif211; + endif196:; + int _t459; + _t459 = v.tag; + _t460 = (_t459 == JsonTagNumber); + if (!_t460) goto endif200; { - double _t470; - _t470 = v.numVal; - StringBuilder_AppendFloat(sb, _t470); + double _t461; + _t461 = v.numVal; + StringBuilder_AppendFloat(sb, _t461); return; } - endif211:; - int _t471; - _t471 = v.tag; - _t472 = (_t471 == JsonTagString); - if (!_t472) goto endif213; + endif200:; + int _t462; + _t462 = v.tag; + _t463 = (_t462 == JsonTagString); + if (!_t463) goto endif202; { - _t473 = (char)34; + _t464 = (char)34; + StringBuilder_AppendChar(sb, _t464); + const char* _t465; + _t465 = v.strVal; + StringBuilder_Append(sb, _t465); + _t466 = (char)34; + StringBuilder_AppendChar(sb, _t466); + return; + } + endif202:; + int _t467; + _t467 = v.tag; + _t468 = (_t467 == JsonTagArray); + if (!_t468) goto endif204; + { + _t469 = (char)91; + StringBuilder_AppendChar(sb, _t469); + unsigned int i; + i = 0; + while205:; + unsigned int _t470; + _t470 = v.arrLen; + _t471 = (i < _t470); + if (!_t471) goto wend206; + { + _t472 = (i > 0); + if (!_t472) goto endif208; + { + _t473 = (char)44; StringBuilder_AppendChar(sb, _t473); - const char* _t474; - _t474 = v.strVal; - StringBuilder_Append(sb, _t474); - _t475 = (char)34; - StringBuilder_AppendChar(sb, _t475); + } + endif208:; + JsonValue* _t474; + _t474 = v.arrData; + JsonValue _t475; + _t475 = _t474[i]; + Json_StringifyImpl(sb, _t475); + _t476 = i + 1; + i = _t476; + } + goto while205; + wend206:; + _t477 = (char)93; + StringBuilder_AppendChar(sb, _t477); return; } - endif213:; - int _t476; - _t476 = v.tag; - _t477 = (_t476 == JsonTagArray); - if (!_t477) goto endif215; + endif204:; + int _t478; + _t478 = v.tag; + _t479 = (_t478 == JsonTagObject); + if (!_t479) goto endif210; { - _t478 = (char)91; - StringBuilder_AppendChar(sb, _t478); + _t480 = (char)123; + StringBuilder_AppendChar(sb, _t480); unsigned int i; i = 0; - while216:; - unsigned int _t479; - _t479 = v.arrLen; - _t480 = (i < _t479); - if (!_t480) goto wend218; + while211:; + unsigned int _t481; + _t481 = v.objLen; + _t482 = (i < _t481); + if (!_t482) goto wend212; { - _t481 = (i > 0); - if (!_t481) goto endif220; + _t483 = (i > 0); + if (!_t483) goto endif214; { - _t482 = (char)44; - StringBuilder_AppendChar(sb, _t482); + _t484 = (char)44; + StringBuilder_AppendChar(sb, _t484); } - endif220:; - JsonValue* _t483; - _t483 = v.arrData; - JsonValue _t484; - _t484 = _t483[i]; - Json_StringifyImpl(sb, _t484); - _t485 = i + 1; - i = _t485; - } - goto while216; - wend218:; - _t486 = (char)93; - StringBuilder_AppendChar(sb, _t486); - return; - } - endif215:; - int _t487; - _t487 = v.tag; - _t488 = (_t487 == JsonTagObject); - if (!_t488) goto endif222; - { - _t489 = (char)123; + endif214:; + _t485 = (char)34; + StringBuilder_AppendChar(sb, _t485); + const char** _t486; + _t486 = v.objKeys; + const char* _t487; + _t487 = _t486[i]; + StringBuilder_Append(sb, _t487); + _t488 = (char)34; + StringBuilder_AppendChar(sb, _t488); + _t489 = (char)58; StringBuilder_AppendChar(sb, _t489); - unsigned int i; - i = 0; - while223:; - unsigned int _t490; - _t490 = v.objLen; - _t491 = (i < _t490); - if (!_t491) goto wend225; - { - _t492 = (i > 0); - if (!_t492) goto endif227; - { - _t493 = (char)44; + JsonValue* _t490; + _t490 = v.objValues; + JsonValue _t491; + _t491 = _t490[i]; + Json_StringifyImpl(sb, _t491); + _t492 = i + 1; + i = _t492; + } + goto while211; + wend212:; + _t493 = (char)125; StringBuilder_AppendChar(sb, _t493); - } - endif227:; - _t494 = (char)34; - StringBuilder_AppendChar(sb, _t494); - const char** _t495; - _t495 = v.objKeys; - const char* _t496; - _t496 = _t495[i]; - StringBuilder_Append(sb, _t496); - _t497 = (char)34; - StringBuilder_AppendChar(sb, _t497); - _t498 = (char)58; - StringBuilder_AppendChar(sb, _t498); - JsonValue* _t499; - _t499 = v.objValues; - JsonValue _t500; - _t500 = _t499[i]; - Json_StringifyImpl(sb, _t500); - _t501 = i + 1; - i = _t501; - } - goto while223; - wend225:; - _t502 = (char)125; - StringBuilder_AppendChar(sb, _t502); return; } - endif222:; + endif210:; } const char* Json_Stringify(JsonValue v) { - void* _t504; - void* _t505; + void* _t495; + void* _t496; StringBuilder sb; - StringBuilder _t503; - _t503 = StringBuilder_New(); - sb = _t503; - _t504 = &sb; - Json_StringifyImpl(_t504, v); - _t505 = &sb; - const char* _t506; - _t506 = StringBuilder_Build(_t505); - return _t506; + StringBuilder _t494; + _t494 = StringBuilder_New(); + sb = _t494; + _t495 = &sb; + Json_StringifyImpl(_t495, v); + _t496 = &sb; + const char* _t497; + _t497 = StringBuilder_Build(_t496); + return _t497; } unsigned int String_Len(const char* s) { - unsigned int _t507; - _t507 = bux_strlen(s); - return _t507; + unsigned int _t498; + _t498 = bux_strlen(s); + return _t498; } bool String_IsNull(const char* s) { - int _t509; - int _t508; - _t508 = bux_str_is_null(s); - _t509 = (_t508 != 0); - return _t509; + int _t500; + int _t499; + _t499 = bux_str_is_null(s); + _t500 = (_t499 != 0); + return _t500; } bool String_Eq(const char* a, const char* b) { - int _t511; - int _t510; - _t510 = bux_strcmp(a, b); - _t511 = (_t510 == 0); - return _t511; + int _t502; + int _t501; + _t501 = bux_strcmp(a, b); + _t502 = (_t501 == 0); + return _t502; } const char* String_Concat(const char* a, const char* b) { - int _t514; - int _t515; - char* _t517; + int _t505; + int _t506; + char* _t508; unsigned int len_a; - unsigned int _t512; - _t512 = bux_strlen(a); - len_a = _t512; + unsigned int _t503; + _t503 = bux_strlen(a); + len_a = _t503; unsigned int len_b; - unsigned int _t513; - _t513 = bux_strlen(b); - len_b = _t513; + unsigned int _t504; + _t504 = bux_strlen(b); + len_b = _t504; unsigned int total; - _t514 = len_a + len_b; - _t515 = _t514 + 1; - total = _t515; + _t505 = len_a + len_b; + _t506 = _t505 + 1; + total = _t506; char* buf; - void* _t516; - _t516 = bux_alloc(total); - _t517 = (char*)_t516; - buf = _t517; + void* _t507; + _t507 = bux_alloc(total); + _t508 = (char*)_t507; + buf = _t508; bux_strcpy(buf, a); bux_strcat(buf, b); return buf; } const char* String_Copy(const char* s) { - int _t519; - char* _t521; + int _t510; + char* _t512; unsigned int len; - unsigned int _t518; - _t518 = bux_strlen(s); - len = _t518; + unsigned int _t509; + _t509 = bux_strlen(s); + len = _t509; char* buf; - _t519 = len + 1; - void* _t520; - _t520 = bux_alloc(_t519); - _t521 = (char*)_t520; - buf = _t521; + _t510 = len + 1; + void* _t511; + _t511 = bux_alloc(_t510); + _t512 = (char*)_t511; + buf = _t512; bux_strcpy(buf, s); return buf; } bool String_StartsWith(const char* s, const char* prefix) { - int _t524; - int _t526; + int _t515; + int _t517; unsigned int s_len; - unsigned int _t522; - _t522 = bux_strlen(s); - s_len = _t522; + unsigned int _t513; + _t513 = bux_strlen(s); + s_len = _t513; unsigned int p_len; - unsigned int _t523; - _t523 = bux_strlen(prefix); - p_len = _t523; - _t524 = (p_len > s_len); - if (!_t524) goto endif229; + unsigned int _t514; + _t514 = bux_strlen(prefix); + p_len = _t514; + _t515 = (p_len > s_len); + if (!_t515) goto endif216; { return 0; } - endif229:; + endif216:; int r; - int _t525; - _t525 = bux_strncmp(s, prefix, p_len); - r = _t525; - _t526 = (r == 0); - return _t526; + int _t516; + _t516 = bux_strncmp(s, prefix, p_len); + r = _t516; + _t517 = (r == 0); + return _t517; } bool String_EndsWith(const char* s, const char* suffix) { - int _t529; - int _t530; - int _t533; + int _t520; + int _t521; + int _t524; unsigned int s_len; - unsigned int _t527; - _t527 = bux_strlen(s); - s_len = _t527; + unsigned int _t518; + _t518 = bux_strlen(s); + s_len = _t518; unsigned int suf_len; - unsigned int _t528; - _t528 = bux_strlen(suffix); - suf_len = _t528; - _t529 = (suf_len > s_len); - if (!_t529) goto endif231; + unsigned int _t519; + _t519 = bux_strlen(suffix); + suf_len = _t519; + _t520 = (suf_len > s_len); + if (!_t520) goto endif218; { return 0; } - endif231:; + endif218:; unsigned int start; - _t530 = s_len - suf_len; - start = _t530; + _t521 = s_len - suf_len; + start = _t521; const char* tail; - const char* _t531; - _t531 = bux_str_slice(s, start, suf_len); - tail = _t531; + const char* _t522; + _t522 = bux_str_slice(s, start, suf_len); + tail = _t522; bool eq; - int _t532; - _t532 = bux_strcmp(tail, suffix); - _t533 = (_t532 == 0); - eq = _t533; + int _t523; + _t523 = bux_strcmp(tail, suffix); + _t524 = (_t523 == 0); + eq = _t524; return eq; } bool String_Contains(const char* s, const char* substr) { - int _t535; + int _t526; int r; - int _t534; - _t534 = bux_str_contains(s, substr); - r = _t534; - _t535 = (r != 0); - return _t535; + int _t525; + _t525 = bux_str_contains(s, substr); + r = _t525; + _t526 = (r != 0); + return _t526; } const char* String_Slice(const char* s, unsigned int start, unsigned int len) { - const char* _t536; - _t536 = bux_str_slice(s, start, len); - return _t536; + const char* _t527; + _t527 = bux_str_slice(s, start, len); + return _t527; } const char* String_Trim(const char* s) { - const char* _t537; - _t537 = bux_str_trim(s); - return _t537; + const char* _t528; + _t528 = bux_str_trim(s); + return _t528; } const char* String_TrimLeft(const char* s) { - const char* _t538; - _t538 = bux_str_trim_left(s); - return _t538; + const char* _t529; + _t529 = bux_str_trim_left(s); + return _t529; } const char* String_TrimRight(const char* s) { - const char* _t539; - _t539 = bux_str_trim_right(s); - return _t539; + const char* _t530; + _t530 = bux_str_trim_right(s); + return _t530; } const char* String_FromInt(int64_t n) { - const char* _t540; - _t540 = bux_int_to_str(n); - return _t540; + const char* _t531; + _t531 = bux_int_to_str(n); + return _t531; } int64_t String_ToInt(const char* s) { - int64_t _t541; - _t541 = bux_str_to_int(s); - return _t541; + int64_t _t532; + _t532 = bux_str_to_int(s); + return _t532; } StringBuilder StringBuilder_New(void) { - StringBuilder _t543; - void* _t542; - _t542 = bux_sb_new(64); - _t543 = (StringBuilder){.handle = _t542}; - return _t543; + StringBuilder _t534; + void* _t533; + _t533 = bux_sb_new(64); + _t534 = (StringBuilder){.handle = _t533}; + return _t534; } StringBuilder StringBuilder_NewCap(unsigned int cap) { - StringBuilder _t545; - void* _t544; - _t544 = bux_sb_new(cap); - _t545 = (StringBuilder){.handle = _t544}; - return _t545; + StringBuilder _t536; + void* _t535; + _t535 = bux_sb_new(cap); + _t536 = (StringBuilder){.handle = _t535}; + return _t536; } void StringBuilder_Append(StringBuilder* sb, const char* s) { - void* _t546; - _t546 = sb->handle; - bux_sb_append(_t546, s); + void* _t537; + _t537 = sb->handle; + bux_sb_append(_t537, s); } void StringBuilder_AppendInt(StringBuilder* sb, int64_t n) { - void* _t547; - _t547 = sb->handle; - bux_sb_append_int(_t547, n); + void* _t538; + _t538 = sb->handle; + bux_sb_append_int(_t538, n); } void StringBuilder_AppendFloat(StringBuilder* sb, double f) { - void* _t548; - _t548 = sb->handle; - bux_sb_append_float(_t548, f); + void* _t539; + _t539 = sb->handle; + bux_sb_append_float(_t539, f); } void StringBuilder_AppendChar(StringBuilder* sb, char c) { - void* _t549; - _t549 = sb->handle; - bux_sb_append_char(_t549, c); + void* _t540; + _t540 = sb->handle; + bux_sb_append_char(_t540, c); } const char* StringBuilder_Build(StringBuilder* sb) { - void* _t550; - _t550 = sb->handle; - const char* _t551; - _t551 = bux_sb_build(_t550); - return _t551; + void* _t541; + _t541 = sb->handle; + const char* _t542; + _t542 = bux_sb_build(_t541); + return _t542; } void StringBuilder_Free(StringBuilder* sb) { - void* _t552; - _t552 = sb->handle; - bux_sb_free(_t552); + void* _t543; + _t543 = sb->handle; + bux_sb_free(_t543); } unsigned int String_SplitCount(const char* s, const char* delim) { - unsigned int _t553; - _t553 = bux_str_split_count(s, delim); - return _t553; + unsigned int _t544; + _t544 = bux_str_split_count(s, delim); + return _t544; } const char* String_SplitPart(const char* s, const char* delim, unsigned int index) { - const char* _t554; - _t554 = bux_str_split_part(s, delim, index); - return _t554; + const char* _t545; + _t545 = bux_str_split_part(s, delim, index); + return _t545; } const char* String_Join2(const char* a, const char* b, const char* sep) { - const char* _t555; - _t555 = bux_str_join2(a, b, sep); - return _t555; + const char* _t546; + _t546 = bux_str_join2(a, b, sep); + return _t546; } const char* String_Chars(const char* s, unsigned int index) { - const char* _t556; - _t556 = bux_str_slice(s, index, 1); - return _t556; + const char* _t547; + _t547 = bux_str_slice(s, index, 1); + return _t547; } const char* String_Find(const char* haystack, const char* needle) { - const char* _t557; - _t557 = bux_strstr(haystack, needle); - return _t557; + const char* _t548; + _t548 = bux_strstr(haystack, needle); + return _t548; } unsigned int String_Offset(const char* pos, const char* base) { - unsigned int _t558; - _t558 = bux_str_offset(pos, base); - return _t558; + unsigned int _t549; + _t549 = bux_str_offset(pos, base); + return _t549; } const char* String_Replace(const char* s, const char* old, const char* new) { - int _t564; - int _t566; - int _t567; + int _t555; + int _t557; + int _t558; const char* pos; - const char* _t559; - _t559 = bux_strstr(s, old); - pos = _t559; - bool _t560; - _t560 = String_IsNull(pos); - if (!_t560) goto endif233; + const char* _t550; + _t550 = bux_strstr(s, old); + pos = _t550; + bool _t551; + _t551 = String_IsNull(pos); + if (!_t551) goto endif220; { return s; } - endif233:; + endif220:; unsigned int oldLen; - unsigned int _t561; - _t561 = bux_strlen(old); - oldLen = _t561; + unsigned int _t552; + _t552 = bux_strlen(old); + oldLen = _t552; unsigned int prefixLen; - unsigned int _t562; - _t562 = String_Offset(pos, s); - prefixLen = _t562; + unsigned int _t553; + _t553 = String_Offset(pos, s); + prefixLen = _t553; const char* prefix; - const char* _t563; - _t563 = bux_str_slice(s, 0, prefixLen); - prefix = _t563; + const char* _t554; + _t554 = bux_str_slice(s, 0, prefixLen); + prefix = _t554; const char* suffix; - _t564 = prefixLen + oldLen; - unsigned int _t565; - _t565 = bux_strlen(s); - _t566 = _t565 - prefixLen; - _t567 = _t566 - oldLen; - const char* _t568; - _t568 = bux_str_slice(s, _t564, _t567); - suffix = _t568; + _t555 = prefixLen + oldLen; + unsigned int _t556; + _t556 = bux_strlen(s); + _t557 = _t556 - prefixLen; + _t558 = _t557 - oldLen; + const char* _t559; + _t559 = bux_str_slice(s, _t555, _t558); + suffix = _t559; const char* temp; - const char* _t569; - _t569 = String_Concat(prefix, new); - temp = _t569; + const char* _t560; + _t560 = String_Concat(prefix, new); + temp = _t560; const char* result; - const char* _t570; - _t570 = String_Concat(temp, suffix); - result = _t570; + const char* _t561; + _t561 = String_Concat(temp, suffix); + result = _t561; return result; } double String_ToFloat(const char* s) { - double _t571; - _t571 = bux_str_to_float(s); - return _t571; + double _t562; + _t562 = bux_str_to_float(s); + return _t562; } const char* String_FromBool(bool b) { - if (!b) goto endif235; + if (!b) goto endif222; { return "true"; } - endif235:; + endif222:; return "false"; } const char* String_FromFloat(double f) { - const char* _t572; - _t572 = bux_float_to_string(f); - return _t572; + const char* _t563; + _t563 = bux_float_to_string(f); + return _t563; } const char* String_Format1(const char* pattern, const char* a0) { - const char* _t573; - _t573 = bux_str_format(pattern, a0, "", "", "", "", "", "", ""); - return _t573; + const char* _t564; + _t564 = bux_str_format(pattern, a0, "", "", "", "", "", "", ""); + return _t564; } const char* String_Format2(const char* pattern, const char* a0, const char* a1) { - const char* _t574; - _t574 = bux_str_format(pattern, a0, a1, "", "", "", "", "", ""); - return _t574; + const char* _t565; + _t565 = bux_str_format(pattern, a0, a1, "", "", "", "", "", ""); + return _t565; } const char* String_Format3(const char* pattern, const char* a0, const char* a1, const char* a2) { - const char* _t575; - _t575 = bux_str_format(pattern, a0, a1, a2, "", "", "", "", ""); - return _t575; + const char* _t566; + _t566 = bux_str_format(pattern, a0, a1, a2, "", "", "", "", ""); + return _t566; } void Channel_SendInt(Channel_int* ch, int value) { - void* _t577; - void* _t578; - void* _t576; - _t576 = ch->handle; - _t577 = &value; - _t578 = (void*)_t577; - bux_channel_send(_t576, _t578); + void* _t568; + void* _t569; + void* _t567; + _t567 = ch->handle; + _t568 = &value; + _t569 = (void*)_t568; + bux_channel_send(_t567, _t569); } int Channel_RecvInt(Channel_int* ch) { - void* _t580; - void* _t581; + void* _t571; + void* _t572; int result; result = 0; - void* _t579; - _t579 = ch->handle; - _t580 = &result; - _t581 = (void*)_t580; - bux_channel_recv(_t579, _t581); + void* _t570; + _t570 = ch->handle; + _t571 = &result; + _t572 = (void*)_t571; + bux_channel_recv(_t570, _t572); return result; } void Channel_SendFloat64(Channel_float64* ch, double value) { - void* _t583; - void* _t584; - void* _t582; - _t582 = ch->handle; - _t583 = &value; - _t584 = (void*)_t583; - bux_channel_send(_t582, _t584); + void* _t574; + void* _t575; + void* _t573; + _t573 = ch->handle; + _t574 = &value; + _t575 = (void*)_t574; + bux_channel_send(_t573, _t575); } double Channel_RecvFloat64(Channel_float64* ch) { - void* _t586; - void* _t587; + void* _t577; + void* _t578; double result; result = 0.0; - void* _t585; - _t585 = ch->handle; - _t586 = &result; - _t587 = (void*)_t586; - bux_channel_recv(_t585, _t587); + void* _t576; + _t576 = ch->handle; + _t577 = &result; + _t578 = (void*)_t577; + bux_channel_recv(_t576, _t578); return result; } const char* Hash_Sha1(const char* data) { - int _t589; + int _t580; int len; - unsigned int _t588; - _t588 = String_Len(data); - _t589 = (int)_t588; - len = _t589; + unsigned int _t579; + _t579 = String_Len(data); + _t580 = (int)_t579; + len = _t580; void* buf; - void* _t590; - _t590 = Alloc(20); - buf = _t590; + void* _t581; + _t581 = Alloc(20); + buf = _t581; bux_sha1(data, len, buf); const char* result; - const char* _t591; - _t591 = bux_bytes_to_hex(buf, 20); - result = _t591; + const char* _t582; + _t582 = bux_bytes_to_hex(buf, 20); + result = _t582; Free(buf); return result; } const char* Hash_Sha256(const char* data) { - int _t593; + int _t584; int len; - unsigned int _t592; - _t592 = String_Len(data); - _t593 = (int)_t592; - len = _t593; + unsigned int _t583; + _t583 = String_Len(data); + _t584 = (int)_t583; + len = _t584; void* buf; - void* _t594; - _t594 = Alloc(32); - buf = _t594; + void* _t585; + _t585 = Alloc(32); + buf = _t585; bux_sha256(data, len, buf); const char* result; - const char* _t595; - _t595 = bux_bytes_to_hex(buf, 32); - result = _t595; + const char* _t586; + _t586 = bux_bytes_to_hex(buf, 32); + result = _t586; Free(buf); return result; } const char* Hash_Sha384(const char* data) { - int _t597; + int _t588; int len; - unsigned int _t596; - _t596 = String_Len(data); - _t597 = (int)_t596; - len = _t597; + unsigned int _t587; + _t587 = String_Len(data); + _t588 = (int)_t587; + len = _t588; void* buf; - void* _t598; - _t598 = Alloc(48); - buf = _t598; + void* _t589; + _t589 = Alloc(48); + buf = _t589; bux_sha384(data, len, buf); const char* result; - const char* _t599; - _t599 = bux_bytes_to_hex(buf, 48); - result = _t599; + const char* _t590; + _t590 = bux_bytes_to_hex(buf, 48); + result = _t590; Free(buf); return result; } const char* Hash_Sha512(const char* data) { - int _t601; + int _t592; int len; - unsigned int _t600; - _t600 = String_Len(data); - _t601 = (int)_t600; - len = _t601; + unsigned int _t591; + _t591 = String_Len(data); + _t592 = (int)_t591; + len = _t592; void* buf; - void* _t602; - _t602 = Alloc(64); - buf = _t602; + void* _t593; + _t593 = Alloc(64); + buf = _t593; bux_sha512(data, len, buf); const char* result; - const char* _t603; - _t603 = bux_bytes_to_hex(buf, 64); - result = _t603; + const char* _t594; + _t594 = bux_bytes_to_hex(buf, 64); + result = _t594; Free(buf); return result; } void Hash_Sha256Raw(const char* data, void* out) { - int _t605; - unsigned int _t604; - _t604 = String_Len(data); - _t605 = (int)_t604; - bux_sha256(data, _t605, out); + int _t596; + unsigned int _t595; + _t595 = String_Len(data); + _t596 = (int)_t595; + bux_sha256(data, _t596, out); } void Hash_Sha384Raw(const char* data, void* out) { - int _t607; - unsigned int _t606; - _t606 = String_Len(data); - _t607 = (int)_t606; - bux_sha384(data, _t607, out); + int _t598; + unsigned int _t597; + _t597 = String_Len(data); + _t598 = (int)_t597; + bux_sha384(data, _t598, out); } void Hash_Sha512Raw(const char* data, void* out) { - int _t609; - unsigned int _t608; - _t608 = String_Len(data); - _t609 = (int)_t608; - bux_sha512(data, _t609, out); + int _t600; + unsigned int _t599; + _t599 = String_Len(data); + _t600 = (int)_t599; + bux_sha512(data, _t600, out); } int Hash_Sha1Size(void) { @@ -3364,1455 +3363,1455 @@ int Hash_Sha512Size(void) { } const char* Base64_Encode(const char* s) { - int _t611; - unsigned int _t610; - _t610 = String_Len(s); - _t611 = (int)_t610; - const char* _t612; - _t612 = bux_base64_encode(s, _t611); - return _t612; + int _t602; + unsigned int _t601; + _t601 = String_Len(s); + _t602 = (int)_t601; + const char* _t603; + _t603 = bux_base64_encode(s, _t602); + return _t603; } const char* Base64_Decode(const char* s) { - int _t614; - void* _t615; + int _t605; + void* _t606; int outlen; outlen = 0; - unsigned int _t613; - _t613 = String_Len(s); - _t614 = (int)_t613; - _t615 = &outlen; - const char* _t616; - _t616 = bux_base64_decode(s, _t614, _t615); - return _t616; + unsigned int _t604; + _t604 = String_Len(s); + _t605 = (int)_t604; + _t606 = &outlen; + const char* _t607; + _t607 = bux_base64_decode(s, _t605, _t606); + return _t607; } const char* Base64URL_Encode(const char* s) { - int _t618; - unsigned int _t617; - _t617 = String_Len(s); - _t618 = (int)_t617; - const char* _t619; - _t619 = bux_base64url_encode(s, _t618); - return _t619; + int _t609; + unsigned int _t608; + _t608 = String_Len(s); + _t609 = (int)_t608; + const char* _t610; + _t610 = bux_base64url_encode(s, _t609); + return _t610; } const char* Base64URL_Decode(const char* s) { - int _t621; - void* _t622; + int _t612; + void* _t613; int outlen; outlen = 0; - unsigned int _t620; - _t620 = String_Len(s); - _t621 = (int)_t620; - _t622 = &outlen; - const char* _t623; - _t623 = bux_base64url_decode(s, _t621, _t622); - return _t623; + unsigned int _t611; + _t611 = String_Len(s); + _t612 = (int)_t611; + _t613 = &outlen; + const char* _t614; + _t614 = bux_base64url_decode(s, _t612, _t613); + return _t614; } const char* Hmac_Sha256(const char* key, const char* message) { - int _t625; - int _t627; + int _t616; + int _t618; int kl; - unsigned int _t624; - _t624 = String_Len(key); - _t625 = (int)_t624; - kl = _t625; + unsigned int _t615; + _t615 = String_Len(key); + _t616 = (int)_t615; + kl = _t616; int ml; - unsigned int _t626; - _t626 = String_Len(message); - _t627 = (int)_t626; - ml = _t627; + unsigned int _t617; + _t617 = String_Len(message); + _t618 = (int)_t617; + ml = _t618; void* buf; - void* _t628; - _t628 = Alloc(32); - buf = _t628; + void* _t619; + _t619 = Alloc(32); + buf = _t619; bux_hmac_sha256(key, kl, message, ml, buf); const char* result; - const char* _t629; - _t629 = bux_bytes_to_hex(buf, 32); - result = _t629; + const char* _t620; + _t620 = bux_bytes_to_hex(buf, 32); + result = _t620; Free(buf); return result; } void Hmac_Sha256Raw(const char* key, const char* message, void* out) { - int _t631; - int _t633; - unsigned int _t630; - _t630 = String_Len(key); - _t631 = (int)_t630; - unsigned int _t632; - _t632 = String_Len(message); - _t633 = (int)_t632; - bux_hmac_sha256(key, _t631, message, _t633, out); + int _t622; + int _t624; + unsigned int _t621; + _t621 = String_Len(key); + _t622 = (int)_t621; + unsigned int _t623; + _t623 = String_Len(message); + _t624 = (int)_t623; + bux_hmac_sha256(key, _t622, message, _t624, out); } const char* Hmac_Sha256Base64(const char* key, const char* message) { - int _t635; - int _t637; - const char* _t639; + int _t626; + int _t628; + const char* _t630; int kl; - unsigned int _t634; - _t634 = String_Len(key); - _t635 = (int)_t634; - kl = _t635; + unsigned int _t625; + _t625 = String_Len(key); + _t626 = (int)_t625; + kl = _t626; int ml; - unsigned int _t636; - _t636 = String_Len(message); - _t637 = (int)_t636; - ml = _t637; + unsigned int _t627; + _t627 = String_Len(message); + _t628 = (int)_t627; + ml = _t628; void* buf; - void* _t638; - _t638 = Alloc(32); - buf = _t638; + void* _t629; + _t629 = Alloc(32); + buf = _t629; bux_hmac_sha256(key, kl, message, ml, buf); const char* result; - _t639 = (const char*)buf; - const char* _t640; - _t640 = bux_base64_encode(_t639, 32); - result = _t640; + _t630 = (const char*)buf; + const char* _t631; + _t631 = bux_base64_encode(_t630, 32); + result = _t631; Free(buf); return result; } const char* Hmac_Sha384(const char* key, const char* message) { - int _t642; - int _t644; + int _t633; + int _t635; int kl; - unsigned int _t641; - _t641 = String_Len(key); - _t642 = (int)_t641; - kl = _t642; + unsigned int _t632; + _t632 = String_Len(key); + _t633 = (int)_t632; + kl = _t633; int ml; - unsigned int _t643; - _t643 = String_Len(message); - _t644 = (int)_t643; - ml = _t644; + unsigned int _t634; + _t634 = String_Len(message); + _t635 = (int)_t634; + ml = _t635; void* buf; - void* _t645; - _t645 = Alloc(48); - buf = _t645; + void* _t636; + _t636 = Alloc(48); + buf = _t636; bux_hmac_sha384(key, kl, message, ml, buf); const char* result; - const char* _t646; - _t646 = bux_bytes_to_hex(buf, 48); - result = _t646; + const char* _t637; + _t637 = bux_bytes_to_hex(buf, 48); + result = _t637; Free(buf); return result; } void Hmac_Sha384Raw(const char* key, const char* message, void* out) { - int _t648; - int _t650; - unsigned int _t647; - _t647 = String_Len(key); - _t648 = (int)_t647; - unsigned int _t649; - _t649 = String_Len(message); - _t650 = (int)_t649; - bux_hmac_sha384(key, _t648, message, _t650, out); + int _t639; + int _t641; + unsigned int _t638; + _t638 = String_Len(key); + _t639 = (int)_t638; + unsigned int _t640; + _t640 = String_Len(message); + _t641 = (int)_t640; + bux_hmac_sha384(key, _t639, message, _t641, out); } const char* Hmac_Sha384Base64(const char* key, const char* message) { - int _t652; - int _t654; - const char* _t656; + int _t643; + int _t645; + const char* _t647; int kl; - unsigned int _t651; - _t651 = String_Len(key); - _t652 = (int)_t651; - kl = _t652; + unsigned int _t642; + _t642 = String_Len(key); + _t643 = (int)_t642; + kl = _t643; int ml; - unsigned int _t653; - _t653 = String_Len(message); - _t654 = (int)_t653; - ml = _t654; + unsigned int _t644; + _t644 = String_Len(message); + _t645 = (int)_t644; + ml = _t645; void* buf; - void* _t655; - _t655 = Alloc(48); - buf = _t655; + void* _t646; + _t646 = Alloc(48); + buf = _t646; bux_hmac_sha384(key, kl, message, ml, buf); const char* result; - _t656 = (const char*)buf; - const char* _t657; - _t657 = bux_base64_encode(_t656, 48); - result = _t657; + _t647 = (const char*)buf; + const char* _t648; + _t648 = bux_base64_encode(_t647, 48); + result = _t648; Free(buf); return result; } const char* Hmac_Sha512(const char* key, const char* message) { - int _t659; - int _t661; + int _t650; + int _t652; int kl; - unsigned int _t658; - _t658 = String_Len(key); - _t659 = (int)_t658; - kl = _t659; + unsigned int _t649; + _t649 = String_Len(key); + _t650 = (int)_t649; + kl = _t650; int ml; - unsigned int _t660; - _t660 = String_Len(message); - _t661 = (int)_t660; - ml = _t661; + unsigned int _t651; + _t651 = String_Len(message); + _t652 = (int)_t651; + ml = _t652; void* buf; - void* _t662; - _t662 = Alloc(64); - buf = _t662; + void* _t653; + _t653 = Alloc(64); + buf = _t653; bux_hmac_sha512(key, kl, message, ml, buf); const char* result; - const char* _t663; - _t663 = bux_bytes_to_hex(buf, 64); - result = _t663; + const char* _t654; + _t654 = bux_bytes_to_hex(buf, 64); + result = _t654; Free(buf); return result; } void Hmac_Sha512Raw(const char* key, const char* message, void* out) { - int _t665; - int _t667; - unsigned int _t664; - _t664 = String_Len(key); - _t665 = (int)_t664; - unsigned int _t666; - _t666 = String_Len(message); - _t667 = (int)_t666; - bux_hmac_sha512(key, _t665, message, _t667, out); + int _t656; + int _t658; + unsigned int _t655; + _t655 = String_Len(key); + _t656 = (int)_t655; + unsigned int _t657; + _t657 = String_Len(message); + _t658 = (int)_t657; + bux_hmac_sha512(key, _t656, message, _t658, out); } const char* Hmac_Sha512Base64(const char* key, const char* message) { - int _t669; - int _t671; - const char* _t673; + int _t660; + int _t662; + const char* _t664; int kl; - unsigned int _t668; - _t668 = String_Len(key); - _t669 = (int)_t668; - kl = _t669; + unsigned int _t659; + _t659 = String_Len(key); + _t660 = (int)_t659; + kl = _t660; int ml; - unsigned int _t670; - _t670 = String_Len(message); - _t671 = (int)_t670; - ml = _t671; + unsigned int _t661; + _t661 = String_Len(message); + _t662 = (int)_t661; + ml = _t662; void* buf; - void* _t672; - _t672 = Alloc(64); - buf = _t672; + void* _t663; + _t663 = Alloc(64); + buf = _t663; bux_hmac_sha512(key, kl, message, ml, buf); const char* result; - _t673 = (const char*)buf; - const char* _t674; - _t674 = bux_base64_encode(_t673, 64); - result = _t674; + _t664 = (const char*)buf; + const char* _t665; + _t665 = bux_base64_encode(_t664, 64); + result = _t665; Free(buf); return result; } const char* Random_Bytes(int n) { - int _t675; - unsigned int _t676; - int _t679; - const char* _t680; - _t675 = (n <= 0); - if (!_t675) goto endif237; + int _t666; + unsigned int _t667; + int _t670; + const char* _t671; + _t666 = (n <= 0); + if (!_t666) goto endif224; { return ""; } - endif237:; + endif224:; void* buf; - _t676 = (unsigned int)n; - void* _t677; - _t677 = Alloc(_t676); - buf = _t677; - int _t678; - _t678 = bux_random_bytes(buf, n); - _t679 = (_t678 != 1); - if (!_t679) goto endif239; + _t667 = (unsigned int)n; + void* _t668; + _t668 = Alloc(_t667); + buf = _t668; + int _t669; + _t669 = bux_random_bytes(buf, n); + _t670 = (_t669 != 1); + if (!_t670) goto endif226; { Free(buf); return ""; } - endif239:; - _t680 = (const char*)buf; - return _t680; + endif226:; + _t671 = (const char*)buf; + return _t671; } const char* Random_Hex(int n) { - int _t681; - unsigned int _t682; - int _t685; - _t681 = (n <= 0); - if (!_t681) goto endif241; + int _t672; + unsigned int _t673; + int _t676; + _t672 = (n <= 0); + if (!_t672) goto endif228; { return ""; } - endif241:; + endif228:; void* buf; - _t682 = (unsigned int)n; - void* _t683; - _t683 = Alloc(_t682); - buf = _t683; - int _t684; - _t684 = bux_random_bytes(buf, n); - _t685 = (_t684 != 1); - if (!_t685) goto endif243; + _t673 = (unsigned int)n; + void* _t674; + _t674 = Alloc(_t673); + buf = _t674; + int _t675; + _t675 = bux_random_bytes(buf, n); + _t676 = (_t675 != 1); + if (!_t676) goto endif230; { Free(buf); return ""; } - endif243:; + endif230:; const char* result; - const char* _t686; - _t686 = bux_bytes_to_hex(buf, n); - result = _t686; + const char* _t677; + _t677 = bux_bytes_to_hex(buf, n); + result = _t677; Free(buf); return result; } const char* Random_Base64(int n) { - int _t687; - unsigned int _t688; - int _t691; - const char* _t692; - _t687 = (n <= 0); - if (!_t687) goto endif245; + int _t678; + unsigned int _t679; + int _t682; + const char* _t683; + _t678 = (n <= 0); + if (!_t678) goto endif232; { return ""; } - endif245:; + endif232:; void* buf; - _t688 = (unsigned int)n; - void* _t689; - _t689 = Alloc(_t688); - buf = _t689; - int _t690; - _t690 = bux_random_bytes(buf, n); - _t691 = (_t690 != 1); - if (!_t691) goto endif247; + _t679 = (unsigned int)n; + void* _t680; + _t680 = Alloc(_t679); + buf = _t680; + int _t681; + _t681 = bux_random_bytes(buf, n); + _t682 = (_t681 != 1); + if (!_t682) goto endif234; { Free(buf); return ""; } - endif247:; + endif234:; const char* result; - _t692 = (const char*)buf; - const char* _t693; - _t693 = bux_base64_encode(_t692, n); - result = _t693; + _t683 = (const char*)buf; + const char* _t684; + _t684 = bux_base64_encode(_t683, n); + result = _t684; Free(buf); return result; } unsigned int Random_Uint32(void) { - int _t696; - unsigned int* _t697; - unsigned int _t698; + int _t687; + unsigned int* _t688; + unsigned int _t689; void* buf; - void* _t694; - _t694 = Alloc(4); - buf = _t694; - int _t695; - _t695 = bux_random_bytes(buf, 4); - _t696 = (_t695 != 1); - if (!_t696) goto endif249; + void* _t685; + _t685 = Alloc(4); + buf = _t685; + int _t686; + _t686 = bux_random_bytes(buf, 4); + _t687 = (_t686 != 1); + if (!_t687) goto endif236; { Free(buf); return 0; } - endif249:; + endif236:; unsigned int* ptr; - _t697 = (unsigned int*)buf; - ptr = _t697; + _t688 = (unsigned int*)buf; + ptr = _t688; unsigned int val; - _t698 = *ptr; - val = _t698; + _t689 = *ptr; + val = _t689; Free(buf); return val; } const char* Aes_GenerateKey(void) { - unsigned int _t699; - int _t702; - const char* _t703; + unsigned int _t690; + int _t693; + const char* _t694; void* buf; - _t699 = (unsigned int)AES_KEY_SIZE; - void* _t700; - _t700 = Alloc(_t699); - buf = _t700; - int _t701; - _t701 = bux_random_bytes(buf, AES_KEY_SIZE); - _t702 = (_t701 != 1); - if (!_t702) goto endif251; + _t690 = (unsigned int)AES_KEY_SIZE; + void* _t691; + _t691 = Alloc(_t690); + buf = _t691; + int _t692; + _t692 = bux_random_bytes(buf, AES_KEY_SIZE); + _t693 = (_t692 != 1); + if (!_t693) goto endif238; { Free(buf); return ""; } - endif251:; - _t703 = (const char*)buf; - return _t703; + endif238:; + _t694 = (const char*)buf; + return _t694; } const char* Aes_GenerateIV(void) { - unsigned int _t704; - int _t707; - const char* _t708; + unsigned int _t695; + int _t698; + const char* _t699; void* buf; - _t704 = (unsigned int)AES_IV_SIZE; - void* _t705; - _t705 = Alloc(_t704); - buf = _t705; - int _t706; - _t706 = bux_random_bytes(buf, AES_IV_SIZE); - _t707 = (_t706 != 1); - if (!_t707) goto endif253; + _t695 = (unsigned int)AES_IV_SIZE; + void* _t696; + _t696 = Alloc(_t695); + buf = _t696; + int _t697; + _t697 = bux_random_bytes(buf, AES_IV_SIZE); + _t698 = (_t697 != 1); + if (!_t698) goto endif240; { Free(buf); return ""; } - endif253:; - _t708 = (const char*)buf; - return _t708; + endif240:; + _t699 = (const char*)buf; + return _t699; } const char* Aes_CbcEncrypt(const char* plain, const char* key, const char* iv) { - int _t710; - void* _t711; + int _t701; + void* _t702; int outlen; outlen = 0; - unsigned int _t709; - _t709 = String_Len(plain); - _t710 = (int)_t709; - _t711 = &outlen; - const char* _t712; - _t712 = bux_aes_256_cbc_encrypt(plain, _t710, key, iv, _t711); - return _t712; + unsigned int _t700; + _t700 = String_Len(plain); + _t701 = (int)_t700; + _t702 = &outlen; + const char* _t703; + _t703 = bux_aes_256_cbc_encrypt(plain, _t701, key, iv, _t702); + return _t703; } const char* Aes_CbcDecrypt(const char* cipher, const char* key, const char* iv) { - int _t714; - void* _t715; + int _t705; + void* _t706; int outlen; outlen = 0; - unsigned int _t713; - _t713 = String_Len(cipher); - _t714 = (int)_t713; - _t715 = &outlen; - const char* _t716; - _t716 = bux_aes_256_cbc_decrypt(cipher, _t714, key, iv, _t715); - return _t716; + unsigned int _t704; + _t704 = String_Len(cipher); + _t705 = (int)_t704; + _t706 = &outlen; + const char* _t707; + _t707 = bux_aes_256_cbc_decrypt(cipher, _t705, key, iv, _t706); + return _t707; } const char* Aes_GcmEncrypt(const char* plain, const char* key, const char* iv, void* tag) { - int _t718; - void* _t719; + int _t709; + void* _t710; int outlen; outlen = 0; - unsigned int _t717; - _t717 = String_Len(plain); - _t718 = (int)_t717; - _t719 = &outlen; - const char* _t720; - _t720 = bux_aes_256_gcm_encrypt(plain, _t718, key, iv, tag, _t719); - return _t720; + unsigned int _t708; + _t708 = String_Len(plain); + _t709 = (int)_t708; + _t710 = &outlen; + const char* _t711; + _t711 = bux_aes_256_gcm_encrypt(plain, _t709, key, iv, tag, _t710); + return _t711; } const char* Aes_GcmDecrypt(const char* cipher, const char* key, const char* iv, const char* tag) { - int _t722; - void* _t723; + int _t713; + void* _t714; int outlen; outlen = 0; - unsigned int _t721; - _t721 = String_Len(cipher); - _t722 = (int)_t721; - _t723 = &outlen; - const char* _t724; - _t724 = bux_aes_256_gcm_decrypt(cipher, _t722, key, iv, tag, _t723); - return _t724; + unsigned int _t712; + _t712 = String_Len(cipher); + _t713 = (int)_t712; + _t714 = &outlen; + const char* _t715; + _t715 = bux_aes_256_gcm_decrypt(cipher, _t713, key, iv, tag, _t714); + return _t715; } const char* Jwt_MakeHeader(JwtAlg alg) { - int _t725; - int _t726; - int _t727; - int _t728; - int _t729; - int _t730; - int _t731; - int _t732; - int _t733; - _t725 = (alg == JwtAlg_HS256); - if (!_t725) goto endif255; + int _t716; + int _t717; + int _t718; + int _t719; + int _t720; + int _t721; + int _t722; + int _t723; + int _t724; + _t716 = (alg == JwtAlg_HS256); + if (!_t716) goto endif242; { return "{\"alg\":\"HS256\",\"typ\":\"JWT\"}"; } - endif255:; - _t726 = (alg == JwtAlg_HS384); - if (!_t726) goto endif257; + endif242:; + _t717 = (alg == JwtAlg_HS384); + if (!_t717) goto endif244; { return "{\"alg\":\"HS384\",\"typ\":\"JWT\"}"; } - endif257:; - _t727 = (alg == JwtAlg_HS512); - if (!_t727) goto endif259; + endif244:; + _t718 = (alg == JwtAlg_HS512); + if (!_t718) goto endif246; { return "{\"alg\":\"HS512\",\"typ\":\"JWT\"}"; } - endif259:; - _t728 = (alg == JwtAlg_RS256); - if (!_t728) goto endif261; + endif246:; + _t719 = (alg == JwtAlg_RS256); + if (!_t719) goto endif248; { return "{\"alg\":\"RS256\",\"typ\":\"JWT\"}"; } - endif261:; - _t729 = (alg == JwtAlg_RS384); - if (!_t729) goto endif263; + endif248:; + _t720 = (alg == JwtAlg_RS384); + if (!_t720) goto endif250; { return "{\"alg\":\"RS384\",\"typ\":\"JWT\"}"; } - endif263:; - _t730 = (alg == JwtAlg_RS512); - if (!_t730) goto endif265; + endif250:; + _t721 = (alg == JwtAlg_RS512); + if (!_t721) goto endif252; { return "{\"alg\":\"RS512\",\"typ\":\"JWT\"}"; } - endif265:; - _t731 = (alg == JwtAlg_ES256); - if (!_t731) goto endif267; + endif252:; + _t722 = (alg == JwtAlg_ES256); + if (!_t722) goto endif254; { return "{\"alg\":\"ES256\",\"typ\":\"JWT\"}"; } - endif267:; - _t732 = (alg == JwtAlg_ES384); - if (!_t732) goto endif269; + endif254:; + _t723 = (alg == JwtAlg_ES384); + if (!_t723) goto endif256; { return "{\"alg\":\"ES384\",\"typ\":\"JWT\"}"; } - endif269:; - _t733 = (alg == JwtAlg_EdDSA); - if (!_t733) goto endif271; + endif256:; + _t724 = (alg == JwtAlg_EdDSA); + if (!_t724) goto endif258; { return "{\"alg\":\"EdDSA\",\"typ\":\"JWT\"}"; } - endif271:; + endif258:; return "{\"alg\":\"none\",\"typ\":\"JWT\"}"; } const char* Jwt_Sign(JwtAlg alg, const char* signingInput, const char* key) { - int _t734; - const char* _t736; - int _t738; - const char* _t740; + int _t725; + const char* _t727; + int _t729; + const char* _t731; + int _t733; + const char* _t735; + int _t737; + int _t740; int _t742; - const char* _t744; - int _t746; - int _t749; - int _t751; - int _t754; - int _t756; - int _t759; - int _t761; - int _t764; - int _t766; - int _t769; - int _t771; - _t734 = (alg == JwtAlg_HS256); - if (!_t734) goto endif273; + int _t745; + int _t747; + int _t750; + int _t752; + int _t755; + int _t757; + int _t760; + int _t762; + _t725 = (alg == JwtAlg_HS256); + if (!_t725) goto endif260; { void* buf; - void* _t735; - _t735 = Alloc(32); - buf = _t735; + void* _t726; + _t726 = Alloc(32); + buf = _t726; Hmac_Sha256Raw(key, signingInput, buf); const char* result; - _t736 = (const char*)buf; - const char* _t737; - _t737 = bux_base64_encode(_t736, 32); - result = _t737; + _t727 = (const char*)buf; + const char* _t728; + _t728 = bux_base64_encode(_t727, 32); + result = _t728; Free(buf); return result; } - endif273:; - _t738 = (alg == JwtAlg_HS384); - if (!_t738) goto endif275; + endif260:; + _t729 = (alg == JwtAlg_HS384); + if (!_t729) goto endif262; { void* buf; - void* _t739; - _t739 = Alloc(48); - buf = _t739; + void* _t730; + _t730 = Alloc(48); + buf = _t730; Hmac_Sha384Raw(key, signingInput, buf); const char* result; - _t740 = (const char*)buf; - const char* _t741; - _t741 = bux_base64_encode(_t740, 48); - result = _t741; + _t731 = (const char*)buf; + const char* _t732; + _t732 = bux_base64_encode(_t731, 48); + result = _t732; Free(buf); return result; } - endif275:; - _t742 = (alg == JwtAlg_HS512); - if (!_t742) goto endif277; + endif262:; + _t733 = (alg == JwtAlg_HS512); + if (!_t733) goto endif264; { void* buf; - void* _t743; - _t743 = Alloc(64); - buf = _t743; + void* _t734; + _t734 = Alloc(64); + buf = _t734; Hmac_Sha512Raw(key, signingInput, buf); const char* result; - _t744 = (const char*)buf; - const char* _t745; - _t745 = bux_base64_encode(_t744, 64); - result = _t745; + _t735 = (const char*)buf; + const char* _t736; + _t736 = bux_base64_encode(_t735, 64); + result = _t736; Free(buf); return result; } - endif277:; - _t746 = (alg == JwtAlg_RS256); - if (!_t746) goto endif279; + endif264:; + _t737 = (alg == JwtAlg_RS256); + if (!_t737) goto endif266; { const char* raw; - const char* _t747; - _t747 = Rsa_SignSha256(key, signingInput); - raw = _t747; - unsigned int _t748; - _t748 = String_Len(raw); - _t749 = (int)_t748; - const char* _t750; - _t750 = bux_base64_encode(raw, _t749); - return _t750; + const char* _t738; + _t738 = Rsa_SignSha256(key, signingInput); + raw = _t738; + unsigned int _t739; + _t739 = String_Len(raw); + _t740 = (int)_t739; + const char* _t741; + _t741 = bux_base64_encode(raw, _t740); + return _t741; } - endif279:; - _t751 = (alg == JwtAlg_RS384); - if (!_t751) goto endif281; + endif266:; + _t742 = (alg == JwtAlg_RS384); + if (!_t742) goto endif268; { const char* raw; - const char* _t752; - _t752 = Rsa_SignSha384(key, signingInput); - raw = _t752; - unsigned int _t753; - _t753 = String_Len(raw); - _t754 = (int)_t753; - const char* _t755; - _t755 = bux_base64_encode(raw, _t754); - return _t755; + const char* _t743; + _t743 = Rsa_SignSha384(key, signingInput); + raw = _t743; + unsigned int _t744; + _t744 = String_Len(raw); + _t745 = (int)_t744; + const char* _t746; + _t746 = bux_base64_encode(raw, _t745); + return _t746; } - endif281:; - _t756 = (alg == JwtAlg_RS512); - if (!_t756) goto endif283; + endif268:; + _t747 = (alg == JwtAlg_RS512); + if (!_t747) goto endif270; { const char* raw; - const char* _t757; - _t757 = Rsa_SignSha512(key, signingInput); - raw = _t757; - unsigned int _t758; - _t758 = String_Len(raw); - _t759 = (int)_t758; - const char* _t760; - _t760 = bux_base64_encode(raw, _t759); - return _t760; + const char* _t748; + _t748 = Rsa_SignSha512(key, signingInput); + raw = _t748; + unsigned int _t749; + _t749 = String_Len(raw); + _t750 = (int)_t749; + const char* _t751; + _t751 = bux_base64_encode(raw, _t750); + return _t751; } - endif283:; - _t761 = (alg == JwtAlg_ES256); - if (!_t761) goto endif285; + endif270:; + _t752 = (alg == JwtAlg_ES256); + if (!_t752) goto endif272; { const char* raw; - const char* _t762; - _t762 = Ecdsa_SignP256(key, signingInput); - raw = _t762; - unsigned int _t763; - _t763 = String_Len(raw); - _t764 = (int)_t763; - const char* _t765; - _t765 = bux_base64_encode(raw, _t764); - return _t765; + const char* _t753; + _t753 = Ecdsa_SignP256(key, signingInput); + raw = _t753; + unsigned int _t754; + _t754 = String_Len(raw); + _t755 = (int)_t754; + const char* _t756; + _t756 = bux_base64_encode(raw, _t755); + return _t756; } - endif285:; - _t766 = (alg == JwtAlg_ES384); - if (!_t766) goto endif287; + endif272:; + _t757 = (alg == JwtAlg_ES384); + if (!_t757) goto endif274; { const char* raw; - const char* _t767; - _t767 = Ecdsa_SignP384(key, signingInput); - raw = _t767; - unsigned int _t768; - _t768 = String_Len(raw); - _t769 = (int)_t768; - const char* _t770; - _t770 = bux_base64_encode(raw, _t769); - return _t770; + const char* _t758; + _t758 = Ecdsa_SignP384(key, signingInput); + raw = _t758; + unsigned int _t759; + _t759 = String_Len(raw); + _t760 = (int)_t759; + const char* _t761; + _t761 = bux_base64_encode(raw, _t760); + return _t761; } - endif287:; - _t771 = (alg == JwtAlg_EdDSA); - if (!_t771) goto endif289; + endif274:; + _t762 = (alg == JwtAlg_EdDSA); + if (!_t762) goto endif276; { - const char* _t772; - _t772 = Ed25519_Sign(key, signingInput); - return _t772; + const char* _t763; + _t763 = Ed25519_Sign(key, signingInput); + return _t763; } - endif289:; + endif276:; return ""; } bool Jwt_Verify(JwtAlg alg, const char* signingInput, const char* signatureB64, const char* key) { - int _t773; - const char* _t775; - int _t778; - const char* _t780; + int _t764; + const char* _t766; + int _t769; + const char* _t771; + int _t774; + const char* _t776; + int _t779; + int _t781; int _t783; - const char* _t785; - int _t788; - int _t790; - int _t792; - int _t794; - int _t796; - int _t798; - _t773 = (alg == JwtAlg_HS256); - if (!_t773) goto endif291; + int _t785; + int _t787; + int _t789; + _t764 = (alg == JwtAlg_HS256); + if (!_t764) goto endif278; { void* expectBuf; - void* _t774; - _t774 = Alloc(32); - expectBuf = _t774; + void* _t765; + _t765 = Alloc(32); + expectBuf = _t765; Hmac_Sha256Raw(key, signingInput, expectBuf); const char* expectB64; - _t775 = (const char*)expectBuf; - const char* _t776; - _t776 = bux_base64_encode(_t775, 32); - expectB64 = _t776; + _t766 = (const char*)expectBuf; + const char* _t767; + _t767 = bux_base64_encode(_t766, 32); + expectB64 = _t767; Free(expectBuf); - bool _t777; - _t777 = String_Eq(expectB64, signatureB64); - return _t777; + bool _t768; + _t768 = String_Eq(expectB64, signatureB64); + return _t768; } - endif291:; - _t778 = (alg == JwtAlg_HS384); - if (!_t778) goto endif293; + endif278:; + _t769 = (alg == JwtAlg_HS384); + if (!_t769) goto endif280; { void* expectBuf; - void* _t779; - _t779 = Alloc(48); - expectBuf = _t779; + void* _t770; + _t770 = Alloc(48); + expectBuf = _t770; Hmac_Sha384Raw(key, signingInput, expectBuf); const char* expectB64; - _t780 = (const char*)expectBuf; - const char* _t781; - _t781 = bux_base64_encode(_t780, 48); - expectB64 = _t781; + _t771 = (const char*)expectBuf; + const char* _t772; + _t772 = bux_base64_encode(_t771, 48); + expectB64 = _t772; Free(expectBuf); - bool _t782; - _t782 = String_Eq(expectB64, signatureB64); - return _t782; + bool _t773; + _t773 = String_Eq(expectB64, signatureB64); + return _t773; } - endif293:; - _t783 = (alg == JwtAlg_HS512); - if (!_t783) goto endif295; + endif280:; + _t774 = (alg == JwtAlg_HS512); + if (!_t774) goto endif282; { void* expectBuf; - void* _t784; - _t784 = Alloc(64); - expectBuf = _t784; + void* _t775; + _t775 = Alloc(64); + expectBuf = _t775; Hmac_Sha512Raw(key, signingInput, expectBuf); const char* expectB64; - _t785 = (const char*)expectBuf; - const char* _t786; - _t786 = bux_base64_encode(_t785, 64); - expectB64 = _t786; + _t776 = (const char*)expectBuf; + const char* _t777; + _t777 = bux_base64_encode(_t776, 64); + expectB64 = _t777; Free(expectBuf); - bool _t787; - _t787 = String_Eq(expectB64, signatureB64); - return _t787; + bool _t778; + _t778 = String_Eq(expectB64, signatureB64); + return _t778; } - endif295:; - _t788 = (alg == JwtAlg_RS256); - if (!_t788) goto endif297; + endif282:; + _t779 = (alg == JwtAlg_RS256); + if (!_t779) goto endif284; { - bool _t789; - _t789 = Rsa_VerifySha256(key, signingInput, signatureB64); - return _t789; + bool _t780; + _t780 = Rsa_VerifySha256(key, signingInput, signatureB64); + return _t780; } - endif297:; - _t790 = (alg == JwtAlg_RS384); - if (!_t790) goto endif299; + endif284:; + _t781 = (alg == JwtAlg_RS384); + if (!_t781) goto endif286; { - bool _t791; - _t791 = Rsa_VerifySha384(key, signingInput, signatureB64); - return _t791; + bool _t782; + _t782 = Rsa_VerifySha384(key, signingInput, signatureB64); + return _t782; } - endif299:; - _t792 = (alg == JwtAlg_RS512); - if (!_t792) goto endif301; + endif286:; + _t783 = (alg == JwtAlg_RS512); + if (!_t783) goto endif288; { - bool _t793; - _t793 = Rsa_VerifySha512(key, signingInput, signatureB64); - return _t793; + bool _t784; + _t784 = Rsa_VerifySha512(key, signingInput, signatureB64); + return _t784; } - endif301:; - _t794 = (alg == JwtAlg_ES256); - if (!_t794) goto endif303; + endif288:; + _t785 = (alg == JwtAlg_ES256); + if (!_t785) goto endif290; { - bool _t795; - _t795 = Ecdsa_VerifyP256(key, signingInput, signatureB64); - return _t795; + bool _t786; + _t786 = Ecdsa_VerifyP256(key, signingInput, signatureB64); + return _t786; } - endif303:; - _t796 = (alg == JwtAlg_ES384); - if (!_t796) goto endif305; + endif290:; + _t787 = (alg == JwtAlg_ES384); + if (!_t787) goto endif292; { - bool _t797; - _t797 = Ecdsa_VerifyP384(key, signingInput, signatureB64); - return _t797; + bool _t788; + _t788 = Ecdsa_VerifyP384(key, signingInput, signatureB64); + return _t788; } - endif305:; - _t798 = (alg == JwtAlg_EdDSA); - if (!_t798) goto endif307; + endif292:; + _t789 = (alg == JwtAlg_EdDSA); + if (!_t789) goto endif294; { - bool _t799; - _t799 = Ed25519_Verify(key, signatureB64, signingInput); - return _t799; + bool _t790; + _t790 = Ed25519_Verify(key, signatureB64, signingInput); + return _t790; } - endif307:; + endif294:; return 0; } const char* Jwt_Encode(const char* headerJson, const char* payloadJson, JwtAlg alg, const char* key) { const char* headerB64; - const char* _t800; - _t800 = Base64URL_Encode(headerJson); - headerB64 = _t800; + const char* _t791; + _t791 = Base64URL_Encode(headerJson); + headerB64 = _t791; const char* payloadB64; - const char* _t801; - _t801 = Base64URL_Encode(payloadJson); - payloadB64 = _t801; + const char* _t792; + _t792 = Base64URL_Encode(payloadJson); + payloadB64 = _t792; const char* signingInput; - const char* _t802; - _t802 = String_Concat(headerB64, "."); - signingInput = _t802; + const char* _t793; + _t793 = String_Concat(headerB64, "."); + signingInput = _t793; const char* signingInputFull; - const char* _t803; - _t803 = String_Concat(signingInput, payloadB64); - signingInputFull = _t803; + const char* _t794; + _t794 = String_Concat(signingInput, payloadB64); + signingInputFull = _t794; const char* sigB64; - const char* _t804; - _t804 = Jwt_Sign(alg, signingInputFull, key); - sigB64 = _t804; + const char* _t795; + _t795 = Jwt_Sign(alg, signingInputFull, key); + sigB64 = _t795; const char* part1; - const char* _t805; - _t805 = String_Concat(signingInputFull, "."); - part1 = _t805; - const char* _t806; - _t806 = String_Concat(part1, sigB64); - return _t806; + const char* _t796; + _t796 = String_Concat(signingInputFull, "."); + part1 = _t796; + const char* _t797; + _t797 = String_Concat(part1, sigB64); + return _t797; } bool Jwt_Decode(const char* token, JwtAlg alg, const char* key, const char** headerOut, const char** payloadOut) { - int _t808; - int _t815; + int _t799; + int _t806; unsigned int partCount; - unsigned int _t807; - _t807 = bux_str_split_count(token, "."); - partCount = _t807; - _t808 = (partCount != 3); - if (!_t808) goto endif309; + unsigned int _t798; + _t798 = bux_str_split_count(token, "."); + partCount = _t798; + _t799 = (partCount != 3); + if (!_t799) goto endif296; { return 0; } - endif309:; + endif296:; const char* headerB64; - const char* _t809; - _t809 = bux_str_split_part(token, ".", 0); - headerB64 = _t809; + const char* _t800; + _t800 = bux_str_split_part(token, ".", 0); + headerB64 = _t800; const char* payloadB64; - const char* _t810; - _t810 = bux_str_split_part(token, ".", 1); - payloadB64 = _t810; + const char* _t801; + _t801 = bux_str_split_part(token, ".", 1); + payloadB64 = _t801; const char* sigB64; - const char* _t811; - _t811 = bux_str_split_part(token, ".", 2); - sigB64 = _t811; + const char* _t802; + _t802 = bux_str_split_part(token, ".", 2); + sigB64 = _t802; const char* input; - const char* _t812; - _t812 = String_Concat(headerB64, "."); - input = _t812; + const char* _t803; + _t803 = String_Concat(headerB64, "."); + input = _t803; const char* signingInput; - const char* _t813; - _t813 = String_Concat(input, payloadB64); - signingInput = _t813; - bool _t814; - _t814 = Jwt_Verify(alg, signingInput, sigB64, key); - _t815 = !_t814; - if (!_t815) goto endif311; + const char* _t804; + _t804 = String_Concat(input, payloadB64); + signingInput = _t804; + bool _t805; + _t805 = Jwt_Verify(alg, signingInput, sigB64, key); + _t806 = !_t805; + if (!_t806) goto endif298; { return 0; } - endif311:; - const char* _t816; - _t816 = Base64URL_Decode(headerB64); - headerOut[0] = _t816; - const char* _t817; - _t817 = Base64URL_Decode(payloadB64); - payloadOut[0] = _t817; + endif298:; + const char* _t807; + _t807 = Base64URL_Decode(headerB64); + headerOut[0] = _t807; + const char* _t808; + _t808 = Base64URL_Decode(payloadB64); + payloadOut[0] = _t808; return 1; } const char* Jwt_EncodeHS256(const char* payloadJson, const char* secret) { const char* header; - const char* _t818; - _t818 = Jwt_MakeHeader(JwtAlg_HS256); - header = _t818; - const char* _t819; - _t819 = Jwt_Encode(header, payloadJson, JwtAlg_HS256, secret); - return _t819; + const char* _t809; + _t809 = Jwt_MakeHeader(JwtAlg_HS256); + header = _t809; + const char* _t810; + _t810 = Jwt_Encode(header, payloadJson, JwtAlg_HS256, secret); + return _t810; } const char* Jwt_EncodeHS384(const char* payloadJson, const char* secret) { const char* header; - const char* _t820; - _t820 = Jwt_MakeHeader(JwtAlg_HS384); - header = _t820; - const char* _t821; - _t821 = Jwt_Encode(header, payloadJson, JwtAlg_HS384, secret); - return _t821; + const char* _t811; + _t811 = Jwt_MakeHeader(JwtAlg_HS384); + header = _t811; + const char* _t812; + _t812 = Jwt_Encode(header, payloadJson, JwtAlg_HS384, secret); + return _t812; } const char* Jwt_EncodeHS512(const char* payloadJson, const char* secret) { const char* header; - const char* _t822; - _t822 = Jwt_MakeHeader(JwtAlg_HS512); - header = _t822; - const char* _t823; - _t823 = Jwt_Encode(header, payloadJson, JwtAlg_HS512, secret); - return _t823; + const char* _t813; + _t813 = Jwt_MakeHeader(JwtAlg_HS512); + header = _t813; + const char* _t814; + _t814 = Jwt_Encode(header, payloadJson, JwtAlg_HS512, secret); + return _t814; } const char* Jwt_EncodeRS256(const char* payloadJson, const char* pemPrivateKey) { const char* header; - const char* _t824; - _t824 = Jwt_MakeHeader(JwtAlg_RS256); - header = _t824; - const char* _t825; - _t825 = Jwt_Encode(header, payloadJson, JwtAlg_RS256, pemPrivateKey); - return _t825; + const char* _t815; + _t815 = Jwt_MakeHeader(JwtAlg_RS256); + header = _t815; + const char* _t816; + _t816 = Jwt_Encode(header, payloadJson, JwtAlg_RS256, pemPrivateKey); + return _t816; } const char* Jwt_EncodeES256(const char* payloadJson, const char* pemPrivateKey) { const char* header; - const char* _t826; - _t826 = Jwt_MakeHeader(JwtAlg_ES256); - header = _t826; - const char* _t827; - _t827 = Jwt_Encode(header, payloadJson, JwtAlg_ES256, pemPrivateKey); - return _t827; + const char* _t817; + _t817 = Jwt_MakeHeader(JwtAlg_ES256); + header = _t817; + const char* _t818; + _t818 = Jwt_Encode(header, payloadJson, JwtAlg_ES256, pemPrivateKey); + return _t818; } const char* Jwt_EncodeEdDSA(const char* payloadJson, const char* rawPrivKey) { const char* header; - const char* _t828; - _t828 = Jwt_MakeHeader(JwtAlg_EdDSA); - header = _t828; - const char* _t829; - _t829 = Jwt_Encode(header, payloadJson, JwtAlg_EdDSA, rawPrivKey); - return _t829; + const char* _t819; + _t819 = Jwt_MakeHeader(JwtAlg_EdDSA); + header = _t819; + const char* _t820; + _t820 = Jwt_Encode(header, payloadJson, JwtAlg_EdDSA, rawPrivKey); + return _t820; } const char* Ecdsa_SignP256(const char* pemPrivateKey, const char* data) { - int _t831; - int _t833; - void* _t834; + int _t822; + int _t824; + void* _t825; int siglen; siglen = 0; - unsigned int _t830; - _t830 = String_Len(pemPrivateKey); - _t831 = (int)_t830; - unsigned int _t832; - _t832 = String_Len(data); - _t833 = (int)_t832; - _t834 = &siglen; - const char* _t835; - _t835 = bux_ecdsa_sign_p256(pemPrivateKey, _t831, data, _t833, _t834); - return _t835; + unsigned int _t821; + _t821 = String_Len(pemPrivateKey); + _t822 = (int)_t821; + unsigned int _t823; + _t823 = String_Len(data); + _t824 = (int)_t823; + _t825 = &siglen; + const char* _t826; + _t826 = bux_ecdsa_sign_p256(pemPrivateKey, _t822, data, _t824, _t825); + return _t826; } const char* Ecdsa_SignP256Base64(const char* pemPrivateKey, const char* data) { - int _t838; + int _t829; const char* raw; - const char* _t836; - _t836 = Ecdsa_SignP256(pemPrivateKey, data); - raw = _t836; - unsigned int _t837; - _t837 = String_Len(raw); - _t838 = (int)_t837; - const char* _t839; - _t839 = bux_base64_encode(raw, _t838); - return _t839; + const char* _t827; + _t827 = Ecdsa_SignP256(pemPrivateKey, data); + raw = _t827; + unsigned int _t828; + _t828 = String_Len(raw); + _t829 = (int)_t828; + const char* _t830; + _t830 = bux_base64_encode(raw, _t829); + return _t830; } bool Ecdsa_VerifyP256(const char* pemPublicKey, const char* data, const char* signature) { - int _t841; - int _t843; - int _t845; - int _t847; + int _t832; + int _t834; + int _t836; + int _t838; int r; - unsigned int _t840; - _t840 = String_Len(pemPublicKey); - _t841 = (int)_t840; - unsigned int _t842; - _t842 = String_Len(data); - _t843 = (int)_t842; - unsigned int _t844; - _t844 = String_Len(signature); - _t845 = (int)_t844; - int _t846; - _t846 = bux_ecdsa_verify_p256(pemPublicKey, _t841, data, _t843, signature, _t845); - r = _t846; - _t847 = (r == 1); - return _t847; + unsigned int _t831; + _t831 = String_Len(pemPublicKey); + _t832 = (int)_t831; + unsigned int _t833; + _t833 = String_Len(data); + _t834 = (int)_t833; + unsigned int _t835; + _t835 = String_Len(signature); + _t836 = (int)_t835; + int _t837; + _t837 = bux_ecdsa_verify_p256(pemPublicKey, _t832, data, _t834, signature, _t836); + r = _t837; + _t838 = (r == 1); + return _t838; } bool Ecdsa_VerifyP256Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t849; - void* _t850; + int _t840; + void* _t841; int outlen; outlen = 0; const char* sig; - unsigned int _t848; - _t848 = String_Len(signatureB64); - _t849 = (int)_t848; - _t850 = &outlen; - const char* _t851; - _t851 = bux_base64_decode(signatureB64, _t849, _t850); - sig = _t851; - bool _t852; - _t852 = Ecdsa_VerifyP256(pemPublicKey, data, sig); - return _t852; + unsigned int _t839; + _t839 = String_Len(signatureB64); + _t840 = (int)_t839; + _t841 = &outlen; + const char* _t842; + _t842 = bux_base64_decode(signatureB64, _t840, _t841); + sig = _t842; + bool _t843; + _t843 = Ecdsa_VerifyP256(pemPublicKey, data, sig); + return _t843; } const char* Ecdsa_SignP384(const char* pemPrivateKey, const char* data) { - int _t854; - int _t856; - void* _t857; + int _t845; + int _t847; + void* _t848; int siglen; siglen = 0; - unsigned int _t853; - _t853 = String_Len(pemPrivateKey); - _t854 = (int)_t853; - unsigned int _t855; - _t855 = String_Len(data); - _t856 = (int)_t855; - _t857 = &siglen; - const char* _t858; - _t858 = bux_ecdsa_sign_p384(pemPrivateKey, _t854, data, _t856, _t857); - return _t858; + unsigned int _t844; + _t844 = String_Len(pemPrivateKey); + _t845 = (int)_t844; + unsigned int _t846; + _t846 = String_Len(data); + _t847 = (int)_t846; + _t848 = &siglen; + const char* _t849; + _t849 = bux_ecdsa_sign_p384(pemPrivateKey, _t845, data, _t847, _t848); + return _t849; } const char* Ecdsa_SignP384Base64(const char* pemPrivateKey, const char* data) { - int _t861; + int _t852; const char* raw; - const char* _t859; - _t859 = Ecdsa_SignP384(pemPrivateKey, data); - raw = _t859; - unsigned int _t860; - _t860 = String_Len(raw); - _t861 = (int)_t860; - const char* _t862; - _t862 = bux_base64_encode(raw, _t861); - return _t862; + const char* _t850; + _t850 = Ecdsa_SignP384(pemPrivateKey, data); + raw = _t850; + unsigned int _t851; + _t851 = String_Len(raw); + _t852 = (int)_t851; + const char* _t853; + _t853 = bux_base64_encode(raw, _t852); + return _t853; } bool Ecdsa_VerifyP384(const char* pemPublicKey, const char* data, const char* signature) { - int _t864; - int _t866; - int _t868; - int _t870; + int _t855; + int _t857; + int _t859; + int _t861; int r; - unsigned int _t863; - _t863 = String_Len(pemPublicKey); - _t864 = (int)_t863; - unsigned int _t865; - _t865 = String_Len(data); - _t866 = (int)_t865; - unsigned int _t867; - _t867 = String_Len(signature); - _t868 = (int)_t867; - int _t869; - _t869 = bux_ecdsa_verify_p384(pemPublicKey, _t864, data, _t866, signature, _t868); - r = _t869; - _t870 = (r == 1); - return _t870; + unsigned int _t854; + _t854 = String_Len(pemPublicKey); + _t855 = (int)_t854; + unsigned int _t856; + _t856 = String_Len(data); + _t857 = (int)_t856; + unsigned int _t858; + _t858 = String_Len(signature); + _t859 = (int)_t858; + int _t860; + _t860 = bux_ecdsa_verify_p384(pemPublicKey, _t855, data, _t857, signature, _t859); + r = _t860; + _t861 = (r == 1); + return _t861; } bool Ecdsa_VerifyP384Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t872; - void* _t873; + int _t863; + void* _t864; int outlen; outlen = 0; const char* sig; - unsigned int _t871; - _t871 = String_Len(signatureB64); - _t872 = (int)_t871; - _t873 = &outlen; - const char* _t874; - _t874 = bux_base64_decode(signatureB64, _t872, _t873); - sig = _t874; - bool _t875; - _t875 = Ecdsa_VerifyP384(pemPublicKey, data, sig); - return _t875; + unsigned int _t862; + _t862 = String_Len(signatureB64); + _t863 = (int)_t862; + _t864 = &outlen; + const char* _t865; + _t865 = bux_base64_decode(signatureB64, _t863, _t864); + sig = _t865; + bool _t866; + _t866 = Ecdsa_VerifyP384(pemPublicKey, data, sig); + return _t866; } bool Ed25519_Keypair(void* pubKey, void* privKey) { - int _t877; + int _t868; int r; - int _t876; - _t876 = bux_ed25519_keypair(pubKey, privKey); - r = _t876; - _t877 = (r == 1); - return _t877; + int _t867; + _t867 = bux_ed25519_keypair(pubKey, privKey); + r = _t867; + _t868 = (r == 1); + return _t868; } const char* Ed25519_KeypairBase64(void) { - unsigned int _t878; - unsigned int _t880; - int _t883; - const char* _t884; - const char* _t886; + unsigned int _t869; + unsigned int _t871; + int _t874; + const char* _t875; + const char* _t877; void* pubBuf; - _t878 = (unsigned int)ED25519_PUBKEY_SIZE; - void* _t879; - _t879 = Alloc(_t878); - pubBuf = _t879; + _t869 = (unsigned int)ED25519_PUBKEY_SIZE; + void* _t870; + _t870 = Alloc(_t869); + pubBuf = _t870; void* priv; - _t880 = (unsigned int)ED25519_PRIVKEY_SIZE; - void* _t881; - _t881 = Alloc(_t880); - priv = _t881; - int _t882; - _t882 = bux_ed25519_keypair(pubBuf, priv); - _t883 = (_t882 != 1); - if (!_t883) goto endif313; + _t871 = (unsigned int)ED25519_PRIVKEY_SIZE; + void* _t872; + _t872 = Alloc(_t871); + priv = _t872; + int _t873; + _t873 = bux_ed25519_keypair(pubBuf, priv); + _t874 = (_t873 != 1); + if (!_t874) goto endif300; { Free(pubBuf); Free(priv); return ""; } - endif313:; + endif300:; const char* pubB64; - _t884 = (const char*)pubBuf; - const char* _t885; - _t885 = bux_base64_encode(_t884, ED25519_PUBKEY_SIZE); - pubB64 = _t885; + _t875 = (const char*)pubBuf; + const char* _t876; + _t876 = bux_base64_encode(_t875, ED25519_PUBKEY_SIZE); + pubB64 = _t876; const char* privB64; - _t886 = (const char*)priv; - const char* _t887; - _t887 = bux_base64_encode(_t886, ED25519_PRIVKEY_SIZE); - privB64 = _t887; + _t877 = (const char*)priv; + const char* _t878; + _t878 = bux_base64_encode(_t877, ED25519_PRIVKEY_SIZE); + privB64 = _t878; Free(pubBuf); Free(priv); const char* pair; - const char* _t888; - _t888 = String_Concat(pubB64, ":"); - pair = _t888; - const char* _t889; - _t889 = String_Concat(pair, privB64); - return _t889; + const char* _t879; + _t879 = String_Concat(pubB64, ":"); + pair = _t879; + const char* _t880; + _t880 = String_Concat(pair, privB64); + return _t880; } const char* Ed25519_Sign(const char* privKey, const char* data) { - unsigned int _t890; - int _t893; - int _t895; - const char* _t896; + unsigned int _t881; + int _t884; + int _t886; + const char* _t887; void* sig; - _t890 = (unsigned int)ED25519_SIG_SIZE; - void* _t891; - _t891 = Alloc(_t890); - sig = _t891; - unsigned int _t892; - _t892 = String_Len(data); - _t893 = (int)_t892; - int _t894; - _t894 = bux_ed25519_sign(privKey, data, _t893, sig); - _t895 = (_t894 != 1); - if (!_t895) goto endif315; + _t881 = (unsigned int)ED25519_SIG_SIZE; + void* _t882; + _t882 = Alloc(_t881); + sig = _t882; + unsigned int _t883; + _t883 = String_Len(data); + _t884 = (int)_t883; + int _t885; + _t885 = bux_ed25519_sign(privKey, data, _t884, sig); + _t886 = (_t885 != 1); + if (!_t886) goto endif302; { Free(sig); return ""; } - endif315:; - _t896 = (const char*)sig; - return _t896; + endif302:; + _t887 = (const char*)sig; + return _t887; } const char* Ed25519_SignBase64(const char* privKey, const char* data) { - int _t899; + int _t890; const char* sig; - const char* _t897; - _t897 = Ed25519_Sign(privKey, data); - sig = _t897; - unsigned int _t898; - _t898 = String_Len(sig); - _t899 = (_t898 == 0); - if (!_t899) goto endif317; + const char* _t888; + _t888 = Ed25519_Sign(privKey, data); + sig = _t888; + unsigned int _t889; + _t889 = String_Len(sig); + _t890 = (_t889 == 0); + if (!_t890) goto endif304; { return ""; } - endif317:; - const char* _t900; - _t900 = bux_base64_encode(sig, ED25519_SIG_SIZE); - return _t900; + endif304:; + const char* _t891; + _t891 = bux_base64_encode(sig, ED25519_SIG_SIZE); + return _t891; } bool Ed25519_Verify(const char* pubKey, const char* signature, const char* data) { - int _t902; - int _t904; + int _t893; + int _t895; int r; - unsigned int _t901; - _t901 = String_Len(data); - _t902 = (int)_t901; - int _t903; - _t903 = bux_ed25519_verify(pubKey, signature, data, _t902); - r = _t903; - _t904 = (r == 1); - return _t904; + unsigned int _t892; + _t892 = String_Len(data); + _t893 = (int)_t892; + int _t894; + _t894 = bux_ed25519_verify(pubKey, signature, data, _t893); + r = _t894; + _t895 = (r == 1); + return _t895; } bool Ed25519_VerifyBase64(const char* pubKey, const char* signatureB64, const char* data) { - int _t906; - void* _t907; - int _t909; + int _t897; + void* _t898; + int _t900; int outlen; outlen = 0; const char* sig; - unsigned int _t905; - _t905 = String_Len(signatureB64); - _t906 = (int)_t905; - _t907 = &outlen; - const char* _t908; - _t908 = bux_base64_decode(signatureB64, _t906, _t907); - sig = _t908; - _t909 = (outlen != ED25519_SIG_SIZE); - if (!_t909) goto endif319; + unsigned int _t896; + _t896 = String_Len(signatureB64); + _t897 = (int)_t896; + _t898 = &outlen; + const char* _t899; + _t899 = bux_base64_decode(signatureB64, _t897, _t898); + sig = _t899; + _t900 = (outlen != ED25519_SIG_SIZE); + if (!_t900) goto endif306; { return 0; } - endif319:; - bool _t910; - _t910 = Ed25519_Verify(pubKey, sig, data); - return _t910; + endif306:; + bool _t901; + _t901 = Ed25519_Verify(pubKey, sig, data); + return _t901; } const char* Rsa_SignSha256(const char* pemPrivateKey, const char* data) { - int _t912; - int _t914; - void* _t915; + int _t903; + int _t905; + void* _t906; int siglen; siglen = 0; - unsigned int _t911; - _t911 = String_Len(pemPrivateKey); - _t912 = (int)_t911; - unsigned int _t913; - _t913 = String_Len(data); - _t914 = (int)_t913; - _t915 = &siglen; - const char* _t916; - _t916 = bux_rsa_sign_sha256(pemPrivateKey, _t912, data, _t914, _t915); - return _t916; + unsigned int _t902; + _t902 = String_Len(pemPrivateKey); + _t903 = (int)_t902; + unsigned int _t904; + _t904 = String_Len(data); + _t905 = (int)_t904; + _t906 = &siglen; + const char* _t907; + _t907 = bux_rsa_sign_sha256(pemPrivateKey, _t903, data, _t905, _t906); + return _t907; } const char* Rsa_SignSha384(const char* pemPrivateKey, const char* data) { - int _t918; - int _t920; - void* _t921; + int _t909; + int _t911; + void* _t912; int siglen; siglen = 0; - unsigned int _t917; - _t917 = String_Len(pemPrivateKey); - _t918 = (int)_t917; - unsigned int _t919; - _t919 = String_Len(data); - _t920 = (int)_t919; - _t921 = &siglen; - const char* _t922; - _t922 = bux_rsa_sign_sha384(pemPrivateKey, _t918, data, _t920, _t921); - return _t922; + unsigned int _t908; + _t908 = String_Len(pemPrivateKey); + _t909 = (int)_t908; + unsigned int _t910; + _t910 = String_Len(data); + _t911 = (int)_t910; + _t912 = &siglen; + const char* _t913; + _t913 = bux_rsa_sign_sha384(pemPrivateKey, _t909, data, _t911, _t912); + return _t913; } const char* Rsa_SignSha512(const char* pemPrivateKey, const char* data) { - int _t924; - int _t926; - void* _t927; + int _t915; + int _t917; + void* _t918; int siglen; siglen = 0; - unsigned int _t923; - _t923 = String_Len(pemPrivateKey); - _t924 = (int)_t923; - unsigned int _t925; - _t925 = String_Len(data); - _t926 = (int)_t925; - _t927 = &siglen; - const char* _t928; - _t928 = bux_rsa_sign_sha512(pemPrivateKey, _t924, data, _t926, _t927); - return _t928; + unsigned int _t914; + _t914 = String_Len(pemPrivateKey); + _t915 = (int)_t914; + unsigned int _t916; + _t916 = String_Len(data); + _t917 = (int)_t916; + _t918 = &siglen; + const char* _t919; + _t919 = bux_rsa_sign_sha512(pemPrivateKey, _t915, data, _t917, _t918); + return _t919; } const char* Rsa_SignSha256Base64(const char* pemPrivateKey, const char* data) { - int _t931; + int _t922; const char* raw; - const char* _t929; - _t929 = Rsa_SignSha256(pemPrivateKey, data); - raw = _t929; - unsigned int _t930; - _t930 = String_Len(raw); - _t931 = (int)_t930; - const char* _t932; - _t932 = bux_base64_encode(raw, _t931); - return _t932; + const char* _t920; + _t920 = Rsa_SignSha256(pemPrivateKey, data); + raw = _t920; + unsigned int _t921; + _t921 = String_Len(raw); + _t922 = (int)_t921; + const char* _t923; + _t923 = bux_base64_encode(raw, _t922); + return _t923; } const char* Rsa_SignSha384Base64(const char* pemPrivateKey, const char* data) { - int _t935; + int _t926; const char* raw; - const char* _t933; - _t933 = Rsa_SignSha384(pemPrivateKey, data); - raw = _t933; - unsigned int _t934; - _t934 = String_Len(raw); - _t935 = (int)_t934; - const char* _t936; - _t936 = bux_base64_encode(raw, _t935); - return _t936; + const char* _t924; + _t924 = Rsa_SignSha384(pemPrivateKey, data); + raw = _t924; + unsigned int _t925; + _t925 = String_Len(raw); + _t926 = (int)_t925; + const char* _t927; + _t927 = bux_base64_encode(raw, _t926); + return _t927; } const char* Rsa_SignSha512Base64(const char* pemPrivateKey, const char* data) { - int _t939; + int _t930; const char* raw; - const char* _t937; - _t937 = Rsa_SignSha512(pemPrivateKey, data); - raw = _t937; - unsigned int _t938; - _t938 = String_Len(raw); - _t939 = (int)_t938; - const char* _t940; - _t940 = bux_base64_encode(raw, _t939); - return _t940; + const char* _t928; + _t928 = Rsa_SignSha512(pemPrivateKey, data); + raw = _t928; + unsigned int _t929; + _t929 = String_Len(raw); + _t930 = (int)_t929; + const char* _t931; + _t931 = bux_base64_encode(raw, _t930); + return _t931; } bool Rsa_VerifySha256(const char* pemPublicKey, const char* data, const char* signature) { - int _t942; - int _t944; - int _t946; - int _t948; + int _t933; + int _t935; + int _t937; + int _t939; int r; - unsigned int _t941; - _t941 = String_Len(pemPublicKey); - _t942 = (int)_t941; - unsigned int _t943; - _t943 = String_Len(data); - _t944 = (int)_t943; - unsigned int _t945; - _t945 = String_Len(signature); - _t946 = (int)_t945; - int _t947; - _t947 = bux_rsa_verify_sha256(pemPublicKey, _t942, data, _t944, signature, _t946); - r = _t947; - _t948 = (r == 1); - return _t948; + unsigned int _t932; + _t932 = String_Len(pemPublicKey); + _t933 = (int)_t932; + unsigned int _t934; + _t934 = String_Len(data); + _t935 = (int)_t934; + unsigned int _t936; + _t936 = String_Len(signature); + _t937 = (int)_t936; + int _t938; + _t938 = bux_rsa_verify_sha256(pemPublicKey, _t933, data, _t935, signature, _t937); + r = _t938; + _t939 = (r == 1); + return _t939; } bool Rsa_VerifySha384(const char* pemPublicKey, const char* data, const char* signature) { - int _t950; - int _t952; - int _t954; - int _t956; + int _t941; + int _t943; + int _t945; + int _t947; int r; - unsigned int _t949; - _t949 = String_Len(pemPublicKey); - _t950 = (int)_t949; - unsigned int _t951; - _t951 = String_Len(data); - _t952 = (int)_t951; - unsigned int _t953; - _t953 = String_Len(signature); - _t954 = (int)_t953; - int _t955; - _t955 = bux_rsa_verify_sha384(pemPublicKey, _t950, data, _t952, signature, _t954); - r = _t955; - _t956 = (r == 1); - return _t956; + unsigned int _t940; + _t940 = String_Len(pemPublicKey); + _t941 = (int)_t940; + unsigned int _t942; + _t942 = String_Len(data); + _t943 = (int)_t942; + unsigned int _t944; + _t944 = String_Len(signature); + _t945 = (int)_t944; + int _t946; + _t946 = bux_rsa_verify_sha384(pemPublicKey, _t941, data, _t943, signature, _t945); + r = _t946; + _t947 = (r == 1); + return _t947; } bool Rsa_VerifySha512(const char* pemPublicKey, const char* data, const char* signature) { - int _t958; - int _t960; - int _t962; - int _t964; + int _t949; + int _t951; + int _t953; + int _t955; int r; - unsigned int _t957; - _t957 = String_Len(pemPublicKey); - _t958 = (int)_t957; - unsigned int _t959; - _t959 = String_Len(data); - _t960 = (int)_t959; - unsigned int _t961; - _t961 = String_Len(signature); - _t962 = (int)_t961; - int _t963; - _t963 = bux_rsa_verify_sha512(pemPublicKey, _t958, data, _t960, signature, _t962); - r = _t963; - _t964 = (r == 1); - return _t964; + unsigned int _t948; + _t948 = String_Len(pemPublicKey); + _t949 = (int)_t948; + unsigned int _t950; + _t950 = String_Len(data); + _t951 = (int)_t950; + unsigned int _t952; + _t952 = String_Len(signature); + _t953 = (int)_t952; + int _t954; + _t954 = bux_rsa_verify_sha512(pemPublicKey, _t949, data, _t951, signature, _t953); + r = _t954; + _t955 = (r == 1); + return _t955; } bool Rsa_VerifySha256Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t966; - void* _t967; + int _t957; + void* _t958; int outlen; outlen = 0; const char* sig; - unsigned int _t965; - _t965 = String_Len(signatureB64); - _t966 = (int)_t965; - _t967 = &outlen; - const char* _t968; - _t968 = bux_base64_decode(signatureB64, _t966, _t967); - sig = _t968; - bool _t969; - _t969 = Rsa_VerifySha256(pemPublicKey, data, sig); - return _t969; + unsigned int _t956; + _t956 = String_Len(signatureB64); + _t957 = (int)_t956; + _t958 = &outlen; + const char* _t959; + _t959 = bux_base64_decode(signatureB64, _t957, _t958); + sig = _t959; + bool _t960; + _t960 = Rsa_VerifySha256(pemPublicKey, data, sig); + return _t960; } bool Rsa_VerifySha384Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t971; - void* _t972; + int _t962; + void* _t963; int outlen; outlen = 0; const char* sig; - unsigned int _t970; - _t970 = String_Len(signatureB64); - _t971 = (int)_t970; - _t972 = &outlen; - const char* _t973; - _t973 = bux_base64_decode(signatureB64, _t971, _t972); - sig = _t973; - bool _t974; - _t974 = Rsa_VerifySha384(pemPublicKey, data, sig); - return _t974; + unsigned int _t961; + _t961 = String_Len(signatureB64); + _t962 = (int)_t961; + _t963 = &outlen; + const char* _t964; + _t964 = bux_base64_decode(signatureB64, _t962, _t963); + sig = _t964; + bool _t965; + _t965 = Rsa_VerifySha384(pemPublicKey, data, sig); + return _t965; } bool Rsa_VerifySha512Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t976; - void* _t977; + int _t967; + void* _t968; int outlen; outlen = 0; const char* sig; - unsigned int _t975; - _t975 = String_Len(signatureB64); - _t976 = (int)_t975; - _t977 = &outlen; - const char* _t978; - _t978 = bux_base64_decode(signatureB64, _t976, _t977); - sig = _t978; - bool _t979; - _t979 = Rsa_VerifySha512(pemPublicKey, data, sig); - return _t979; + unsigned int _t966; + _t966 = String_Len(signatureB64); + _t967 = (int)_t966; + _t968 = &outlen; + const char* _t969; + _t969 = bux_base64_decode(signatureB64, _t967, _t968); + sig = _t969; + bool _t970; + _t970 = Rsa_VerifySha512(pemPublicKey, data, sig); + return _t970; } int Main(void) { diff --git a/tests/golden/methods/expected.c b/tests/golden/methods/expected.c index 6ef1639..a645b7f 100644 --- a/tests/golden/methods/expected.c +++ b/tests/golden/methods/expected.c @@ -199,6 +199,34 @@ extern const char* bux_base64_decode(const char* data, int len, int* outlen); #define ED25519_PRIVKEY_SIZE 32 #define ED25519_SIG_SIZE 64 +typedef struct Channel_float64 { + void* handle; +} Channel_float64; + +typedef struct TaskHandle { + void* handle; +} TaskHandle; + +typedef struct RwLock { + void* handle; +} RwLock; + +typedef struct Channel_int { + void* handle; +} Channel_int; + +typedef enum { + JwtAlg_HS256, + JwtAlg_HS384, + JwtAlg_HS512, + JwtAlg_RS256, + JwtAlg_RS384, + JwtAlg_RS512, + JwtAlg_ES256, + JwtAlg_ES384, + JwtAlg_EdDSA +} JwtAlg; + typedef enum { Result_Ok, Result_Err @@ -228,31 +256,6 @@ typedef struct { Option_Data data; } Option; -typedef enum { - JwtAlg_HS256, - JwtAlg_HS384, - JwtAlg_HS512, - JwtAlg_RS256, - JwtAlg_RS384, - JwtAlg_RS512, - JwtAlg_ES256, - JwtAlg_ES384, - JwtAlg_EdDSA -} JwtAlg; - - -typedef struct TaskHandle { - void* handle; -} TaskHandle; - -typedef struct Mutex { - void* handle; -} Mutex; - -typedef struct RwLock { - void* handle; -} RwLock; - typedef struct JsonValue { int tag; bool boolVal; @@ -267,12 +270,9 @@ typedef struct JsonValue { unsigned int objCap; } JsonValue; -typedef struct JsonParser { - const char* src; - unsigned int pos; - unsigned int len; - const char* error; -} JsonParser; +typedef struct Mutex { + void* handle; +} Mutex; typedef struct StringBuilder { void* handle; @@ -283,13 +283,12 @@ typedef struct Rectangle { int height; } Rectangle; -typedef struct Channel_int { - void* handle; -} Channel_int; - -typedef struct Channel_float64 { - void* handle; -} Channel_float64; +typedef struct JsonParser { + const char* src; + unsigned int pos; + unsigned int len; + const char* error; +} JsonParser; bool DirExists(const char* path); bool Mkdir(const char* path); @@ -874,7 +873,7 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { tmplLen = _t60; while1:; _t61 = (i < tmplLen); - if (!_t61) goto wend3; + if (!_t61) goto wend2; { const char* ch; const char* _t62; @@ -882,13 +881,13 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { ch = _t62; bool _t63; _t63 = String_Eq(ch, "{"); - if (!_t63) goto endif5; + if (!_t63) goto endif4; { unsigned int digitIdx; _t64 = i + 1; digitIdx = _t64; _t65 = (digitIdx < tmplLen); - if (!_t65) goto endif7; + if (!_t65) goto endif6; { const char* digitCh; const char* _t66; @@ -900,22 +899,22 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { d = _t67; bool __and_tmp_0; _t68 = (d >= 0); - if (!_t68) goto else8; + if (!_t68) goto else7; _t69 = (int64_t)argCount; _t70 = (d < _t69); *(bool*)&__and_tmp_0 = _t70; - goto endif9; - else8:; + goto endif8; + else7:; *(bool*)&__and_tmp_0 = 0; - endif9:; + endif8:; bool _t71; _t71 = *(bool*)&__and_tmp_0; - if (!_t71) goto endif11; + if (!_t71) goto endif10; { _t72 = i + 2; i = _t72; _t73 = (i < tmplLen); - if (!_t73) goto endif13; + if (!_t73) goto endif12; { const char* closeCh; const char* _t74; @@ -923,7 +922,7 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { closeCh = _t74; bool _t75; _t75 = String_Eq(closeCh, "}"); - if (!_t75) goto endif15; + if (!_t75) goto endif14; { _t76 = i + 1; i = _t76; @@ -936,22 +935,22 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { StringBuilder_Append(_t79, argStr); goto while1; } - endif15:; + endif14:; } - endif13:; + endif12:; } - endif11:; + endif10:; } - endif7:; + endif6:; } - endif5:; + endif4:; _t80 = &sb; StringBuilder_Append(_t80, ch); _t81 = i + 1; i = _t81; } goto while1; - wend3:; + wend2:; _t82 = &sb; const char* _t83; _t83 = StringBuilder_Build(_t82); @@ -959,276 +958,276 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { } const char* Fmt_Fmt1(const char* tmpl, const char* a1) { - const char** _t86; + const char** _t85; const char** args; /* sizeof(const char*) */ - void* _t85; - _t85 = bux_alloc(sizeof(const char*)); - _t86 = (const char**)_t85; - args = _t86; + void* _t84; + _t84 = bux_alloc(sizeof(const char*)); + _t85 = (const char**)_t84; + args = _t85; args[0] = a1; - const char* _t87; - _t87 = Fmt_Format(tmpl, args, 1); - return _t87; + const char* _t86; + _t86 = Fmt_Format(tmpl, args, 1); + return _t86; } const char* Fmt_FmtInt(const char* tmpl, int64_t val) { const char* s; + const char* _t87; + _t87 = String_FromInt(val); + s = _t87; const char* _t88; - _t88 = String_FromInt(val); - s = _t88; - const char* _t89; - _t89 = Fmt_Fmt1(tmpl, s); - return _t89; + _t88 = Fmt_Fmt1(tmpl, s); + return _t88; } const char* Fmt_FmtBool(const char* tmpl, bool val) { const char* s; + const char* _t89; + _t89 = String_FromBool(val); + s = _t89; const char* _t90; - _t90 = String_FromBool(val); - s = _t90; - const char* _t91; - _t91 = Fmt_Fmt1(tmpl, s); - return _t91; + _t90 = Fmt_Fmt1(tmpl, s); + return _t90; } const char* Fmt_FmtFloat(const char* tmpl, double val) { const char* s; + const char* _t91; + _t91 = String_FromFloat(val); + s = _t91; const char* _t92; - _t92 = String_FromFloat(val); - s = _t92; - const char* _t93; - _t93 = Fmt_Fmt1(tmpl, s); - return _t93; + _t92 = Fmt_Fmt1(tmpl, s); + return _t92; } const char* Fmt_Fmt2(const char* tmpl, const char* a1, const char* a2) { - int _t95; - const char** _t97; + int _t93; + const char** _t95; const char** args; /* sizeof(const char*) */ - _t95 = 2 * sizeof(const char*); - void* _t96; - _t96 = bux_alloc(_t95); - _t97 = (const char**)_t96; - args = _t97; + _t93 = 2 * sizeof(const char*); + void* _t94; + _t94 = bux_alloc(_t93); + _t95 = (const char**)_t94; + args = _t95; args[0] = a1; args[1] = a2; - const char* _t98; - _t98 = Fmt_Format(tmpl, args, 2); - return _t98; + const char* _t96; + _t96 = Fmt_Format(tmpl, args, 2); + return _t96; } const char* Fmt_Fmt3(const char* tmpl, const char* a1, const char* a2, const char* a3) { - int _t100; - const char** _t102; + int _t97; + const char** _t99; const char** args; /* sizeof(const char*) */ - _t100 = 3 * sizeof(const char*); - void* _t101; - _t101 = bux_alloc(_t100); - _t102 = (const char**)_t101; - args = _t102; + _t97 = 3 * sizeof(const char*); + void* _t98; + _t98 = bux_alloc(_t97); + _t99 = (const char**)_t98; + args = _t99; args[0] = a1; args[1] = a2; args[2] = a3; - const char* _t103; - _t103 = Fmt_Format(tmpl, args, 3); - return _t103; + const char* _t100; + _t100 = Fmt_Format(tmpl, args, 3); + return _t100; } const char* Crypto_Sha256(const char* data) { - int _t105; - void* _t107; + int _t102; + void* _t104; int len; - unsigned int _t104; - _t104 = String_Len(data); - _t105 = (int)_t104; - len = _t105; + unsigned int _t101; + _t101 = String_Len(data); + _t102 = (int)_t101; + len = _t102; void* hashBuf; - void* _t106; - _t106 = Alloc(32); - hashBuf = _t106; + void* _t103; + _t103 = Alloc(32); + hashBuf = _t103; bux_sha256(data, len, hashBuf); const char* result; - _t107 = (void*)hashBuf; - const char* _t108; - _t108 = bux_bytes_to_hex(_t107, 32); - result = _t108; + _t104 = (void*)hashBuf; + const char* _t105; + _t105 = bux_bytes_to_hex(_t104, 32); + result = _t105; Free(hashBuf); return result; } const char* Crypto_HmacSha256(const char* key, const char* message) { - int _t110; - int _t112; - void* _t114; + int _t107; + int _t109; + void* _t111; int keylen; - unsigned int _t109; - _t109 = String_Len(key); - _t110 = (int)_t109; - keylen = _t110; + unsigned int _t106; + _t106 = String_Len(key); + _t107 = (int)_t106; + keylen = _t107; int msglen; - unsigned int _t111; - _t111 = String_Len(message); - _t112 = (int)_t111; - msglen = _t112; + unsigned int _t108; + _t108 = String_Len(message); + _t109 = (int)_t108; + msglen = _t109; void* hmacBuf; - void* _t113; - _t113 = Alloc(32); - hmacBuf = _t113; + void* _t110; + _t110 = Alloc(32); + hmacBuf = _t110; bux_hmac_sha256(key, keylen, message, msglen, hmacBuf); const char* result; - _t114 = (void*)hmacBuf; - const char* _t115; - _t115 = bux_bytes_to_hex(_t114, 32); - result = _t115; + _t111 = (void*)hmacBuf; + const char* _t112; + _t112 = bux_bytes_to_hex(_t111, 32); + result = _t112; Free(hmacBuf); return result; } const char* Crypto_RandomBytes(int n) { - int _t116; - unsigned int _t117; - int _t120; - const char* _t121; - _t116 = (n <= 0); - if (!_t116) goto endif17; + int _t113; + unsigned int _t114; + int _t117; + const char* _t118; + _t113 = (n <= 0); + if (!_t113) goto endif16; { return ""; } - endif17:; + endif16:; void* buf; - _t117 = (unsigned int)n; - void* _t118; - _t118 = Alloc(_t117); - buf = _t118; - int _t119; - _t119 = bux_random_bytes(buf, n); - _t120 = (_t119 != 1); - if (!_t120) goto endif19; + _t114 = (unsigned int)n; + void* _t115; + _t115 = Alloc(_t114); + buf = _t115; + int _t116; + _t116 = bux_random_bytes(buf, n); + _t117 = (_t116 != 1); + if (!_t117) goto endif18; { Free(buf); return ""; } - endif19:; + endif18:; const char* result; - _t121 = (const char*)buf; - const char* _t122; - _t122 = bux_base64_encode(_t121, n); - result = _t122; + _t118 = (const char*)buf; + const char* _t119; + _t119 = bux_base64_encode(_t118, n); + result = _t119; Free(buf); return result; } const char* Crypto_Base64Encode(const char* s) { - int _t124; - unsigned int _t123; - _t123 = String_Len(s); - _t124 = (int)_t123; - const char* _t125; - _t125 = bux_base64_encode(s, _t124); - return _t125; + int _t121; + unsigned int _t120; + _t120 = String_Len(s); + _t121 = (int)_t120; + const char* _t122; + _t122 = bux_base64_encode(s, _t121); + return _t122; } const char* Crypto_HmacSha256Raw(const char* key, const char* message) { - int _t127; - int _t129; - const char* _t131; + int _t124; + int _t126; + const char* _t128; int keylen; - unsigned int _t126; - _t126 = String_Len(key); - _t127 = (int)_t126; - keylen = _t127; + unsigned int _t123; + _t123 = String_Len(key); + _t124 = (int)_t123; + keylen = _t124; int msglen; - unsigned int _t128; - _t128 = String_Len(message); - _t129 = (int)_t128; - msglen = _t129; + unsigned int _t125; + _t125 = String_Len(message); + _t126 = (int)_t125; + msglen = _t126; void* hmacBuf; - void* _t130; - _t130 = Alloc(32); - hmacBuf = _t130; + void* _t127; + _t127 = Alloc(32); + hmacBuf = _t127; bux_hmac_sha256(key, keylen, message, msglen, hmacBuf); const char* result; - _t131 = (const char*)hmacBuf; - const char* _t132; - _t132 = bux_base64_encode(_t131, 32); - result = _t132; + _t128 = (const char*)hmacBuf; + const char* _t129; + _t129 = bux_base64_encode(_t128, 32); + result = _t129; Free(hmacBuf); return result; } const char* Crypto_Base64Decode(const char* s) { - int _t134; - void* _t135; + int _t131; + void* _t132; int outlen; outlen = 0; - unsigned int _t133; - _t133 = String_Len(s); - _t134 = (int)_t133; - _t135 = &outlen; - const char* _t136; - _t136 = bux_base64_decode(s, _t134, _t135); - return _t136; + unsigned int _t130; + _t130 = String_Len(s); + _t131 = (int)_t130; + _t132 = &outlen; + const char* _t133; + _t133 = bux_base64_decode(s, _t131, _t132); + return _t133; } Mutex Mutex_New(void) { - Mutex _t138; - void* _t137; - _t137 = bux_mutex_new(); - _t138 = (Mutex){.handle = _t137}; - return _t138; + Mutex _t135; + void* _t134; + _t134 = bux_mutex_new(); + _t135 = (Mutex){.handle = _t134}; + return _t135; } void Mutex_Lock(Mutex* m) { - void* _t139; - _t139 = m->handle; - bux_mutex_lock(_t139); + void* _t136; + _t136 = m->handle; + bux_mutex_lock(_t136); } void Mutex_Unlock(Mutex* m) { - void* _t140; - _t140 = m->handle; - bux_mutex_unlock(_t140); + void* _t137; + _t137 = m->handle; + bux_mutex_unlock(_t137); } void Mutex_Free(Mutex* m) { - void* _t141; - _t141 = m->handle; - bux_mutex_free(_t141); + void* _t138; + _t138 = m->handle; + bux_mutex_free(_t138); } RwLock RwLock_New(void) { - RwLock _t143; - void* _t142; - _t142 = bux_rwlock_new(); - _t143 = (RwLock){.handle = _t142}; - return _t143; + RwLock _t140; + void* _t139; + _t139 = bux_rwlock_new(); + _t140 = (RwLock){.handle = _t139}; + return _t140; } void RwLock_ReadLock(RwLock* rw) { - void* _t144; - _t144 = rw->handle; - bux_rwlock_rdlock(_t144); + void* _t141; + _t141 = rw->handle; + bux_rwlock_rdlock(_t141); } void RwLock_WriteLock(RwLock* rw) { - void* _t145; - _t145 = rw->handle; - bux_rwlock_wrlock(_t145); + void* _t142; + _t142 = rw->handle; + bux_rwlock_wrlock(_t142); } void RwLock_Unlock(RwLock* rw) { - void* _t146; - _t146 = rw->handle; - bux_rwlock_unlock(_t146); + void* _t143; + _t143 = rw->handle; + bux_rwlock_unlock(_t143); } void RwLock_Free(RwLock* rw) { - void* _t147; - _t147 = rw->handle; - bux_rwlock_free(_t147); + void* _t144; + _t144 = rw->handle; + bux_rwlock_free(_t144); } void Test_Exit(int code) { @@ -1236,15 +1235,15 @@ void Test_Exit(int code) { } void Test_Assert(bool cond) { - int _t148; - _t148 = (int)cond; - bux_assert(_t148, "", 0, ""); + int _t145; + _t145 = (int)cond; + bux_assert(_t145, "", 0, ""); } void Test_AssertEqInt(int a, int b) { - int _t149; - _t149 = (a != b); - if (!_t149) goto endif21; + int _t146; + _t146 = (a != b); + if (!_t146) goto endif20; { PrintLine("ASSERT_EQ FAILED:"); PrintInt(a); @@ -1252,27 +1251,27 @@ void Test_AssertEqInt(int a, int b) { PrintInt(b); bux_exit(1); } - endif21:; + endif20:; } void Test_AssertTrue(bool cond) { - int _t150; - _t150 = !cond; - if (!_t150) goto endif23; + int _t147; + _t147 = !cond; + if (!_t147) goto endif22; { PrintLine("ASSERT_TRUE FAILED"); bux_exit(1); } - endif23:; + endif22:; } void Test_AssertFalse(bool cond) { - if (!cond) goto endif25; + if (!cond) goto endif24; { PrintLine("ASSERT_FALSE FAILED"); bux_exit(1); } - endif25:; + endif24:; } void Test_Fail(const char* msg) { @@ -1282,735 +1281,744 @@ void Test_Fail(const char* msg) { } Result Result_NewOk(int value) { - Result _t151; + Result _t148; Result r; - _t151 = (Result){.tag = Result_Ok}; - r = _t151; + _t148 = (Result){.tag = Result_Ok}; + r = _t148; r.data.Ok_0 = value; return r; } Result Result_NewErr(const char* msg) { - Result _t152; + Result _t149; Result r; - _t152 = (Result){.tag = Result_Err}; - r = _t152; + _t149 = (Result){.tag = Result_Err}; + r = _t149; r.data.Err_0 = msg; return r; } bool Result_IsOk(Result r) { - int _t154; - Result_Tag _t153; - _t153 = r.tag; - _t154 = (_t153 == Result_Ok); - return _t154; + int _t151; + Result_Tag _t150; + _t150 = r.tag; + _t151 = (_t150 == Result_Ok); + return _t151; } bool Result_IsErr(Result r) { - int _t156; - Result_Tag _t155; - _t155 = r.tag; - _t156 = (_t155 == Result_Err); - return _t156; + int _t153; + Result_Tag _t152; + _t152 = r.tag; + _t153 = (_t152 == Result_Err); + return _t153; } int Result_Unwrap(Result r) { - int _t158; - Result_Tag _t157; - _t157 = r.tag; - _t158 = (_t157 != Result_Ok); - if (!_t158) goto endif27; + int _t155; + Result_Tag _t154; + _t154 = r.tag; + _t155 = (_t154 != Result_Ok); + if (!_t155) goto endif26; { PrintLine("panic: unwrap on Err"); return 0; } - endif27:; - Result_Data _t159; - _t159 = r.data; - int _t160; - _t160 = _t159.Ok_0; - return _t160; + endif26:; + Result_Data _t156; + _t156 = r.data; + int _t157; + _t157 = _t156.Ok_0; + return _t157; } int Result_UnwrapOr(Result r, int fallback) { - int _t162; - Result_Tag _t161; - _t161 = r.tag; - _t162 = (_t161 == Result_Ok); - if (!_t162) goto endif29; + int _t159; + Result_Tag _t158; + _t158 = r.tag; + _t159 = (_t158 == Result_Ok); + if (!_t159) goto endif28; { - Result_Data _t163; - _t163 = r.data; - int _t164; - _t164 = _t163.Ok_0; - return _t164; + Result_Data _t160; + _t160 = r.data; + int _t161; + _t161 = _t160.Ok_0; + return _t161; } - endif29:; + endif28:; return fallback; } Option Option_NewSome(int value) { - Option _t165; + Option _t162; Option o; - _t165 = (Option){.tag = Option_Some}; - o = _t165; + _t162 = (Option){.tag = Option_Some}; + o = _t162; o.data.Some_0 = value; return o; } Option Option_NewNone(void) { - Option _t166; - _t166 = (Option){.tag = Option_None}; - return _t166; + Option _t163; + _t163 = (Option){.tag = Option_None}; + return _t163; } bool Option_IsSome(Option o) { - int _t168; - Option_Tag _t167; - _t167 = o.tag; - _t168 = (_t167 == Option_Some); - return _t168; + int _t165; + Option_Tag _t164; + _t164 = o.tag; + _t165 = (_t164 == Option_Some); + return _t165; } bool Option_IsNone(Option o) { - int _t170; - Option_Tag _t169; - _t169 = o.tag; - _t170 = (_t169 == Option_None); - return _t170; + int _t167; + Option_Tag _t166; + _t166 = o.tag; + _t167 = (_t166 == Option_None); + return _t167; } int Option_Unwrap(Option o) { - int _t172; - Option_Tag _t171; - _t171 = o.tag; - _t172 = (_t171 != Option_Some); - if (!_t172) goto endif31; + int _t169; + Option_Tag _t168; + _t168 = o.tag; + _t169 = (_t168 != Option_Some); + if (!_t169) goto endif30; { PrintLine("panic: unwrap on None"); return 0; } - endif31:; - Option_Data _t173; - _t173 = o.data; - int _t174; - _t174 = _t173.Some_0; - return _t174; + endif30:; + Option_Data _t170; + _t170 = o.data; + int _t171; + _t171 = _t170.Some_0; + return _t171; } int Option_UnwrapOr(Option o, int fallback) { - int _t176; - Option_Tag _t175; - _t175 = o.tag; - _t176 = (_t175 == Option_Some); - if (!_t176) goto endif33; + int _t173; + Option_Tag _t172; + _t172 = o.tag; + _t173 = (_t172 == Option_Some); + if (!_t173) goto endif32; { - Option_Data _t177; - _t177 = o.data; - int _t178; - _t178 = _t177.Some_0; - return _t178; + Option_Data _t174; + _t174 = o.data; + int _t175; + _t175 = _t174.Some_0; + return _t175; } - endif33:; + endif32:; return fallback; } JsonValue Json_Null(void) { - JsonValue _t179; - _t179 = (JsonValue){.tag = JsonTagNull, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t179; + JsonValue _t176; + _t176 = (JsonValue){.tag = JsonTagNull, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t176; } JsonValue Json_Bool(bool b) { - JsonValue _t180; - _t180 = (JsonValue){.tag = JsonTagBool, .boolVal = b, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t180; + JsonValue _t177; + _t177 = (JsonValue){.tag = JsonTagBool, .boolVal = b, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t177; } JsonValue Json_Number(double n) { - JsonValue _t181; - _t181 = (JsonValue){.tag = JsonTagNumber, .boolVal = 0, .numVal = n, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t181; + JsonValue _t178; + _t178 = (JsonValue){.tag = JsonTagNumber, .boolVal = 0, .numVal = n, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t178; } JsonValue Json_String(const char* s) { - JsonValue _t182; - _t182 = (JsonValue){.tag = JsonTagString, .boolVal = 0, .numVal = 0.0, .strVal = s, .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t182; + JsonValue _t179; + _t179 = (JsonValue){.tag = JsonTagString, .boolVal = 0, .numVal = 0.0, .strVal = s, .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t179; } JsonValue Json_Array(void) { - JsonValue _t183; - _t183 = (JsonValue){.tag = JsonTagArray, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t183; + JsonValue _t180; + _t180 = (JsonValue){.tag = JsonTagArray, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t180; } JsonValue Json_Object(void) { - JsonValue _t184; - _t184 = (JsonValue){.tag = JsonTagObject, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t184; + JsonValue _t181; + _t181 = (JsonValue){.tag = JsonTagObject, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t181; } unsigned int Json_ArrayLen(JsonValue v) { - int _t186; - int _t185; - _t185 = v.tag; - _t186 = (_t185 != JsonTagArray); - if (!_t186) goto endif35; + int _t183; + int _t182; + _t182 = v.tag; + _t183 = (_t182 != JsonTagArray); + if (!_t183) goto endif34; { return 0; } - endif35:; - unsigned int _t187; - _t187 = v.arrLen; - return _t187; + endif34:; + unsigned int _t184; + _t184 = v.arrLen; + return _t184; } JsonValue Json_ArrayGet(JsonValue v, unsigned int index) { + int _t186; int _t189; - int _t192; - int _t188; - _t188 = v.tag; - _t189 = (_t188 != JsonTagArray); - if (!_t189) goto endif37; + int _t185; + _t185 = v.tag; + _t186 = (_t185 != JsonTagArray); + if (!_t186) goto endif36; + { + JsonValue _t187; + _t187 = Json_Null(); + return _t187; + } + endif36:; + unsigned int _t188; + _t188 = v.arrLen; + _t189 = (index >= _t188); + if (!_t189) goto endif38; { JsonValue _t190; _t190 = Json_Null(); return _t190; } - endif37:; - unsigned int _t191; - _t191 = v.arrLen; - _t192 = (index >= _t191); - if (!_t192) goto endif39; - { - JsonValue _t193; - _t193 = Json_Null(); - return _t193; - } - endif39:; - JsonValue* _t194; - _t194 = v.arrData; - JsonValue _t195; - _t195 = _t194[index]; - return _t195; + endif38:; + JsonValue* _t191; + _t191 = v.arrData; + JsonValue _t192; + _t192 = _t191[index]; + return _t192; } void Json_ArrayPush(JsonValue* self, JsonValue val) { + int _t194; int _t197; + int _t199; int _t200; - int _t202; - int _t204; - JsonValue* _t206; - int _t207; - void* _t209; - int _t211; - JsonValue* _t213; - int _t217; - int _t196; - _t196 = self->tag; - _t197 = (_t196 != JsonTagArray); - if (!_t197) goto endif41; + JsonValue* _t202; + int _t203; + void* _t205; + int _t206; + JsonValue* _t208; + int _t212; + int _t193; + _t193 = self->tag; + _t194 = (_t193 != JsonTagArray); + if (!_t194) goto endif40; { return; } - endif41:; - unsigned int _t198; - _t198 = self->arrLen; - unsigned int _t199; - _t199 = self->arrCap; - _t200 = (_t198 >= _t199); - if (!_t200) goto endif43; + endif40:; + unsigned int _t195; + _t195 = self->arrLen; + unsigned int _t196; + _t196 = self->arrCap; + _t197 = (_t195 >= _t196); + if (!_t197) goto endif42; { unsigned int arrNewCap; - unsigned int _t201; - _t201 = self->arrCap; - arrNewCap = _t201; - _t202 = (arrNewCap == 0); - if (!_t202) goto else44; + unsigned int _t198; + _t198 = self->arrCap; + arrNewCap = _t198; + _t199 = (arrNewCap == 0); + if (!_t199) goto else43; { self->arrCap = 4; /* sizeof(JsonValue) */ - _t204 = 4 * sizeof(JsonValue); - void* _t205; - _t205 = Alloc(_t204); - _t206 = (JsonValue*)_t205; - self->arrData = _t206; + _t200 = 4 * sizeof(JsonValue); + void* _t201; + _t201 = Alloc(_t200); + _t202 = (JsonValue*)_t201; + self->arrData = _t202; } - goto endif45; - else44:; + goto endif44; + else43:; { unsigned int doubleCap; - _t207 = arrNewCap * 2; - doubleCap = _t207; + _t203 = arrNewCap * 2; + doubleCap = _t203; self->arrCap = doubleCap; - JsonValue* _t208; - _t208 = self->arrData; - _t209 = (void*)_t208; + JsonValue* _t204; + _t204 = self->arrData; + _t205 = (void*)_t204; /* sizeof(JsonValue) */ - _t211 = doubleCap * sizeof(JsonValue); - void* _t212; - _t212 = Realloc(_t209, _t211); - _t213 = (JsonValue*)_t212; - self->arrData = _t213; + _t206 = doubleCap * sizeof(JsonValue); + void* _t207; + _t207 = Realloc(_t205, _t206); + _t208 = (JsonValue*)_t207; + self->arrData = _t208; } - endif45:; + endif44:; } - endif43:; - JsonValue* _t214; - _t214 = self->arrData; - unsigned int _t215; - _t215 = self->arrLen; - _t214[_t215] = val; - unsigned int _t216; - _t216 = self->arrLen; - _t217 = _t216 + 1; - self->arrLen = _t217; + endif42:; + JsonValue* _t209; + _t209 = self->arrData; + unsigned int _t210; + _t210 = self->arrLen; + _t209[_t210] = val; + unsigned int _t211; + _t211 = self->arrLen; + _t212 = _t211 + 1; + self->arrLen = _t212; } unsigned int Json_ObjectLen(JsonValue v) { - int _t219; - int _t218; - _t218 = v.tag; - _t219 = (_t218 != JsonTagObject); - if (!_t219) goto endif47; + int _t214; + int _t213; + _t213 = v.tag; + _t214 = (_t213 != JsonTagObject); + if (!_t214) goto endif46; { return 0; } - endif47:; - unsigned int _t220; - _t220 = v.objLen; - return _t220; + endif46:; + unsigned int _t215; + _t215 = v.objLen; + return _t215; } JsonValue Json_ObjectGet(JsonValue v, const char* key) { - int _t222; - int _t225; - int _t231; - int _t221; - _t221 = v.tag; - _t222 = (_t221 != JsonTagObject); - if (!_t222) goto endif49; + int _t217; + int _t220; + int _t226; + int _t216; + _t216 = v.tag; + _t217 = (_t216 != JsonTagObject); + if (!_t217) goto endif48; { - JsonValue _t223; - _t223 = Json_Null(); - return _t223; + JsonValue _t218; + _t218 = Json_Null(); + return _t218; } - endif49:; + endif48:; unsigned int i; i = 0; - while50:; - unsigned int _t224; - _t224 = v.objLen; - _t225 = (i < _t224); - if (!_t225) goto wend52; + while49:; + unsigned int _t219; + _t219 = v.objLen; + _t220 = (i < _t219); + if (!_t220) goto wend50; { - const char** _t226; - _t226 = v.objKeys; - const char* _t227; - _t227 = _t226[i]; - bool _t228; - _t228 = String_Eq(_t227, key); - if (!_t228) goto endif54; + const char** _t221; + _t221 = v.objKeys; + const char* _t222; + _t222 = _t221[i]; + bool _t223; + _t223 = String_Eq(_t222, key); + if (!_t223) goto endif52; { - JsonValue* _t229; - _t229 = v.objValues; - JsonValue _t230; - _t230 = _t229[i]; - return _t230; + JsonValue* _t224; + _t224 = v.objValues; + JsonValue _t225; + _t225 = _t224[i]; + return _t225; } - endif54:; - _t231 = i + 1; - i = _t231; + endif52:; + _t226 = i + 1; + i = _t226; } - goto while50; - wend52:; - JsonValue _t232; - _t232 = Json_Null(); - return _t232; + goto while49; + wend50:; + JsonValue _t227; + _t227 = Json_Null(); + return _t227; } bool Json_ObjectHas(JsonValue v, const char* key) { - int _t234; - int _t236; - int _t240; - int _t233; - _t233 = v.tag; - _t234 = (_t233 != JsonTagObject); - if (!_t234) goto endif56; + int _t229; + int _t231; + int _t235; + int _t228; + _t228 = v.tag; + _t229 = (_t228 != JsonTagObject); + if (!_t229) goto endif54; { return 0; } - endif56:; + endif54:; unsigned int i; i = 0; - while57:; - unsigned int _t235; - _t235 = v.objLen; - _t236 = (i < _t235); - if (!_t236) goto wend59; + while55:; + unsigned int _t230; + _t230 = v.objLen; + _t231 = (i < _t230); + if (!_t231) goto wend56; { - const char** _t237; - _t237 = v.objKeys; - const char* _t238; - _t238 = _t237[i]; - bool _t239; - _t239 = String_Eq(_t238, key); - if (!_t239) goto endif61; + const char** _t232; + _t232 = v.objKeys; + const char* _t233; + _t233 = _t232[i]; + bool _t234; + _t234 = String_Eq(_t233, key); + if (!_t234) goto endif58; { return 1; } - endif61:; - _t240 = i + 1; - i = _t240; + endif58:; + _t235 = i + 1; + i = _t235; } - goto while57; - wend59:; + goto while55; + wend56:; return 0; } void Json_ObjectSet(JsonValue* self, const char* key, JsonValue val) { - int _t242; + int _t237; + int _t239; int _t244; + int _t247; int _t249; - int _t252; - int _t254; + int _t250; + const char** _t252; + int _t253; + JsonValue* _t255; int _t256; - const char** _t258; - int _t260; - JsonValue* _t262; - int _t263; - void* _t265; - int _t267; - const char** _t269; - void* _t271; - int _t273; - JsonValue* _t275; - int _t281; - int _t241; - _t241 = self->tag; - _t242 = (_t241 != JsonTagObject); - if (!_t242) goto endif63; + void* _t258; + int _t259; + const char** _t261; + void* _t263; + int _t264; + JsonValue* _t266; + int _t272; + int _t236; + _t236 = self->tag; + _t237 = (_t236 != JsonTagObject); + if (!_t237) goto endif60; { return; } - endif63:; + endif60:; unsigned int i; i = 0; - while64:; - unsigned int _t243; - _t243 = self->objLen; - _t244 = (i < _t243); - if (!_t244) goto wend66; + while61:; + unsigned int _t238; + _t238 = self->objLen; + _t239 = (i < _t238); + if (!_t239) goto wend62; { - const char** _t245; - _t245 = self->objKeys; - const char* _t246; - _t246 = _t245[i]; - bool _t247; - _t247 = String_Eq(_t246, key); - if (!_t247) goto endif68; + const char** _t240; + _t240 = self->objKeys; + const char* _t241; + _t241 = _t240[i]; + bool _t242; + _t242 = String_Eq(_t241, key); + if (!_t242) goto endif64; { - JsonValue* _t248; - _t248 = self->objValues; - _t248[i] = val; + JsonValue* _t243; + _t243 = self->objValues; + _t243[i] = val; return; } - endif68:; - _t249 = i + 1; - i = _t249; + endif64:; + _t244 = i + 1; + i = _t244; } - goto while64; - wend66:; - unsigned int _t250; - _t250 = self->objLen; - unsigned int _t251; - _t251 = self->objCap; - _t252 = (_t250 >= _t251); - if (!_t252) goto endif70; + goto while61; + wend62:; + unsigned int _t245; + _t245 = self->objLen; + unsigned int _t246; + _t246 = self->objCap; + _t247 = (_t245 >= _t246); + if (!_t247) goto endif66; { unsigned int objNewCap; - unsigned int _t253; - _t253 = self->objCap; - objNewCap = _t253; - _t254 = (objNewCap == 0); - if (!_t254) goto else71; + unsigned int _t248; + _t248 = self->objCap; + objNewCap = _t248; + _t249 = (objNewCap == 0); + if (!_t249) goto else67; { self->objCap = 4; /* sizeof(const char*) */ - _t256 = 4 * sizeof(const char*); - void* _t257; - _t257 = Alloc(_t256); - _t258 = (const char**)_t257; - self->objKeys = _t258; + _t250 = 4 * sizeof(const char*); + void* _t251; + _t251 = Alloc(_t250); + _t252 = (const char**)_t251; + self->objKeys = _t252; /* sizeof(JsonValue) */ - _t260 = 4 * sizeof(JsonValue); - void* _t261; - _t261 = Alloc(_t260); - _t262 = (JsonValue*)_t261; - self->objValues = _t262; + _t253 = 4 * sizeof(JsonValue); + void* _t254; + _t254 = Alloc(_t253); + _t255 = (JsonValue*)_t254; + self->objValues = _t255; } - goto endif72; - else71:; + goto endif68; + else67:; { unsigned int doubleCap; - _t263 = objNewCap * 2; - doubleCap = _t263; + _t256 = objNewCap * 2; + doubleCap = _t256; self->objCap = doubleCap; - const char** _t264; - _t264 = self->objKeys; - _t265 = (void*)_t264; + const char** _t257; + _t257 = self->objKeys; + _t258 = (void*)_t257; /* sizeof(const char*) */ - _t267 = doubleCap * sizeof(const char*); - void* _t268; - _t268 = Realloc(_t265, _t267); - _t269 = (const char**)_t268; - self->objKeys = _t269; - JsonValue* _t270; - _t270 = self->objValues; - _t271 = (void*)_t270; + _t259 = doubleCap * sizeof(const char*); + void* _t260; + _t260 = Realloc(_t258, _t259); + _t261 = (const char**)_t260; + self->objKeys = _t261; + JsonValue* _t262; + _t262 = self->objValues; + _t263 = (void*)_t262; /* sizeof(JsonValue) */ - _t273 = doubleCap * sizeof(JsonValue); - void* _t274; - _t274 = Realloc(_t271, _t273); - _t275 = (JsonValue*)_t274; - self->objValues = _t275; + _t264 = doubleCap * sizeof(JsonValue); + void* _t265; + _t265 = Realloc(_t263, _t264); + _t266 = (JsonValue*)_t265; + self->objValues = _t266; } - endif72:; + endif68:; } - endif70:; - const char** _t276; - _t276 = self->objKeys; - unsigned int _t277; - _t277 = self->objLen; - _t276[_t277] = key; - JsonValue* _t278; - _t278 = self->objValues; - unsigned int _t279; - _t279 = self->objLen; - _t278[_t279] = val; - unsigned int _t280; - _t280 = self->objLen; - _t281 = _t280 + 1; - self->objLen = _t281; + endif66:; + const char** _t267; + _t267 = self->objKeys; + unsigned int _t268; + _t268 = self->objLen; + _t267[_t268] = key; + JsonValue* _t269; + _t269 = self->objValues; + unsigned int _t270; + _t270 = self->objLen; + _t269[_t270] = val; + unsigned int _t271; + _t271 = self->objLen; + _t272 = _t271 + 1; + self->objLen = _t272; } bool Json_IsNull(JsonValue v) { - int _t283; - int _t282; - _t282 = v.tag; - _t283 = (_t282 == JsonTagNull); - return _t283; + int _t274; + int _t273; + _t273 = v.tag; + _t274 = (_t273 == JsonTagNull); + return _t274; } bool Json_AsBool(JsonValue v) { - int _t285; - int _t284; - _t284 = v.tag; - _t285 = (_t284 == JsonTagBool); - if (!_t285) goto endif74; + int _t276; + int _t275; + _t275 = v.tag; + _t276 = (_t275 == JsonTagBool); + if (!_t276) goto endif70; { - bool _t286; - _t286 = v.boolVal; - return _t286; + bool _t277; + _t277 = v.boolVal; + return _t277; } - endif74:; + endif70:; return 0; } double Json_AsNumber(JsonValue v) { - int _t288; - int _t287; - _t287 = v.tag; - _t288 = (_t287 == JsonTagNumber); - if (!_t288) goto endif76; + int _t279; + int _t278; + _t278 = v.tag; + _t279 = (_t278 == JsonTagNumber); + if (!_t279) goto endif72; { - double _t289; - _t289 = v.numVal; - return _t289; + double _t280; + _t280 = v.numVal; + return _t280; } - endif76:; + endif72:; return 0.0; } const char* Json_AsString(JsonValue v) { - int _t291; - int _t290; - _t290 = v.tag; - _t291 = (_t290 == JsonTagString); - if (!_t291) goto endif78; + int _t282; + int _t281; + _t281 = v.tag; + _t282 = (_t281 == JsonTagString); + if (!_t282) goto endif74; { - const char* _t292; - _t292 = v.strVal; - return _t292; + const char* _t283; + _t283 = v.strVal; + return _t283; } - endif78:; + endif74:; return ""; } int JsonParser_Peek(JsonParser* p) { - int _t295; - int _t299; - unsigned int _t293; - _t293 = p->pos; - unsigned int _t294; - _t294 = p->len; - _t295 = (_t293 >= _t294); - if (!_t295) goto endif80; + int _t286; + int _t290; + unsigned int _t284; + _t284 = p->pos; + unsigned int _t285; + _t285 = p->len; + _t286 = (_t284 >= _t285); + if (!_t286) goto endif76; { return 0; } - endif80:; - const char* _t296; - _t296 = p->src; - unsigned int _t297; - _t297 = p->pos; - int _t298; - _t298 = _t296[_t297]; - _t299 = (int)_t298; - return _t299; + endif76:; + const char* _t287; + _t287 = p->src; + unsigned int _t288; + _t288 = p->pos; + int _t289; + _t289 = _t287[_t288]; + _t290 = (int)_t289; + return _t290; } void JsonParser_Advance(JsonParser* p) { - int _t302; - int _t304; - unsigned int _t300; - _t300 = p->pos; - unsigned int _t301; - _t301 = p->len; - _t302 = (_t300 < _t301); - if (!_t302) goto endif82; + int _t293; + int _t295; + unsigned int _t291; + _t291 = p->pos; + unsigned int _t292; + _t292 = p->len; + _t293 = (_t291 < _t292); + if (!_t293) goto endif78; { - unsigned int _t303; - _t303 = p->pos; - _t304 = _t303 + 1; - p->pos = _t304; + unsigned int _t294; + _t294 = p->pos; + _t295 = _t294 + 1; + p->pos = _t295; } - endif82:; + endif78:; } void JsonParser_SkipWhitespace(JsonParser* p) { - int _t306; - int _t307; - int _t309; - int _t311; - while83:; - if (!1) goto wend85; + int _t297; + int _t298; + int _t300; + int _t302; + while79:; + if (!1) goto wend80; { int c; - int _t305; - _t305 = JsonParser_Peek(p); - c = _t305; + int _t296; + _t296 = JsonParser_Peek(p); + c = _t296; bool __or_tmp_1; bool __or_tmp_2; bool __or_tmp_3; - _t306 = (c == 32); - if (!_t306) goto else86; + _t297 = (c == 32); + if (!_t297) goto else81; *(bool*)&__or_tmp_3 = 1; - goto endif87; - else86:; - _t307 = (c == 9); - *(bool*)&__or_tmp_3 = _t307; - endif87:; - bool _t308; - _t308 = *(bool*)&__or_tmp_3; - if (!_t308) goto else88; + goto endif82; + else81:; + _t298 = (c == 9); + *(bool*)&__or_tmp_3 = _t298; + endif82:; + bool _t299; + _t299 = *(bool*)&__or_tmp_3; + if (!_t299) goto else83; *(bool*)&__or_tmp_2 = 1; - goto endif89; - else88:; - _t309 = (c == 10); - *(bool*)&__or_tmp_2 = _t309; - endif89:; - bool _t310; - _t310 = *(bool*)&__or_tmp_2; - if (!_t310) goto else90; + goto endif84; + else83:; + _t300 = (c == 10); + *(bool*)&__or_tmp_2 = _t300; + endif84:; + bool _t301; + _t301 = *(bool*)&__or_tmp_2; + if (!_t301) goto else85; *(bool*)&__or_tmp_1 = 1; - goto endif91; - else90:; - _t311 = (c == 13); - *(bool*)&__or_tmp_1 = _t311; - endif91:; - bool _t312; - _t312 = *(bool*)&__or_tmp_1; - if (!_t312) goto else92; + goto endif86; + else85:; + _t302 = (c == 13); + *(bool*)&__or_tmp_1 = _t302; + endif86:; + bool _t303; + _t303 = *(bool*)&__or_tmp_1; + if (!_t303) goto else87; { JsonParser_Advance(p); } - goto endif93; - else92:; + goto endif88; + else87:; { return; } - endif93:; + endif88:; } - goto while83; - wend85:; + goto while79; + wend80:; } bool JsonParser_Match(JsonParser* p, const char* expected) { + int _t306; + int _t308; + int _t309; + int _t312; int _t315; - int _t317; + int _t316; int _t318; - int _t321; - int _t324; - int _t325; - int _t327; unsigned int elen; - unsigned int _t313; - _t313 = String_Len(expected); - elen = _t313; - unsigned int _t314; - _t314 = p->pos; - _t315 = _t314 + elen; - unsigned int _t316; - _t316 = p->len; - _t317 = (_t315 > _t316); - if (!_t317) goto endif95; + unsigned int _t304; + _t304 = String_Len(expected); + elen = _t304; + unsigned int _t305; + _t305 = p->pos; + _t306 = _t305 + elen; + unsigned int _t307; + _t307 = p->len; + _t308 = (_t306 > _t307); + if (!_t308) goto endif90; { return 0; } - endif95:; + endif90:; unsigned int i; i = 0; - while96:; - _t318 = (i < elen); - if (!_t318) goto wend98; + while91:; + _t309 = (i < elen); + if (!_t309) goto wend92; { - const char* _t319; - _t319 = p->src; - unsigned int _t320; - _t320 = p->pos; - _t321 = _t320 + i; - int _t322; - _t322 = _t319[_t321]; - int _t323; - _t323 = expected[i]; - _t324 = (_t322 != _t323); - if (!_t324) goto endif100; + const char* _t310; + _t310 = p->src; + unsigned int _t311; + _t311 = p->pos; + _t312 = _t311 + i; + int _t313; + _t313 = _t310[_t312]; + int _t314; + _t314 = expected[i]; + _t315 = (_t313 != _t314); + if (!_t315) goto endif94; { return 0; } - endif100:; - _t325 = i + 1; - i = _t325; + endif94:; + _t316 = i + 1; + i = _t316; } - goto while96; - wend98:; - unsigned int _t326; - _t326 = p->pos; - _t327 = _t326 + elen; - p->pos = _t327; + goto while91; + wend92:; + unsigned int _t317; + _t317 = p->pos; + _t318 = _t317 + elen; + p->pos = _t318; return 1; } const char* JsonParser_ParseString(JsonParser* p) { - int _t329; - int _t332; + int _t320; + int _t323; + int _t324; + int _t326; + int _t328; + void* _t329; + int _t330; + void* _t331; + char _t332; int _t333; - int _t335; - int _t337; - void* _t338; + void* _t334; + char _t335; + int _t336; + void* _t337; + char _t338; int _t339; void* _t340; char _t341; @@ -2023,234 +2031,262 @@ const char* JsonParser_ParseString(JsonParser* p) { int _t348; void* _t349; char _t350; - int _t351; - void* _t352; - char _t353; - int _t354; + void* _t351; + char _t352; + void* _t353; + char _t354; void* _t355; char _t356; - int _t357; - void* _t358; - char _t359; + int _t358; + void* _t359; void* _t360; - char _t361; void* _t362; - char _t363; - void* _t364; - char _t365; - int _t367; - void* _t368; - void* _t369; - void* _t371; - int _t328; - _t328 = JsonParser_Peek(p); - _t329 = (_t328 != 34); - if (!_t329) goto endif102; + int _t319; + _t319 = JsonParser_Peek(p); + _t320 = (_t319 != 34); + if (!_t320) goto endif96; { p->error = "Expected string"; return ""; } - endif102:; + endif96:; JsonParser_Advance(p); StringBuilder sb; - StringBuilder _t330; - _t330 = StringBuilder_New(); - sb = _t330; - while103:; - if (!1) goto wend105; + StringBuilder _t321; + _t321 = StringBuilder_New(); + sb = _t321; + while97:; + if (!1) goto wend98; { int c; - int _t331; - _t331 = JsonParser_Peek(p); - c = _t331; + int _t322; + _t322 = JsonParser_Peek(p); + c = _t322; bool __or_tmp_4; - _t332 = (c == 0); - if (!_t332) goto else106; + _t323 = (c == 0); + if (!_t323) goto else99; *(bool*)&__or_tmp_4 = 1; - goto endif107; - else106:; - _t333 = (c == 34); - *(bool*)&__or_tmp_4 = _t333; - endif107:; - bool _t334; - _t334 = *(bool*)&__or_tmp_4; - if (!_t334) goto endif109; + goto endif100; + else99:; + _t324 = (c == 34); + *(bool*)&__or_tmp_4 = _t324; + endif100:; + bool _t325; + _t325 = *(bool*)&__or_tmp_4; + if (!_t325) goto endif102; { - goto wend105; + goto wend98; } - endif109:; - _t335 = (c == 92); - if (!_t335) goto else110; + endif102:; + _t326 = (c == 92); + if (!_t326) goto else103; { JsonParser_Advance(p); int esc; - int _t336; - _t336 = JsonParser_Peek(p); - esc = _t336; - _t337 = (esc == 0); - if (!_t337) goto endif113; + int _t327; + _t327 = JsonParser_Peek(p); + esc = _t327; + _t328 = (esc == 0); + if (!_t328) goto endif106; { p->error = "Unterminated string escape"; - _t338 = &sb; - StringBuilder_Free(_t338); + _t329 = &sb; + StringBuilder_Free(_t329); return ""; } - endif113:; - _t339 = (esc == 110); - if (!_t339) goto else114; + endif106:; + _t330 = (esc == 110); + if (!_t330) goto else107; + { + _t331 = &sb; + _t332 = (char)10; + StringBuilder_AppendChar(_t331, _t332); + } + goto endif108; + else107:; + _t333 = (esc == 116); + if (!_t333) goto else109; + { + _t334 = &sb; + _t335 = (char)9; + StringBuilder_AppendChar(_t334, _t335); + } + goto endif110; + else109:; + _t336 = (esc == 114); + if (!_t336) goto else111; + { + _t337 = &sb; + _t338 = (char)13; + StringBuilder_AppendChar(_t337, _t338); + } + goto endif112; + else111:; + _t339 = (esc == 98); + if (!_t339) goto else113; { _t340 = &sb; - _t341 = (char)10; + _t341 = (char)8; StringBuilder_AppendChar(_t340, _t341); } - goto endif115; - else114:; - _t342 = (esc == 116); - if (!_t342) goto else116; + goto endif114; + else113:; + _t342 = (esc == 102); + if (!_t342) goto else115; { _t343 = &sb; - _t344 = (char)9; + _t344 = (char)12; StringBuilder_AppendChar(_t343, _t344); } - goto endif117; - else116:; - _t345 = (esc == 114); - if (!_t345) goto else118; + goto endif116; + else115:; + _t345 = (esc == 34); + if (!_t345) goto else117; { _t346 = &sb; - _t347 = (char)13; + _t347 = (char)34; StringBuilder_AppendChar(_t346, _t347); } - goto endif119; - else118:; - _t348 = (esc == 98); - if (!_t348) goto else120; + goto endif118; + else117:; + _t348 = (esc == 92); + if (!_t348) goto else119; { _t349 = &sb; - _t350 = (char)8; + _t350 = (char)92; StringBuilder_AppendChar(_t349, _t350); } - goto endif121; - else120:; - _t351 = (esc == 102); - if (!_t351) goto else122; + goto endif120; + else119:; { - _t352 = &sb; - _t353 = (char)12; - StringBuilder_AppendChar(_t352, _t353); + _t351 = &sb; + _t352 = (char)92; + StringBuilder_AppendChar(_t351, _t352); + _t353 = &sb; + _t354 = (char)esc; + StringBuilder_AppendChar(_t353, _t354); } - goto endif123; - else122:; - _t354 = (esc == 34); - if (!_t354) goto else124; + endif120:; + endif118:; + endif116:; + endif114:; + endif112:; + endif110:; + endif108:; + JsonParser_Advance(p); + } + goto endif104; + else103:; { _t355 = &sb; - _t356 = (char)34; + _t356 = (char)c; StringBuilder_AppendChar(_t355, _t356); - } - goto endif125; - else124:; - _t357 = (esc == 92); - if (!_t357) goto else126; - { - _t358 = &sb; - _t359 = (char)92; - StringBuilder_AppendChar(_t358, _t359); - } - goto endif127; - else126:; - { - _t360 = &sb; - _t361 = (char)92; - StringBuilder_AppendChar(_t360, _t361); - _t362 = &sb; - _t363 = (char)esc; - StringBuilder_AppendChar(_t362, _t363); - } - endif127:; - endif125:; - endif123:; - endif121:; - endif119:; - endif117:; - endif115:; JsonParser_Advance(p); } - goto endif111; - else110:; - { - _t364 = &sb; - _t365 = (char)c; - StringBuilder_AppendChar(_t364, _t365); - JsonParser_Advance(p); + endif104:; } - endif111:; - } - goto while103; - wend105:; - int _t366; - _t366 = JsonParser_Peek(p); - _t367 = (_t366 != 34); - if (!_t367) goto endif129; + goto while97; + wend98:; + int _t357; + _t357 = JsonParser_Peek(p); + _t358 = (_t357 != 34); + if (!_t358) goto endif122; { p->error = "Unterminated string"; - _t368 = &sb; - StringBuilder_Free(_t368); + _t359 = &sb; + StringBuilder_Free(_t359); return ""; } - endif129:; + endif122:; JsonParser_Advance(p); const char* result; - _t369 = &sb; - const char* _t370; - _t370 = StringBuilder_Build(_t369); - result = _t370; - _t371 = &sb; - StringBuilder_Free(_t371); + _t360 = &sb; + const char* _t361; + _t361 = StringBuilder_Build(_t360); + result = _t361; + _t362 = &sb; + StringBuilder_Free(_t362); return result; } JsonValue JsonParser_ParseNumber(JsonParser* p) { - int _t374; - int _t376; - int _t377; - int _t380; - int _t382; - int _t383; - int _t387; - unsigned int start; - unsigned int _t372; - _t372 = p->pos; - start = _t372; - int c0; + int _t365; + int _t367; + int _t368; + int _t371; int _t373; - _t373 = JsonParser_Peek(p); - c0 = _t373; - _t374 = (c0 == 45); - if (!_t374) goto endif131; + int _t374; + int _t378; + unsigned int start; + unsigned int _t363; + _t363 = p->pos; + start = _t363; + int c0; + int _t364; + _t364 = JsonParser_Peek(p); + c0 = _t364; + _t365 = (c0 == 45); + if (!_t365) goto endif124; { JsonParser_Advance(p); } - endif131:; - while132:; + endif124:; + while125:; + if (!1) goto wend126; + { + int c; + int _t366; + _t366 = JsonParser_Peek(p); + c = _t366; + bool __and_tmp_5; + _t367 = (c >= 48); + if (!_t367) goto else127; + _t368 = (c <= 57); + *(bool*)&__and_tmp_5 = _t368; + goto endif128; + else127:; + *(bool*)&__and_tmp_5 = 0; + endif128:; + bool _t369; + _t369 = *(bool*)&__and_tmp_5; + if (!_t369) goto else129; + { + JsonParser_Advance(p); + } + goto endif130; + else129:; + { + goto wend126; + } + endif130:; + } + goto while125; + wend126:; + int _t370; + _t370 = JsonParser_Peek(p); + _t371 = (_t370 == 46); + if (!_t371) goto endif132; + { + JsonParser_Advance(p); + while133:; if (!1) goto wend134; { int c; - int _t375; - _t375 = JsonParser_Peek(p); - c = _t375; - bool __and_tmp_5; - _t376 = (c >= 48); - if (!_t376) goto else135; - _t377 = (c <= 57); - *(bool*)&__and_tmp_5 = _t377; + int _t372; + _t372 = JsonParser_Peek(p); + c = _t372; + bool __and_tmp_6; + _t373 = (c >= 48); + if (!_t373) goto else135; + _t374 = (c <= 57); + *(bool*)&__and_tmp_6 = _t374; goto endif136; else135:; - *(bool*)&__and_tmp_5 = 0; + *(bool*)&__and_tmp_6 = 0; endif136:; - bool _t378; - _t378 = *(bool*)&__and_tmp_5; - if (!_t378) goto else137; + bool _t375; + _t375 = *(bool*)&__and_tmp_6; + if (!_t375) goto else137; { JsonParser_Advance(p); } @@ -2261,1098 +2297,1061 @@ JsonValue JsonParser_ParseNumber(JsonParser* p) { } endif138:; } - goto while132; + goto while133; wend134:; - int _t379; - _t379 = JsonParser_Peek(p); - _t380 = (_t379 == 46); - if (!_t380) goto endif140; - { - JsonParser_Advance(p); - while141:; - if (!1) goto wend143; - { - int c; - int _t381; - _t381 = JsonParser_Peek(p); - c = _t381; - bool __and_tmp_6; - _t382 = (c >= 48); - if (!_t382) goto else144; - _t383 = (c <= 57); - *(bool*)&__and_tmp_6 = _t383; - goto endif145; - else144:; - *(bool*)&__and_tmp_6 = 0; - endif145:; - bool _t384; - _t384 = *(bool*)&__and_tmp_6; - if (!_t384) goto else146; - { - JsonParser_Advance(p); } - goto endif147; - else146:; - { - goto wend143; - } - endif147:; - } - goto while141; - wend143:; - } - endif140:; + endif132:; const char* numStr; - const char* _t385; - _t385 = p->src; - unsigned int _t386; - _t386 = p->pos; - _t387 = _t386 - start; - const char* _t388; - _t388 = String_Slice(_t385, start, _t387); - numStr = _t388; + const char* _t376; + _t376 = p->src; + unsigned int _t377; + _t377 = p->pos; + _t378 = _t377 - start; + const char* _t379; + _t379 = String_Slice(_t376, start, _t378); + numStr = _t379; double n; - double _t389; - _t389 = String_ToFloat(numStr); - n = _t389; - JsonValue _t390; - _t390 = Json_Number(n); - return _t390; + double _t380; + _t380 = String_ToFloat(numStr); + n = _t380; + JsonValue _t381; + _t381 = Json_Number(n); + return _t381; } JsonValue JsonParser_ParseArray(JsonParser* p) { - int _t393; - int _t396; - void* _t398; - int _t400; - int _t401; + int _t384; + int _t387; + void* _t389; + int _t391; + int _t392; JsonParser_Advance(p); JsonValue arr; - JsonValue _t391; - _t391 = Json_Array(); - arr = _t391; + JsonValue _t382; + _t382 = Json_Array(); + arr = _t382; JsonParser_SkipWhitespace(p); - int _t392; - _t392 = JsonParser_Peek(p); - _t393 = (_t392 == 93); - if (!_t393) goto endif149; + int _t383; + _t383 = JsonParser_Peek(p); + _t384 = (_t383 == 93); + if (!_t384) goto endif140; { JsonParser_Advance(p); return arr; } - endif149:; - while150:; - if (!1) goto wend152; + endif140:; + while141:; + if (!1) goto wend142; { JsonParser_SkipWhitespace(p); JsonValue val; - JsonValue _t394; - _t394 = JsonParser_ParseValue(p); - val = _t394; - const char* _t395; - _t395 = p->error; - _t396 = (_t395 != ""); - if (!_t396) goto endif154; + JsonValue _t385; + _t385 = JsonParser_ParseValue(p); + val = _t385; + const char* _t386; + _t386 = p->error; + _t387 = (_t386 != ""); + if (!_t387) goto endif144; { - JsonValue _t397; - _t397 = Json_Null(); - return _t397; + JsonValue _t388; + _t388 = Json_Null(); + return _t388; } - endif154:; - _t398 = &arr; - Json_ArrayPush(_t398, val); + endif144:; + _t389 = &arr; + Json_ArrayPush(_t389, val); JsonParser_SkipWhitespace(p); int c; - int _t399; - _t399 = JsonParser_Peek(p); - c = _t399; - _t400 = (c == 93); - if (!_t400) goto endif156; + int _t390; + _t390 = JsonParser_Peek(p); + c = _t390; + _t391 = (c == 93); + if (!_t391) goto endif146; { JsonParser_Advance(p); return arr; } - endif156:; - _t401 = (c == 44); - if (!_t401) goto else157; + endif146:; + _t392 = (c == 44); + if (!_t392) goto else147; { JsonParser_Advance(p); } - goto endif158; - else157:; + goto endif148; + else147:; { p->error = "Expected ',' or ']' in array"; - JsonValue _t402; - _t402 = Json_Null(); - return _t402; + JsonValue _t393; + _t393 = Json_Null(); + return _t393; } - endif158:; + endif148:; } - goto while150; - wend152:; + goto while141; + wend142:; } JsonValue JsonParser_ParseObject(JsonParser* p) { - int _t405; - int _t408; + int _t396; + int _t399; + int _t402; + int _t406; + void* _t408; + int _t410; int _t411; - int _t415; - void* _t417; - int _t419; - int _t420; JsonParser_Advance(p); JsonValue obj; - JsonValue _t403; - _t403 = Json_Object(); - obj = _t403; + JsonValue _t394; + _t394 = Json_Object(); + obj = _t394; JsonParser_SkipWhitespace(p); - int _t404; - _t404 = JsonParser_Peek(p); - _t405 = (_t404 == 125); - if (!_t405) goto endif160; + int _t395; + _t395 = JsonParser_Peek(p); + _t396 = (_t395 == 125); + if (!_t396) goto endif150; + { + JsonParser_Advance(p); + return obj; + } + endif150:; + while151:; + if (!1) goto wend152; + { + JsonParser_SkipWhitespace(p); + const char* key; + const char* _t397; + _t397 = JsonParser_ParseString(p); + key = _t397; + const char* _t398; + _t398 = p->error; + _t399 = (_t398 != ""); + if (!_t399) goto endif154; + { + JsonValue _t400; + _t400 = Json_Null(); + return _t400; + } + endif154:; + JsonParser_SkipWhitespace(p); + int _t401; + _t401 = JsonParser_Peek(p); + _t402 = (_t401 != 58); + if (!_t402) goto endif156; + { + p->error = "Expected ':' after object key"; + JsonValue _t403; + _t403 = Json_Null(); + return _t403; + } + endif156:; + JsonParser_Advance(p); + JsonParser_SkipWhitespace(p); + JsonValue val; + JsonValue _t404; + _t404 = JsonParser_ParseValue(p); + val = _t404; + const char* _t405; + _t405 = p->error; + _t406 = (_t405 != ""); + if (!_t406) goto endif158; + { + JsonValue _t407; + _t407 = Json_Null(); + return _t407; + } + endif158:; + _t408 = &obj; + Json_ObjectSet(_t408, key, val); + JsonParser_SkipWhitespace(p); + int c; + int _t409; + _t409 = JsonParser_Peek(p); + c = _t409; + _t410 = (c == 125); + if (!_t410) goto endif160; { JsonParser_Advance(p); return obj; } endif160:; - while161:; - if (!1) goto wend163; + _t411 = (c == 44); + if (!_t411) goto else161; { - JsonParser_SkipWhitespace(p); - const char* key; - const char* _t406; - _t406 = JsonParser_ParseString(p); - key = _t406; - const char* _t407; - _t407 = p->error; - _t408 = (_t407 != ""); - if (!_t408) goto endif165; - { - JsonValue _t409; - _t409 = Json_Null(); - return _t409; + JsonParser_Advance(p); } - endif165:; - JsonParser_SkipWhitespace(p); - int _t410; - _t410 = JsonParser_Peek(p); - _t411 = (_t410 != 58); - if (!_t411) goto endif167; + goto endif162; + else161:; { - p->error = "Expected ':' after object key"; + p->error = "Expected ',' or '}' in object"; JsonValue _t412; _t412 = Json_Null(); return _t412; } - endif167:; - JsonParser_Advance(p); - JsonParser_SkipWhitespace(p); - JsonValue val; - JsonValue _t413; - _t413 = JsonParser_ParseValue(p); - val = _t413; - const char* _t414; - _t414 = p->error; - _t415 = (_t414 != ""); - if (!_t415) goto endif169; - { - JsonValue _t416; - _t416 = Json_Null(); - return _t416; + endif162:; } - endif169:; - _t417 = &obj; - Json_ObjectSet(_t417, key, val); - JsonParser_SkipWhitespace(p); - int c; - int _t418; - _t418 = JsonParser_Peek(p); - c = _t418; - _t419 = (c == 125); - if (!_t419) goto endif171; - { - JsonParser_Advance(p); - return obj; - } - endif171:; - _t420 = (c == 44); - if (!_t420) goto else172; - { - JsonParser_Advance(p); - } - goto endif173; - else172:; - { - p->error = "Expected ',' or '}' in object"; - JsonValue _t421; - _t421 = Json_Null(); - return _t421; - } - endif173:; - } - goto while161; - wend163:; + goto while151; + wend152:; } JsonValue JsonParser_ParseValue(JsonParser* p) { + int _t414; + int _t416; + int _t419; + int _t421; int _t423; - int _t425; - int _t428; - int _t430; - int _t432; + int _t427; + int _t431; + int _t435; int _t436; - int _t440; - int _t444; - int _t445; - int _t447; + int _t438; JsonParser_SkipWhitespace(p); int c; - int _t422; - _t422 = JsonParser_Peek(p); - c = _t422; - _t423 = (c == 0); - if (!_t423) goto endif175; + int _t413; + _t413 = JsonParser_Peek(p); + c = _t413; + _t414 = (c == 0); + if (!_t414) goto endif164; { p->error = "Unexpected end of input"; - JsonValue _t424; - _t424 = Json_Null(); - return _t424; + JsonValue _t415; + _t415 = Json_Null(); + return _t415; } - endif175:; - _t425 = (c == 34); - if (!_t425) goto endif177; + endif164:; + _t416 = (c == 34); + if (!_t416) goto endif166; { - const char* _t426; - _t426 = JsonParser_ParseString(p); - JsonValue _t427; - _t427 = Json_String(_t426); - return _t427; + const char* _t417; + _t417 = JsonParser_ParseString(p); + JsonValue _t418; + _t418 = Json_String(_t417); + return _t418; } - endif177:; - _t428 = (c == 123); - if (!_t428) goto endif179; + endif166:; + _t419 = (c == 123); + if (!_t419) goto endif168; + { + JsonValue _t420; + _t420 = JsonParser_ParseObject(p); + return _t420; + } + endif168:; + _t421 = (c == 91); + if (!_t421) goto endif170; + { + JsonValue _t422; + _t422 = JsonParser_ParseArray(p); + return _t422; + } + endif170:; + _t423 = (c == 116); + if (!_t423) goto endif172; + { + bool _t424; + _t424 = JsonParser_Match(p, "true"); + if (!_t424) goto endif174; + { + JsonValue _t425; + _t425 = Json_Bool(1); + return _t425; + } + endif174:; + p->error = "Expected 'true'"; + JsonValue _t426; + _t426 = Json_Null(); + return _t426; + } + endif172:; + _t427 = (c == 102); + if (!_t427) goto endif176; + { + bool _t428; + _t428 = JsonParser_Match(p, "false"); + if (!_t428) goto endif178; { JsonValue _t429; - _t429 = JsonParser_ParseObject(p); + _t429 = Json_Bool(0); return _t429; } - endif179:; - _t430 = (c == 91); - if (!_t430) goto endif181; - { - JsonValue _t431; - _t431 = JsonParser_ParseArray(p); - return _t431; + endif178:; + p->error = "Expected 'false'"; + JsonValue _t430; + _t430 = Json_Null(); + return _t430; } - endif181:; - _t432 = (c == 116); - if (!_t432) goto endif183; + endif176:; + _t431 = (c == 110); + if (!_t431) goto endif180; { - bool _t433; - _t433 = JsonParser_Match(p, "true"); - if (!_t433) goto endif185; + bool _t432; + _t432 = JsonParser_Match(p, "null"); + if (!_t432) goto endif182; { + JsonValue _t433; + _t433 = Json_Null(); + return _t433; + } + endif182:; + p->error = "Expected 'null'"; JsonValue _t434; - _t434 = Json_Bool(1); + _t434 = Json_Null(); return _t434; } - endif185:; - p->error = "Expected 'true'"; - JsonValue _t435; - _t435 = Json_Null(); - return _t435; - } - endif183:; - _t436 = (c == 102); - if (!_t436) goto endif187; - { - bool _t437; - _t437 = JsonParser_Match(p, "false"); - if (!_t437) goto endif189; - { - JsonValue _t438; - _t438 = Json_Bool(0); - return _t438; - } - endif189:; - p->error = "Expected 'false'"; - JsonValue _t439; - _t439 = Json_Null(); - return _t439; - } - endif187:; - _t440 = (c == 110); - if (!_t440) goto endif191; - { - bool _t441; - _t441 = JsonParser_Match(p, "null"); - if (!_t441) goto endif193; - { - JsonValue _t442; - _t442 = Json_Null(); - return _t442; - } - endif193:; - p->error = "Expected 'null'"; - JsonValue _t443; - _t443 = Json_Null(); - return _t443; - } - endif191:; + endif180:; bool __or_tmp_7; bool __and_tmp_8; - _t444 = (c >= 48); - if (!_t444) goto else194; - _t445 = (c <= 57); - *(bool*)&__and_tmp_8 = _t445; - goto endif195; - else194:; + _t435 = (c >= 48); + if (!_t435) goto else183; + _t436 = (c <= 57); + *(bool*)&__and_tmp_8 = _t436; + goto endif184; + else183:; *(bool*)&__and_tmp_8 = 0; - endif195:; - bool _t446; - _t446 = *(bool*)&__and_tmp_8; - if (!_t446) goto else196; + endif184:; + bool _t437; + _t437 = *(bool*)&__and_tmp_8; + if (!_t437) goto else185; *(bool*)&__or_tmp_7 = 1; - goto endif197; - else196:; - _t447 = (c == 45); - *(bool*)&__or_tmp_7 = _t447; - endif197:; - bool _t448; - _t448 = *(bool*)&__or_tmp_7; - if (!_t448) goto endif199; + goto endif186; + else185:; + _t438 = (c == 45); + *(bool*)&__or_tmp_7 = _t438; + endif186:; + bool _t439; + _t439 = *(bool*)&__or_tmp_7; + if (!_t439) goto endif188; { - JsonValue _t449; - _t449 = JsonParser_ParseNumber(p); - return _t449; + JsonValue _t440; + _t440 = JsonParser_ParseNumber(p); + return _t440; } - endif199:; + endif188:; p->error = "Unexpected character"; - JsonValue _t450; - _t450 = Json_Null(); - return _t450; + JsonValue _t441; + _t441 = Json_Null(); + return _t441; } JsonValue Json_Parse(const char* s) { - JsonParser _t452; - void* _t453; - void* _t455; - int _t457; - int _t460; + JsonParser _t443; + void* _t444; + void* _t446; + int _t448; + int _t451; JsonParser p; - unsigned int _t451; - _t451 = String_Len(s); - _t452 = (JsonParser){.src = s, .pos = 0, .len = _t451, .error = ""}; - p = _t452; + unsigned int _t442; + _t442 = String_Len(s); + _t443 = (JsonParser){.src = s, .pos = 0, .len = _t442, .error = ""}; + p = _t443; JsonValue result; - _t453 = &p; - JsonValue _t454; - _t454 = JsonParser_ParseValue(_t453); - result = _t454; - _t455 = &p; - JsonParser_SkipWhitespace(_t455); + _t444 = &p; + JsonValue _t445; + _t445 = JsonParser_ParseValue(_t444); + result = _t445; + _t446 = &p; + JsonParser_SkipWhitespace(_t446); bool __and_tmp_9; - const char* _t456; - _t456 = p.error; - _t457 = (_t456 == ""); - if (!_t457) goto else200; - unsigned int _t458; - _t458 = p.pos; - unsigned int _t459; - _t459 = p.len; - _t460 = (_t458 != _t459); - *(bool*)&__and_tmp_9 = _t460; - goto endif201; - else200:; + const char* _t447; + _t447 = p.error; + _t448 = (_t447 == ""); + if (!_t448) goto else189; + unsigned int _t449; + _t449 = p.pos; + unsigned int _t450; + _t450 = p.len; + _t451 = (_t449 != _t450); + *(bool*)&__and_tmp_9 = _t451; + goto endif190; + else189:; *(bool*)&__and_tmp_9 = 0; - endif201:; - bool _t461; - _t461 = *(bool*)&__and_tmp_9; - if (!_t461) goto endif203; + endif190:; + bool _t452; + _t452 = *(bool*)&__and_tmp_9; + if (!_t452) goto endif192; { p.error = "Trailing data after JSON value"; - JsonValue _t462; - _t462 = Json_Null(); - return _t462; + JsonValue _t453; + _t453 = Json_Null(); + return _t453; } - endif203:; + endif192:; return result; } void Json_StringifyImpl(StringBuilder* sb, JsonValue v) { - int _t464; - int _t466; - int _t469; + int _t455; + int _t457; + int _t460; + int _t463; + char _t464; + char _t466; + int _t468; + char _t469; + int _t471; int _t472; char _t473; - char _t475; - int _t477; - char _t478; - int _t480; - int _t481; - char _t482; - int _t485; - char _t486; - int _t488; + int _t476; + char _t477; + int _t479; + char _t480; + int _t482; + int _t483; + char _t484; + char _t485; + char _t488; char _t489; - int _t491; int _t492; char _t493; - char _t494; - char _t497; - char _t498; - int _t501; - char _t502; - int _t463; - _t463 = v.tag; - _t464 = (_t463 == JsonTagNull); - if (!_t464) goto endif205; + int _t454; + _t454 = v.tag; + _t455 = (_t454 == JsonTagNull); + if (!_t455) goto endif194; { StringBuilder_Append(sb, "null"); return; } - endif205:; - int _t465; - _t465 = v.tag; - _t466 = (_t465 == JsonTagBool); - if (!_t466) goto endif207; + endif194:; + int _t456; + _t456 = v.tag; + _t457 = (_t456 == JsonTagBool); + if (!_t457) goto endif196; { - bool _t467; - _t467 = v.boolVal; - if (!_t467) goto else208; + bool _t458; + _t458 = v.boolVal; + if (!_t458) goto else197; { StringBuilder_Append(sb, "true"); } - goto endif209; - else208:; + goto endif198; + else197:; { StringBuilder_Append(sb, "false"); } - endif209:; + endif198:; return; } - endif207:; - int _t468; - _t468 = v.tag; - _t469 = (_t468 == JsonTagNumber); - if (!_t469) goto endif211; + endif196:; + int _t459; + _t459 = v.tag; + _t460 = (_t459 == JsonTagNumber); + if (!_t460) goto endif200; { - double _t470; - _t470 = v.numVal; - StringBuilder_AppendFloat(sb, _t470); + double _t461; + _t461 = v.numVal; + StringBuilder_AppendFloat(sb, _t461); return; } - endif211:; - int _t471; - _t471 = v.tag; - _t472 = (_t471 == JsonTagString); - if (!_t472) goto endif213; + endif200:; + int _t462; + _t462 = v.tag; + _t463 = (_t462 == JsonTagString); + if (!_t463) goto endif202; { - _t473 = (char)34; + _t464 = (char)34; + StringBuilder_AppendChar(sb, _t464); + const char* _t465; + _t465 = v.strVal; + StringBuilder_Append(sb, _t465); + _t466 = (char)34; + StringBuilder_AppendChar(sb, _t466); + return; + } + endif202:; + int _t467; + _t467 = v.tag; + _t468 = (_t467 == JsonTagArray); + if (!_t468) goto endif204; + { + _t469 = (char)91; + StringBuilder_AppendChar(sb, _t469); + unsigned int i; + i = 0; + while205:; + unsigned int _t470; + _t470 = v.arrLen; + _t471 = (i < _t470); + if (!_t471) goto wend206; + { + _t472 = (i > 0); + if (!_t472) goto endif208; + { + _t473 = (char)44; StringBuilder_AppendChar(sb, _t473); - const char* _t474; - _t474 = v.strVal; - StringBuilder_Append(sb, _t474); - _t475 = (char)34; - StringBuilder_AppendChar(sb, _t475); + } + endif208:; + JsonValue* _t474; + _t474 = v.arrData; + JsonValue _t475; + _t475 = _t474[i]; + Json_StringifyImpl(sb, _t475); + _t476 = i + 1; + i = _t476; + } + goto while205; + wend206:; + _t477 = (char)93; + StringBuilder_AppendChar(sb, _t477); return; } - endif213:; - int _t476; - _t476 = v.tag; - _t477 = (_t476 == JsonTagArray); - if (!_t477) goto endif215; + endif204:; + int _t478; + _t478 = v.tag; + _t479 = (_t478 == JsonTagObject); + if (!_t479) goto endif210; { - _t478 = (char)91; - StringBuilder_AppendChar(sb, _t478); + _t480 = (char)123; + StringBuilder_AppendChar(sb, _t480); unsigned int i; i = 0; - while216:; - unsigned int _t479; - _t479 = v.arrLen; - _t480 = (i < _t479); - if (!_t480) goto wend218; + while211:; + unsigned int _t481; + _t481 = v.objLen; + _t482 = (i < _t481); + if (!_t482) goto wend212; { - _t481 = (i > 0); - if (!_t481) goto endif220; + _t483 = (i > 0); + if (!_t483) goto endif214; { - _t482 = (char)44; - StringBuilder_AppendChar(sb, _t482); + _t484 = (char)44; + StringBuilder_AppendChar(sb, _t484); } - endif220:; - JsonValue* _t483; - _t483 = v.arrData; - JsonValue _t484; - _t484 = _t483[i]; - Json_StringifyImpl(sb, _t484); - _t485 = i + 1; - i = _t485; - } - goto while216; - wend218:; - _t486 = (char)93; - StringBuilder_AppendChar(sb, _t486); - return; - } - endif215:; - int _t487; - _t487 = v.tag; - _t488 = (_t487 == JsonTagObject); - if (!_t488) goto endif222; - { - _t489 = (char)123; + endif214:; + _t485 = (char)34; + StringBuilder_AppendChar(sb, _t485); + const char** _t486; + _t486 = v.objKeys; + const char* _t487; + _t487 = _t486[i]; + StringBuilder_Append(sb, _t487); + _t488 = (char)34; + StringBuilder_AppendChar(sb, _t488); + _t489 = (char)58; StringBuilder_AppendChar(sb, _t489); - unsigned int i; - i = 0; - while223:; - unsigned int _t490; - _t490 = v.objLen; - _t491 = (i < _t490); - if (!_t491) goto wend225; - { - _t492 = (i > 0); - if (!_t492) goto endif227; - { - _t493 = (char)44; + JsonValue* _t490; + _t490 = v.objValues; + JsonValue _t491; + _t491 = _t490[i]; + Json_StringifyImpl(sb, _t491); + _t492 = i + 1; + i = _t492; + } + goto while211; + wend212:; + _t493 = (char)125; StringBuilder_AppendChar(sb, _t493); - } - endif227:; - _t494 = (char)34; - StringBuilder_AppendChar(sb, _t494); - const char** _t495; - _t495 = v.objKeys; - const char* _t496; - _t496 = _t495[i]; - StringBuilder_Append(sb, _t496); - _t497 = (char)34; - StringBuilder_AppendChar(sb, _t497); - _t498 = (char)58; - StringBuilder_AppendChar(sb, _t498); - JsonValue* _t499; - _t499 = v.objValues; - JsonValue _t500; - _t500 = _t499[i]; - Json_StringifyImpl(sb, _t500); - _t501 = i + 1; - i = _t501; - } - goto while223; - wend225:; - _t502 = (char)125; - StringBuilder_AppendChar(sb, _t502); return; } - endif222:; + endif210:; } const char* Json_Stringify(JsonValue v) { - void* _t504; - void* _t505; + void* _t495; + void* _t496; StringBuilder sb; - StringBuilder _t503; - _t503 = StringBuilder_New(); - sb = _t503; - _t504 = &sb; - Json_StringifyImpl(_t504, v); - _t505 = &sb; - const char* _t506; - _t506 = StringBuilder_Build(_t505); - return _t506; + StringBuilder _t494; + _t494 = StringBuilder_New(); + sb = _t494; + _t495 = &sb; + Json_StringifyImpl(_t495, v); + _t496 = &sb; + const char* _t497; + _t497 = StringBuilder_Build(_t496); + return _t497; } unsigned int String_Len(const char* s) { - unsigned int _t507; - _t507 = bux_strlen(s); - return _t507; + unsigned int _t498; + _t498 = bux_strlen(s); + return _t498; } bool String_IsNull(const char* s) { - int _t509; - int _t508; - _t508 = bux_str_is_null(s); - _t509 = (_t508 != 0); - return _t509; + int _t500; + int _t499; + _t499 = bux_str_is_null(s); + _t500 = (_t499 != 0); + return _t500; } bool String_Eq(const char* a, const char* b) { - int _t511; - int _t510; - _t510 = bux_strcmp(a, b); - _t511 = (_t510 == 0); - return _t511; + int _t502; + int _t501; + _t501 = bux_strcmp(a, b); + _t502 = (_t501 == 0); + return _t502; } const char* String_Concat(const char* a, const char* b) { - int _t514; - int _t515; - char* _t517; + int _t505; + int _t506; + char* _t508; unsigned int len_a; - unsigned int _t512; - _t512 = bux_strlen(a); - len_a = _t512; + unsigned int _t503; + _t503 = bux_strlen(a); + len_a = _t503; unsigned int len_b; - unsigned int _t513; - _t513 = bux_strlen(b); - len_b = _t513; + unsigned int _t504; + _t504 = bux_strlen(b); + len_b = _t504; unsigned int total; - _t514 = len_a + len_b; - _t515 = _t514 + 1; - total = _t515; + _t505 = len_a + len_b; + _t506 = _t505 + 1; + total = _t506; char* buf; - void* _t516; - _t516 = bux_alloc(total); - _t517 = (char*)_t516; - buf = _t517; + void* _t507; + _t507 = bux_alloc(total); + _t508 = (char*)_t507; + buf = _t508; bux_strcpy(buf, a); bux_strcat(buf, b); return buf; } const char* String_Copy(const char* s) { - int _t519; - char* _t521; + int _t510; + char* _t512; unsigned int len; - unsigned int _t518; - _t518 = bux_strlen(s); - len = _t518; + unsigned int _t509; + _t509 = bux_strlen(s); + len = _t509; char* buf; - _t519 = len + 1; - void* _t520; - _t520 = bux_alloc(_t519); - _t521 = (char*)_t520; - buf = _t521; + _t510 = len + 1; + void* _t511; + _t511 = bux_alloc(_t510); + _t512 = (char*)_t511; + buf = _t512; bux_strcpy(buf, s); return buf; } bool String_StartsWith(const char* s, const char* prefix) { - int _t524; - int _t526; + int _t515; + int _t517; unsigned int s_len; - unsigned int _t522; - _t522 = bux_strlen(s); - s_len = _t522; + unsigned int _t513; + _t513 = bux_strlen(s); + s_len = _t513; unsigned int p_len; - unsigned int _t523; - _t523 = bux_strlen(prefix); - p_len = _t523; - _t524 = (p_len > s_len); - if (!_t524) goto endif229; + unsigned int _t514; + _t514 = bux_strlen(prefix); + p_len = _t514; + _t515 = (p_len > s_len); + if (!_t515) goto endif216; { return 0; } - endif229:; + endif216:; int r; - int _t525; - _t525 = bux_strncmp(s, prefix, p_len); - r = _t525; - _t526 = (r == 0); - return _t526; + int _t516; + _t516 = bux_strncmp(s, prefix, p_len); + r = _t516; + _t517 = (r == 0); + return _t517; } bool String_EndsWith(const char* s, const char* suffix) { - int _t529; - int _t530; - int _t533; + int _t520; + int _t521; + int _t524; unsigned int s_len; - unsigned int _t527; - _t527 = bux_strlen(s); - s_len = _t527; + unsigned int _t518; + _t518 = bux_strlen(s); + s_len = _t518; unsigned int suf_len; - unsigned int _t528; - _t528 = bux_strlen(suffix); - suf_len = _t528; - _t529 = (suf_len > s_len); - if (!_t529) goto endif231; + unsigned int _t519; + _t519 = bux_strlen(suffix); + suf_len = _t519; + _t520 = (suf_len > s_len); + if (!_t520) goto endif218; { return 0; } - endif231:; + endif218:; unsigned int start; - _t530 = s_len - suf_len; - start = _t530; + _t521 = s_len - suf_len; + start = _t521; const char* tail; - const char* _t531; - _t531 = bux_str_slice(s, start, suf_len); - tail = _t531; + const char* _t522; + _t522 = bux_str_slice(s, start, suf_len); + tail = _t522; bool eq; - int _t532; - _t532 = bux_strcmp(tail, suffix); - _t533 = (_t532 == 0); - eq = _t533; + int _t523; + _t523 = bux_strcmp(tail, suffix); + _t524 = (_t523 == 0); + eq = _t524; return eq; } bool String_Contains(const char* s, const char* substr) { - int _t535; + int _t526; int r; - int _t534; - _t534 = bux_str_contains(s, substr); - r = _t534; - _t535 = (r != 0); - return _t535; + int _t525; + _t525 = bux_str_contains(s, substr); + r = _t525; + _t526 = (r != 0); + return _t526; } const char* String_Slice(const char* s, unsigned int start, unsigned int len) { - const char* _t536; - _t536 = bux_str_slice(s, start, len); - return _t536; + const char* _t527; + _t527 = bux_str_slice(s, start, len); + return _t527; } const char* String_Trim(const char* s) { - const char* _t537; - _t537 = bux_str_trim(s); - return _t537; + const char* _t528; + _t528 = bux_str_trim(s); + return _t528; } const char* String_TrimLeft(const char* s) { - const char* _t538; - _t538 = bux_str_trim_left(s); - return _t538; + const char* _t529; + _t529 = bux_str_trim_left(s); + return _t529; } const char* String_TrimRight(const char* s) { - const char* _t539; - _t539 = bux_str_trim_right(s); - return _t539; + const char* _t530; + _t530 = bux_str_trim_right(s); + return _t530; } const char* String_FromInt(int64_t n) { - const char* _t540; - _t540 = bux_int_to_str(n); - return _t540; + const char* _t531; + _t531 = bux_int_to_str(n); + return _t531; } int64_t String_ToInt(const char* s) { - int64_t _t541; - _t541 = bux_str_to_int(s); - return _t541; + int64_t _t532; + _t532 = bux_str_to_int(s); + return _t532; } StringBuilder StringBuilder_New(void) { - StringBuilder _t543; - void* _t542; - _t542 = bux_sb_new(64); - _t543 = (StringBuilder){.handle = _t542}; - return _t543; + StringBuilder _t534; + void* _t533; + _t533 = bux_sb_new(64); + _t534 = (StringBuilder){.handle = _t533}; + return _t534; } StringBuilder StringBuilder_NewCap(unsigned int cap) { - StringBuilder _t545; - void* _t544; - _t544 = bux_sb_new(cap); - _t545 = (StringBuilder){.handle = _t544}; - return _t545; + StringBuilder _t536; + void* _t535; + _t535 = bux_sb_new(cap); + _t536 = (StringBuilder){.handle = _t535}; + return _t536; } void StringBuilder_Append(StringBuilder* sb, const char* s) { - void* _t546; - _t546 = sb->handle; - bux_sb_append(_t546, s); + void* _t537; + _t537 = sb->handle; + bux_sb_append(_t537, s); } void StringBuilder_AppendInt(StringBuilder* sb, int64_t n) { - void* _t547; - _t547 = sb->handle; - bux_sb_append_int(_t547, n); + void* _t538; + _t538 = sb->handle; + bux_sb_append_int(_t538, n); } void StringBuilder_AppendFloat(StringBuilder* sb, double f) { - void* _t548; - _t548 = sb->handle; - bux_sb_append_float(_t548, f); + void* _t539; + _t539 = sb->handle; + bux_sb_append_float(_t539, f); } void StringBuilder_AppendChar(StringBuilder* sb, char c) { - void* _t549; - _t549 = sb->handle; - bux_sb_append_char(_t549, c); + void* _t540; + _t540 = sb->handle; + bux_sb_append_char(_t540, c); } const char* StringBuilder_Build(StringBuilder* sb) { - void* _t550; - _t550 = sb->handle; - const char* _t551; - _t551 = bux_sb_build(_t550); - return _t551; + void* _t541; + _t541 = sb->handle; + const char* _t542; + _t542 = bux_sb_build(_t541); + return _t542; } void StringBuilder_Free(StringBuilder* sb) { - void* _t552; - _t552 = sb->handle; - bux_sb_free(_t552); + void* _t543; + _t543 = sb->handle; + bux_sb_free(_t543); } unsigned int String_SplitCount(const char* s, const char* delim) { - unsigned int _t553; - _t553 = bux_str_split_count(s, delim); - return _t553; + unsigned int _t544; + _t544 = bux_str_split_count(s, delim); + return _t544; } const char* String_SplitPart(const char* s, const char* delim, unsigned int index) { - const char* _t554; - _t554 = bux_str_split_part(s, delim, index); - return _t554; + const char* _t545; + _t545 = bux_str_split_part(s, delim, index); + return _t545; } const char* String_Join2(const char* a, const char* b, const char* sep) { - const char* _t555; - _t555 = bux_str_join2(a, b, sep); - return _t555; + const char* _t546; + _t546 = bux_str_join2(a, b, sep); + return _t546; } const char* String_Chars(const char* s, unsigned int index) { - const char* _t556; - _t556 = bux_str_slice(s, index, 1); - return _t556; + const char* _t547; + _t547 = bux_str_slice(s, index, 1); + return _t547; } const char* String_Find(const char* haystack, const char* needle) { - const char* _t557; - _t557 = bux_strstr(haystack, needle); - return _t557; + const char* _t548; + _t548 = bux_strstr(haystack, needle); + return _t548; } unsigned int String_Offset(const char* pos, const char* base) { - unsigned int _t558; - _t558 = bux_str_offset(pos, base); - return _t558; + unsigned int _t549; + _t549 = bux_str_offset(pos, base); + return _t549; } const char* String_Replace(const char* s, const char* old, const char* new) { - int _t564; - int _t566; - int _t567; + int _t555; + int _t557; + int _t558; const char* pos; - const char* _t559; - _t559 = bux_strstr(s, old); - pos = _t559; - bool _t560; - _t560 = String_IsNull(pos); - if (!_t560) goto endif233; + const char* _t550; + _t550 = bux_strstr(s, old); + pos = _t550; + bool _t551; + _t551 = String_IsNull(pos); + if (!_t551) goto endif220; { return s; } - endif233:; + endif220:; unsigned int oldLen; - unsigned int _t561; - _t561 = bux_strlen(old); - oldLen = _t561; + unsigned int _t552; + _t552 = bux_strlen(old); + oldLen = _t552; unsigned int prefixLen; - unsigned int _t562; - _t562 = String_Offset(pos, s); - prefixLen = _t562; + unsigned int _t553; + _t553 = String_Offset(pos, s); + prefixLen = _t553; const char* prefix; - const char* _t563; - _t563 = bux_str_slice(s, 0, prefixLen); - prefix = _t563; + const char* _t554; + _t554 = bux_str_slice(s, 0, prefixLen); + prefix = _t554; const char* suffix; - _t564 = prefixLen + oldLen; - unsigned int _t565; - _t565 = bux_strlen(s); - _t566 = _t565 - prefixLen; - _t567 = _t566 - oldLen; - const char* _t568; - _t568 = bux_str_slice(s, _t564, _t567); - suffix = _t568; + _t555 = prefixLen + oldLen; + unsigned int _t556; + _t556 = bux_strlen(s); + _t557 = _t556 - prefixLen; + _t558 = _t557 - oldLen; + const char* _t559; + _t559 = bux_str_slice(s, _t555, _t558); + suffix = _t559; const char* temp; - const char* _t569; - _t569 = String_Concat(prefix, new); - temp = _t569; + const char* _t560; + _t560 = String_Concat(prefix, new); + temp = _t560; const char* result; - const char* _t570; - _t570 = String_Concat(temp, suffix); - result = _t570; + const char* _t561; + _t561 = String_Concat(temp, suffix); + result = _t561; return result; } double String_ToFloat(const char* s) { - double _t571; - _t571 = bux_str_to_float(s); - return _t571; + double _t562; + _t562 = bux_str_to_float(s); + return _t562; } const char* String_FromBool(bool b) { - if (!b) goto endif235; + if (!b) goto endif222; { return "true"; } - endif235:; + endif222:; return "false"; } const char* String_FromFloat(double f) { - const char* _t572; - _t572 = bux_float_to_string(f); - return _t572; + const char* _t563; + _t563 = bux_float_to_string(f); + return _t563; } const char* String_Format1(const char* pattern, const char* a0) { - const char* _t573; - _t573 = bux_str_format(pattern, a0, "", "", "", "", "", "", ""); - return _t573; + const char* _t564; + _t564 = bux_str_format(pattern, a0, "", "", "", "", "", "", ""); + return _t564; } const char* String_Format2(const char* pattern, const char* a0, const char* a1) { - const char* _t574; - _t574 = bux_str_format(pattern, a0, a1, "", "", "", "", "", ""); - return _t574; + const char* _t565; + _t565 = bux_str_format(pattern, a0, a1, "", "", "", "", "", ""); + return _t565; } const char* String_Format3(const char* pattern, const char* a0, const char* a1, const char* a2) { - const char* _t575; - _t575 = bux_str_format(pattern, a0, a1, a2, "", "", "", "", ""); - return _t575; + const char* _t566; + _t566 = bux_str_format(pattern, a0, a1, a2, "", "", "", "", ""); + return _t566; } void Channel_SendInt(Channel_int* ch, int value) { - void* _t577; - void* _t578; - void* _t576; - _t576 = ch->handle; - _t577 = &value; - _t578 = (void*)_t577; - bux_channel_send(_t576, _t578); + void* _t568; + void* _t569; + void* _t567; + _t567 = ch->handle; + _t568 = &value; + _t569 = (void*)_t568; + bux_channel_send(_t567, _t569); } int Channel_RecvInt(Channel_int* ch) { - void* _t580; - void* _t581; + void* _t571; + void* _t572; int result; result = 0; - void* _t579; - _t579 = ch->handle; - _t580 = &result; - _t581 = (void*)_t580; - bux_channel_recv(_t579, _t581); + void* _t570; + _t570 = ch->handle; + _t571 = &result; + _t572 = (void*)_t571; + bux_channel_recv(_t570, _t572); return result; } void Channel_SendFloat64(Channel_float64* ch, double value) { - void* _t583; - void* _t584; - void* _t582; - _t582 = ch->handle; - _t583 = &value; - _t584 = (void*)_t583; - bux_channel_send(_t582, _t584); + void* _t574; + void* _t575; + void* _t573; + _t573 = ch->handle; + _t574 = &value; + _t575 = (void*)_t574; + bux_channel_send(_t573, _t575); } double Channel_RecvFloat64(Channel_float64* ch) { - void* _t586; - void* _t587; + void* _t577; + void* _t578; double result; result = 0.0; - void* _t585; - _t585 = ch->handle; - _t586 = &result; - _t587 = (void*)_t586; - bux_channel_recv(_t585, _t587); + void* _t576; + _t576 = ch->handle; + _t577 = &result; + _t578 = (void*)_t577; + bux_channel_recv(_t576, _t578); return result; } const char* Hash_Sha1(const char* data) { - int _t589; + int _t580; int len; - unsigned int _t588; - _t588 = String_Len(data); - _t589 = (int)_t588; - len = _t589; + unsigned int _t579; + _t579 = String_Len(data); + _t580 = (int)_t579; + len = _t580; void* buf; - void* _t590; - _t590 = Alloc(20); - buf = _t590; + void* _t581; + _t581 = Alloc(20); + buf = _t581; bux_sha1(data, len, buf); const char* result; - const char* _t591; - _t591 = bux_bytes_to_hex(buf, 20); - result = _t591; + const char* _t582; + _t582 = bux_bytes_to_hex(buf, 20); + result = _t582; Free(buf); return result; } const char* Hash_Sha256(const char* data) { - int _t593; + int _t584; int len; - unsigned int _t592; - _t592 = String_Len(data); - _t593 = (int)_t592; - len = _t593; + unsigned int _t583; + _t583 = String_Len(data); + _t584 = (int)_t583; + len = _t584; void* buf; - void* _t594; - _t594 = Alloc(32); - buf = _t594; + void* _t585; + _t585 = Alloc(32); + buf = _t585; bux_sha256(data, len, buf); const char* result; - const char* _t595; - _t595 = bux_bytes_to_hex(buf, 32); - result = _t595; + const char* _t586; + _t586 = bux_bytes_to_hex(buf, 32); + result = _t586; Free(buf); return result; } const char* Hash_Sha384(const char* data) { - int _t597; + int _t588; int len; - unsigned int _t596; - _t596 = String_Len(data); - _t597 = (int)_t596; - len = _t597; + unsigned int _t587; + _t587 = String_Len(data); + _t588 = (int)_t587; + len = _t588; void* buf; - void* _t598; - _t598 = Alloc(48); - buf = _t598; + void* _t589; + _t589 = Alloc(48); + buf = _t589; bux_sha384(data, len, buf); const char* result; - const char* _t599; - _t599 = bux_bytes_to_hex(buf, 48); - result = _t599; + const char* _t590; + _t590 = bux_bytes_to_hex(buf, 48); + result = _t590; Free(buf); return result; } const char* Hash_Sha512(const char* data) { - int _t601; + int _t592; int len; - unsigned int _t600; - _t600 = String_Len(data); - _t601 = (int)_t600; - len = _t601; + unsigned int _t591; + _t591 = String_Len(data); + _t592 = (int)_t591; + len = _t592; void* buf; - void* _t602; - _t602 = Alloc(64); - buf = _t602; + void* _t593; + _t593 = Alloc(64); + buf = _t593; bux_sha512(data, len, buf); const char* result; - const char* _t603; - _t603 = bux_bytes_to_hex(buf, 64); - result = _t603; + const char* _t594; + _t594 = bux_bytes_to_hex(buf, 64); + result = _t594; Free(buf); return result; } void Hash_Sha256Raw(const char* data, void* out) { - int _t605; - unsigned int _t604; - _t604 = String_Len(data); - _t605 = (int)_t604; - bux_sha256(data, _t605, out); + int _t596; + unsigned int _t595; + _t595 = String_Len(data); + _t596 = (int)_t595; + bux_sha256(data, _t596, out); } void Hash_Sha384Raw(const char* data, void* out) { - int _t607; - unsigned int _t606; - _t606 = String_Len(data); - _t607 = (int)_t606; - bux_sha384(data, _t607, out); + int _t598; + unsigned int _t597; + _t597 = String_Len(data); + _t598 = (int)_t597; + bux_sha384(data, _t598, out); } void Hash_Sha512Raw(const char* data, void* out) { - int _t609; - unsigned int _t608; - _t608 = String_Len(data); - _t609 = (int)_t608; - bux_sha512(data, _t609, out); + int _t600; + unsigned int _t599; + _t599 = String_Len(data); + _t600 = (int)_t599; + bux_sha512(data, _t600, out); } int Hash_Sha1Size(void) { @@ -3372,1504 +3371,1504 @@ int Hash_Sha512Size(void) { } const char* Base64_Encode(const char* s) { - int _t611; - unsigned int _t610; - _t610 = String_Len(s); - _t611 = (int)_t610; - const char* _t612; - _t612 = bux_base64_encode(s, _t611); - return _t612; + int _t602; + unsigned int _t601; + _t601 = String_Len(s); + _t602 = (int)_t601; + const char* _t603; + _t603 = bux_base64_encode(s, _t602); + return _t603; } const char* Base64_Decode(const char* s) { - int _t614; - void* _t615; + int _t605; + void* _t606; int outlen; outlen = 0; - unsigned int _t613; - _t613 = String_Len(s); - _t614 = (int)_t613; - _t615 = &outlen; - const char* _t616; - _t616 = bux_base64_decode(s, _t614, _t615); - return _t616; + unsigned int _t604; + _t604 = String_Len(s); + _t605 = (int)_t604; + _t606 = &outlen; + const char* _t607; + _t607 = bux_base64_decode(s, _t605, _t606); + return _t607; } const char* Base64URL_Encode(const char* s) { - int _t618; - unsigned int _t617; - _t617 = String_Len(s); - _t618 = (int)_t617; - const char* _t619; - _t619 = bux_base64url_encode(s, _t618); - return _t619; + int _t609; + unsigned int _t608; + _t608 = String_Len(s); + _t609 = (int)_t608; + const char* _t610; + _t610 = bux_base64url_encode(s, _t609); + return _t610; } const char* Base64URL_Decode(const char* s) { - int _t621; - void* _t622; + int _t612; + void* _t613; int outlen; outlen = 0; - unsigned int _t620; - _t620 = String_Len(s); - _t621 = (int)_t620; - _t622 = &outlen; - const char* _t623; - _t623 = bux_base64url_decode(s, _t621, _t622); - return _t623; + unsigned int _t611; + _t611 = String_Len(s); + _t612 = (int)_t611; + _t613 = &outlen; + const char* _t614; + _t614 = bux_base64url_decode(s, _t612, _t613); + return _t614; } const char* Hmac_Sha256(const char* key, const char* message) { - int _t625; - int _t627; + int _t616; + int _t618; int kl; - unsigned int _t624; - _t624 = String_Len(key); - _t625 = (int)_t624; - kl = _t625; + unsigned int _t615; + _t615 = String_Len(key); + _t616 = (int)_t615; + kl = _t616; int ml; - unsigned int _t626; - _t626 = String_Len(message); - _t627 = (int)_t626; - ml = _t627; + unsigned int _t617; + _t617 = String_Len(message); + _t618 = (int)_t617; + ml = _t618; void* buf; - void* _t628; - _t628 = Alloc(32); - buf = _t628; + void* _t619; + _t619 = Alloc(32); + buf = _t619; bux_hmac_sha256(key, kl, message, ml, buf); const char* result; - const char* _t629; - _t629 = bux_bytes_to_hex(buf, 32); - result = _t629; + const char* _t620; + _t620 = bux_bytes_to_hex(buf, 32); + result = _t620; Free(buf); return result; } void Hmac_Sha256Raw(const char* key, const char* message, void* out) { - int _t631; - int _t633; - unsigned int _t630; - _t630 = String_Len(key); - _t631 = (int)_t630; - unsigned int _t632; - _t632 = String_Len(message); - _t633 = (int)_t632; - bux_hmac_sha256(key, _t631, message, _t633, out); + int _t622; + int _t624; + unsigned int _t621; + _t621 = String_Len(key); + _t622 = (int)_t621; + unsigned int _t623; + _t623 = String_Len(message); + _t624 = (int)_t623; + bux_hmac_sha256(key, _t622, message, _t624, out); } const char* Hmac_Sha256Base64(const char* key, const char* message) { - int _t635; - int _t637; - const char* _t639; + int _t626; + int _t628; + const char* _t630; int kl; - unsigned int _t634; - _t634 = String_Len(key); - _t635 = (int)_t634; - kl = _t635; + unsigned int _t625; + _t625 = String_Len(key); + _t626 = (int)_t625; + kl = _t626; int ml; - unsigned int _t636; - _t636 = String_Len(message); - _t637 = (int)_t636; - ml = _t637; + unsigned int _t627; + _t627 = String_Len(message); + _t628 = (int)_t627; + ml = _t628; void* buf; - void* _t638; - _t638 = Alloc(32); - buf = _t638; + void* _t629; + _t629 = Alloc(32); + buf = _t629; bux_hmac_sha256(key, kl, message, ml, buf); const char* result; - _t639 = (const char*)buf; - const char* _t640; - _t640 = bux_base64_encode(_t639, 32); - result = _t640; + _t630 = (const char*)buf; + const char* _t631; + _t631 = bux_base64_encode(_t630, 32); + result = _t631; Free(buf); return result; } const char* Hmac_Sha384(const char* key, const char* message) { - int _t642; - int _t644; + int _t633; + int _t635; int kl; - unsigned int _t641; - _t641 = String_Len(key); - _t642 = (int)_t641; - kl = _t642; + unsigned int _t632; + _t632 = String_Len(key); + _t633 = (int)_t632; + kl = _t633; int ml; - unsigned int _t643; - _t643 = String_Len(message); - _t644 = (int)_t643; - ml = _t644; + unsigned int _t634; + _t634 = String_Len(message); + _t635 = (int)_t634; + ml = _t635; void* buf; - void* _t645; - _t645 = Alloc(48); - buf = _t645; + void* _t636; + _t636 = Alloc(48); + buf = _t636; bux_hmac_sha384(key, kl, message, ml, buf); const char* result; - const char* _t646; - _t646 = bux_bytes_to_hex(buf, 48); - result = _t646; + const char* _t637; + _t637 = bux_bytes_to_hex(buf, 48); + result = _t637; Free(buf); return result; } void Hmac_Sha384Raw(const char* key, const char* message, void* out) { - int _t648; - int _t650; - unsigned int _t647; - _t647 = String_Len(key); - _t648 = (int)_t647; - unsigned int _t649; - _t649 = String_Len(message); - _t650 = (int)_t649; - bux_hmac_sha384(key, _t648, message, _t650, out); + int _t639; + int _t641; + unsigned int _t638; + _t638 = String_Len(key); + _t639 = (int)_t638; + unsigned int _t640; + _t640 = String_Len(message); + _t641 = (int)_t640; + bux_hmac_sha384(key, _t639, message, _t641, out); } const char* Hmac_Sha384Base64(const char* key, const char* message) { - int _t652; - int _t654; - const char* _t656; + int _t643; + int _t645; + const char* _t647; int kl; - unsigned int _t651; - _t651 = String_Len(key); - _t652 = (int)_t651; - kl = _t652; + unsigned int _t642; + _t642 = String_Len(key); + _t643 = (int)_t642; + kl = _t643; int ml; - unsigned int _t653; - _t653 = String_Len(message); - _t654 = (int)_t653; - ml = _t654; + unsigned int _t644; + _t644 = String_Len(message); + _t645 = (int)_t644; + ml = _t645; void* buf; - void* _t655; - _t655 = Alloc(48); - buf = _t655; + void* _t646; + _t646 = Alloc(48); + buf = _t646; bux_hmac_sha384(key, kl, message, ml, buf); const char* result; - _t656 = (const char*)buf; - const char* _t657; - _t657 = bux_base64_encode(_t656, 48); - result = _t657; + _t647 = (const char*)buf; + const char* _t648; + _t648 = bux_base64_encode(_t647, 48); + result = _t648; Free(buf); return result; } const char* Hmac_Sha512(const char* key, const char* message) { - int _t659; - int _t661; + int _t650; + int _t652; int kl; - unsigned int _t658; - _t658 = String_Len(key); - _t659 = (int)_t658; - kl = _t659; + unsigned int _t649; + _t649 = String_Len(key); + _t650 = (int)_t649; + kl = _t650; int ml; - unsigned int _t660; - _t660 = String_Len(message); - _t661 = (int)_t660; - ml = _t661; + unsigned int _t651; + _t651 = String_Len(message); + _t652 = (int)_t651; + ml = _t652; void* buf; - void* _t662; - _t662 = Alloc(64); - buf = _t662; + void* _t653; + _t653 = Alloc(64); + buf = _t653; bux_hmac_sha512(key, kl, message, ml, buf); const char* result; - const char* _t663; - _t663 = bux_bytes_to_hex(buf, 64); - result = _t663; + const char* _t654; + _t654 = bux_bytes_to_hex(buf, 64); + result = _t654; Free(buf); return result; } void Hmac_Sha512Raw(const char* key, const char* message, void* out) { - int _t665; - int _t667; - unsigned int _t664; - _t664 = String_Len(key); - _t665 = (int)_t664; - unsigned int _t666; - _t666 = String_Len(message); - _t667 = (int)_t666; - bux_hmac_sha512(key, _t665, message, _t667, out); + int _t656; + int _t658; + unsigned int _t655; + _t655 = String_Len(key); + _t656 = (int)_t655; + unsigned int _t657; + _t657 = String_Len(message); + _t658 = (int)_t657; + bux_hmac_sha512(key, _t656, message, _t658, out); } const char* Hmac_Sha512Base64(const char* key, const char* message) { - int _t669; - int _t671; - const char* _t673; + int _t660; + int _t662; + const char* _t664; int kl; - unsigned int _t668; - _t668 = String_Len(key); - _t669 = (int)_t668; - kl = _t669; + unsigned int _t659; + _t659 = String_Len(key); + _t660 = (int)_t659; + kl = _t660; int ml; - unsigned int _t670; - _t670 = String_Len(message); - _t671 = (int)_t670; - ml = _t671; + unsigned int _t661; + _t661 = String_Len(message); + _t662 = (int)_t661; + ml = _t662; void* buf; - void* _t672; - _t672 = Alloc(64); - buf = _t672; + void* _t663; + _t663 = Alloc(64); + buf = _t663; bux_hmac_sha512(key, kl, message, ml, buf); const char* result; - _t673 = (const char*)buf; - const char* _t674; - _t674 = bux_base64_encode(_t673, 64); - result = _t674; + _t664 = (const char*)buf; + const char* _t665; + _t665 = bux_base64_encode(_t664, 64); + result = _t665; Free(buf); return result; } const char* Random_Bytes(int n) { - int _t675; - unsigned int _t676; - int _t679; - const char* _t680; - _t675 = (n <= 0); - if (!_t675) goto endif237; + int _t666; + unsigned int _t667; + int _t670; + const char* _t671; + _t666 = (n <= 0); + if (!_t666) goto endif224; { return ""; } - endif237:; + endif224:; void* buf; - _t676 = (unsigned int)n; - void* _t677; - _t677 = Alloc(_t676); - buf = _t677; - int _t678; - _t678 = bux_random_bytes(buf, n); - _t679 = (_t678 != 1); - if (!_t679) goto endif239; + _t667 = (unsigned int)n; + void* _t668; + _t668 = Alloc(_t667); + buf = _t668; + int _t669; + _t669 = bux_random_bytes(buf, n); + _t670 = (_t669 != 1); + if (!_t670) goto endif226; { Free(buf); return ""; } - endif239:; - _t680 = (const char*)buf; - return _t680; + endif226:; + _t671 = (const char*)buf; + return _t671; } const char* Random_Hex(int n) { - int _t681; - unsigned int _t682; - int _t685; - _t681 = (n <= 0); - if (!_t681) goto endif241; + int _t672; + unsigned int _t673; + int _t676; + _t672 = (n <= 0); + if (!_t672) goto endif228; { return ""; } - endif241:; + endif228:; void* buf; - _t682 = (unsigned int)n; - void* _t683; - _t683 = Alloc(_t682); - buf = _t683; - int _t684; - _t684 = bux_random_bytes(buf, n); - _t685 = (_t684 != 1); - if (!_t685) goto endif243; + _t673 = (unsigned int)n; + void* _t674; + _t674 = Alloc(_t673); + buf = _t674; + int _t675; + _t675 = bux_random_bytes(buf, n); + _t676 = (_t675 != 1); + if (!_t676) goto endif230; { Free(buf); return ""; } - endif243:; + endif230:; const char* result; - const char* _t686; - _t686 = bux_bytes_to_hex(buf, n); - result = _t686; + const char* _t677; + _t677 = bux_bytes_to_hex(buf, n); + result = _t677; Free(buf); return result; } const char* Random_Base64(int n) { - int _t687; - unsigned int _t688; - int _t691; - const char* _t692; - _t687 = (n <= 0); - if (!_t687) goto endif245; + int _t678; + unsigned int _t679; + int _t682; + const char* _t683; + _t678 = (n <= 0); + if (!_t678) goto endif232; { return ""; } - endif245:; + endif232:; void* buf; - _t688 = (unsigned int)n; - void* _t689; - _t689 = Alloc(_t688); - buf = _t689; - int _t690; - _t690 = bux_random_bytes(buf, n); - _t691 = (_t690 != 1); - if (!_t691) goto endif247; + _t679 = (unsigned int)n; + void* _t680; + _t680 = Alloc(_t679); + buf = _t680; + int _t681; + _t681 = bux_random_bytes(buf, n); + _t682 = (_t681 != 1); + if (!_t682) goto endif234; { Free(buf); return ""; } - endif247:; + endif234:; const char* result; - _t692 = (const char*)buf; - const char* _t693; - _t693 = bux_base64_encode(_t692, n); - result = _t693; + _t683 = (const char*)buf; + const char* _t684; + _t684 = bux_base64_encode(_t683, n); + result = _t684; Free(buf); return result; } unsigned int Random_Uint32(void) { - int _t696; - unsigned int* _t697; - unsigned int _t698; + int _t687; + unsigned int* _t688; + unsigned int _t689; void* buf; - void* _t694; - _t694 = Alloc(4); - buf = _t694; - int _t695; - _t695 = bux_random_bytes(buf, 4); - _t696 = (_t695 != 1); - if (!_t696) goto endif249; + void* _t685; + _t685 = Alloc(4); + buf = _t685; + int _t686; + _t686 = bux_random_bytes(buf, 4); + _t687 = (_t686 != 1); + if (!_t687) goto endif236; { Free(buf); return 0; } - endif249:; + endif236:; unsigned int* ptr; - _t697 = (unsigned int*)buf; - ptr = _t697; + _t688 = (unsigned int*)buf; + ptr = _t688; unsigned int val; - _t698 = *ptr; - val = _t698; + _t689 = *ptr; + val = _t689; Free(buf); return val; } const char* Aes_GenerateKey(void) { - unsigned int _t699; - int _t702; - const char* _t703; + unsigned int _t690; + int _t693; + const char* _t694; void* buf; - _t699 = (unsigned int)AES_KEY_SIZE; - void* _t700; - _t700 = Alloc(_t699); - buf = _t700; - int _t701; - _t701 = bux_random_bytes(buf, AES_KEY_SIZE); - _t702 = (_t701 != 1); - if (!_t702) goto endif251; + _t690 = (unsigned int)AES_KEY_SIZE; + void* _t691; + _t691 = Alloc(_t690); + buf = _t691; + int _t692; + _t692 = bux_random_bytes(buf, AES_KEY_SIZE); + _t693 = (_t692 != 1); + if (!_t693) goto endif238; { Free(buf); return ""; } - endif251:; - _t703 = (const char*)buf; - return _t703; + endif238:; + _t694 = (const char*)buf; + return _t694; } const char* Aes_GenerateIV(void) { - unsigned int _t704; - int _t707; - const char* _t708; + unsigned int _t695; + int _t698; + const char* _t699; void* buf; - _t704 = (unsigned int)AES_IV_SIZE; - void* _t705; - _t705 = Alloc(_t704); - buf = _t705; - int _t706; - _t706 = bux_random_bytes(buf, AES_IV_SIZE); - _t707 = (_t706 != 1); - if (!_t707) goto endif253; + _t695 = (unsigned int)AES_IV_SIZE; + void* _t696; + _t696 = Alloc(_t695); + buf = _t696; + int _t697; + _t697 = bux_random_bytes(buf, AES_IV_SIZE); + _t698 = (_t697 != 1); + if (!_t698) goto endif240; { Free(buf); return ""; } - endif253:; - _t708 = (const char*)buf; - return _t708; + endif240:; + _t699 = (const char*)buf; + return _t699; } const char* Aes_CbcEncrypt(const char* plain, const char* key, const char* iv) { - int _t710; - void* _t711; + int _t701; + void* _t702; int outlen; outlen = 0; - unsigned int _t709; - _t709 = String_Len(plain); - _t710 = (int)_t709; - _t711 = &outlen; - const char* _t712; - _t712 = bux_aes_256_cbc_encrypt(plain, _t710, key, iv, _t711); - return _t712; + unsigned int _t700; + _t700 = String_Len(plain); + _t701 = (int)_t700; + _t702 = &outlen; + const char* _t703; + _t703 = bux_aes_256_cbc_encrypt(plain, _t701, key, iv, _t702); + return _t703; } const char* Aes_CbcDecrypt(const char* cipher, const char* key, const char* iv) { - int _t714; - void* _t715; + int _t705; + void* _t706; int outlen; outlen = 0; - unsigned int _t713; - _t713 = String_Len(cipher); - _t714 = (int)_t713; - _t715 = &outlen; - const char* _t716; - _t716 = bux_aes_256_cbc_decrypt(cipher, _t714, key, iv, _t715); - return _t716; + unsigned int _t704; + _t704 = String_Len(cipher); + _t705 = (int)_t704; + _t706 = &outlen; + const char* _t707; + _t707 = bux_aes_256_cbc_decrypt(cipher, _t705, key, iv, _t706); + return _t707; } const char* Aes_GcmEncrypt(const char* plain, const char* key, const char* iv, void* tag) { - int _t718; - void* _t719; + int _t709; + void* _t710; int outlen; outlen = 0; - unsigned int _t717; - _t717 = String_Len(plain); - _t718 = (int)_t717; - _t719 = &outlen; - const char* _t720; - _t720 = bux_aes_256_gcm_encrypt(plain, _t718, key, iv, tag, _t719); - return _t720; + unsigned int _t708; + _t708 = String_Len(plain); + _t709 = (int)_t708; + _t710 = &outlen; + const char* _t711; + _t711 = bux_aes_256_gcm_encrypt(plain, _t709, key, iv, tag, _t710); + return _t711; } const char* Aes_GcmDecrypt(const char* cipher, const char* key, const char* iv, const char* tag) { - int _t722; - void* _t723; + int _t713; + void* _t714; int outlen; outlen = 0; - unsigned int _t721; - _t721 = String_Len(cipher); - _t722 = (int)_t721; - _t723 = &outlen; - const char* _t724; - _t724 = bux_aes_256_gcm_decrypt(cipher, _t722, key, iv, tag, _t723); - return _t724; + unsigned int _t712; + _t712 = String_Len(cipher); + _t713 = (int)_t712; + _t714 = &outlen; + const char* _t715; + _t715 = bux_aes_256_gcm_decrypt(cipher, _t713, key, iv, tag, _t714); + return _t715; } const char* Jwt_MakeHeader(JwtAlg alg) { - int _t725; - int _t726; - int _t727; - int _t728; - int _t729; - int _t730; - int _t731; - int _t732; - int _t733; - _t725 = (alg == JwtAlg_HS256); - if (!_t725) goto endif255; + int _t716; + int _t717; + int _t718; + int _t719; + int _t720; + int _t721; + int _t722; + int _t723; + int _t724; + _t716 = (alg == JwtAlg_HS256); + if (!_t716) goto endif242; { return "{\"alg\":\"HS256\",\"typ\":\"JWT\"}"; } - endif255:; - _t726 = (alg == JwtAlg_HS384); - if (!_t726) goto endif257; + endif242:; + _t717 = (alg == JwtAlg_HS384); + if (!_t717) goto endif244; { return "{\"alg\":\"HS384\",\"typ\":\"JWT\"}"; } - endif257:; - _t727 = (alg == JwtAlg_HS512); - if (!_t727) goto endif259; + endif244:; + _t718 = (alg == JwtAlg_HS512); + if (!_t718) goto endif246; { return "{\"alg\":\"HS512\",\"typ\":\"JWT\"}"; } - endif259:; - _t728 = (alg == JwtAlg_RS256); - if (!_t728) goto endif261; + endif246:; + _t719 = (alg == JwtAlg_RS256); + if (!_t719) goto endif248; { return "{\"alg\":\"RS256\",\"typ\":\"JWT\"}"; } - endif261:; - _t729 = (alg == JwtAlg_RS384); - if (!_t729) goto endif263; + endif248:; + _t720 = (alg == JwtAlg_RS384); + if (!_t720) goto endif250; { return "{\"alg\":\"RS384\",\"typ\":\"JWT\"}"; } - endif263:; - _t730 = (alg == JwtAlg_RS512); - if (!_t730) goto endif265; + endif250:; + _t721 = (alg == JwtAlg_RS512); + if (!_t721) goto endif252; { return "{\"alg\":\"RS512\",\"typ\":\"JWT\"}"; } - endif265:; - _t731 = (alg == JwtAlg_ES256); - if (!_t731) goto endif267; + endif252:; + _t722 = (alg == JwtAlg_ES256); + if (!_t722) goto endif254; { return "{\"alg\":\"ES256\",\"typ\":\"JWT\"}"; } - endif267:; - _t732 = (alg == JwtAlg_ES384); - if (!_t732) goto endif269; + endif254:; + _t723 = (alg == JwtAlg_ES384); + if (!_t723) goto endif256; { return "{\"alg\":\"ES384\",\"typ\":\"JWT\"}"; } - endif269:; - _t733 = (alg == JwtAlg_EdDSA); - if (!_t733) goto endif271; + endif256:; + _t724 = (alg == JwtAlg_EdDSA); + if (!_t724) goto endif258; { return "{\"alg\":\"EdDSA\",\"typ\":\"JWT\"}"; } - endif271:; + endif258:; return "{\"alg\":\"none\",\"typ\":\"JWT\"}"; } const char* Jwt_Sign(JwtAlg alg, const char* signingInput, const char* key) { - int _t734; - const char* _t736; - int _t738; - const char* _t740; + int _t725; + const char* _t727; + int _t729; + const char* _t731; + int _t733; + const char* _t735; + int _t737; + int _t740; int _t742; - const char* _t744; - int _t746; - int _t749; - int _t751; - int _t754; - int _t756; - int _t759; - int _t761; - int _t764; - int _t766; - int _t769; - int _t771; - _t734 = (alg == JwtAlg_HS256); - if (!_t734) goto endif273; + int _t745; + int _t747; + int _t750; + int _t752; + int _t755; + int _t757; + int _t760; + int _t762; + _t725 = (alg == JwtAlg_HS256); + if (!_t725) goto endif260; { void* buf; - void* _t735; - _t735 = Alloc(32); - buf = _t735; + void* _t726; + _t726 = Alloc(32); + buf = _t726; Hmac_Sha256Raw(key, signingInput, buf); const char* result; - _t736 = (const char*)buf; - const char* _t737; - _t737 = bux_base64_encode(_t736, 32); - result = _t737; + _t727 = (const char*)buf; + const char* _t728; + _t728 = bux_base64_encode(_t727, 32); + result = _t728; Free(buf); return result; } - endif273:; - _t738 = (alg == JwtAlg_HS384); - if (!_t738) goto endif275; + endif260:; + _t729 = (alg == JwtAlg_HS384); + if (!_t729) goto endif262; { void* buf; - void* _t739; - _t739 = Alloc(48); - buf = _t739; + void* _t730; + _t730 = Alloc(48); + buf = _t730; Hmac_Sha384Raw(key, signingInput, buf); const char* result; - _t740 = (const char*)buf; - const char* _t741; - _t741 = bux_base64_encode(_t740, 48); - result = _t741; + _t731 = (const char*)buf; + const char* _t732; + _t732 = bux_base64_encode(_t731, 48); + result = _t732; Free(buf); return result; } - endif275:; - _t742 = (alg == JwtAlg_HS512); - if (!_t742) goto endif277; + endif262:; + _t733 = (alg == JwtAlg_HS512); + if (!_t733) goto endif264; { void* buf; - void* _t743; - _t743 = Alloc(64); - buf = _t743; + void* _t734; + _t734 = Alloc(64); + buf = _t734; Hmac_Sha512Raw(key, signingInput, buf); const char* result; - _t744 = (const char*)buf; - const char* _t745; - _t745 = bux_base64_encode(_t744, 64); - result = _t745; + _t735 = (const char*)buf; + const char* _t736; + _t736 = bux_base64_encode(_t735, 64); + result = _t736; Free(buf); return result; } - endif277:; - _t746 = (alg == JwtAlg_RS256); - if (!_t746) goto endif279; + endif264:; + _t737 = (alg == JwtAlg_RS256); + if (!_t737) goto endif266; { const char* raw; - const char* _t747; - _t747 = Rsa_SignSha256(key, signingInput); - raw = _t747; - unsigned int _t748; - _t748 = String_Len(raw); - _t749 = (int)_t748; - const char* _t750; - _t750 = bux_base64_encode(raw, _t749); - return _t750; + const char* _t738; + _t738 = Rsa_SignSha256(key, signingInput); + raw = _t738; + unsigned int _t739; + _t739 = String_Len(raw); + _t740 = (int)_t739; + const char* _t741; + _t741 = bux_base64_encode(raw, _t740); + return _t741; } - endif279:; - _t751 = (alg == JwtAlg_RS384); - if (!_t751) goto endif281; + endif266:; + _t742 = (alg == JwtAlg_RS384); + if (!_t742) goto endif268; { const char* raw; - const char* _t752; - _t752 = Rsa_SignSha384(key, signingInput); - raw = _t752; - unsigned int _t753; - _t753 = String_Len(raw); - _t754 = (int)_t753; - const char* _t755; - _t755 = bux_base64_encode(raw, _t754); - return _t755; + const char* _t743; + _t743 = Rsa_SignSha384(key, signingInput); + raw = _t743; + unsigned int _t744; + _t744 = String_Len(raw); + _t745 = (int)_t744; + const char* _t746; + _t746 = bux_base64_encode(raw, _t745); + return _t746; } - endif281:; - _t756 = (alg == JwtAlg_RS512); - if (!_t756) goto endif283; + endif268:; + _t747 = (alg == JwtAlg_RS512); + if (!_t747) goto endif270; { const char* raw; - const char* _t757; - _t757 = Rsa_SignSha512(key, signingInput); - raw = _t757; - unsigned int _t758; - _t758 = String_Len(raw); - _t759 = (int)_t758; - const char* _t760; - _t760 = bux_base64_encode(raw, _t759); - return _t760; + const char* _t748; + _t748 = Rsa_SignSha512(key, signingInput); + raw = _t748; + unsigned int _t749; + _t749 = String_Len(raw); + _t750 = (int)_t749; + const char* _t751; + _t751 = bux_base64_encode(raw, _t750); + return _t751; } - endif283:; - _t761 = (alg == JwtAlg_ES256); - if (!_t761) goto endif285; + endif270:; + _t752 = (alg == JwtAlg_ES256); + if (!_t752) goto endif272; { const char* raw; - const char* _t762; - _t762 = Ecdsa_SignP256(key, signingInput); - raw = _t762; - unsigned int _t763; - _t763 = String_Len(raw); - _t764 = (int)_t763; - const char* _t765; - _t765 = bux_base64_encode(raw, _t764); - return _t765; + const char* _t753; + _t753 = Ecdsa_SignP256(key, signingInput); + raw = _t753; + unsigned int _t754; + _t754 = String_Len(raw); + _t755 = (int)_t754; + const char* _t756; + _t756 = bux_base64_encode(raw, _t755); + return _t756; } - endif285:; - _t766 = (alg == JwtAlg_ES384); - if (!_t766) goto endif287; + endif272:; + _t757 = (alg == JwtAlg_ES384); + if (!_t757) goto endif274; { const char* raw; - const char* _t767; - _t767 = Ecdsa_SignP384(key, signingInput); - raw = _t767; - unsigned int _t768; - _t768 = String_Len(raw); - _t769 = (int)_t768; - const char* _t770; - _t770 = bux_base64_encode(raw, _t769); - return _t770; + const char* _t758; + _t758 = Ecdsa_SignP384(key, signingInput); + raw = _t758; + unsigned int _t759; + _t759 = String_Len(raw); + _t760 = (int)_t759; + const char* _t761; + _t761 = bux_base64_encode(raw, _t760); + return _t761; } - endif287:; - _t771 = (alg == JwtAlg_EdDSA); - if (!_t771) goto endif289; + endif274:; + _t762 = (alg == JwtAlg_EdDSA); + if (!_t762) goto endif276; { - const char* _t772; - _t772 = Ed25519_Sign(key, signingInput); - return _t772; + const char* _t763; + _t763 = Ed25519_Sign(key, signingInput); + return _t763; } - endif289:; + endif276:; return ""; } bool Jwt_Verify(JwtAlg alg, const char* signingInput, const char* signatureB64, const char* key) { - int _t773; - const char* _t775; - int _t778; - const char* _t780; + int _t764; + const char* _t766; + int _t769; + const char* _t771; + int _t774; + const char* _t776; + int _t779; + int _t781; int _t783; - const char* _t785; - int _t788; - int _t790; - int _t792; - int _t794; - int _t796; - int _t798; - _t773 = (alg == JwtAlg_HS256); - if (!_t773) goto endif291; + int _t785; + int _t787; + int _t789; + _t764 = (alg == JwtAlg_HS256); + if (!_t764) goto endif278; { void* expectBuf; - void* _t774; - _t774 = Alloc(32); - expectBuf = _t774; + void* _t765; + _t765 = Alloc(32); + expectBuf = _t765; Hmac_Sha256Raw(key, signingInput, expectBuf); const char* expectB64; - _t775 = (const char*)expectBuf; - const char* _t776; - _t776 = bux_base64_encode(_t775, 32); - expectB64 = _t776; + _t766 = (const char*)expectBuf; + const char* _t767; + _t767 = bux_base64_encode(_t766, 32); + expectB64 = _t767; Free(expectBuf); - bool _t777; - _t777 = String_Eq(expectB64, signatureB64); - return _t777; + bool _t768; + _t768 = String_Eq(expectB64, signatureB64); + return _t768; } - endif291:; - _t778 = (alg == JwtAlg_HS384); - if (!_t778) goto endif293; + endif278:; + _t769 = (alg == JwtAlg_HS384); + if (!_t769) goto endif280; { void* expectBuf; - void* _t779; - _t779 = Alloc(48); - expectBuf = _t779; + void* _t770; + _t770 = Alloc(48); + expectBuf = _t770; Hmac_Sha384Raw(key, signingInput, expectBuf); const char* expectB64; - _t780 = (const char*)expectBuf; - const char* _t781; - _t781 = bux_base64_encode(_t780, 48); - expectB64 = _t781; + _t771 = (const char*)expectBuf; + const char* _t772; + _t772 = bux_base64_encode(_t771, 48); + expectB64 = _t772; Free(expectBuf); - bool _t782; - _t782 = String_Eq(expectB64, signatureB64); - return _t782; + bool _t773; + _t773 = String_Eq(expectB64, signatureB64); + return _t773; } - endif293:; - _t783 = (alg == JwtAlg_HS512); - if (!_t783) goto endif295; + endif280:; + _t774 = (alg == JwtAlg_HS512); + if (!_t774) goto endif282; { void* expectBuf; - void* _t784; - _t784 = Alloc(64); - expectBuf = _t784; + void* _t775; + _t775 = Alloc(64); + expectBuf = _t775; Hmac_Sha512Raw(key, signingInput, expectBuf); const char* expectB64; - _t785 = (const char*)expectBuf; - const char* _t786; - _t786 = bux_base64_encode(_t785, 64); - expectB64 = _t786; + _t776 = (const char*)expectBuf; + const char* _t777; + _t777 = bux_base64_encode(_t776, 64); + expectB64 = _t777; Free(expectBuf); - bool _t787; - _t787 = String_Eq(expectB64, signatureB64); - return _t787; + bool _t778; + _t778 = String_Eq(expectB64, signatureB64); + return _t778; } - endif295:; - _t788 = (alg == JwtAlg_RS256); - if (!_t788) goto endif297; + endif282:; + _t779 = (alg == JwtAlg_RS256); + if (!_t779) goto endif284; { - bool _t789; - _t789 = Rsa_VerifySha256(key, signingInput, signatureB64); - return _t789; + bool _t780; + _t780 = Rsa_VerifySha256(key, signingInput, signatureB64); + return _t780; } - endif297:; - _t790 = (alg == JwtAlg_RS384); - if (!_t790) goto endif299; + endif284:; + _t781 = (alg == JwtAlg_RS384); + if (!_t781) goto endif286; { - bool _t791; - _t791 = Rsa_VerifySha384(key, signingInput, signatureB64); - return _t791; + bool _t782; + _t782 = Rsa_VerifySha384(key, signingInput, signatureB64); + return _t782; } - endif299:; - _t792 = (alg == JwtAlg_RS512); - if (!_t792) goto endif301; + endif286:; + _t783 = (alg == JwtAlg_RS512); + if (!_t783) goto endif288; { - bool _t793; - _t793 = Rsa_VerifySha512(key, signingInput, signatureB64); - return _t793; + bool _t784; + _t784 = Rsa_VerifySha512(key, signingInput, signatureB64); + return _t784; } - endif301:; - _t794 = (alg == JwtAlg_ES256); - if (!_t794) goto endif303; + endif288:; + _t785 = (alg == JwtAlg_ES256); + if (!_t785) goto endif290; { - bool _t795; - _t795 = Ecdsa_VerifyP256(key, signingInput, signatureB64); - return _t795; + bool _t786; + _t786 = Ecdsa_VerifyP256(key, signingInput, signatureB64); + return _t786; } - endif303:; - _t796 = (alg == JwtAlg_ES384); - if (!_t796) goto endif305; + endif290:; + _t787 = (alg == JwtAlg_ES384); + if (!_t787) goto endif292; { - bool _t797; - _t797 = Ecdsa_VerifyP384(key, signingInput, signatureB64); - return _t797; + bool _t788; + _t788 = Ecdsa_VerifyP384(key, signingInput, signatureB64); + return _t788; } - endif305:; - _t798 = (alg == JwtAlg_EdDSA); - if (!_t798) goto endif307; + endif292:; + _t789 = (alg == JwtAlg_EdDSA); + if (!_t789) goto endif294; { - bool _t799; - _t799 = Ed25519_Verify(key, signatureB64, signingInput); - return _t799; + bool _t790; + _t790 = Ed25519_Verify(key, signatureB64, signingInput); + return _t790; } - endif307:; + endif294:; return 0; } const char* Jwt_Encode(const char* headerJson, const char* payloadJson, JwtAlg alg, const char* key) { const char* headerB64; - const char* _t800; - _t800 = Base64URL_Encode(headerJson); - headerB64 = _t800; + const char* _t791; + _t791 = Base64URL_Encode(headerJson); + headerB64 = _t791; const char* payloadB64; - const char* _t801; - _t801 = Base64URL_Encode(payloadJson); - payloadB64 = _t801; + const char* _t792; + _t792 = Base64URL_Encode(payloadJson); + payloadB64 = _t792; const char* signingInput; - const char* _t802; - _t802 = String_Concat(headerB64, "."); - signingInput = _t802; + const char* _t793; + _t793 = String_Concat(headerB64, "."); + signingInput = _t793; const char* signingInputFull; - const char* _t803; - _t803 = String_Concat(signingInput, payloadB64); - signingInputFull = _t803; + const char* _t794; + _t794 = String_Concat(signingInput, payloadB64); + signingInputFull = _t794; const char* sigB64; - const char* _t804; - _t804 = Jwt_Sign(alg, signingInputFull, key); - sigB64 = _t804; + const char* _t795; + _t795 = Jwt_Sign(alg, signingInputFull, key); + sigB64 = _t795; const char* part1; - const char* _t805; - _t805 = String_Concat(signingInputFull, "."); - part1 = _t805; - const char* _t806; - _t806 = String_Concat(part1, sigB64); - return _t806; + const char* _t796; + _t796 = String_Concat(signingInputFull, "."); + part1 = _t796; + const char* _t797; + _t797 = String_Concat(part1, sigB64); + return _t797; } bool Jwt_Decode(const char* token, JwtAlg alg, const char* key, const char** headerOut, const char** payloadOut) { - int _t808; - int _t815; + int _t799; + int _t806; unsigned int partCount; - unsigned int _t807; - _t807 = bux_str_split_count(token, "."); - partCount = _t807; - _t808 = (partCount != 3); - if (!_t808) goto endif309; + unsigned int _t798; + _t798 = bux_str_split_count(token, "."); + partCount = _t798; + _t799 = (partCount != 3); + if (!_t799) goto endif296; { return 0; } - endif309:; + endif296:; const char* headerB64; - const char* _t809; - _t809 = bux_str_split_part(token, ".", 0); - headerB64 = _t809; + const char* _t800; + _t800 = bux_str_split_part(token, ".", 0); + headerB64 = _t800; const char* payloadB64; - const char* _t810; - _t810 = bux_str_split_part(token, ".", 1); - payloadB64 = _t810; + const char* _t801; + _t801 = bux_str_split_part(token, ".", 1); + payloadB64 = _t801; const char* sigB64; - const char* _t811; - _t811 = bux_str_split_part(token, ".", 2); - sigB64 = _t811; + const char* _t802; + _t802 = bux_str_split_part(token, ".", 2); + sigB64 = _t802; const char* input; - const char* _t812; - _t812 = String_Concat(headerB64, "."); - input = _t812; + const char* _t803; + _t803 = String_Concat(headerB64, "."); + input = _t803; const char* signingInput; - const char* _t813; - _t813 = String_Concat(input, payloadB64); - signingInput = _t813; - bool _t814; - _t814 = Jwt_Verify(alg, signingInput, sigB64, key); - _t815 = !_t814; - if (!_t815) goto endif311; + const char* _t804; + _t804 = String_Concat(input, payloadB64); + signingInput = _t804; + bool _t805; + _t805 = Jwt_Verify(alg, signingInput, sigB64, key); + _t806 = !_t805; + if (!_t806) goto endif298; { return 0; } - endif311:; - const char* _t816; - _t816 = Base64URL_Decode(headerB64); - headerOut[0] = _t816; - const char* _t817; - _t817 = Base64URL_Decode(payloadB64); - payloadOut[0] = _t817; + endif298:; + const char* _t807; + _t807 = Base64URL_Decode(headerB64); + headerOut[0] = _t807; + const char* _t808; + _t808 = Base64URL_Decode(payloadB64); + payloadOut[0] = _t808; return 1; } const char* Jwt_EncodeHS256(const char* payloadJson, const char* secret) { const char* header; - const char* _t818; - _t818 = Jwt_MakeHeader(JwtAlg_HS256); - header = _t818; - const char* _t819; - _t819 = Jwt_Encode(header, payloadJson, JwtAlg_HS256, secret); - return _t819; + const char* _t809; + _t809 = Jwt_MakeHeader(JwtAlg_HS256); + header = _t809; + const char* _t810; + _t810 = Jwt_Encode(header, payloadJson, JwtAlg_HS256, secret); + return _t810; } const char* Jwt_EncodeHS384(const char* payloadJson, const char* secret) { const char* header; - const char* _t820; - _t820 = Jwt_MakeHeader(JwtAlg_HS384); - header = _t820; - const char* _t821; - _t821 = Jwt_Encode(header, payloadJson, JwtAlg_HS384, secret); - return _t821; + const char* _t811; + _t811 = Jwt_MakeHeader(JwtAlg_HS384); + header = _t811; + const char* _t812; + _t812 = Jwt_Encode(header, payloadJson, JwtAlg_HS384, secret); + return _t812; } const char* Jwt_EncodeHS512(const char* payloadJson, const char* secret) { const char* header; - const char* _t822; - _t822 = Jwt_MakeHeader(JwtAlg_HS512); - header = _t822; - const char* _t823; - _t823 = Jwt_Encode(header, payloadJson, JwtAlg_HS512, secret); - return _t823; + const char* _t813; + _t813 = Jwt_MakeHeader(JwtAlg_HS512); + header = _t813; + const char* _t814; + _t814 = Jwt_Encode(header, payloadJson, JwtAlg_HS512, secret); + return _t814; } const char* Jwt_EncodeRS256(const char* payloadJson, const char* pemPrivateKey) { const char* header; - const char* _t824; - _t824 = Jwt_MakeHeader(JwtAlg_RS256); - header = _t824; - const char* _t825; - _t825 = Jwt_Encode(header, payloadJson, JwtAlg_RS256, pemPrivateKey); - return _t825; + const char* _t815; + _t815 = Jwt_MakeHeader(JwtAlg_RS256); + header = _t815; + const char* _t816; + _t816 = Jwt_Encode(header, payloadJson, JwtAlg_RS256, pemPrivateKey); + return _t816; } const char* Jwt_EncodeES256(const char* payloadJson, const char* pemPrivateKey) { const char* header; - const char* _t826; - _t826 = Jwt_MakeHeader(JwtAlg_ES256); - header = _t826; - const char* _t827; - _t827 = Jwt_Encode(header, payloadJson, JwtAlg_ES256, pemPrivateKey); - return _t827; + const char* _t817; + _t817 = Jwt_MakeHeader(JwtAlg_ES256); + header = _t817; + const char* _t818; + _t818 = Jwt_Encode(header, payloadJson, JwtAlg_ES256, pemPrivateKey); + return _t818; } const char* Jwt_EncodeEdDSA(const char* payloadJson, const char* rawPrivKey) { const char* header; - const char* _t828; - _t828 = Jwt_MakeHeader(JwtAlg_EdDSA); - header = _t828; - const char* _t829; - _t829 = Jwt_Encode(header, payloadJson, JwtAlg_EdDSA, rawPrivKey); - return _t829; + const char* _t819; + _t819 = Jwt_MakeHeader(JwtAlg_EdDSA); + header = _t819; + const char* _t820; + _t820 = Jwt_Encode(header, payloadJson, JwtAlg_EdDSA, rawPrivKey); + return _t820; } const char* Ecdsa_SignP256(const char* pemPrivateKey, const char* data) { - int _t831; - int _t833; - void* _t834; + int _t822; + int _t824; + void* _t825; int siglen; siglen = 0; - unsigned int _t830; - _t830 = String_Len(pemPrivateKey); - _t831 = (int)_t830; - unsigned int _t832; - _t832 = String_Len(data); - _t833 = (int)_t832; - _t834 = &siglen; - const char* _t835; - _t835 = bux_ecdsa_sign_p256(pemPrivateKey, _t831, data, _t833, _t834); - return _t835; + unsigned int _t821; + _t821 = String_Len(pemPrivateKey); + _t822 = (int)_t821; + unsigned int _t823; + _t823 = String_Len(data); + _t824 = (int)_t823; + _t825 = &siglen; + const char* _t826; + _t826 = bux_ecdsa_sign_p256(pemPrivateKey, _t822, data, _t824, _t825); + return _t826; } const char* Ecdsa_SignP256Base64(const char* pemPrivateKey, const char* data) { - int _t838; + int _t829; const char* raw; - const char* _t836; - _t836 = Ecdsa_SignP256(pemPrivateKey, data); - raw = _t836; - unsigned int _t837; - _t837 = String_Len(raw); - _t838 = (int)_t837; - const char* _t839; - _t839 = bux_base64_encode(raw, _t838); - return _t839; + const char* _t827; + _t827 = Ecdsa_SignP256(pemPrivateKey, data); + raw = _t827; + unsigned int _t828; + _t828 = String_Len(raw); + _t829 = (int)_t828; + const char* _t830; + _t830 = bux_base64_encode(raw, _t829); + return _t830; } bool Ecdsa_VerifyP256(const char* pemPublicKey, const char* data, const char* signature) { - int _t841; - int _t843; - int _t845; - int _t847; + int _t832; + int _t834; + int _t836; + int _t838; int r; - unsigned int _t840; - _t840 = String_Len(pemPublicKey); - _t841 = (int)_t840; - unsigned int _t842; - _t842 = String_Len(data); - _t843 = (int)_t842; - unsigned int _t844; - _t844 = String_Len(signature); - _t845 = (int)_t844; - int _t846; - _t846 = bux_ecdsa_verify_p256(pemPublicKey, _t841, data, _t843, signature, _t845); - r = _t846; - _t847 = (r == 1); - return _t847; + unsigned int _t831; + _t831 = String_Len(pemPublicKey); + _t832 = (int)_t831; + unsigned int _t833; + _t833 = String_Len(data); + _t834 = (int)_t833; + unsigned int _t835; + _t835 = String_Len(signature); + _t836 = (int)_t835; + int _t837; + _t837 = bux_ecdsa_verify_p256(pemPublicKey, _t832, data, _t834, signature, _t836); + r = _t837; + _t838 = (r == 1); + return _t838; } bool Ecdsa_VerifyP256Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t849; - void* _t850; + int _t840; + void* _t841; int outlen; outlen = 0; const char* sig; - unsigned int _t848; - _t848 = String_Len(signatureB64); - _t849 = (int)_t848; - _t850 = &outlen; - const char* _t851; - _t851 = bux_base64_decode(signatureB64, _t849, _t850); - sig = _t851; - bool _t852; - _t852 = Ecdsa_VerifyP256(pemPublicKey, data, sig); - return _t852; + unsigned int _t839; + _t839 = String_Len(signatureB64); + _t840 = (int)_t839; + _t841 = &outlen; + const char* _t842; + _t842 = bux_base64_decode(signatureB64, _t840, _t841); + sig = _t842; + bool _t843; + _t843 = Ecdsa_VerifyP256(pemPublicKey, data, sig); + return _t843; } const char* Ecdsa_SignP384(const char* pemPrivateKey, const char* data) { - int _t854; - int _t856; - void* _t857; + int _t845; + int _t847; + void* _t848; int siglen; siglen = 0; - unsigned int _t853; - _t853 = String_Len(pemPrivateKey); - _t854 = (int)_t853; - unsigned int _t855; - _t855 = String_Len(data); - _t856 = (int)_t855; - _t857 = &siglen; - const char* _t858; - _t858 = bux_ecdsa_sign_p384(pemPrivateKey, _t854, data, _t856, _t857); - return _t858; + unsigned int _t844; + _t844 = String_Len(pemPrivateKey); + _t845 = (int)_t844; + unsigned int _t846; + _t846 = String_Len(data); + _t847 = (int)_t846; + _t848 = &siglen; + const char* _t849; + _t849 = bux_ecdsa_sign_p384(pemPrivateKey, _t845, data, _t847, _t848); + return _t849; } const char* Ecdsa_SignP384Base64(const char* pemPrivateKey, const char* data) { - int _t861; + int _t852; const char* raw; - const char* _t859; - _t859 = Ecdsa_SignP384(pemPrivateKey, data); - raw = _t859; - unsigned int _t860; - _t860 = String_Len(raw); - _t861 = (int)_t860; - const char* _t862; - _t862 = bux_base64_encode(raw, _t861); - return _t862; + const char* _t850; + _t850 = Ecdsa_SignP384(pemPrivateKey, data); + raw = _t850; + unsigned int _t851; + _t851 = String_Len(raw); + _t852 = (int)_t851; + const char* _t853; + _t853 = bux_base64_encode(raw, _t852); + return _t853; } bool Ecdsa_VerifyP384(const char* pemPublicKey, const char* data, const char* signature) { - int _t864; - int _t866; - int _t868; - int _t870; + int _t855; + int _t857; + int _t859; + int _t861; int r; - unsigned int _t863; - _t863 = String_Len(pemPublicKey); - _t864 = (int)_t863; - unsigned int _t865; - _t865 = String_Len(data); - _t866 = (int)_t865; - unsigned int _t867; - _t867 = String_Len(signature); - _t868 = (int)_t867; - int _t869; - _t869 = bux_ecdsa_verify_p384(pemPublicKey, _t864, data, _t866, signature, _t868); - r = _t869; - _t870 = (r == 1); - return _t870; + unsigned int _t854; + _t854 = String_Len(pemPublicKey); + _t855 = (int)_t854; + unsigned int _t856; + _t856 = String_Len(data); + _t857 = (int)_t856; + unsigned int _t858; + _t858 = String_Len(signature); + _t859 = (int)_t858; + int _t860; + _t860 = bux_ecdsa_verify_p384(pemPublicKey, _t855, data, _t857, signature, _t859); + r = _t860; + _t861 = (r == 1); + return _t861; } bool Ecdsa_VerifyP384Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t872; - void* _t873; + int _t863; + void* _t864; int outlen; outlen = 0; const char* sig; - unsigned int _t871; - _t871 = String_Len(signatureB64); - _t872 = (int)_t871; - _t873 = &outlen; - const char* _t874; - _t874 = bux_base64_decode(signatureB64, _t872, _t873); - sig = _t874; - bool _t875; - _t875 = Ecdsa_VerifyP384(pemPublicKey, data, sig); - return _t875; + unsigned int _t862; + _t862 = String_Len(signatureB64); + _t863 = (int)_t862; + _t864 = &outlen; + const char* _t865; + _t865 = bux_base64_decode(signatureB64, _t863, _t864); + sig = _t865; + bool _t866; + _t866 = Ecdsa_VerifyP384(pemPublicKey, data, sig); + return _t866; } bool Ed25519_Keypair(void* pubKey, void* privKey) { - int _t877; + int _t868; int r; - int _t876; - _t876 = bux_ed25519_keypair(pubKey, privKey); - r = _t876; - _t877 = (r == 1); - return _t877; + int _t867; + _t867 = bux_ed25519_keypair(pubKey, privKey); + r = _t867; + _t868 = (r == 1); + return _t868; } const char* Ed25519_KeypairBase64(void) { - unsigned int _t878; - unsigned int _t880; - int _t883; - const char* _t884; - const char* _t886; + unsigned int _t869; + unsigned int _t871; + int _t874; + const char* _t875; + const char* _t877; void* pubBuf; - _t878 = (unsigned int)ED25519_PUBKEY_SIZE; - void* _t879; - _t879 = Alloc(_t878); - pubBuf = _t879; + _t869 = (unsigned int)ED25519_PUBKEY_SIZE; + void* _t870; + _t870 = Alloc(_t869); + pubBuf = _t870; void* priv; - _t880 = (unsigned int)ED25519_PRIVKEY_SIZE; - void* _t881; - _t881 = Alloc(_t880); - priv = _t881; - int _t882; - _t882 = bux_ed25519_keypair(pubBuf, priv); - _t883 = (_t882 != 1); - if (!_t883) goto endif313; + _t871 = (unsigned int)ED25519_PRIVKEY_SIZE; + void* _t872; + _t872 = Alloc(_t871); + priv = _t872; + int _t873; + _t873 = bux_ed25519_keypair(pubBuf, priv); + _t874 = (_t873 != 1); + if (!_t874) goto endif300; { Free(pubBuf); Free(priv); return ""; } - endif313:; + endif300:; const char* pubB64; - _t884 = (const char*)pubBuf; - const char* _t885; - _t885 = bux_base64_encode(_t884, ED25519_PUBKEY_SIZE); - pubB64 = _t885; + _t875 = (const char*)pubBuf; + const char* _t876; + _t876 = bux_base64_encode(_t875, ED25519_PUBKEY_SIZE); + pubB64 = _t876; const char* privB64; - _t886 = (const char*)priv; - const char* _t887; - _t887 = bux_base64_encode(_t886, ED25519_PRIVKEY_SIZE); - privB64 = _t887; + _t877 = (const char*)priv; + const char* _t878; + _t878 = bux_base64_encode(_t877, ED25519_PRIVKEY_SIZE); + privB64 = _t878; Free(pubBuf); Free(priv); const char* pair; - const char* _t888; - _t888 = String_Concat(pubB64, ":"); - pair = _t888; - const char* _t889; - _t889 = String_Concat(pair, privB64); - return _t889; + const char* _t879; + _t879 = String_Concat(pubB64, ":"); + pair = _t879; + const char* _t880; + _t880 = String_Concat(pair, privB64); + return _t880; } const char* Ed25519_Sign(const char* privKey, const char* data) { - unsigned int _t890; - int _t893; - int _t895; - const char* _t896; + unsigned int _t881; + int _t884; + int _t886; + const char* _t887; void* sig; - _t890 = (unsigned int)ED25519_SIG_SIZE; - void* _t891; - _t891 = Alloc(_t890); - sig = _t891; - unsigned int _t892; - _t892 = String_Len(data); - _t893 = (int)_t892; - int _t894; - _t894 = bux_ed25519_sign(privKey, data, _t893, sig); - _t895 = (_t894 != 1); - if (!_t895) goto endif315; + _t881 = (unsigned int)ED25519_SIG_SIZE; + void* _t882; + _t882 = Alloc(_t881); + sig = _t882; + unsigned int _t883; + _t883 = String_Len(data); + _t884 = (int)_t883; + int _t885; + _t885 = bux_ed25519_sign(privKey, data, _t884, sig); + _t886 = (_t885 != 1); + if (!_t886) goto endif302; { Free(sig); return ""; } - endif315:; - _t896 = (const char*)sig; - return _t896; + endif302:; + _t887 = (const char*)sig; + return _t887; } const char* Ed25519_SignBase64(const char* privKey, const char* data) { - int _t899; + int _t890; const char* sig; - const char* _t897; - _t897 = Ed25519_Sign(privKey, data); - sig = _t897; - unsigned int _t898; - _t898 = String_Len(sig); - _t899 = (_t898 == 0); - if (!_t899) goto endif317; + const char* _t888; + _t888 = Ed25519_Sign(privKey, data); + sig = _t888; + unsigned int _t889; + _t889 = String_Len(sig); + _t890 = (_t889 == 0); + if (!_t890) goto endif304; { return ""; } - endif317:; - const char* _t900; - _t900 = bux_base64_encode(sig, ED25519_SIG_SIZE); - return _t900; + endif304:; + const char* _t891; + _t891 = bux_base64_encode(sig, ED25519_SIG_SIZE); + return _t891; } bool Ed25519_Verify(const char* pubKey, const char* signature, const char* data) { - int _t902; - int _t904; + int _t893; + int _t895; int r; - unsigned int _t901; - _t901 = String_Len(data); - _t902 = (int)_t901; - int _t903; - _t903 = bux_ed25519_verify(pubKey, signature, data, _t902); - r = _t903; - _t904 = (r == 1); - return _t904; + unsigned int _t892; + _t892 = String_Len(data); + _t893 = (int)_t892; + int _t894; + _t894 = bux_ed25519_verify(pubKey, signature, data, _t893); + r = _t894; + _t895 = (r == 1); + return _t895; } bool Ed25519_VerifyBase64(const char* pubKey, const char* signatureB64, const char* data) { - int _t906; - void* _t907; - int _t909; + int _t897; + void* _t898; + int _t900; int outlen; outlen = 0; const char* sig; - unsigned int _t905; - _t905 = String_Len(signatureB64); - _t906 = (int)_t905; - _t907 = &outlen; - const char* _t908; - _t908 = bux_base64_decode(signatureB64, _t906, _t907); - sig = _t908; - _t909 = (outlen != ED25519_SIG_SIZE); - if (!_t909) goto endif319; + unsigned int _t896; + _t896 = String_Len(signatureB64); + _t897 = (int)_t896; + _t898 = &outlen; + const char* _t899; + _t899 = bux_base64_decode(signatureB64, _t897, _t898); + sig = _t899; + _t900 = (outlen != ED25519_SIG_SIZE); + if (!_t900) goto endif306; { return 0; } - endif319:; - bool _t910; - _t910 = Ed25519_Verify(pubKey, sig, data); - return _t910; + endif306:; + bool _t901; + _t901 = Ed25519_Verify(pubKey, sig, data); + return _t901; } const char* Rsa_SignSha256(const char* pemPrivateKey, const char* data) { - int _t912; - int _t914; - void* _t915; + int _t903; + int _t905; + void* _t906; int siglen; siglen = 0; - unsigned int _t911; - _t911 = String_Len(pemPrivateKey); - _t912 = (int)_t911; - unsigned int _t913; - _t913 = String_Len(data); - _t914 = (int)_t913; - _t915 = &siglen; - const char* _t916; - _t916 = bux_rsa_sign_sha256(pemPrivateKey, _t912, data, _t914, _t915); - return _t916; + unsigned int _t902; + _t902 = String_Len(pemPrivateKey); + _t903 = (int)_t902; + unsigned int _t904; + _t904 = String_Len(data); + _t905 = (int)_t904; + _t906 = &siglen; + const char* _t907; + _t907 = bux_rsa_sign_sha256(pemPrivateKey, _t903, data, _t905, _t906); + return _t907; } const char* Rsa_SignSha384(const char* pemPrivateKey, const char* data) { - int _t918; - int _t920; - void* _t921; + int _t909; + int _t911; + void* _t912; int siglen; siglen = 0; - unsigned int _t917; - _t917 = String_Len(pemPrivateKey); - _t918 = (int)_t917; - unsigned int _t919; - _t919 = String_Len(data); - _t920 = (int)_t919; - _t921 = &siglen; - const char* _t922; - _t922 = bux_rsa_sign_sha384(pemPrivateKey, _t918, data, _t920, _t921); - return _t922; + unsigned int _t908; + _t908 = String_Len(pemPrivateKey); + _t909 = (int)_t908; + unsigned int _t910; + _t910 = String_Len(data); + _t911 = (int)_t910; + _t912 = &siglen; + const char* _t913; + _t913 = bux_rsa_sign_sha384(pemPrivateKey, _t909, data, _t911, _t912); + return _t913; } const char* Rsa_SignSha512(const char* pemPrivateKey, const char* data) { - int _t924; - int _t926; - void* _t927; + int _t915; + int _t917; + void* _t918; int siglen; siglen = 0; - unsigned int _t923; - _t923 = String_Len(pemPrivateKey); - _t924 = (int)_t923; - unsigned int _t925; - _t925 = String_Len(data); - _t926 = (int)_t925; - _t927 = &siglen; - const char* _t928; - _t928 = bux_rsa_sign_sha512(pemPrivateKey, _t924, data, _t926, _t927); - return _t928; + unsigned int _t914; + _t914 = String_Len(pemPrivateKey); + _t915 = (int)_t914; + unsigned int _t916; + _t916 = String_Len(data); + _t917 = (int)_t916; + _t918 = &siglen; + const char* _t919; + _t919 = bux_rsa_sign_sha512(pemPrivateKey, _t915, data, _t917, _t918); + return _t919; } const char* Rsa_SignSha256Base64(const char* pemPrivateKey, const char* data) { - int _t931; + int _t922; const char* raw; - const char* _t929; - _t929 = Rsa_SignSha256(pemPrivateKey, data); - raw = _t929; - unsigned int _t930; - _t930 = String_Len(raw); - _t931 = (int)_t930; - const char* _t932; - _t932 = bux_base64_encode(raw, _t931); - return _t932; + const char* _t920; + _t920 = Rsa_SignSha256(pemPrivateKey, data); + raw = _t920; + unsigned int _t921; + _t921 = String_Len(raw); + _t922 = (int)_t921; + const char* _t923; + _t923 = bux_base64_encode(raw, _t922); + return _t923; } const char* Rsa_SignSha384Base64(const char* pemPrivateKey, const char* data) { - int _t935; + int _t926; const char* raw; - const char* _t933; - _t933 = Rsa_SignSha384(pemPrivateKey, data); - raw = _t933; - unsigned int _t934; - _t934 = String_Len(raw); - _t935 = (int)_t934; - const char* _t936; - _t936 = bux_base64_encode(raw, _t935); - return _t936; + const char* _t924; + _t924 = Rsa_SignSha384(pemPrivateKey, data); + raw = _t924; + unsigned int _t925; + _t925 = String_Len(raw); + _t926 = (int)_t925; + const char* _t927; + _t927 = bux_base64_encode(raw, _t926); + return _t927; } const char* Rsa_SignSha512Base64(const char* pemPrivateKey, const char* data) { - int _t939; + int _t930; const char* raw; - const char* _t937; - _t937 = Rsa_SignSha512(pemPrivateKey, data); - raw = _t937; - unsigned int _t938; - _t938 = String_Len(raw); - _t939 = (int)_t938; - const char* _t940; - _t940 = bux_base64_encode(raw, _t939); - return _t940; + const char* _t928; + _t928 = Rsa_SignSha512(pemPrivateKey, data); + raw = _t928; + unsigned int _t929; + _t929 = String_Len(raw); + _t930 = (int)_t929; + const char* _t931; + _t931 = bux_base64_encode(raw, _t930); + return _t931; } bool Rsa_VerifySha256(const char* pemPublicKey, const char* data, const char* signature) { - int _t942; - int _t944; - int _t946; - int _t948; + int _t933; + int _t935; + int _t937; + int _t939; int r; - unsigned int _t941; - _t941 = String_Len(pemPublicKey); - _t942 = (int)_t941; - unsigned int _t943; - _t943 = String_Len(data); - _t944 = (int)_t943; - unsigned int _t945; - _t945 = String_Len(signature); - _t946 = (int)_t945; - int _t947; - _t947 = bux_rsa_verify_sha256(pemPublicKey, _t942, data, _t944, signature, _t946); - r = _t947; - _t948 = (r == 1); - return _t948; + unsigned int _t932; + _t932 = String_Len(pemPublicKey); + _t933 = (int)_t932; + unsigned int _t934; + _t934 = String_Len(data); + _t935 = (int)_t934; + unsigned int _t936; + _t936 = String_Len(signature); + _t937 = (int)_t936; + int _t938; + _t938 = bux_rsa_verify_sha256(pemPublicKey, _t933, data, _t935, signature, _t937); + r = _t938; + _t939 = (r == 1); + return _t939; } bool Rsa_VerifySha384(const char* pemPublicKey, const char* data, const char* signature) { - int _t950; - int _t952; - int _t954; - int _t956; + int _t941; + int _t943; + int _t945; + int _t947; int r; - unsigned int _t949; - _t949 = String_Len(pemPublicKey); - _t950 = (int)_t949; - unsigned int _t951; - _t951 = String_Len(data); - _t952 = (int)_t951; - unsigned int _t953; - _t953 = String_Len(signature); - _t954 = (int)_t953; - int _t955; - _t955 = bux_rsa_verify_sha384(pemPublicKey, _t950, data, _t952, signature, _t954); - r = _t955; - _t956 = (r == 1); - return _t956; + unsigned int _t940; + _t940 = String_Len(pemPublicKey); + _t941 = (int)_t940; + unsigned int _t942; + _t942 = String_Len(data); + _t943 = (int)_t942; + unsigned int _t944; + _t944 = String_Len(signature); + _t945 = (int)_t944; + int _t946; + _t946 = bux_rsa_verify_sha384(pemPublicKey, _t941, data, _t943, signature, _t945); + r = _t946; + _t947 = (r == 1); + return _t947; } bool Rsa_VerifySha512(const char* pemPublicKey, const char* data, const char* signature) { - int _t958; - int _t960; - int _t962; - int _t964; + int _t949; + int _t951; + int _t953; + int _t955; int r; - unsigned int _t957; - _t957 = String_Len(pemPublicKey); - _t958 = (int)_t957; - unsigned int _t959; - _t959 = String_Len(data); - _t960 = (int)_t959; - unsigned int _t961; - _t961 = String_Len(signature); - _t962 = (int)_t961; - int _t963; - _t963 = bux_rsa_verify_sha512(pemPublicKey, _t958, data, _t960, signature, _t962); - r = _t963; - _t964 = (r == 1); - return _t964; + unsigned int _t948; + _t948 = String_Len(pemPublicKey); + _t949 = (int)_t948; + unsigned int _t950; + _t950 = String_Len(data); + _t951 = (int)_t950; + unsigned int _t952; + _t952 = String_Len(signature); + _t953 = (int)_t952; + int _t954; + _t954 = bux_rsa_verify_sha512(pemPublicKey, _t949, data, _t951, signature, _t953); + r = _t954; + _t955 = (r == 1); + return _t955; } bool Rsa_VerifySha256Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t966; - void* _t967; + int _t957; + void* _t958; int outlen; outlen = 0; const char* sig; - unsigned int _t965; - _t965 = String_Len(signatureB64); - _t966 = (int)_t965; - _t967 = &outlen; - const char* _t968; - _t968 = bux_base64_decode(signatureB64, _t966, _t967); - sig = _t968; - bool _t969; - _t969 = Rsa_VerifySha256(pemPublicKey, data, sig); - return _t969; + unsigned int _t956; + _t956 = String_Len(signatureB64); + _t957 = (int)_t956; + _t958 = &outlen; + const char* _t959; + _t959 = bux_base64_decode(signatureB64, _t957, _t958); + sig = _t959; + bool _t960; + _t960 = Rsa_VerifySha256(pemPublicKey, data, sig); + return _t960; } bool Rsa_VerifySha384Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t971; - void* _t972; + int _t962; + void* _t963; int outlen; outlen = 0; const char* sig; - unsigned int _t970; - _t970 = String_Len(signatureB64); - _t971 = (int)_t970; - _t972 = &outlen; - const char* _t973; - _t973 = bux_base64_decode(signatureB64, _t971, _t972); - sig = _t973; - bool _t974; - _t974 = Rsa_VerifySha384(pemPublicKey, data, sig); - return _t974; + unsigned int _t961; + _t961 = String_Len(signatureB64); + _t962 = (int)_t961; + _t963 = &outlen; + const char* _t964; + _t964 = bux_base64_decode(signatureB64, _t962, _t963); + sig = _t964; + bool _t965; + _t965 = Rsa_VerifySha384(pemPublicKey, data, sig); + return _t965; } bool Rsa_VerifySha512Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t976; - void* _t977; + int _t967; + void* _t968; int outlen; outlen = 0; const char* sig; - unsigned int _t975; - _t975 = String_Len(signatureB64); - _t976 = (int)_t975; - _t977 = &outlen; - const char* _t978; - _t978 = bux_base64_decode(signatureB64, _t976, _t977); - sig = _t978; - bool _t979; - _t979 = Rsa_VerifySha512(pemPublicKey, data, sig); - return _t979; + unsigned int _t966; + _t966 = String_Len(signatureB64); + _t967 = (int)_t966; + _t968 = &outlen; + const char* _t969; + _t969 = bux_base64_decode(signatureB64, _t967, _t968); + sig = _t969; + bool _t970; + _t970 = Rsa_VerifySha512(pemPublicKey, data, sig); + return _t970; } int Rectangle_Area(Rectangle self) { - int _t982; - int _t980; - _t980 = self.width; - int _t981; - _t981 = self.height; - _t982 = _t980 * _t981; - return _t982; + int _t973; + int _t971; + _t971 = self.width; + int _t972; + _t972 = self.height; + _t973 = _t971 * _t972; + return _t973; } int Rectangle_Perimeter(Rectangle self) { - int _t985; - int _t986; - int _t983; - _t983 = self.width; - int _t984; - _t984 = self.height; - _t985 = _t983 + _t984; - _t986 = 2 * _t985; - return _t986; + int _t976; + int _t977; + int _t974; + _t974 = self.width; + int _t975; + _t975 = self.height; + _t976 = _t974 + _t975; + _t977 = 2 * _t976; + return _t977; } int Main(void) { - Rectangle _t987; + Rectangle _t978; Rectangle rect; - _t987 = (Rectangle){.width = 10, .height = 5}; - rect = _t987; + _t978 = (Rectangle){.width = 10, .height = 5}; + rect = _t978; PrintLine("Rectangle:"); PrintLine("Width = "); - int _t988; - _t988 = rect.width; - PrintInt(_t988); + int _t979; + _t979 = rect.width; + PrintInt(_t979); PrintLine(""); PrintLine("Height = "); - int _t989; - _t989 = rect.height; - PrintInt(_t989); + int _t980; + _t980 = rect.height; + PrintInt(_t980); PrintLine(""); PrintLine("Area = "); - int _t990; - _t990 = Rectangle_Area(rect); - PrintInt(_t990); + int _t981; + _t981 = Rectangle_Area(rect); + PrintInt(_t981); PrintLine(""); PrintLine("Perimeter = "); - int _t991; - _t991 = Rectangle_Perimeter(rect); - PrintInt(_t991); + int _t982; + _t982 = Rectangle_Perimeter(rect); + PrintInt(_t982); PrintLine(""); return 0; } diff --git a/tests/golden/modern_features/bux.toml b/tests/golden/modern_features/bux.toml new file mode 100644 index 0000000..22ab125 --- /dev/null +++ b/tests/golden/modern_features/bux.toml @@ -0,0 +1,7 @@ +[Package] +Name = "modern_features" +Version = "0.1.0" +Type = "bin" + +[Build] +Output = "Bin" diff --git a/tests/golden/modern_features/expected.c b/tests/golden/modern_features/expected.c new file mode 100644 index 0000000..a418ef0 --- /dev/null +++ b/tests/golden/modern_features/expected.c @@ -0,0 +1,5056 @@ +/* Generated by Bux Compiler (LIR backend) */ +#include +#include +#include +#include +#include + +typedef struct TaskHandle TaskHandle; +typedef struct Mutex Mutex; +typedef struct RwLock RwLock; +typedef struct JsonValue JsonValue; +typedef struct JsonParser JsonParser; +typedef struct StringBuilder StringBuilder; +typedef struct Record Record; +typedef struct Box Box; +typedef struct Channel_int Channel_int; +typedef struct Channel_float64 Channel_float64; +typedef struct Array_Record Array_Record; +typedef struct Iter_Record Iter_Record; + +typedef struct Drop_FatPtr Drop_FatPtr; + +/* Extern function declarations */ +extern int bux_dir_exists(const char* path); +extern int bux_mkdir_if_needed(const char* path); +extern const char** bux_list_dir(const char* dir, const char* ext, int* out_count); +extern void PrintLine(const char* s); +extern void Print(const char* s); +extern void PrintInt(int n); +extern void PrintInt64(int64_t n); +extern void PrintFloat(double f); +extern void PrintBool(bool b); +extern const char* ReadLine(void); +extern const char* bux_read_file(const char* path); +extern int bux_write_file(const char* path, const char* content); +extern int bux_file_exists(const char* path); +extern double bux_sqrt(double x); +extern double bux_pow(double x, double y); +extern int64_t bux_abs_i64(int64_t x); +extern double bux_abs_f64(double x); +extern int64_t bux_min_i64(int64_t a, int64_t b); +extern int64_t bux_max_i64(int64_t a, int64_t b); +extern double bux_min_f64(double a, double b); +extern double bux_max_f64(double a, double b); +extern void* bux_alloc(unsigned int size); +extern void* bux_realloc(void* ptr, unsigned int size); +extern void bux_free(void* ptr); +extern int bux_mem_eq(void* a, void* b, unsigned int size); +extern const char* bux_path_join(const char* a, const char* b); +extern const char* bux_path_parent(const char* path); +extern const char* bux_path_ext(const char* path); +extern void bux_task_init(int num_workers); +extern void* bux_task_spawn(void* fn, void* arg); +extern void bux_task_join(void* handle); +extern void bux_task_sleep(int64_t ms); +extern void bux_task_yield(void); +extern int bux_task_current_id(void); +extern void bux_task_shutdown(void); +extern int bux_argc(void); +extern const char* bux_argv(int index); +extern const char* bux_getenv(const char* name); +extern int bux_setenv(const char* name, const char* value); +extern const char* bux_getcwd(void); +extern int bux_chdir(const char* path); +extern int64_t bux_time_ms(void); +extern int64_t bux_time_us(void); +extern void bux_sleep_ms(int64_t ms); +extern int bux_process_run(const char* cmd); +extern const char* bux_process_output(const char* cmd); +extern int bux_socket_create(void); +extern int bux_socket_reuse(int fd); +extern int bux_socket_bind(int fd, const char* addr, int port); +extern int bux_socket_listen(int fd, int backlog); +extern int bux_socket_accept(int fd); +extern int bux_socket_connect(int fd, const char* addr, int port); +extern int bux_socket_send(int fd, const char* data, int len); +extern const char* bux_socket_recv(int fd, int maxLen); +extern int bux_socket_close(int fd); +extern const char* bux_socket_error(void); +extern unsigned int bux_strlen(const char* s); +extern int64_t bux_str_to_int(const char* s); +extern void* bux_alloc(unsigned int size); +extern void bux_sha256(const char* data, int len, void* out); +extern void bux_hmac_sha256(const char* key, int keylen, const char* msg, int msglen, void* out); +extern int bux_random_bytes(void* buf, int len); +extern const char* bux_base64_encode(const char* data, int len); +extern const char* bux_base64_decode(const char* data, int len, int* outlen); +extern const char* bux_bytes_to_hex(void* data, int len); +extern void* bux_mutex_new(void); +extern void bux_mutex_lock(void* handle); +extern void bux_mutex_unlock(void* handle); +extern void bux_mutex_free(void* handle); +extern void* bux_rwlock_new(void); +extern void bux_rwlock_rdlock(void* handle); +extern void bux_rwlock_wrlock(void* handle); +extern void bux_rwlock_unlock(void* handle); +extern void bux_rwlock_free(void* handle); +extern void bux_exit(int code); +extern void bux_assert(int cond, const char* file, int line, const char* expr); +extern JsonValue JsonParser_ParseValue(JsonParser* p); +extern unsigned int bux_strlen(const char* s); +extern int bux_strcmp(const char* a, const char* b); +extern int bux_strncmp(const char* a, const char* b, unsigned int n); +extern char* bux_strcpy(char* dest, const char* src); +extern char* bux_strcat(char* dest, const char* src); +extern char* bux_strncpy(char* dest, const char* src, unsigned int n); +extern const char* bux_strstr(const char* haystack, const char* needle); +extern int bux_str_contains(const char* haystack, const char* needle); +extern unsigned int bux_str_offset(const char* pos, const char* base); +extern int bux_str_is_null(const char* s); +extern const char* bux_str_slice(const char* s, unsigned int start, unsigned int len); +extern const char* bux_str_trim_left(const char* s); +extern const char* bux_str_trim_right(const char* s); +extern const char* bux_str_trim(const char* s); +extern const char* bux_int_to_str(int64_t n); +extern int64_t bux_str_to_int(const char* s); +extern void* bux_sb_new(unsigned int initial_cap); +extern void bux_sb_append(void* sb, const char* s); +extern void bux_sb_append_int(void* sb, int64_t n); +extern void bux_sb_append_float(void* sb, double f); +extern void bux_sb_append_char(void* sb, char c); +extern const char* bux_sb_build(void* sb); +extern void bux_sb_free(void* sb); +extern unsigned int bux_str_split_count(const char* s, const char* delim); +extern const char* bux_str_split_part(const char* s, const char* delim, unsigned int index); +extern const char* bux_str_join2(const char* a, const char* b, const char* sep); +extern const char* bux_float_to_string(double f); +extern const char* bux_str_format(const char* pattern, const char* a0, const char* a1, const char* a2, const char* a3, const char* a4, const char* a5, const char* a6, const char* a7); +extern double bux_str_to_float(const char* s); +extern void bux_bounds_check(unsigned int index, unsigned int len); +extern void* bux_alloc(unsigned int size); +extern void* bux_realloc(void* ptr, unsigned int size); +extern void bux_free(void* ptr); +extern void bux_bounds_check(unsigned int index, unsigned int len); +extern void* bux_channel_new(int64_t capacity, int64_t elem_size); +extern void bux_channel_send(void* handle, void* elem); +extern int bux_channel_recv(void* handle, void* out); +extern void bux_channel_close(void* handle); +extern void bux_channel_free(void* handle); +extern unsigned int bux_hash_bytes(void* ptr, unsigned int size); +extern unsigned int bux_hash_string(const char* s); +extern unsigned int bux_hash_bytes(void* ptr, unsigned int size); +extern int bux_mem_eq(void* a, void* b, unsigned int size); +extern void* bux_alloc(unsigned int size); +extern void bux_free(void* ptr); +extern void bux_sha1(const char* data, int len, void* out); +extern void bux_sha256(const char* data, int len, void* out); +extern void bux_sha384(const char* data, int len, void* out); +extern void bux_sha512(const char* data, int len, void* out); +extern const char* bux_bytes_to_hex(void* data, int len); +extern const char* bux_base64_encode(const char* data, int len); +extern const char* bux_base64_decode(const char* data, int len, int* outlen); +extern const char* bux_base64url_encode(const char* data, int len); +extern const char* bux_base64url_decode(const char* data, int len, int* outlen); +extern void bux_hmac_sha256(const char* key, int keylen, const char* msg, int msglen, void* out); +extern void bux_hmac_sha384(const char* key, int keylen, const char* msg, int msglen, void* out); +extern void bux_hmac_sha512(const char* key, int keylen, const char* msg, int msglen, void* out); +extern const char* bux_bytes_to_hex(void* data, int len); +extern const char* bux_base64_encode(const char* data, int len); +extern int bux_random_bytes(void* buf, int len); +extern const char* bux_base64_encode(const char* data, int len); +extern const char* bux_bytes_to_hex(void* data, int len); +extern int bux_random_bytes(void* buf, int len); +extern const char* bux_aes_256_cbc_encrypt(const char* plain, int plainlen, const char* key, const char* iv, int* outlen); +extern const char* bux_aes_256_cbc_decrypt(const char* cipher, int cipherlen, const char* key, const char* iv, int* outlen); +extern const char* bux_aes_256_gcm_encrypt(const char* plain, int plainlen, const char* key, const char* iv, void* tag, int* outlen); +extern const char* bux_aes_256_gcm_decrypt(const char* cipher, int cipherlen, const char* key, const char* iv, const char* tag, int* outlen); +extern const char* bux_base64_encode(const char* data, int len); +extern unsigned int bux_str_split_count(const char* s, const char* delim); +extern const char* bux_str_split_part(const char* s, const char* delim, unsigned int index); +extern const char* bux_ecdsa_sign_p256(const char* key, int keylen, const char* data, int datalen, int* outlen); +extern int bux_ecdsa_verify_p256(const char* key, int keylen, const char* data, int datalen, const char* sig, int siglen); +extern const char* bux_ecdsa_sign_p384(const char* key, int keylen, const char* data, int datalen, int* outlen); +extern int bux_ecdsa_verify_p384(const char* key, int keylen, const char* data, int datalen, const char* sig, int siglen); +extern const char* bux_base64_encode(const char* data, int len); +extern const char* bux_base64_decode(const char* data, int len, int* outlen); +extern int bux_ed25519_keypair(void* pubKey, void* privKey); +extern int bux_ed25519_sign(const char* privKey, const char* data, int datalen, void* sig); +extern int bux_ed25519_verify(const char* pubKey, const char* sig, const char* data, int datalen); +extern const char* bux_base64_encode(const char* data, int len); +extern const char* bux_base64_decode(const char* data, int len, int* outlen); +extern const char* bux_rsa_sign_sha256(const char* key, int keylen, const char* data, int datalen, int* outlen); +extern const char* bux_rsa_sign_sha384(const char* key, int keylen, const char* data, int datalen, int* outlen); +extern const char* bux_rsa_sign_sha512(const char* key, int keylen, const char* data, int datalen, int* outlen); +extern int bux_rsa_verify_sha256(const char* key, int keylen, const char* data, int datalen, const char* sig, int siglen); +extern int bux_rsa_verify_sha384(const char* key, int keylen, const char* data, int datalen, const char* sig, int siglen); +extern int bux_rsa_verify_sha512(const char* key, int keylen, const char* data, int datalen, const char* sig, int siglen); +extern const char* bux_base64_encode(const char* data, int len); +extern const char* bux_base64_decode(const char* data, int len, int* outlen); + +/* Constants */ +#define JsonTagNull 0 +#define JsonTagBool 1 +#define JsonTagNumber 2 +#define JsonTagString 3 +#define JsonTagArray 4 +#define JsonTagObject 5 +#define AES_KEY_SIZE 32 +#define AES_IV_SIZE 16 +#define AES_GCM_TAG_SIZE 16 +#define ED25519_PUBKEY_SIZE 32 +#define ED25519_PRIVKEY_SIZE 32 +#define ED25519_SIG_SIZE 64 + +typedef struct Channel_float64 { + void* handle; +} Channel_float64; + +typedef struct Iter_Record { + Record* data; + unsigned int len; + unsigned int pos; +} Iter_Record; + +typedef struct TaskHandle { + void* handle; +} TaskHandle; + +typedef struct Record { + const char* name; + int value; +} Record; + +typedef enum { + Payload_Ok, + Payload_Err +} Payload_Tag; + +typedef union { + Record Ok_0; + const char* Err_0; +} Payload_Data; + +typedef struct { + Payload_Tag tag; + Payload_Data data; +} Payload; + +typedef struct RwLock { + void* handle; +} RwLock; + +typedef enum { + Color_Red, + Color_Green +} Color; + +typedef struct Channel_int { + void* handle; +} Channel_int; + +typedef enum { + JwtAlg_HS256, + JwtAlg_HS384, + JwtAlg_HS512, + JwtAlg_RS256, + JwtAlg_RS384, + JwtAlg_RS512, + JwtAlg_ES256, + JwtAlg_ES384, + JwtAlg_EdDSA +} JwtAlg; + +typedef enum { + Result_Ok, + Result_Err +} Result_Tag; + +typedef union { + int Ok_0; + const char* Err_0; +} Result_Data; + +typedef struct { + Result_Tag tag; + Result_Data data; +} Result; + +typedef enum { + Option_Some, + Option_None +} Option_Tag; + +typedef union { + int Some_0; +} Option_Data; + +typedef struct { + Option_Tag tag; + Option_Data data; +} Option; + +typedef struct JsonValue { + int tag; + bool boolVal; + double numVal; + const char* strVal; + JsonValue* arrData; + unsigned int arrLen; + unsigned int arrCap; + const char** objKeys; + JsonValue* objValues; + unsigned int objLen; + unsigned int objCap; +} JsonValue; + +typedef struct Mutex { + void* handle; +} Mutex; + +typedef struct StringBuilder { + void* handle; +} StringBuilder; + +typedef struct Array_Record { + Record* data; + unsigned int len; + unsigned int cap; +} Array_Record; + +typedef struct Box { + Array_Record items; +} Box; + +typedef struct JsonParser { + const char* src; + unsigned int pos; + unsigned int len; + const char* error; +} JsonParser; + +bool DirExists(const char* path); +bool Mkdir(const char* path); +const char** ListDir(const char* dir, const char* ext, int* count); +const char* ReadFile(const char* path); +bool WriteFile(const char* path, const char* content); +bool FileExists(const char* path); +double Sqrt(double x); +double Pow(double x, double y); +int64_t Abs(int64_t n); +double AbsF(double f); +int64_t Min(int64_t a, int64_t b); +int64_t Max(int64_t a, int64_t b); +double MinF(double a, double b); +double MaxF(double a, double b); +void* Alloc(unsigned int size); +void* Realloc(void* ptr, unsigned int size); +void Free(void* ptr); +bool MemEq(void* a, void* b, unsigned int size); +const char* Path_Join(const char* a, const char* b); +const char* Path_Parent(const char* path); +const char* Path_Ext(const char* path); +void Task_Init(int num_workers); +TaskHandle Task_Spawn(void* fn, void* arg); +void Task_Wait(TaskHandle t); +void Task_Sleep(int64_t ms); +void Task_Yield(void); +int Task_CurrentId(void); +void Task_Shutdown(void); +int Os_ArgsCount(void); +const char* Os_Args(int index); +const char* Os_GetEnv(const char* name); +bool Os_SetEnv(const char* name, const char* value); +const char* Os_GetCwd(void); +bool Os_Chdir(const char* path); +int64_t Time_NowMs(void); +int64_t Time_NowUs(void); +void Time_SleepMs(int64_t ms); +int Process_Run(const char* cmd); +const char* Process_Output(const char* cmd); +int Net_Create(void); +bool Net_SetReuse(int fd); +bool Net_Bind(int fd, const char* addr, int port); +bool Net_Listen(int fd, int backlog); +int Net_Accept(int fd); +bool Net_Connect(int fd, const char* addr, int port); +int Net_Send(int fd, const char* data); +const char* Net_Recv(int fd, int maxLen); +bool Net_Close(int fd); +const char* Net_LastError(void); +const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount); +const char* Fmt_Fmt1(const char* tmpl, const char* a1); +const char* Fmt_FmtInt(const char* tmpl, int64_t val); +const char* Fmt_FmtBool(const char* tmpl, bool val); +const char* Fmt_FmtFloat(const char* tmpl, double val); +const char* Fmt_Fmt2(const char* tmpl, const char* a1, const char* a2); +const char* Fmt_Fmt3(const char* tmpl, const char* a1, const char* a2, const char* a3); +const char* Crypto_Sha256(const char* data); +const char* Crypto_HmacSha256(const char* key, const char* message); +const char* Crypto_RandomBytes(int n); +const char* Crypto_Base64Encode(const char* s); +const char* Crypto_HmacSha256Raw(const char* key, const char* message); +const char* Crypto_Base64Decode(const char* s); +Mutex Mutex_New(void); +void Mutex_Lock(Mutex* m); +void Mutex_Unlock(Mutex* m); +void Mutex_Free(Mutex* m); +RwLock RwLock_New(void); +void RwLock_ReadLock(RwLock* rw); +void RwLock_WriteLock(RwLock* rw); +void RwLock_Unlock(RwLock* rw); +void RwLock_Free(RwLock* rw); +void Test_Exit(int code); +void Test_Assert(bool cond); +void Test_AssertEqInt(int a, int b); +void Test_AssertTrue(bool cond); +void Test_AssertFalse(bool cond); +void Test_Fail(const char* msg); +Result Result_NewOk(int value); +Result Result_NewErr(const char* msg); +bool Result_IsOk(Result r); +bool Result_IsErr(Result r); +int Result_Unwrap(Result r); +int Result_UnwrapOr(Result r, int fallback); +Option Option_NewSome(int value); +Option Option_NewNone(void); +bool Option_IsSome(Option o); +bool Option_IsNone(Option o); +int Option_Unwrap(Option o); +int Option_UnwrapOr(Option o, int fallback); +JsonValue Json_Null(void); +JsonValue Json_Bool(bool b); +JsonValue Json_Number(double n); +JsonValue Json_String(const char* s); +JsonValue Json_Array(void); +JsonValue Json_Object(void); +unsigned int Json_ArrayLen(JsonValue v); +JsonValue Json_ArrayGet(JsonValue v, unsigned int index); +void Json_ArrayPush(JsonValue* self, JsonValue val); +unsigned int Json_ObjectLen(JsonValue v); +JsonValue Json_ObjectGet(JsonValue v, const char* key); +bool Json_ObjectHas(JsonValue v, const char* key); +void Json_ObjectSet(JsonValue* self, const char* key, JsonValue val); +bool Json_IsNull(JsonValue v); +bool Json_AsBool(JsonValue v); +double Json_AsNumber(JsonValue v); +const char* Json_AsString(JsonValue v); +int JsonParser_Peek(JsonParser* p); +void JsonParser_Advance(JsonParser* p); +void JsonParser_SkipWhitespace(JsonParser* p); +bool JsonParser_Match(JsonParser* p, const char* expected); +const char* JsonParser_ParseString(JsonParser* p); +JsonValue JsonParser_ParseNumber(JsonParser* p); +JsonValue JsonParser_ParseArray(JsonParser* p); +JsonValue JsonParser_ParseObject(JsonParser* p); +JsonValue JsonParser_ParseValue(JsonParser* p); +JsonValue Json_Parse(const char* s); +void Json_StringifyImpl(StringBuilder* sb, JsonValue v); +const char* Json_Stringify(JsonValue v); +unsigned int String_Len(const char* s); +bool String_IsNull(const char* s); +bool String_Eq(const char* a, const char* b); +const char* String_Concat(const char* a, const char* b); +const char* String_Copy(const char* s); +bool String_StartsWith(const char* s, const char* prefix); +bool String_EndsWith(const char* s, const char* suffix); +bool String_Contains(const char* s, const char* substr); +const char* String_Slice(const char* s, unsigned int start, unsigned int len); +const char* String_Trim(const char* s); +const char* String_TrimLeft(const char* s); +const char* String_TrimRight(const char* s); +const char* String_FromInt(int64_t n); +int64_t String_ToInt(const char* s); +StringBuilder StringBuilder_New(void); +StringBuilder StringBuilder_NewCap(unsigned int cap); +void StringBuilder_Append(StringBuilder* sb, const char* s); +void StringBuilder_AppendInt(StringBuilder* sb, int64_t n); +void StringBuilder_AppendFloat(StringBuilder* sb, double f); +void StringBuilder_AppendChar(StringBuilder* sb, char c); +const char* StringBuilder_Build(StringBuilder* sb); +void StringBuilder_Free(StringBuilder* sb); +unsigned int String_SplitCount(const char* s, const char* delim); +const char* String_SplitPart(const char* s, const char* delim, unsigned int index); +const char* String_Join2(const char* a, const char* b, const char* sep); +const char* String_Chars(const char* s, unsigned int index); +const char* String_Find(const char* haystack, const char* needle); +unsigned int String_Offset(const char* pos, const char* base); +const char* String_Replace(const char* s, const char* old, const char* new); +double String_ToFloat(const char* s); +const char* String_FromBool(bool b); +const char* String_FromFloat(double f); +const char* String_Format1(const char* pattern, const char* a0); +const char* String_Format2(const char* pattern, const char* a0, const char* a1); +const char* String_Format3(const char* pattern, const char* a0, const char* a1, const char* a2); +void Channel_SendInt(Channel_int* ch, int value); +int Channel_RecvInt(Channel_int* ch); +void Channel_SendFloat64(Channel_float64* ch, double value); +double Channel_RecvFloat64(Channel_float64* ch); +const char* Hash_Sha1(const char* data); +const char* Hash_Sha256(const char* data); +const char* Hash_Sha384(const char* data); +const char* Hash_Sha512(const char* data); +void Hash_Sha256Raw(const char* data, void* out); +void Hash_Sha384Raw(const char* data, void* out); +void Hash_Sha512Raw(const char* data, void* out); +int Hash_Sha1Size(void); +int Hash_Sha256Size(void); +int Hash_Sha384Size(void); +int Hash_Sha512Size(void); +const char* Base64_Encode(const char* s); +const char* Base64_Decode(const char* s); +const char* Base64URL_Encode(const char* s); +const char* Base64URL_Decode(const char* s); +const char* Hmac_Sha256(const char* key, const char* message); +void Hmac_Sha256Raw(const char* key, const char* message, void* out); +const char* Hmac_Sha256Base64(const char* key, const char* message); +const char* Hmac_Sha384(const char* key, const char* message); +void Hmac_Sha384Raw(const char* key, const char* message, void* out); +const char* Hmac_Sha384Base64(const char* key, const char* message); +const char* Hmac_Sha512(const char* key, const char* message); +void Hmac_Sha512Raw(const char* key, const char* message, void* out); +const char* Hmac_Sha512Base64(const char* key, const char* message); +const char* Random_Bytes(int n); +const char* Random_Hex(int n); +const char* Random_Base64(int n); +unsigned int Random_Uint32(void); +const char* Aes_GenerateKey(void); +const char* Aes_GenerateIV(void); +const char* Aes_CbcEncrypt(const char* plain, const char* key, const char* iv); +const char* Aes_CbcDecrypt(const char* cipher, const char* key, const char* iv); +const char* Aes_GcmEncrypt(const char* plain, const char* key, const char* iv, void* tag); +const char* Aes_GcmDecrypt(const char* cipher, const char* key, const char* iv, const char* tag); +const char* Jwt_MakeHeader(JwtAlg alg); +const char* Jwt_Sign(JwtAlg alg, const char* signingInput, const char* key); +bool Jwt_Verify(JwtAlg alg, const char* signingInput, const char* signatureB64, const char* key); +const char* Jwt_Encode(const char* headerJson, const char* payloadJson, JwtAlg alg, const char* key); +bool Jwt_Decode(const char* token, JwtAlg alg, const char* key, const char** headerOut, const char** payloadOut); +const char* Jwt_EncodeHS256(const char* payloadJson, const char* secret); +const char* Jwt_EncodeHS384(const char* payloadJson, const char* secret); +const char* Jwt_EncodeHS512(const char* payloadJson, const char* secret); +const char* Jwt_EncodeRS256(const char* payloadJson, const char* pemPrivateKey); +const char* Jwt_EncodeES256(const char* payloadJson, const char* pemPrivateKey); +const char* Jwt_EncodeEdDSA(const char* payloadJson, const char* rawPrivKey); +const char* Ecdsa_SignP256(const char* pemPrivateKey, const char* data); +const char* Ecdsa_SignP256Base64(const char* pemPrivateKey, const char* data); +bool Ecdsa_VerifyP256(const char* pemPublicKey, const char* data, const char* signature); +bool Ecdsa_VerifyP256Base64(const char* pemPublicKey, const char* data, const char* signatureB64); +const char* Ecdsa_SignP384(const char* pemPrivateKey, const char* data); +const char* Ecdsa_SignP384Base64(const char* pemPrivateKey, const char* data); +bool Ecdsa_VerifyP384(const char* pemPublicKey, const char* data, const char* signature); +bool Ecdsa_VerifyP384Base64(const char* pemPublicKey, const char* data, const char* signatureB64); +bool Ed25519_Keypair(void* pubKey, void* privKey); +const char* Ed25519_KeypairBase64(void); +const char* Ed25519_Sign(const char* privKey, const char* data); +const char* Ed25519_SignBase64(const char* privKey, const char* data); +bool Ed25519_Verify(const char* pubKey, const char* signature, const char* data); +bool Ed25519_VerifyBase64(const char* pubKey, const char* signatureB64, const char* data); +const char* Rsa_SignSha256(const char* pemPrivateKey, const char* data); +const char* Rsa_SignSha384(const char* pemPrivateKey, const char* data); +const char* Rsa_SignSha512(const char* pemPrivateKey, const char* data); +const char* Rsa_SignSha256Base64(const char* pemPrivateKey, const char* data); +const char* Rsa_SignSha384Base64(const char* pemPrivateKey, const char* data); +const char* Rsa_SignSha512Base64(const char* pemPrivateKey, const char* data); +bool Rsa_VerifySha256(const char* pemPublicKey, const char* data, const char* signature); +bool Rsa_VerifySha384(const char* pemPublicKey, const char* data, const char* signature); +bool Rsa_VerifySha512(const char* pemPublicKey, const char* data, const char* signature); +bool Rsa_VerifySha256Base64(const char* pemPublicKey, const char* data, const char* signatureB64); +bool Rsa_VerifySha384Base64(const char* pemPublicKey, const char* data, const char* signatureB64); +bool Rsa_VerifySha512Base64(const char* pemPublicKey, const char* data, const char* signatureB64); +const char* Name(Color c); +int Main(void); +Array_Record Array_New_Record(unsigned int cap); +void Array_Push_Record(Array_Record* self, Record value); +Iter_Record Array_Iter_Record(Array_Record* arr); +bool Iter_HasNext_Record(Iter_Record* it); +Record Iter_Next_Record(Iter_Record* it); + +typedef struct Drop_VTable { + void (*Drop)(void* self); +} Drop_VTable; +typedef struct Drop_FatPtr { + void* data; + Drop_VTable* vtable; +} Drop_FatPtr; + +bool DirExists(const char* path) { + int _t2; + int _t1; + _t1 = bux_dir_exists(path); + _t2 = (_t1 != 0); + return _t2; +} + +bool Mkdir(const char* path) { + int _t4; + int _t3; + _t3 = bux_mkdir_if_needed(path); + _t4 = (_t3 != 0); + return _t4; +} + +const char** ListDir(const char* dir, const char* ext, int* count) { + const char** _t5; + _t5 = bux_list_dir(dir, ext, count); + return _t5; +} + +const char* ReadFile(const char* path) { + const char* _t6; + _t6 = bux_read_file(path); + return _t6; +} + +bool WriteFile(const char* path, const char* content) { + int _t8; + int r; + int _t7; + _t7 = bux_write_file(path, content); + r = _t7; + _t8 = (r != 0); + return _t8; +} + +bool FileExists(const char* path) { + int _t10; + int r; + int _t9; + _t9 = bux_file_exists(path); + r = _t9; + _t10 = (r != 0); + return _t10; +} + +double Sqrt(double x) { + double _t11; + _t11 = bux_sqrt(x); + return _t11; +} + +double Pow(double x, double y) { + double _t12; + _t12 = bux_pow(x, y); + return _t12; +} + +int64_t Abs(int64_t n) { + int64_t _t13; + _t13 = bux_abs_i64(n); + return _t13; +} + +double AbsF(double f) { + double _t14; + _t14 = bux_abs_f64(f); + return _t14; +} + +int64_t Min(int64_t a, int64_t b) { + int64_t _t15; + _t15 = bux_min_i64(a, b); + return _t15; +} + +int64_t Max(int64_t a, int64_t b) { + int64_t _t16; + _t16 = bux_max_i64(a, b); + return _t16; +} + +double MinF(double a, double b) { + double _t17; + _t17 = bux_min_f64(a, b); + return _t17; +} + +double MaxF(double a, double b) { + double _t18; + _t18 = bux_max_f64(a, b); + return _t18; +} + +void* Alloc(unsigned int size) { + void* _t19; + _t19 = bux_alloc(size); + return _t19; +} + +void* Realloc(void* ptr, unsigned int size) { + void* _t20; + _t20 = bux_realloc(ptr, size); + return _t20; +} + +void Free(void* ptr) { + bux_free(ptr); +} + +bool MemEq(void* a, void* b, unsigned int size) { + int _t22; + int _t21; + _t21 = bux_mem_eq(a, b, size); + _t22 = (_t21 != 0); + return _t22; +} + +const char* Path_Join(const char* a, const char* b) { + const char* _t23; + _t23 = bux_path_join(a, b); + return _t23; +} + +const char* Path_Parent(const char* path) { + const char* _t24; + _t24 = bux_path_parent(path); + return _t24; +} + +const char* Path_Ext(const char* path) { + const char* _t25; + _t25 = bux_path_ext(path); + return _t25; +} + +void Task_Init(int num_workers) { + bux_task_init(num_workers); +} + +TaskHandle Task_Spawn(void* fn, void* arg) { + TaskHandle _t27; + void* _t26; + _t26 = bux_task_spawn(fn, arg); + _t27 = (TaskHandle){.handle = _t26}; + return _t27; +} + +void Task_Wait(TaskHandle t) { + void* _t28; + _t28 = t.handle; + bux_task_join(_t28); +} + +void Task_Sleep(int64_t ms) { + bux_task_sleep(ms); +} + +void Task_Yield(void) { + bux_task_yield(); +} + +int Task_CurrentId(void) { + int _t29; + _t29 = bux_task_current_id(); + return _t29; +} + +void Task_Shutdown(void) { + bux_task_shutdown(); +} + +int Os_ArgsCount(void) { + int _t30; + _t30 = bux_argc(); + return _t30; +} + +const char* Os_Args(int index) { + const char* _t31; + _t31 = bux_argv(index); + return _t31; +} + +const char* Os_GetEnv(const char* name) { + const char* _t32; + _t32 = bux_getenv(name); + return _t32; +} + +bool Os_SetEnv(const char* name, const char* value) { + int _t34; + int _t33; + _t33 = bux_setenv(name, value); + _t34 = (_t33 == 0); + return _t34; +} + +const char* Os_GetCwd(void) { + const char* _t35; + _t35 = bux_getcwd(); + return _t35; +} + +bool Os_Chdir(const char* path) { + int _t37; + int _t36; + _t36 = bux_chdir(path); + _t37 = (_t36 == 0); + return _t37; +} + +int64_t Time_NowMs(void) { + int64_t _t38; + _t38 = bux_time_ms(); + return _t38; +} + +int64_t Time_NowUs(void) { + int64_t _t39; + _t39 = bux_time_us(); + return _t39; +} + +void Time_SleepMs(int64_t ms) { + bux_sleep_ms(ms); +} + +int Process_Run(const char* cmd) { + int _t40; + _t40 = bux_process_run(cmd); + return _t40; +} + +const char* Process_Output(const char* cmd) { + const char* _t41; + _t41 = bux_process_output(cmd); + return _t41; +} + +int Net_Create(void) { + int _t42; + _t42 = bux_socket_create(); + return _t42; +} + +bool Net_SetReuse(int fd) { + int _t44; + int _t43; + _t43 = bux_socket_reuse(fd); + _t44 = (_t43 == 0); + return _t44; +} + +bool Net_Bind(int fd, const char* addr, int port) { + int _t46; + int _t45; + _t45 = bux_socket_bind(fd, addr, port); + _t46 = (_t45 == 0); + return _t46; +} + +bool Net_Listen(int fd, int backlog) { + int _t48; + int _t47; + _t47 = bux_socket_listen(fd, backlog); + _t48 = (_t47 == 0); + return _t48; +} + +int Net_Accept(int fd) { + int _t49; + _t49 = bux_socket_accept(fd); + return _t49; +} + +bool Net_Connect(int fd, const char* addr, int port) { + int _t51; + int _t50; + _t50 = bux_socket_connect(fd, addr, port); + _t51 = (_t50 == 0); + return _t51; +} + +int Net_Send(int fd, const char* data) { + int _t53; + unsigned int _t52; + _t52 = bux_strlen(data); + _t53 = (int)_t52; + int _t54; + _t54 = bux_socket_send(fd, data, _t53); + return _t54; +} + +const char* Net_Recv(int fd, int maxLen) { + const char* _t55; + _t55 = bux_socket_recv(fd, maxLen); + return _t55; +} + +bool Net_Close(int fd) { + int _t57; + int _t56; + _t56 = bux_socket_close(fd); + _t57 = (_t56 == 0); + return _t57; +} + +const char* Net_LastError(void) { + const char* _t58; + _t58 = bux_socket_error(); + return _t58; +} + +const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { + int _t61; + int _t64; + int _t65; + int _t68; + int64_t _t69; + int _t70; + int _t72; + int _t73; + int _t76; + unsigned int _t77; + void* _t79; + void* _t80; + int _t81; + void* _t82; + StringBuilder sb; + StringBuilder _t59; + _t59 = StringBuilder_New(); + sb = _t59; + unsigned int i; + i = 0; + unsigned int tmplLen; + unsigned int _t60; + _t60 = bux_strlen(tmpl); + tmplLen = _t60; + while1:; + _t61 = (i < tmplLen); + if (!_t61) goto wend2; + { + const char* ch; + const char* _t62; + _t62 = String_Chars(tmpl, i); + ch = _t62; + bool _t63; + _t63 = String_Eq(ch, "{"); + if (!_t63) goto endif4; + { + unsigned int digitIdx; + _t64 = i + 1; + digitIdx = _t64; + _t65 = (digitIdx < tmplLen); + if (!_t65) goto endif6; + { + const char* digitCh; + const char* _t66; + _t66 = String_Chars(tmpl, digitIdx); + digitCh = _t66; + int64_t d; + int64_t _t67; + _t67 = bux_str_to_int(digitCh); + d = _t67; + bool __and_tmp_0; + _t68 = (d >= 0); + if (!_t68) goto else7; + _t69 = (int64_t)argCount; + _t70 = (d < _t69); + *(bool*)&__and_tmp_0 = _t70; + goto endif8; + else7:; + *(bool*)&__and_tmp_0 = 0; + endif8:; + bool _t71; + _t71 = *(bool*)&__and_tmp_0; + if (!_t71) goto endif10; + { + _t72 = i + 2; + i = _t72; + _t73 = (i < tmplLen); + if (!_t73) goto endif12; + { + const char* closeCh; + const char* _t74; + _t74 = String_Chars(tmpl, i); + closeCh = _t74; + bool _t75; + _t75 = String_Eq(closeCh, "}"); + if (!_t75) goto endif14; + { + _t76 = i + 1; + i = _t76; + const char* argStr; + _t77 = (unsigned int)d; + const char* _t78; + _t78 = argStrs[_t77]; + argStr = _t78; + _t79 = &sb; + StringBuilder_Append(_t79, argStr); + goto while1; + } + endif14:; + } + endif12:; + } + endif10:; + } + endif6:; + } + endif4:; + _t80 = &sb; + StringBuilder_Append(_t80, ch); + _t81 = i + 1; + i = _t81; + } + goto while1; + wend2:; + _t82 = &sb; + const char* _t83; + _t83 = StringBuilder_Build(_t82); + return _t83; +} + +const char* Fmt_Fmt1(const char* tmpl, const char* a1) { + const char** _t85; + const char** args; + /* sizeof(const char*) */ + void* _t84; + _t84 = bux_alloc(sizeof(const char*)); + _t85 = (const char**)_t84; + args = _t85; + args[0] = a1; + const char* _t86; + _t86 = Fmt_Format(tmpl, args, 1); + return _t86; +} + +const char* Fmt_FmtInt(const char* tmpl, int64_t val) { + const char* s; + const char* _t87; + _t87 = String_FromInt(val); + s = _t87; + const char* _t88; + _t88 = Fmt_Fmt1(tmpl, s); + return _t88; +} + +const char* Fmt_FmtBool(const char* tmpl, bool val) { + const char* s; + const char* _t89; + _t89 = String_FromBool(val); + s = _t89; + const char* _t90; + _t90 = Fmt_Fmt1(tmpl, s); + return _t90; +} + +const char* Fmt_FmtFloat(const char* tmpl, double val) { + const char* s; + const char* _t91; + _t91 = String_FromFloat(val); + s = _t91; + const char* _t92; + _t92 = Fmt_Fmt1(tmpl, s); + return _t92; +} + +const char* Fmt_Fmt2(const char* tmpl, const char* a1, const char* a2) { + int _t93; + const char** _t95; + const char** args; + /* sizeof(const char*) */ + _t93 = 2 * sizeof(const char*); + void* _t94; + _t94 = bux_alloc(_t93); + _t95 = (const char**)_t94; + args = _t95; + args[0] = a1; + args[1] = a2; + const char* _t96; + _t96 = Fmt_Format(tmpl, args, 2); + return _t96; +} + +const char* Fmt_Fmt3(const char* tmpl, const char* a1, const char* a2, const char* a3) { + int _t97; + const char** _t99; + const char** args; + /* sizeof(const char*) */ + _t97 = 3 * sizeof(const char*); + void* _t98; + _t98 = bux_alloc(_t97); + _t99 = (const char**)_t98; + args = _t99; + args[0] = a1; + args[1] = a2; + args[2] = a3; + const char* _t100; + _t100 = Fmt_Format(tmpl, args, 3); + return _t100; +} + +const char* Crypto_Sha256(const char* data) { + int _t102; + void* _t104; + int len; + unsigned int _t101; + _t101 = String_Len(data); + _t102 = (int)_t101; + len = _t102; + void* hashBuf; + void* _t103; + _t103 = Alloc(32); + hashBuf = _t103; + bux_sha256(data, len, hashBuf); + const char* result; + _t104 = (void*)hashBuf; + const char* _t105; + _t105 = bux_bytes_to_hex(_t104, 32); + result = _t105; + Free(hashBuf); + return result; +} + +const char* Crypto_HmacSha256(const char* key, const char* message) { + int _t107; + int _t109; + void* _t111; + int keylen; + unsigned int _t106; + _t106 = String_Len(key); + _t107 = (int)_t106; + keylen = _t107; + int msglen; + unsigned int _t108; + _t108 = String_Len(message); + _t109 = (int)_t108; + msglen = _t109; + void* hmacBuf; + void* _t110; + _t110 = Alloc(32); + hmacBuf = _t110; + bux_hmac_sha256(key, keylen, message, msglen, hmacBuf); + const char* result; + _t111 = (void*)hmacBuf; + const char* _t112; + _t112 = bux_bytes_to_hex(_t111, 32); + result = _t112; + Free(hmacBuf); + return result; +} + +const char* Crypto_RandomBytes(int n) { + int _t113; + unsigned int _t114; + int _t117; + const char* _t118; + _t113 = (n <= 0); + if (!_t113) goto endif16; + { + return ""; + } + endif16:; + void* buf; + _t114 = (unsigned int)n; + void* _t115; + _t115 = Alloc(_t114); + buf = _t115; + int _t116; + _t116 = bux_random_bytes(buf, n); + _t117 = (_t116 != 1); + if (!_t117) goto endif18; + { + Free(buf); + return ""; + } + endif18:; + const char* result; + _t118 = (const char*)buf; + const char* _t119; + _t119 = bux_base64_encode(_t118, n); + result = _t119; + Free(buf); + return result; +} + +const char* Crypto_Base64Encode(const char* s) { + int _t121; + unsigned int _t120; + _t120 = String_Len(s); + _t121 = (int)_t120; + const char* _t122; + _t122 = bux_base64_encode(s, _t121); + return _t122; +} + +const char* Crypto_HmacSha256Raw(const char* key, const char* message) { + int _t124; + int _t126; + const char* _t128; + int keylen; + unsigned int _t123; + _t123 = String_Len(key); + _t124 = (int)_t123; + keylen = _t124; + int msglen; + unsigned int _t125; + _t125 = String_Len(message); + _t126 = (int)_t125; + msglen = _t126; + void* hmacBuf; + void* _t127; + _t127 = Alloc(32); + hmacBuf = _t127; + bux_hmac_sha256(key, keylen, message, msglen, hmacBuf); + const char* result; + _t128 = (const char*)hmacBuf; + const char* _t129; + _t129 = bux_base64_encode(_t128, 32); + result = _t129; + Free(hmacBuf); + return result; +} + +const char* Crypto_Base64Decode(const char* s) { + int _t131; + void* _t132; + int outlen; + outlen = 0; + unsigned int _t130; + _t130 = String_Len(s); + _t131 = (int)_t130; + _t132 = &outlen; + const char* _t133; + _t133 = bux_base64_decode(s, _t131, _t132); + return _t133; +} + +Mutex Mutex_New(void) { + Mutex _t135; + void* _t134; + _t134 = bux_mutex_new(); + _t135 = (Mutex){.handle = _t134}; + return _t135; +} + +void Mutex_Lock(Mutex* m) { + void* _t136; + _t136 = m->handle; + bux_mutex_lock(_t136); +} + +void Mutex_Unlock(Mutex* m) { + void* _t137; + _t137 = m->handle; + bux_mutex_unlock(_t137); +} + +void Mutex_Free(Mutex* m) { + void* _t138; + _t138 = m->handle; + bux_mutex_free(_t138); +} + +RwLock RwLock_New(void) { + RwLock _t140; + void* _t139; + _t139 = bux_rwlock_new(); + _t140 = (RwLock){.handle = _t139}; + return _t140; +} + +void RwLock_ReadLock(RwLock* rw) { + void* _t141; + _t141 = rw->handle; + bux_rwlock_rdlock(_t141); +} + +void RwLock_WriteLock(RwLock* rw) { + void* _t142; + _t142 = rw->handle; + bux_rwlock_wrlock(_t142); +} + +void RwLock_Unlock(RwLock* rw) { + void* _t143; + _t143 = rw->handle; + bux_rwlock_unlock(_t143); +} + +void RwLock_Free(RwLock* rw) { + void* _t144; + _t144 = rw->handle; + bux_rwlock_free(_t144); +} + +void Test_Exit(int code) { + bux_exit(code); +} + +void Test_Assert(bool cond) { + int _t145; + _t145 = (int)cond; + bux_assert(_t145, "", 0, ""); +} + +void Test_AssertEqInt(int a, int b) { + int _t146; + _t146 = (a != b); + if (!_t146) goto endif20; + { + PrintLine("ASSERT_EQ FAILED:"); + PrintInt(a); + PrintLine(" != "); + PrintInt(b); + bux_exit(1); + } + endif20:; +} + +void Test_AssertTrue(bool cond) { + int _t147; + _t147 = !cond; + if (!_t147) goto endif22; + { + PrintLine("ASSERT_TRUE FAILED"); + bux_exit(1); + } + endif22:; +} + +void Test_AssertFalse(bool cond) { + if (!cond) goto endif24; + { + PrintLine("ASSERT_FALSE FAILED"); + bux_exit(1); + } + endif24:; +} + +void Test_Fail(const char* msg) { + PrintLine("FAIL:"); + PrintLine(msg); + bux_exit(1); +} + +Result Result_NewOk(int value) { + Result _t148; + Result r; + _t148 = (Result){.tag = Result_Ok}; + r = _t148; + r.data.Ok_0 = value; + return r; +} + +Result Result_NewErr(const char* msg) { + Result _t149; + Result r; + _t149 = (Result){.tag = Result_Err}; + r = _t149; + r.data.Err_0 = msg; + return r; +} + +bool Result_IsOk(Result r) { + int _t151; + Result_Tag _t150; + _t150 = r.tag; + _t151 = (_t150 == Result_Ok); + return _t151; +} + +bool Result_IsErr(Result r) { + int _t153; + Result_Tag _t152; + _t152 = r.tag; + _t153 = (_t152 == Result_Err); + return _t153; +} + +int Result_Unwrap(Result r) { + int _t155; + Result_Tag _t154; + _t154 = r.tag; + _t155 = (_t154 != Result_Ok); + if (!_t155) goto endif26; + { + PrintLine("panic: unwrap on Err"); + return 0; + } + endif26:; + Result_Data _t156; + _t156 = r.data; + int _t157; + _t157 = _t156.Ok_0; + return _t157; +} + +int Result_UnwrapOr(Result r, int fallback) { + int _t159; + Result_Tag _t158; + _t158 = r.tag; + _t159 = (_t158 == Result_Ok); + if (!_t159) goto endif28; + { + Result_Data _t160; + _t160 = r.data; + int _t161; + _t161 = _t160.Ok_0; + return _t161; + } + endif28:; + return fallback; +} + +Option Option_NewSome(int value) { + Option _t162; + Option o; + _t162 = (Option){.tag = Option_Some}; + o = _t162; + o.data.Some_0 = value; + return o; +} + +Option Option_NewNone(void) { + Option _t163; + _t163 = (Option){.tag = Option_None}; + return _t163; +} + +bool Option_IsSome(Option o) { + int _t165; + Option_Tag _t164; + _t164 = o.tag; + _t165 = (_t164 == Option_Some); + return _t165; +} + +bool Option_IsNone(Option o) { + int _t167; + Option_Tag _t166; + _t166 = o.tag; + _t167 = (_t166 == Option_None); + return _t167; +} + +int Option_Unwrap(Option o) { + int _t169; + Option_Tag _t168; + _t168 = o.tag; + _t169 = (_t168 != Option_Some); + if (!_t169) goto endif30; + { + PrintLine("panic: unwrap on None"); + return 0; + } + endif30:; + Option_Data _t170; + _t170 = o.data; + int _t171; + _t171 = _t170.Some_0; + return _t171; +} + +int Option_UnwrapOr(Option o, int fallback) { + int _t173; + Option_Tag _t172; + _t172 = o.tag; + _t173 = (_t172 == Option_Some); + if (!_t173) goto endif32; + { + Option_Data _t174; + _t174 = o.data; + int _t175; + _t175 = _t174.Some_0; + return _t175; + } + endif32:; + return fallback; +} + +JsonValue Json_Null(void) { + JsonValue _t176; + _t176 = (JsonValue){.tag = JsonTagNull, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t176; +} + +JsonValue Json_Bool(bool b) { + JsonValue _t177; + _t177 = (JsonValue){.tag = JsonTagBool, .boolVal = b, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t177; +} + +JsonValue Json_Number(double n) { + JsonValue _t178; + _t178 = (JsonValue){.tag = JsonTagNumber, .boolVal = 0, .numVal = n, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t178; +} + +JsonValue Json_String(const char* s) { + JsonValue _t179; + _t179 = (JsonValue){.tag = JsonTagString, .boolVal = 0, .numVal = 0.0, .strVal = s, .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t179; +} + +JsonValue Json_Array(void) { + JsonValue _t180; + _t180 = (JsonValue){.tag = JsonTagArray, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t180; +} + +JsonValue Json_Object(void) { + JsonValue _t181; + _t181 = (JsonValue){.tag = JsonTagObject, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t181; +} + +unsigned int Json_ArrayLen(JsonValue v) { + int _t183; + int _t182; + _t182 = v.tag; + _t183 = (_t182 != JsonTagArray); + if (!_t183) goto endif34; + { + return 0; + } + endif34:; + unsigned int _t184; + _t184 = v.arrLen; + return _t184; +} + +JsonValue Json_ArrayGet(JsonValue v, unsigned int index) { + int _t186; + int _t189; + int _t185; + _t185 = v.tag; + _t186 = (_t185 != JsonTagArray); + if (!_t186) goto endif36; + { + JsonValue _t187; + _t187 = Json_Null(); + return _t187; + } + endif36:; + unsigned int _t188; + _t188 = v.arrLen; + _t189 = (index >= _t188); + if (!_t189) goto endif38; + { + JsonValue _t190; + _t190 = Json_Null(); + return _t190; + } + endif38:; + JsonValue* _t191; + _t191 = v.arrData; + JsonValue _t192; + _t192 = _t191[index]; + return _t192; +} + +void Json_ArrayPush(JsonValue* self, JsonValue val) { + int _t194; + int _t197; + int _t199; + int _t200; + JsonValue* _t202; + int _t203; + void* _t205; + int _t206; + JsonValue* _t208; + int _t212; + int _t193; + _t193 = self->tag; + _t194 = (_t193 != JsonTagArray); + if (!_t194) goto endif40; + { + return; + } + endif40:; + unsigned int _t195; + _t195 = self->arrLen; + unsigned int _t196; + _t196 = self->arrCap; + _t197 = (_t195 >= _t196); + if (!_t197) goto endif42; + { + unsigned int arrNewCap; + unsigned int _t198; + _t198 = self->arrCap; + arrNewCap = _t198; + _t199 = (arrNewCap == 0); + if (!_t199) goto else43; + { + self->arrCap = 4; + /* sizeof(JsonValue) */ + _t200 = 4 * sizeof(JsonValue); + void* _t201; + _t201 = Alloc(_t200); + _t202 = (JsonValue*)_t201; + self->arrData = _t202; + } + goto endif44; + else43:; + { + unsigned int doubleCap; + _t203 = arrNewCap * 2; + doubleCap = _t203; + self->arrCap = doubleCap; + JsonValue* _t204; + _t204 = self->arrData; + _t205 = (void*)_t204; + /* sizeof(JsonValue) */ + _t206 = doubleCap * sizeof(JsonValue); + void* _t207; + _t207 = Realloc(_t205, _t206); + _t208 = (JsonValue*)_t207; + self->arrData = _t208; + } + endif44:; + } + endif42:; + JsonValue* _t209; + _t209 = self->arrData; + unsigned int _t210; + _t210 = self->arrLen; + _t209[_t210] = val; + unsigned int _t211; + _t211 = self->arrLen; + _t212 = _t211 + 1; + self->arrLen = _t212; +} + +unsigned int Json_ObjectLen(JsonValue v) { + int _t214; + int _t213; + _t213 = v.tag; + _t214 = (_t213 != JsonTagObject); + if (!_t214) goto endif46; + { + return 0; + } + endif46:; + unsigned int _t215; + _t215 = v.objLen; + return _t215; +} + +JsonValue Json_ObjectGet(JsonValue v, const char* key) { + int _t217; + int _t220; + int _t226; + int _t216; + _t216 = v.tag; + _t217 = (_t216 != JsonTagObject); + if (!_t217) goto endif48; + { + JsonValue _t218; + _t218 = Json_Null(); + return _t218; + } + endif48:; + unsigned int i; + i = 0; + while49:; + unsigned int _t219; + _t219 = v.objLen; + _t220 = (i < _t219); + if (!_t220) goto wend50; + { + const char** _t221; + _t221 = v.objKeys; + const char* _t222; + _t222 = _t221[i]; + bool _t223; + _t223 = String_Eq(_t222, key); + if (!_t223) goto endif52; + { + JsonValue* _t224; + _t224 = v.objValues; + JsonValue _t225; + _t225 = _t224[i]; + return _t225; + } + endif52:; + _t226 = i + 1; + i = _t226; + } + goto while49; + wend50:; + JsonValue _t227; + _t227 = Json_Null(); + return _t227; +} + +bool Json_ObjectHas(JsonValue v, const char* key) { + int _t229; + int _t231; + int _t235; + int _t228; + _t228 = v.tag; + _t229 = (_t228 != JsonTagObject); + if (!_t229) goto endif54; + { + return 0; + } + endif54:; + unsigned int i; + i = 0; + while55:; + unsigned int _t230; + _t230 = v.objLen; + _t231 = (i < _t230); + if (!_t231) goto wend56; + { + const char** _t232; + _t232 = v.objKeys; + const char* _t233; + _t233 = _t232[i]; + bool _t234; + _t234 = String_Eq(_t233, key); + if (!_t234) goto endif58; + { + return 1; + } + endif58:; + _t235 = i + 1; + i = _t235; + } + goto while55; + wend56:; + return 0; +} + +void Json_ObjectSet(JsonValue* self, const char* key, JsonValue val) { + int _t237; + int _t239; + int _t244; + int _t247; + int _t249; + int _t250; + const char** _t252; + int _t253; + JsonValue* _t255; + int _t256; + void* _t258; + int _t259; + const char** _t261; + void* _t263; + int _t264; + JsonValue* _t266; + int _t272; + int _t236; + _t236 = self->tag; + _t237 = (_t236 != JsonTagObject); + if (!_t237) goto endif60; + { + return; + } + endif60:; + unsigned int i; + i = 0; + while61:; + unsigned int _t238; + _t238 = self->objLen; + _t239 = (i < _t238); + if (!_t239) goto wend62; + { + const char** _t240; + _t240 = self->objKeys; + const char* _t241; + _t241 = _t240[i]; + bool _t242; + _t242 = String_Eq(_t241, key); + if (!_t242) goto endif64; + { + JsonValue* _t243; + _t243 = self->objValues; + _t243[i] = val; + return; + } + endif64:; + _t244 = i + 1; + i = _t244; + } + goto while61; + wend62:; + unsigned int _t245; + _t245 = self->objLen; + unsigned int _t246; + _t246 = self->objCap; + _t247 = (_t245 >= _t246); + if (!_t247) goto endif66; + { + unsigned int objNewCap; + unsigned int _t248; + _t248 = self->objCap; + objNewCap = _t248; + _t249 = (objNewCap == 0); + if (!_t249) goto else67; + { + self->objCap = 4; + /* sizeof(const char*) */ + _t250 = 4 * sizeof(const char*); + void* _t251; + _t251 = Alloc(_t250); + _t252 = (const char**)_t251; + self->objKeys = _t252; + /* sizeof(JsonValue) */ + _t253 = 4 * sizeof(JsonValue); + void* _t254; + _t254 = Alloc(_t253); + _t255 = (JsonValue*)_t254; + self->objValues = _t255; + } + goto endif68; + else67:; + { + unsigned int doubleCap; + _t256 = objNewCap * 2; + doubleCap = _t256; + self->objCap = doubleCap; + const char** _t257; + _t257 = self->objKeys; + _t258 = (void*)_t257; + /* sizeof(const char*) */ + _t259 = doubleCap * sizeof(const char*); + void* _t260; + _t260 = Realloc(_t258, _t259); + _t261 = (const char**)_t260; + self->objKeys = _t261; + JsonValue* _t262; + _t262 = self->objValues; + _t263 = (void*)_t262; + /* sizeof(JsonValue) */ + _t264 = doubleCap * sizeof(JsonValue); + void* _t265; + _t265 = Realloc(_t263, _t264); + _t266 = (JsonValue*)_t265; + self->objValues = _t266; + } + endif68:; + } + endif66:; + const char** _t267; + _t267 = self->objKeys; + unsigned int _t268; + _t268 = self->objLen; + _t267[_t268] = key; + JsonValue* _t269; + _t269 = self->objValues; + unsigned int _t270; + _t270 = self->objLen; + _t269[_t270] = val; + unsigned int _t271; + _t271 = self->objLen; + _t272 = _t271 + 1; + self->objLen = _t272; +} + +bool Json_IsNull(JsonValue v) { + int _t274; + int _t273; + _t273 = v.tag; + _t274 = (_t273 == JsonTagNull); + return _t274; +} + +bool Json_AsBool(JsonValue v) { + int _t276; + int _t275; + _t275 = v.tag; + _t276 = (_t275 == JsonTagBool); + if (!_t276) goto endif70; + { + bool _t277; + _t277 = v.boolVal; + return _t277; + } + endif70:; + return 0; +} + +double Json_AsNumber(JsonValue v) { + int _t279; + int _t278; + _t278 = v.tag; + _t279 = (_t278 == JsonTagNumber); + if (!_t279) goto endif72; + { + double _t280; + _t280 = v.numVal; + return _t280; + } + endif72:; + return 0.0; +} + +const char* Json_AsString(JsonValue v) { + int _t282; + int _t281; + _t281 = v.tag; + _t282 = (_t281 == JsonTagString); + if (!_t282) goto endif74; + { + const char* _t283; + _t283 = v.strVal; + return _t283; + } + endif74:; + return ""; +} + +int JsonParser_Peek(JsonParser* p) { + int _t286; + int _t290; + unsigned int _t284; + _t284 = p->pos; + unsigned int _t285; + _t285 = p->len; + _t286 = (_t284 >= _t285); + if (!_t286) goto endif76; + { + return 0; + } + endif76:; + const char* _t287; + _t287 = p->src; + unsigned int _t288; + _t288 = p->pos; + int _t289; + _t289 = _t287[_t288]; + _t290 = (int)_t289; + return _t290; +} + +void JsonParser_Advance(JsonParser* p) { + int _t293; + int _t295; + unsigned int _t291; + _t291 = p->pos; + unsigned int _t292; + _t292 = p->len; + _t293 = (_t291 < _t292); + if (!_t293) goto endif78; + { + unsigned int _t294; + _t294 = p->pos; + _t295 = _t294 + 1; + p->pos = _t295; + } + endif78:; +} + +void JsonParser_SkipWhitespace(JsonParser* p) { + int _t297; + int _t298; + int _t300; + int _t302; + while79:; + if (!1) goto wend80; + { + int c; + int _t296; + _t296 = JsonParser_Peek(p); + c = _t296; + bool __or_tmp_1; + bool __or_tmp_2; + bool __or_tmp_3; + _t297 = (c == 32); + if (!_t297) goto else81; + *(bool*)&__or_tmp_3 = 1; + goto endif82; + else81:; + _t298 = (c == 9); + *(bool*)&__or_tmp_3 = _t298; + endif82:; + bool _t299; + _t299 = *(bool*)&__or_tmp_3; + if (!_t299) goto else83; + *(bool*)&__or_tmp_2 = 1; + goto endif84; + else83:; + _t300 = (c == 10); + *(bool*)&__or_tmp_2 = _t300; + endif84:; + bool _t301; + _t301 = *(bool*)&__or_tmp_2; + if (!_t301) goto else85; + *(bool*)&__or_tmp_1 = 1; + goto endif86; + else85:; + _t302 = (c == 13); + *(bool*)&__or_tmp_1 = _t302; + endif86:; + bool _t303; + _t303 = *(bool*)&__or_tmp_1; + if (!_t303) goto else87; + { + JsonParser_Advance(p); + } + goto endif88; + else87:; + { + return; + } + endif88:; + } + goto while79; + wend80:; +} + +bool JsonParser_Match(JsonParser* p, const char* expected) { + int _t306; + int _t308; + int _t309; + int _t312; + int _t315; + int _t316; + int _t318; + unsigned int elen; + unsigned int _t304; + _t304 = String_Len(expected); + elen = _t304; + unsigned int _t305; + _t305 = p->pos; + _t306 = _t305 + elen; + unsigned int _t307; + _t307 = p->len; + _t308 = (_t306 > _t307); + if (!_t308) goto endif90; + { + return 0; + } + endif90:; + unsigned int i; + i = 0; + while91:; + _t309 = (i < elen); + if (!_t309) goto wend92; + { + const char* _t310; + _t310 = p->src; + unsigned int _t311; + _t311 = p->pos; + _t312 = _t311 + i; + int _t313; + _t313 = _t310[_t312]; + int _t314; + _t314 = expected[i]; + _t315 = (_t313 != _t314); + if (!_t315) goto endif94; + { + return 0; + } + endif94:; + _t316 = i + 1; + i = _t316; + } + goto while91; + wend92:; + unsigned int _t317; + _t317 = p->pos; + _t318 = _t317 + elen; + p->pos = _t318; + return 1; +} + +const char* JsonParser_ParseString(JsonParser* p) { + int _t320; + int _t323; + int _t324; + int _t326; + int _t328; + void* _t329; + int _t330; + void* _t331; + char _t332; + int _t333; + void* _t334; + char _t335; + int _t336; + void* _t337; + char _t338; + int _t339; + void* _t340; + char _t341; + int _t342; + void* _t343; + char _t344; + int _t345; + void* _t346; + char _t347; + int _t348; + void* _t349; + char _t350; + void* _t351; + char _t352; + void* _t353; + char _t354; + void* _t355; + char _t356; + int _t358; + void* _t359; + void* _t360; + void* _t362; + int _t319; + _t319 = JsonParser_Peek(p); + _t320 = (_t319 != 34); + if (!_t320) goto endif96; + { + p->error = "Expected string"; + return ""; + } + endif96:; + JsonParser_Advance(p); + StringBuilder sb; + StringBuilder _t321; + _t321 = StringBuilder_New(); + sb = _t321; + while97:; + if (!1) goto wend98; + { + int c; + int _t322; + _t322 = JsonParser_Peek(p); + c = _t322; + bool __or_tmp_4; + _t323 = (c == 0); + if (!_t323) goto else99; + *(bool*)&__or_tmp_4 = 1; + goto endif100; + else99:; + _t324 = (c == 34); + *(bool*)&__or_tmp_4 = _t324; + endif100:; + bool _t325; + _t325 = *(bool*)&__or_tmp_4; + if (!_t325) goto endif102; + { + goto wend98; + } + endif102:; + _t326 = (c == 92); + if (!_t326) goto else103; + { + JsonParser_Advance(p); + int esc; + int _t327; + _t327 = JsonParser_Peek(p); + esc = _t327; + _t328 = (esc == 0); + if (!_t328) goto endif106; + { + p->error = "Unterminated string escape"; + _t329 = &sb; + StringBuilder_Free(_t329); + return ""; + } + endif106:; + _t330 = (esc == 110); + if (!_t330) goto else107; + { + _t331 = &sb; + _t332 = (char)10; + StringBuilder_AppendChar(_t331, _t332); + } + goto endif108; + else107:; + _t333 = (esc == 116); + if (!_t333) goto else109; + { + _t334 = &sb; + _t335 = (char)9; + StringBuilder_AppendChar(_t334, _t335); + } + goto endif110; + else109:; + _t336 = (esc == 114); + if (!_t336) goto else111; + { + _t337 = &sb; + _t338 = (char)13; + StringBuilder_AppendChar(_t337, _t338); + } + goto endif112; + else111:; + _t339 = (esc == 98); + if (!_t339) goto else113; + { + _t340 = &sb; + _t341 = (char)8; + StringBuilder_AppendChar(_t340, _t341); + } + goto endif114; + else113:; + _t342 = (esc == 102); + if (!_t342) goto else115; + { + _t343 = &sb; + _t344 = (char)12; + StringBuilder_AppendChar(_t343, _t344); + } + goto endif116; + else115:; + _t345 = (esc == 34); + if (!_t345) goto else117; + { + _t346 = &sb; + _t347 = (char)34; + StringBuilder_AppendChar(_t346, _t347); + } + goto endif118; + else117:; + _t348 = (esc == 92); + if (!_t348) goto else119; + { + _t349 = &sb; + _t350 = (char)92; + StringBuilder_AppendChar(_t349, _t350); + } + goto endif120; + else119:; + { + _t351 = &sb; + _t352 = (char)92; + StringBuilder_AppendChar(_t351, _t352); + _t353 = &sb; + _t354 = (char)esc; + StringBuilder_AppendChar(_t353, _t354); + } + endif120:; + endif118:; + endif116:; + endif114:; + endif112:; + endif110:; + endif108:; + JsonParser_Advance(p); + } + goto endif104; + else103:; + { + _t355 = &sb; + _t356 = (char)c; + StringBuilder_AppendChar(_t355, _t356); + JsonParser_Advance(p); + } + endif104:; + } + goto while97; + wend98:; + int _t357; + _t357 = JsonParser_Peek(p); + _t358 = (_t357 != 34); + if (!_t358) goto endif122; + { + p->error = "Unterminated string"; + _t359 = &sb; + StringBuilder_Free(_t359); + return ""; + } + endif122:; + JsonParser_Advance(p); + const char* result; + _t360 = &sb; + const char* _t361; + _t361 = StringBuilder_Build(_t360); + result = _t361; + _t362 = &sb; + StringBuilder_Free(_t362); + return result; +} + +JsonValue JsonParser_ParseNumber(JsonParser* p) { + int _t365; + int _t367; + int _t368; + int _t371; + int _t373; + int _t374; + int _t378; + unsigned int start; + unsigned int _t363; + _t363 = p->pos; + start = _t363; + int c0; + int _t364; + _t364 = JsonParser_Peek(p); + c0 = _t364; + _t365 = (c0 == 45); + if (!_t365) goto endif124; + { + JsonParser_Advance(p); + } + endif124:; + while125:; + if (!1) goto wend126; + { + int c; + int _t366; + _t366 = JsonParser_Peek(p); + c = _t366; + bool __and_tmp_5; + _t367 = (c >= 48); + if (!_t367) goto else127; + _t368 = (c <= 57); + *(bool*)&__and_tmp_5 = _t368; + goto endif128; + else127:; + *(bool*)&__and_tmp_5 = 0; + endif128:; + bool _t369; + _t369 = *(bool*)&__and_tmp_5; + if (!_t369) goto else129; + { + JsonParser_Advance(p); + } + goto endif130; + else129:; + { + goto wend126; + } + endif130:; + } + goto while125; + wend126:; + int _t370; + _t370 = JsonParser_Peek(p); + _t371 = (_t370 == 46); + if (!_t371) goto endif132; + { + JsonParser_Advance(p); + while133:; + if (!1) goto wend134; + { + int c; + int _t372; + _t372 = JsonParser_Peek(p); + c = _t372; + bool __and_tmp_6; + _t373 = (c >= 48); + if (!_t373) goto else135; + _t374 = (c <= 57); + *(bool*)&__and_tmp_6 = _t374; + goto endif136; + else135:; + *(bool*)&__and_tmp_6 = 0; + endif136:; + bool _t375; + _t375 = *(bool*)&__and_tmp_6; + if (!_t375) goto else137; + { + JsonParser_Advance(p); + } + goto endif138; + else137:; + { + goto wend134; + } + endif138:; + } + goto while133; + wend134:; + } + endif132:; + const char* numStr; + const char* _t376; + _t376 = p->src; + unsigned int _t377; + _t377 = p->pos; + _t378 = _t377 - start; + const char* _t379; + _t379 = String_Slice(_t376, start, _t378); + numStr = _t379; + double n; + double _t380; + _t380 = String_ToFloat(numStr); + n = _t380; + JsonValue _t381; + _t381 = Json_Number(n); + return _t381; +} + +JsonValue JsonParser_ParseArray(JsonParser* p) { + int _t384; + int _t387; + void* _t389; + int _t391; + int _t392; + JsonParser_Advance(p); + JsonValue arr; + JsonValue _t382; + _t382 = Json_Array(); + arr = _t382; + JsonParser_SkipWhitespace(p); + int _t383; + _t383 = JsonParser_Peek(p); + _t384 = (_t383 == 93); + if (!_t384) goto endif140; + { + JsonParser_Advance(p); + return arr; + } + endif140:; + while141:; + if (!1) goto wend142; + { + JsonParser_SkipWhitespace(p); + JsonValue val; + JsonValue _t385; + _t385 = JsonParser_ParseValue(p); + val = _t385; + const char* _t386; + _t386 = p->error; + _t387 = (_t386 != ""); + if (!_t387) goto endif144; + { + JsonValue _t388; + _t388 = Json_Null(); + return _t388; + } + endif144:; + _t389 = &arr; + Json_ArrayPush(_t389, val); + JsonParser_SkipWhitespace(p); + int c; + int _t390; + _t390 = JsonParser_Peek(p); + c = _t390; + _t391 = (c == 93); + if (!_t391) goto endif146; + { + JsonParser_Advance(p); + return arr; + } + endif146:; + _t392 = (c == 44); + if (!_t392) goto else147; + { + JsonParser_Advance(p); + } + goto endif148; + else147:; + { + p->error = "Expected ',' or ']' in array"; + JsonValue _t393; + _t393 = Json_Null(); + return _t393; + } + endif148:; + } + goto while141; + wend142:; +} + +JsonValue JsonParser_ParseObject(JsonParser* p) { + int _t396; + int _t399; + int _t402; + int _t406; + void* _t408; + int _t410; + int _t411; + JsonParser_Advance(p); + JsonValue obj; + JsonValue _t394; + _t394 = Json_Object(); + obj = _t394; + JsonParser_SkipWhitespace(p); + int _t395; + _t395 = JsonParser_Peek(p); + _t396 = (_t395 == 125); + if (!_t396) goto endif150; + { + JsonParser_Advance(p); + return obj; + } + endif150:; + while151:; + if (!1) goto wend152; + { + JsonParser_SkipWhitespace(p); + const char* key; + const char* _t397; + _t397 = JsonParser_ParseString(p); + key = _t397; + const char* _t398; + _t398 = p->error; + _t399 = (_t398 != ""); + if (!_t399) goto endif154; + { + JsonValue _t400; + _t400 = Json_Null(); + return _t400; + } + endif154:; + JsonParser_SkipWhitespace(p); + int _t401; + _t401 = JsonParser_Peek(p); + _t402 = (_t401 != 58); + if (!_t402) goto endif156; + { + p->error = "Expected ':' after object key"; + JsonValue _t403; + _t403 = Json_Null(); + return _t403; + } + endif156:; + JsonParser_Advance(p); + JsonParser_SkipWhitespace(p); + JsonValue val; + JsonValue _t404; + _t404 = JsonParser_ParseValue(p); + val = _t404; + const char* _t405; + _t405 = p->error; + _t406 = (_t405 != ""); + if (!_t406) goto endif158; + { + JsonValue _t407; + _t407 = Json_Null(); + return _t407; + } + endif158:; + _t408 = &obj; + Json_ObjectSet(_t408, key, val); + JsonParser_SkipWhitespace(p); + int c; + int _t409; + _t409 = JsonParser_Peek(p); + c = _t409; + _t410 = (c == 125); + if (!_t410) goto endif160; + { + JsonParser_Advance(p); + return obj; + } + endif160:; + _t411 = (c == 44); + if (!_t411) goto else161; + { + JsonParser_Advance(p); + } + goto endif162; + else161:; + { + p->error = "Expected ',' or '}' in object"; + JsonValue _t412; + _t412 = Json_Null(); + return _t412; + } + endif162:; + } + goto while151; + wend152:; +} + +JsonValue JsonParser_ParseValue(JsonParser* p) { + int _t414; + int _t416; + int _t419; + int _t421; + int _t423; + int _t427; + int _t431; + int _t435; + int _t436; + int _t438; + JsonParser_SkipWhitespace(p); + int c; + int _t413; + _t413 = JsonParser_Peek(p); + c = _t413; + _t414 = (c == 0); + if (!_t414) goto endif164; + { + p->error = "Unexpected end of input"; + JsonValue _t415; + _t415 = Json_Null(); + return _t415; + } + endif164:; + _t416 = (c == 34); + if (!_t416) goto endif166; + { + const char* _t417; + _t417 = JsonParser_ParseString(p); + JsonValue _t418; + _t418 = Json_String(_t417); + return _t418; + } + endif166:; + _t419 = (c == 123); + if (!_t419) goto endif168; + { + JsonValue _t420; + _t420 = JsonParser_ParseObject(p); + return _t420; + } + endif168:; + _t421 = (c == 91); + if (!_t421) goto endif170; + { + JsonValue _t422; + _t422 = JsonParser_ParseArray(p); + return _t422; + } + endif170:; + _t423 = (c == 116); + if (!_t423) goto endif172; + { + bool _t424; + _t424 = JsonParser_Match(p, "true"); + if (!_t424) goto endif174; + { + JsonValue _t425; + _t425 = Json_Bool(1); + return _t425; + } + endif174:; + p->error = "Expected 'true'"; + JsonValue _t426; + _t426 = Json_Null(); + return _t426; + } + endif172:; + _t427 = (c == 102); + if (!_t427) goto endif176; + { + bool _t428; + _t428 = JsonParser_Match(p, "false"); + if (!_t428) goto endif178; + { + JsonValue _t429; + _t429 = Json_Bool(0); + return _t429; + } + endif178:; + p->error = "Expected 'false'"; + JsonValue _t430; + _t430 = Json_Null(); + return _t430; + } + endif176:; + _t431 = (c == 110); + if (!_t431) goto endif180; + { + bool _t432; + _t432 = JsonParser_Match(p, "null"); + if (!_t432) goto endif182; + { + JsonValue _t433; + _t433 = Json_Null(); + return _t433; + } + endif182:; + p->error = "Expected 'null'"; + JsonValue _t434; + _t434 = Json_Null(); + return _t434; + } + endif180:; + bool __or_tmp_7; + bool __and_tmp_8; + _t435 = (c >= 48); + if (!_t435) goto else183; + _t436 = (c <= 57); + *(bool*)&__and_tmp_8 = _t436; + goto endif184; + else183:; + *(bool*)&__and_tmp_8 = 0; + endif184:; + bool _t437; + _t437 = *(bool*)&__and_tmp_8; + if (!_t437) goto else185; + *(bool*)&__or_tmp_7 = 1; + goto endif186; + else185:; + _t438 = (c == 45); + *(bool*)&__or_tmp_7 = _t438; + endif186:; + bool _t439; + _t439 = *(bool*)&__or_tmp_7; + if (!_t439) goto endif188; + { + JsonValue _t440; + _t440 = JsonParser_ParseNumber(p); + return _t440; + } + endif188:; + p->error = "Unexpected character"; + JsonValue _t441; + _t441 = Json_Null(); + return _t441; +} + +JsonValue Json_Parse(const char* s) { + JsonParser _t443; + void* _t444; + void* _t446; + int _t448; + int _t451; + JsonParser p; + unsigned int _t442; + _t442 = String_Len(s); + _t443 = (JsonParser){.src = s, .pos = 0, .len = _t442, .error = ""}; + p = _t443; + JsonValue result; + _t444 = &p; + JsonValue _t445; + _t445 = JsonParser_ParseValue(_t444); + result = _t445; + _t446 = &p; + JsonParser_SkipWhitespace(_t446); + bool __and_tmp_9; + const char* _t447; + _t447 = p.error; + _t448 = (_t447 == ""); + if (!_t448) goto else189; + unsigned int _t449; + _t449 = p.pos; + unsigned int _t450; + _t450 = p.len; + _t451 = (_t449 != _t450); + *(bool*)&__and_tmp_9 = _t451; + goto endif190; + else189:; + *(bool*)&__and_tmp_9 = 0; + endif190:; + bool _t452; + _t452 = *(bool*)&__and_tmp_9; + if (!_t452) goto endif192; + { + p.error = "Trailing data after JSON value"; + JsonValue _t453; + _t453 = Json_Null(); + return _t453; + } + endif192:; + return result; +} + +void Json_StringifyImpl(StringBuilder* sb, JsonValue v) { + int _t455; + int _t457; + int _t460; + int _t463; + char _t464; + char _t466; + int _t468; + char _t469; + int _t471; + int _t472; + char _t473; + int _t476; + char _t477; + int _t479; + char _t480; + int _t482; + int _t483; + char _t484; + char _t485; + char _t488; + char _t489; + int _t492; + char _t493; + int _t454; + _t454 = v.tag; + _t455 = (_t454 == JsonTagNull); + if (!_t455) goto endif194; + { + StringBuilder_Append(sb, "null"); + return; + } + endif194:; + int _t456; + _t456 = v.tag; + _t457 = (_t456 == JsonTagBool); + if (!_t457) goto endif196; + { + bool _t458; + _t458 = v.boolVal; + if (!_t458) goto else197; + { + StringBuilder_Append(sb, "true"); + } + goto endif198; + else197:; + { + StringBuilder_Append(sb, "false"); + } + endif198:; + return; + } + endif196:; + int _t459; + _t459 = v.tag; + _t460 = (_t459 == JsonTagNumber); + if (!_t460) goto endif200; + { + double _t461; + _t461 = v.numVal; + StringBuilder_AppendFloat(sb, _t461); + return; + } + endif200:; + int _t462; + _t462 = v.tag; + _t463 = (_t462 == JsonTagString); + if (!_t463) goto endif202; + { + _t464 = (char)34; + StringBuilder_AppendChar(sb, _t464); + const char* _t465; + _t465 = v.strVal; + StringBuilder_Append(sb, _t465); + _t466 = (char)34; + StringBuilder_AppendChar(sb, _t466); + return; + } + endif202:; + int _t467; + _t467 = v.tag; + _t468 = (_t467 == JsonTagArray); + if (!_t468) goto endif204; + { + _t469 = (char)91; + StringBuilder_AppendChar(sb, _t469); + unsigned int i; + i = 0; + while205:; + unsigned int _t470; + _t470 = v.arrLen; + _t471 = (i < _t470); + if (!_t471) goto wend206; + { + _t472 = (i > 0); + if (!_t472) goto endif208; + { + _t473 = (char)44; + StringBuilder_AppendChar(sb, _t473); + } + endif208:; + JsonValue* _t474; + _t474 = v.arrData; + JsonValue _t475; + _t475 = _t474[i]; + Json_StringifyImpl(sb, _t475); + _t476 = i + 1; + i = _t476; + } + goto while205; + wend206:; + _t477 = (char)93; + StringBuilder_AppendChar(sb, _t477); + return; + } + endif204:; + int _t478; + _t478 = v.tag; + _t479 = (_t478 == JsonTagObject); + if (!_t479) goto endif210; + { + _t480 = (char)123; + StringBuilder_AppendChar(sb, _t480); + unsigned int i; + i = 0; + while211:; + unsigned int _t481; + _t481 = v.objLen; + _t482 = (i < _t481); + if (!_t482) goto wend212; + { + _t483 = (i > 0); + if (!_t483) goto endif214; + { + _t484 = (char)44; + StringBuilder_AppendChar(sb, _t484); + } + endif214:; + _t485 = (char)34; + StringBuilder_AppendChar(sb, _t485); + const char** _t486; + _t486 = v.objKeys; + const char* _t487; + _t487 = _t486[i]; + StringBuilder_Append(sb, _t487); + _t488 = (char)34; + StringBuilder_AppendChar(sb, _t488); + _t489 = (char)58; + StringBuilder_AppendChar(sb, _t489); + JsonValue* _t490; + _t490 = v.objValues; + JsonValue _t491; + _t491 = _t490[i]; + Json_StringifyImpl(sb, _t491); + _t492 = i + 1; + i = _t492; + } + goto while211; + wend212:; + _t493 = (char)125; + StringBuilder_AppendChar(sb, _t493); + return; + } + endif210:; +} + +const char* Json_Stringify(JsonValue v) { + void* _t495; + void* _t496; + StringBuilder sb; + StringBuilder _t494; + _t494 = StringBuilder_New(); + sb = _t494; + _t495 = &sb; + Json_StringifyImpl(_t495, v); + _t496 = &sb; + const char* _t497; + _t497 = StringBuilder_Build(_t496); + return _t497; +} + +unsigned int String_Len(const char* s) { + unsigned int _t498; + _t498 = bux_strlen(s); + return _t498; +} + +bool String_IsNull(const char* s) { + int _t500; + int _t499; + _t499 = bux_str_is_null(s); + _t500 = (_t499 != 0); + return _t500; +} + +bool String_Eq(const char* a, const char* b) { + int _t502; + int _t501; + _t501 = bux_strcmp(a, b); + _t502 = (_t501 == 0); + return _t502; +} + +const char* String_Concat(const char* a, const char* b) { + int _t505; + int _t506; + char* _t508; + unsigned int len_a; + unsigned int _t503; + _t503 = bux_strlen(a); + len_a = _t503; + unsigned int len_b; + unsigned int _t504; + _t504 = bux_strlen(b); + len_b = _t504; + unsigned int total; + _t505 = len_a + len_b; + _t506 = _t505 + 1; + total = _t506; + char* buf; + void* _t507; + _t507 = bux_alloc(total); + _t508 = (char*)_t507; + buf = _t508; + bux_strcpy(buf, a); + bux_strcat(buf, b); + return buf; +} + +const char* String_Copy(const char* s) { + int _t510; + char* _t512; + unsigned int len; + unsigned int _t509; + _t509 = bux_strlen(s); + len = _t509; + char* buf; + _t510 = len + 1; + void* _t511; + _t511 = bux_alloc(_t510); + _t512 = (char*)_t511; + buf = _t512; + bux_strcpy(buf, s); + return buf; +} + +bool String_StartsWith(const char* s, const char* prefix) { + int _t515; + int _t517; + unsigned int s_len; + unsigned int _t513; + _t513 = bux_strlen(s); + s_len = _t513; + unsigned int p_len; + unsigned int _t514; + _t514 = bux_strlen(prefix); + p_len = _t514; + _t515 = (p_len > s_len); + if (!_t515) goto endif216; + { + return 0; + } + endif216:; + int r; + int _t516; + _t516 = bux_strncmp(s, prefix, p_len); + r = _t516; + _t517 = (r == 0); + return _t517; +} + +bool String_EndsWith(const char* s, const char* suffix) { + int _t520; + int _t521; + int _t524; + unsigned int s_len; + unsigned int _t518; + _t518 = bux_strlen(s); + s_len = _t518; + unsigned int suf_len; + unsigned int _t519; + _t519 = bux_strlen(suffix); + suf_len = _t519; + _t520 = (suf_len > s_len); + if (!_t520) goto endif218; + { + return 0; + } + endif218:; + unsigned int start; + _t521 = s_len - suf_len; + start = _t521; + const char* tail; + const char* _t522; + _t522 = bux_str_slice(s, start, suf_len); + tail = _t522; + bool eq; + int _t523; + _t523 = bux_strcmp(tail, suffix); + _t524 = (_t523 == 0); + eq = _t524; + return eq; +} + +bool String_Contains(const char* s, const char* substr) { + int _t526; + int r; + int _t525; + _t525 = bux_str_contains(s, substr); + r = _t525; + _t526 = (r != 0); + return _t526; +} + +const char* String_Slice(const char* s, unsigned int start, unsigned int len) { + const char* _t527; + _t527 = bux_str_slice(s, start, len); + return _t527; +} + +const char* String_Trim(const char* s) { + const char* _t528; + _t528 = bux_str_trim(s); + return _t528; +} + +const char* String_TrimLeft(const char* s) { + const char* _t529; + _t529 = bux_str_trim_left(s); + return _t529; +} + +const char* String_TrimRight(const char* s) { + const char* _t530; + _t530 = bux_str_trim_right(s); + return _t530; +} + +const char* String_FromInt(int64_t n) { + const char* _t531; + _t531 = bux_int_to_str(n); + return _t531; +} + +int64_t String_ToInt(const char* s) { + int64_t _t532; + _t532 = bux_str_to_int(s); + return _t532; +} + +StringBuilder StringBuilder_New(void) { + StringBuilder _t534; + void* _t533; + _t533 = bux_sb_new(64); + _t534 = (StringBuilder){.handle = _t533}; + return _t534; +} + +StringBuilder StringBuilder_NewCap(unsigned int cap) { + StringBuilder _t536; + void* _t535; + _t535 = bux_sb_new(cap); + _t536 = (StringBuilder){.handle = _t535}; + return _t536; +} + +void StringBuilder_Append(StringBuilder* sb, const char* s) { + void* _t537; + _t537 = sb->handle; + bux_sb_append(_t537, s); +} + +void StringBuilder_AppendInt(StringBuilder* sb, int64_t n) { + void* _t538; + _t538 = sb->handle; + bux_sb_append_int(_t538, n); +} + +void StringBuilder_AppendFloat(StringBuilder* sb, double f) { + void* _t539; + _t539 = sb->handle; + bux_sb_append_float(_t539, f); +} + +void StringBuilder_AppendChar(StringBuilder* sb, char c) { + void* _t540; + _t540 = sb->handle; + bux_sb_append_char(_t540, c); +} + +const char* StringBuilder_Build(StringBuilder* sb) { + void* _t541; + _t541 = sb->handle; + const char* _t542; + _t542 = bux_sb_build(_t541); + return _t542; +} + +void StringBuilder_Free(StringBuilder* sb) { + void* _t543; + _t543 = sb->handle; + bux_sb_free(_t543); +} + +unsigned int String_SplitCount(const char* s, const char* delim) { + unsigned int _t544; + _t544 = bux_str_split_count(s, delim); + return _t544; +} + +const char* String_SplitPart(const char* s, const char* delim, unsigned int index) { + const char* _t545; + _t545 = bux_str_split_part(s, delim, index); + return _t545; +} + +const char* String_Join2(const char* a, const char* b, const char* sep) { + const char* _t546; + _t546 = bux_str_join2(a, b, sep); + return _t546; +} + +const char* String_Chars(const char* s, unsigned int index) { + const char* _t547; + _t547 = bux_str_slice(s, index, 1); + return _t547; +} + +const char* String_Find(const char* haystack, const char* needle) { + const char* _t548; + _t548 = bux_strstr(haystack, needle); + return _t548; +} + +unsigned int String_Offset(const char* pos, const char* base) { + unsigned int _t549; + _t549 = bux_str_offset(pos, base); + return _t549; +} + +const char* String_Replace(const char* s, const char* old, const char* new) { + int _t555; + int _t557; + int _t558; + const char* pos; + const char* _t550; + _t550 = bux_strstr(s, old); + pos = _t550; + bool _t551; + _t551 = String_IsNull(pos); + if (!_t551) goto endif220; + { + return s; + } + endif220:; + unsigned int oldLen; + unsigned int _t552; + _t552 = bux_strlen(old); + oldLen = _t552; + unsigned int prefixLen; + unsigned int _t553; + _t553 = String_Offset(pos, s); + prefixLen = _t553; + const char* prefix; + const char* _t554; + _t554 = bux_str_slice(s, 0, prefixLen); + prefix = _t554; + const char* suffix; + _t555 = prefixLen + oldLen; + unsigned int _t556; + _t556 = bux_strlen(s); + _t557 = _t556 - prefixLen; + _t558 = _t557 - oldLen; + const char* _t559; + _t559 = bux_str_slice(s, _t555, _t558); + suffix = _t559; + const char* temp; + const char* _t560; + _t560 = String_Concat(prefix, new); + temp = _t560; + const char* result; + const char* _t561; + _t561 = String_Concat(temp, suffix); + result = _t561; + return result; +} + +double String_ToFloat(const char* s) { + double _t562; + _t562 = bux_str_to_float(s); + return _t562; +} + +const char* String_FromBool(bool b) { + if (!b) goto endif222; + { + return "true"; + } + endif222:; + return "false"; +} + +const char* String_FromFloat(double f) { + const char* _t563; + _t563 = bux_float_to_string(f); + return _t563; +} + +const char* String_Format1(const char* pattern, const char* a0) { + const char* _t564; + _t564 = bux_str_format(pattern, a0, "", "", "", "", "", "", ""); + return _t564; +} + +const char* String_Format2(const char* pattern, const char* a0, const char* a1) { + const char* _t565; + _t565 = bux_str_format(pattern, a0, a1, "", "", "", "", "", ""); + return _t565; +} + +const char* String_Format3(const char* pattern, const char* a0, const char* a1, const char* a2) { + const char* _t566; + _t566 = bux_str_format(pattern, a0, a1, a2, "", "", "", "", ""); + return _t566; +} + +void Channel_SendInt(Channel_int* ch, int value) { + void* _t568; + void* _t569; + void* _t567; + _t567 = ch->handle; + _t568 = &value; + _t569 = (void*)_t568; + bux_channel_send(_t567, _t569); +} + +int Channel_RecvInt(Channel_int* ch) { + void* _t571; + void* _t572; + int result; + result = 0; + void* _t570; + _t570 = ch->handle; + _t571 = &result; + _t572 = (void*)_t571; + bux_channel_recv(_t570, _t572); + return result; +} + +void Channel_SendFloat64(Channel_float64* ch, double value) { + void* _t574; + void* _t575; + void* _t573; + _t573 = ch->handle; + _t574 = &value; + _t575 = (void*)_t574; + bux_channel_send(_t573, _t575); +} + +double Channel_RecvFloat64(Channel_float64* ch) { + void* _t577; + void* _t578; + double result; + result = 0.0; + void* _t576; + _t576 = ch->handle; + _t577 = &result; + _t578 = (void*)_t577; + bux_channel_recv(_t576, _t578); + return result; +} + +const char* Hash_Sha1(const char* data) { + int _t580; + int len; + unsigned int _t579; + _t579 = String_Len(data); + _t580 = (int)_t579; + len = _t580; + void* buf; + void* _t581; + _t581 = Alloc(20); + buf = _t581; + bux_sha1(data, len, buf); + const char* result; + const char* _t582; + _t582 = bux_bytes_to_hex(buf, 20); + result = _t582; + Free(buf); + return result; +} + +const char* Hash_Sha256(const char* data) { + int _t584; + int len; + unsigned int _t583; + _t583 = String_Len(data); + _t584 = (int)_t583; + len = _t584; + void* buf; + void* _t585; + _t585 = Alloc(32); + buf = _t585; + bux_sha256(data, len, buf); + const char* result; + const char* _t586; + _t586 = bux_bytes_to_hex(buf, 32); + result = _t586; + Free(buf); + return result; +} + +const char* Hash_Sha384(const char* data) { + int _t588; + int len; + unsigned int _t587; + _t587 = String_Len(data); + _t588 = (int)_t587; + len = _t588; + void* buf; + void* _t589; + _t589 = Alloc(48); + buf = _t589; + bux_sha384(data, len, buf); + const char* result; + const char* _t590; + _t590 = bux_bytes_to_hex(buf, 48); + result = _t590; + Free(buf); + return result; +} + +const char* Hash_Sha512(const char* data) { + int _t592; + int len; + unsigned int _t591; + _t591 = String_Len(data); + _t592 = (int)_t591; + len = _t592; + void* buf; + void* _t593; + _t593 = Alloc(64); + buf = _t593; + bux_sha512(data, len, buf); + const char* result; + const char* _t594; + _t594 = bux_bytes_to_hex(buf, 64); + result = _t594; + Free(buf); + return result; +} + +void Hash_Sha256Raw(const char* data, void* out) { + int _t596; + unsigned int _t595; + _t595 = String_Len(data); + _t596 = (int)_t595; + bux_sha256(data, _t596, out); +} + +void Hash_Sha384Raw(const char* data, void* out) { + int _t598; + unsigned int _t597; + _t597 = String_Len(data); + _t598 = (int)_t597; + bux_sha384(data, _t598, out); +} + +void Hash_Sha512Raw(const char* data, void* out) { + int _t600; + unsigned int _t599; + _t599 = String_Len(data); + _t600 = (int)_t599; + bux_sha512(data, _t600, out); +} + +int Hash_Sha1Size(void) { + return 20; +} + +int Hash_Sha256Size(void) { + return 32; +} + +int Hash_Sha384Size(void) { + return 48; +} + +int Hash_Sha512Size(void) { + return 64; +} + +const char* Base64_Encode(const char* s) { + int _t602; + unsigned int _t601; + _t601 = String_Len(s); + _t602 = (int)_t601; + const char* _t603; + _t603 = bux_base64_encode(s, _t602); + return _t603; +} + +const char* Base64_Decode(const char* s) { + int _t605; + void* _t606; + int outlen; + outlen = 0; + unsigned int _t604; + _t604 = String_Len(s); + _t605 = (int)_t604; + _t606 = &outlen; + const char* _t607; + _t607 = bux_base64_decode(s, _t605, _t606); + return _t607; +} + +const char* Base64URL_Encode(const char* s) { + int _t609; + unsigned int _t608; + _t608 = String_Len(s); + _t609 = (int)_t608; + const char* _t610; + _t610 = bux_base64url_encode(s, _t609); + return _t610; +} + +const char* Base64URL_Decode(const char* s) { + int _t612; + void* _t613; + int outlen; + outlen = 0; + unsigned int _t611; + _t611 = String_Len(s); + _t612 = (int)_t611; + _t613 = &outlen; + const char* _t614; + _t614 = bux_base64url_decode(s, _t612, _t613); + return _t614; +} + +const char* Hmac_Sha256(const char* key, const char* message) { + int _t616; + int _t618; + int kl; + unsigned int _t615; + _t615 = String_Len(key); + _t616 = (int)_t615; + kl = _t616; + int ml; + unsigned int _t617; + _t617 = String_Len(message); + _t618 = (int)_t617; + ml = _t618; + void* buf; + void* _t619; + _t619 = Alloc(32); + buf = _t619; + bux_hmac_sha256(key, kl, message, ml, buf); + const char* result; + const char* _t620; + _t620 = bux_bytes_to_hex(buf, 32); + result = _t620; + Free(buf); + return result; +} + +void Hmac_Sha256Raw(const char* key, const char* message, void* out) { + int _t622; + int _t624; + unsigned int _t621; + _t621 = String_Len(key); + _t622 = (int)_t621; + unsigned int _t623; + _t623 = String_Len(message); + _t624 = (int)_t623; + bux_hmac_sha256(key, _t622, message, _t624, out); +} + +const char* Hmac_Sha256Base64(const char* key, const char* message) { + int _t626; + int _t628; + const char* _t630; + int kl; + unsigned int _t625; + _t625 = String_Len(key); + _t626 = (int)_t625; + kl = _t626; + int ml; + unsigned int _t627; + _t627 = String_Len(message); + _t628 = (int)_t627; + ml = _t628; + void* buf; + void* _t629; + _t629 = Alloc(32); + buf = _t629; + bux_hmac_sha256(key, kl, message, ml, buf); + const char* result; + _t630 = (const char*)buf; + const char* _t631; + _t631 = bux_base64_encode(_t630, 32); + result = _t631; + Free(buf); + return result; +} + +const char* Hmac_Sha384(const char* key, const char* message) { + int _t633; + int _t635; + int kl; + unsigned int _t632; + _t632 = String_Len(key); + _t633 = (int)_t632; + kl = _t633; + int ml; + unsigned int _t634; + _t634 = String_Len(message); + _t635 = (int)_t634; + ml = _t635; + void* buf; + void* _t636; + _t636 = Alloc(48); + buf = _t636; + bux_hmac_sha384(key, kl, message, ml, buf); + const char* result; + const char* _t637; + _t637 = bux_bytes_to_hex(buf, 48); + result = _t637; + Free(buf); + return result; +} + +void Hmac_Sha384Raw(const char* key, const char* message, void* out) { + int _t639; + int _t641; + unsigned int _t638; + _t638 = String_Len(key); + _t639 = (int)_t638; + unsigned int _t640; + _t640 = String_Len(message); + _t641 = (int)_t640; + bux_hmac_sha384(key, _t639, message, _t641, out); +} + +const char* Hmac_Sha384Base64(const char* key, const char* message) { + int _t643; + int _t645; + const char* _t647; + int kl; + unsigned int _t642; + _t642 = String_Len(key); + _t643 = (int)_t642; + kl = _t643; + int ml; + unsigned int _t644; + _t644 = String_Len(message); + _t645 = (int)_t644; + ml = _t645; + void* buf; + void* _t646; + _t646 = Alloc(48); + buf = _t646; + bux_hmac_sha384(key, kl, message, ml, buf); + const char* result; + _t647 = (const char*)buf; + const char* _t648; + _t648 = bux_base64_encode(_t647, 48); + result = _t648; + Free(buf); + return result; +} + +const char* Hmac_Sha512(const char* key, const char* message) { + int _t650; + int _t652; + int kl; + unsigned int _t649; + _t649 = String_Len(key); + _t650 = (int)_t649; + kl = _t650; + int ml; + unsigned int _t651; + _t651 = String_Len(message); + _t652 = (int)_t651; + ml = _t652; + void* buf; + void* _t653; + _t653 = Alloc(64); + buf = _t653; + bux_hmac_sha512(key, kl, message, ml, buf); + const char* result; + const char* _t654; + _t654 = bux_bytes_to_hex(buf, 64); + result = _t654; + Free(buf); + return result; +} + +void Hmac_Sha512Raw(const char* key, const char* message, void* out) { + int _t656; + int _t658; + unsigned int _t655; + _t655 = String_Len(key); + _t656 = (int)_t655; + unsigned int _t657; + _t657 = String_Len(message); + _t658 = (int)_t657; + bux_hmac_sha512(key, _t656, message, _t658, out); +} + +const char* Hmac_Sha512Base64(const char* key, const char* message) { + int _t660; + int _t662; + const char* _t664; + int kl; + unsigned int _t659; + _t659 = String_Len(key); + _t660 = (int)_t659; + kl = _t660; + int ml; + unsigned int _t661; + _t661 = String_Len(message); + _t662 = (int)_t661; + ml = _t662; + void* buf; + void* _t663; + _t663 = Alloc(64); + buf = _t663; + bux_hmac_sha512(key, kl, message, ml, buf); + const char* result; + _t664 = (const char*)buf; + const char* _t665; + _t665 = bux_base64_encode(_t664, 64); + result = _t665; + Free(buf); + return result; +} + +const char* Random_Bytes(int n) { + int _t666; + unsigned int _t667; + int _t670; + const char* _t671; + _t666 = (n <= 0); + if (!_t666) goto endif224; + { + return ""; + } + endif224:; + void* buf; + _t667 = (unsigned int)n; + void* _t668; + _t668 = Alloc(_t667); + buf = _t668; + int _t669; + _t669 = bux_random_bytes(buf, n); + _t670 = (_t669 != 1); + if (!_t670) goto endif226; + { + Free(buf); + return ""; + } + endif226:; + _t671 = (const char*)buf; + return _t671; +} + +const char* Random_Hex(int n) { + int _t672; + unsigned int _t673; + int _t676; + _t672 = (n <= 0); + if (!_t672) goto endif228; + { + return ""; + } + endif228:; + void* buf; + _t673 = (unsigned int)n; + void* _t674; + _t674 = Alloc(_t673); + buf = _t674; + int _t675; + _t675 = bux_random_bytes(buf, n); + _t676 = (_t675 != 1); + if (!_t676) goto endif230; + { + Free(buf); + return ""; + } + endif230:; + const char* result; + const char* _t677; + _t677 = bux_bytes_to_hex(buf, n); + result = _t677; + Free(buf); + return result; +} + +const char* Random_Base64(int n) { + int _t678; + unsigned int _t679; + int _t682; + const char* _t683; + _t678 = (n <= 0); + if (!_t678) goto endif232; + { + return ""; + } + endif232:; + void* buf; + _t679 = (unsigned int)n; + void* _t680; + _t680 = Alloc(_t679); + buf = _t680; + int _t681; + _t681 = bux_random_bytes(buf, n); + _t682 = (_t681 != 1); + if (!_t682) goto endif234; + { + Free(buf); + return ""; + } + endif234:; + const char* result; + _t683 = (const char*)buf; + const char* _t684; + _t684 = bux_base64_encode(_t683, n); + result = _t684; + Free(buf); + return result; +} + +unsigned int Random_Uint32(void) { + int _t687; + unsigned int* _t688; + unsigned int _t689; + void* buf; + void* _t685; + _t685 = Alloc(4); + buf = _t685; + int _t686; + _t686 = bux_random_bytes(buf, 4); + _t687 = (_t686 != 1); + if (!_t687) goto endif236; + { + Free(buf); + return 0; + } + endif236:; + unsigned int* ptr; + _t688 = (unsigned int*)buf; + ptr = _t688; + unsigned int val; + _t689 = *ptr; + val = _t689; + Free(buf); + return val; +} + +const char* Aes_GenerateKey(void) { + unsigned int _t690; + int _t693; + const char* _t694; + void* buf; + _t690 = (unsigned int)AES_KEY_SIZE; + void* _t691; + _t691 = Alloc(_t690); + buf = _t691; + int _t692; + _t692 = bux_random_bytes(buf, AES_KEY_SIZE); + _t693 = (_t692 != 1); + if (!_t693) goto endif238; + { + Free(buf); + return ""; + } + endif238:; + _t694 = (const char*)buf; + return _t694; +} + +const char* Aes_GenerateIV(void) { + unsigned int _t695; + int _t698; + const char* _t699; + void* buf; + _t695 = (unsigned int)AES_IV_SIZE; + void* _t696; + _t696 = Alloc(_t695); + buf = _t696; + int _t697; + _t697 = bux_random_bytes(buf, AES_IV_SIZE); + _t698 = (_t697 != 1); + if (!_t698) goto endif240; + { + Free(buf); + return ""; + } + endif240:; + _t699 = (const char*)buf; + return _t699; +} + +const char* Aes_CbcEncrypt(const char* plain, const char* key, const char* iv) { + int _t701; + void* _t702; + int outlen; + outlen = 0; + unsigned int _t700; + _t700 = String_Len(plain); + _t701 = (int)_t700; + _t702 = &outlen; + const char* _t703; + _t703 = bux_aes_256_cbc_encrypt(plain, _t701, key, iv, _t702); + return _t703; +} + +const char* Aes_CbcDecrypt(const char* cipher, const char* key, const char* iv) { + int _t705; + void* _t706; + int outlen; + outlen = 0; + unsigned int _t704; + _t704 = String_Len(cipher); + _t705 = (int)_t704; + _t706 = &outlen; + const char* _t707; + _t707 = bux_aes_256_cbc_decrypt(cipher, _t705, key, iv, _t706); + return _t707; +} + +const char* Aes_GcmEncrypt(const char* plain, const char* key, const char* iv, void* tag) { + int _t709; + void* _t710; + int outlen; + outlen = 0; + unsigned int _t708; + _t708 = String_Len(plain); + _t709 = (int)_t708; + _t710 = &outlen; + const char* _t711; + _t711 = bux_aes_256_gcm_encrypt(plain, _t709, key, iv, tag, _t710); + return _t711; +} + +const char* Aes_GcmDecrypt(const char* cipher, const char* key, const char* iv, const char* tag) { + int _t713; + void* _t714; + int outlen; + outlen = 0; + unsigned int _t712; + _t712 = String_Len(cipher); + _t713 = (int)_t712; + _t714 = &outlen; + const char* _t715; + _t715 = bux_aes_256_gcm_decrypt(cipher, _t713, key, iv, tag, _t714); + return _t715; +} + +const char* Jwt_MakeHeader(JwtAlg alg) { + int _t716; + int _t717; + int _t718; + int _t719; + int _t720; + int _t721; + int _t722; + int _t723; + int _t724; + _t716 = (alg == JwtAlg_HS256); + if (!_t716) goto endif242; + { + return "{\"alg\":\"HS256\",\"typ\":\"JWT\"}"; + } + endif242:; + _t717 = (alg == JwtAlg_HS384); + if (!_t717) goto endif244; + { + return "{\"alg\":\"HS384\",\"typ\":\"JWT\"}"; + } + endif244:; + _t718 = (alg == JwtAlg_HS512); + if (!_t718) goto endif246; + { + return "{\"alg\":\"HS512\",\"typ\":\"JWT\"}"; + } + endif246:; + _t719 = (alg == JwtAlg_RS256); + if (!_t719) goto endif248; + { + return "{\"alg\":\"RS256\",\"typ\":\"JWT\"}"; + } + endif248:; + _t720 = (alg == JwtAlg_RS384); + if (!_t720) goto endif250; + { + return "{\"alg\":\"RS384\",\"typ\":\"JWT\"}"; + } + endif250:; + _t721 = (alg == JwtAlg_RS512); + if (!_t721) goto endif252; + { + return "{\"alg\":\"RS512\",\"typ\":\"JWT\"}"; + } + endif252:; + _t722 = (alg == JwtAlg_ES256); + if (!_t722) goto endif254; + { + return "{\"alg\":\"ES256\",\"typ\":\"JWT\"}"; + } + endif254:; + _t723 = (alg == JwtAlg_ES384); + if (!_t723) goto endif256; + { + return "{\"alg\":\"ES384\",\"typ\":\"JWT\"}"; + } + endif256:; + _t724 = (alg == JwtAlg_EdDSA); + if (!_t724) goto endif258; + { + return "{\"alg\":\"EdDSA\",\"typ\":\"JWT\"}"; + } + endif258:; + return "{\"alg\":\"none\",\"typ\":\"JWT\"}"; +} + +const char* Jwt_Sign(JwtAlg alg, const char* signingInput, const char* key) { + int _t725; + const char* _t727; + int _t729; + const char* _t731; + int _t733; + const char* _t735; + int _t737; + int _t740; + int _t742; + int _t745; + int _t747; + int _t750; + int _t752; + int _t755; + int _t757; + int _t760; + int _t762; + _t725 = (alg == JwtAlg_HS256); + if (!_t725) goto endif260; + { + void* buf; + void* _t726; + _t726 = Alloc(32); + buf = _t726; + Hmac_Sha256Raw(key, signingInput, buf); + const char* result; + _t727 = (const char*)buf; + const char* _t728; + _t728 = bux_base64_encode(_t727, 32); + result = _t728; + Free(buf); + return result; + } + endif260:; + _t729 = (alg == JwtAlg_HS384); + if (!_t729) goto endif262; + { + void* buf; + void* _t730; + _t730 = Alloc(48); + buf = _t730; + Hmac_Sha384Raw(key, signingInput, buf); + const char* result; + _t731 = (const char*)buf; + const char* _t732; + _t732 = bux_base64_encode(_t731, 48); + result = _t732; + Free(buf); + return result; + } + endif262:; + _t733 = (alg == JwtAlg_HS512); + if (!_t733) goto endif264; + { + void* buf; + void* _t734; + _t734 = Alloc(64); + buf = _t734; + Hmac_Sha512Raw(key, signingInput, buf); + const char* result; + _t735 = (const char*)buf; + const char* _t736; + _t736 = bux_base64_encode(_t735, 64); + result = _t736; + Free(buf); + return result; + } + endif264:; + _t737 = (alg == JwtAlg_RS256); + if (!_t737) goto endif266; + { + const char* raw; + const char* _t738; + _t738 = Rsa_SignSha256(key, signingInput); + raw = _t738; + unsigned int _t739; + _t739 = String_Len(raw); + _t740 = (int)_t739; + const char* _t741; + _t741 = bux_base64_encode(raw, _t740); + return _t741; + } + endif266:; + _t742 = (alg == JwtAlg_RS384); + if (!_t742) goto endif268; + { + const char* raw; + const char* _t743; + _t743 = Rsa_SignSha384(key, signingInput); + raw = _t743; + unsigned int _t744; + _t744 = String_Len(raw); + _t745 = (int)_t744; + const char* _t746; + _t746 = bux_base64_encode(raw, _t745); + return _t746; + } + endif268:; + _t747 = (alg == JwtAlg_RS512); + if (!_t747) goto endif270; + { + const char* raw; + const char* _t748; + _t748 = Rsa_SignSha512(key, signingInput); + raw = _t748; + unsigned int _t749; + _t749 = String_Len(raw); + _t750 = (int)_t749; + const char* _t751; + _t751 = bux_base64_encode(raw, _t750); + return _t751; + } + endif270:; + _t752 = (alg == JwtAlg_ES256); + if (!_t752) goto endif272; + { + const char* raw; + const char* _t753; + _t753 = Ecdsa_SignP256(key, signingInput); + raw = _t753; + unsigned int _t754; + _t754 = String_Len(raw); + _t755 = (int)_t754; + const char* _t756; + _t756 = bux_base64_encode(raw, _t755); + return _t756; + } + endif272:; + _t757 = (alg == JwtAlg_ES384); + if (!_t757) goto endif274; + { + const char* raw; + const char* _t758; + _t758 = Ecdsa_SignP384(key, signingInput); + raw = _t758; + unsigned int _t759; + _t759 = String_Len(raw); + _t760 = (int)_t759; + const char* _t761; + _t761 = bux_base64_encode(raw, _t760); + return _t761; + } + endif274:; + _t762 = (alg == JwtAlg_EdDSA); + if (!_t762) goto endif276; + { + const char* _t763; + _t763 = Ed25519_Sign(key, signingInput); + return _t763; + } + endif276:; + return ""; +} + +bool Jwt_Verify(JwtAlg alg, const char* signingInput, const char* signatureB64, const char* key) { + int _t764; + const char* _t766; + int _t769; + const char* _t771; + int _t774; + const char* _t776; + int _t779; + int _t781; + int _t783; + int _t785; + int _t787; + int _t789; + _t764 = (alg == JwtAlg_HS256); + if (!_t764) goto endif278; + { + void* expectBuf; + void* _t765; + _t765 = Alloc(32); + expectBuf = _t765; + Hmac_Sha256Raw(key, signingInput, expectBuf); + const char* expectB64; + _t766 = (const char*)expectBuf; + const char* _t767; + _t767 = bux_base64_encode(_t766, 32); + expectB64 = _t767; + Free(expectBuf); + bool _t768; + _t768 = String_Eq(expectB64, signatureB64); + return _t768; + } + endif278:; + _t769 = (alg == JwtAlg_HS384); + if (!_t769) goto endif280; + { + void* expectBuf; + void* _t770; + _t770 = Alloc(48); + expectBuf = _t770; + Hmac_Sha384Raw(key, signingInput, expectBuf); + const char* expectB64; + _t771 = (const char*)expectBuf; + const char* _t772; + _t772 = bux_base64_encode(_t771, 48); + expectB64 = _t772; + Free(expectBuf); + bool _t773; + _t773 = String_Eq(expectB64, signatureB64); + return _t773; + } + endif280:; + _t774 = (alg == JwtAlg_HS512); + if (!_t774) goto endif282; + { + void* expectBuf; + void* _t775; + _t775 = Alloc(64); + expectBuf = _t775; + Hmac_Sha512Raw(key, signingInput, expectBuf); + const char* expectB64; + _t776 = (const char*)expectBuf; + const char* _t777; + _t777 = bux_base64_encode(_t776, 64); + expectB64 = _t777; + Free(expectBuf); + bool _t778; + _t778 = String_Eq(expectB64, signatureB64); + return _t778; + } + endif282:; + _t779 = (alg == JwtAlg_RS256); + if (!_t779) goto endif284; + { + bool _t780; + _t780 = Rsa_VerifySha256(key, signingInput, signatureB64); + return _t780; + } + endif284:; + _t781 = (alg == JwtAlg_RS384); + if (!_t781) goto endif286; + { + bool _t782; + _t782 = Rsa_VerifySha384(key, signingInput, signatureB64); + return _t782; + } + endif286:; + _t783 = (alg == JwtAlg_RS512); + if (!_t783) goto endif288; + { + bool _t784; + _t784 = Rsa_VerifySha512(key, signingInput, signatureB64); + return _t784; + } + endif288:; + _t785 = (alg == JwtAlg_ES256); + if (!_t785) goto endif290; + { + bool _t786; + _t786 = Ecdsa_VerifyP256(key, signingInput, signatureB64); + return _t786; + } + endif290:; + _t787 = (alg == JwtAlg_ES384); + if (!_t787) goto endif292; + { + bool _t788; + _t788 = Ecdsa_VerifyP384(key, signingInput, signatureB64); + return _t788; + } + endif292:; + _t789 = (alg == JwtAlg_EdDSA); + if (!_t789) goto endif294; + { + bool _t790; + _t790 = Ed25519_Verify(key, signatureB64, signingInput); + return _t790; + } + endif294:; + return 0; +} + +const char* Jwt_Encode(const char* headerJson, const char* payloadJson, JwtAlg alg, const char* key) { + const char* headerB64; + const char* _t791; + _t791 = Base64URL_Encode(headerJson); + headerB64 = _t791; + const char* payloadB64; + const char* _t792; + _t792 = Base64URL_Encode(payloadJson); + payloadB64 = _t792; + const char* signingInput; + const char* _t793; + _t793 = String_Concat(headerB64, "."); + signingInput = _t793; + const char* signingInputFull; + const char* _t794; + _t794 = String_Concat(signingInput, payloadB64); + signingInputFull = _t794; + const char* sigB64; + const char* _t795; + _t795 = Jwt_Sign(alg, signingInputFull, key); + sigB64 = _t795; + const char* part1; + const char* _t796; + _t796 = String_Concat(signingInputFull, "."); + part1 = _t796; + const char* _t797; + _t797 = String_Concat(part1, sigB64); + return _t797; +} + +bool Jwt_Decode(const char* token, JwtAlg alg, const char* key, const char** headerOut, const char** payloadOut) { + int _t799; + int _t806; + unsigned int partCount; + unsigned int _t798; + _t798 = bux_str_split_count(token, "."); + partCount = _t798; + _t799 = (partCount != 3); + if (!_t799) goto endif296; + { + return 0; + } + endif296:; + const char* headerB64; + const char* _t800; + _t800 = bux_str_split_part(token, ".", 0); + headerB64 = _t800; + const char* payloadB64; + const char* _t801; + _t801 = bux_str_split_part(token, ".", 1); + payloadB64 = _t801; + const char* sigB64; + const char* _t802; + _t802 = bux_str_split_part(token, ".", 2); + sigB64 = _t802; + const char* input; + const char* _t803; + _t803 = String_Concat(headerB64, "."); + input = _t803; + const char* signingInput; + const char* _t804; + _t804 = String_Concat(input, payloadB64); + signingInput = _t804; + bool _t805; + _t805 = Jwt_Verify(alg, signingInput, sigB64, key); + _t806 = !_t805; + if (!_t806) goto endif298; + { + return 0; + } + endif298:; + const char* _t807; + _t807 = Base64URL_Decode(headerB64); + headerOut[0] = _t807; + const char* _t808; + _t808 = Base64URL_Decode(payloadB64); + payloadOut[0] = _t808; + return 1; +} + +const char* Jwt_EncodeHS256(const char* payloadJson, const char* secret) { + const char* header; + const char* _t809; + _t809 = Jwt_MakeHeader(JwtAlg_HS256); + header = _t809; + const char* _t810; + _t810 = Jwt_Encode(header, payloadJson, JwtAlg_HS256, secret); + return _t810; +} + +const char* Jwt_EncodeHS384(const char* payloadJson, const char* secret) { + const char* header; + const char* _t811; + _t811 = Jwt_MakeHeader(JwtAlg_HS384); + header = _t811; + const char* _t812; + _t812 = Jwt_Encode(header, payloadJson, JwtAlg_HS384, secret); + return _t812; +} + +const char* Jwt_EncodeHS512(const char* payloadJson, const char* secret) { + const char* header; + const char* _t813; + _t813 = Jwt_MakeHeader(JwtAlg_HS512); + header = _t813; + const char* _t814; + _t814 = Jwt_Encode(header, payloadJson, JwtAlg_HS512, secret); + return _t814; +} + +const char* Jwt_EncodeRS256(const char* payloadJson, const char* pemPrivateKey) { + const char* header; + const char* _t815; + _t815 = Jwt_MakeHeader(JwtAlg_RS256); + header = _t815; + const char* _t816; + _t816 = Jwt_Encode(header, payloadJson, JwtAlg_RS256, pemPrivateKey); + return _t816; +} + +const char* Jwt_EncodeES256(const char* payloadJson, const char* pemPrivateKey) { + const char* header; + const char* _t817; + _t817 = Jwt_MakeHeader(JwtAlg_ES256); + header = _t817; + const char* _t818; + _t818 = Jwt_Encode(header, payloadJson, JwtAlg_ES256, pemPrivateKey); + return _t818; +} + +const char* Jwt_EncodeEdDSA(const char* payloadJson, const char* rawPrivKey) { + const char* header; + const char* _t819; + _t819 = Jwt_MakeHeader(JwtAlg_EdDSA); + header = _t819; + const char* _t820; + _t820 = Jwt_Encode(header, payloadJson, JwtAlg_EdDSA, rawPrivKey); + return _t820; +} + +const char* Ecdsa_SignP256(const char* pemPrivateKey, const char* data) { + int _t822; + int _t824; + void* _t825; + int siglen; + siglen = 0; + unsigned int _t821; + _t821 = String_Len(pemPrivateKey); + _t822 = (int)_t821; + unsigned int _t823; + _t823 = String_Len(data); + _t824 = (int)_t823; + _t825 = &siglen; + const char* _t826; + _t826 = bux_ecdsa_sign_p256(pemPrivateKey, _t822, data, _t824, _t825); + return _t826; +} + +const char* Ecdsa_SignP256Base64(const char* pemPrivateKey, const char* data) { + int _t829; + const char* raw; + const char* _t827; + _t827 = Ecdsa_SignP256(pemPrivateKey, data); + raw = _t827; + unsigned int _t828; + _t828 = String_Len(raw); + _t829 = (int)_t828; + const char* _t830; + _t830 = bux_base64_encode(raw, _t829); + return _t830; +} + +bool Ecdsa_VerifyP256(const char* pemPublicKey, const char* data, const char* signature) { + int _t832; + int _t834; + int _t836; + int _t838; + int r; + unsigned int _t831; + _t831 = String_Len(pemPublicKey); + _t832 = (int)_t831; + unsigned int _t833; + _t833 = String_Len(data); + _t834 = (int)_t833; + unsigned int _t835; + _t835 = String_Len(signature); + _t836 = (int)_t835; + int _t837; + _t837 = bux_ecdsa_verify_p256(pemPublicKey, _t832, data, _t834, signature, _t836); + r = _t837; + _t838 = (r == 1); + return _t838; +} + +bool Ecdsa_VerifyP256Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { + int _t840; + void* _t841; + int outlen; + outlen = 0; + const char* sig; + unsigned int _t839; + _t839 = String_Len(signatureB64); + _t840 = (int)_t839; + _t841 = &outlen; + const char* _t842; + _t842 = bux_base64_decode(signatureB64, _t840, _t841); + sig = _t842; + bool _t843; + _t843 = Ecdsa_VerifyP256(pemPublicKey, data, sig); + return _t843; +} + +const char* Ecdsa_SignP384(const char* pemPrivateKey, const char* data) { + int _t845; + int _t847; + void* _t848; + int siglen; + siglen = 0; + unsigned int _t844; + _t844 = String_Len(pemPrivateKey); + _t845 = (int)_t844; + unsigned int _t846; + _t846 = String_Len(data); + _t847 = (int)_t846; + _t848 = &siglen; + const char* _t849; + _t849 = bux_ecdsa_sign_p384(pemPrivateKey, _t845, data, _t847, _t848); + return _t849; +} + +const char* Ecdsa_SignP384Base64(const char* pemPrivateKey, const char* data) { + int _t852; + const char* raw; + const char* _t850; + _t850 = Ecdsa_SignP384(pemPrivateKey, data); + raw = _t850; + unsigned int _t851; + _t851 = String_Len(raw); + _t852 = (int)_t851; + const char* _t853; + _t853 = bux_base64_encode(raw, _t852); + return _t853; +} + +bool Ecdsa_VerifyP384(const char* pemPublicKey, const char* data, const char* signature) { + int _t855; + int _t857; + int _t859; + int _t861; + int r; + unsigned int _t854; + _t854 = String_Len(pemPublicKey); + _t855 = (int)_t854; + unsigned int _t856; + _t856 = String_Len(data); + _t857 = (int)_t856; + unsigned int _t858; + _t858 = String_Len(signature); + _t859 = (int)_t858; + int _t860; + _t860 = bux_ecdsa_verify_p384(pemPublicKey, _t855, data, _t857, signature, _t859); + r = _t860; + _t861 = (r == 1); + return _t861; +} + +bool Ecdsa_VerifyP384Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { + int _t863; + void* _t864; + int outlen; + outlen = 0; + const char* sig; + unsigned int _t862; + _t862 = String_Len(signatureB64); + _t863 = (int)_t862; + _t864 = &outlen; + const char* _t865; + _t865 = bux_base64_decode(signatureB64, _t863, _t864); + sig = _t865; + bool _t866; + _t866 = Ecdsa_VerifyP384(pemPublicKey, data, sig); + return _t866; +} + +bool Ed25519_Keypair(void* pubKey, void* privKey) { + int _t868; + int r; + int _t867; + _t867 = bux_ed25519_keypair(pubKey, privKey); + r = _t867; + _t868 = (r == 1); + return _t868; +} + +const char* Ed25519_KeypairBase64(void) { + unsigned int _t869; + unsigned int _t871; + int _t874; + const char* _t875; + const char* _t877; + void* pubBuf; + _t869 = (unsigned int)ED25519_PUBKEY_SIZE; + void* _t870; + _t870 = Alloc(_t869); + pubBuf = _t870; + void* priv; + _t871 = (unsigned int)ED25519_PRIVKEY_SIZE; + void* _t872; + _t872 = Alloc(_t871); + priv = _t872; + int _t873; + _t873 = bux_ed25519_keypair(pubBuf, priv); + _t874 = (_t873 != 1); + if (!_t874) goto endif300; + { + Free(pubBuf); + Free(priv); + return ""; + } + endif300:; + const char* pubB64; + _t875 = (const char*)pubBuf; + const char* _t876; + _t876 = bux_base64_encode(_t875, ED25519_PUBKEY_SIZE); + pubB64 = _t876; + const char* privB64; + _t877 = (const char*)priv; + const char* _t878; + _t878 = bux_base64_encode(_t877, ED25519_PRIVKEY_SIZE); + privB64 = _t878; + Free(pubBuf); + Free(priv); + const char* pair; + const char* _t879; + _t879 = String_Concat(pubB64, ":"); + pair = _t879; + const char* _t880; + _t880 = String_Concat(pair, privB64); + return _t880; +} + +const char* Ed25519_Sign(const char* privKey, const char* data) { + unsigned int _t881; + int _t884; + int _t886; + const char* _t887; + void* sig; + _t881 = (unsigned int)ED25519_SIG_SIZE; + void* _t882; + _t882 = Alloc(_t881); + sig = _t882; + unsigned int _t883; + _t883 = String_Len(data); + _t884 = (int)_t883; + int _t885; + _t885 = bux_ed25519_sign(privKey, data, _t884, sig); + _t886 = (_t885 != 1); + if (!_t886) goto endif302; + { + Free(sig); + return ""; + } + endif302:; + _t887 = (const char*)sig; + return _t887; +} + +const char* Ed25519_SignBase64(const char* privKey, const char* data) { + int _t890; + const char* sig; + const char* _t888; + _t888 = Ed25519_Sign(privKey, data); + sig = _t888; + unsigned int _t889; + _t889 = String_Len(sig); + _t890 = (_t889 == 0); + if (!_t890) goto endif304; + { + return ""; + } + endif304:; + const char* _t891; + _t891 = bux_base64_encode(sig, ED25519_SIG_SIZE); + return _t891; +} + +bool Ed25519_Verify(const char* pubKey, const char* signature, const char* data) { + int _t893; + int _t895; + int r; + unsigned int _t892; + _t892 = String_Len(data); + _t893 = (int)_t892; + int _t894; + _t894 = bux_ed25519_verify(pubKey, signature, data, _t893); + r = _t894; + _t895 = (r == 1); + return _t895; +} + +bool Ed25519_VerifyBase64(const char* pubKey, const char* signatureB64, const char* data) { + int _t897; + void* _t898; + int _t900; + int outlen; + outlen = 0; + const char* sig; + unsigned int _t896; + _t896 = String_Len(signatureB64); + _t897 = (int)_t896; + _t898 = &outlen; + const char* _t899; + _t899 = bux_base64_decode(signatureB64, _t897, _t898); + sig = _t899; + _t900 = (outlen != ED25519_SIG_SIZE); + if (!_t900) goto endif306; + { + return 0; + } + endif306:; + bool _t901; + _t901 = Ed25519_Verify(pubKey, sig, data); + return _t901; +} + +const char* Rsa_SignSha256(const char* pemPrivateKey, const char* data) { + int _t903; + int _t905; + void* _t906; + int siglen; + siglen = 0; + unsigned int _t902; + _t902 = String_Len(pemPrivateKey); + _t903 = (int)_t902; + unsigned int _t904; + _t904 = String_Len(data); + _t905 = (int)_t904; + _t906 = &siglen; + const char* _t907; + _t907 = bux_rsa_sign_sha256(pemPrivateKey, _t903, data, _t905, _t906); + return _t907; +} + +const char* Rsa_SignSha384(const char* pemPrivateKey, const char* data) { + int _t909; + int _t911; + void* _t912; + int siglen; + siglen = 0; + unsigned int _t908; + _t908 = String_Len(pemPrivateKey); + _t909 = (int)_t908; + unsigned int _t910; + _t910 = String_Len(data); + _t911 = (int)_t910; + _t912 = &siglen; + const char* _t913; + _t913 = bux_rsa_sign_sha384(pemPrivateKey, _t909, data, _t911, _t912); + return _t913; +} + +const char* Rsa_SignSha512(const char* pemPrivateKey, const char* data) { + int _t915; + int _t917; + void* _t918; + int siglen; + siglen = 0; + unsigned int _t914; + _t914 = String_Len(pemPrivateKey); + _t915 = (int)_t914; + unsigned int _t916; + _t916 = String_Len(data); + _t917 = (int)_t916; + _t918 = &siglen; + const char* _t919; + _t919 = bux_rsa_sign_sha512(pemPrivateKey, _t915, data, _t917, _t918); + return _t919; +} + +const char* Rsa_SignSha256Base64(const char* pemPrivateKey, const char* data) { + int _t922; + const char* raw; + const char* _t920; + _t920 = Rsa_SignSha256(pemPrivateKey, data); + raw = _t920; + unsigned int _t921; + _t921 = String_Len(raw); + _t922 = (int)_t921; + const char* _t923; + _t923 = bux_base64_encode(raw, _t922); + return _t923; +} + +const char* Rsa_SignSha384Base64(const char* pemPrivateKey, const char* data) { + int _t926; + const char* raw; + const char* _t924; + _t924 = Rsa_SignSha384(pemPrivateKey, data); + raw = _t924; + unsigned int _t925; + _t925 = String_Len(raw); + _t926 = (int)_t925; + const char* _t927; + _t927 = bux_base64_encode(raw, _t926); + return _t927; +} + +const char* Rsa_SignSha512Base64(const char* pemPrivateKey, const char* data) { + int _t930; + const char* raw; + const char* _t928; + _t928 = Rsa_SignSha512(pemPrivateKey, data); + raw = _t928; + unsigned int _t929; + _t929 = String_Len(raw); + _t930 = (int)_t929; + const char* _t931; + _t931 = bux_base64_encode(raw, _t930); + return _t931; +} + +bool Rsa_VerifySha256(const char* pemPublicKey, const char* data, const char* signature) { + int _t933; + int _t935; + int _t937; + int _t939; + int r; + unsigned int _t932; + _t932 = String_Len(pemPublicKey); + _t933 = (int)_t932; + unsigned int _t934; + _t934 = String_Len(data); + _t935 = (int)_t934; + unsigned int _t936; + _t936 = String_Len(signature); + _t937 = (int)_t936; + int _t938; + _t938 = bux_rsa_verify_sha256(pemPublicKey, _t933, data, _t935, signature, _t937); + r = _t938; + _t939 = (r == 1); + return _t939; +} + +bool Rsa_VerifySha384(const char* pemPublicKey, const char* data, const char* signature) { + int _t941; + int _t943; + int _t945; + int _t947; + int r; + unsigned int _t940; + _t940 = String_Len(pemPublicKey); + _t941 = (int)_t940; + unsigned int _t942; + _t942 = String_Len(data); + _t943 = (int)_t942; + unsigned int _t944; + _t944 = String_Len(signature); + _t945 = (int)_t944; + int _t946; + _t946 = bux_rsa_verify_sha384(pemPublicKey, _t941, data, _t943, signature, _t945); + r = _t946; + _t947 = (r == 1); + return _t947; +} + +bool Rsa_VerifySha512(const char* pemPublicKey, const char* data, const char* signature) { + int _t949; + int _t951; + int _t953; + int _t955; + int r; + unsigned int _t948; + _t948 = String_Len(pemPublicKey); + _t949 = (int)_t948; + unsigned int _t950; + _t950 = String_Len(data); + _t951 = (int)_t950; + unsigned int _t952; + _t952 = String_Len(signature); + _t953 = (int)_t952; + int _t954; + _t954 = bux_rsa_verify_sha512(pemPublicKey, _t949, data, _t951, signature, _t953); + r = _t954; + _t955 = (r == 1); + return _t955; +} + +bool Rsa_VerifySha256Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { + int _t957; + void* _t958; + int outlen; + outlen = 0; + const char* sig; + unsigned int _t956; + _t956 = String_Len(signatureB64); + _t957 = (int)_t956; + _t958 = &outlen; + const char* _t959; + _t959 = bux_base64_decode(signatureB64, _t957, _t958); + sig = _t959; + bool _t960; + _t960 = Rsa_VerifySha256(pemPublicKey, data, sig); + return _t960; +} + +bool Rsa_VerifySha384Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { + int _t962; + void* _t963; + int outlen; + outlen = 0; + const char* sig; + unsigned int _t961; + _t961 = String_Len(signatureB64); + _t962 = (int)_t961; + _t963 = &outlen; + const char* _t964; + _t964 = bux_base64_decode(signatureB64, _t962, _t963); + sig = _t964; + bool _t965; + _t965 = Rsa_VerifySha384(pemPublicKey, data, sig); + return _t965; +} + +bool Rsa_VerifySha512Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { + int _t967; + void* _t968; + int outlen; + outlen = 0; + const char* sig; + unsigned int _t966; + _t966 = String_Len(signatureB64); + _t967 = (int)_t966; + _t968 = &outlen; + const char* _t969; + _t969 = bux_base64_decode(signatureB64, _t967, _t968); + sig = _t969; + bool _t970; + _t970 = Rsa_VerifySha512(pemPublicKey, data, sig); + return _t970; +} + +const char* Name(Color c) { + int _t971; + int _t972; + const char* __tmp_11; + _t971 = (c == Color_Red); + if (!_t971) goto else307; + __tmp_11 = "red"; + goto endif308; + else307:; + _t972 = (c == Color_Green); + if (!_t972) goto endif310; + __tmp_11 = "green"; + endif310:; + endif308:; + return __tmp_11; +} + +int Main(void) { + Record _t976; + void* _t978; + void* _t980; + void* _t982; + int _t985; + Record _t986; + int _t990; + Box box; + Array_Record _t973; + _t973 = Array_New_Record(4); + box.items = _t973; + Array_Record _t974; + _t974 = box.items; + void* _t975; + _t975 = &(box.items); + _t976 = (Record){.name = "x", .value = 10}; + Array_Push_Record(_t975, _t976); + { + Array_Record __tmp_13; + Array_Record _t977; + _t977 = box.items; + __tmp_13 = _t977; + Iter_Record __iter_it_11; + _t978 = &__tmp_13; + Iter_Record _t979; + _t979 = Array_Iter_Record(_t978); + __iter_it_11 = _t979; + while311:; + _t980 = &__iter_it_11; + bool _t981; + _t981 = Iter_HasNext_Record(_t980); + if (!_t981) goto wend312; + Record it; + _t982 = &__iter_it_11; + Record _t983; + _t983 = Iter_Next_Record(_t982); + it = _t983; + { + int _t984; + _t984 = it.value; + _t985 = (_t984 == 10); + if (!_t985) goto endif314; + { + return 0; + } + endif314:; + } + goto while311; + wend312:; + } + Payload r; + r.tag = Payload_Ok; + _t986 = (Record){.name = "y", .value = 20}; + r.data.Ok_0 = _t986; + Payload_Data _t987; + _t987 = r.data; + Record _t988; + _t988 = _t987.Ok_0; + int _t989; + _t989 = _t988.value; + _t990 = (_t989 == 20); + if (!_t990) goto endif316; + { + return 0; + } + endif316:; + return 1; +} + +Array_Record Array_New_Record(unsigned int cap) { + int _t991; + Record* _t993; + Array_Record _t994; + Record* data; + /* sizeof(Record) */ + _t991 = cap * sizeof(Record); + void* _t992; + _t992 = bux_alloc(_t991); + _t993 = (Record*)_t992; + data = _t993; + _t994 = (Array_Record){.data = data, .len = 0, .cap = cap}; + return _t994; +} + +void Array_Push_Record(Array_Record* self, Record value) { + int _t997; + int _t999; + void* _t1001; + int _t1003; + Record* _t1005; + int _t1009; + unsigned int _t995; + _t995 = self->len; + unsigned int _t996; + _t996 = self->cap; + _t997 = (_t995 >= _t996); + if (!_t997) goto endif318; + { + unsigned int _t998; + _t998 = self->cap; + _t999 = _t998 * 2; + self->cap = _t999; + Record* _t1000; + _t1000 = self->data; + _t1001 = (void*)_t1000; + unsigned int _t1002; + _t1002 = self->cap; + /* sizeof(Record) */ + _t1003 = _t1002 * sizeof(Record); + void* _t1004; + _t1004 = bux_realloc(_t1001, _t1003); + _t1005 = (Record*)_t1004; + self->data = _t1005; + } + endif318:; + Record* _t1006; + _t1006 = self->data; + unsigned int _t1007; + _t1007 = self->len; + _t1006[_t1007] = value; + unsigned int _t1008; + _t1008 = self->len; + _t1009 = _t1008 + 1; + self->len = _t1009; +} + +Iter_Record Array_Iter_Record(Array_Record* arr) { + Iter_Record _t1012; + Record* _t1010; + _t1010 = arr->data; + unsigned int _t1011; + _t1011 = arr->len; + _t1012 = (Iter_Record){.data = _t1010, .len = _t1011, .pos = 0}; + return _t1012; +} + +bool Iter_HasNext_Record(Iter_Record* it) { + int _t1015; + unsigned int _t1013; + _t1013 = it->pos; + unsigned int _t1014; + _t1014 = it->len; + _t1015 = (_t1013 < _t1014); + return _t1015; +} + +Record Iter_Next_Record(Iter_Record* it) { + int _t1020; + Record val; + Record* _t1016; + _t1016 = it->data; + unsigned int _t1017; + _t1017 = it->pos; + Record _t1018; + _t1018 = _t1016[_t1017]; + val = _t1018; + unsigned int _t1019; + _t1019 = it->pos; + _t1020 = _t1019 + 1; + it->pos = _t1020; + return val; +} + +/* C entry point wrapper */ +extern int g_argc; +extern char** g_argv; +int main(int argc, char** argv) { + g_argc = argc; + g_argv = argv; + return Main(); +} diff --git a/tests/golden/modern_features/src/Main.bux b/tests/golden/modern_features/src/Main.bux new file mode 100644 index 0000000..d7d80a4 --- /dev/null +++ b/tests/golden/modern_features/src/Main.bux @@ -0,0 +1,49 @@ +module Main { + +import Std::Array::{Array, Array_New, Array_Push}; + +struct Record { + name: String; + value: int; +} + +struct Box { + items: Array; +} + +enum Payload { + Ok(Record), + Err(String), +} + +enum Color { Red, Green } + +func Name(c: Color) -> String { + match c { + Color::Red => "red", + Color::Green => "green", + } +} + +func Main() -> int { + var box: Box; + box.items = Array_New(4); + Array_Push(&box.items, Record { name: "x", value: 10 }); + + for it in box.items { + if it.value == 10 { + return 0; + } + } + + var r: Payload; + r.tag = Payload_Ok; + r.data.Ok_0 = Record { name: "y", value: 20 }; + if r.data.Ok_0.value == 20 { + return 0; + } + + return 1; +} + +} diff --git a/tests/golden/strings/expected.c b/tests/golden/strings/expected.c index 6e072c6..56f4e70 100644 --- a/tests/golden/strings/expected.c +++ b/tests/golden/strings/expected.c @@ -198,6 +198,34 @@ extern const char* bux_base64_decode(const char* data, int len, int* outlen); #define ED25519_PRIVKEY_SIZE 32 #define ED25519_SIG_SIZE 64 +typedef struct Channel_float64 { + void* handle; +} Channel_float64; + +typedef struct TaskHandle { + void* handle; +} TaskHandle; + +typedef struct RwLock { + void* handle; +} RwLock; + +typedef struct Channel_int { + void* handle; +} Channel_int; + +typedef enum { + JwtAlg_HS256, + JwtAlg_HS384, + JwtAlg_HS512, + JwtAlg_RS256, + JwtAlg_RS384, + JwtAlg_RS512, + JwtAlg_ES256, + JwtAlg_ES384, + JwtAlg_EdDSA +} JwtAlg; + typedef enum { Result_Ok, Result_Err @@ -227,31 +255,6 @@ typedef struct { Option_Data data; } Option; -typedef enum { - JwtAlg_HS256, - JwtAlg_HS384, - JwtAlg_HS512, - JwtAlg_RS256, - JwtAlg_RS384, - JwtAlg_RS512, - JwtAlg_ES256, - JwtAlg_ES384, - JwtAlg_EdDSA -} JwtAlg; - - -typedef struct TaskHandle { - void* handle; -} TaskHandle; - -typedef struct Mutex { - void* handle; -} Mutex; - -typedef struct RwLock { - void* handle; -} RwLock; - typedef struct JsonValue { int tag; bool boolVal; @@ -266,6 +269,14 @@ typedef struct JsonValue { unsigned int objCap; } JsonValue; +typedef struct Mutex { + void* handle; +} Mutex; + +typedef struct StringBuilder { + void* handle; +} StringBuilder; + typedef struct JsonParser { const char* src; unsigned int pos; @@ -273,18 +284,6 @@ typedef struct JsonParser { const char* error; } JsonParser; -typedef struct StringBuilder { - void* handle; -} StringBuilder; - -typedef struct Channel_int { - void* handle; -} Channel_int; - -typedef struct Channel_float64 { - void* handle; -} Channel_float64; - bool DirExists(const char* path); bool Mkdir(const char* path); const char** ListDir(const char* dir, const char* ext, int* count); @@ -866,7 +865,7 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { tmplLen = _t60; while1:; _t61 = (i < tmplLen); - if (!_t61) goto wend3; + if (!_t61) goto wend2; { const char* ch; const char* _t62; @@ -874,13 +873,13 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { ch = _t62; bool _t63; _t63 = String_Eq(ch, "{"); - if (!_t63) goto endif5; + if (!_t63) goto endif4; { unsigned int digitIdx; _t64 = i + 1; digitIdx = _t64; _t65 = (digitIdx < tmplLen); - if (!_t65) goto endif7; + if (!_t65) goto endif6; { const char* digitCh; const char* _t66; @@ -892,22 +891,22 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { d = _t67; bool __and_tmp_0; _t68 = (d >= 0); - if (!_t68) goto else8; + if (!_t68) goto else7; _t69 = (int64_t)argCount; _t70 = (d < _t69); *(bool*)&__and_tmp_0 = _t70; - goto endif9; - else8:; + goto endif8; + else7:; *(bool*)&__and_tmp_0 = 0; - endif9:; + endif8:; bool _t71; _t71 = *(bool*)&__and_tmp_0; - if (!_t71) goto endif11; + if (!_t71) goto endif10; { _t72 = i + 2; i = _t72; _t73 = (i < tmplLen); - if (!_t73) goto endif13; + if (!_t73) goto endif12; { const char* closeCh; const char* _t74; @@ -915,7 +914,7 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { closeCh = _t74; bool _t75; _t75 = String_Eq(closeCh, "}"); - if (!_t75) goto endif15; + if (!_t75) goto endif14; { _t76 = i + 1; i = _t76; @@ -928,22 +927,22 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { StringBuilder_Append(_t79, argStr); goto while1; } - endif15:; + endif14:; } - endif13:; + endif12:; } - endif11:; + endif10:; } - endif7:; + endif6:; } - endif5:; + endif4:; _t80 = &sb; StringBuilder_Append(_t80, ch); _t81 = i + 1; i = _t81; } goto while1; - wend3:; + wend2:; _t82 = &sb; const char* _t83; _t83 = StringBuilder_Build(_t82); @@ -951,276 +950,276 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { } const char* Fmt_Fmt1(const char* tmpl, const char* a1) { - const char** _t86; + const char** _t85; const char** args; /* sizeof(const char*) */ - void* _t85; - _t85 = bux_alloc(sizeof(const char*)); - _t86 = (const char**)_t85; - args = _t86; + void* _t84; + _t84 = bux_alloc(sizeof(const char*)); + _t85 = (const char**)_t84; + args = _t85; args[0] = a1; - const char* _t87; - _t87 = Fmt_Format(tmpl, args, 1); - return _t87; + const char* _t86; + _t86 = Fmt_Format(tmpl, args, 1); + return _t86; } const char* Fmt_FmtInt(const char* tmpl, int64_t val) { const char* s; + const char* _t87; + _t87 = String_FromInt(val); + s = _t87; const char* _t88; - _t88 = String_FromInt(val); - s = _t88; - const char* _t89; - _t89 = Fmt_Fmt1(tmpl, s); - return _t89; + _t88 = Fmt_Fmt1(tmpl, s); + return _t88; } const char* Fmt_FmtBool(const char* tmpl, bool val) { const char* s; + const char* _t89; + _t89 = String_FromBool(val); + s = _t89; const char* _t90; - _t90 = String_FromBool(val); - s = _t90; - const char* _t91; - _t91 = Fmt_Fmt1(tmpl, s); - return _t91; + _t90 = Fmt_Fmt1(tmpl, s); + return _t90; } const char* Fmt_FmtFloat(const char* tmpl, double val) { const char* s; + const char* _t91; + _t91 = String_FromFloat(val); + s = _t91; const char* _t92; - _t92 = String_FromFloat(val); - s = _t92; - const char* _t93; - _t93 = Fmt_Fmt1(tmpl, s); - return _t93; + _t92 = Fmt_Fmt1(tmpl, s); + return _t92; } const char* Fmt_Fmt2(const char* tmpl, const char* a1, const char* a2) { - int _t95; - const char** _t97; + int _t93; + const char** _t95; const char** args; /* sizeof(const char*) */ - _t95 = 2 * sizeof(const char*); - void* _t96; - _t96 = bux_alloc(_t95); - _t97 = (const char**)_t96; - args = _t97; + _t93 = 2 * sizeof(const char*); + void* _t94; + _t94 = bux_alloc(_t93); + _t95 = (const char**)_t94; + args = _t95; args[0] = a1; args[1] = a2; - const char* _t98; - _t98 = Fmt_Format(tmpl, args, 2); - return _t98; + const char* _t96; + _t96 = Fmt_Format(tmpl, args, 2); + return _t96; } const char* Fmt_Fmt3(const char* tmpl, const char* a1, const char* a2, const char* a3) { - int _t100; - const char** _t102; + int _t97; + const char** _t99; const char** args; /* sizeof(const char*) */ - _t100 = 3 * sizeof(const char*); - void* _t101; - _t101 = bux_alloc(_t100); - _t102 = (const char**)_t101; - args = _t102; + _t97 = 3 * sizeof(const char*); + void* _t98; + _t98 = bux_alloc(_t97); + _t99 = (const char**)_t98; + args = _t99; args[0] = a1; args[1] = a2; args[2] = a3; - const char* _t103; - _t103 = Fmt_Format(tmpl, args, 3); - return _t103; + const char* _t100; + _t100 = Fmt_Format(tmpl, args, 3); + return _t100; } const char* Crypto_Sha256(const char* data) { - int _t105; - void* _t107; + int _t102; + void* _t104; int len; - unsigned int _t104; - _t104 = String_Len(data); - _t105 = (int)_t104; - len = _t105; + unsigned int _t101; + _t101 = String_Len(data); + _t102 = (int)_t101; + len = _t102; void* hashBuf; - void* _t106; - _t106 = Alloc(32); - hashBuf = _t106; + void* _t103; + _t103 = Alloc(32); + hashBuf = _t103; bux_sha256(data, len, hashBuf); const char* result; - _t107 = (void*)hashBuf; - const char* _t108; - _t108 = bux_bytes_to_hex(_t107, 32); - result = _t108; + _t104 = (void*)hashBuf; + const char* _t105; + _t105 = bux_bytes_to_hex(_t104, 32); + result = _t105; Free(hashBuf); return result; } const char* Crypto_HmacSha256(const char* key, const char* message) { - int _t110; - int _t112; - void* _t114; + int _t107; + int _t109; + void* _t111; int keylen; - unsigned int _t109; - _t109 = String_Len(key); - _t110 = (int)_t109; - keylen = _t110; + unsigned int _t106; + _t106 = String_Len(key); + _t107 = (int)_t106; + keylen = _t107; int msglen; - unsigned int _t111; - _t111 = String_Len(message); - _t112 = (int)_t111; - msglen = _t112; + unsigned int _t108; + _t108 = String_Len(message); + _t109 = (int)_t108; + msglen = _t109; void* hmacBuf; - void* _t113; - _t113 = Alloc(32); - hmacBuf = _t113; + void* _t110; + _t110 = Alloc(32); + hmacBuf = _t110; bux_hmac_sha256(key, keylen, message, msglen, hmacBuf); const char* result; - _t114 = (void*)hmacBuf; - const char* _t115; - _t115 = bux_bytes_to_hex(_t114, 32); - result = _t115; + _t111 = (void*)hmacBuf; + const char* _t112; + _t112 = bux_bytes_to_hex(_t111, 32); + result = _t112; Free(hmacBuf); return result; } const char* Crypto_RandomBytes(int n) { - int _t116; - unsigned int _t117; - int _t120; - const char* _t121; - _t116 = (n <= 0); - if (!_t116) goto endif17; + int _t113; + unsigned int _t114; + int _t117; + const char* _t118; + _t113 = (n <= 0); + if (!_t113) goto endif16; { return ""; } - endif17:; + endif16:; void* buf; - _t117 = (unsigned int)n; - void* _t118; - _t118 = Alloc(_t117); - buf = _t118; - int _t119; - _t119 = bux_random_bytes(buf, n); - _t120 = (_t119 != 1); - if (!_t120) goto endif19; + _t114 = (unsigned int)n; + void* _t115; + _t115 = Alloc(_t114); + buf = _t115; + int _t116; + _t116 = bux_random_bytes(buf, n); + _t117 = (_t116 != 1); + if (!_t117) goto endif18; { Free(buf); return ""; } - endif19:; + endif18:; const char* result; - _t121 = (const char*)buf; - const char* _t122; - _t122 = bux_base64_encode(_t121, n); - result = _t122; + _t118 = (const char*)buf; + const char* _t119; + _t119 = bux_base64_encode(_t118, n); + result = _t119; Free(buf); return result; } const char* Crypto_Base64Encode(const char* s) { - int _t124; - unsigned int _t123; - _t123 = String_Len(s); - _t124 = (int)_t123; - const char* _t125; - _t125 = bux_base64_encode(s, _t124); - return _t125; + int _t121; + unsigned int _t120; + _t120 = String_Len(s); + _t121 = (int)_t120; + const char* _t122; + _t122 = bux_base64_encode(s, _t121); + return _t122; } const char* Crypto_HmacSha256Raw(const char* key, const char* message) { - int _t127; - int _t129; - const char* _t131; + int _t124; + int _t126; + const char* _t128; int keylen; - unsigned int _t126; - _t126 = String_Len(key); - _t127 = (int)_t126; - keylen = _t127; + unsigned int _t123; + _t123 = String_Len(key); + _t124 = (int)_t123; + keylen = _t124; int msglen; - unsigned int _t128; - _t128 = String_Len(message); - _t129 = (int)_t128; - msglen = _t129; + unsigned int _t125; + _t125 = String_Len(message); + _t126 = (int)_t125; + msglen = _t126; void* hmacBuf; - void* _t130; - _t130 = Alloc(32); - hmacBuf = _t130; + void* _t127; + _t127 = Alloc(32); + hmacBuf = _t127; bux_hmac_sha256(key, keylen, message, msglen, hmacBuf); const char* result; - _t131 = (const char*)hmacBuf; - const char* _t132; - _t132 = bux_base64_encode(_t131, 32); - result = _t132; + _t128 = (const char*)hmacBuf; + const char* _t129; + _t129 = bux_base64_encode(_t128, 32); + result = _t129; Free(hmacBuf); return result; } const char* Crypto_Base64Decode(const char* s) { - int _t134; - void* _t135; + int _t131; + void* _t132; int outlen; outlen = 0; - unsigned int _t133; - _t133 = String_Len(s); - _t134 = (int)_t133; - _t135 = &outlen; - const char* _t136; - _t136 = bux_base64_decode(s, _t134, _t135); - return _t136; + unsigned int _t130; + _t130 = String_Len(s); + _t131 = (int)_t130; + _t132 = &outlen; + const char* _t133; + _t133 = bux_base64_decode(s, _t131, _t132); + return _t133; } Mutex Mutex_New(void) { - Mutex _t138; - void* _t137; - _t137 = bux_mutex_new(); - _t138 = (Mutex){.handle = _t137}; - return _t138; + Mutex _t135; + void* _t134; + _t134 = bux_mutex_new(); + _t135 = (Mutex){.handle = _t134}; + return _t135; } void Mutex_Lock(Mutex* m) { - void* _t139; - _t139 = m->handle; - bux_mutex_lock(_t139); + void* _t136; + _t136 = m->handle; + bux_mutex_lock(_t136); } void Mutex_Unlock(Mutex* m) { - void* _t140; - _t140 = m->handle; - bux_mutex_unlock(_t140); + void* _t137; + _t137 = m->handle; + bux_mutex_unlock(_t137); } void Mutex_Free(Mutex* m) { - void* _t141; - _t141 = m->handle; - bux_mutex_free(_t141); + void* _t138; + _t138 = m->handle; + bux_mutex_free(_t138); } RwLock RwLock_New(void) { - RwLock _t143; - void* _t142; - _t142 = bux_rwlock_new(); - _t143 = (RwLock){.handle = _t142}; - return _t143; + RwLock _t140; + void* _t139; + _t139 = bux_rwlock_new(); + _t140 = (RwLock){.handle = _t139}; + return _t140; } void RwLock_ReadLock(RwLock* rw) { - void* _t144; - _t144 = rw->handle; - bux_rwlock_rdlock(_t144); + void* _t141; + _t141 = rw->handle; + bux_rwlock_rdlock(_t141); } void RwLock_WriteLock(RwLock* rw) { - void* _t145; - _t145 = rw->handle; - bux_rwlock_wrlock(_t145); + void* _t142; + _t142 = rw->handle; + bux_rwlock_wrlock(_t142); } void RwLock_Unlock(RwLock* rw) { - void* _t146; - _t146 = rw->handle; - bux_rwlock_unlock(_t146); + void* _t143; + _t143 = rw->handle; + bux_rwlock_unlock(_t143); } void RwLock_Free(RwLock* rw) { - void* _t147; - _t147 = rw->handle; - bux_rwlock_free(_t147); + void* _t144; + _t144 = rw->handle; + bux_rwlock_free(_t144); } void Test_Exit(int code) { @@ -1228,15 +1227,15 @@ void Test_Exit(int code) { } void Test_Assert(bool cond) { - int _t148; - _t148 = (int)cond; - bux_assert(_t148, "", 0, ""); + int _t145; + _t145 = (int)cond; + bux_assert(_t145, "", 0, ""); } void Test_AssertEqInt(int a, int b) { - int _t149; - _t149 = (a != b); - if (!_t149) goto endif21; + int _t146; + _t146 = (a != b); + if (!_t146) goto endif20; { PrintLine("ASSERT_EQ FAILED:"); PrintInt(a); @@ -1244,27 +1243,27 @@ void Test_AssertEqInt(int a, int b) { PrintInt(b); bux_exit(1); } - endif21:; + endif20:; } void Test_AssertTrue(bool cond) { - int _t150; - _t150 = !cond; - if (!_t150) goto endif23; + int _t147; + _t147 = !cond; + if (!_t147) goto endif22; { PrintLine("ASSERT_TRUE FAILED"); bux_exit(1); } - endif23:; + endif22:; } void Test_AssertFalse(bool cond) { - if (!cond) goto endif25; + if (!cond) goto endif24; { PrintLine("ASSERT_FALSE FAILED"); bux_exit(1); } - endif25:; + endif24:; } void Test_Fail(const char* msg) { @@ -1274,735 +1273,744 @@ void Test_Fail(const char* msg) { } Result Result_NewOk(int value) { - Result _t151; + Result _t148; Result r; - _t151 = (Result){.tag = Result_Ok}; - r = _t151; + _t148 = (Result){.tag = Result_Ok}; + r = _t148; r.data.Ok_0 = value; return r; } Result Result_NewErr(const char* msg) { - Result _t152; + Result _t149; Result r; - _t152 = (Result){.tag = Result_Err}; - r = _t152; + _t149 = (Result){.tag = Result_Err}; + r = _t149; r.data.Err_0 = msg; return r; } bool Result_IsOk(Result r) { - int _t154; - Result_Tag _t153; - _t153 = r.tag; - _t154 = (_t153 == Result_Ok); - return _t154; + int _t151; + Result_Tag _t150; + _t150 = r.tag; + _t151 = (_t150 == Result_Ok); + return _t151; } bool Result_IsErr(Result r) { - int _t156; - Result_Tag _t155; - _t155 = r.tag; - _t156 = (_t155 == Result_Err); - return _t156; + int _t153; + Result_Tag _t152; + _t152 = r.tag; + _t153 = (_t152 == Result_Err); + return _t153; } int Result_Unwrap(Result r) { - int _t158; - Result_Tag _t157; - _t157 = r.tag; - _t158 = (_t157 != Result_Ok); - if (!_t158) goto endif27; + int _t155; + Result_Tag _t154; + _t154 = r.tag; + _t155 = (_t154 != Result_Ok); + if (!_t155) goto endif26; { PrintLine("panic: unwrap on Err"); return 0; } - endif27:; - Result_Data _t159; - _t159 = r.data; - int _t160; - _t160 = _t159.Ok_0; - return _t160; + endif26:; + Result_Data _t156; + _t156 = r.data; + int _t157; + _t157 = _t156.Ok_0; + return _t157; } int Result_UnwrapOr(Result r, int fallback) { - int _t162; - Result_Tag _t161; - _t161 = r.tag; - _t162 = (_t161 == Result_Ok); - if (!_t162) goto endif29; + int _t159; + Result_Tag _t158; + _t158 = r.tag; + _t159 = (_t158 == Result_Ok); + if (!_t159) goto endif28; { - Result_Data _t163; - _t163 = r.data; - int _t164; - _t164 = _t163.Ok_0; - return _t164; + Result_Data _t160; + _t160 = r.data; + int _t161; + _t161 = _t160.Ok_0; + return _t161; } - endif29:; + endif28:; return fallback; } Option Option_NewSome(int value) { - Option _t165; + Option _t162; Option o; - _t165 = (Option){.tag = Option_Some}; - o = _t165; + _t162 = (Option){.tag = Option_Some}; + o = _t162; o.data.Some_0 = value; return o; } Option Option_NewNone(void) { - Option _t166; - _t166 = (Option){.tag = Option_None}; - return _t166; + Option _t163; + _t163 = (Option){.tag = Option_None}; + return _t163; } bool Option_IsSome(Option o) { - int _t168; - Option_Tag _t167; - _t167 = o.tag; - _t168 = (_t167 == Option_Some); - return _t168; + int _t165; + Option_Tag _t164; + _t164 = o.tag; + _t165 = (_t164 == Option_Some); + return _t165; } bool Option_IsNone(Option o) { - int _t170; - Option_Tag _t169; - _t169 = o.tag; - _t170 = (_t169 == Option_None); - return _t170; + int _t167; + Option_Tag _t166; + _t166 = o.tag; + _t167 = (_t166 == Option_None); + return _t167; } int Option_Unwrap(Option o) { - int _t172; - Option_Tag _t171; - _t171 = o.tag; - _t172 = (_t171 != Option_Some); - if (!_t172) goto endif31; + int _t169; + Option_Tag _t168; + _t168 = o.tag; + _t169 = (_t168 != Option_Some); + if (!_t169) goto endif30; { PrintLine("panic: unwrap on None"); return 0; } - endif31:; - Option_Data _t173; - _t173 = o.data; - int _t174; - _t174 = _t173.Some_0; - return _t174; + endif30:; + Option_Data _t170; + _t170 = o.data; + int _t171; + _t171 = _t170.Some_0; + return _t171; } int Option_UnwrapOr(Option o, int fallback) { - int _t176; - Option_Tag _t175; - _t175 = o.tag; - _t176 = (_t175 == Option_Some); - if (!_t176) goto endif33; + int _t173; + Option_Tag _t172; + _t172 = o.tag; + _t173 = (_t172 == Option_Some); + if (!_t173) goto endif32; { - Option_Data _t177; - _t177 = o.data; - int _t178; - _t178 = _t177.Some_0; - return _t178; + Option_Data _t174; + _t174 = o.data; + int _t175; + _t175 = _t174.Some_0; + return _t175; } - endif33:; + endif32:; return fallback; } JsonValue Json_Null(void) { - JsonValue _t179; - _t179 = (JsonValue){.tag = JsonTagNull, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t179; + JsonValue _t176; + _t176 = (JsonValue){.tag = JsonTagNull, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t176; } JsonValue Json_Bool(bool b) { - JsonValue _t180; - _t180 = (JsonValue){.tag = JsonTagBool, .boolVal = b, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t180; + JsonValue _t177; + _t177 = (JsonValue){.tag = JsonTagBool, .boolVal = b, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t177; } JsonValue Json_Number(double n) { - JsonValue _t181; - _t181 = (JsonValue){.tag = JsonTagNumber, .boolVal = 0, .numVal = n, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t181; + JsonValue _t178; + _t178 = (JsonValue){.tag = JsonTagNumber, .boolVal = 0, .numVal = n, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t178; } JsonValue Json_String(const char* s) { - JsonValue _t182; - _t182 = (JsonValue){.tag = JsonTagString, .boolVal = 0, .numVal = 0.0, .strVal = s, .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t182; + JsonValue _t179; + _t179 = (JsonValue){.tag = JsonTagString, .boolVal = 0, .numVal = 0.0, .strVal = s, .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t179; } JsonValue Json_Array(void) { - JsonValue _t183; - _t183 = (JsonValue){.tag = JsonTagArray, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t183; + JsonValue _t180; + _t180 = (JsonValue){.tag = JsonTagArray, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t180; } JsonValue Json_Object(void) { - JsonValue _t184; - _t184 = (JsonValue){.tag = JsonTagObject, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t184; + JsonValue _t181; + _t181 = (JsonValue){.tag = JsonTagObject, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t181; } unsigned int Json_ArrayLen(JsonValue v) { - int _t186; - int _t185; - _t185 = v.tag; - _t186 = (_t185 != JsonTagArray); - if (!_t186) goto endif35; + int _t183; + int _t182; + _t182 = v.tag; + _t183 = (_t182 != JsonTagArray); + if (!_t183) goto endif34; { return 0; } - endif35:; - unsigned int _t187; - _t187 = v.arrLen; - return _t187; + endif34:; + unsigned int _t184; + _t184 = v.arrLen; + return _t184; } JsonValue Json_ArrayGet(JsonValue v, unsigned int index) { + int _t186; int _t189; - int _t192; - int _t188; - _t188 = v.tag; - _t189 = (_t188 != JsonTagArray); - if (!_t189) goto endif37; + int _t185; + _t185 = v.tag; + _t186 = (_t185 != JsonTagArray); + if (!_t186) goto endif36; + { + JsonValue _t187; + _t187 = Json_Null(); + return _t187; + } + endif36:; + unsigned int _t188; + _t188 = v.arrLen; + _t189 = (index >= _t188); + if (!_t189) goto endif38; { JsonValue _t190; _t190 = Json_Null(); return _t190; } - endif37:; - unsigned int _t191; - _t191 = v.arrLen; - _t192 = (index >= _t191); - if (!_t192) goto endif39; - { - JsonValue _t193; - _t193 = Json_Null(); - return _t193; - } - endif39:; - JsonValue* _t194; - _t194 = v.arrData; - JsonValue _t195; - _t195 = _t194[index]; - return _t195; + endif38:; + JsonValue* _t191; + _t191 = v.arrData; + JsonValue _t192; + _t192 = _t191[index]; + return _t192; } void Json_ArrayPush(JsonValue* self, JsonValue val) { + int _t194; int _t197; + int _t199; int _t200; - int _t202; - int _t204; - JsonValue* _t206; - int _t207; - void* _t209; - int _t211; - JsonValue* _t213; - int _t217; - int _t196; - _t196 = self->tag; - _t197 = (_t196 != JsonTagArray); - if (!_t197) goto endif41; + JsonValue* _t202; + int _t203; + void* _t205; + int _t206; + JsonValue* _t208; + int _t212; + int _t193; + _t193 = self->tag; + _t194 = (_t193 != JsonTagArray); + if (!_t194) goto endif40; { return; } - endif41:; - unsigned int _t198; - _t198 = self->arrLen; - unsigned int _t199; - _t199 = self->arrCap; - _t200 = (_t198 >= _t199); - if (!_t200) goto endif43; + endif40:; + unsigned int _t195; + _t195 = self->arrLen; + unsigned int _t196; + _t196 = self->arrCap; + _t197 = (_t195 >= _t196); + if (!_t197) goto endif42; { unsigned int arrNewCap; - unsigned int _t201; - _t201 = self->arrCap; - arrNewCap = _t201; - _t202 = (arrNewCap == 0); - if (!_t202) goto else44; + unsigned int _t198; + _t198 = self->arrCap; + arrNewCap = _t198; + _t199 = (arrNewCap == 0); + if (!_t199) goto else43; { self->arrCap = 4; /* sizeof(JsonValue) */ - _t204 = 4 * sizeof(JsonValue); - void* _t205; - _t205 = Alloc(_t204); - _t206 = (JsonValue*)_t205; - self->arrData = _t206; + _t200 = 4 * sizeof(JsonValue); + void* _t201; + _t201 = Alloc(_t200); + _t202 = (JsonValue*)_t201; + self->arrData = _t202; } - goto endif45; - else44:; + goto endif44; + else43:; { unsigned int doubleCap; - _t207 = arrNewCap * 2; - doubleCap = _t207; + _t203 = arrNewCap * 2; + doubleCap = _t203; self->arrCap = doubleCap; - JsonValue* _t208; - _t208 = self->arrData; - _t209 = (void*)_t208; + JsonValue* _t204; + _t204 = self->arrData; + _t205 = (void*)_t204; /* sizeof(JsonValue) */ - _t211 = doubleCap * sizeof(JsonValue); - void* _t212; - _t212 = Realloc(_t209, _t211); - _t213 = (JsonValue*)_t212; - self->arrData = _t213; + _t206 = doubleCap * sizeof(JsonValue); + void* _t207; + _t207 = Realloc(_t205, _t206); + _t208 = (JsonValue*)_t207; + self->arrData = _t208; } - endif45:; + endif44:; } - endif43:; - JsonValue* _t214; - _t214 = self->arrData; - unsigned int _t215; - _t215 = self->arrLen; - _t214[_t215] = val; - unsigned int _t216; - _t216 = self->arrLen; - _t217 = _t216 + 1; - self->arrLen = _t217; + endif42:; + JsonValue* _t209; + _t209 = self->arrData; + unsigned int _t210; + _t210 = self->arrLen; + _t209[_t210] = val; + unsigned int _t211; + _t211 = self->arrLen; + _t212 = _t211 + 1; + self->arrLen = _t212; } unsigned int Json_ObjectLen(JsonValue v) { - int _t219; - int _t218; - _t218 = v.tag; - _t219 = (_t218 != JsonTagObject); - if (!_t219) goto endif47; + int _t214; + int _t213; + _t213 = v.tag; + _t214 = (_t213 != JsonTagObject); + if (!_t214) goto endif46; { return 0; } - endif47:; - unsigned int _t220; - _t220 = v.objLen; - return _t220; + endif46:; + unsigned int _t215; + _t215 = v.objLen; + return _t215; } JsonValue Json_ObjectGet(JsonValue v, const char* key) { - int _t222; - int _t225; - int _t231; - int _t221; - _t221 = v.tag; - _t222 = (_t221 != JsonTagObject); - if (!_t222) goto endif49; + int _t217; + int _t220; + int _t226; + int _t216; + _t216 = v.tag; + _t217 = (_t216 != JsonTagObject); + if (!_t217) goto endif48; { - JsonValue _t223; - _t223 = Json_Null(); - return _t223; + JsonValue _t218; + _t218 = Json_Null(); + return _t218; } - endif49:; + endif48:; unsigned int i; i = 0; - while50:; - unsigned int _t224; - _t224 = v.objLen; - _t225 = (i < _t224); - if (!_t225) goto wend52; + while49:; + unsigned int _t219; + _t219 = v.objLen; + _t220 = (i < _t219); + if (!_t220) goto wend50; { - const char** _t226; - _t226 = v.objKeys; - const char* _t227; - _t227 = _t226[i]; - bool _t228; - _t228 = String_Eq(_t227, key); - if (!_t228) goto endif54; + const char** _t221; + _t221 = v.objKeys; + const char* _t222; + _t222 = _t221[i]; + bool _t223; + _t223 = String_Eq(_t222, key); + if (!_t223) goto endif52; { - JsonValue* _t229; - _t229 = v.objValues; - JsonValue _t230; - _t230 = _t229[i]; - return _t230; + JsonValue* _t224; + _t224 = v.objValues; + JsonValue _t225; + _t225 = _t224[i]; + return _t225; } - endif54:; - _t231 = i + 1; - i = _t231; + endif52:; + _t226 = i + 1; + i = _t226; } - goto while50; - wend52:; - JsonValue _t232; - _t232 = Json_Null(); - return _t232; + goto while49; + wend50:; + JsonValue _t227; + _t227 = Json_Null(); + return _t227; } bool Json_ObjectHas(JsonValue v, const char* key) { - int _t234; - int _t236; - int _t240; - int _t233; - _t233 = v.tag; - _t234 = (_t233 != JsonTagObject); - if (!_t234) goto endif56; + int _t229; + int _t231; + int _t235; + int _t228; + _t228 = v.tag; + _t229 = (_t228 != JsonTagObject); + if (!_t229) goto endif54; { return 0; } - endif56:; + endif54:; unsigned int i; i = 0; - while57:; - unsigned int _t235; - _t235 = v.objLen; - _t236 = (i < _t235); - if (!_t236) goto wend59; + while55:; + unsigned int _t230; + _t230 = v.objLen; + _t231 = (i < _t230); + if (!_t231) goto wend56; { - const char** _t237; - _t237 = v.objKeys; - const char* _t238; - _t238 = _t237[i]; - bool _t239; - _t239 = String_Eq(_t238, key); - if (!_t239) goto endif61; + const char** _t232; + _t232 = v.objKeys; + const char* _t233; + _t233 = _t232[i]; + bool _t234; + _t234 = String_Eq(_t233, key); + if (!_t234) goto endif58; { return 1; } - endif61:; - _t240 = i + 1; - i = _t240; + endif58:; + _t235 = i + 1; + i = _t235; } - goto while57; - wend59:; + goto while55; + wend56:; return 0; } void Json_ObjectSet(JsonValue* self, const char* key, JsonValue val) { - int _t242; + int _t237; + int _t239; int _t244; + int _t247; int _t249; - int _t252; - int _t254; + int _t250; + const char** _t252; + int _t253; + JsonValue* _t255; int _t256; - const char** _t258; - int _t260; - JsonValue* _t262; - int _t263; - void* _t265; - int _t267; - const char** _t269; - void* _t271; - int _t273; - JsonValue* _t275; - int _t281; - int _t241; - _t241 = self->tag; - _t242 = (_t241 != JsonTagObject); - if (!_t242) goto endif63; + void* _t258; + int _t259; + const char** _t261; + void* _t263; + int _t264; + JsonValue* _t266; + int _t272; + int _t236; + _t236 = self->tag; + _t237 = (_t236 != JsonTagObject); + if (!_t237) goto endif60; { return; } - endif63:; + endif60:; unsigned int i; i = 0; - while64:; - unsigned int _t243; - _t243 = self->objLen; - _t244 = (i < _t243); - if (!_t244) goto wend66; + while61:; + unsigned int _t238; + _t238 = self->objLen; + _t239 = (i < _t238); + if (!_t239) goto wend62; { - const char** _t245; - _t245 = self->objKeys; - const char* _t246; - _t246 = _t245[i]; - bool _t247; - _t247 = String_Eq(_t246, key); - if (!_t247) goto endif68; + const char** _t240; + _t240 = self->objKeys; + const char* _t241; + _t241 = _t240[i]; + bool _t242; + _t242 = String_Eq(_t241, key); + if (!_t242) goto endif64; { - JsonValue* _t248; - _t248 = self->objValues; - _t248[i] = val; + JsonValue* _t243; + _t243 = self->objValues; + _t243[i] = val; return; } - endif68:; - _t249 = i + 1; - i = _t249; + endif64:; + _t244 = i + 1; + i = _t244; } - goto while64; - wend66:; - unsigned int _t250; - _t250 = self->objLen; - unsigned int _t251; - _t251 = self->objCap; - _t252 = (_t250 >= _t251); - if (!_t252) goto endif70; + goto while61; + wend62:; + unsigned int _t245; + _t245 = self->objLen; + unsigned int _t246; + _t246 = self->objCap; + _t247 = (_t245 >= _t246); + if (!_t247) goto endif66; { unsigned int objNewCap; - unsigned int _t253; - _t253 = self->objCap; - objNewCap = _t253; - _t254 = (objNewCap == 0); - if (!_t254) goto else71; + unsigned int _t248; + _t248 = self->objCap; + objNewCap = _t248; + _t249 = (objNewCap == 0); + if (!_t249) goto else67; { self->objCap = 4; /* sizeof(const char*) */ - _t256 = 4 * sizeof(const char*); - void* _t257; - _t257 = Alloc(_t256); - _t258 = (const char**)_t257; - self->objKeys = _t258; + _t250 = 4 * sizeof(const char*); + void* _t251; + _t251 = Alloc(_t250); + _t252 = (const char**)_t251; + self->objKeys = _t252; /* sizeof(JsonValue) */ - _t260 = 4 * sizeof(JsonValue); - void* _t261; - _t261 = Alloc(_t260); - _t262 = (JsonValue*)_t261; - self->objValues = _t262; + _t253 = 4 * sizeof(JsonValue); + void* _t254; + _t254 = Alloc(_t253); + _t255 = (JsonValue*)_t254; + self->objValues = _t255; } - goto endif72; - else71:; + goto endif68; + else67:; { unsigned int doubleCap; - _t263 = objNewCap * 2; - doubleCap = _t263; + _t256 = objNewCap * 2; + doubleCap = _t256; self->objCap = doubleCap; - const char** _t264; - _t264 = self->objKeys; - _t265 = (void*)_t264; + const char** _t257; + _t257 = self->objKeys; + _t258 = (void*)_t257; /* sizeof(const char*) */ - _t267 = doubleCap * sizeof(const char*); - void* _t268; - _t268 = Realloc(_t265, _t267); - _t269 = (const char**)_t268; - self->objKeys = _t269; - JsonValue* _t270; - _t270 = self->objValues; - _t271 = (void*)_t270; + _t259 = doubleCap * sizeof(const char*); + void* _t260; + _t260 = Realloc(_t258, _t259); + _t261 = (const char**)_t260; + self->objKeys = _t261; + JsonValue* _t262; + _t262 = self->objValues; + _t263 = (void*)_t262; /* sizeof(JsonValue) */ - _t273 = doubleCap * sizeof(JsonValue); - void* _t274; - _t274 = Realloc(_t271, _t273); - _t275 = (JsonValue*)_t274; - self->objValues = _t275; + _t264 = doubleCap * sizeof(JsonValue); + void* _t265; + _t265 = Realloc(_t263, _t264); + _t266 = (JsonValue*)_t265; + self->objValues = _t266; } - endif72:; + endif68:; } - endif70:; - const char** _t276; - _t276 = self->objKeys; - unsigned int _t277; - _t277 = self->objLen; - _t276[_t277] = key; - JsonValue* _t278; - _t278 = self->objValues; - unsigned int _t279; - _t279 = self->objLen; - _t278[_t279] = val; - unsigned int _t280; - _t280 = self->objLen; - _t281 = _t280 + 1; - self->objLen = _t281; + endif66:; + const char** _t267; + _t267 = self->objKeys; + unsigned int _t268; + _t268 = self->objLen; + _t267[_t268] = key; + JsonValue* _t269; + _t269 = self->objValues; + unsigned int _t270; + _t270 = self->objLen; + _t269[_t270] = val; + unsigned int _t271; + _t271 = self->objLen; + _t272 = _t271 + 1; + self->objLen = _t272; } bool Json_IsNull(JsonValue v) { - int _t283; - int _t282; - _t282 = v.tag; - _t283 = (_t282 == JsonTagNull); - return _t283; + int _t274; + int _t273; + _t273 = v.tag; + _t274 = (_t273 == JsonTagNull); + return _t274; } bool Json_AsBool(JsonValue v) { - int _t285; - int _t284; - _t284 = v.tag; - _t285 = (_t284 == JsonTagBool); - if (!_t285) goto endif74; + int _t276; + int _t275; + _t275 = v.tag; + _t276 = (_t275 == JsonTagBool); + if (!_t276) goto endif70; { - bool _t286; - _t286 = v.boolVal; - return _t286; + bool _t277; + _t277 = v.boolVal; + return _t277; } - endif74:; + endif70:; return 0; } double Json_AsNumber(JsonValue v) { - int _t288; - int _t287; - _t287 = v.tag; - _t288 = (_t287 == JsonTagNumber); - if (!_t288) goto endif76; + int _t279; + int _t278; + _t278 = v.tag; + _t279 = (_t278 == JsonTagNumber); + if (!_t279) goto endif72; { - double _t289; - _t289 = v.numVal; - return _t289; + double _t280; + _t280 = v.numVal; + return _t280; } - endif76:; + endif72:; return 0.0; } const char* Json_AsString(JsonValue v) { - int _t291; - int _t290; - _t290 = v.tag; - _t291 = (_t290 == JsonTagString); - if (!_t291) goto endif78; + int _t282; + int _t281; + _t281 = v.tag; + _t282 = (_t281 == JsonTagString); + if (!_t282) goto endif74; { - const char* _t292; - _t292 = v.strVal; - return _t292; + const char* _t283; + _t283 = v.strVal; + return _t283; } - endif78:; + endif74:; return ""; } int JsonParser_Peek(JsonParser* p) { - int _t295; - int _t299; - unsigned int _t293; - _t293 = p->pos; - unsigned int _t294; - _t294 = p->len; - _t295 = (_t293 >= _t294); - if (!_t295) goto endif80; + int _t286; + int _t290; + unsigned int _t284; + _t284 = p->pos; + unsigned int _t285; + _t285 = p->len; + _t286 = (_t284 >= _t285); + if (!_t286) goto endif76; { return 0; } - endif80:; - const char* _t296; - _t296 = p->src; - unsigned int _t297; - _t297 = p->pos; - int _t298; - _t298 = _t296[_t297]; - _t299 = (int)_t298; - return _t299; + endif76:; + const char* _t287; + _t287 = p->src; + unsigned int _t288; + _t288 = p->pos; + int _t289; + _t289 = _t287[_t288]; + _t290 = (int)_t289; + return _t290; } void JsonParser_Advance(JsonParser* p) { - int _t302; - int _t304; - unsigned int _t300; - _t300 = p->pos; - unsigned int _t301; - _t301 = p->len; - _t302 = (_t300 < _t301); - if (!_t302) goto endif82; + int _t293; + int _t295; + unsigned int _t291; + _t291 = p->pos; + unsigned int _t292; + _t292 = p->len; + _t293 = (_t291 < _t292); + if (!_t293) goto endif78; { - unsigned int _t303; - _t303 = p->pos; - _t304 = _t303 + 1; - p->pos = _t304; + unsigned int _t294; + _t294 = p->pos; + _t295 = _t294 + 1; + p->pos = _t295; } - endif82:; + endif78:; } void JsonParser_SkipWhitespace(JsonParser* p) { - int _t306; - int _t307; - int _t309; - int _t311; - while83:; - if (!1) goto wend85; + int _t297; + int _t298; + int _t300; + int _t302; + while79:; + if (!1) goto wend80; { int c; - int _t305; - _t305 = JsonParser_Peek(p); - c = _t305; + int _t296; + _t296 = JsonParser_Peek(p); + c = _t296; bool __or_tmp_1; bool __or_tmp_2; bool __or_tmp_3; - _t306 = (c == 32); - if (!_t306) goto else86; + _t297 = (c == 32); + if (!_t297) goto else81; *(bool*)&__or_tmp_3 = 1; - goto endif87; - else86:; - _t307 = (c == 9); - *(bool*)&__or_tmp_3 = _t307; - endif87:; - bool _t308; - _t308 = *(bool*)&__or_tmp_3; - if (!_t308) goto else88; + goto endif82; + else81:; + _t298 = (c == 9); + *(bool*)&__or_tmp_3 = _t298; + endif82:; + bool _t299; + _t299 = *(bool*)&__or_tmp_3; + if (!_t299) goto else83; *(bool*)&__or_tmp_2 = 1; - goto endif89; - else88:; - _t309 = (c == 10); - *(bool*)&__or_tmp_2 = _t309; - endif89:; - bool _t310; - _t310 = *(bool*)&__or_tmp_2; - if (!_t310) goto else90; + goto endif84; + else83:; + _t300 = (c == 10); + *(bool*)&__or_tmp_2 = _t300; + endif84:; + bool _t301; + _t301 = *(bool*)&__or_tmp_2; + if (!_t301) goto else85; *(bool*)&__or_tmp_1 = 1; - goto endif91; - else90:; - _t311 = (c == 13); - *(bool*)&__or_tmp_1 = _t311; - endif91:; - bool _t312; - _t312 = *(bool*)&__or_tmp_1; - if (!_t312) goto else92; + goto endif86; + else85:; + _t302 = (c == 13); + *(bool*)&__or_tmp_1 = _t302; + endif86:; + bool _t303; + _t303 = *(bool*)&__or_tmp_1; + if (!_t303) goto else87; { JsonParser_Advance(p); } - goto endif93; - else92:; + goto endif88; + else87:; { return; } - endif93:; + endif88:; } - goto while83; - wend85:; + goto while79; + wend80:; } bool JsonParser_Match(JsonParser* p, const char* expected) { + int _t306; + int _t308; + int _t309; + int _t312; int _t315; - int _t317; + int _t316; int _t318; - int _t321; - int _t324; - int _t325; - int _t327; unsigned int elen; - unsigned int _t313; - _t313 = String_Len(expected); - elen = _t313; - unsigned int _t314; - _t314 = p->pos; - _t315 = _t314 + elen; - unsigned int _t316; - _t316 = p->len; - _t317 = (_t315 > _t316); - if (!_t317) goto endif95; + unsigned int _t304; + _t304 = String_Len(expected); + elen = _t304; + unsigned int _t305; + _t305 = p->pos; + _t306 = _t305 + elen; + unsigned int _t307; + _t307 = p->len; + _t308 = (_t306 > _t307); + if (!_t308) goto endif90; { return 0; } - endif95:; + endif90:; unsigned int i; i = 0; - while96:; - _t318 = (i < elen); - if (!_t318) goto wend98; + while91:; + _t309 = (i < elen); + if (!_t309) goto wend92; { - const char* _t319; - _t319 = p->src; - unsigned int _t320; - _t320 = p->pos; - _t321 = _t320 + i; - int _t322; - _t322 = _t319[_t321]; - int _t323; - _t323 = expected[i]; - _t324 = (_t322 != _t323); - if (!_t324) goto endif100; + const char* _t310; + _t310 = p->src; + unsigned int _t311; + _t311 = p->pos; + _t312 = _t311 + i; + int _t313; + _t313 = _t310[_t312]; + int _t314; + _t314 = expected[i]; + _t315 = (_t313 != _t314); + if (!_t315) goto endif94; { return 0; } - endif100:; - _t325 = i + 1; - i = _t325; + endif94:; + _t316 = i + 1; + i = _t316; } - goto while96; - wend98:; - unsigned int _t326; - _t326 = p->pos; - _t327 = _t326 + elen; - p->pos = _t327; + goto while91; + wend92:; + unsigned int _t317; + _t317 = p->pos; + _t318 = _t317 + elen; + p->pos = _t318; return 1; } const char* JsonParser_ParseString(JsonParser* p) { - int _t329; - int _t332; + int _t320; + int _t323; + int _t324; + int _t326; + int _t328; + void* _t329; + int _t330; + void* _t331; + char _t332; int _t333; - int _t335; - int _t337; - void* _t338; + void* _t334; + char _t335; + int _t336; + void* _t337; + char _t338; int _t339; void* _t340; char _t341; @@ -2015,234 +2023,262 @@ const char* JsonParser_ParseString(JsonParser* p) { int _t348; void* _t349; char _t350; - int _t351; - void* _t352; - char _t353; - int _t354; + void* _t351; + char _t352; + void* _t353; + char _t354; void* _t355; char _t356; - int _t357; - void* _t358; - char _t359; + int _t358; + void* _t359; void* _t360; - char _t361; void* _t362; - char _t363; - void* _t364; - char _t365; - int _t367; - void* _t368; - void* _t369; - void* _t371; - int _t328; - _t328 = JsonParser_Peek(p); - _t329 = (_t328 != 34); - if (!_t329) goto endif102; + int _t319; + _t319 = JsonParser_Peek(p); + _t320 = (_t319 != 34); + if (!_t320) goto endif96; { p->error = "Expected string"; return ""; } - endif102:; + endif96:; JsonParser_Advance(p); StringBuilder sb; - StringBuilder _t330; - _t330 = StringBuilder_New(); - sb = _t330; - while103:; - if (!1) goto wend105; + StringBuilder _t321; + _t321 = StringBuilder_New(); + sb = _t321; + while97:; + if (!1) goto wend98; { int c; - int _t331; - _t331 = JsonParser_Peek(p); - c = _t331; + int _t322; + _t322 = JsonParser_Peek(p); + c = _t322; bool __or_tmp_4; - _t332 = (c == 0); - if (!_t332) goto else106; + _t323 = (c == 0); + if (!_t323) goto else99; *(bool*)&__or_tmp_4 = 1; - goto endif107; - else106:; - _t333 = (c == 34); - *(bool*)&__or_tmp_4 = _t333; - endif107:; - bool _t334; - _t334 = *(bool*)&__or_tmp_4; - if (!_t334) goto endif109; + goto endif100; + else99:; + _t324 = (c == 34); + *(bool*)&__or_tmp_4 = _t324; + endif100:; + bool _t325; + _t325 = *(bool*)&__or_tmp_4; + if (!_t325) goto endif102; { - goto wend105; + goto wend98; } - endif109:; - _t335 = (c == 92); - if (!_t335) goto else110; + endif102:; + _t326 = (c == 92); + if (!_t326) goto else103; { JsonParser_Advance(p); int esc; - int _t336; - _t336 = JsonParser_Peek(p); - esc = _t336; - _t337 = (esc == 0); - if (!_t337) goto endif113; + int _t327; + _t327 = JsonParser_Peek(p); + esc = _t327; + _t328 = (esc == 0); + if (!_t328) goto endif106; { p->error = "Unterminated string escape"; - _t338 = &sb; - StringBuilder_Free(_t338); + _t329 = &sb; + StringBuilder_Free(_t329); return ""; } - endif113:; - _t339 = (esc == 110); - if (!_t339) goto else114; + endif106:; + _t330 = (esc == 110); + if (!_t330) goto else107; + { + _t331 = &sb; + _t332 = (char)10; + StringBuilder_AppendChar(_t331, _t332); + } + goto endif108; + else107:; + _t333 = (esc == 116); + if (!_t333) goto else109; + { + _t334 = &sb; + _t335 = (char)9; + StringBuilder_AppendChar(_t334, _t335); + } + goto endif110; + else109:; + _t336 = (esc == 114); + if (!_t336) goto else111; + { + _t337 = &sb; + _t338 = (char)13; + StringBuilder_AppendChar(_t337, _t338); + } + goto endif112; + else111:; + _t339 = (esc == 98); + if (!_t339) goto else113; { _t340 = &sb; - _t341 = (char)10; + _t341 = (char)8; StringBuilder_AppendChar(_t340, _t341); } - goto endif115; - else114:; - _t342 = (esc == 116); - if (!_t342) goto else116; + goto endif114; + else113:; + _t342 = (esc == 102); + if (!_t342) goto else115; { _t343 = &sb; - _t344 = (char)9; + _t344 = (char)12; StringBuilder_AppendChar(_t343, _t344); } - goto endif117; - else116:; - _t345 = (esc == 114); - if (!_t345) goto else118; + goto endif116; + else115:; + _t345 = (esc == 34); + if (!_t345) goto else117; { _t346 = &sb; - _t347 = (char)13; + _t347 = (char)34; StringBuilder_AppendChar(_t346, _t347); } - goto endif119; - else118:; - _t348 = (esc == 98); - if (!_t348) goto else120; + goto endif118; + else117:; + _t348 = (esc == 92); + if (!_t348) goto else119; { _t349 = &sb; - _t350 = (char)8; + _t350 = (char)92; StringBuilder_AppendChar(_t349, _t350); } - goto endif121; - else120:; - _t351 = (esc == 102); - if (!_t351) goto else122; + goto endif120; + else119:; { - _t352 = &sb; - _t353 = (char)12; - StringBuilder_AppendChar(_t352, _t353); + _t351 = &sb; + _t352 = (char)92; + StringBuilder_AppendChar(_t351, _t352); + _t353 = &sb; + _t354 = (char)esc; + StringBuilder_AppendChar(_t353, _t354); } - goto endif123; - else122:; - _t354 = (esc == 34); - if (!_t354) goto else124; + endif120:; + endif118:; + endif116:; + endif114:; + endif112:; + endif110:; + endif108:; + JsonParser_Advance(p); + } + goto endif104; + else103:; { _t355 = &sb; - _t356 = (char)34; + _t356 = (char)c; StringBuilder_AppendChar(_t355, _t356); - } - goto endif125; - else124:; - _t357 = (esc == 92); - if (!_t357) goto else126; - { - _t358 = &sb; - _t359 = (char)92; - StringBuilder_AppendChar(_t358, _t359); - } - goto endif127; - else126:; - { - _t360 = &sb; - _t361 = (char)92; - StringBuilder_AppendChar(_t360, _t361); - _t362 = &sb; - _t363 = (char)esc; - StringBuilder_AppendChar(_t362, _t363); - } - endif127:; - endif125:; - endif123:; - endif121:; - endif119:; - endif117:; - endif115:; JsonParser_Advance(p); } - goto endif111; - else110:; - { - _t364 = &sb; - _t365 = (char)c; - StringBuilder_AppendChar(_t364, _t365); - JsonParser_Advance(p); + endif104:; } - endif111:; - } - goto while103; - wend105:; - int _t366; - _t366 = JsonParser_Peek(p); - _t367 = (_t366 != 34); - if (!_t367) goto endif129; + goto while97; + wend98:; + int _t357; + _t357 = JsonParser_Peek(p); + _t358 = (_t357 != 34); + if (!_t358) goto endif122; { p->error = "Unterminated string"; - _t368 = &sb; - StringBuilder_Free(_t368); + _t359 = &sb; + StringBuilder_Free(_t359); return ""; } - endif129:; + endif122:; JsonParser_Advance(p); const char* result; - _t369 = &sb; - const char* _t370; - _t370 = StringBuilder_Build(_t369); - result = _t370; - _t371 = &sb; - StringBuilder_Free(_t371); + _t360 = &sb; + const char* _t361; + _t361 = StringBuilder_Build(_t360); + result = _t361; + _t362 = &sb; + StringBuilder_Free(_t362); return result; } JsonValue JsonParser_ParseNumber(JsonParser* p) { - int _t374; - int _t376; - int _t377; - int _t380; - int _t382; - int _t383; - int _t387; - unsigned int start; - unsigned int _t372; - _t372 = p->pos; - start = _t372; - int c0; + int _t365; + int _t367; + int _t368; + int _t371; int _t373; - _t373 = JsonParser_Peek(p); - c0 = _t373; - _t374 = (c0 == 45); - if (!_t374) goto endif131; + int _t374; + int _t378; + unsigned int start; + unsigned int _t363; + _t363 = p->pos; + start = _t363; + int c0; + int _t364; + _t364 = JsonParser_Peek(p); + c0 = _t364; + _t365 = (c0 == 45); + if (!_t365) goto endif124; { JsonParser_Advance(p); } - endif131:; - while132:; + endif124:; + while125:; + if (!1) goto wend126; + { + int c; + int _t366; + _t366 = JsonParser_Peek(p); + c = _t366; + bool __and_tmp_5; + _t367 = (c >= 48); + if (!_t367) goto else127; + _t368 = (c <= 57); + *(bool*)&__and_tmp_5 = _t368; + goto endif128; + else127:; + *(bool*)&__and_tmp_5 = 0; + endif128:; + bool _t369; + _t369 = *(bool*)&__and_tmp_5; + if (!_t369) goto else129; + { + JsonParser_Advance(p); + } + goto endif130; + else129:; + { + goto wend126; + } + endif130:; + } + goto while125; + wend126:; + int _t370; + _t370 = JsonParser_Peek(p); + _t371 = (_t370 == 46); + if (!_t371) goto endif132; + { + JsonParser_Advance(p); + while133:; if (!1) goto wend134; { int c; - int _t375; - _t375 = JsonParser_Peek(p); - c = _t375; - bool __and_tmp_5; - _t376 = (c >= 48); - if (!_t376) goto else135; - _t377 = (c <= 57); - *(bool*)&__and_tmp_5 = _t377; + int _t372; + _t372 = JsonParser_Peek(p); + c = _t372; + bool __and_tmp_6; + _t373 = (c >= 48); + if (!_t373) goto else135; + _t374 = (c <= 57); + *(bool*)&__and_tmp_6 = _t374; goto endif136; else135:; - *(bool*)&__and_tmp_5 = 0; + *(bool*)&__and_tmp_6 = 0; endif136:; - bool _t378; - _t378 = *(bool*)&__and_tmp_5; - if (!_t378) goto else137; + bool _t375; + _t375 = *(bool*)&__and_tmp_6; + if (!_t375) goto else137; { JsonParser_Advance(p); } @@ -2253,1098 +2289,1061 @@ JsonValue JsonParser_ParseNumber(JsonParser* p) { } endif138:; } - goto while132; + goto while133; wend134:; - int _t379; - _t379 = JsonParser_Peek(p); - _t380 = (_t379 == 46); - if (!_t380) goto endif140; - { - JsonParser_Advance(p); - while141:; - if (!1) goto wend143; - { - int c; - int _t381; - _t381 = JsonParser_Peek(p); - c = _t381; - bool __and_tmp_6; - _t382 = (c >= 48); - if (!_t382) goto else144; - _t383 = (c <= 57); - *(bool*)&__and_tmp_6 = _t383; - goto endif145; - else144:; - *(bool*)&__and_tmp_6 = 0; - endif145:; - bool _t384; - _t384 = *(bool*)&__and_tmp_6; - if (!_t384) goto else146; - { - JsonParser_Advance(p); } - goto endif147; - else146:; - { - goto wend143; - } - endif147:; - } - goto while141; - wend143:; - } - endif140:; + endif132:; const char* numStr; - const char* _t385; - _t385 = p->src; - unsigned int _t386; - _t386 = p->pos; - _t387 = _t386 - start; - const char* _t388; - _t388 = String_Slice(_t385, start, _t387); - numStr = _t388; + const char* _t376; + _t376 = p->src; + unsigned int _t377; + _t377 = p->pos; + _t378 = _t377 - start; + const char* _t379; + _t379 = String_Slice(_t376, start, _t378); + numStr = _t379; double n; - double _t389; - _t389 = String_ToFloat(numStr); - n = _t389; - JsonValue _t390; - _t390 = Json_Number(n); - return _t390; + double _t380; + _t380 = String_ToFloat(numStr); + n = _t380; + JsonValue _t381; + _t381 = Json_Number(n); + return _t381; } JsonValue JsonParser_ParseArray(JsonParser* p) { - int _t393; - int _t396; - void* _t398; - int _t400; - int _t401; + int _t384; + int _t387; + void* _t389; + int _t391; + int _t392; JsonParser_Advance(p); JsonValue arr; - JsonValue _t391; - _t391 = Json_Array(); - arr = _t391; + JsonValue _t382; + _t382 = Json_Array(); + arr = _t382; JsonParser_SkipWhitespace(p); - int _t392; - _t392 = JsonParser_Peek(p); - _t393 = (_t392 == 93); - if (!_t393) goto endif149; + int _t383; + _t383 = JsonParser_Peek(p); + _t384 = (_t383 == 93); + if (!_t384) goto endif140; { JsonParser_Advance(p); return arr; } - endif149:; - while150:; - if (!1) goto wend152; + endif140:; + while141:; + if (!1) goto wend142; { JsonParser_SkipWhitespace(p); JsonValue val; - JsonValue _t394; - _t394 = JsonParser_ParseValue(p); - val = _t394; - const char* _t395; - _t395 = p->error; - _t396 = (_t395 != ""); - if (!_t396) goto endif154; + JsonValue _t385; + _t385 = JsonParser_ParseValue(p); + val = _t385; + const char* _t386; + _t386 = p->error; + _t387 = (_t386 != ""); + if (!_t387) goto endif144; { - JsonValue _t397; - _t397 = Json_Null(); - return _t397; + JsonValue _t388; + _t388 = Json_Null(); + return _t388; } - endif154:; - _t398 = &arr; - Json_ArrayPush(_t398, val); + endif144:; + _t389 = &arr; + Json_ArrayPush(_t389, val); JsonParser_SkipWhitespace(p); int c; - int _t399; - _t399 = JsonParser_Peek(p); - c = _t399; - _t400 = (c == 93); - if (!_t400) goto endif156; + int _t390; + _t390 = JsonParser_Peek(p); + c = _t390; + _t391 = (c == 93); + if (!_t391) goto endif146; { JsonParser_Advance(p); return arr; } - endif156:; - _t401 = (c == 44); - if (!_t401) goto else157; + endif146:; + _t392 = (c == 44); + if (!_t392) goto else147; { JsonParser_Advance(p); } - goto endif158; - else157:; + goto endif148; + else147:; { p->error = "Expected ',' or ']' in array"; - JsonValue _t402; - _t402 = Json_Null(); - return _t402; + JsonValue _t393; + _t393 = Json_Null(); + return _t393; } - endif158:; + endif148:; } - goto while150; - wend152:; + goto while141; + wend142:; } JsonValue JsonParser_ParseObject(JsonParser* p) { - int _t405; - int _t408; + int _t396; + int _t399; + int _t402; + int _t406; + void* _t408; + int _t410; int _t411; - int _t415; - void* _t417; - int _t419; - int _t420; JsonParser_Advance(p); JsonValue obj; - JsonValue _t403; - _t403 = Json_Object(); - obj = _t403; + JsonValue _t394; + _t394 = Json_Object(); + obj = _t394; JsonParser_SkipWhitespace(p); - int _t404; - _t404 = JsonParser_Peek(p); - _t405 = (_t404 == 125); - if (!_t405) goto endif160; + int _t395; + _t395 = JsonParser_Peek(p); + _t396 = (_t395 == 125); + if (!_t396) goto endif150; + { + JsonParser_Advance(p); + return obj; + } + endif150:; + while151:; + if (!1) goto wend152; + { + JsonParser_SkipWhitespace(p); + const char* key; + const char* _t397; + _t397 = JsonParser_ParseString(p); + key = _t397; + const char* _t398; + _t398 = p->error; + _t399 = (_t398 != ""); + if (!_t399) goto endif154; + { + JsonValue _t400; + _t400 = Json_Null(); + return _t400; + } + endif154:; + JsonParser_SkipWhitespace(p); + int _t401; + _t401 = JsonParser_Peek(p); + _t402 = (_t401 != 58); + if (!_t402) goto endif156; + { + p->error = "Expected ':' after object key"; + JsonValue _t403; + _t403 = Json_Null(); + return _t403; + } + endif156:; + JsonParser_Advance(p); + JsonParser_SkipWhitespace(p); + JsonValue val; + JsonValue _t404; + _t404 = JsonParser_ParseValue(p); + val = _t404; + const char* _t405; + _t405 = p->error; + _t406 = (_t405 != ""); + if (!_t406) goto endif158; + { + JsonValue _t407; + _t407 = Json_Null(); + return _t407; + } + endif158:; + _t408 = &obj; + Json_ObjectSet(_t408, key, val); + JsonParser_SkipWhitespace(p); + int c; + int _t409; + _t409 = JsonParser_Peek(p); + c = _t409; + _t410 = (c == 125); + if (!_t410) goto endif160; { JsonParser_Advance(p); return obj; } endif160:; - while161:; - if (!1) goto wend163; + _t411 = (c == 44); + if (!_t411) goto else161; { - JsonParser_SkipWhitespace(p); - const char* key; - const char* _t406; - _t406 = JsonParser_ParseString(p); - key = _t406; - const char* _t407; - _t407 = p->error; - _t408 = (_t407 != ""); - if (!_t408) goto endif165; - { - JsonValue _t409; - _t409 = Json_Null(); - return _t409; + JsonParser_Advance(p); } - endif165:; - JsonParser_SkipWhitespace(p); - int _t410; - _t410 = JsonParser_Peek(p); - _t411 = (_t410 != 58); - if (!_t411) goto endif167; + goto endif162; + else161:; { - p->error = "Expected ':' after object key"; + p->error = "Expected ',' or '}' in object"; JsonValue _t412; _t412 = Json_Null(); return _t412; } - endif167:; - JsonParser_Advance(p); - JsonParser_SkipWhitespace(p); - JsonValue val; - JsonValue _t413; - _t413 = JsonParser_ParseValue(p); - val = _t413; - const char* _t414; - _t414 = p->error; - _t415 = (_t414 != ""); - if (!_t415) goto endif169; - { - JsonValue _t416; - _t416 = Json_Null(); - return _t416; + endif162:; } - endif169:; - _t417 = &obj; - Json_ObjectSet(_t417, key, val); - JsonParser_SkipWhitespace(p); - int c; - int _t418; - _t418 = JsonParser_Peek(p); - c = _t418; - _t419 = (c == 125); - if (!_t419) goto endif171; - { - JsonParser_Advance(p); - return obj; - } - endif171:; - _t420 = (c == 44); - if (!_t420) goto else172; - { - JsonParser_Advance(p); - } - goto endif173; - else172:; - { - p->error = "Expected ',' or '}' in object"; - JsonValue _t421; - _t421 = Json_Null(); - return _t421; - } - endif173:; - } - goto while161; - wend163:; + goto while151; + wend152:; } JsonValue JsonParser_ParseValue(JsonParser* p) { + int _t414; + int _t416; + int _t419; + int _t421; int _t423; - int _t425; - int _t428; - int _t430; - int _t432; + int _t427; + int _t431; + int _t435; int _t436; - int _t440; - int _t444; - int _t445; - int _t447; + int _t438; JsonParser_SkipWhitespace(p); int c; - int _t422; - _t422 = JsonParser_Peek(p); - c = _t422; - _t423 = (c == 0); - if (!_t423) goto endif175; + int _t413; + _t413 = JsonParser_Peek(p); + c = _t413; + _t414 = (c == 0); + if (!_t414) goto endif164; { p->error = "Unexpected end of input"; - JsonValue _t424; - _t424 = Json_Null(); - return _t424; + JsonValue _t415; + _t415 = Json_Null(); + return _t415; } - endif175:; - _t425 = (c == 34); - if (!_t425) goto endif177; + endif164:; + _t416 = (c == 34); + if (!_t416) goto endif166; { - const char* _t426; - _t426 = JsonParser_ParseString(p); - JsonValue _t427; - _t427 = Json_String(_t426); - return _t427; + const char* _t417; + _t417 = JsonParser_ParseString(p); + JsonValue _t418; + _t418 = Json_String(_t417); + return _t418; } - endif177:; - _t428 = (c == 123); - if (!_t428) goto endif179; + endif166:; + _t419 = (c == 123); + if (!_t419) goto endif168; + { + JsonValue _t420; + _t420 = JsonParser_ParseObject(p); + return _t420; + } + endif168:; + _t421 = (c == 91); + if (!_t421) goto endif170; + { + JsonValue _t422; + _t422 = JsonParser_ParseArray(p); + return _t422; + } + endif170:; + _t423 = (c == 116); + if (!_t423) goto endif172; + { + bool _t424; + _t424 = JsonParser_Match(p, "true"); + if (!_t424) goto endif174; + { + JsonValue _t425; + _t425 = Json_Bool(1); + return _t425; + } + endif174:; + p->error = "Expected 'true'"; + JsonValue _t426; + _t426 = Json_Null(); + return _t426; + } + endif172:; + _t427 = (c == 102); + if (!_t427) goto endif176; + { + bool _t428; + _t428 = JsonParser_Match(p, "false"); + if (!_t428) goto endif178; { JsonValue _t429; - _t429 = JsonParser_ParseObject(p); + _t429 = Json_Bool(0); return _t429; } - endif179:; - _t430 = (c == 91); - if (!_t430) goto endif181; - { - JsonValue _t431; - _t431 = JsonParser_ParseArray(p); - return _t431; + endif178:; + p->error = "Expected 'false'"; + JsonValue _t430; + _t430 = Json_Null(); + return _t430; } - endif181:; - _t432 = (c == 116); - if (!_t432) goto endif183; + endif176:; + _t431 = (c == 110); + if (!_t431) goto endif180; { - bool _t433; - _t433 = JsonParser_Match(p, "true"); - if (!_t433) goto endif185; + bool _t432; + _t432 = JsonParser_Match(p, "null"); + if (!_t432) goto endif182; { + JsonValue _t433; + _t433 = Json_Null(); + return _t433; + } + endif182:; + p->error = "Expected 'null'"; JsonValue _t434; - _t434 = Json_Bool(1); + _t434 = Json_Null(); return _t434; } - endif185:; - p->error = "Expected 'true'"; - JsonValue _t435; - _t435 = Json_Null(); - return _t435; - } - endif183:; - _t436 = (c == 102); - if (!_t436) goto endif187; - { - bool _t437; - _t437 = JsonParser_Match(p, "false"); - if (!_t437) goto endif189; - { - JsonValue _t438; - _t438 = Json_Bool(0); - return _t438; - } - endif189:; - p->error = "Expected 'false'"; - JsonValue _t439; - _t439 = Json_Null(); - return _t439; - } - endif187:; - _t440 = (c == 110); - if (!_t440) goto endif191; - { - bool _t441; - _t441 = JsonParser_Match(p, "null"); - if (!_t441) goto endif193; - { - JsonValue _t442; - _t442 = Json_Null(); - return _t442; - } - endif193:; - p->error = "Expected 'null'"; - JsonValue _t443; - _t443 = Json_Null(); - return _t443; - } - endif191:; + endif180:; bool __or_tmp_7; bool __and_tmp_8; - _t444 = (c >= 48); - if (!_t444) goto else194; - _t445 = (c <= 57); - *(bool*)&__and_tmp_8 = _t445; - goto endif195; - else194:; + _t435 = (c >= 48); + if (!_t435) goto else183; + _t436 = (c <= 57); + *(bool*)&__and_tmp_8 = _t436; + goto endif184; + else183:; *(bool*)&__and_tmp_8 = 0; - endif195:; - bool _t446; - _t446 = *(bool*)&__and_tmp_8; - if (!_t446) goto else196; + endif184:; + bool _t437; + _t437 = *(bool*)&__and_tmp_8; + if (!_t437) goto else185; *(bool*)&__or_tmp_7 = 1; - goto endif197; - else196:; - _t447 = (c == 45); - *(bool*)&__or_tmp_7 = _t447; - endif197:; - bool _t448; - _t448 = *(bool*)&__or_tmp_7; - if (!_t448) goto endif199; + goto endif186; + else185:; + _t438 = (c == 45); + *(bool*)&__or_tmp_7 = _t438; + endif186:; + bool _t439; + _t439 = *(bool*)&__or_tmp_7; + if (!_t439) goto endif188; { - JsonValue _t449; - _t449 = JsonParser_ParseNumber(p); - return _t449; + JsonValue _t440; + _t440 = JsonParser_ParseNumber(p); + return _t440; } - endif199:; + endif188:; p->error = "Unexpected character"; - JsonValue _t450; - _t450 = Json_Null(); - return _t450; + JsonValue _t441; + _t441 = Json_Null(); + return _t441; } JsonValue Json_Parse(const char* s) { - JsonParser _t452; - void* _t453; - void* _t455; - int _t457; - int _t460; + JsonParser _t443; + void* _t444; + void* _t446; + int _t448; + int _t451; JsonParser p; - unsigned int _t451; - _t451 = String_Len(s); - _t452 = (JsonParser){.src = s, .pos = 0, .len = _t451, .error = ""}; - p = _t452; + unsigned int _t442; + _t442 = String_Len(s); + _t443 = (JsonParser){.src = s, .pos = 0, .len = _t442, .error = ""}; + p = _t443; JsonValue result; - _t453 = &p; - JsonValue _t454; - _t454 = JsonParser_ParseValue(_t453); - result = _t454; - _t455 = &p; - JsonParser_SkipWhitespace(_t455); + _t444 = &p; + JsonValue _t445; + _t445 = JsonParser_ParseValue(_t444); + result = _t445; + _t446 = &p; + JsonParser_SkipWhitespace(_t446); bool __and_tmp_9; - const char* _t456; - _t456 = p.error; - _t457 = (_t456 == ""); - if (!_t457) goto else200; - unsigned int _t458; - _t458 = p.pos; - unsigned int _t459; - _t459 = p.len; - _t460 = (_t458 != _t459); - *(bool*)&__and_tmp_9 = _t460; - goto endif201; - else200:; + const char* _t447; + _t447 = p.error; + _t448 = (_t447 == ""); + if (!_t448) goto else189; + unsigned int _t449; + _t449 = p.pos; + unsigned int _t450; + _t450 = p.len; + _t451 = (_t449 != _t450); + *(bool*)&__and_tmp_9 = _t451; + goto endif190; + else189:; *(bool*)&__and_tmp_9 = 0; - endif201:; - bool _t461; - _t461 = *(bool*)&__and_tmp_9; - if (!_t461) goto endif203; + endif190:; + bool _t452; + _t452 = *(bool*)&__and_tmp_9; + if (!_t452) goto endif192; { p.error = "Trailing data after JSON value"; - JsonValue _t462; - _t462 = Json_Null(); - return _t462; + JsonValue _t453; + _t453 = Json_Null(); + return _t453; } - endif203:; + endif192:; return result; } void Json_StringifyImpl(StringBuilder* sb, JsonValue v) { - int _t464; - int _t466; - int _t469; + int _t455; + int _t457; + int _t460; + int _t463; + char _t464; + char _t466; + int _t468; + char _t469; + int _t471; int _t472; char _t473; - char _t475; - int _t477; - char _t478; - int _t480; - int _t481; - char _t482; - int _t485; - char _t486; - int _t488; + int _t476; + char _t477; + int _t479; + char _t480; + int _t482; + int _t483; + char _t484; + char _t485; + char _t488; char _t489; - int _t491; int _t492; char _t493; - char _t494; - char _t497; - char _t498; - int _t501; - char _t502; - int _t463; - _t463 = v.tag; - _t464 = (_t463 == JsonTagNull); - if (!_t464) goto endif205; + int _t454; + _t454 = v.tag; + _t455 = (_t454 == JsonTagNull); + if (!_t455) goto endif194; { StringBuilder_Append(sb, "null"); return; } - endif205:; - int _t465; - _t465 = v.tag; - _t466 = (_t465 == JsonTagBool); - if (!_t466) goto endif207; + endif194:; + int _t456; + _t456 = v.tag; + _t457 = (_t456 == JsonTagBool); + if (!_t457) goto endif196; { - bool _t467; - _t467 = v.boolVal; - if (!_t467) goto else208; + bool _t458; + _t458 = v.boolVal; + if (!_t458) goto else197; { StringBuilder_Append(sb, "true"); } - goto endif209; - else208:; + goto endif198; + else197:; { StringBuilder_Append(sb, "false"); } - endif209:; + endif198:; return; } - endif207:; - int _t468; - _t468 = v.tag; - _t469 = (_t468 == JsonTagNumber); - if (!_t469) goto endif211; + endif196:; + int _t459; + _t459 = v.tag; + _t460 = (_t459 == JsonTagNumber); + if (!_t460) goto endif200; { - double _t470; - _t470 = v.numVal; - StringBuilder_AppendFloat(sb, _t470); + double _t461; + _t461 = v.numVal; + StringBuilder_AppendFloat(sb, _t461); return; } - endif211:; - int _t471; - _t471 = v.tag; - _t472 = (_t471 == JsonTagString); - if (!_t472) goto endif213; + endif200:; + int _t462; + _t462 = v.tag; + _t463 = (_t462 == JsonTagString); + if (!_t463) goto endif202; { - _t473 = (char)34; + _t464 = (char)34; + StringBuilder_AppendChar(sb, _t464); + const char* _t465; + _t465 = v.strVal; + StringBuilder_Append(sb, _t465); + _t466 = (char)34; + StringBuilder_AppendChar(sb, _t466); + return; + } + endif202:; + int _t467; + _t467 = v.tag; + _t468 = (_t467 == JsonTagArray); + if (!_t468) goto endif204; + { + _t469 = (char)91; + StringBuilder_AppendChar(sb, _t469); + unsigned int i; + i = 0; + while205:; + unsigned int _t470; + _t470 = v.arrLen; + _t471 = (i < _t470); + if (!_t471) goto wend206; + { + _t472 = (i > 0); + if (!_t472) goto endif208; + { + _t473 = (char)44; StringBuilder_AppendChar(sb, _t473); - const char* _t474; - _t474 = v.strVal; - StringBuilder_Append(sb, _t474); - _t475 = (char)34; - StringBuilder_AppendChar(sb, _t475); + } + endif208:; + JsonValue* _t474; + _t474 = v.arrData; + JsonValue _t475; + _t475 = _t474[i]; + Json_StringifyImpl(sb, _t475); + _t476 = i + 1; + i = _t476; + } + goto while205; + wend206:; + _t477 = (char)93; + StringBuilder_AppendChar(sb, _t477); return; } - endif213:; - int _t476; - _t476 = v.tag; - _t477 = (_t476 == JsonTagArray); - if (!_t477) goto endif215; + endif204:; + int _t478; + _t478 = v.tag; + _t479 = (_t478 == JsonTagObject); + if (!_t479) goto endif210; { - _t478 = (char)91; - StringBuilder_AppendChar(sb, _t478); + _t480 = (char)123; + StringBuilder_AppendChar(sb, _t480); unsigned int i; i = 0; - while216:; - unsigned int _t479; - _t479 = v.arrLen; - _t480 = (i < _t479); - if (!_t480) goto wend218; + while211:; + unsigned int _t481; + _t481 = v.objLen; + _t482 = (i < _t481); + if (!_t482) goto wend212; { - _t481 = (i > 0); - if (!_t481) goto endif220; + _t483 = (i > 0); + if (!_t483) goto endif214; { - _t482 = (char)44; - StringBuilder_AppendChar(sb, _t482); + _t484 = (char)44; + StringBuilder_AppendChar(sb, _t484); } - endif220:; - JsonValue* _t483; - _t483 = v.arrData; - JsonValue _t484; - _t484 = _t483[i]; - Json_StringifyImpl(sb, _t484); - _t485 = i + 1; - i = _t485; - } - goto while216; - wend218:; - _t486 = (char)93; - StringBuilder_AppendChar(sb, _t486); - return; - } - endif215:; - int _t487; - _t487 = v.tag; - _t488 = (_t487 == JsonTagObject); - if (!_t488) goto endif222; - { - _t489 = (char)123; + endif214:; + _t485 = (char)34; + StringBuilder_AppendChar(sb, _t485); + const char** _t486; + _t486 = v.objKeys; + const char* _t487; + _t487 = _t486[i]; + StringBuilder_Append(sb, _t487); + _t488 = (char)34; + StringBuilder_AppendChar(sb, _t488); + _t489 = (char)58; StringBuilder_AppendChar(sb, _t489); - unsigned int i; - i = 0; - while223:; - unsigned int _t490; - _t490 = v.objLen; - _t491 = (i < _t490); - if (!_t491) goto wend225; - { - _t492 = (i > 0); - if (!_t492) goto endif227; - { - _t493 = (char)44; + JsonValue* _t490; + _t490 = v.objValues; + JsonValue _t491; + _t491 = _t490[i]; + Json_StringifyImpl(sb, _t491); + _t492 = i + 1; + i = _t492; + } + goto while211; + wend212:; + _t493 = (char)125; StringBuilder_AppendChar(sb, _t493); - } - endif227:; - _t494 = (char)34; - StringBuilder_AppendChar(sb, _t494); - const char** _t495; - _t495 = v.objKeys; - const char* _t496; - _t496 = _t495[i]; - StringBuilder_Append(sb, _t496); - _t497 = (char)34; - StringBuilder_AppendChar(sb, _t497); - _t498 = (char)58; - StringBuilder_AppendChar(sb, _t498); - JsonValue* _t499; - _t499 = v.objValues; - JsonValue _t500; - _t500 = _t499[i]; - Json_StringifyImpl(sb, _t500); - _t501 = i + 1; - i = _t501; - } - goto while223; - wend225:; - _t502 = (char)125; - StringBuilder_AppendChar(sb, _t502); return; } - endif222:; + endif210:; } const char* Json_Stringify(JsonValue v) { - void* _t504; - void* _t505; + void* _t495; + void* _t496; StringBuilder sb; - StringBuilder _t503; - _t503 = StringBuilder_New(); - sb = _t503; - _t504 = &sb; - Json_StringifyImpl(_t504, v); - _t505 = &sb; - const char* _t506; - _t506 = StringBuilder_Build(_t505); - return _t506; + StringBuilder _t494; + _t494 = StringBuilder_New(); + sb = _t494; + _t495 = &sb; + Json_StringifyImpl(_t495, v); + _t496 = &sb; + const char* _t497; + _t497 = StringBuilder_Build(_t496); + return _t497; } unsigned int String_Len(const char* s) { - unsigned int _t507; - _t507 = bux_strlen(s); - return _t507; + unsigned int _t498; + _t498 = bux_strlen(s); + return _t498; } bool String_IsNull(const char* s) { - int _t509; - int _t508; - _t508 = bux_str_is_null(s); - _t509 = (_t508 != 0); - return _t509; + int _t500; + int _t499; + _t499 = bux_str_is_null(s); + _t500 = (_t499 != 0); + return _t500; } bool String_Eq(const char* a, const char* b) { - int _t511; - int _t510; - _t510 = bux_strcmp(a, b); - _t511 = (_t510 == 0); - return _t511; + int _t502; + int _t501; + _t501 = bux_strcmp(a, b); + _t502 = (_t501 == 0); + return _t502; } const char* String_Concat(const char* a, const char* b) { - int _t514; - int _t515; - char* _t517; + int _t505; + int _t506; + char* _t508; unsigned int len_a; - unsigned int _t512; - _t512 = bux_strlen(a); - len_a = _t512; + unsigned int _t503; + _t503 = bux_strlen(a); + len_a = _t503; unsigned int len_b; - unsigned int _t513; - _t513 = bux_strlen(b); - len_b = _t513; + unsigned int _t504; + _t504 = bux_strlen(b); + len_b = _t504; unsigned int total; - _t514 = len_a + len_b; - _t515 = _t514 + 1; - total = _t515; + _t505 = len_a + len_b; + _t506 = _t505 + 1; + total = _t506; char* buf; - void* _t516; - _t516 = bux_alloc(total); - _t517 = (char*)_t516; - buf = _t517; + void* _t507; + _t507 = bux_alloc(total); + _t508 = (char*)_t507; + buf = _t508; bux_strcpy(buf, a); bux_strcat(buf, b); return buf; } const char* String_Copy(const char* s) { - int _t519; - char* _t521; + int _t510; + char* _t512; unsigned int len; - unsigned int _t518; - _t518 = bux_strlen(s); - len = _t518; + unsigned int _t509; + _t509 = bux_strlen(s); + len = _t509; char* buf; - _t519 = len + 1; - void* _t520; - _t520 = bux_alloc(_t519); - _t521 = (char*)_t520; - buf = _t521; + _t510 = len + 1; + void* _t511; + _t511 = bux_alloc(_t510); + _t512 = (char*)_t511; + buf = _t512; bux_strcpy(buf, s); return buf; } bool String_StartsWith(const char* s, const char* prefix) { - int _t524; - int _t526; + int _t515; + int _t517; unsigned int s_len; - unsigned int _t522; - _t522 = bux_strlen(s); - s_len = _t522; + unsigned int _t513; + _t513 = bux_strlen(s); + s_len = _t513; unsigned int p_len; - unsigned int _t523; - _t523 = bux_strlen(prefix); - p_len = _t523; - _t524 = (p_len > s_len); - if (!_t524) goto endif229; + unsigned int _t514; + _t514 = bux_strlen(prefix); + p_len = _t514; + _t515 = (p_len > s_len); + if (!_t515) goto endif216; { return 0; } - endif229:; + endif216:; int r; - int _t525; - _t525 = bux_strncmp(s, prefix, p_len); - r = _t525; - _t526 = (r == 0); - return _t526; + int _t516; + _t516 = bux_strncmp(s, prefix, p_len); + r = _t516; + _t517 = (r == 0); + return _t517; } bool String_EndsWith(const char* s, const char* suffix) { - int _t529; - int _t530; - int _t533; + int _t520; + int _t521; + int _t524; unsigned int s_len; - unsigned int _t527; - _t527 = bux_strlen(s); - s_len = _t527; + unsigned int _t518; + _t518 = bux_strlen(s); + s_len = _t518; unsigned int suf_len; - unsigned int _t528; - _t528 = bux_strlen(suffix); - suf_len = _t528; - _t529 = (suf_len > s_len); - if (!_t529) goto endif231; + unsigned int _t519; + _t519 = bux_strlen(suffix); + suf_len = _t519; + _t520 = (suf_len > s_len); + if (!_t520) goto endif218; { return 0; } - endif231:; + endif218:; unsigned int start; - _t530 = s_len - suf_len; - start = _t530; + _t521 = s_len - suf_len; + start = _t521; const char* tail; - const char* _t531; - _t531 = bux_str_slice(s, start, suf_len); - tail = _t531; + const char* _t522; + _t522 = bux_str_slice(s, start, suf_len); + tail = _t522; bool eq; - int _t532; - _t532 = bux_strcmp(tail, suffix); - _t533 = (_t532 == 0); - eq = _t533; + int _t523; + _t523 = bux_strcmp(tail, suffix); + _t524 = (_t523 == 0); + eq = _t524; return eq; } bool String_Contains(const char* s, const char* substr) { - int _t535; + int _t526; int r; - int _t534; - _t534 = bux_str_contains(s, substr); - r = _t534; - _t535 = (r != 0); - return _t535; + int _t525; + _t525 = bux_str_contains(s, substr); + r = _t525; + _t526 = (r != 0); + return _t526; } const char* String_Slice(const char* s, unsigned int start, unsigned int len) { - const char* _t536; - _t536 = bux_str_slice(s, start, len); - return _t536; + const char* _t527; + _t527 = bux_str_slice(s, start, len); + return _t527; } const char* String_Trim(const char* s) { - const char* _t537; - _t537 = bux_str_trim(s); - return _t537; + const char* _t528; + _t528 = bux_str_trim(s); + return _t528; } const char* String_TrimLeft(const char* s) { - const char* _t538; - _t538 = bux_str_trim_left(s); - return _t538; + const char* _t529; + _t529 = bux_str_trim_left(s); + return _t529; } const char* String_TrimRight(const char* s) { - const char* _t539; - _t539 = bux_str_trim_right(s); - return _t539; + const char* _t530; + _t530 = bux_str_trim_right(s); + return _t530; } const char* String_FromInt(int64_t n) { - const char* _t540; - _t540 = bux_int_to_str(n); - return _t540; + const char* _t531; + _t531 = bux_int_to_str(n); + return _t531; } int64_t String_ToInt(const char* s) { - int64_t _t541; - _t541 = bux_str_to_int(s); - return _t541; + int64_t _t532; + _t532 = bux_str_to_int(s); + return _t532; } StringBuilder StringBuilder_New(void) { - StringBuilder _t543; - void* _t542; - _t542 = bux_sb_new(64); - _t543 = (StringBuilder){.handle = _t542}; - return _t543; + StringBuilder _t534; + void* _t533; + _t533 = bux_sb_new(64); + _t534 = (StringBuilder){.handle = _t533}; + return _t534; } StringBuilder StringBuilder_NewCap(unsigned int cap) { - StringBuilder _t545; - void* _t544; - _t544 = bux_sb_new(cap); - _t545 = (StringBuilder){.handle = _t544}; - return _t545; + StringBuilder _t536; + void* _t535; + _t535 = bux_sb_new(cap); + _t536 = (StringBuilder){.handle = _t535}; + return _t536; } void StringBuilder_Append(StringBuilder* sb, const char* s) { - void* _t546; - _t546 = sb->handle; - bux_sb_append(_t546, s); + void* _t537; + _t537 = sb->handle; + bux_sb_append(_t537, s); } void StringBuilder_AppendInt(StringBuilder* sb, int64_t n) { - void* _t547; - _t547 = sb->handle; - bux_sb_append_int(_t547, n); + void* _t538; + _t538 = sb->handle; + bux_sb_append_int(_t538, n); } void StringBuilder_AppendFloat(StringBuilder* sb, double f) { - void* _t548; - _t548 = sb->handle; - bux_sb_append_float(_t548, f); + void* _t539; + _t539 = sb->handle; + bux_sb_append_float(_t539, f); } void StringBuilder_AppendChar(StringBuilder* sb, char c) { - void* _t549; - _t549 = sb->handle; - bux_sb_append_char(_t549, c); + void* _t540; + _t540 = sb->handle; + bux_sb_append_char(_t540, c); } const char* StringBuilder_Build(StringBuilder* sb) { - void* _t550; - _t550 = sb->handle; - const char* _t551; - _t551 = bux_sb_build(_t550); - return _t551; + void* _t541; + _t541 = sb->handle; + const char* _t542; + _t542 = bux_sb_build(_t541); + return _t542; } void StringBuilder_Free(StringBuilder* sb) { - void* _t552; - _t552 = sb->handle; - bux_sb_free(_t552); + void* _t543; + _t543 = sb->handle; + bux_sb_free(_t543); } unsigned int String_SplitCount(const char* s, const char* delim) { - unsigned int _t553; - _t553 = bux_str_split_count(s, delim); - return _t553; + unsigned int _t544; + _t544 = bux_str_split_count(s, delim); + return _t544; } const char* String_SplitPart(const char* s, const char* delim, unsigned int index) { - const char* _t554; - _t554 = bux_str_split_part(s, delim, index); - return _t554; + const char* _t545; + _t545 = bux_str_split_part(s, delim, index); + return _t545; } const char* String_Join2(const char* a, const char* b, const char* sep) { - const char* _t555; - _t555 = bux_str_join2(a, b, sep); - return _t555; + const char* _t546; + _t546 = bux_str_join2(a, b, sep); + return _t546; } const char* String_Chars(const char* s, unsigned int index) { - const char* _t556; - _t556 = bux_str_slice(s, index, 1); - return _t556; + const char* _t547; + _t547 = bux_str_slice(s, index, 1); + return _t547; } const char* String_Find(const char* haystack, const char* needle) { - const char* _t557; - _t557 = bux_strstr(haystack, needle); - return _t557; + const char* _t548; + _t548 = bux_strstr(haystack, needle); + return _t548; } unsigned int String_Offset(const char* pos, const char* base) { - unsigned int _t558; - _t558 = bux_str_offset(pos, base); - return _t558; + unsigned int _t549; + _t549 = bux_str_offset(pos, base); + return _t549; } const char* String_Replace(const char* s, const char* old, const char* new) { - int _t564; - int _t566; - int _t567; + int _t555; + int _t557; + int _t558; const char* pos; - const char* _t559; - _t559 = bux_strstr(s, old); - pos = _t559; - bool _t560; - _t560 = String_IsNull(pos); - if (!_t560) goto endif233; + const char* _t550; + _t550 = bux_strstr(s, old); + pos = _t550; + bool _t551; + _t551 = String_IsNull(pos); + if (!_t551) goto endif220; { return s; } - endif233:; + endif220:; unsigned int oldLen; - unsigned int _t561; - _t561 = bux_strlen(old); - oldLen = _t561; + unsigned int _t552; + _t552 = bux_strlen(old); + oldLen = _t552; unsigned int prefixLen; - unsigned int _t562; - _t562 = String_Offset(pos, s); - prefixLen = _t562; + unsigned int _t553; + _t553 = String_Offset(pos, s); + prefixLen = _t553; const char* prefix; - const char* _t563; - _t563 = bux_str_slice(s, 0, prefixLen); - prefix = _t563; + const char* _t554; + _t554 = bux_str_slice(s, 0, prefixLen); + prefix = _t554; const char* suffix; - _t564 = prefixLen + oldLen; - unsigned int _t565; - _t565 = bux_strlen(s); - _t566 = _t565 - prefixLen; - _t567 = _t566 - oldLen; - const char* _t568; - _t568 = bux_str_slice(s, _t564, _t567); - suffix = _t568; + _t555 = prefixLen + oldLen; + unsigned int _t556; + _t556 = bux_strlen(s); + _t557 = _t556 - prefixLen; + _t558 = _t557 - oldLen; + const char* _t559; + _t559 = bux_str_slice(s, _t555, _t558); + suffix = _t559; const char* temp; - const char* _t569; - _t569 = String_Concat(prefix, new); - temp = _t569; + const char* _t560; + _t560 = String_Concat(prefix, new); + temp = _t560; const char* result; - const char* _t570; - _t570 = String_Concat(temp, suffix); - result = _t570; + const char* _t561; + _t561 = String_Concat(temp, suffix); + result = _t561; return result; } double String_ToFloat(const char* s) { - double _t571; - _t571 = bux_str_to_float(s); - return _t571; + double _t562; + _t562 = bux_str_to_float(s); + return _t562; } const char* String_FromBool(bool b) { - if (!b) goto endif235; + if (!b) goto endif222; { return "true"; } - endif235:; + endif222:; return "false"; } const char* String_FromFloat(double f) { - const char* _t572; - _t572 = bux_float_to_string(f); - return _t572; + const char* _t563; + _t563 = bux_float_to_string(f); + return _t563; } const char* String_Format1(const char* pattern, const char* a0) { - const char* _t573; - _t573 = bux_str_format(pattern, a0, "", "", "", "", "", "", ""); - return _t573; + const char* _t564; + _t564 = bux_str_format(pattern, a0, "", "", "", "", "", "", ""); + return _t564; } const char* String_Format2(const char* pattern, const char* a0, const char* a1) { - const char* _t574; - _t574 = bux_str_format(pattern, a0, a1, "", "", "", "", "", ""); - return _t574; + const char* _t565; + _t565 = bux_str_format(pattern, a0, a1, "", "", "", "", "", ""); + return _t565; } const char* String_Format3(const char* pattern, const char* a0, const char* a1, const char* a2) { - const char* _t575; - _t575 = bux_str_format(pattern, a0, a1, a2, "", "", "", "", ""); - return _t575; + const char* _t566; + _t566 = bux_str_format(pattern, a0, a1, a2, "", "", "", "", ""); + return _t566; } void Channel_SendInt(Channel_int* ch, int value) { - void* _t577; - void* _t578; - void* _t576; - _t576 = ch->handle; - _t577 = &value; - _t578 = (void*)_t577; - bux_channel_send(_t576, _t578); + void* _t568; + void* _t569; + void* _t567; + _t567 = ch->handle; + _t568 = &value; + _t569 = (void*)_t568; + bux_channel_send(_t567, _t569); } int Channel_RecvInt(Channel_int* ch) { - void* _t580; - void* _t581; + void* _t571; + void* _t572; int result; result = 0; - void* _t579; - _t579 = ch->handle; - _t580 = &result; - _t581 = (void*)_t580; - bux_channel_recv(_t579, _t581); + void* _t570; + _t570 = ch->handle; + _t571 = &result; + _t572 = (void*)_t571; + bux_channel_recv(_t570, _t572); return result; } void Channel_SendFloat64(Channel_float64* ch, double value) { - void* _t583; - void* _t584; - void* _t582; - _t582 = ch->handle; - _t583 = &value; - _t584 = (void*)_t583; - bux_channel_send(_t582, _t584); + void* _t574; + void* _t575; + void* _t573; + _t573 = ch->handle; + _t574 = &value; + _t575 = (void*)_t574; + bux_channel_send(_t573, _t575); } double Channel_RecvFloat64(Channel_float64* ch) { - void* _t586; - void* _t587; + void* _t577; + void* _t578; double result; result = 0.0; - void* _t585; - _t585 = ch->handle; - _t586 = &result; - _t587 = (void*)_t586; - bux_channel_recv(_t585, _t587); + void* _t576; + _t576 = ch->handle; + _t577 = &result; + _t578 = (void*)_t577; + bux_channel_recv(_t576, _t578); return result; } const char* Hash_Sha1(const char* data) { - int _t589; + int _t580; int len; - unsigned int _t588; - _t588 = String_Len(data); - _t589 = (int)_t588; - len = _t589; + unsigned int _t579; + _t579 = String_Len(data); + _t580 = (int)_t579; + len = _t580; void* buf; - void* _t590; - _t590 = Alloc(20); - buf = _t590; + void* _t581; + _t581 = Alloc(20); + buf = _t581; bux_sha1(data, len, buf); const char* result; - const char* _t591; - _t591 = bux_bytes_to_hex(buf, 20); - result = _t591; + const char* _t582; + _t582 = bux_bytes_to_hex(buf, 20); + result = _t582; Free(buf); return result; } const char* Hash_Sha256(const char* data) { - int _t593; + int _t584; int len; - unsigned int _t592; - _t592 = String_Len(data); - _t593 = (int)_t592; - len = _t593; + unsigned int _t583; + _t583 = String_Len(data); + _t584 = (int)_t583; + len = _t584; void* buf; - void* _t594; - _t594 = Alloc(32); - buf = _t594; + void* _t585; + _t585 = Alloc(32); + buf = _t585; bux_sha256(data, len, buf); const char* result; - const char* _t595; - _t595 = bux_bytes_to_hex(buf, 32); - result = _t595; + const char* _t586; + _t586 = bux_bytes_to_hex(buf, 32); + result = _t586; Free(buf); return result; } const char* Hash_Sha384(const char* data) { - int _t597; + int _t588; int len; - unsigned int _t596; - _t596 = String_Len(data); - _t597 = (int)_t596; - len = _t597; + unsigned int _t587; + _t587 = String_Len(data); + _t588 = (int)_t587; + len = _t588; void* buf; - void* _t598; - _t598 = Alloc(48); - buf = _t598; + void* _t589; + _t589 = Alloc(48); + buf = _t589; bux_sha384(data, len, buf); const char* result; - const char* _t599; - _t599 = bux_bytes_to_hex(buf, 48); - result = _t599; + const char* _t590; + _t590 = bux_bytes_to_hex(buf, 48); + result = _t590; Free(buf); return result; } const char* Hash_Sha512(const char* data) { - int _t601; + int _t592; int len; - unsigned int _t600; - _t600 = String_Len(data); - _t601 = (int)_t600; - len = _t601; + unsigned int _t591; + _t591 = String_Len(data); + _t592 = (int)_t591; + len = _t592; void* buf; - void* _t602; - _t602 = Alloc(64); - buf = _t602; + void* _t593; + _t593 = Alloc(64); + buf = _t593; bux_sha512(data, len, buf); const char* result; - const char* _t603; - _t603 = bux_bytes_to_hex(buf, 64); - result = _t603; + const char* _t594; + _t594 = bux_bytes_to_hex(buf, 64); + result = _t594; Free(buf); return result; } void Hash_Sha256Raw(const char* data, void* out) { - int _t605; - unsigned int _t604; - _t604 = String_Len(data); - _t605 = (int)_t604; - bux_sha256(data, _t605, out); + int _t596; + unsigned int _t595; + _t595 = String_Len(data); + _t596 = (int)_t595; + bux_sha256(data, _t596, out); } void Hash_Sha384Raw(const char* data, void* out) { - int _t607; - unsigned int _t606; - _t606 = String_Len(data); - _t607 = (int)_t606; - bux_sha384(data, _t607, out); + int _t598; + unsigned int _t597; + _t597 = String_Len(data); + _t598 = (int)_t597; + bux_sha384(data, _t598, out); } void Hash_Sha512Raw(const char* data, void* out) { - int _t609; - unsigned int _t608; - _t608 = String_Len(data); - _t609 = (int)_t608; - bux_sha512(data, _t609, out); + int _t600; + unsigned int _t599; + _t599 = String_Len(data); + _t600 = (int)_t599; + bux_sha512(data, _t600, out); } int Hash_Sha1Size(void) { @@ -3364,1498 +3363,1498 @@ int Hash_Sha512Size(void) { } const char* Base64_Encode(const char* s) { - int _t611; - unsigned int _t610; - _t610 = String_Len(s); - _t611 = (int)_t610; - const char* _t612; - _t612 = bux_base64_encode(s, _t611); - return _t612; + int _t602; + unsigned int _t601; + _t601 = String_Len(s); + _t602 = (int)_t601; + const char* _t603; + _t603 = bux_base64_encode(s, _t602); + return _t603; } const char* Base64_Decode(const char* s) { - int _t614; - void* _t615; + int _t605; + void* _t606; int outlen; outlen = 0; - unsigned int _t613; - _t613 = String_Len(s); - _t614 = (int)_t613; - _t615 = &outlen; - const char* _t616; - _t616 = bux_base64_decode(s, _t614, _t615); - return _t616; + unsigned int _t604; + _t604 = String_Len(s); + _t605 = (int)_t604; + _t606 = &outlen; + const char* _t607; + _t607 = bux_base64_decode(s, _t605, _t606); + return _t607; } const char* Base64URL_Encode(const char* s) { - int _t618; - unsigned int _t617; - _t617 = String_Len(s); - _t618 = (int)_t617; - const char* _t619; - _t619 = bux_base64url_encode(s, _t618); - return _t619; + int _t609; + unsigned int _t608; + _t608 = String_Len(s); + _t609 = (int)_t608; + const char* _t610; + _t610 = bux_base64url_encode(s, _t609); + return _t610; } const char* Base64URL_Decode(const char* s) { - int _t621; - void* _t622; + int _t612; + void* _t613; int outlen; outlen = 0; - unsigned int _t620; - _t620 = String_Len(s); - _t621 = (int)_t620; - _t622 = &outlen; - const char* _t623; - _t623 = bux_base64url_decode(s, _t621, _t622); - return _t623; + unsigned int _t611; + _t611 = String_Len(s); + _t612 = (int)_t611; + _t613 = &outlen; + const char* _t614; + _t614 = bux_base64url_decode(s, _t612, _t613); + return _t614; } const char* Hmac_Sha256(const char* key, const char* message) { - int _t625; - int _t627; + int _t616; + int _t618; int kl; - unsigned int _t624; - _t624 = String_Len(key); - _t625 = (int)_t624; - kl = _t625; + unsigned int _t615; + _t615 = String_Len(key); + _t616 = (int)_t615; + kl = _t616; int ml; - unsigned int _t626; - _t626 = String_Len(message); - _t627 = (int)_t626; - ml = _t627; + unsigned int _t617; + _t617 = String_Len(message); + _t618 = (int)_t617; + ml = _t618; void* buf; - void* _t628; - _t628 = Alloc(32); - buf = _t628; + void* _t619; + _t619 = Alloc(32); + buf = _t619; bux_hmac_sha256(key, kl, message, ml, buf); const char* result; - const char* _t629; - _t629 = bux_bytes_to_hex(buf, 32); - result = _t629; + const char* _t620; + _t620 = bux_bytes_to_hex(buf, 32); + result = _t620; Free(buf); return result; } void Hmac_Sha256Raw(const char* key, const char* message, void* out) { - int _t631; - int _t633; - unsigned int _t630; - _t630 = String_Len(key); - _t631 = (int)_t630; - unsigned int _t632; - _t632 = String_Len(message); - _t633 = (int)_t632; - bux_hmac_sha256(key, _t631, message, _t633, out); + int _t622; + int _t624; + unsigned int _t621; + _t621 = String_Len(key); + _t622 = (int)_t621; + unsigned int _t623; + _t623 = String_Len(message); + _t624 = (int)_t623; + bux_hmac_sha256(key, _t622, message, _t624, out); } const char* Hmac_Sha256Base64(const char* key, const char* message) { - int _t635; - int _t637; - const char* _t639; + int _t626; + int _t628; + const char* _t630; int kl; - unsigned int _t634; - _t634 = String_Len(key); - _t635 = (int)_t634; - kl = _t635; + unsigned int _t625; + _t625 = String_Len(key); + _t626 = (int)_t625; + kl = _t626; int ml; - unsigned int _t636; - _t636 = String_Len(message); - _t637 = (int)_t636; - ml = _t637; + unsigned int _t627; + _t627 = String_Len(message); + _t628 = (int)_t627; + ml = _t628; void* buf; - void* _t638; - _t638 = Alloc(32); - buf = _t638; + void* _t629; + _t629 = Alloc(32); + buf = _t629; bux_hmac_sha256(key, kl, message, ml, buf); const char* result; - _t639 = (const char*)buf; - const char* _t640; - _t640 = bux_base64_encode(_t639, 32); - result = _t640; + _t630 = (const char*)buf; + const char* _t631; + _t631 = bux_base64_encode(_t630, 32); + result = _t631; Free(buf); return result; } const char* Hmac_Sha384(const char* key, const char* message) { - int _t642; - int _t644; + int _t633; + int _t635; int kl; - unsigned int _t641; - _t641 = String_Len(key); - _t642 = (int)_t641; - kl = _t642; + unsigned int _t632; + _t632 = String_Len(key); + _t633 = (int)_t632; + kl = _t633; int ml; - unsigned int _t643; - _t643 = String_Len(message); - _t644 = (int)_t643; - ml = _t644; + unsigned int _t634; + _t634 = String_Len(message); + _t635 = (int)_t634; + ml = _t635; void* buf; - void* _t645; - _t645 = Alloc(48); - buf = _t645; + void* _t636; + _t636 = Alloc(48); + buf = _t636; bux_hmac_sha384(key, kl, message, ml, buf); const char* result; - const char* _t646; - _t646 = bux_bytes_to_hex(buf, 48); - result = _t646; + const char* _t637; + _t637 = bux_bytes_to_hex(buf, 48); + result = _t637; Free(buf); return result; } void Hmac_Sha384Raw(const char* key, const char* message, void* out) { - int _t648; - int _t650; - unsigned int _t647; - _t647 = String_Len(key); - _t648 = (int)_t647; - unsigned int _t649; - _t649 = String_Len(message); - _t650 = (int)_t649; - bux_hmac_sha384(key, _t648, message, _t650, out); + int _t639; + int _t641; + unsigned int _t638; + _t638 = String_Len(key); + _t639 = (int)_t638; + unsigned int _t640; + _t640 = String_Len(message); + _t641 = (int)_t640; + bux_hmac_sha384(key, _t639, message, _t641, out); } const char* Hmac_Sha384Base64(const char* key, const char* message) { - int _t652; - int _t654; - const char* _t656; + int _t643; + int _t645; + const char* _t647; int kl; - unsigned int _t651; - _t651 = String_Len(key); - _t652 = (int)_t651; - kl = _t652; + unsigned int _t642; + _t642 = String_Len(key); + _t643 = (int)_t642; + kl = _t643; int ml; - unsigned int _t653; - _t653 = String_Len(message); - _t654 = (int)_t653; - ml = _t654; + unsigned int _t644; + _t644 = String_Len(message); + _t645 = (int)_t644; + ml = _t645; void* buf; - void* _t655; - _t655 = Alloc(48); - buf = _t655; + void* _t646; + _t646 = Alloc(48); + buf = _t646; bux_hmac_sha384(key, kl, message, ml, buf); const char* result; - _t656 = (const char*)buf; - const char* _t657; - _t657 = bux_base64_encode(_t656, 48); - result = _t657; + _t647 = (const char*)buf; + const char* _t648; + _t648 = bux_base64_encode(_t647, 48); + result = _t648; Free(buf); return result; } const char* Hmac_Sha512(const char* key, const char* message) { - int _t659; - int _t661; + int _t650; + int _t652; int kl; - unsigned int _t658; - _t658 = String_Len(key); - _t659 = (int)_t658; - kl = _t659; + unsigned int _t649; + _t649 = String_Len(key); + _t650 = (int)_t649; + kl = _t650; int ml; - unsigned int _t660; - _t660 = String_Len(message); - _t661 = (int)_t660; - ml = _t661; + unsigned int _t651; + _t651 = String_Len(message); + _t652 = (int)_t651; + ml = _t652; void* buf; - void* _t662; - _t662 = Alloc(64); - buf = _t662; + void* _t653; + _t653 = Alloc(64); + buf = _t653; bux_hmac_sha512(key, kl, message, ml, buf); const char* result; - const char* _t663; - _t663 = bux_bytes_to_hex(buf, 64); - result = _t663; + const char* _t654; + _t654 = bux_bytes_to_hex(buf, 64); + result = _t654; Free(buf); return result; } void Hmac_Sha512Raw(const char* key, const char* message, void* out) { - int _t665; - int _t667; - unsigned int _t664; - _t664 = String_Len(key); - _t665 = (int)_t664; - unsigned int _t666; - _t666 = String_Len(message); - _t667 = (int)_t666; - bux_hmac_sha512(key, _t665, message, _t667, out); + int _t656; + int _t658; + unsigned int _t655; + _t655 = String_Len(key); + _t656 = (int)_t655; + unsigned int _t657; + _t657 = String_Len(message); + _t658 = (int)_t657; + bux_hmac_sha512(key, _t656, message, _t658, out); } const char* Hmac_Sha512Base64(const char* key, const char* message) { - int _t669; - int _t671; - const char* _t673; + int _t660; + int _t662; + const char* _t664; int kl; - unsigned int _t668; - _t668 = String_Len(key); - _t669 = (int)_t668; - kl = _t669; + unsigned int _t659; + _t659 = String_Len(key); + _t660 = (int)_t659; + kl = _t660; int ml; - unsigned int _t670; - _t670 = String_Len(message); - _t671 = (int)_t670; - ml = _t671; + unsigned int _t661; + _t661 = String_Len(message); + _t662 = (int)_t661; + ml = _t662; void* buf; - void* _t672; - _t672 = Alloc(64); - buf = _t672; + void* _t663; + _t663 = Alloc(64); + buf = _t663; bux_hmac_sha512(key, kl, message, ml, buf); const char* result; - _t673 = (const char*)buf; - const char* _t674; - _t674 = bux_base64_encode(_t673, 64); - result = _t674; + _t664 = (const char*)buf; + const char* _t665; + _t665 = bux_base64_encode(_t664, 64); + result = _t665; Free(buf); return result; } const char* Random_Bytes(int n) { - int _t675; - unsigned int _t676; - int _t679; - const char* _t680; - _t675 = (n <= 0); - if (!_t675) goto endif237; + int _t666; + unsigned int _t667; + int _t670; + const char* _t671; + _t666 = (n <= 0); + if (!_t666) goto endif224; { return ""; } - endif237:; + endif224:; void* buf; - _t676 = (unsigned int)n; - void* _t677; - _t677 = Alloc(_t676); - buf = _t677; - int _t678; - _t678 = bux_random_bytes(buf, n); - _t679 = (_t678 != 1); - if (!_t679) goto endif239; + _t667 = (unsigned int)n; + void* _t668; + _t668 = Alloc(_t667); + buf = _t668; + int _t669; + _t669 = bux_random_bytes(buf, n); + _t670 = (_t669 != 1); + if (!_t670) goto endif226; { Free(buf); return ""; } - endif239:; - _t680 = (const char*)buf; - return _t680; + endif226:; + _t671 = (const char*)buf; + return _t671; } const char* Random_Hex(int n) { - int _t681; - unsigned int _t682; - int _t685; - _t681 = (n <= 0); - if (!_t681) goto endif241; + int _t672; + unsigned int _t673; + int _t676; + _t672 = (n <= 0); + if (!_t672) goto endif228; { return ""; } - endif241:; + endif228:; void* buf; - _t682 = (unsigned int)n; - void* _t683; - _t683 = Alloc(_t682); - buf = _t683; - int _t684; - _t684 = bux_random_bytes(buf, n); - _t685 = (_t684 != 1); - if (!_t685) goto endif243; + _t673 = (unsigned int)n; + void* _t674; + _t674 = Alloc(_t673); + buf = _t674; + int _t675; + _t675 = bux_random_bytes(buf, n); + _t676 = (_t675 != 1); + if (!_t676) goto endif230; { Free(buf); return ""; } - endif243:; + endif230:; const char* result; - const char* _t686; - _t686 = bux_bytes_to_hex(buf, n); - result = _t686; + const char* _t677; + _t677 = bux_bytes_to_hex(buf, n); + result = _t677; Free(buf); return result; } const char* Random_Base64(int n) { - int _t687; - unsigned int _t688; - int _t691; - const char* _t692; - _t687 = (n <= 0); - if (!_t687) goto endif245; + int _t678; + unsigned int _t679; + int _t682; + const char* _t683; + _t678 = (n <= 0); + if (!_t678) goto endif232; { return ""; } - endif245:; + endif232:; void* buf; - _t688 = (unsigned int)n; - void* _t689; - _t689 = Alloc(_t688); - buf = _t689; - int _t690; - _t690 = bux_random_bytes(buf, n); - _t691 = (_t690 != 1); - if (!_t691) goto endif247; + _t679 = (unsigned int)n; + void* _t680; + _t680 = Alloc(_t679); + buf = _t680; + int _t681; + _t681 = bux_random_bytes(buf, n); + _t682 = (_t681 != 1); + if (!_t682) goto endif234; { Free(buf); return ""; } - endif247:; + endif234:; const char* result; - _t692 = (const char*)buf; - const char* _t693; - _t693 = bux_base64_encode(_t692, n); - result = _t693; + _t683 = (const char*)buf; + const char* _t684; + _t684 = bux_base64_encode(_t683, n); + result = _t684; Free(buf); return result; } unsigned int Random_Uint32(void) { - int _t696; - unsigned int* _t697; - unsigned int _t698; + int _t687; + unsigned int* _t688; + unsigned int _t689; void* buf; - void* _t694; - _t694 = Alloc(4); - buf = _t694; - int _t695; - _t695 = bux_random_bytes(buf, 4); - _t696 = (_t695 != 1); - if (!_t696) goto endif249; + void* _t685; + _t685 = Alloc(4); + buf = _t685; + int _t686; + _t686 = bux_random_bytes(buf, 4); + _t687 = (_t686 != 1); + if (!_t687) goto endif236; { Free(buf); return 0; } - endif249:; + endif236:; unsigned int* ptr; - _t697 = (unsigned int*)buf; - ptr = _t697; + _t688 = (unsigned int*)buf; + ptr = _t688; unsigned int val; - _t698 = *ptr; - val = _t698; + _t689 = *ptr; + val = _t689; Free(buf); return val; } const char* Aes_GenerateKey(void) { - unsigned int _t699; - int _t702; - const char* _t703; + unsigned int _t690; + int _t693; + const char* _t694; void* buf; - _t699 = (unsigned int)AES_KEY_SIZE; - void* _t700; - _t700 = Alloc(_t699); - buf = _t700; - int _t701; - _t701 = bux_random_bytes(buf, AES_KEY_SIZE); - _t702 = (_t701 != 1); - if (!_t702) goto endif251; + _t690 = (unsigned int)AES_KEY_SIZE; + void* _t691; + _t691 = Alloc(_t690); + buf = _t691; + int _t692; + _t692 = bux_random_bytes(buf, AES_KEY_SIZE); + _t693 = (_t692 != 1); + if (!_t693) goto endif238; { Free(buf); return ""; } - endif251:; - _t703 = (const char*)buf; - return _t703; + endif238:; + _t694 = (const char*)buf; + return _t694; } const char* Aes_GenerateIV(void) { - unsigned int _t704; - int _t707; - const char* _t708; + unsigned int _t695; + int _t698; + const char* _t699; void* buf; - _t704 = (unsigned int)AES_IV_SIZE; - void* _t705; - _t705 = Alloc(_t704); - buf = _t705; - int _t706; - _t706 = bux_random_bytes(buf, AES_IV_SIZE); - _t707 = (_t706 != 1); - if (!_t707) goto endif253; + _t695 = (unsigned int)AES_IV_SIZE; + void* _t696; + _t696 = Alloc(_t695); + buf = _t696; + int _t697; + _t697 = bux_random_bytes(buf, AES_IV_SIZE); + _t698 = (_t697 != 1); + if (!_t698) goto endif240; { Free(buf); return ""; } - endif253:; - _t708 = (const char*)buf; - return _t708; + endif240:; + _t699 = (const char*)buf; + return _t699; } const char* Aes_CbcEncrypt(const char* plain, const char* key, const char* iv) { - int _t710; - void* _t711; + int _t701; + void* _t702; int outlen; outlen = 0; - unsigned int _t709; - _t709 = String_Len(plain); - _t710 = (int)_t709; - _t711 = &outlen; - const char* _t712; - _t712 = bux_aes_256_cbc_encrypt(plain, _t710, key, iv, _t711); - return _t712; + unsigned int _t700; + _t700 = String_Len(plain); + _t701 = (int)_t700; + _t702 = &outlen; + const char* _t703; + _t703 = bux_aes_256_cbc_encrypt(plain, _t701, key, iv, _t702); + return _t703; } const char* Aes_CbcDecrypt(const char* cipher, const char* key, const char* iv) { - int _t714; - void* _t715; + int _t705; + void* _t706; int outlen; outlen = 0; - unsigned int _t713; - _t713 = String_Len(cipher); - _t714 = (int)_t713; - _t715 = &outlen; - const char* _t716; - _t716 = bux_aes_256_cbc_decrypt(cipher, _t714, key, iv, _t715); - return _t716; + unsigned int _t704; + _t704 = String_Len(cipher); + _t705 = (int)_t704; + _t706 = &outlen; + const char* _t707; + _t707 = bux_aes_256_cbc_decrypt(cipher, _t705, key, iv, _t706); + return _t707; } const char* Aes_GcmEncrypt(const char* plain, const char* key, const char* iv, void* tag) { - int _t718; - void* _t719; + int _t709; + void* _t710; int outlen; outlen = 0; - unsigned int _t717; - _t717 = String_Len(plain); - _t718 = (int)_t717; - _t719 = &outlen; - const char* _t720; - _t720 = bux_aes_256_gcm_encrypt(plain, _t718, key, iv, tag, _t719); - return _t720; + unsigned int _t708; + _t708 = String_Len(plain); + _t709 = (int)_t708; + _t710 = &outlen; + const char* _t711; + _t711 = bux_aes_256_gcm_encrypt(plain, _t709, key, iv, tag, _t710); + return _t711; } const char* Aes_GcmDecrypt(const char* cipher, const char* key, const char* iv, const char* tag) { - int _t722; - void* _t723; + int _t713; + void* _t714; int outlen; outlen = 0; - unsigned int _t721; - _t721 = String_Len(cipher); - _t722 = (int)_t721; - _t723 = &outlen; - const char* _t724; - _t724 = bux_aes_256_gcm_decrypt(cipher, _t722, key, iv, tag, _t723); - return _t724; + unsigned int _t712; + _t712 = String_Len(cipher); + _t713 = (int)_t712; + _t714 = &outlen; + const char* _t715; + _t715 = bux_aes_256_gcm_decrypt(cipher, _t713, key, iv, tag, _t714); + return _t715; } const char* Jwt_MakeHeader(JwtAlg alg) { - int _t725; - int _t726; - int _t727; - int _t728; - int _t729; - int _t730; - int _t731; - int _t732; - int _t733; - _t725 = (alg == JwtAlg_HS256); - if (!_t725) goto endif255; + int _t716; + int _t717; + int _t718; + int _t719; + int _t720; + int _t721; + int _t722; + int _t723; + int _t724; + _t716 = (alg == JwtAlg_HS256); + if (!_t716) goto endif242; { return "{\"alg\":\"HS256\",\"typ\":\"JWT\"}"; } - endif255:; - _t726 = (alg == JwtAlg_HS384); - if (!_t726) goto endif257; + endif242:; + _t717 = (alg == JwtAlg_HS384); + if (!_t717) goto endif244; { return "{\"alg\":\"HS384\",\"typ\":\"JWT\"}"; } - endif257:; - _t727 = (alg == JwtAlg_HS512); - if (!_t727) goto endif259; + endif244:; + _t718 = (alg == JwtAlg_HS512); + if (!_t718) goto endif246; { return "{\"alg\":\"HS512\",\"typ\":\"JWT\"}"; } - endif259:; - _t728 = (alg == JwtAlg_RS256); - if (!_t728) goto endif261; + endif246:; + _t719 = (alg == JwtAlg_RS256); + if (!_t719) goto endif248; { return "{\"alg\":\"RS256\",\"typ\":\"JWT\"}"; } - endif261:; - _t729 = (alg == JwtAlg_RS384); - if (!_t729) goto endif263; + endif248:; + _t720 = (alg == JwtAlg_RS384); + if (!_t720) goto endif250; { return "{\"alg\":\"RS384\",\"typ\":\"JWT\"}"; } - endif263:; - _t730 = (alg == JwtAlg_RS512); - if (!_t730) goto endif265; + endif250:; + _t721 = (alg == JwtAlg_RS512); + if (!_t721) goto endif252; { return "{\"alg\":\"RS512\",\"typ\":\"JWT\"}"; } - endif265:; - _t731 = (alg == JwtAlg_ES256); - if (!_t731) goto endif267; + endif252:; + _t722 = (alg == JwtAlg_ES256); + if (!_t722) goto endif254; { return "{\"alg\":\"ES256\",\"typ\":\"JWT\"}"; } - endif267:; - _t732 = (alg == JwtAlg_ES384); - if (!_t732) goto endif269; + endif254:; + _t723 = (alg == JwtAlg_ES384); + if (!_t723) goto endif256; { return "{\"alg\":\"ES384\",\"typ\":\"JWT\"}"; } - endif269:; - _t733 = (alg == JwtAlg_EdDSA); - if (!_t733) goto endif271; + endif256:; + _t724 = (alg == JwtAlg_EdDSA); + if (!_t724) goto endif258; { return "{\"alg\":\"EdDSA\",\"typ\":\"JWT\"}"; } - endif271:; + endif258:; return "{\"alg\":\"none\",\"typ\":\"JWT\"}"; } const char* Jwt_Sign(JwtAlg alg, const char* signingInput, const char* key) { - int _t734; - const char* _t736; - int _t738; - const char* _t740; + int _t725; + const char* _t727; + int _t729; + const char* _t731; + int _t733; + const char* _t735; + int _t737; + int _t740; int _t742; - const char* _t744; - int _t746; - int _t749; - int _t751; - int _t754; - int _t756; - int _t759; - int _t761; - int _t764; - int _t766; - int _t769; - int _t771; - _t734 = (alg == JwtAlg_HS256); - if (!_t734) goto endif273; + int _t745; + int _t747; + int _t750; + int _t752; + int _t755; + int _t757; + int _t760; + int _t762; + _t725 = (alg == JwtAlg_HS256); + if (!_t725) goto endif260; { void* buf; - void* _t735; - _t735 = Alloc(32); - buf = _t735; + void* _t726; + _t726 = Alloc(32); + buf = _t726; Hmac_Sha256Raw(key, signingInput, buf); const char* result; - _t736 = (const char*)buf; - const char* _t737; - _t737 = bux_base64_encode(_t736, 32); - result = _t737; + _t727 = (const char*)buf; + const char* _t728; + _t728 = bux_base64_encode(_t727, 32); + result = _t728; Free(buf); return result; } - endif273:; - _t738 = (alg == JwtAlg_HS384); - if (!_t738) goto endif275; + endif260:; + _t729 = (alg == JwtAlg_HS384); + if (!_t729) goto endif262; { void* buf; - void* _t739; - _t739 = Alloc(48); - buf = _t739; + void* _t730; + _t730 = Alloc(48); + buf = _t730; Hmac_Sha384Raw(key, signingInput, buf); const char* result; - _t740 = (const char*)buf; - const char* _t741; - _t741 = bux_base64_encode(_t740, 48); - result = _t741; + _t731 = (const char*)buf; + const char* _t732; + _t732 = bux_base64_encode(_t731, 48); + result = _t732; Free(buf); return result; } - endif275:; - _t742 = (alg == JwtAlg_HS512); - if (!_t742) goto endif277; + endif262:; + _t733 = (alg == JwtAlg_HS512); + if (!_t733) goto endif264; { void* buf; - void* _t743; - _t743 = Alloc(64); - buf = _t743; + void* _t734; + _t734 = Alloc(64); + buf = _t734; Hmac_Sha512Raw(key, signingInput, buf); const char* result; - _t744 = (const char*)buf; - const char* _t745; - _t745 = bux_base64_encode(_t744, 64); - result = _t745; + _t735 = (const char*)buf; + const char* _t736; + _t736 = bux_base64_encode(_t735, 64); + result = _t736; Free(buf); return result; } - endif277:; - _t746 = (alg == JwtAlg_RS256); - if (!_t746) goto endif279; + endif264:; + _t737 = (alg == JwtAlg_RS256); + if (!_t737) goto endif266; { const char* raw; - const char* _t747; - _t747 = Rsa_SignSha256(key, signingInput); - raw = _t747; - unsigned int _t748; - _t748 = String_Len(raw); - _t749 = (int)_t748; - const char* _t750; - _t750 = bux_base64_encode(raw, _t749); - return _t750; + const char* _t738; + _t738 = Rsa_SignSha256(key, signingInput); + raw = _t738; + unsigned int _t739; + _t739 = String_Len(raw); + _t740 = (int)_t739; + const char* _t741; + _t741 = bux_base64_encode(raw, _t740); + return _t741; } - endif279:; - _t751 = (alg == JwtAlg_RS384); - if (!_t751) goto endif281; + endif266:; + _t742 = (alg == JwtAlg_RS384); + if (!_t742) goto endif268; { const char* raw; - const char* _t752; - _t752 = Rsa_SignSha384(key, signingInput); - raw = _t752; - unsigned int _t753; - _t753 = String_Len(raw); - _t754 = (int)_t753; - const char* _t755; - _t755 = bux_base64_encode(raw, _t754); - return _t755; + const char* _t743; + _t743 = Rsa_SignSha384(key, signingInput); + raw = _t743; + unsigned int _t744; + _t744 = String_Len(raw); + _t745 = (int)_t744; + const char* _t746; + _t746 = bux_base64_encode(raw, _t745); + return _t746; } - endif281:; - _t756 = (alg == JwtAlg_RS512); - if (!_t756) goto endif283; + endif268:; + _t747 = (alg == JwtAlg_RS512); + if (!_t747) goto endif270; { const char* raw; - const char* _t757; - _t757 = Rsa_SignSha512(key, signingInput); - raw = _t757; - unsigned int _t758; - _t758 = String_Len(raw); - _t759 = (int)_t758; - const char* _t760; - _t760 = bux_base64_encode(raw, _t759); - return _t760; + const char* _t748; + _t748 = Rsa_SignSha512(key, signingInput); + raw = _t748; + unsigned int _t749; + _t749 = String_Len(raw); + _t750 = (int)_t749; + const char* _t751; + _t751 = bux_base64_encode(raw, _t750); + return _t751; } - endif283:; - _t761 = (alg == JwtAlg_ES256); - if (!_t761) goto endif285; + endif270:; + _t752 = (alg == JwtAlg_ES256); + if (!_t752) goto endif272; { const char* raw; - const char* _t762; - _t762 = Ecdsa_SignP256(key, signingInput); - raw = _t762; - unsigned int _t763; - _t763 = String_Len(raw); - _t764 = (int)_t763; - const char* _t765; - _t765 = bux_base64_encode(raw, _t764); - return _t765; + const char* _t753; + _t753 = Ecdsa_SignP256(key, signingInput); + raw = _t753; + unsigned int _t754; + _t754 = String_Len(raw); + _t755 = (int)_t754; + const char* _t756; + _t756 = bux_base64_encode(raw, _t755); + return _t756; } - endif285:; - _t766 = (alg == JwtAlg_ES384); - if (!_t766) goto endif287; + endif272:; + _t757 = (alg == JwtAlg_ES384); + if (!_t757) goto endif274; { const char* raw; - const char* _t767; - _t767 = Ecdsa_SignP384(key, signingInput); - raw = _t767; - unsigned int _t768; - _t768 = String_Len(raw); - _t769 = (int)_t768; - const char* _t770; - _t770 = bux_base64_encode(raw, _t769); - return _t770; + const char* _t758; + _t758 = Ecdsa_SignP384(key, signingInput); + raw = _t758; + unsigned int _t759; + _t759 = String_Len(raw); + _t760 = (int)_t759; + const char* _t761; + _t761 = bux_base64_encode(raw, _t760); + return _t761; } - endif287:; - _t771 = (alg == JwtAlg_EdDSA); - if (!_t771) goto endif289; + endif274:; + _t762 = (alg == JwtAlg_EdDSA); + if (!_t762) goto endif276; { - const char* _t772; - _t772 = Ed25519_Sign(key, signingInput); - return _t772; + const char* _t763; + _t763 = Ed25519_Sign(key, signingInput); + return _t763; } - endif289:; + endif276:; return ""; } bool Jwt_Verify(JwtAlg alg, const char* signingInput, const char* signatureB64, const char* key) { - int _t773; - const char* _t775; - int _t778; - const char* _t780; + int _t764; + const char* _t766; + int _t769; + const char* _t771; + int _t774; + const char* _t776; + int _t779; + int _t781; int _t783; - const char* _t785; - int _t788; - int _t790; - int _t792; - int _t794; - int _t796; - int _t798; - _t773 = (alg == JwtAlg_HS256); - if (!_t773) goto endif291; + int _t785; + int _t787; + int _t789; + _t764 = (alg == JwtAlg_HS256); + if (!_t764) goto endif278; { void* expectBuf; - void* _t774; - _t774 = Alloc(32); - expectBuf = _t774; + void* _t765; + _t765 = Alloc(32); + expectBuf = _t765; Hmac_Sha256Raw(key, signingInput, expectBuf); const char* expectB64; - _t775 = (const char*)expectBuf; - const char* _t776; - _t776 = bux_base64_encode(_t775, 32); - expectB64 = _t776; + _t766 = (const char*)expectBuf; + const char* _t767; + _t767 = bux_base64_encode(_t766, 32); + expectB64 = _t767; Free(expectBuf); - bool _t777; - _t777 = String_Eq(expectB64, signatureB64); - return _t777; + bool _t768; + _t768 = String_Eq(expectB64, signatureB64); + return _t768; } - endif291:; - _t778 = (alg == JwtAlg_HS384); - if (!_t778) goto endif293; + endif278:; + _t769 = (alg == JwtAlg_HS384); + if (!_t769) goto endif280; { void* expectBuf; - void* _t779; - _t779 = Alloc(48); - expectBuf = _t779; + void* _t770; + _t770 = Alloc(48); + expectBuf = _t770; Hmac_Sha384Raw(key, signingInput, expectBuf); const char* expectB64; - _t780 = (const char*)expectBuf; - const char* _t781; - _t781 = bux_base64_encode(_t780, 48); - expectB64 = _t781; + _t771 = (const char*)expectBuf; + const char* _t772; + _t772 = bux_base64_encode(_t771, 48); + expectB64 = _t772; Free(expectBuf); - bool _t782; - _t782 = String_Eq(expectB64, signatureB64); - return _t782; + bool _t773; + _t773 = String_Eq(expectB64, signatureB64); + return _t773; } - endif293:; - _t783 = (alg == JwtAlg_HS512); - if (!_t783) goto endif295; + endif280:; + _t774 = (alg == JwtAlg_HS512); + if (!_t774) goto endif282; { void* expectBuf; - void* _t784; - _t784 = Alloc(64); - expectBuf = _t784; + void* _t775; + _t775 = Alloc(64); + expectBuf = _t775; Hmac_Sha512Raw(key, signingInput, expectBuf); const char* expectB64; - _t785 = (const char*)expectBuf; - const char* _t786; - _t786 = bux_base64_encode(_t785, 64); - expectB64 = _t786; + _t776 = (const char*)expectBuf; + const char* _t777; + _t777 = bux_base64_encode(_t776, 64); + expectB64 = _t777; Free(expectBuf); - bool _t787; - _t787 = String_Eq(expectB64, signatureB64); - return _t787; + bool _t778; + _t778 = String_Eq(expectB64, signatureB64); + return _t778; } - endif295:; - _t788 = (alg == JwtAlg_RS256); - if (!_t788) goto endif297; + endif282:; + _t779 = (alg == JwtAlg_RS256); + if (!_t779) goto endif284; { - bool _t789; - _t789 = Rsa_VerifySha256(key, signingInput, signatureB64); - return _t789; + bool _t780; + _t780 = Rsa_VerifySha256(key, signingInput, signatureB64); + return _t780; } - endif297:; - _t790 = (alg == JwtAlg_RS384); - if (!_t790) goto endif299; + endif284:; + _t781 = (alg == JwtAlg_RS384); + if (!_t781) goto endif286; { - bool _t791; - _t791 = Rsa_VerifySha384(key, signingInput, signatureB64); - return _t791; + bool _t782; + _t782 = Rsa_VerifySha384(key, signingInput, signatureB64); + return _t782; } - endif299:; - _t792 = (alg == JwtAlg_RS512); - if (!_t792) goto endif301; + endif286:; + _t783 = (alg == JwtAlg_RS512); + if (!_t783) goto endif288; { - bool _t793; - _t793 = Rsa_VerifySha512(key, signingInput, signatureB64); - return _t793; + bool _t784; + _t784 = Rsa_VerifySha512(key, signingInput, signatureB64); + return _t784; } - endif301:; - _t794 = (alg == JwtAlg_ES256); - if (!_t794) goto endif303; + endif288:; + _t785 = (alg == JwtAlg_ES256); + if (!_t785) goto endif290; { - bool _t795; - _t795 = Ecdsa_VerifyP256(key, signingInput, signatureB64); - return _t795; + bool _t786; + _t786 = Ecdsa_VerifyP256(key, signingInput, signatureB64); + return _t786; } - endif303:; - _t796 = (alg == JwtAlg_ES384); - if (!_t796) goto endif305; + endif290:; + _t787 = (alg == JwtAlg_ES384); + if (!_t787) goto endif292; { - bool _t797; - _t797 = Ecdsa_VerifyP384(key, signingInput, signatureB64); - return _t797; + bool _t788; + _t788 = Ecdsa_VerifyP384(key, signingInput, signatureB64); + return _t788; } - endif305:; - _t798 = (alg == JwtAlg_EdDSA); - if (!_t798) goto endif307; + endif292:; + _t789 = (alg == JwtAlg_EdDSA); + if (!_t789) goto endif294; { - bool _t799; - _t799 = Ed25519_Verify(key, signatureB64, signingInput); - return _t799; + bool _t790; + _t790 = Ed25519_Verify(key, signatureB64, signingInput); + return _t790; } - endif307:; + endif294:; return 0; } const char* Jwt_Encode(const char* headerJson, const char* payloadJson, JwtAlg alg, const char* key) { const char* headerB64; - const char* _t800; - _t800 = Base64URL_Encode(headerJson); - headerB64 = _t800; + const char* _t791; + _t791 = Base64URL_Encode(headerJson); + headerB64 = _t791; const char* payloadB64; - const char* _t801; - _t801 = Base64URL_Encode(payloadJson); - payloadB64 = _t801; + const char* _t792; + _t792 = Base64URL_Encode(payloadJson); + payloadB64 = _t792; const char* signingInput; - const char* _t802; - _t802 = String_Concat(headerB64, "."); - signingInput = _t802; + const char* _t793; + _t793 = String_Concat(headerB64, "."); + signingInput = _t793; const char* signingInputFull; - const char* _t803; - _t803 = String_Concat(signingInput, payloadB64); - signingInputFull = _t803; + const char* _t794; + _t794 = String_Concat(signingInput, payloadB64); + signingInputFull = _t794; const char* sigB64; - const char* _t804; - _t804 = Jwt_Sign(alg, signingInputFull, key); - sigB64 = _t804; + const char* _t795; + _t795 = Jwt_Sign(alg, signingInputFull, key); + sigB64 = _t795; const char* part1; - const char* _t805; - _t805 = String_Concat(signingInputFull, "."); - part1 = _t805; - const char* _t806; - _t806 = String_Concat(part1, sigB64); - return _t806; + const char* _t796; + _t796 = String_Concat(signingInputFull, "."); + part1 = _t796; + const char* _t797; + _t797 = String_Concat(part1, sigB64); + return _t797; } bool Jwt_Decode(const char* token, JwtAlg alg, const char* key, const char** headerOut, const char** payloadOut) { - int _t808; - int _t815; + int _t799; + int _t806; unsigned int partCount; - unsigned int _t807; - _t807 = bux_str_split_count(token, "."); - partCount = _t807; - _t808 = (partCount != 3); - if (!_t808) goto endif309; + unsigned int _t798; + _t798 = bux_str_split_count(token, "."); + partCount = _t798; + _t799 = (partCount != 3); + if (!_t799) goto endif296; { return 0; } - endif309:; + endif296:; const char* headerB64; - const char* _t809; - _t809 = bux_str_split_part(token, ".", 0); - headerB64 = _t809; + const char* _t800; + _t800 = bux_str_split_part(token, ".", 0); + headerB64 = _t800; const char* payloadB64; - const char* _t810; - _t810 = bux_str_split_part(token, ".", 1); - payloadB64 = _t810; + const char* _t801; + _t801 = bux_str_split_part(token, ".", 1); + payloadB64 = _t801; const char* sigB64; - const char* _t811; - _t811 = bux_str_split_part(token, ".", 2); - sigB64 = _t811; + const char* _t802; + _t802 = bux_str_split_part(token, ".", 2); + sigB64 = _t802; const char* input; - const char* _t812; - _t812 = String_Concat(headerB64, "."); - input = _t812; + const char* _t803; + _t803 = String_Concat(headerB64, "."); + input = _t803; const char* signingInput; - const char* _t813; - _t813 = String_Concat(input, payloadB64); - signingInput = _t813; - bool _t814; - _t814 = Jwt_Verify(alg, signingInput, sigB64, key); - _t815 = !_t814; - if (!_t815) goto endif311; + const char* _t804; + _t804 = String_Concat(input, payloadB64); + signingInput = _t804; + bool _t805; + _t805 = Jwt_Verify(alg, signingInput, sigB64, key); + _t806 = !_t805; + if (!_t806) goto endif298; { return 0; } - endif311:; - const char* _t816; - _t816 = Base64URL_Decode(headerB64); - headerOut[0] = _t816; - const char* _t817; - _t817 = Base64URL_Decode(payloadB64); - payloadOut[0] = _t817; + endif298:; + const char* _t807; + _t807 = Base64URL_Decode(headerB64); + headerOut[0] = _t807; + const char* _t808; + _t808 = Base64URL_Decode(payloadB64); + payloadOut[0] = _t808; return 1; } const char* Jwt_EncodeHS256(const char* payloadJson, const char* secret) { const char* header; - const char* _t818; - _t818 = Jwt_MakeHeader(JwtAlg_HS256); - header = _t818; - const char* _t819; - _t819 = Jwt_Encode(header, payloadJson, JwtAlg_HS256, secret); - return _t819; + const char* _t809; + _t809 = Jwt_MakeHeader(JwtAlg_HS256); + header = _t809; + const char* _t810; + _t810 = Jwt_Encode(header, payloadJson, JwtAlg_HS256, secret); + return _t810; } const char* Jwt_EncodeHS384(const char* payloadJson, const char* secret) { const char* header; - const char* _t820; - _t820 = Jwt_MakeHeader(JwtAlg_HS384); - header = _t820; - const char* _t821; - _t821 = Jwt_Encode(header, payloadJson, JwtAlg_HS384, secret); - return _t821; + const char* _t811; + _t811 = Jwt_MakeHeader(JwtAlg_HS384); + header = _t811; + const char* _t812; + _t812 = Jwt_Encode(header, payloadJson, JwtAlg_HS384, secret); + return _t812; } const char* Jwt_EncodeHS512(const char* payloadJson, const char* secret) { const char* header; - const char* _t822; - _t822 = Jwt_MakeHeader(JwtAlg_HS512); - header = _t822; - const char* _t823; - _t823 = Jwt_Encode(header, payloadJson, JwtAlg_HS512, secret); - return _t823; + const char* _t813; + _t813 = Jwt_MakeHeader(JwtAlg_HS512); + header = _t813; + const char* _t814; + _t814 = Jwt_Encode(header, payloadJson, JwtAlg_HS512, secret); + return _t814; } const char* Jwt_EncodeRS256(const char* payloadJson, const char* pemPrivateKey) { const char* header; - const char* _t824; - _t824 = Jwt_MakeHeader(JwtAlg_RS256); - header = _t824; - const char* _t825; - _t825 = Jwt_Encode(header, payloadJson, JwtAlg_RS256, pemPrivateKey); - return _t825; + const char* _t815; + _t815 = Jwt_MakeHeader(JwtAlg_RS256); + header = _t815; + const char* _t816; + _t816 = Jwt_Encode(header, payloadJson, JwtAlg_RS256, pemPrivateKey); + return _t816; } const char* Jwt_EncodeES256(const char* payloadJson, const char* pemPrivateKey) { const char* header; - const char* _t826; - _t826 = Jwt_MakeHeader(JwtAlg_ES256); - header = _t826; - const char* _t827; - _t827 = Jwt_Encode(header, payloadJson, JwtAlg_ES256, pemPrivateKey); - return _t827; + const char* _t817; + _t817 = Jwt_MakeHeader(JwtAlg_ES256); + header = _t817; + const char* _t818; + _t818 = Jwt_Encode(header, payloadJson, JwtAlg_ES256, pemPrivateKey); + return _t818; } const char* Jwt_EncodeEdDSA(const char* payloadJson, const char* rawPrivKey) { const char* header; - const char* _t828; - _t828 = Jwt_MakeHeader(JwtAlg_EdDSA); - header = _t828; - const char* _t829; - _t829 = Jwt_Encode(header, payloadJson, JwtAlg_EdDSA, rawPrivKey); - return _t829; + const char* _t819; + _t819 = Jwt_MakeHeader(JwtAlg_EdDSA); + header = _t819; + const char* _t820; + _t820 = Jwt_Encode(header, payloadJson, JwtAlg_EdDSA, rawPrivKey); + return _t820; } const char* Ecdsa_SignP256(const char* pemPrivateKey, const char* data) { - int _t831; - int _t833; - void* _t834; + int _t822; + int _t824; + void* _t825; int siglen; siglen = 0; - unsigned int _t830; - _t830 = String_Len(pemPrivateKey); - _t831 = (int)_t830; - unsigned int _t832; - _t832 = String_Len(data); - _t833 = (int)_t832; - _t834 = &siglen; - const char* _t835; - _t835 = bux_ecdsa_sign_p256(pemPrivateKey, _t831, data, _t833, _t834); - return _t835; + unsigned int _t821; + _t821 = String_Len(pemPrivateKey); + _t822 = (int)_t821; + unsigned int _t823; + _t823 = String_Len(data); + _t824 = (int)_t823; + _t825 = &siglen; + const char* _t826; + _t826 = bux_ecdsa_sign_p256(pemPrivateKey, _t822, data, _t824, _t825); + return _t826; } const char* Ecdsa_SignP256Base64(const char* pemPrivateKey, const char* data) { - int _t838; + int _t829; const char* raw; - const char* _t836; - _t836 = Ecdsa_SignP256(pemPrivateKey, data); - raw = _t836; - unsigned int _t837; - _t837 = String_Len(raw); - _t838 = (int)_t837; - const char* _t839; - _t839 = bux_base64_encode(raw, _t838); - return _t839; + const char* _t827; + _t827 = Ecdsa_SignP256(pemPrivateKey, data); + raw = _t827; + unsigned int _t828; + _t828 = String_Len(raw); + _t829 = (int)_t828; + const char* _t830; + _t830 = bux_base64_encode(raw, _t829); + return _t830; } bool Ecdsa_VerifyP256(const char* pemPublicKey, const char* data, const char* signature) { - int _t841; - int _t843; - int _t845; - int _t847; + int _t832; + int _t834; + int _t836; + int _t838; int r; - unsigned int _t840; - _t840 = String_Len(pemPublicKey); - _t841 = (int)_t840; - unsigned int _t842; - _t842 = String_Len(data); - _t843 = (int)_t842; - unsigned int _t844; - _t844 = String_Len(signature); - _t845 = (int)_t844; - int _t846; - _t846 = bux_ecdsa_verify_p256(pemPublicKey, _t841, data, _t843, signature, _t845); - r = _t846; - _t847 = (r == 1); - return _t847; + unsigned int _t831; + _t831 = String_Len(pemPublicKey); + _t832 = (int)_t831; + unsigned int _t833; + _t833 = String_Len(data); + _t834 = (int)_t833; + unsigned int _t835; + _t835 = String_Len(signature); + _t836 = (int)_t835; + int _t837; + _t837 = bux_ecdsa_verify_p256(pemPublicKey, _t832, data, _t834, signature, _t836); + r = _t837; + _t838 = (r == 1); + return _t838; } bool Ecdsa_VerifyP256Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t849; - void* _t850; + int _t840; + void* _t841; int outlen; outlen = 0; const char* sig; - unsigned int _t848; - _t848 = String_Len(signatureB64); - _t849 = (int)_t848; - _t850 = &outlen; - const char* _t851; - _t851 = bux_base64_decode(signatureB64, _t849, _t850); - sig = _t851; - bool _t852; - _t852 = Ecdsa_VerifyP256(pemPublicKey, data, sig); - return _t852; + unsigned int _t839; + _t839 = String_Len(signatureB64); + _t840 = (int)_t839; + _t841 = &outlen; + const char* _t842; + _t842 = bux_base64_decode(signatureB64, _t840, _t841); + sig = _t842; + bool _t843; + _t843 = Ecdsa_VerifyP256(pemPublicKey, data, sig); + return _t843; } const char* Ecdsa_SignP384(const char* pemPrivateKey, const char* data) { - int _t854; - int _t856; - void* _t857; + int _t845; + int _t847; + void* _t848; int siglen; siglen = 0; - unsigned int _t853; - _t853 = String_Len(pemPrivateKey); - _t854 = (int)_t853; - unsigned int _t855; - _t855 = String_Len(data); - _t856 = (int)_t855; - _t857 = &siglen; - const char* _t858; - _t858 = bux_ecdsa_sign_p384(pemPrivateKey, _t854, data, _t856, _t857); - return _t858; + unsigned int _t844; + _t844 = String_Len(pemPrivateKey); + _t845 = (int)_t844; + unsigned int _t846; + _t846 = String_Len(data); + _t847 = (int)_t846; + _t848 = &siglen; + const char* _t849; + _t849 = bux_ecdsa_sign_p384(pemPrivateKey, _t845, data, _t847, _t848); + return _t849; } const char* Ecdsa_SignP384Base64(const char* pemPrivateKey, const char* data) { - int _t861; + int _t852; const char* raw; - const char* _t859; - _t859 = Ecdsa_SignP384(pemPrivateKey, data); - raw = _t859; - unsigned int _t860; - _t860 = String_Len(raw); - _t861 = (int)_t860; - const char* _t862; - _t862 = bux_base64_encode(raw, _t861); - return _t862; + const char* _t850; + _t850 = Ecdsa_SignP384(pemPrivateKey, data); + raw = _t850; + unsigned int _t851; + _t851 = String_Len(raw); + _t852 = (int)_t851; + const char* _t853; + _t853 = bux_base64_encode(raw, _t852); + return _t853; } bool Ecdsa_VerifyP384(const char* pemPublicKey, const char* data, const char* signature) { - int _t864; - int _t866; - int _t868; - int _t870; + int _t855; + int _t857; + int _t859; + int _t861; int r; - unsigned int _t863; - _t863 = String_Len(pemPublicKey); - _t864 = (int)_t863; - unsigned int _t865; - _t865 = String_Len(data); - _t866 = (int)_t865; - unsigned int _t867; - _t867 = String_Len(signature); - _t868 = (int)_t867; - int _t869; - _t869 = bux_ecdsa_verify_p384(pemPublicKey, _t864, data, _t866, signature, _t868); - r = _t869; - _t870 = (r == 1); - return _t870; + unsigned int _t854; + _t854 = String_Len(pemPublicKey); + _t855 = (int)_t854; + unsigned int _t856; + _t856 = String_Len(data); + _t857 = (int)_t856; + unsigned int _t858; + _t858 = String_Len(signature); + _t859 = (int)_t858; + int _t860; + _t860 = bux_ecdsa_verify_p384(pemPublicKey, _t855, data, _t857, signature, _t859); + r = _t860; + _t861 = (r == 1); + return _t861; } bool Ecdsa_VerifyP384Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t872; - void* _t873; + int _t863; + void* _t864; int outlen; outlen = 0; const char* sig; - unsigned int _t871; - _t871 = String_Len(signatureB64); - _t872 = (int)_t871; - _t873 = &outlen; - const char* _t874; - _t874 = bux_base64_decode(signatureB64, _t872, _t873); - sig = _t874; - bool _t875; - _t875 = Ecdsa_VerifyP384(pemPublicKey, data, sig); - return _t875; + unsigned int _t862; + _t862 = String_Len(signatureB64); + _t863 = (int)_t862; + _t864 = &outlen; + const char* _t865; + _t865 = bux_base64_decode(signatureB64, _t863, _t864); + sig = _t865; + bool _t866; + _t866 = Ecdsa_VerifyP384(pemPublicKey, data, sig); + return _t866; } bool Ed25519_Keypair(void* pubKey, void* privKey) { - int _t877; + int _t868; int r; - int _t876; - _t876 = bux_ed25519_keypair(pubKey, privKey); - r = _t876; - _t877 = (r == 1); - return _t877; + int _t867; + _t867 = bux_ed25519_keypair(pubKey, privKey); + r = _t867; + _t868 = (r == 1); + return _t868; } const char* Ed25519_KeypairBase64(void) { - unsigned int _t878; - unsigned int _t880; - int _t883; - const char* _t884; - const char* _t886; + unsigned int _t869; + unsigned int _t871; + int _t874; + const char* _t875; + const char* _t877; void* pubBuf; - _t878 = (unsigned int)ED25519_PUBKEY_SIZE; - void* _t879; - _t879 = Alloc(_t878); - pubBuf = _t879; + _t869 = (unsigned int)ED25519_PUBKEY_SIZE; + void* _t870; + _t870 = Alloc(_t869); + pubBuf = _t870; void* priv; - _t880 = (unsigned int)ED25519_PRIVKEY_SIZE; - void* _t881; - _t881 = Alloc(_t880); - priv = _t881; - int _t882; - _t882 = bux_ed25519_keypair(pubBuf, priv); - _t883 = (_t882 != 1); - if (!_t883) goto endif313; + _t871 = (unsigned int)ED25519_PRIVKEY_SIZE; + void* _t872; + _t872 = Alloc(_t871); + priv = _t872; + int _t873; + _t873 = bux_ed25519_keypair(pubBuf, priv); + _t874 = (_t873 != 1); + if (!_t874) goto endif300; { Free(pubBuf); Free(priv); return ""; } - endif313:; + endif300:; const char* pubB64; - _t884 = (const char*)pubBuf; - const char* _t885; - _t885 = bux_base64_encode(_t884, ED25519_PUBKEY_SIZE); - pubB64 = _t885; + _t875 = (const char*)pubBuf; + const char* _t876; + _t876 = bux_base64_encode(_t875, ED25519_PUBKEY_SIZE); + pubB64 = _t876; const char* privB64; - _t886 = (const char*)priv; - const char* _t887; - _t887 = bux_base64_encode(_t886, ED25519_PRIVKEY_SIZE); - privB64 = _t887; + _t877 = (const char*)priv; + const char* _t878; + _t878 = bux_base64_encode(_t877, ED25519_PRIVKEY_SIZE); + privB64 = _t878; Free(pubBuf); Free(priv); const char* pair; - const char* _t888; - _t888 = String_Concat(pubB64, ":"); - pair = _t888; - const char* _t889; - _t889 = String_Concat(pair, privB64); - return _t889; + const char* _t879; + _t879 = String_Concat(pubB64, ":"); + pair = _t879; + const char* _t880; + _t880 = String_Concat(pair, privB64); + return _t880; } const char* Ed25519_Sign(const char* privKey, const char* data) { - unsigned int _t890; - int _t893; - int _t895; - const char* _t896; + unsigned int _t881; + int _t884; + int _t886; + const char* _t887; void* sig; - _t890 = (unsigned int)ED25519_SIG_SIZE; - void* _t891; - _t891 = Alloc(_t890); - sig = _t891; - unsigned int _t892; - _t892 = String_Len(data); - _t893 = (int)_t892; - int _t894; - _t894 = bux_ed25519_sign(privKey, data, _t893, sig); - _t895 = (_t894 != 1); - if (!_t895) goto endif315; + _t881 = (unsigned int)ED25519_SIG_SIZE; + void* _t882; + _t882 = Alloc(_t881); + sig = _t882; + unsigned int _t883; + _t883 = String_Len(data); + _t884 = (int)_t883; + int _t885; + _t885 = bux_ed25519_sign(privKey, data, _t884, sig); + _t886 = (_t885 != 1); + if (!_t886) goto endif302; { Free(sig); return ""; } - endif315:; - _t896 = (const char*)sig; - return _t896; + endif302:; + _t887 = (const char*)sig; + return _t887; } const char* Ed25519_SignBase64(const char* privKey, const char* data) { - int _t899; + int _t890; const char* sig; - const char* _t897; - _t897 = Ed25519_Sign(privKey, data); - sig = _t897; - unsigned int _t898; - _t898 = String_Len(sig); - _t899 = (_t898 == 0); - if (!_t899) goto endif317; + const char* _t888; + _t888 = Ed25519_Sign(privKey, data); + sig = _t888; + unsigned int _t889; + _t889 = String_Len(sig); + _t890 = (_t889 == 0); + if (!_t890) goto endif304; { return ""; } - endif317:; - const char* _t900; - _t900 = bux_base64_encode(sig, ED25519_SIG_SIZE); - return _t900; + endif304:; + const char* _t891; + _t891 = bux_base64_encode(sig, ED25519_SIG_SIZE); + return _t891; } bool Ed25519_Verify(const char* pubKey, const char* signature, const char* data) { - int _t902; - int _t904; + int _t893; + int _t895; int r; - unsigned int _t901; - _t901 = String_Len(data); - _t902 = (int)_t901; - int _t903; - _t903 = bux_ed25519_verify(pubKey, signature, data, _t902); - r = _t903; - _t904 = (r == 1); - return _t904; + unsigned int _t892; + _t892 = String_Len(data); + _t893 = (int)_t892; + int _t894; + _t894 = bux_ed25519_verify(pubKey, signature, data, _t893); + r = _t894; + _t895 = (r == 1); + return _t895; } bool Ed25519_VerifyBase64(const char* pubKey, const char* signatureB64, const char* data) { - int _t906; - void* _t907; - int _t909; + int _t897; + void* _t898; + int _t900; int outlen; outlen = 0; const char* sig; - unsigned int _t905; - _t905 = String_Len(signatureB64); - _t906 = (int)_t905; - _t907 = &outlen; - const char* _t908; - _t908 = bux_base64_decode(signatureB64, _t906, _t907); - sig = _t908; - _t909 = (outlen != ED25519_SIG_SIZE); - if (!_t909) goto endif319; + unsigned int _t896; + _t896 = String_Len(signatureB64); + _t897 = (int)_t896; + _t898 = &outlen; + const char* _t899; + _t899 = bux_base64_decode(signatureB64, _t897, _t898); + sig = _t899; + _t900 = (outlen != ED25519_SIG_SIZE); + if (!_t900) goto endif306; { return 0; } - endif319:; - bool _t910; - _t910 = Ed25519_Verify(pubKey, sig, data); - return _t910; + endif306:; + bool _t901; + _t901 = Ed25519_Verify(pubKey, sig, data); + return _t901; } const char* Rsa_SignSha256(const char* pemPrivateKey, const char* data) { - int _t912; - int _t914; - void* _t915; + int _t903; + int _t905; + void* _t906; int siglen; siglen = 0; - unsigned int _t911; - _t911 = String_Len(pemPrivateKey); - _t912 = (int)_t911; - unsigned int _t913; - _t913 = String_Len(data); - _t914 = (int)_t913; - _t915 = &siglen; - const char* _t916; - _t916 = bux_rsa_sign_sha256(pemPrivateKey, _t912, data, _t914, _t915); - return _t916; + unsigned int _t902; + _t902 = String_Len(pemPrivateKey); + _t903 = (int)_t902; + unsigned int _t904; + _t904 = String_Len(data); + _t905 = (int)_t904; + _t906 = &siglen; + const char* _t907; + _t907 = bux_rsa_sign_sha256(pemPrivateKey, _t903, data, _t905, _t906); + return _t907; } const char* Rsa_SignSha384(const char* pemPrivateKey, const char* data) { - int _t918; - int _t920; - void* _t921; + int _t909; + int _t911; + void* _t912; int siglen; siglen = 0; - unsigned int _t917; - _t917 = String_Len(pemPrivateKey); - _t918 = (int)_t917; - unsigned int _t919; - _t919 = String_Len(data); - _t920 = (int)_t919; - _t921 = &siglen; - const char* _t922; - _t922 = bux_rsa_sign_sha384(pemPrivateKey, _t918, data, _t920, _t921); - return _t922; + unsigned int _t908; + _t908 = String_Len(pemPrivateKey); + _t909 = (int)_t908; + unsigned int _t910; + _t910 = String_Len(data); + _t911 = (int)_t910; + _t912 = &siglen; + const char* _t913; + _t913 = bux_rsa_sign_sha384(pemPrivateKey, _t909, data, _t911, _t912); + return _t913; } const char* Rsa_SignSha512(const char* pemPrivateKey, const char* data) { - int _t924; - int _t926; - void* _t927; + int _t915; + int _t917; + void* _t918; int siglen; siglen = 0; - unsigned int _t923; - _t923 = String_Len(pemPrivateKey); - _t924 = (int)_t923; - unsigned int _t925; - _t925 = String_Len(data); - _t926 = (int)_t925; - _t927 = &siglen; - const char* _t928; - _t928 = bux_rsa_sign_sha512(pemPrivateKey, _t924, data, _t926, _t927); - return _t928; + unsigned int _t914; + _t914 = String_Len(pemPrivateKey); + _t915 = (int)_t914; + unsigned int _t916; + _t916 = String_Len(data); + _t917 = (int)_t916; + _t918 = &siglen; + const char* _t919; + _t919 = bux_rsa_sign_sha512(pemPrivateKey, _t915, data, _t917, _t918); + return _t919; } const char* Rsa_SignSha256Base64(const char* pemPrivateKey, const char* data) { - int _t931; + int _t922; const char* raw; - const char* _t929; - _t929 = Rsa_SignSha256(pemPrivateKey, data); - raw = _t929; - unsigned int _t930; - _t930 = String_Len(raw); - _t931 = (int)_t930; - const char* _t932; - _t932 = bux_base64_encode(raw, _t931); - return _t932; + const char* _t920; + _t920 = Rsa_SignSha256(pemPrivateKey, data); + raw = _t920; + unsigned int _t921; + _t921 = String_Len(raw); + _t922 = (int)_t921; + const char* _t923; + _t923 = bux_base64_encode(raw, _t922); + return _t923; } const char* Rsa_SignSha384Base64(const char* pemPrivateKey, const char* data) { - int _t935; + int _t926; const char* raw; - const char* _t933; - _t933 = Rsa_SignSha384(pemPrivateKey, data); - raw = _t933; - unsigned int _t934; - _t934 = String_Len(raw); - _t935 = (int)_t934; - const char* _t936; - _t936 = bux_base64_encode(raw, _t935); - return _t936; + const char* _t924; + _t924 = Rsa_SignSha384(pemPrivateKey, data); + raw = _t924; + unsigned int _t925; + _t925 = String_Len(raw); + _t926 = (int)_t925; + const char* _t927; + _t927 = bux_base64_encode(raw, _t926); + return _t927; } const char* Rsa_SignSha512Base64(const char* pemPrivateKey, const char* data) { - int _t939; + int _t930; const char* raw; - const char* _t937; - _t937 = Rsa_SignSha512(pemPrivateKey, data); - raw = _t937; - unsigned int _t938; - _t938 = String_Len(raw); - _t939 = (int)_t938; - const char* _t940; - _t940 = bux_base64_encode(raw, _t939); - return _t940; + const char* _t928; + _t928 = Rsa_SignSha512(pemPrivateKey, data); + raw = _t928; + unsigned int _t929; + _t929 = String_Len(raw); + _t930 = (int)_t929; + const char* _t931; + _t931 = bux_base64_encode(raw, _t930); + return _t931; } bool Rsa_VerifySha256(const char* pemPublicKey, const char* data, const char* signature) { - int _t942; - int _t944; - int _t946; - int _t948; + int _t933; + int _t935; + int _t937; + int _t939; int r; - unsigned int _t941; - _t941 = String_Len(pemPublicKey); - _t942 = (int)_t941; - unsigned int _t943; - _t943 = String_Len(data); - _t944 = (int)_t943; - unsigned int _t945; - _t945 = String_Len(signature); - _t946 = (int)_t945; - int _t947; - _t947 = bux_rsa_verify_sha256(pemPublicKey, _t942, data, _t944, signature, _t946); - r = _t947; - _t948 = (r == 1); - return _t948; + unsigned int _t932; + _t932 = String_Len(pemPublicKey); + _t933 = (int)_t932; + unsigned int _t934; + _t934 = String_Len(data); + _t935 = (int)_t934; + unsigned int _t936; + _t936 = String_Len(signature); + _t937 = (int)_t936; + int _t938; + _t938 = bux_rsa_verify_sha256(pemPublicKey, _t933, data, _t935, signature, _t937); + r = _t938; + _t939 = (r == 1); + return _t939; } bool Rsa_VerifySha384(const char* pemPublicKey, const char* data, const char* signature) { - int _t950; - int _t952; - int _t954; - int _t956; + int _t941; + int _t943; + int _t945; + int _t947; int r; - unsigned int _t949; - _t949 = String_Len(pemPublicKey); - _t950 = (int)_t949; - unsigned int _t951; - _t951 = String_Len(data); - _t952 = (int)_t951; - unsigned int _t953; - _t953 = String_Len(signature); - _t954 = (int)_t953; - int _t955; - _t955 = bux_rsa_verify_sha384(pemPublicKey, _t950, data, _t952, signature, _t954); - r = _t955; - _t956 = (r == 1); - return _t956; + unsigned int _t940; + _t940 = String_Len(pemPublicKey); + _t941 = (int)_t940; + unsigned int _t942; + _t942 = String_Len(data); + _t943 = (int)_t942; + unsigned int _t944; + _t944 = String_Len(signature); + _t945 = (int)_t944; + int _t946; + _t946 = bux_rsa_verify_sha384(pemPublicKey, _t941, data, _t943, signature, _t945); + r = _t946; + _t947 = (r == 1); + return _t947; } bool Rsa_VerifySha512(const char* pemPublicKey, const char* data, const char* signature) { - int _t958; - int _t960; - int _t962; - int _t964; + int _t949; + int _t951; + int _t953; + int _t955; int r; - unsigned int _t957; - _t957 = String_Len(pemPublicKey); - _t958 = (int)_t957; - unsigned int _t959; - _t959 = String_Len(data); - _t960 = (int)_t959; - unsigned int _t961; - _t961 = String_Len(signature); - _t962 = (int)_t961; - int _t963; - _t963 = bux_rsa_verify_sha512(pemPublicKey, _t958, data, _t960, signature, _t962); - r = _t963; - _t964 = (r == 1); - return _t964; + unsigned int _t948; + _t948 = String_Len(pemPublicKey); + _t949 = (int)_t948; + unsigned int _t950; + _t950 = String_Len(data); + _t951 = (int)_t950; + unsigned int _t952; + _t952 = String_Len(signature); + _t953 = (int)_t952; + int _t954; + _t954 = bux_rsa_verify_sha512(pemPublicKey, _t949, data, _t951, signature, _t953); + r = _t954; + _t955 = (r == 1); + return _t955; } bool Rsa_VerifySha256Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t966; - void* _t967; + int _t957; + void* _t958; int outlen; outlen = 0; const char* sig; - unsigned int _t965; - _t965 = String_Len(signatureB64); - _t966 = (int)_t965; - _t967 = &outlen; - const char* _t968; - _t968 = bux_base64_decode(signatureB64, _t966, _t967); - sig = _t968; - bool _t969; - _t969 = Rsa_VerifySha256(pemPublicKey, data, sig); - return _t969; + unsigned int _t956; + _t956 = String_Len(signatureB64); + _t957 = (int)_t956; + _t958 = &outlen; + const char* _t959; + _t959 = bux_base64_decode(signatureB64, _t957, _t958); + sig = _t959; + bool _t960; + _t960 = Rsa_VerifySha256(pemPublicKey, data, sig); + return _t960; } bool Rsa_VerifySha384Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t971; - void* _t972; + int _t962; + void* _t963; int outlen; outlen = 0; const char* sig; - unsigned int _t970; - _t970 = String_Len(signatureB64); - _t971 = (int)_t970; - _t972 = &outlen; - const char* _t973; - _t973 = bux_base64_decode(signatureB64, _t971, _t972); - sig = _t973; - bool _t974; - _t974 = Rsa_VerifySha384(pemPublicKey, data, sig); - return _t974; + unsigned int _t961; + _t961 = String_Len(signatureB64); + _t962 = (int)_t961; + _t963 = &outlen; + const char* _t964; + _t964 = bux_base64_decode(signatureB64, _t962, _t963); + sig = _t964; + bool _t965; + _t965 = Rsa_VerifySha384(pemPublicKey, data, sig); + return _t965; } bool Rsa_VerifySha512Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t976; - void* _t977; + int _t967; + void* _t968; int outlen; outlen = 0; const char* sig; - unsigned int _t975; - _t975 = String_Len(signatureB64); - _t976 = (int)_t975; - _t977 = &outlen; - const char* _t978; - _t978 = bux_base64_decode(signatureB64, _t976, _t977); - sig = _t978; - bool _t979; - _t979 = Rsa_VerifySha512(pemPublicKey, data, sig); - return _t979; + unsigned int _t966; + _t966 = String_Len(signatureB64); + _t967 = (int)_t966; + _t968 = &outlen; + const char* _t969; + _t969 = bux_base64_decode(signatureB64, _t967, _t968); + sig = _t969; + bool _t970; + _t970 = Rsa_VerifySha512(pemPublicKey, data, sig); + return _t970; } int Main(void) { - int _t986; + int _t977; const char* hello; hello = "Hello"; const char* world; world = "World"; PrintLine("String operations:"); PrintLine("Length of 'Hello':"); - unsigned int _t980; - _t980 = String_Len(hello); - PrintInt(_t980); + unsigned int _t971; + _t971 = String_Len(hello); + PrintInt(_t971); PrintLine(""); const char* greeting; - const char* _t981; - _t981 = String_Concat(hello, ", "); - greeting = _t981; + const char* _t972; + _t972 = String_Concat(hello, ", "); + greeting = _t972; const char* greeting2; - const char* _t982; - _t982 = String_Concat(greeting, world); - greeting2 = _t982; + const char* _t973; + _t973 = String_Concat(greeting, world); + greeting2 = _t973; const char* full; - const char* _t983; - _t983 = String_Concat(greeting2, "!"); - full = _t983; + const char* _t974; + _t974 = String_Concat(greeting2, "!"); + full = _t974; PrintLine("Concatenated:"); PrintLine(full); - bool _t984; - _t984 = String_Eq(hello, "Hello"); - if (!_t984) goto endif321; + bool _t975; + _t975 = String_Eq(hello, "Hello"); + if (!_t975) goto endif308; { PrintLine("'Hello' equals 'Hello'"); } - endif321:; - bool _t985; - _t985 = String_Eq(hello, world); - _t986 = !_t985; - if (!_t986) goto endif323; + endif308:; + bool _t976; + _t976 = String_Eq(hello, world); + _t977 = !_t976; + if (!_t977) goto endif310; { PrintLine("'Hello' does not equal 'World'"); } - endif323:; + endif310:; return 0; } diff --git a/tests/golden/structs/expected.c b/tests/golden/structs/expected.c index b078dd2..4ad6106 100644 --- a/tests/golden/structs/expected.c +++ b/tests/golden/structs/expected.c @@ -199,6 +199,34 @@ extern const char* bux_base64_decode(const char* data, int len, int* outlen); #define ED25519_PRIVKEY_SIZE 32 #define ED25519_SIG_SIZE 64 +typedef struct Channel_float64 { + void* handle; +} Channel_float64; + +typedef struct TaskHandle { + void* handle; +} TaskHandle; + +typedef struct RwLock { + void* handle; +} RwLock; + +typedef struct Channel_int { + void* handle; +} Channel_int; + +typedef enum { + JwtAlg_HS256, + JwtAlg_HS384, + JwtAlg_HS512, + JwtAlg_RS256, + JwtAlg_RS384, + JwtAlg_RS512, + JwtAlg_ES256, + JwtAlg_ES384, + JwtAlg_EdDSA +} JwtAlg; + typedef enum { Result_Ok, Result_Err @@ -228,31 +256,6 @@ typedef struct { Option_Data data; } Option; -typedef enum { - JwtAlg_HS256, - JwtAlg_HS384, - JwtAlg_HS512, - JwtAlg_RS256, - JwtAlg_RS384, - JwtAlg_RS512, - JwtAlg_ES256, - JwtAlg_ES384, - JwtAlg_EdDSA -} JwtAlg; - - -typedef struct TaskHandle { - void* handle; -} TaskHandle; - -typedef struct Mutex { - void* handle; -} Mutex; - -typedef struct RwLock { - void* handle; -} RwLock; - typedef struct JsonValue { int tag; bool boolVal; @@ -267,12 +270,9 @@ typedef struct JsonValue { unsigned int objCap; } JsonValue; -typedef struct JsonParser { - const char* src; - unsigned int pos; - unsigned int len; - const char* error; -} JsonParser; +typedef struct Mutex { + void* handle; +} Mutex; typedef struct StringBuilder { void* handle; @@ -283,13 +283,12 @@ typedef struct Point { int y; } Point; -typedef struct Channel_int { - void* handle; -} Channel_int; - -typedef struct Channel_float64 { - void* handle; -} Channel_float64; +typedef struct JsonParser { + const char* src; + unsigned int pos; + unsigned int len; + const char* error; +} JsonParser; bool DirExists(const char* path); bool Mkdir(const char* path); @@ -873,7 +872,7 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { tmplLen = _t60; while1:; _t61 = (i < tmplLen); - if (!_t61) goto wend3; + if (!_t61) goto wend2; { const char* ch; const char* _t62; @@ -881,13 +880,13 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { ch = _t62; bool _t63; _t63 = String_Eq(ch, "{"); - if (!_t63) goto endif5; + if (!_t63) goto endif4; { unsigned int digitIdx; _t64 = i + 1; digitIdx = _t64; _t65 = (digitIdx < tmplLen); - if (!_t65) goto endif7; + if (!_t65) goto endif6; { const char* digitCh; const char* _t66; @@ -899,22 +898,22 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { d = _t67; bool __and_tmp_0; _t68 = (d >= 0); - if (!_t68) goto else8; + if (!_t68) goto else7; _t69 = (int64_t)argCount; _t70 = (d < _t69); *(bool*)&__and_tmp_0 = _t70; - goto endif9; - else8:; + goto endif8; + else7:; *(bool*)&__and_tmp_0 = 0; - endif9:; + endif8:; bool _t71; _t71 = *(bool*)&__and_tmp_0; - if (!_t71) goto endif11; + if (!_t71) goto endif10; { _t72 = i + 2; i = _t72; _t73 = (i < tmplLen); - if (!_t73) goto endif13; + if (!_t73) goto endif12; { const char* closeCh; const char* _t74; @@ -922,7 +921,7 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { closeCh = _t74; bool _t75; _t75 = String_Eq(closeCh, "}"); - if (!_t75) goto endif15; + if (!_t75) goto endif14; { _t76 = i + 1; i = _t76; @@ -935,22 +934,22 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { StringBuilder_Append(_t79, argStr); goto while1; } - endif15:; + endif14:; } - endif13:; + endif12:; } - endif11:; + endif10:; } - endif7:; + endif6:; } - endif5:; + endif4:; _t80 = &sb; StringBuilder_Append(_t80, ch); _t81 = i + 1; i = _t81; } goto while1; - wend3:; + wend2:; _t82 = &sb; const char* _t83; _t83 = StringBuilder_Build(_t82); @@ -958,276 +957,276 @@ const char* Fmt_Format(const char* tmpl, const char** argStrs, int argCount) { } const char* Fmt_Fmt1(const char* tmpl, const char* a1) { - const char** _t86; + const char** _t85; const char** args; /* sizeof(const char*) */ - void* _t85; - _t85 = bux_alloc(sizeof(const char*)); - _t86 = (const char**)_t85; - args = _t86; + void* _t84; + _t84 = bux_alloc(sizeof(const char*)); + _t85 = (const char**)_t84; + args = _t85; args[0] = a1; - const char* _t87; - _t87 = Fmt_Format(tmpl, args, 1); - return _t87; + const char* _t86; + _t86 = Fmt_Format(tmpl, args, 1); + return _t86; } const char* Fmt_FmtInt(const char* tmpl, int64_t val) { const char* s; + const char* _t87; + _t87 = String_FromInt(val); + s = _t87; const char* _t88; - _t88 = String_FromInt(val); - s = _t88; - const char* _t89; - _t89 = Fmt_Fmt1(tmpl, s); - return _t89; + _t88 = Fmt_Fmt1(tmpl, s); + return _t88; } const char* Fmt_FmtBool(const char* tmpl, bool val) { const char* s; + const char* _t89; + _t89 = String_FromBool(val); + s = _t89; const char* _t90; - _t90 = String_FromBool(val); - s = _t90; - const char* _t91; - _t91 = Fmt_Fmt1(tmpl, s); - return _t91; + _t90 = Fmt_Fmt1(tmpl, s); + return _t90; } const char* Fmt_FmtFloat(const char* tmpl, double val) { const char* s; + const char* _t91; + _t91 = String_FromFloat(val); + s = _t91; const char* _t92; - _t92 = String_FromFloat(val); - s = _t92; - const char* _t93; - _t93 = Fmt_Fmt1(tmpl, s); - return _t93; + _t92 = Fmt_Fmt1(tmpl, s); + return _t92; } const char* Fmt_Fmt2(const char* tmpl, const char* a1, const char* a2) { - int _t95; - const char** _t97; + int _t93; + const char** _t95; const char** args; /* sizeof(const char*) */ - _t95 = 2 * sizeof(const char*); - void* _t96; - _t96 = bux_alloc(_t95); - _t97 = (const char**)_t96; - args = _t97; + _t93 = 2 * sizeof(const char*); + void* _t94; + _t94 = bux_alloc(_t93); + _t95 = (const char**)_t94; + args = _t95; args[0] = a1; args[1] = a2; - const char* _t98; - _t98 = Fmt_Format(tmpl, args, 2); - return _t98; + const char* _t96; + _t96 = Fmt_Format(tmpl, args, 2); + return _t96; } const char* Fmt_Fmt3(const char* tmpl, const char* a1, const char* a2, const char* a3) { - int _t100; - const char** _t102; + int _t97; + const char** _t99; const char** args; /* sizeof(const char*) */ - _t100 = 3 * sizeof(const char*); - void* _t101; - _t101 = bux_alloc(_t100); - _t102 = (const char**)_t101; - args = _t102; + _t97 = 3 * sizeof(const char*); + void* _t98; + _t98 = bux_alloc(_t97); + _t99 = (const char**)_t98; + args = _t99; args[0] = a1; args[1] = a2; args[2] = a3; - const char* _t103; - _t103 = Fmt_Format(tmpl, args, 3); - return _t103; + const char* _t100; + _t100 = Fmt_Format(tmpl, args, 3); + return _t100; } const char* Crypto_Sha256(const char* data) { - int _t105; - void* _t107; + int _t102; + void* _t104; int len; - unsigned int _t104; - _t104 = String_Len(data); - _t105 = (int)_t104; - len = _t105; + unsigned int _t101; + _t101 = String_Len(data); + _t102 = (int)_t101; + len = _t102; void* hashBuf; - void* _t106; - _t106 = Alloc(32); - hashBuf = _t106; + void* _t103; + _t103 = Alloc(32); + hashBuf = _t103; bux_sha256(data, len, hashBuf); const char* result; - _t107 = (void*)hashBuf; - const char* _t108; - _t108 = bux_bytes_to_hex(_t107, 32); - result = _t108; + _t104 = (void*)hashBuf; + const char* _t105; + _t105 = bux_bytes_to_hex(_t104, 32); + result = _t105; Free(hashBuf); return result; } const char* Crypto_HmacSha256(const char* key, const char* message) { - int _t110; - int _t112; - void* _t114; + int _t107; + int _t109; + void* _t111; int keylen; - unsigned int _t109; - _t109 = String_Len(key); - _t110 = (int)_t109; - keylen = _t110; + unsigned int _t106; + _t106 = String_Len(key); + _t107 = (int)_t106; + keylen = _t107; int msglen; - unsigned int _t111; - _t111 = String_Len(message); - _t112 = (int)_t111; - msglen = _t112; + unsigned int _t108; + _t108 = String_Len(message); + _t109 = (int)_t108; + msglen = _t109; void* hmacBuf; - void* _t113; - _t113 = Alloc(32); - hmacBuf = _t113; + void* _t110; + _t110 = Alloc(32); + hmacBuf = _t110; bux_hmac_sha256(key, keylen, message, msglen, hmacBuf); const char* result; - _t114 = (void*)hmacBuf; - const char* _t115; - _t115 = bux_bytes_to_hex(_t114, 32); - result = _t115; + _t111 = (void*)hmacBuf; + const char* _t112; + _t112 = bux_bytes_to_hex(_t111, 32); + result = _t112; Free(hmacBuf); return result; } const char* Crypto_RandomBytes(int n) { - int _t116; - unsigned int _t117; - int _t120; - const char* _t121; - _t116 = (n <= 0); - if (!_t116) goto endif17; + int _t113; + unsigned int _t114; + int _t117; + const char* _t118; + _t113 = (n <= 0); + if (!_t113) goto endif16; { return ""; } - endif17:; + endif16:; void* buf; - _t117 = (unsigned int)n; - void* _t118; - _t118 = Alloc(_t117); - buf = _t118; - int _t119; - _t119 = bux_random_bytes(buf, n); - _t120 = (_t119 != 1); - if (!_t120) goto endif19; + _t114 = (unsigned int)n; + void* _t115; + _t115 = Alloc(_t114); + buf = _t115; + int _t116; + _t116 = bux_random_bytes(buf, n); + _t117 = (_t116 != 1); + if (!_t117) goto endif18; { Free(buf); return ""; } - endif19:; + endif18:; const char* result; - _t121 = (const char*)buf; - const char* _t122; - _t122 = bux_base64_encode(_t121, n); - result = _t122; + _t118 = (const char*)buf; + const char* _t119; + _t119 = bux_base64_encode(_t118, n); + result = _t119; Free(buf); return result; } const char* Crypto_Base64Encode(const char* s) { - int _t124; - unsigned int _t123; - _t123 = String_Len(s); - _t124 = (int)_t123; - const char* _t125; - _t125 = bux_base64_encode(s, _t124); - return _t125; + int _t121; + unsigned int _t120; + _t120 = String_Len(s); + _t121 = (int)_t120; + const char* _t122; + _t122 = bux_base64_encode(s, _t121); + return _t122; } const char* Crypto_HmacSha256Raw(const char* key, const char* message) { - int _t127; - int _t129; - const char* _t131; + int _t124; + int _t126; + const char* _t128; int keylen; - unsigned int _t126; - _t126 = String_Len(key); - _t127 = (int)_t126; - keylen = _t127; + unsigned int _t123; + _t123 = String_Len(key); + _t124 = (int)_t123; + keylen = _t124; int msglen; - unsigned int _t128; - _t128 = String_Len(message); - _t129 = (int)_t128; - msglen = _t129; + unsigned int _t125; + _t125 = String_Len(message); + _t126 = (int)_t125; + msglen = _t126; void* hmacBuf; - void* _t130; - _t130 = Alloc(32); - hmacBuf = _t130; + void* _t127; + _t127 = Alloc(32); + hmacBuf = _t127; bux_hmac_sha256(key, keylen, message, msglen, hmacBuf); const char* result; - _t131 = (const char*)hmacBuf; - const char* _t132; - _t132 = bux_base64_encode(_t131, 32); - result = _t132; + _t128 = (const char*)hmacBuf; + const char* _t129; + _t129 = bux_base64_encode(_t128, 32); + result = _t129; Free(hmacBuf); return result; } const char* Crypto_Base64Decode(const char* s) { - int _t134; - void* _t135; + int _t131; + void* _t132; int outlen; outlen = 0; - unsigned int _t133; - _t133 = String_Len(s); - _t134 = (int)_t133; - _t135 = &outlen; - const char* _t136; - _t136 = bux_base64_decode(s, _t134, _t135); - return _t136; + unsigned int _t130; + _t130 = String_Len(s); + _t131 = (int)_t130; + _t132 = &outlen; + const char* _t133; + _t133 = bux_base64_decode(s, _t131, _t132); + return _t133; } Mutex Mutex_New(void) { - Mutex _t138; - void* _t137; - _t137 = bux_mutex_new(); - _t138 = (Mutex){.handle = _t137}; - return _t138; + Mutex _t135; + void* _t134; + _t134 = bux_mutex_new(); + _t135 = (Mutex){.handle = _t134}; + return _t135; } void Mutex_Lock(Mutex* m) { - void* _t139; - _t139 = m->handle; - bux_mutex_lock(_t139); + void* _t136; + _t136 = m->handle; + bux_mutex_lock(_t136); } void Mutex_Unlock(Mutex* m) { - void* _t140; - _t140 = m->handle; - bux_mutex_unlock(_t140); + void* _t137; + _t137 = m->handle; + bux_mutex_unlock(_t137); } void Mutex_Free(Mutex* m) { - void* _t141; - _t141 = m->handle; - bux_mutex_free(_t141); + void* _t138; + _t138 = m->handle; + bux_mutex_free(_t138); } RwLock RwLock_New(void) { - RwLock _t143; - void* _t142; - _t142 = bux_rwlock_new(); - _t143 = (RwLock){.handle = _t142}; - return _t143; + RwLock _t140; + void* _t139; + _t139 = bux_rwlock_new(); + _t140 = (RwLock){.handle = _t139}; + return _t140; } void RwLock_ReadLock(RwLock* rw) { - void* _t144; - _t144 = rw->handle; - bux_rwlock_rdlock(_t144); + void* _t141; + _t141 = rw->handle; + bux_rwlock_rdlock(_t141); } void RwLock_WriteLock(RwLock* rw) { - void* _t145; - _t145 = rw->handle; - bux_rwlock_wrlock(_t145); + void* _t142; + _t142 = rw->handle; + bux_rwlock_wrlock(_t142); } void RwLock_Unlock(RwLock* rw) { - void* _t146; - _t146 = rw->handle; - bux_rwlock_unlock(_t146); + void* _t143; + _t143 = rw->handle; + bux_rwlock_unlock(_t143); } void RwLock_Free(RwLock* rw) { - void* _t147; - _t147 = rw->handle; - bux_rwlock_free(_t147); + void* _t144; + _t144 = rw->handle; + bux_rwlock_free(_t144); } void Test_Exit(int code) { @@ -1235,15 +1234,15 @@ void Test_Exit(int code) { } void Test_Assert(bool cond) { - int _t148; - _t148 = (int)cond; - bux_assert(_t148, "", 0, ""); + int _t145; + _t145 = (int)cond; + bux_assert(_t145, "", 0, ""); } void Test_AssertEqInt(int a, int b) { - int _t149; - _t149 = (a != b); - if (!_t149) goto endif21; + int _t146; + _t146 = (a != b); + if (!_t146) goto endif20; { PrintLine("ASSERT_EQ FAILED:"); PrintInt(a); @@ -1251,27 +1250,27 @@ void Test_AssertEqInt(int a, int b) { PrintInt(b); bux_exit(1); } - endif21:; + endif20:; } void Test_AssertTrue(bool cond) { - int _t150; - _t150 = !cond; - if (!_t150) goto endif23; + int _t147; + _t147 = !cond; + if (!_t147) goto endif22; { PrintLine("ASSERT_TRUE FAILED"); bux_exit(1); } - endif23:; + endif22:; } void Test_AssertFalse(bool cond) { - if (!cond) goto endif25; + if (!cond) goto endif24; { PrintLine("ASSERT_FALSE FAILED"); bux_exit(1); } - endif25:; + endif24:; } void Test_Fail(const char* msg) { @@ -1281,735 +1280,744 @@ void Test_Fail(const char* msg) { } Result Result_NewOk(int value) { - Result _t151; + Result _t148; Result r; - _t151 = (Result){.tag = Result_Ok}; - r = _t151; + _t148 = (Result){.tag = Result_Ok}; + r = _t148; r.data.Ok_0 = value; return r; } Result Result_NewErr(const char* msg) { - Result _t152; + Result _t149; Result r; - _t152 = (Result){.tag = Result_Err}; - r = _t152; + _t149 = (Result){.tag = Result_Err}; + r = _t149; r.data.Err_0 = msg; return r; } bool Result_IsOk(Result r) { - int _t154; - Result_Tag _t153; - _t153 = r.tag; - _t154 = (_t153 == Result_Ok); - return _t154; + int _t151; + Result_Tag _t150; + _t150 = r.tag; + _t151 = (_t150 == Result_Ok); + return _t151; } bool Result_IsErr(Result r) { - int _t156; - Result_Tag _t155; - _t155 = r.tag; - _t156 = (_t155 == Result_Err); - return _t156; + int _t153; + Result_Tag _t152; + _t152 = r.tag; + _t153 = (_t152 == Result_Err); + return _t153; } int Result_Unwrap(Result r) { - int _t158; - Result_Tag _t157; - _t157 = r.tag; - _t158 = (_t157 != Result_Ok); - if (!_t158) goto endif27; + int _t155; + Result_Tag _t154; + _t154 = r.tag; + _t155 = (_t154 != Result_Ok); + if (!_t155) goto endif26; { PrintLine("panic: unwrap on Err"); return 0; } - endif27:; - Result_Data _t159; - _t159 = r.data; - int _t160; - _t160 = _t159.Ok_0; - return _t160; + endif26:; + Result_Data _t156; + _t156 = r.data; + int _t157; + _t157 = _t156.Ok_0; + return _t157; } int Result_UnwrapOr(Result r, int fallback) { - int _t162; - Result_Tag _t161; - _t161 = r.tag; - _t162 = (_t161 == Result_Ok); - if (!_t162) goto endif29; + int _t159; + Result_Tag _t158; + _t158 = r.tag; + _t159 = (_t158 == Result_Ok); + if (!_t159) goto endif28; { - Result_Data _t163; - _t163 = r.data; - int _t164; - _t164 = _t163.Ok_0; - return _t164; + Result_Data _t160; + _t160 = r.data; + int _t161; + _t161 = _t160.Ok_0; + return _t161; } - endif29:; + endif28:; return fallback; } Option Option_NewSome(int value) { - Option _t165; + Option _t162; Option o; - _t165 = (Option){.tag = Option_Some}; - o = _t165; + _t162 = (Option){.tag = Option_Some}; + o = _t162; o.data.Some_0 = value; return o; } Option Option_NewNone(void) { - Option _t166; - _t166 = (Option){.tag = Option_None}; - return _t166; + Option _t163; + _t163 = (Option){.tag = Option_None}; + return _t163; } bool Option_IsSome(Option o) { - int _t168; - Option_Tag _t167; - _t167 = o.tag; - _t168 = (_t167 == Option_Some); - return _t168; + int _t165; + Option_Tag _t164; + _t164 = o.tag; + _t165 = (_t164 == Option_Some); + return _t165; } bool Option_IsNone(Option o) { - int _t170; - Option_Tag _t169; - _t169 = o.tag; - _t170 = (_t169 == Option_None); - return _t170; + int _t167; + Option_Tag _t166; + _t166 = o.tag; + _t167 = (_t166 == Option_None); + return _t167; } int Option_Unwrap(Option o) { - int _t172; - Option_Tag _t171; - _t171 = o.tag; - _t172 = (_t171 != Option_Some); - if (!_t172) goto endif31; + int _t169; + Option_Tag _t168; + _t168 = o.tag; + _t169 = (_t168 != Option_Some); + if (!_t169) goto endif30; { PrintLine("panic: unwrap on None"); return 0; } - endif31:; - Option_Data _t173; - _t173 = o.data; - int _t174; - _t174 = _t173.Some_0; - return _t174; + endif30:; + Option_Data _t170; + _t170 = o.data; + int _t171; + _t171 = _t170.Some_0; + return _t171; } int Option_UnwrapOr(Option o, int fallback) { - int _t176; - Option_Tag _t175; - _t175 = o.tag; - _t176 = (_t175 == Option_Some); - if (!_t176) goto endif33; + int _t173; + Option_Tag _t172; + _t172 = o.tag; + _t173 = (_t172 == Option_Some); + if (!_t173) goto endif32; { - Option_Data _t177; - _t177 = o.data; - int _t178; - _t178 = _t177.Some_0; - return _t178; + Option_Data _t174; + _t174 = o.data; + int _t175; + _t175 = _t174.Some_0; + return _t175; } - endif33:; + endif32:; return fallback; } JsonValue Json_Null(void) { - JsonValue _t179; - _t179 = (JsonValue){.tag = JsonTagNull, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t179; + JsonValue _t176; + _t176 = (JsonValue){.tag = JsonTagNull, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t176; } JsonValue Json_Bool(bool b) { - JsonValue _t180; - _t180 = (JsonValue){.tag = JsonTagBool, .boolVal = b, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t180; + JsonValue _t177; + _t177 = (JsonValue){.tag = JsonTagBool, .boolVal = b, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t177; } JsonValue Json_Number(double n) { - JsonValue _t181; - _t181 = (JsonValue){.tag = JsonTagNumber, .boolVal = 0, .numVal = n, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t181; + JsonValue _t178; + _t178 = (JsonValue){.tag = JsonTagNumber, .boolVal = 0, .numVal = n, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t178; } JsonValue Json_String(const char* s) { - JsonValue _t182; - _t182 = (JsonValue){.tag = JsonTagString, .boolVal = 0, .numVal = 0.0, .strVal = s, .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t182; + JsonValue _t179; + _t179 = (JsonValue){.tag = JsonTagString, .boolVal = 0, .numVal = 0.0, .strVal = s, .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t179; } JsonValue Json_Array(void) { - JsonValue _t183; - _t183 = (JsonValue){.tag = JsonTagArray, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t183; + JsonValue _t180; + _t180 = (JsonValue){.tag = JsonTagArray, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t180; } JsonValue Json_Object(void) { - JsonValue _t184; - _t184 = (JsonValue){.tag = JsonTagObject, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; - return _t184; + JsonValue _t181; + _t181 = (JsonValue){.tag = JsonTagObject, .boolVal = 0, .numVal = 0.0, .strVal = "", .arrData = 0, .arrLen = 0, .arrCap = 0, .objKeys = 0, .objValues = 0, .objLen = 0, .objCap = 0}; + return _t181; } unsigned int Json_ArrayLen(JsonValue v) { - int _t186; - int _t185; - _t185 = v.tag; - _t186 = (_t185 != JsonTagArray); - if (!_t186) goto endif35; + int _t183; + int _t182; + _t182 = v.tag; + _t183 = (_t182 != JsonTagArray); + if (!_t183) goto endif34; { return 0; } - endif35:; - unsigned int _t187; - _t187 = v.arrLen; - return _t187; + endif34:; + unsigned int _t184; + _t184 = v.arrLen; + return _t184; } JsonValue Json_ArrayGet(JsonValue v, unsigned int index) { + int _t186; int _t189; - int _t192; - int _t188; - _t188 = v.tag; - _t189 = (_t188 != JsonTagArray); - if (!_t189) goto endif37; + int _t185; + _t185 = v.tag; + _t186 = (_t185 != JsonTagArray); + if (!_t186) goto endif36; + { + JsonValue _t187; + _t187 = Json_Null(); + return _t187; + } + endif36:; + unsigned int _t188; + _t188 = v.arrLen; + _t189 = (index >= _t188); + if (!_t189) goto endif38; { JsonValue _t190; _t190 = Json_Null(); return _t190; } - endif37:; - unsigned int _t191; - _t191 = v.arrLen; - _t192 = (index >= _t191); - if (!_t192) goto endif39; - { - JsonValue _t193; - _t193 = Json_Null(); - return _t193; - } - endif39:; - JsonValue* _t194; - _t194 = v.arrData; - JsonValue _t195; - _t195 = _t194[index]; - return _t195; + endif38:; + JsonValue* _t191; + _t191 = v.arrData; + JsonValue _t192; + _t192 = _t191[index]; + return _t192; } void Json_ArrayPush(JsonValue* self, JsonValue val) { + int _t194; int _t197; + int _t199; int _t200; - int _t202; - int _t204; - JsonValue* _t206; - int _t207; - void* _t209; - int _t211; - JsonValue* _t213; - int _t217; - int _t196; - _t196 = self->tag; - _t197 = (_t196 != JsonTagArray); - if (!_t197) goto endif41; + JsonValue* _t202; + int _t203; + void* _t205; + int _t206; + JsonValue* _t208; + int _t212; + int _t193; + _t193 = self->tag; + _t194 = (_t193 != JsonTagArray); + if (!_t194) goto endif40; { return; } - endif41:; - unsigned int _t198; - _t198 = self->arrLen; - unsigned int _t199; - _t199 = self->arrCap; - _t200 = (_t198 >= _t199); - if (!_t200) goto endif43; + endif40:; + unsigned int _t195; + _t195 = self->arrLen; + unsigned int _t196; + _t196 = self->arrCap; + _t197 = (_t195 >= _t196); + if (!_t197) goto endif42; { unsigned int arrNewCap; - unsigned int _t201; - _t201 = self->arrCap; - arrNewCap = _t201; - _t202 = (arrNewCap == 0); - if (!_t202) goto else44; + unsigned int _t198; + _t198 = self->arrCap; + arrNewCap = _t198; + _t199 = (arrNewCap == 0); + if (!_t199) goto else43; { self->arrCap = 4; /* sizeof(JsonValue) */ - _t204 = 4 * sizeof(JsonValue); - void* _t205; - _t205 = Alloc(_t204); - _t206 = (JsonValue*)_t205; - self->arrData = _t206; + _t200 = 4 * sizeof(JsonValue); + void* _t201; + _t201 = Alloc(_t200); + _t202 = (JsonValue*)_t201; + self->arrData = _t202; } - goto endif45; - else44:; + goto endif44; + else43:; { unsigned int doubleCap; - _t207 = arrNewCap * 2; - doubleCap = _t207; + _t203 = arrNewCap * 2; + doubleCap = _t203; self->arrCap = doubleCap; - JsonValue* _t208; - _t208 = self->arrData; - _t209 = (void*)_t208; + JsonValue* _t204; + _t204 = self->arrData; + _t205 = (void*)_t204; /* sizeof(JsonValue) */ - _t211 = doubleCap * sizeof(JsonValue); - void* _t212; - _t212 = Realloc(_t209, _t211); - _t213 = (JsonValue*)_t212; - self->arrData = _t213; + _t206 = doubleCap * sizeof(JsonValue); + void* _t207; + _t207 = Realloc(_t205, _t206); + _t208 = (JsonValue*)_t207; + self->arrData = _t208; } - endif45:; + endif44:; } - endif43:; - JsonValue* _t214; - _t214 = self->arrData; - unsigned int _t215; - _t215 = self->arrLen; - _t214[_t215] = val; - unsigned int _t216; - _t216 = self->arrLen; - _t217 = _t216 + 1; - self->arrLen = _t217; + endif42:; + JsonValue* _t209; + _t209 = self->arrData; + unsigned int _t210; + _t210 = self->arrLen; + _t209[_t210] = val; + unsigned int _t211; + _t211 = self->arrLen; + _t212 = _t211 + 1; + self->arrLen = _t212; } unsigned int Json_ObjectLen(JsonValue v) { - int _t219; - int _t218; - _t218 = v.tag; - _t219 = (_t218 != JsonTagObject); - if (!_t219) goto endif47; + int _t214; + int _t213; + _t213 = v.tag; + _t214 = (_t213 != JsonTagObject); + if (!_t214) goto endif46; { return 0; } - endif47:; - unsigned int _t220; - _t220 = v.objLen; - return _t220; + endif46:; + unsigned int _t215; + _t215 = v.objLen; + return _t215; } JsonValue Json_ObjectGet(JsonValue v, const char* key) { - int _t222; - int _t225; - int _t231; - int _t221; - _t221 = v.tag; - _t222 = (_t221 != JsonTagObject); - if (!_t222) goto endif49; + int _t217; + int _t220; + int _t226; + int _t216; + _t216 = v.tag; + _t217 = (_t216 != JsonTagObject); + if (!_t217) goto endif48; { - JsonValue _t223; - _t223 = Json_Null(); - return _t223; + JsonValue _t218; + _t218 = Json_Null(); + return _t218; } - endif49:; + endif48:; unsigned int i; i = 0; - while50:; - unsigned int _t224; - _t224 = v.objLen; - _t225 = (i < _t224); - if (!_t225) goto wend52; + while49:; + unsigned int _t219; + _t219 = v.objLen; + _t220 = (i < _t219); + if (!_t220) goto wend50; { - const char** _t226; - _t226 = v.objKeys; - const char* _t227; - _t227 = _t226[i]; - bool _t228; - _t228 = String_Eq(_t227, key); - if (!_t228) goto endif54; + const char** _t221; + _t221 = v.objKeys; + const char* _t222; + _t222 = _t221[i]; + bool _t223; + _t223 = String_Eq(_t222, key); + if (!_t223) goto endif52; { - JsonValue* _t229; - _t229 = v.objValues; - JsonValue _t230; - _t230 = _t229[i]; - return _t230; + JsonValue* _t224; + _t224 = v.objValues; + JsonValue _t225; + _t225 = _t224[i]; + return _t225; } - endif54:; - _t231 = i + 1; - i = _t231; + endif52:; + _t226 = i + 1; + i = _t226; } - goto while50; - wend52:; - JsonValue _t232; - _t232 = Json_Null(); - return _t232; + goto while49; + wend50:; + JsonValue _t227; + _t227 = Json_Null(); + return _t227; } bool Json_ObjectHas(JsonValue v, const char* key) { - int _t234; - int _t236; - int _t240; - int _t233; - _t233 = v.tag; - _t234 = (_t233 != JsonTagObject); - if (!_t234) goto endif56; + int _t229; + int _t231; + int _t235; + int _t228; + _t228 = v.tag; + _t229 = (_t228 != JsonTagObject); + if (!_t229) goto endif54; { return 0; } - endif56:; + endif54:; unsigned int i; i = 0; - while57:; - unsigned int _t235; - _t235 = v.objLen; - _t236 = (i < _t235); - if (!_t236) goto wend59; + while55:; + unsigned int _t230; + _t230 = v.objLen; + _t231 = (i < _t230); + if (!_t231) goto wend56; { - const char** _t237; - _t237 = v.objKeys; - const char* _t238; - _t238 = _t237[i]; - bool _t239; - _t239 = String_Eq(_t238, key); - if (!_t239) goto endif61; + const char** _t232; + _t232 = v.objKeys; + const char* _t233; + _t233 = _t232[i]; + bool _t234; + _t234 = String_Eq(_t233, key); + if (!_t234) goto endif58; { return 1; } - endif61:; - _t240 = i + 1; - i = _t240; + endif58:; + _t235 = i + 1; + i = _t235; } - goto while57; - wend59:; + goto while55; + wend56:; return 0; } void Json_ObjectSet(JsonValue* self, const char* key, JsonValue val) { - int _t242; + int _t237; + int _t239; int _t244; + int _t247; int _t249; - int _t252; - int _t254; + int _t250; + const char** _t252; + int _t253; + JsonValue* _t255; int _t256; - const char** _t258; - int _t260; - JsonValue* _t262; - int _t263; - void* _t265; - int _t267; - const char** _t269; - void* _t271; - int _t273; - JsonValue* _t275; - int _t281; - int _t241; - _t241 = self->tag; - _t242 = (_t241 != JsonTagObject); - if (!_t242) goto endif63; + void* _t258; + int _t259; + const char** _t261; + void* _t263; + int _t264; + JsonValue* _t266; + int _t272; + int _t236; + _t236 = self->tag; + _t237 = (_t236 != JsonTagObject); + if (!_t237) goto endif60; { return; } - endif63:; + endif60:; unsigned int i; i = 0; - while64:; - unsigned int _t243; - _t243 = self->objLen; - _t244 = (i < _t243); - if (!_t244) goto wend66; + while61:; + unsigned int _t238; + _t238 = self->objLen; + _t239 = (i < _t238); + if (!_t239) goto wend62; { - const char** _t245; - _t245 = self->objKeys; - const char* _t246; - _t246 = _t245[i]; - bool _t247; - _t247 = String_Eq(_t246, key); - if (!_t247) goto endif68; + const char** _t240; + _t240 = self->objKeys; + const char* _t241; + _t241 = _t240[i]; + bool _t242; + _t242 = String_Eq(_t241, key); + if (!_t242) goto endif64; { - JsonValue* _t248; - _t248 = self->objValues; - _t248[i] = val; + JsonValue* _t243; + _t243 = self->objValues; + _t243[i] = val; return; } - endif68:; - _t249 = i + 1; - i = _t249; + endif64:; + _t244 = i + 1; + i = _t244; } - goto while64; - wend66:; - unsigned int _t250; - _t250 = self->objLen; - unsigned int _t251; - _t251 = self->objCap; - _t252 = (_t250 >= _t251); - if (!_t252) goto endif70; + goto while61; + wend62:; + unsigned int _t245; + _t245 = self->objLen; + unsigned int _t246; + _t246 = self->objCap; + _t247 = (_t245 >= _t246); + if (!_t247) goto endif66; { unsigned int objNewCap; - unsigned int _t253; - _t253 = self->objCap; - objNewCap = _t253; - _t254 = (objNewCap == 0); - if (!_t254) goto else71; + unsigned int _t248; + _t248 = self->objCap; + objNewCap = _t248; + _t249 = (objNewCap == 0); + if (!_t249) goto else67; { self->objCap = 4; /* sizeof(const char*) */ - _t256 = 4 * sizeof(const char*); - void* _t257; - _t257 = Alloc(_t256); - _t258 = (const char**)_t257; - self->objKeys = _t258; + _t250 = 4 * sizeof(const char*); + void* _t251; + _t251 = Alloc(_t250); + _t252 = (const char**)_t251; + self->objKeys = _t252; /* sizeof(JsonValue) */ - _t260 = 4 * sizeof(JsonValue); - void* _t261; - _t261 = Alloc(_t260); - _t262 = (JsonValue*)_t261; - self->objValues = _t262; + _t253 = 4 * sizeof(JsonValue); + void* _t254; + _t254 = Alloc(_t253); + _t255 = (JsonValue*)_t254; + self->objValues = _t255; } - goto endif72; - else71:; + goto endif68; + else67:; { unsigned int doubleCap; - _t263 = objNewCap * 2; - doubleCap = _t263; + _t256 = objNewCap * 2; + doubleCap = _t256; self->objCap = doubleCap; - const char** _t264; - _t264 = self->objKeys; - _t265 = (void*)_t264; + const char** _t257; + _t257 = self->objKeys; + _t258 = (void*)_t257; /* sizeof(const char*) */ - _t267 = doubleCap * sizeof(const char*); - void* _t268; - _t268 = Realloc(_t265, _t267); - _t269 = (const char**)_t268; - self->objKeys = _t269; - JsonValue* _t270; - _t270 = self->objValues; - _t271 = (void*)_t270; + _t259 = doubleCap * sizeof(const char*); + void* _t260; + _t260 = Realloc(_t258, _t259); + _t261 = (const char**)_t260; + self->objKeys = _t261; + JsonValue* _t262; + _t262 = self->objValues; + _t263 = (void*)_t262; /* sizeof(JsonValue) */ - _t273 = doubleCap * sizeof(JsonValue); - void* _t274; - _t274 = Realloc(_t271, _t273); - _t275 = (JsonValue*)_t274; - self->objValues = _t275; + _t264 = doubleCap * sizeof(JsonValue); + void* _t265; + _t265 = Realloc(_t263, _t264); + _t266 = (JsonValue*)_t265; + self->objValues = _t266; } - endif72:; + endif68:; } - endif70:; - const char** _t276; - _t276 = self->objKeys; - unsigned int _t277; - _t277 = self->objLen; - _t276[_t277] = key; - JsonValue* _t278; - _t278 = self->objValues; - unsigned int _t279; - _t279 = self->objLen; - _t278[_t279] = val; - unsigned int _t280; - _t280 = self->objLen; - _t281 = _t280 + 1; - self->objLen = _t281; + endif66:; + const char** _t267; + _t267 = self->objKeys; + unsigned int _t268; + _t268 = self->objLen; + _t267[_t268] = key; + JsonValue* _t269; + _t269 = self->objValues; + unsigned int _t270; + _t270 = self->objLen; + _t269[_t270] = val; + unsigned int _t271; + _t271 = self->objLen; + _t272 = _t271 + 1; + self->objLen = _t272; } bool Json_IsNull(JsonValue v) { - int _t283; - int _t282; - _t282 = v.tag; - _t283 = (_t282 == JsonTagNull); - return _t283; + int _t274; + int _t273; + _t273 = v.tag; + _t274 = (_t273 == JsonTagNull); + return _t274; } bool Json_AsBool(JsonValue v) { - int _t285; - int _t284; - _t284 = v.tag; - _t285 = (_t284 == JsonTagBool); - if (!_t285) goto endif74; + int _t276; + int _t275; + _t275 = v.tag; + _t276 = (_t275 == JsonTagBool); + if (!_t276) goto endif70; { - bool _t286; - _t286 = v.boolVal; - return _t286; + bool _t277; + _t277 = v.boolVal; + return _t277; } - endif74:; + endif70:; return 0; } double Json_AsNumber(JsonValue v) { - int _t288; - int _t287; - _t287 = v.tag; - _t288 = (_t287 == JsonTagNumber); - if (!_t288) goto endif76; + int _t279; + int _t278; + _t278 = v.tag; + _t279 = (_t278 == JsonTagNumber); + if (!_t279) goto endif72; { - double _t289; - _t289 = v.numVal; - return _t289; + double _t280; + _t280 = v.numVal; + return _t280; } - endif76:; + endif72:; return 0.0; } const char* Json_AsString(JsonValue v) { - int _t291; - int _t290; - _t290 = v.tag; - _t291 = (_t290 == JsonTagString); - if (!_t291) goto endif78; + int _t282; + int _t281; + _t281 = v.tag; + _t282 = (_t281 == JsonTagString); + if (!_t282) goto endif74; { - const char* _t292; - _t292 = v.strVal; - return _t292; + const char* _t283; + _t283 = v.strVal; + return _t283; } - endif78:; + endif74:; return ""; } int JsonParser_Peek(JsonParser* p) { - int _t295; - int _t299; - unsigned int _t293; - _t293 = p->pos; - unsigned int _t294; - _t294 = p->len; - _t295 = (_t293 >= _t294); - if (!_t295) goto endif80; + int _t286; + int _t290; + unsigned int _t284; + _t284 = p->pos; + unsigned int _t285; + _t285 = p->len; + _t286 = (_t284 >= _t285); + if (!_t286) goto endif76; { return 0; } - endif80:; - const char* _t296; - _t296 = p->src; - unsigned int _t297; - _t297 = p->pos; - int _t298; - _t298 = _t296[_t297]; - _t299 = (int)_t298; - return _t299; + endif76:; + const char* _t287; + _t287 = p->src; + unsigned int _t288; + _t288 = p->pos; + int _t289; + _t289 = _t287[_t288]; + _t290 = (int)_t289; + return _t290; } void JsonParser_Advance(JsonParser* p) { - int _t302; - int _t304; - unsigned int _t300; - _t300 = p->pos; - unsigned int _t301; - _t301 = p->len; - _t302 = (_t300 < _t301); - if (!_t302) goto endif82; + int _t293; + int _t295; + unsigned int _t291; + _t291 = p->pos; + unsigned int _t292; + _t292 = p->len; + _t293 = (_t291 < _t292); + if (!_t293) goto endif78; { - unsigned int _t303; - _t303 = p->pos; - _t304 = _t303 + 1; - p->pos = _t304; + unsigned int _t294; + _t294 = p->pos; + _t295 = _t294 + 1; + p->pos = _t295; } - endif82:; + endif78:; } void JsonParser_SkipWhitespace(JsonParser* p) { - int _t306; - int _t307; - int _t309; - int _t311; - while83:; - if (!1) goto wend85; + int _t297; + int _t298; + int _t300; + int _t302; + while79:; + if (!1) goto wend80; { int c; - int _t305; - _t305 = JsonParser_Peek(p); - c = _t305; + int _t296; + _t296 = JsonParser_Peek(p); + c = _t296; bool __or_tmp_1; bool __or_tmp_2; bool __or_tmp_3; - _t306 = (c == 32); - if (!_t306) goto else86; + _t297 = (c == 32); + if (!_t297) goto else81; *(bool*)&__or_tmp_3 = 1; - goto endif87; - else86:; - _t307 = (c == 9); - *(bool*)&__or_tmp_3 = _t307; - endif87:; - bool _t308; - _t308 = *(bool*)&__or_tmp_3; - if (!_t308) goto else88; + goto endif82; + else81:; + _t298 = (c == 9); + *(bool*)&__or_tmp_3 = _t298; + endif82:; + bool _t299; + _t299 = *(bool*)&__or_tmp_3; + if (!_t299) goto else83; *(bool*)&__or_tmp_2 = 1; - goto endif89; - else88:; - _t309 = (c == 10); - *(bool*)&__or_tmp_2 = _t309; - endif89:; - bool _t310; - _t310 = *(bool*)&__or_tmp_2; - if (!_t310) goto else90; + goto endif84; + else83:; + _t300 = (c == 10); + *(bool*)&__or_tmp_2 = _t300; + endif84:; + bool _t301; + _t301 = *(bool*)&__or_tmp_2; + if (!_t301) goto else85; *(bool*)&__or_tmp_1 = 1; - goto endif91; - else90:; - _t311 = (c == 13); - *(bool*)&__or_tmp_1 = _t311; - endif91:; - bool _t312; - _t312 = *(bool*)&__or_tmp_1; - if (!_t312) goto else92; + goto endif86; + else85:; + _t302 = (c == 13); + *(bool*)&__or_tmp_1 = _t302; + endif86:; + bool _t303; + _t303 = *(bool*)&__or_tmp_1; + if (!_t303) goto else87; { JsonParser_Advance(p); } - goto endif93; - else92:; + goto endif88; + else87:; { return; } - endif93:; + endif88:; } - goto while83; - wend85:; + goto while79; + wend80:; } bool JsonParser_Match(JsonParser* p, const char* expected) { + int _t306; + int _t308; + int _t309; + int _t312; int _t315; - int _t317; + int _t316; int _t318; - int _t321; - int _t324; - int _t325; - int _t327; unsigned int elen; - unsigned int _t313; - _t313 = String_Len(expected); - elen = _t313; - unsigned int _t314; - _t314 = p->pos; - _t315 = _t314 + elen; - unsigned int _t316; - _t316 = p->len; - _t317 = (_t315 > _t316); - if (!_t317) goto endif95; + unsigned int _t304; + _t304 = String_Len(expected); + elen = _t304; + unsigned int _t305; + _t305 = p->pos; + _t306 = _t305 + elen; + unsigned int _t307; + _t307 = p->len; + _t308 = (_t306 > _t307); + if (!_t308) goto endif90; { return 0; } - endif95:; + endif90:; unsigned int i; i = 0; - while96:; - _t318 = (i < elen); - if (!_t318) goto wend98; + while91:; + _t309 = (i < elen); + if (!_t309) goto wend92; { - const char* _t319; - _t319 = p->src; - unsigned int _t320; - _t320 = p->pos; - _t321 = _t320 + i; - int _t322; - _t322 = _t319[_t321]; - int _t323; - _t323 = expected[i]; - _t324 = (_t322 != _t323); - if (!_t324) goto endif100; + const char* _t310; + _t310 = p->src; + unsigned int _t311; + _t311 = p->pos; + _t312 = _t311 + i; + int _t313; + _t313 = _t310[_t312]; + int _t314; + _t314 = expected[i]; + _t315 = (_t313 != _t314); + if (!_t315) goto endif94; { return 0; } - endif100:; - _t325 = i + 1; - i = _t325; + endif94:; + _t316 = i + 1; + i = _t316; } - goto while96; - wend98:; - unsigned int _t326; - _t326 = p->pos; - _t327 = _t326 + elen; - p->pos = _t327; + goto while91; + wend92:; + unsigned int _t317; + _t317 = p->pos; + _t318 = _t317 + elen; + p->pos = _t318; return 1; } const char* JsonParser_ParseString(JsonParser* p) { - int _t329; - int _t332; + int _t320; + int _t323; + int _t324; + int _t326; + int _t328; + void* _t329; + int _t330; + void* _t331; + char _t332; int _t333; - int _t335; - int _t337; - void* _t338; + void* _t334; + char _t335; + int _t336; + void* _t337; + char _t338; int _t339; void* _t340; char _t341; @@ -2022,234 +2030,262 @@ const char* JsonParser_ParseString(JsonParser* p) { int _t348; void* _t349; char _t350; - int _t351; - void* _t352; - char _t353; - int _t354; + void* _t351; + char _t352; + void* _t353; + char _t354; void* _t355; char _t356; - int _t357; - void* _t358; - char _t359; + int _t358; + void* _t359; void* _t360; - char _t361; void* _t362; - char _t363; - void* _t364; - char _t365; - int _t367; - void* _t368; - void* _t369; - void* _t371; - int _t328; - _t328 = JsonParser_Peek(p); - _t329 = (_t328 != 34); - if (!_t329) goto endif102; + int _t319; + _t319 = JsonParser_Peek(p); + _t320 = (_t319 != 34); + if (!_t320) goto endif96; { p->error = "Expected string"; return ""; } - endif102:; + endif96:; JsonParser_Advance(p); StringBuilder sb; - StringBuilder _t330; - _t330 = StringBuilder_New(); - sb = _t330; - while103:; - if (!1) goto wend105; + StringBuilder _t321; + _t321 = StringBuilder_New(); + sb = _t321; + while97:; + if (!1) goto wend98; { int c; - int _t331; - _t331 = JsonParser_Peek(p); - c = _t331; + int _t322; + _t322 = JsonParser_Peek(p); + c = _t322; bool __or_tmp_4; - _t332 = (c == 0); - if (!_t332) goto else106; + _t323 = (c == 0); + if (!_t323) goto else99; *(bool*)&__or_tmp_4 = 1; - goto endif107; - else106:; - _t333 = (c == 34); - *(bool*)&__or_tmp_4 = _t333; - endif107:; - bool _t334; - _t334 = *(bool*)&__or_tmp_4; - if (!_t334) goto endif109; + goto endif100; + else99:; + _t324 = (c == 34); + *(bool*)&__or_tmp_4 = _t324; + endif100:; + bool _t325; + _t325 = *(bool*)&__or_tmp_4; + if (!_t325) goto endif102; { - goto wend105; + goto wend98; } - endif109:; - _t335 = (c == 92); - if (!_t335) goto else110; + endif102:; + _t326 = (c == 92); + if (!_t326) goto else103; { JsonParser_Advance(p); int esc; - int _t336; - _t336 = JsonParser_Peek(p); - esc = _t336; - _t337 = (esc == 0); - if (!_t337) goto endif113; + int _t327; + _t327 = JsonParser_Peek(p); + esc = _t327; + _t328 = (esc == 0); + if (!_t328) goto endif106; { p->error = "Unterminated string escape"; - _t338 = &sb; - StringBuilder_Free(_t338); + _t329 = &sb; + StringBuilder_Free(_t329); return ""; } - endif113:; - _t339 = (esc == 110); - if (!_t339) goto else114; + endif106:; + _t330 = (esc == 110); + if (!_t330) goto else107; + { + _t331 = &sb; + _t332 = (char)10; + StringBuilder_AppendChar(_t331, _t332); + } + goto endif108; + else107:; + _t333 = (esc == 116); + if (!_t333) goto else109; + { + _t334 = &sb; + _t335 = (char)9; + StringBuilder_AppendChar(_t334, _t335); + } + goto endif110; + else109:; + _t336 = (esc == 114); + if (!_t336) goto else111; + { + _t337 = &sb; + _t338 = (char)13; + StringBuilder_AppendChar(_t337, _t338); + } + goto endif112; + else111:; + _t339 = (esc == 98); + if (!_t339) goto else113; { _t340 = &sb; - _t341 = (char)10; + _t341 = (char)8; StringBuilder_AppendChar(_t340, _t341); } - goto endif115; - else114:; - _t342 = (esc == 116); - if (!_t342) goto else116; + goto endif114; + else113:; + _t342 = (esc == 102); + if (!_t342) goto else115; { _t343 = &sb; - _t344 = (char)9; + _t344 = (char)12; StringBuilder_AppendChar(_t343, _t344); } - goto endif117; - else116:; - _t345 = (esc == 114); - if (!_t345) goto else118; + goto endif116; + else115:; + _t345 = (esc == 34); + if (!_t345) goto else117; { _t346 = &sb; - _t347 = (char)13; + _t347 = (char)34; StringBuilder_AppendChar(_t346, _t347); } - goto endif119; - else118:; - _t348 = (esc == 98); - if (!_t348) goto else120; + goto endif118; + else117:; + _t348 = (esc == 92); + if (!_t348) goto else119; { _t349 = &sb; - _t350 = (char)8; + _t350 = (char)92; StringBuilder_AppendChar(_t349, _t350); } - goto endif121; - else120:; - _t351 = (esc == 102); - if (!_t351) goto else122; + goto endif120; + else119:; { - _t352 = &sb; - _t353 = (char)12; - StringBuilder_AppendChar(_t352, _t353); + _t351 = &sb; + _t352 = (char)92; + StringBuilder_AppendChar(_t351, _t352); + _t353 = &sb; + _t354 = (char)esc; + StringBuilder_AppendChar(_t353, _t354); } - goto endif123; - else122:; - _t354 = (esc == 34); - if (!_t354) goto else124; + endif120:; + endif118:; + endif116:; + endif114:; + endif112:; + endif110:; + endif108:; + JsonParser_Advance(p); + } + goto endif104; + else103:; { _t355 = &sb; - _t356 = (char)34; + _t356 = (char)c; StringBuilder_AppendChar(_t355, _t356); - } - goto endif125; - else124:; - _t357 = (esc == 92); - if (!_t357) goto else126; - { - _t358 = &sb; - _t359 = (char)92; - StringBuilder_AppendChar(_t358, _t359); - } - goto endif127; - else126:; - { - _t360 = &sb; - _t361 = (char)92; - StringBuilder_AppendChar(_t360, _t361); - _t362 = &sb; - _t363 = (char)esc; - StringBuilder_AppendChar(_t362, _t363); - } - endif127:; - endif125:; - endif123:; - endif121:; - endif119:; - endif117:; - endif115:; JsonParser_Advance(p); } - goto endif111; - else110:; - { - _t364 = &sb; - _t365 = (char)c; - StringBuilder_AppendChar(_t364, _t365); - JsonParser_Advance(p); + endif104:; } - endif111:; - } - goto while103; - wend105:; - int _t366; - _t366 = JsonParser_Peek(p); - _t367 = (_t366 != 34); - if (!_t367) goto endif129; + goto while97; + wend98:; + int _t357; + _t357 = JsonParser_Peek(p); + _t358 = (_t357 != 34); + if (!_t358) goto endif122; { p->error = "Unterminated string"; - _t368 = &sb; - StringBuilder_Free(_t368); + _t359 = &sb; + StringBuilder_Free(_t359); return ""; } - endif129:; + endif122:; JsonParser_Advance(p); const char* result; - _t369 = &sb; - const char* _t370; - _t370 = StringBuilder_Build(_t369); - result = _t370; - _t371 = &sb; - StringBuilder_Free(_t371); + _t360 = &sb; + const char* _t361; + _t361 = StringBuilder_Build(_t360); + result = _t361; + _t362 = &sb; + StringBuilder_Free(_t362); return result; } JsonValue JsonParser_ParseNumber(JsonParser* p) { - int _t374; - int _t376; - int _t377; - int _t380; - int _t382; - int _t383; - int _t387; - unsigned int start; - unsigned int _t372; - _t372 = p->pos; - start = _t372; - int c0; + int _t365; + int _t367; + int _t368; + int _t371; int _t373; - _t373 = JsonParser_Peek(p); - c0 = _t373; - _t374 = (c0 == 45); - if (!_t374) goto endif131; + int _t374; + int _t378; + unsigned int start; + unsigned int _t363; + _t363 = p->pos; + start = _t363; + int c0; + int _t364; + _t364 = JsonParser_Peek(p); + c0 = _t364; + _t365 = (c0 == 45); + if (!_t365) goto endif124; { JsonParser_Advance(p); } - endif131:; - while132:; + endif124:; + while125:; + if (!1) goto wend126; + { + int c; + int _t366; + _t366 = JsonParser_Peek(p); + c = _t366; + bool __and_tmp_5; + _t367 = (c >= 48); + if (!_t367) goto else127; + _t368 = (c <= 57); + *(bool*)&__and_tmp_5 = _t368; + goto endif128; + else127:; + *(bool*)&__and_tmp_5 = 0; + endif128:; + bool _t369; + _t369 = *(bool*)&__and_tmp_5; + if (!_t369) goto else129; + { + JsonParser_Advance(p); + } + goto endif130; + else129:; + { + goto wend126; + } + endif130:; + } + goto while125; + wend126:; + int _t370; + _t370 = JsonParser_Peek(p); + _t371 = (_t370 == 46); + if (!_t371) goto endif132; + { + JsonParser_Advance(p); + while133:; if (!1) goto wend134; { int c; - int _t375; - _t375 = JsonParser_Peek(p); - c = _t375; - bool __and_tmp_5; - _t376 = (c >= 48); - if (!_t376) goto else135; - _t377 = (c <= 57); - *(bool*)&__and_tmp_5 = _t377; + int _t372; + _t372 = JsonParser_Peek(p); + c = _t372; + bool __and_tmp_6; + _t373 = (c >= 48); + if (!_t373) goto else135; + _t374 = (c <= 57); + *(bool*)&__and_tmp_6 = _t374; goto endif136; else135:; - *(bool*)&__and_tmp_5 = 0; + *(bool*)&__and_tmp_6 = 0; endif136:; - bool _t378; - _t378 = *(bool*)&__and_tmp_5; - if (!_t378) goto else137; + bool _t375; + _t375 = *(bool*)&__and_tmp_6; + if (!_t375) goto else137; { JsonParser_Advance(p); } @@ -2260,1098 +2296,1061 @@ JsonValue JsonParser_ParseNumber(JsonParser* p) { } endif138:; } - goto while132; + goto while133; wend134:; - int _t379; - _t379 = JsonParser_Peek(p); - _t380 = (_t379 == 46); - if (!_t380) goto endif140; - { - JsonParser_Advance(p); - while141:; - if (!1) goto wend143; - { - int c; - int _t381; - _t381 = JsonParser_Peek(p); - c = _t381; - bool __and_tmp_6; - _t382 = (c >= 48); - if (!_t382) goto else144; - _t383 = (c <= 57); - *(bool*)&__and_tmp_6 = _t383; - goto endif145; - else144:; - *(bool*)&__and_tmp_6 = 0; - endif145:; - bool _t384; - _t384 = *(bool*)&__and_tmp_6; - if (!_t384) goto else146; - { - JsonParser_Advance(p); } - goto endif147; - else146:; - { - goto wend143; - } - endif147:; - } - goto while141; - wend143:; - } - endif140:; + endif132:; const char* numStr; - const char* _t385; - _t385 = p->src; - unsigned int _t386; - _t386 = p->pos; - _t387 = _t386 - start; - const char* _t388; - _t388 = String_Slice(_t385, start, _t387); - numStr = _t388; + const char* _t376; + _t376 = p->src; + unsigned int _t377; + _t377 = p->pos; + _t378 = _t377 - start; + const char* _t379; + _t379 = String_Slice(_t376, start, _t378); + numStr = _t379; double n; - double _t389; - _t389 = String_ToFloat(numStr); - n = _t389; - JsonValue _t390; - _t390 = Json_Number(n); - return _t390; + double _t380; + _t380 = String_ToFloat(numStr); + n = _t380; + JsonValue _t381; + _t381 = Json_Number(n); + return _t381; } JsonValue JsonParser_ParseArray(JsonParser* p) { - int _t393; - int _t396; - void* _t398; - int _t400; - int _t401; + int _t384; + int _t387; + void* _t389; + int _t391; + int _t392; JsonParser_Advance(p); JsonValue arr; - JsonValue _t391; - _t391 = Json_Array(); - arr = _t391; + JsonValue _t382; + _t382 = Json_Array(); + arr = _t382; JsonParser_SkipWhitespace(p); - int _t392; - _t392 = JsonParser_Peek(p); - _t393 = (_t392 == 93); - if (!_t393) goto endif149; + int _t383; + _t383 = JsonParser_Peek(p); + _t384 = (_t383 == 93); + if (!_t384) goto endif140; { JsonParser_Advance(p); return arr; } - endif149:; - while150:; - if (!1) goto wend152; + endif140:; + while141:; + if (!1) goto wend142; { JsonParser_SkipWhitespace(p); JsonValue val; - JsonValue _t394; - _t394 = JsonParser_ParseValue(p); - val = _t394; - const char* _t395; - _t395 = p->error; - _t396 = (_t395 != ""); - if (!_t396) goto endif154; + JsonValue _t385; + _t385 = JsonParser_ParseValue(p); + val = _t385; + const char* _t386; + _t386 = p->error; + _t387 = (_t386 != ""); + if (!_t387) goto endif144; { - JsonValue _t397; - _t397 = Json_Null(); - return _t397; + JsonValue _t388; + _t388 = Json_Null(); + return _t388; } - endif154:; - _t398 = &arr; - Json_ArrayPush(_t398, val); + endif144:; + _t389 = &arr; + Json_ArrayPush(_t389, val); JsonParser_SkipWhitespace(p); int c; - int _t399; - _t399 = JsonParser_Peek(p); - c = _t399; - _t400 = (c == 93); - if (!_t400) goto endif156; + int _t390; + _t390 = JsonParser_Peek(p); + c = _t390; + _t391 = (c == 93); + if (!_t391) goto endif146; { JsonParser_Advance(p); return arr; } - endif156:; - _t401 = (c == 44); - if (!_t401) goto else157; + endif146:; + _t392 = (c == 44); + if (!_t392) goto else147; { JsonParser_Advance(p); } - goto endif158; - else157:; + goto endif148; + else147:; { p->error = "Expected ',' or ']' in array"; - JsonValue _t402; - _t402 = Json_Null(); - return _t402; + JsonValue _t393; + _t393 = Json_Null(); + return _t393; } - endif158:; + endif148:; } - goto while150; - wend152:; + goto while141; + wend142:; } JsonValue JsonParser_ParseObject(JsonParser* p) { - int _t405; - int _t408; + int _t396; + int _t399; + int _t402; + int _t406; + void* _t408; + int _t410; int _t411; - int _t415; - void* _t417; - int _t419; - int _t420; JsonParser_Advance(p); JsonValue obj; - JsonValue _t403; - _t403 = Json_Object(); - obj = _t403; + JsonValue _t394; + _t394 = Json_Object(); + obj = _t394; JsonParser_SkipWhitespace(p); - int _t404; - _t404 = JsonParser_Peek(p); - _t405 = (_t404 == 125); - if (!_t405) goto endif160; + int _t395; + _t395 = JsonParser_Peek(p); + _t396 = (_t395 == 125); + if (!_t396) goto endif150; + { + JsonParser_Advance(p); + return obj; + } + endif150:; + while151:; + if (!1) goto wend152; + { + JsonParser_SkipWhitespace(p); + const char* key; + const char* _t397; + _t397 = JsonParser_ParseString(p); + key = _t397; + const char* _t398; + _t398 = p->error; + _t399 = (_t398 != ""); + if (!_t399) goto endif154; + { + JsonValue _t400; + _t400 = Json_Null(); + return _t400; + } + endif154:; + JsonParser_SkipWhitespace(p); + int _t401; + _t401 = JsonParser_Peek(p); + _t402 = (_t401 != 58); + if (!_t402) goto endif156; + { + p->error = "Expected ':' after object key"; + JsonValue _t403; + _t403 = Json_Null(); + return _t403; + } + endif156:; + JsonParser_Advance(p); + JsonParser_SkipWhitespace(p); + JsonValue val; + JsonValue _t404; + _t404 = JsonParser_ParseValue(p); + val = _t404; + const char* _t405; + _t405 = p->error; + _t406 = (_t405 != ""); + if (!_t406) goto endif158; + { + JsonValue _t407; + _t407 = Json_Null(); + return _t407; + } + endif158:; + _t408 = &obj; + Json_ObjectSet(_t408, key, val); + JsonParser_SkipWhitespace(p); + int c; + int _t409; + _t409 = JsonParser_Peek(p); + c = _t409; + _t410 = (c == 125); + if (!_t410) goto endif160; { JsonParser_Advance(p); return obj; } endif160:; - while161:; - if (!1) goto wend163; + _t411 = (c == 44); + if (!_t411) goto else161; { - JsonParser_SkipWhitespace(p); - const char* key; - const char* _t406; - _t406 = JsonParser_ParseString(p); - key = _t406; - const char* _t407; - _t407 = p->error; - _t408 = (_t407 != ""); - if (!_t408) goto endif165; - { - JsonValue _t409; - _t409 = Json_Null(); - return _t409; + JsonParser_Advance(p); } - endif165:; - JsonParser_SkipWhitespace(p); - int _t410; - _t410 = JsonParser_Peek(p); - _t411 = (_t410 != 58); - if (!_t411) goto endif167; + goto endif162; + else161:; { - p->error = "Expected ':' after object key"; + p->error = "Expected ',' or '}' in object"; JsonValue _t412; _t412 = Json_Null(); return _t412; } - endif167:; - JsonParser_Advance(p); - JsonParser_SkipWhitespace(p); - JsonValue val; - JsonValue _t413; - _t413 = JsonParser_ParseValue(p); - val = _t413; - const char* _t414; - _t414 = p->error; - _t415 = (_t414 != ""); - if (!_t415) goto endif169; - { - JsonValue _t416; - _t416 = Json_Null(); - return _t416; + endif162:; } - endif169:; - _t417 = &obj; - Json_ObjectSet(_t417, key, val); - JsonParser_SkipWhitespace(p); - int c; - int _t418; - _t418 = JsonParser_Peek(p); - c = _t418; - _t419 = (c == 125); - if (!_t419) goto endif171; - { - JsonParser_Advance(p); - return obj; - } - endif171:; - _t420 = (c == 44); - if (!_t420) goto else172; - { - JsonParser_Advance(p); - } - goto endif173; - else172:; - { - p->error = "Expected ',' or '}' in object"; - JsonValue _t421; - _t421 = Json_Null(); - return _t421; - } - endif173:; - } - goto while161; - wend163:; + goto while151; + wend152:; } JsonValue JsonParser_ParseValue(JsonParser* p) { + int _t414; + int _t416; + int _t419; + int _t421; int _t423; - int _t425; - int _t428; - int _t430; - int _t432; + int _t427; + int _t431; + int _t435; int _t436; - int _t440; - int _t444; - int _t445; - int _t447; + int _t438; JsonParser_SkipWhitespace(p); int c; - int _t422; - _t422 = JsonParser_Peek(p); - c = _t422; - _t423 = (c == 0); - if (!_t423) goto endif175; + int _t413; + _t413 = JsonParser_Peek(p); + c = _t413; + _t414 = (c == 0); + if (!_t414) goto endif164; { p->error = "Unexpected end of input"; - JsonValue _t424; - _t424 = Json_Null(); - return _t424; + JsonValue _t415; + _t415 = Json_Null(); + return _t415; } - endif175:; - _t425 = (c == 34); - if (!_t425) goto endif177; + endif164:; + _t416 = (c == 34); + if (!_t416) goto endif166; { - const char* _t426; - _t426 = JsonParser_ParseString(p); - JsonValue _t427; - _t427 = Json_String(_t426); - return _t427; + const char* _t417; + _t417 = JsonParser_ParseString(p); + JsonValue _t418; + _t418 = Json_String(_t417); + return _t418; } - endif177:; - _t428 = (c == 123); - if (!_t428) goto endif179; + endif166:; + _t419 = (c == 123); + if (!_t419) goto endif168; + { + JsonValue _t420; + _t420 = JsonParser_ParseObject(p); + return _t420; + } + endif168:; + _t421 = (c == 91); + if (!_t421) goto endif170; + { + JsonValue _t422; + _t422 = JsonParser_ParseArray(p); + return _t422; + } + endif170:; + _t423 = (c == 116); + if (!_t423) goto endif172; + { + bool _t424; + _t424 = JsonParser_Match(p, "true"); + if (!_t424) goto endif174; + { + JsonValue _t425; + _t425 = Json_Bool(1); + return _t425; + } + endif174:; + p->error = "Expected 'true'"; + JsonValue _t426; + _t426 = Json_Null(); + return _t426; + } + endif172:; + _t427 = (c == 102); + if (!_t427) goto endif176; + { + bool _t428; + _t428 = JsonParser_Match(p, "false"); + if (!_t428) goto endif178; { JsonValue _t429; - _t429 = JsonParser_ParseObject(p); + _t429 = Json_Bool(0); return _t429; } - endif179:; - _t430 = (c == 91); - if (!_t430) goto endif181; - { - JsonValue _t431; - _t431 = JsonParser_ParseArray(p); - return _t431; + endif178:; + p->error = "Expected 'false'"; + JsonValue _t430; + _t430 = Json_Null(); + return _t430; } - endif181:; - _t432 = (c == 116); - if (!_t432) goto endif183; + endif176:; + _t431 = (c == 110); + if (!_t431) goto endif180; { - bool _t433; - _t433 = JsonParser_Match(p, "true"); - if (!_t433) goto endif185; + bool _t432; + _t432 = JsonParser_Match(p, "null"); + if (!_t432) goto endif182; { + JsonValue _t433; + _t433 = Json_Null(); + return _t433; + } + endif182:; + p->error = "Expected 'null'"; JsonValue _t434; - _t434 = Json_Bool(1); + _t434 = Json_Null(); return _t434; } - endif185:; - p->error = "Expected 'true'"; - JsonValue _t435; - _t435 = Json_Null(); - return _t435; - } - endif183:; - _t436 = (c == 102); - if (!_t436) goto endif187; - { - bool _t437; - _t437 = JsonParser_Match(p, "false"); - if (!_t437) goto endif189; - { - JsonValue _t438; - _t438 = Json_Bool(0); - return _t438; - } - endif189:; - p->error = "Expected 'false'"; - JsonValue _t439; - _t439 = Json_Null(); - return _t439; - } - endif187:; - _t440 = (c == 110); - if (!_t440) goto endif191; - { - bool _t441; - _t441 = JsonParser_Match(p, "null"); - if (!_t441) goto endif193; - { - JsonValue _t442; - _t442 = Json_Null(); - return _t442; - } - endif193:; - p->error = "Expected 'null'"; - JsonValue _t443; - _t443 = Json_Null(); - return _t443; - } - endif191:; + endif180:; bool __or_tmp_7; bool __and_tmp_8; - _t444 = (c >= 48); - if (!_t444) goto else194; - _t445 = (c <= 57); - *(bool*)&__and_tmp_8 = _t445; - goto endif195; - else194:; + _t435 = (c >= 48); + if (!_t435) goto else183; + _t436 = (c <= 57); + *(bool*)&__and_tmp_8 = _t436; + goto endif184; + else183:; *(bool*)&__and_tmp_8 = 0; - endif195:; - bool _t446; - _t446 = *(bool*)&__and_tmp_8; - if (!_t446) goto else196; + endif184:; + bool _t437; + _t437 = *(bool*)&__and_tmp_8; + if (!_t437) goto else185; *(bool*)&__or_tmp_7 = 1; - goto endif197; - else196:; - _t447 = (c == 45); - *(bool*)&__or_tmp_7 = _t447; - endif197:; - bool _t448; - _t448 = *(bool*)&__or_tmp_7; - if (!_t448) goto endif199; + goto endif186; + else185:; + _t438 = (c == 45); + *(bool*)&__or_tmp_7 = _t438; + endif186:; + bool _t439; + _t439 = *(bool*)&__or_tmp_7; + if (!_t439) goto endif188; { - JsonValue _t449; - _t449 = JsonParser_ParseNumber(p); - return _t449; + JsonValue _t440; + _t440 = JsonParser_ParseNumber(p); + return _t440; } - endif199:; + endif188:; p->error = "Unexpected character"; - JsonValue _t450; - _t450 = Json_Null(); - return _t450; + JsonValue _t441; + _t441 = Json_Null(); + return _t441; } JsonValue Json_Parse(const char* s) { - JsonParser _t452; - void* _t453; - void* _t455; - int _t457; - int _t460; + JsonParser _t443; + void* _t444; + void* _t446; + int _t448; + int _t451; JsonParser p; - unsigned int _t451; - _t451 = String_Len(s); - _t452 = (JsonParser){.src = s, .pos = 0, .len = _t451, .error = ""}; - p = _t452; + unsigned int _t442; + _t442 = String_Len(s); + _t443 = (JsonParser){.src = s, .pos = 0, .len = _t442, .error = ""}; + p = _t443; JsonValue result; - _t453 = &p; - JsonValue _t454; - _t454 = JsonParser_ParseValue(_t453); - result = _t454; - _t455 = &p; - JsonParser_SkipWhitespace(_t455); + _t444 = &p; + JsonValue _t445; + _t445 = JsonParser_ParseValue(_t444); + result = _t445; + _t446 = &p; + JsonParser_SkipWhitespace(_t446); bool __and_tmp_9; - const char* _t456; - _t456 = p.error; - _t457 = (_t456 == ""); - if (!_t457) goto else200; - unsigned int _t458; - _t458 = p.pos; - unsigned int _t459; - _t459 = p.len; - _t460 = (_t458 != _t459); - *(bool*)&__and_tmp_9 = _t460; - goto endif201; - else200:; + const char* _t447; + _t447 = p.error; + _t448 = (_t447 == ""); + if (!_t448) goto else189; + unsigned int _t449; + _t449 = p.pos; + unsigned int _t450; + _t450 = p.len; + _t451 = (_t449 != _t450); + *(bool*)&__and_tmp_9 = _t451; + goto endif190; + else189:; *(bool*)&__and_tmp_9 = 0; - endif201:; - bool _t461; - _t461 = *(bool*)&__and_tmp_9; - if (!_t461) goto endif203; + endif190:; + bool _t452; + _t452 = *(bool*)&__and_tmp_9; + if (!_t452) goto endif192; { p.error = "Trailing data after JSON value"; - JsonValue _t462; - _t462 = Json_Null(); - return _t462; + JsonValue _t453; + _t453 = Json_Null(); + return _t453; } - endif203:; + endif192:; return result; } void Json_StringifyImpl(StringBuilder* sb, JsonValue v) { - int _t464; - int _t466; - int _t469; + int _t455; + int _t457; + int _t460; + int _t463; + char _t464; + char _t466; + int _t468; + char _t469; + int _t471; int _t472; char _t473; - char _t475; - int _t477; - char _t478; - int _t480; - int _t481; - char _t482; - int _t485; - char _t486; - int _t488; + int _t476; + char _t477; + int _t479; + char _t480; + int _t482; + int _t483; + char _t484; + char _t485; + char _t488; char _t489; - int _t491; int _t492; char _t493; - char _t494; - char _t497; - char _t498; - int _t501; - char _t502; - int _t463; - _t463 = v.tag; - _t464 = (_t463 == JsonTagNull); - if (!_t464) goto endif205; + int _t454; + _t454 = v.tag; + _t455 = (_t454 == JsonTagNull); + if (!_t455) goto endif194; { StringBuilder_Append(sb, "null"); return; } - endif205:; - int _t465; - _t465 = v.tag; - _t466 = (_t465 == JsonTagBool); - if (!_t466) goto endif207; + endif194:; + int _t456; + _t456 = v.tag; + _t457 = (_t456 == JsonTagBool); + if (!_t457) goto endif196; { - bool _t467; - _t467 = v.boolVal; - if (!_t467) goto else208; + bool _t458; + _t458 = v.boolVal; + if (!_t458) goto else197; { StringBuilder_Append(sb, "true"); } - goto endif209; - else208:; + goto endif198; + else197:; { StringBuilder_Append(sb, "false"); } - endif209:; + endif198:; return; } - endif207:; - int _t468; - _t468 = v.tag; - _t469 = (_t468 == JsonTagNumber); - if (!_t469) goto endif211; + endif196:; + int _t459; + _t459 = v.tag; + _t460 = (_t459 == JsonTagNumber); + if (!_t460) goto endif200; { - double _t470; - _t470 = v.numVal; - StringBuilder_AppendFloat(sb, _t470); + double _t461; + _t461 = v.numVal; + StringBuilder_AppendFloat(sb, _t461); return; } - endif211:; - int _t471; - _t471 = v.tag; - _t472 = (_t471 == JsonTagString); - if (!_t472) goto endif213; + endif200:; + int _t462; + _t462 = v.tag; + _t463 = (_t462 == JsonTagString); + if (!_t463) goto endif202; { - _t473 = (char)34; + _t464 = (char)34; + StringBuilder_AppendChar(sb, _t464); + const char* _t465; + _t465 = v.strVal; + StringBuilder_Append(sb, _t465); + _t466 = (char)34; + StringBuilder_AppendChar(sb, _t466); + return; + } + endif202:; + int _t467; + _t467 = v.tag; + _t468 = (_t467 == JsonTagArray); + if (!_t468) goto endif204; + { + _t469 = (char)91; + StringBuilder_AppendChar(sb, _t469); + unsigned int i; + i = 0; + while205:; + unsigned int _t470; + _t470 = v.arrLen; + _t471 = (i < _t470); + if (!_t471) goto wend206; + { + _t472 = (i > 0); + if (!_t472) goto endif208; + { + _t473 = (char)44; StringBuilder_AppendChar(sb, _t473); - const char* _t474; - _t474 = v.strVal; - StringBuilder_Append(sb, _t474); - _t475 = (char)34; - StringBuilder_AppendChar(sb, _t475); + } + endif208:; + JsonValue* _t474; + _t474 = v.arrData; + JsonValue _t475; + _t475 = _t474[i]; + Json_StringifyImpl(sb, _t475); + _t476 = i + 1; + i = _t476; + } + goto while205; + wend206:; + _t477 = (char)93; + StringBuilder_AppendChar(sb, _t477); return; } - endif213:; - int _t476; - _t476 = v.tag; - _t477 = (_t476 == JsonTagArray); - if (!_t477) goto endif215; + endif204:; + int _t478; + _t478 = v.tag; + _t479 = (_t478 == JsonTagObject); + if (!_t479) goto endif210; { - _t478 = (char)91; - StringBuilder_AppendChar(sb, _t478); + _t480 = (char)123; + StringBuilder_AppendChar(sb, _t480); unsigned int i; i = 0; - while216:; - unsigned int _t479; - _t479 = v.arrLen; - _t480 = (i < _t479); - if (!_t480) goto wend218; + while211:; + unsigned int _t481; + _t481 = v.objLen; + _t482 = (i < _t481); + if (!_t482) goto wend212; { - _t481 = (i > 0); - if (!_t481) goto endif220; + _t483 = (i > 0); + if (!_t483) goto endif214; { - _t482 = (char)44; - StringBuilder_AppendChar(sb, _t482); + _t484 = (char)44; + StringBuilder_AppendChar(sb, _t484); } - endif220:; - JsonValue* _t483; - _t483 = v.arrData; - JsonValue _t484; - _t484 = _t483[i]; - Json_StringifyImpl(sb, _t484); - _t485 = i + 1; - i = _t485; - } - goto while216; - wend218:; - _t486 = (char)93; - StringBuilder_AppendChar(sb, _t486); - return; - } - endif215:; - int _t487; - _t487 = v.tag; - _t488 = (_t487 == JsonTagObject); - if (!_t488) goto endif222; - { - _t489 = (char)123; + endif214:; + _t485 = (char)34; + StringBuilder_AppendChar(sb, _t485); + const char** _t486; + _t486 = v.objKeys; + const char* _t487; + _t487 = _t486[i]; + StringBuilder_Append(sb, _t487); + _t488 = (char)34; + StringBuilder_AppendChar(sb, _t488); + _t489 = (char)58; StringBuilder_AppendChar(sb, _t489); - unsigned int i; - i = 0; - while223:; - unsigned int _t490; - _t490 = v.objLen; - _t491 = (i < _t490); - if (!_t491) goto wend225; - { - _t492 = (i > 0); - if (!_t492) goto endif227; - { - _t493 = (char)44; + JsonValue* _t490; + _t490 = v.objValues; + JsonValue _t491; + _t491 = _t490[i]; + Json_StringifyImpl(sb, _t491); + _t492 = i + 1; + i = _t492; + } + goto while211; + wend212:; + _t493 = (char)125; StringBuilder_AppendChar(sb, _t493); - } - endif227:; - _t494 = (char)34; - StringBuilder_AppendChar(sb, _t494); - const char** _t495; - _t495 = v.objKeys; - const char* _t496; - _t496 = _t495[i]; - StringBuilder_Append(sb, _t496); - _t497 = (char)34; - StringBuilder_AppendChar(sb, _t497); - _t498 = (char)58; - StringBuilder_AppendChar(sb, _t498); - JsonValue* _t499; - _t499 = v.objValues; - JsonValue _t500; - _t500 = _t499[i]; - Json_StringifyImpl(sb, _t500); - _t501 = i + 1; - i = _t501; - } - goto while223; - wend225:; - _t502 = (char)125; - StringBuilder_AppendChar(sb, _t502); return; } - endif222:; + endif210:; } const char* Json_Stringify(JsonValue v) { - void* _t504; - void* _t505; + void* _t495; + void* _t496; StringBuilder sb; - StringBuilder _t503; - _t503 = StringBuilder_New(); - sb = _t503; - _t504 = &sb; - Json_StringifyImpl(_t504, v); - _t505 = &sb; - const char* _t506; - _t506 = StringBuilder_Build(_t505); - return _t506; + StringBuilder _t494; + _t494 = StringBuilder_New(); + sb = _t494; + _t495 = &sb; + Json_StringifyImpl(_t495, v); + _t496 = &sb; + const char* _t497; + _t497 = StringBuilder_Build(_t496); + return _t497; } unsigned int String_Len(const char* s) { - unsigned int _t507; - _t507 = bux_strlen(s); - return _t507; + unsigned int _t498; + _t498 = bux_strlen(s); + return _t498; } bool String_IsNull(const char* s) { - int _t509; - int _t508; - _t508 = bux_str_is_null(s); - _t509 = (_t508 != 0); - return _t509; + int _t500; + int _t499; + _t499 = bux_str_is_null(s); + _t500 = (_t499 != 0); + return _t500; } bool String_Eq(const char* a, const char* b) { - int _t511; - int _t510; - _t510 = bux_strcmp(a, b); - _t511 = (_t510 == 0); - return _t511; + int _t502; + int _t501; + _t501 = bux_strcmp(a, b); + _t502 = (_t501 == 0); + return _t502; } const char* String_Concat(const char* a, const char* b) { - int _t514; - int _t515; - char* _t517; + int _t505; + int _t506; + char* _t508; unsigned int len_a; - unsigned int _t512; - _t512 = bux_strlen(a); - len_a = _t512; + unsigned int _t503; + _t503 = bux_strlen(a); + len_a = _t503; unsigned int len_b; - unsigned int _t513; - _t513 = bux_strlen(b); - len_b = _t513; + unsigned int _t504; + _t504 = bux_strlen(b); + len_b = _t504; unsigned int total; - _t514 = len_a + len_b; - _t515 = _t514 + 1; - total = _t515; + _t505 = len_a + len_b; + _t506 = _t505 + 1; + total = _t506; char* buf; - void* _t516; - _t516 = bux_alloc(total); - _t517 = (char*)_t516; - buf = _t517; + void* _t507; + _t507 = bux_alloc(total); + _t508 = (char*)_t507; + buf = _t508; bux_strcpy(buf, a); bux_strcat(buf, b); return buf; } const char* String_Copy(const char* s) { - int _t519; - char* _t521; + int _t510; + char* _t512; unsigned int len; - unsigned int _t518; - _t518 = bux_strlen(s); - len = _t518; + unsigned int _t509; + _t509 = bux_strlen(s); + len = _t509; char* buf; - _t519 = len + 1; - void* _t520; - _t520 = bux_alloc(_t519); - _t521 = (char*)_t520; - buf = _t521; + _t510 = len + 1; + void* _t511; + _t511 = bux_alloc(_t510); + _t512 = (char*)_t511; + buf = _t512; bux_strcpy(buf, s); return buf; } bool String_StartsWith(const char* s, const char* prefix) { - int _t524; - int _t526; + int _t515; + int _t517; unsigned int s_len; - unsigned int _t522; - _t522 = bux_strlen(s); - s_len = _t522; + unsigned int _t513; + _t513 = bux_strlen(s); + s_len = _t513; unsigned int p_len; - unsigned int _t523; - _t523 = bux_strlen(prefix); - p_len = _t523; - _t524 = (p_len > s_len); - if (!_t524) goto endif229; + unsigned int _t514; + _t514 = bux_strlen(prefix); + p_len = _t514; + _t515 = (p_len > s_len); + if (!_t515) goto endif216; { return 0; } - endif229:; + endif216:; int r; - int _t525; - _t525 = bux_strncmp(s, prefix, p_len); - r = _t525; - _t526 = (r == 0); - return _t526; + int _t516; + _t516 = bux_strncmp(s, prefix, p_len); + r = _t516; + _t517 = (r == 0); + return _t517; } bool String_EndsWith(const char* s, const char* suffix) { - int _t529; - int _t530; - int _t533; + int _t520; + int _t521; + int _t524; unsigned int s_len; - unsigned int _t527; - _t527 = bux_strlen(s); - s_len = _t527; + unsigned int _t518; + _t518 = bux_strlen(s); + s_len = _t518; unsigned int suf_len; - unsigned int _t528; - _t528 = bux_strlen(suffix); - suf_len = _t528; - _t529 = (suf_len > s_len); - if (!_t529) goto endif231; + unsigned int _t519; + _t519 = bux_strlen(suffix); + suf_len = _t519; + _t520 = (suf_len > s_len); + if (!_t520) goto endif218; { return 0; } - endif231:; + endif218:; unsigned int start; - _t530 = s_len - suf_len; - start = _t530; + _t521 = s_len - suf_len; + start = _t521; const char* tail; - const char* _t531; - _t531 = bux_str_slice(s, start, suf_len); - tail = _t531; + const char* _t522; + _t522 = bux_str_slice(s, start, suf_len); + tail = _t522; bool eq; - int _t532; - _t532 = bux_strcmp(tail, suffix); - _t533 = (_t532 == 0); - eq = _t533; + int _t523; + _t523 = bux_strcmp(tail, suffix); + _t524 = (_t523 == 0); + eq = _t524; return eq; } bool String_Contains(const char* s, const char* substr) { - int _t535; + int _t526; int r; - int _t534; - _t534 = bux_str_contains(s, substr); - r = _t534; - _t535 = (r != 0); - return _t535; + int _t525; + _t525 = bux_str_contains(s, substr); + r = _t525; + _t526 = (r != 0); + return _t526; } const char* String_Slice(const char* s, unsigned int start, unsigned int len) { - const char* _t536; - _t536 = bux_str_slice(s, start, len); - return _t536; + const char* _t527; + _t527 = bux_str_slice(s, start, len); + return _t527; } const char* String_Trim(const char* s) { - const char* _t537; - _t537 = bux_str_trim(s); - return _t537; + const char* _t528; + _t528 = bux_str_trim(s); + return _t528; } const char* String_TrimLeft(const char* s) { - const char* _t538; - _t538 = bux_str_trim_left(s); - return _t538; + const char* _t529; + _t529 = bux_str_trim_left(s); + return _t529; } const char* String_TrimRight(const char* s) { - const char* _t539; - _t539 = bux_str_trim_right(s); - return _t539; + const char* _t530; + _t530 = bux_str_trim_right(s); + return _t530; } const char* String_FromInt(int64_t n) { - const char* _t540; - _t540 = bux_int_to_str(n); - return _t540; + const char* _t531; + _t531 = bux_int_to_str(n); + return _t531; } int64_t String_ToInt(const char* s) { - int64_t _t541; - _t541 = bux_str_to_int(s); - return _t541; + int64_t _t532; + _t532 = bux_str_to_int(s); + return _t532; } StringBuilder StringBuilder_New(void) { - StringBuilder _t543; - void* _t542; - _t542 = bux_sb_new(64); - _t543 = (StringBuilder){.handle = _t542}; - return _t543; + StringBuilder _t534; + void* _t533; + _t533 = bux_sb_new(64); + _t534 = (StringBuilder){.handle = _t533}; + return _t534; } StringBuilder StringBuilder_NewCap(unsigned int cap) { - StringBuilder _t545; - void* _t544; - _t544 = bux_sb_new(cap); - _t545 = (StringBuilder){.handle = _t544}; - return _t545; + StringBuilder _t536; + void* _t535; + _t535 = bux_sb_new(cap); + _t536 = (StringBuilder){.handle = _t535}; + return _t536; } void StringBuilder_Append(StringBuilder* sb, const char* s) { - void* _t546; - _t546 = sb->handle; - bux_sb_append(_t546, s); + void* _t537; + _t537 = sb->handle; + bux_sb_append(_t537, s); } void StringBuilder_AppendInt(StringBuilder* sb, int64_t n) { - void* _t547; - _t547 = sb->handle; - bux_sb_append_int(_t547, n); + void* _t538; + _t538 = sb->handle; + bux_sb_append_int(_t538, n); } void StringBuilder_AppendFloat(StringBuilder* sb, double f) { - void* _t548; - _t548 = sb->handle; - bux_sb_append_float(_t548, f); + void* _t539; + _t539 = sb->handle; + bux_sb_append_float(_t539, f); } void StringBuilder_AppendChar(StringBuilder* sb, char c) { - void* _t549; - _t549 = sb->handle; - bux_sb_append_char(_t549, c); + void* _t540; + _t540 = sb->handle; + bux_sb_append_char(_t540, c); } const char* StringBuilder_Build(StringBuilder* sb) { - void* _t550; - _t550 = sb->handle; - const char* _t551; - _t551 = bux_sb_build(_t550); - return _t551; + void* _t541; + _t541 = sb->handle; + const char* _t542; + _t542 = bux_sb_build(_t541); + return _t542; } void StringBuilder_Free(StringBuilder* sb) { - void* _t552; - _t552 = sb->handle; - bux_sb_free(_t552); + void* _t543; + _t543 = sb->handle; + bux_sb_free(_t543); } unsigned int String_SplitCount(const char* s, const char* delim) { - unsigned int _t553; - _t553 = bux_str_split_count(s, delim); - return _t553; + unsigned int _t544; + _t544 = bux_str_split_count(s, delim); + return _t544; } const char* String_SplitPart(const char* s, const char* delim, unsigned int index) { - const char* _t554; - _t554 = bux_str_split_part(s, delim, index); - return _t554; + const char* _t545; + _t545 = bux_str_split_part(s, delim, index); + return _t545; } const char* String_Join2(const char* a, const char* b, const char* sep) { - const char* _t555; - _t555 = bux_str_join2(a, b, sep); - return _t555; + const char* _t546; + _t546 = bux_str_join2(a, b, sep); + return _t546; } const char* String_Chars(const char* s, unsigned int index) { - const char* _t556; - _t556 = bux_str_slice(s, index, 1); - return _t556; + const char* _t547; + _t547 = bux_str_slice(s, index, 1); + return _t547; } const char* String_Find(const char* haystack, const char* needle) { - const char* _t557; - _t557 = bux_strstr(haystack, needle); - return _t557; + const char* _t548; + _t548 = bux_strstr(haystack, needle); + return _t548; } unsigned int String_Offset(const char* pos, const char* base) { - unsigned int _t558; - _t558 = bux_str_offset(pos, base); - return _t558; + unsigned int _t549; + _t549 = bux_str_offset(pos, base); + return _t549; } const char* String_Replace(const char* s, const char* old, const char* new) { - int _t564; - int _t566; - int _t567; + int _t555; + int _t557; + int _t558; const char* pos; - const char* _t559; - _t559 = bux_strstr(s, old); - pos = _t559; - bool _t560; - _t560 = String_IsNull(pos); - if (!_t560) goto endif233; + const char* _t550; + _t550 = bux_strstr(s, old); + pos = _t550; + bool _t551; + _t551 = String_IsNull(pos); + if (!_t551) goto endif220; { return s; } - endif233:; + endif220:; unsigned int oldLen; - unsigned int _t561; - _t561 = bux_strlen(old); - oldLen = _t561; + unsigned int _t552; + _t552 = bux_strlen(old); + oldLen = _t552; unsigned int prefixLen; - unsigned int _t562; - _t562 = String_Offset(pos, s); - prefixLen = _t562; + unsigned int _t553; + _t553 = String_Offset(pos, s); + prefixLen = _t553; const char* prefix; - const char* _t563; - _t563 = bux_str_slice(s, 0, prefixLen); - prefix = _t563; + const char* _t554; + _t554 = bux_str_slice(s, 0, prefixLen); + prefix = _t554; const char* suffix; - _t564 = prefixLen + oldLen; - unsigned int _t565; - _t565 = bux_strlen(s); - _t566 = _t565 - prefixLen; - _t567 = _t566 - oldLen; - const char* _t568; - _t568 = bux_str_slice(s, _t564, _t567); - suffix = _t568; + _t555 = prefixLen + oldLen; + unsigned int _t556; + _t556 = bux_strlen(s); + _t557 = _t556 - prefixLen; + _t558 = _t557 - oldLen; + const char* _t559; + _t559 = bux_str_slice(s, _t555, _t558); + suffix = _t559; const char* temp; - const char* _t569; - _t569 = String_Concat(prefix, new); - temp = _t569; + const char* _t560; + _t560 = String_Concat(prefix, new); + temp = _t560; const char* result; - const char* _t570; - _t570 = String_Concat(temp, suffix); - result = _t570; + const char* _t561; + _t561 = String_Concat(temp, suffix); + result = _t561; return result; } double String_ToFloat(const char* s) { - double _t571; - _t571 = bux_str_to_float(s); - return _t571; + double _t562; + _t562 = bux_str_to_float(s); + return _t562; } const char* String_FromBool(bool b) { - if (!b) goto endif235; + if (!b) goto endif222; { return "true"; } - endif235:; + endif222:; return "false"; } const char* String_FromFloat(double f) { - const char* _t572; - _t572 = bux_float_to_string(f); - return _t572; + const char* _t563; + _t563 = bux_float_to_string(f); + return _t563; } const char* String_Format1(const char* pattern, const char* a0) { - const char* _t573; - _t573 = bux_str_format(pattern, a0, "", "", "", "", "", "", ""); - return _t573; + const char* _t564; + _t564 = bux_str_format(pattern, a0, "", "", "", "", "", "", ""); + return _t564; } const char* String_Format2(const char* pattern, const char* a0, const char* a1) { - const char* _t574; - _t574 = bux_str_format(pattern, a0, a1, "", "", "", "", "", ""); - return _t574; + const char* _t565; + _t565 = bux_str_format(pattern, a0, a1, "", "", "", "", "", ""); + return _t565; } const char* String_Format3(const char* pattern, const char* a0, const char* a1, const char* a2) { - const char* _t575; - _t575 = bux_str_format(pattern, a0, a1, a2, "", "", "", "", ""); - return _t575; + const char* _t566; + _t566 = bux_str_format(pattern, a0, a1, a2, "", "", "", "", ""); + return _t566; } void Channel_SendInt(Channel_int* ch, int value) { - void* _t577; - void* _t578; - void* _t576; - _t576 = ch->handle; - _t577 = &value; - _t578 = (void*)_t577; - bux_channel_send(_t576, _t578); + void* _t568; + void* _t569; + void* _t567; + _t567 = ch->handle; + _t568 = &value; + _t569 = (void*)_t568; + bux_channel_send(_t567, _t569); } int Channel_RecvInt(Channel_int* ch) { - void* _t580; - void* _t581; + void* _t571; + void* _t572; int result; result = 0; - void* _t579; - _t579 = ch->handle; - _t580 = &result; - _t581 = (void*)_t580; - bux_channel_recv(_t579, _t581); + void* _t570; + _t570 = ch->handle; + _t571 = &result; + _t572 = (void*)_t571; + bux_channel_recv(_t570, _t572); return result; } void Channel_SendFloat64(Channel_float64* ch, double value) { - void* _t583; - void* _t584; - void* _t582; - _t582 = ch->handle; - _t583 = &value; - _t584 = (void*)_t583; - bux_channel_send(_t582, _t584); + void* _t574; + void* _t575; + void* _t573; + _t573 = ch->handle; + _t574 = &value; + _t575 = (void*)_t574; + bux_channel_send(_t573, _t575); } double Channel_RecvFloat64(Channel_float64* ch) { - void* _t586; - void* _t587; + void* _t577; + void* _t578; double result; result = 0.0; - void* _t585; - _t585 = ch->handle; - _t586 = &result; - _t587 = (void*)_t586; - bux_channel_recv(_t585, _t587); + void* _t576; + _t576 = ch->handle; + _t577 = &result; + _t578 = (void*)_t577; + bux_channel_recv(_t576, _t578); return result; } const char* Hash_Sha1(const char* data) { - int _t589; + int _t580; int len; - unsigned int _t588; - _t588 = String_Len(data); - _t589 = (int)_t588; - len = _t589; + unsigned int _t579; + _t579 = String_Len(data); + _t580 = (int)_t579; + len = _t580; void* buf; - void* _t590; - _t590 = Alloc(20); - buf = _t590; + void* _t581; + _t581 = Alloc(20); + buf = _t581; bux_sha1(data, len, buf); const char* result; - const char* _t591; - _t591 = bux_bytes_to_hex(buf, 20); - result = _t591; + const char* _t582; + _t582 = bux_bytes_to_hex(buf, 20); + result = _t582; Free(buf); return result; } const char* Hash_Sha256(const char* data) { - int _t593; + int _t584; int len; - unsigned int _t592; - _t592 = String_Len(data); - _t593 = (int)_t592; - len = _t593; + unsigned int _t583; + _t583 = String_Len(data); + _t584 = (int)_t583; + len = _t584; void* buf; - void* _t594; - _t594 = Alloc(32); - buf = _t594; + void* _t585; + _t585 = Alloc(32); + buf = _t585; bux_sha256(data, len, buf); const char* result; - const char* _t595; - _t595 = bux_bytes_to_hex(buf, 32); - result = _t595; + const char* _t586; + _t586 = bux_bytes_to_hex(buf, 32); + result = _t586; Free(buf); return result; } const char* Hash_Sha384(const char* data) { - int _t597; + int _t588; int len; - unsigned int _t596; - _t596 = String_Len(data); - _t597 = (int)_t596; - len = _t597; + unsigned int _t587; + _t587 = String_Len(data); + _t588 = (int)_t587; + len = _t588; void* buf; - void* _t598; - _t598 = Alloc(48); - buf = _t598; + void* _t589; + _t589 = Alloc(48); + buf = _t589; bux_sha384(data, len, buf); const char* result; - const char* _t599; - _t599 = bux_bytes_to_hex(buf, 48); - result = _t599; + const char* _t590; + _t590 = bux_bytes_to_hex(buf, 48); + result = _t590; Free(buf); return result; } const char* Hash_Sha512(const char* data) { - int _t601; + int _t592; int len; - unsigned int _t600; - _t600 = String_Len(data); - _t601 = (int)_t600; - len = _t601; + unsigned int _t591; + _t591 = String_Len(data); + _t592 = (int)_t591; + len = _t592; void* buf; - void* _t602; - _t602 = Alloc(64); - buf = _t602; + void* _t593; + _t593 = Alloc(64); + buf = _t593; bux_sha512(data, len, buf); const char* result; - const char* _t603; - _t603 = bux_bytes_to_hex(buf, 64); - result = _t603; + const char* _t594; + _t594 = bux_bytes_to_hex(buf, 64); + result = _t594; Free(buf); return result; } void Hash_Sha256Raw(const char* data, void* out) { - int _t605; - unsigned int _t604; - _t604 = String_Len(data); - _t605 = (int)_t604; - bux_sha256(data, _t605, out); + int _t596; + unsigned int _t595; + _t595 = String_Len(data); + _t596 = (int)_t595; + bux_sha256(data, _t596, out); } void Hash_Sha384Raw(const char* data, void* out) { - int _t607; - unsigned int _t606; - _t606 = String_Len(data); - _t607 = (int)_t606; - bux_sha384(data, _t607, out); + int _t598; + unsigned int _t597; + _t597 = String_Len(data); + _t598 = (int)_t597; + bux_sha384(data, _t598, out); } void Hash_Sha512Raw(const char* data, void* out) { - int _t609; - unsigned int _t608; - _t608 = String_Len(data); - _t609 = (int)_t608; - bux_sha512(data, _t609, out); + int _t600; + unsigned int _t599; + _t599 = String_Len(data); + _t600 = (int)_t599; + bux_sha512(data, _t600, out); } int Hash_Sha1Size(void) { @@ -3371,1500 +3370,1500 @@ int Hash_Sha512Size(void) { } const char* Base64_Encode(const char* s) { - int _t611; - unsigned int _t610; - _t610 = String_Len(s); - _t611 = (int)_t610; - const char* _t612; - _t612 = bux_base64_encode(s, _t611); - return _t612; + int _t602; + unsigned int _t601; + _t601 = String_Len(s); + _t602 = (int)_t601; + const char* _t603; + _t603 = bux_base64_encode(s, _t602); + return _t603; } const char* Base64_Decode(const char* s) { - int _t614; - void* _t615; + int _t605; + void* _t606; int outlen; outlen = 0; - unsigned int _t613; - _t613 = String_Len(s); - _t614 = (int)_t613; - _t615 = &outlen; - const char* _t616; - _t616 = bux_base64_decode(s, _t614, _t615); - return _t616; + unsigned int _t604; + _t604 = String_Len(s); + _t605 = (int)_t604; + _t606 = &outlen; + const char* _t607; + _t607 = bux_base64_decode(s, _t605, _t606); + return _t607; } const char* Base64URL_Encode(const char* s) { - int _t618; - unsigned int _t617; - _t617 = String_Len(s); - _t618 = (int)_t617; - const char* _t619; - _t619 = bux_base64url_encode(s, _t618); - return _t619; + int _t609; + unsigned int _t608; + _t608 = String_Len(s); + _t609 = (int)_t608; + const char* _t610; + _t610 = bux_base64url_encode(s, _t609); + return _t610; } const char* Base64URL_Decode(const char* s) { - int _t621; - void* _t622; + int _t612; + void* _t613; int outlen; outlen = 0; - unsigned int _t620; - _t620 = String_Len(s); - _t621 = (int)_t620; - _t622 = &outlen; - const char* _t623; - _t623 = bux_base64url_decode(s, _t621, _t622); - return _t623; + unsigned int _t611; + _t611 = String_Len(s); + _t612 = (int)_t611; + _t613 = &outlen; + const char* _t614; + _t614 = bux_base64url_decode(s, _t612, _t613); + return _t614; } const char* Hmac_Sha256(const char* key, const char* message) { - int _t625; - int _t627; + int _t616; + int _t618; int kl; - unsigned int _t624; - _t624 = String_Len(key); - _t625 = (int)_t624; - kl = _t625; + unsigned int _t615; + _t615 = String_Len(key); + _t616 = (int)_t615; + kl = _t616; int ml; - unsigned int _t626; - _t626 = String_Len(message); - _t627 = (int)_t626; - ml = _t627; + unsigned int _t617; + _t617 = String_Len(message); + _t618 = (int)_t617; + ml = _t618; void* buf; - void* _t628; - _t628 = Alloc(32); - buf = _t628; + void* _t619; + _t619 = Alloc(32); + buf = _t619; bux_hmac_sha256(key, kl, message, ml, buf); const char* result; - const char* _t629; - _t629 = bux_bytes_to_hex(buf, 32); - result = _t629; + const char* _t620; + _t620 = bux_bytes_to_hex(buf, 32); + result = _t620; Free(buf); return result; } void Hmac_Sha256Raw(const char* key, const char* message, void* out) { - int _t631; - int _t633; - unsigned int _t630; - _t630 = String_Len(key); - _t631 = (int)_t630; - unsigned int _t632; - _t632 = String_Len(message); - _t633 = (int)_t632; - bux_hmac_sha256(key, _t631, message, _t633, out); + int _t622; + int _t624; + unsigned int _t621; + _t621 = String_Len(key); + _t622 = (int)_t621; + unsigned int _t623; + _t623 = String_Len(message); + _t624 = (int)_t623; + bux_hmac_sha256(key, _t622, message, _t624, out); } const char* Hmac_Sha256Base64(const char* key, const char* message) { - int _t635; - int _t637; - const char* _t639; + int _t626; + int _t628; + const char* _t630; int kl; - unsigned int _t634; - _t634 = String_Len(key); - _t635 = (int)_t634; - kl = _t635; + unsigned int _t625; + _t625 = String_Len(key); + _t626 = (int)_t625; + kl = _t626; int ml; - unsigned int _t636; - _t636 = String_Len(message); - _t637 = (int)_t636; - ml = _t637; + unsigned int _t627; + _t627 = String_Len(message); + _t628 = (int)_t627; + ml = _t628; void* buf; - void* _t638; - _t638 = Alloc(32); - buf = _t638; + void* _t629; + _t629 = Alloc(32); + buf = _t629; bux_hmac_sha256(key, kl, message, ml, buf); const char* result; - _t639 = (const char*)buf; - const char* _t640; - _t640 = bux_base64_encode(_t639, 32); - result = _t640; + _t630 = (const char*)buf; + const char* _t631; + _t631 = bux_base64_encode(_t630, 32); + result = _t631; Free(buf); return result; } const char* Hmac_Sha384(const char* key, const char* message) { - int _t642; - int _t644; + int _t633; + int _t635; int kl; - unsigned int _t641; - _t641 = String_Len(key); - _t642 = (int)_t641; - kl = _t642; + unsigned int _t632; + _t632 = String_Len(key); + _t633 = (int)_t632; + kl = _t633; int ml; - unsigned int _t643; - _t643 = String_Len(message); - _t644 = (int)_t643; - ml = _t644; + unsigned int _t634; + _t634 = String_Len(message); + _t635 = (int)_t634; + ml = _t635; void* buf; - void* _t645; - _t645 = Alloc(48); - buf = _t645; + void* _t636; + _t636 = Alloc(48); + buf = _t636; bux_hmac_sha384(key, kl, message, ml, buf); const char* result; - const char* _t646; - _t646 = bux_bytes_to_hex(buf, 48); - result = _t646; + const char* _t637; + _t637 = bux_bytes_to_hex(buf, 48); + result = _t637; Free(buf); return result; } void Hmac_Sha384Raw(const char* key, const char* message, void* out) { - int _t648; - int _t650; - unsigned int _t647; - _t647 = String_Len(key); - _t648 = (int)_t647; - unsigned int _t649; - _t649 = String_Len(message); - _t650 = (int)_t649; - bux_hmac_sha384(key, _t648, message, _t650, out); + int _t639; + int _t641; + unsigned int _t638; + _t638 = String_Len(key); + _t639 = (int)_t638; + unsigned int _t640; + _t640 = String_Len(message); + _t641 = (int)_t640; + bux_hmac_sha384(key, _t639, message, _t641, out); } const char* Hmac_Sha384Base64(const char* key, const char* message) { - int _t652; - int _t654; - const char* _t656; + int _t643; + int _t645; + const char* _t647; int kl; - unsigned int _t651; - _t651 = String_Len(key); - _t652 = (int)_t651; - kl = _t652; + unsigned int _t642; + _t642 = String_Len(key); + _t643 = (int)_t642; + kl = _t643; int ml; - unsigned int _t653; - _t653 = String_Len(message); - _t654 = (int)_t653; - ml = _t654; + unsigned int _t644; + _t644 = String_Len(message); + _t645 = (int)_t644; + ml = _t645; void* buf; - void* _t655; - _t655 = Alloc(48); - buf = _t655; + void* _t646; + _t646 = Alloc(48); + buf = _t646; bux_hmac_sha384(key, kl, message, ml, buf); const char* result; - _t656 = (const char*)buf; - const char* _t657; - _t657 = bux_base64_encode(_t656, 48); - result = _t657; + _t647 = (const char*)buf; + const char* _t648; + _t648 = bux_base64_encode(_t647, 48); + result = _t648; Free(buf); return result; } const char* Hmac_Sha512(const char* key, const char* message) { - int _t659; - int _t661; + int _t650; + int _t652; int kl; - unsigned int _t658; - _t658 = String_Len(key); - _t659 = (int)_t658; - kl = _t659; + unsigned int _t649; + _t649 = String_Len(key); + _t650 = (int)_t649; + kl = _t650; int ml; - unsigned int _t660; - _t660 = String_Len(message); - _t661 = (int)_t660; - ml = _t661; + unsigned int _t651; + _t651 = String_Len(message); + _t652 = (int)_t651; + ml = _t652; void* buf; - void* _t662; - _t662 = Alloc(64); - buf = _t662; + void* _t653; + _t653 = Alloc(64); + buf = _t653; bux_hmac_sha512(key, kl, message, ml, buf); const char* result; - const char* _t663; - _t663 = bux_bytes_to_hex(buf, 64); - result = _t663; + const char* _t654; + _t654 = bux_bytes_to_hex(buf, 64); + result = _t654; Free(buf); return result; } void Hmac_Sha512Raw(const char* key, const char* message, void* out) { - int _t665; - int _t667; - unsigned int _t664; - _t664 = String_Len(key); - _t665 = (int)_t664; - unsigned int _t666; - _t666 = String_Len(message); - _t667 = (int)_t666; - bux_hmac_sha512(key, _t665, message, _t667, out); + int _t656; + int _t658; + unsigned int _t655; + _t655 = String_Len(key); + _t656 = (int)_t655; + unsigned int _t657; + _t657 = String_Len(message); + _t658 = (int)_t657; + bux_hmac_sha512(key, _t656, message, _t658, out); } const char* Hmac_Sha512Base64(const char* key, const char* message) { - int _t669; - int _t671; - const char* _t673; + int _t660; + int _t662; + const char* _t664; int kl; - unsigned int _t668; - _t668 = String_Len(key); - _t669 = (int)_t668; - kl = _t669; + unsigned int _t659; + _t659 = String_Len(key); + _t660 = (int)_t659; + kl = _t660; int ml; - unsigned int _t670; - _t670 = String_Len(message); - _t671 = (int)_t670; - ml = _t671; + unsigned int _t661; + _t661 = String_Len(message); + _t662 = (int)_t661; + ml = _t662; void* buf; - void* _t672; - _t672 = Alloc(64); - buf = _t672; + void* _t663; + _t663 = Alloc(64); + buf = _t663; bux_hmac_sha512(key, kl, message, ml, buf); const char* result; - _t673 = (const char*)buf; - const char* _t674; - _t674 = bux_base64_encode(_t673, 64); - result = _t674; + _t664 = (const char*)buf; + const char* _t665; + _t665 = bux_base64_encode(_t664, 64); + result = _t665; Free(buf); return result; } const char* Random_Bytes(int n) { - int _t675; - unsigned int _t676; - int _t679; - const char* _t680; - _t675 = (n <= 0); - if (!_t675) goto endif237; + int _t666; + unsigned int _t667; + int _t670; + const char* _t671; + _t666 = (n <= 0); + if (!_t666) goto endif224; { return ""; } - endif237:; + endif224:; void* buf; - _t676 = (unsigned int)n; - void* _t677; - _t677 = Alloc(_t676); - buf = _t677; - int _t678; - _t678 = bux_random_bytes(buf, n); - _t679 = (_t678 != 1); - if (!_t679) goto endif239; + _t667 = (unsigned int)n; + void* _t668; + _t668 = Alloc(_t667); + buf = _t668; + int _t669; + _t669 = bux_random_bytes(buf, n); + _t670 = (_t669 != 1); + if (!_t670) goto endif226; { Free(buf); return ""; } - endif239:; - _t680 = (const char*)buf; - return _t680; + endif226:; + _t671 = (const char*)buf; + return _t671; } const char* Random_Hex(int n) { - int _t681; - unsigned int _t682; - int _t685; - _t681 = (n <= 0); - if (!_t681) goto endif241; + int _t672; + unsigned int _t673; + int _t676; + _t672 = (n <= 0); + if (!_t672) goto endif228; { return ""; } - endif241:; + endif228:; void* buf; - _t682 = (unsigned int)n; - void* _t683; - _t683 = Alloc(_t682); - buf = _t683; - int _t684; - _t684 = bux_random_bytes(buf, n); - _t685 = (_t684 != 1); - if (!_t685) goto endif243; + _t673 = (unsigned int)n; + void* _t674; + _t674 = Alloc(_t673); + buf = _t674; + int _t675; + _t675 = bux_random_bytes(buf, n); + _t676 = (_t675 != 1); + if (!_t676) goto endif230; { Free(buf); return ""; } - endif243:; + endif230:; const char* result; - const char* _t686; - _t686 = bux_bytes_to_hex(buf, n); - result = _t686; + const char* _t677; + _t677 = bux_bytes_to_hex(buf, n); + result = _t677; Free(buf); return result; } const char* Random_Base64(int n) { - int _t687; - unsigned int _t688; - int _t691; - const char* _t692; - _t687 = (n <= 0); - if (!_t687) goto endif245; + int _t678; + unsigned int _t679; + int _t682; + const char* _t683; + _t678 = (n <= 0); + if (!_t678) goto endif232; { return ""; } - endif245:; + endif232:; void* buf; - _t688 = (unsigned int)n; - void* _t689; - _t689 = Alloc(_t688); - buf = _t689; - int _t690; - _t690 = bux_random_bytes(buf, n); - _t691 = (_t690 != 1); - if (!_t691) goto endif247; + _t679 = (unsigned int)n; + void* _t680; + _t680 = Alloc(_t679); + buf = _t680; + int _t681; + _t681 = bux_random_bytes(buf, n); + _t682 = (_t681 != 1); + if (!_t682) goto endif234; { Free(buf); return ""; } - endif247:; + endif234:; const char* result; - _t692 = (const char*)buf; - const char* _t693; - _t693 = bux_base64_encode(_t692, n); - result = _t693; + _t683 = (const char*)buf; + const char* _t684; + _t684 = bux_base64_encode(_t683, n); + result = _t684; Free(buf); return result; } unsigned int Random_Uint32(void) { - int _t696; - unsigned int* _t697; - unsigned int _t698; + int _t687; + unsigned int* _t688; + unsigned int _t689; void* buf; - void* _t694; - _t694 = Alloc(4); - buf = _t694; - int _t695; - _t695 = bux_random_bytes(buf, 4); - _t696 = (_t695 != 1); - if (!_t696) goto endif249; + void* _t685; + _t685 = Alloc(4); + buf = _t685; + int _t686; + _t686 = bux_random_bytes(buf, 4); + _t687 = (_t686 != 1); + if (!_t687) goto endif236; { Free(buf); return 0; } - endif249:; + endif236:; unsigned int* ptr; - _t697 = (unsigned int*)buf; - ptr = _t697; + _t688 = (unsigned int*)buf; + ptr = _t688; unsigned int val; - _t698 = *ptr; - val = _t698; + _t689 = *ptr; + val = _t689; Free(buf); return val; } const char* Aes_GenerateKey(void) { - unsigned int _t699; - int _t702; - const char* _t703; + unsigned int _t690; + int _t693; + const char* _t694; void* buf; - _t699 = (unsigned int)AES_KEY_SIZE; - void* _t700; - _t700 = Alloc(_t699); - buf = _t700; - int _t701; - _t701 = bux_random_bytes(buf, AES_KEY_SIZE); - _t702 = (_t701 != 1); - if (!_t702) goto endif251; + _t690 = (unsigned int)AES_KEY_SIZE; + void* _t691; + _t691 = Alloc(_t690); + buf = _t691; + int _t692; + _t692 = bux_random_bytes(buf, AES_KEY_SIZE); + _t693 = (_t692 != 1); + if (!_t693) goto endif238; { Free(buf); return ""; } - endif251:; - _t703 = (const char*)buf; - return _t703; + endif238:; + _t694 = (const char*)buf; + return _t694; } const char* Aes_GenerateIV(void) { - unsigned int _t704; - int _t707; - const char* _t708; + unsigned int _t695; + int _t698; + const char* _t699; void* buf; - _t704 = (unsigned int)AES_IV_SIZE; - void* _t705; - _t705 = Alloc(_t704); - buf = _t705; - int _t706; - _t706 = bux_random_bytes(buf, AES_IV_SIZE); - _t707 = (_t706 != 1); - if (!_t707) goto endif253; + _t695 = (unsigned int)AES_IV_SIZE; + void* _t696; + _t696 = Alloc(_t695); + buf = _t696; + int _t697; + _t697 = bux_random_bytes(buf, AES_IV_SIZE); + _t698 = (_t697 != 1); + if (!_t698) goto endif240; { Free(buf); return ""; } - endif253:; - _t708 = (const char*)buf; - return _t708; + endif240:; + _t699 = (const char*)buf; + return _t699; } const char* Aes_CbcEncrypt(const char* plain, const char* key, const char* iv) { - int _t710; - void* _t711; + int _t701; + void* _t702; int outlen; outlen = 0; - unsigned int _t709; - _t709 = String_Len(plain); - _t710 = (int)_t709; - _t711 = &outlen; - const char* _t712; - _t712 = bux_aes_256_cbc_encrypt(plain, _t710, key, iv, _t711); - return _t712; + unsigned int _t700; + _t700 = String_Len(plain); + _t701 = (int)_t700; + _t702 = &outlen; + const char* _t703; + _t703 = bux_aes_256_cbc_encrypt(plain, _t701, key, iv, _t702); + return _t703; } const char* Aes_CbcDecrypt(const char* cipher, const char* key, const char* iv) { - int _t714; - void* _t715; + int _t705; + void* _t706; int outlen; outlen = 0; - unsigned int _t713; - _t713 = String_Len(cipher); - _t714 = (int)_t713; - _t715 = &outlen; - const char* _t716; - _t716 = bux_aes_256_cbc_decrypt(cipher, _t714, key, iv, _t715); - return _t716; + unsigned int _t704; + _t704 = String_Len(cipher); + _t705 = (int)_t704; + _t706 = &outlen; + const char* _t707; + _t707 = bux_aes_256_cbc_decrypt(cipher, _t705, key, iv, _t706); + return _t707; } const char* Aes_GcmEncrypt(const char* plain, const char* key, const char* iv, void* tag) { - int _t718; - void* _t719; + int _t709; + void* _t710; int outlen; outlen = 0; - unsigned int _t717; - _t717 = String_Len(plain); - _t718 = (int)_t717; - _t719 = &outlen; - const char* _t720; - _t720 = bux_aes_256_gcm_encrypt(plain, _t718, key, iv, tag, _t719); - return _t720; + unsigned int _t708; + _t708 = String_Len(plain); + _t709 = (int)_t708; + _t710 = &outlen; + const char* _t711; + _t711 = bux_aes_256_gcm_encrypt(plain, _t709, key, iv, tag, _t710); + return _t711; } const char* Aes_GcmDecrypt(const char* cipher, const char* key, const char* iv, const char* tag) { - int _t722; - void* _t723; + int _t713; + void* _t714; int outlen; outlen = 0; - unsigned int _t721; - _t721 = String_Len(cipher); - _t722 = (int)_t721; - _t723 = &outlen; - const char* _t724; - _t724 = bux_aes_256_gcm_decrypt(cipher, _t722, key, iv, tag, _t723); - return _t724; + unsigned int _t712; + _t712 = String_Len(cipher); + _t713 = (int)_t712; + _t714 = &outlen; + const char* _t715; + _t715 = bux_aes_256_gcm_decrypt(cipher, _t713, key, iv, tag, _t714); + return _t715; } const char* Jwt_MakeHeader(JwtAlg alg) { - int _t725; - int _t726; - int _t727; - int _t728; - int _t729; - int _t730; - int _t731; - int _t732; - int _t733; - _t725 = (alg == JwtAlg_HS256); - if (!_t725) goto endif255; + int _t716; + int _t717; + int _t718; + int _t719; + int _t720; + int _t721; + int _t722; + int _t723; + int _t724; + _t716 = (alg == JwtAlg_HS256); + if (!_t716) goto endif242; { return "{\"alg\":\"HS256\",\"typ\":\"JWT\"}"; } - endif255:; - _t726 = (alg == JwtAlg_HS384); - if (!_t726) goto endif257; + endif242:; + _t717 = (alg == JwtAlg_HS384); + if (!_t717) goto endif244; { return "{\"alg\":\"HS384\",\"typ\":\"JWT\"}"; } - endif257:; - _t727 = (alg == JwtAlg_HS512); - if (!_t727) goto endif259; + endif244:; + _t718 = (alg == JwtAlg_HS512); + if (!_t718) goto endif246; { return "{\"alg\":\"HS512\",\"typ\":\"JWT\"}"; } - endif259:; - _t728 = (alg == JwtAlg_RS256); - if (!_t728) goto endif261; + endif246:; + _t719 = (alg == JwtAlg_RS256); + if (!_t719) goto endif248; { return "{\"alg\":\"RS256\",\"typ\":\"JWT\"}"; } - endif261:; - _t729 = (alg == JwtAlg_RS384); - if (!_t729) goto endif263; + endif248:; + _t720 = (alg == JwtAlg_RS384); + if (!_t720) goto endif250; { return "{\"alg\":\"RS384\",\"typ\":\"JWT\"}"; } - endif263:; - _t730 = (alg == JwtAlg_RS512); - if (!_t730) goto endif265; + endif250:; + _t721 = (alg == JwtAlg_RS512); + if (!_t721) goto endif252; { return "{\"alg\":\"RS512\",\"typ\":\"JWT\"}"; } - endif265:; - _t731 = (alg == JwtAlg_ES256); - if (!_t731) goto endif267; + endif252:; + _t722 = (alg == JwtAlg_ES256); + if (!_t722) goto endif254; { return "{\"alg\":\"ES256\",\"typ\":\"JWT\"}"; } - endif267:; - _t732 = (alg == JwtAlg_ES384); - if (!_t732) goto endif269; + endif254:; + _t723 = (alg == JwtAlg_ES384); + if (!_t723) goto endif256; { return "{\"alg\":\"ES384\",\"typ\":\"JWT\"}"; } - endif269:; - _t733 = (alg == JwtAlg_EdDSA); - if (!_t733) goto endif271; + endif256:; + _t724 = (alg == JwtAlg_EdDSA); + if (!_t724) goto endif258; { return "{\"alg\":\"EdDSA\",\"typ\":\"JWT\"}"; } - endif271:; + endif258:; return "{\"alg\":\"none\",\"typ\":\"JWT\"}"; } const char* Jwt_Sign(JwtAlg alg, const char* signingInput, const char* key) { - int _t734; - const char* _t736; - int _t738; - const char* _t740; + int _t725; + const char* _t727; + int _t729; + const char* _t731; + int _t733; + const char* _t735; + int _t737; + int _t740; int _t742; - const char* _t744; - int _t746; - int _t749; - int _t751; - int _t754; - int _t756; - int _t759; - int _t761; - int _t764; - int _t766; - int _t769; - int _t771; - _t734 = (alg == JwtAlg_HS256); - if (!_t734) goto endif273; + int _t745; + int _t747; + int _t750; + int _t752; + int _t755; + int _t757; + int _t760; + int _t762; + _t725 = (alg == JwtAlg_HS256); + if (!_t725) goto endif260; { void* buf; - void* _t735; - _t735 = Alloc(32); - buf = _t735; + void* _t726; + _t726 = Alloc(32); + buf = _t726; Hmac_Sha256Raw(key, signingInput, buf); const char* result; - _t736 = (const char*)buf; - const char* _t737; - _t737 = bux_base64_encode(_t736, 32); - result = _t737; + _t727 = (const char*)buf; + const char* _t728; + _t728 = bux_base64_encode(_t727, 32); + result = _t728; Free(buf); return result; } - endif273:; - _t738 = (alg == JwtAlg_HS384); - if (!_t738) goto endif275; + endif260:; + _t729 = (alg == JwtAlg_HS384); + if (!_t729) goto endif262; { void* buf; - void* _t739; - _t739 = Alloc(48); - buf = _t739; + void* _t730; + _t730 = Alloc(48); + buf = _t730; Hmac_Sha384Raw(key, signingInput, buf); const char* result; - _t740 = (const char*)buf; - const char* _t741; - _t741 = bux_base64_encode(_t740, 48); - result = _t741; + _t731 = (const char*)buf; + const char* _t732; + _t732 = bux_base64_encode(_t731, 48); + result = _t732; Free(buf); return result; } - endif275:; - _t742 = (alg == JwtAlg_HS512); - if (!_t742) goto endif277; + endif262:; + _t733 = (alg == JwtAlg_HS512); + if (!_t733) goto endif264; { void* buf; - void* _t743; - _t743 = Alloc(64); - buf = _t743; + void* _t734; + _t734 = Alloc(64); + buf = _t734; Hmac_Sha512Raw(key, signingInput, buf); const char* result; - _t744 = (const char*)buf; - const char* _t745; - _t745 = bux_base64_encode(_t744, 64); - result = _t745; + _t735 = (const char*)buf; + const char* _t736; + _t736 = bux_base64_encode(_t735, 64); + result = _t736; Free(buf); return result; } - endif277:; - _t746 = (alg == JwtAlg_RS256); - if (!_t746) goto endif279; + endif264:; + _t737 = (alg == JwtAlg_RS256); + if (!_t737) goto endif266; { const char* raw; - const char* _t747; - _t747 = Rsa_SignSha256(key, signingInput); - raw = _t747; - unsigned int _t748; - _t748 = String_Len(raw); - _t749 = (int)_t748; - const char* _t750; - _t750 = bux_base64_encode(raw, _t749); - return _t750; + const char* _t738; + _t738 = Rsa_SignSha256(key, signingInput); + raw = _t738; + unsigned int _t739; + _t739 = String_Len(raw); + _t740 = (int)_t739; + const char* _t741; + _t741 = bux_base64_encode(raw, _t740); + return _t741; } - endif279:; - _t751 = (alg == JwtAlg_RS384); - if (!_t751) goto endif281; + endif266:; + _t742 = (alg == JwtAlg_RS384); + if (!_t742) goto endif268; { const char* raw; - const char* _t752; - _t752 = Rsa_SignSha384(key, signingInput); - raw = _t752; - unsigned int _t753; - _t753 = String_Len(raw); - _t754 = (int)_t753; - const char* _t755; - _t755 = bux_base64_encode(raw, _t754); - return _t755; + const char* _t743; + _t743 = Rsa_SignSha384(key, signingInput); + raw = _t743; + unsigned int _t744; + _t744 = String_Len(raw); + _t745 = (int)_t744; + const char* _t746; + _t746 = bux_base64_encode(raw, _t745); + return _t746; } - endif281:; - _t756 = (alg == JwtAlg_RS512); - if (!_t756) goto endif283; + endif268:; + _t747 = (alg == JwtAlg_RS512); + if (!_t747) goto endif270; { const char* raw; - const char* _t757; - _t757 = Rsa_SignSha512(key, signingInput); - raw = _t757; - unsigned int _t758; - _t758 = String_Len(raw); - _t759 = (int)_t758; - const char* _t760; - _t760 = bux_base64_encode(raw, _t759); - return _t760; + const char* _t748; + _t748 = Rsa_SignSha512(key, signingInput); + raw = _t748; + unsigned int _t749; + _t749 = String_Len(raw); + _t750 = (int)_t749; + const char* _t751; + _t751 = bux_base64_encode(raw, _t750); + return _t751; } - endif283:; - _t761 = (alg == JwtAlg_ES256); - if (!_t761) goto endif285; + endif270:; + _t752 = (alg == JwtAlg_ES256); + if (!_t752) goto endif272; { const char* raw; - const char* _t762; - _t762 = Ecdsa_SignP256(key, signingInput); - raw = _t762; - unsigned int _t763; - _t763 = String_Len(raw); - _t764 = (int)_t763; - const char* _t765; - _t765 = bux_base64_encode(raw, _t764); - return _t765; + const char* _t753; + _t753 = Ecdsa_SignP256(key, signingInput); + raw = _t753; + unsigned int _t754; + _t754 = String_Len(raw); + _t755 = (int)_t754; + const char* _t756; + _t756 = bux_base64_encode(raw, _t755); + return _t756; } - endif285:; - _t766 = (alg == JwtAlg_ES384); - if (!_t766) goto endif287; + endif272:; + _t757 = (alg == JwtAlg_ES384); + if (!_t757) goto endif274; { const char* raw; - const char* _t767; - _t767 = Ecdsa_SignP384(key, signingInput); - raw = _t767; - unsigned int _t768; - _t768 = String_Len(raw); - _t769 = (int)_t768; - const char* _t770; - _t770 = bux_base64_encode(raw, _t769); - return _t770; + const char* _t758; + _t758 = Ecdsa_SignP384(key, signingInput); + raw = _t758; + unsigned int _t759; + _t759 = String_Len(raw); + _t760 = (int)_t759; + const char* _t761; + _t761 = bux_base64_encode(raw, _t760); + return _t761; } - endif287:; - _t771 = (alg == JwtAlg_EdDSA); - if (!_t771) goto endif289; + endif274:; + _t762 = (alg == JwtAlg_EdDSA); + if (!_t762) goto endif276; { - const char* _t772; - _t772 = Ed25519_Sign(key, signingInput); - return _t772; + const char* _t763; + _t763 = Ed25519_Sign(key, signingInput); + return _t763; } - endif289:; + endif276:; return ""; } bool Jwt_Verify(JwtAlg alg, const char* signingInput, const char* signatureB64, const char* key) { - int _t773; - const char* _t775; - int _t778; - const char* _t780; + int _t764; + const char* _t766; + int _t769; + const char* _t771; + int _t774; + const char* _t776; + int _t779; + int _t781; int _t783; - const char* _t785; - int _t788; - int _t790; - int _t792; - int _t794; - int _t796; - int _t798; - _t773 = (alg == JwtAlg_HS256); - if (!_t773) goto endif291; + int _t785; + int _t787; + int _t789; + _t764 = (alg == JwtAlg_HS256); + if (!_t764) goto endif278; { void* expectBuf; - void* _t774; - _t774 = Alloc(32); - expectBuf = _t774; + void* _t765; + _t765 = Alloc(32); + expectBuf = _t765; Hmac_Sha256Raw(key, signingInput, expectBuf); const char* expectB64; - _t775 = (const char*)expectBuf; - const char* _t776; - _t776 = bux_base64_encode(_t775, 32); - expectB64 = _t776; + _t766 = (const char*)expectBuf; + const char* _t767; + _t767 = bux_base64_encode(_t766, 32); + expectB64 = _t767; Free(expectBuf); - bool _t777; - _t777 = String_Eq(expectB64, signatureB64); - return _t777; + bool _t768; + _t768 = String_Eq(expectB64, signatureB64); + return _t768; } - endif291:; - _t778 = (alg == JwtAlg_HS384); - if (!_t778) goto endif293; + endif278:; + _t769 = (alg == JwtAlg_HS384); + if (!_t769) goto endif280; { void* expectBuf; - void* _t779; - _t779 = Alloc(48); - expectBuf = _t779; + void* _t770; + _t770 = Alloc(48); + expectBuf = _t770; Hmac_Sha384Raw(key, signingInput, expectBuf); const char* expectB64; - _t780 = (const char*)expectBuf; - const char* _t781; - _t781 = bux_base64_encode(_t780, 48); - expectB64 = _t781; + _t771 = (const char*)expectBuf; + const char* _t772; + _t772 = bux_base64_encode(_t771, 48); + expectB64 = _t772; Free(expectBuf); - bool _t782; - _t782 = String_Eq(expectB64, signatureB64); - return _t782; + bool _t773; + _t773 = String_Eq(expectB64, signatureB64); + return _t773; } - endif293:; - _t783 = (alg == JwtAlg_HS512); - if (!_t783) goto endif295; + endif280:; + _t774 = (alg == JwtAlg_HS512); + if (!_t774) goto endif282; { void* expectBuf; - void* _t784; - _t784 = Alloc(64); - expectBuf = _t784; + void* _t775; + _t775 = Alloc(64); + expectBuf = _t775; Hmac_Sha512Raw(key, signingInput, expectBuf); const char* expectB64; - _t785 = (const char*)expectBuf; - const char* _t786; - _t786 = bux_base64_encode(_t785, 64); - expectB64 = _t786; + _t776 = (const char*)expectBuf; + const char* _t777; + _t777 = bux_base64_encode(_t776, 64); + expectB64 = _t777; Free(expectBuf); - bool _t787; - _t787 = String_Eq(expectB64, signatureB64); - return _t787; + bool _t778; + _t778 = String_Eq(expectB64, signatureB64); + return _t778; } - endif295:; - _t788 = (alg == JwtAlg_RS256); - if (!_t788) goto endif297; + endif282:; + _t779 = (alg == JwtAlg_RS256); + if (!_t779) goto endif284; { - bool _t789; - _t789 = Rsa_VerifySha256(key, signingInput, signatureB64); - return _t789; + bool _t780; + _t780 = Rsa_VerifySha256(key, signingInput, signatureB64); + return _t780; } - endif297:; - _t790 = (alg == JwtAlg_RS384); - if (!_t790) goto endif299; + endif284:; + _t781 = (alg == JwtAlg_RS384); + if (!_t781) goto endif286; { - bool _t791; - _t791 = Rsa_VerifySha384(key, signingInput, signatureB64); - return _t791; + bool _t782; + _t782 = Rsa_VerifySha384(key, signingInput, signatureB64); + return _t782; } - endif299:; - _t792 = (alg == JwtAlg_RS512); - if (!_t792) goto endif301; + endif286:; + _t783 = (alg == JwtAlg_RS512); + if (!_t783) goto endif288; { - bool _t793; - _t793 = Rsa_VerifySha512(key, signingInput, signatureB64); - return _t793; + bool _t784; + _t784 = Rsa_VerifySha512(key, signingInput, signatureB64); + return _t784; } - endif301:; - _t794 = (alg == JwtAlg_ES256); - if (!_t794) goto endif303; + endif288:; + _t785 = (alg == JwtAlg_ES256); + if (!_t785) goto endif290; { - bool _t795; - _t795 = Ecdsa_VerifyP256(key, signingInput, signatureB64); - return _t795; + bool _t786; + _t786 = Ecdsa_VerifyP256(key, signingInput, signatureB64); + return _t786; } - endif303:; - _t796 = (alg == JwtAlg_ES384); - if (!_t796) goto endif305; + endif290:; + _t787 = (alg == JwtAlg_ES384); + if (!_t787) goto endif292; { - bool _t797; - _t797 = Ecdsa_VerifyP384(key, signingInput, signatureB64); - return _t797; + bool _t788; + _t788 = Ecdsa_VerifyP384(key, signingInput, signatureB64); + return _t788; } - endif305:; - _t798 = (alg == JwtAlg_EdDSA); - if (!_t798) goto endif307; + endif292:; + _t789 = (alg == JwtAlg_EdDSA); + if (!_t789) goto endif294; { - bool _t799; - _t799 = Ed25519_Verify(key, signatureB64, signingInput); - return _t799; + bool _t790; + _t790 = Ed25519_Verify(key, signatureB64, signingInput); + return _t790; } - endif307:; + endif294:; return 0; } const char* Jwt_Encode(const char* headerJson, const char* payloadJson, JwtAlg alg, const char* key) { const char* headerB64; - const char* _t800; - _t800 = Base64URL_Encode(headerJson); - headerB64 = _t800; + const char* _t791; + _t791 = Base64URL_Encode(headerJson); + headerB64 = _t791; const char* payloadB64; - const char* _t801; - _t801 = Base64URL_Encode(payloadJson); - payloadB64 = _t801; + const char* _t792; + _t792 = Base64URL_Encode(payloadJson); + payloadB64 = _t792; const char* signingInput; - const char* _t802; - _t802 = String_Concat(headerB64, "."); - signingInput = _t802; + const char* _t793; + _t793 = String_Concat(headerB64, "."); + signingInput = _t793; const char* signingInputFull; - const char* _t803; - _t803 = String_Concat(signingInput, payloadB64); - signingInputFull = _t803; + const char* _t794; + _t794 = String_Concat(signingInput, payloadB64); + signingInputFull = _t794; const char* sigB64; - const char* _t804; - _t804 = Jwt_Sign(alg, signingInputFull, key); - sigB64 = _t804; + const char* _t795; + _t795 = Jwt_Sign(alg, signingInputFull, key); + sigB64 = _t795; const char* part1; - const char* _t805; - _t805 = String_Concat(signingInputFull, "."); - part1 = _t805; - const char* _t806; - _t806 = String_Concat(part1, sigB64); - return _t806; + const char* _t796; + _t796 = String_Concat(signingInputFull, "."); + part1 = _t796; + const char* _t797; + _t797 = String_Concat(part1, sigB64); + return _t797; } bool Jwt_Decode(const char* token, JwtAlg alg, const char* key, const char** headerOut, const char** payloadOut) { - int _t808; - int _t815; + int _t799; + int _t806; unsigned int partCount; - unsigned int _t807; - _t807 = bux_str_split_count(token, "."); - partCount = _t807; - _t808 = (partCount != 3); - if (!_t808) goto endif309; + unsigned int _t798; + _t798 = bux_str_split_count(token, "."); + partCount = _t798; + _t799 = (partCount != 3); + if (!_t799) goto endif296; { return 0; } - endif309:; + endif296:; const char* headerB64; - const char* _t809; - _t809 = bux_str_split_part(token, ".", 0); - headerB64 = _t809; + const char* _t800; + _t800 = bux_str_split_part(token, ".", 0); + headerB64 = _t800; const char* payloadB64; - const char* _t810; - _t810 = bux_str_split_part(token, ".", 1); - payloadB64 = _t810; + const char* _t801; + _t801 = bux_str_split_part(token, ".", 1); + payloadB64 = _t801; const char* sigB64; - const char* _t811; - _t811 = bux_str_split_part(token, ".", 2); - sigB64 = _t811; + const char* _t802; + _t802 = bux_str_split_part(token, ".", 2); + sigB64 = _t802; const char* input; - const char* _t812; - _t812 = String_Concat(headerB64, "."); - input = _t812; + const char* _t803; + _t803 = String_Concat(headerB64, "."); + input = _t803; const char* signingInput; - const char* _t813; - _t813 = String_Concat(input, payloadB64); - signingInput = _t813; - bool _t814; - _t814 = Jwt_Verify(alg, signingInput, sigB64, key); - _t815 = !_t814; - if (!_t815) goto endif311; + const char* _t804; + _t804 = String_Concat(input, payloadB64); + signingInput = _t804; + bool _t805; + _t805 = Jwt_Verify(alg, signingInput, sigB64, key); + _t806 = !_t805; + if (!_t806) goto endif298; { return 0; } - endif311:; - const char* _t816; - _t816 = Base64URL_Decode(headerB64); - headerOut[0] = _t816; - const char* _t817; - _t817 = Base64URL_Decode(payloadB64); - payloadOut[0] = _t817; + endif298:; + const char* _t807; + _t807 = Base64URL_Decode(headerB64); + headerOut[0] = _t807; + const char* _t808; + _t808 = Base64URL_Decode(payloadB64); + payloadOut[0] = _t808; return 1; } const char* Jwt_EncodeHS256(const char* payloadJson, const char* secret) { const char* header; - const char* _t818; - _t818 = Jwt_MakeHeader(JwtAlg_HS256); - header = _t818; - const char* _t819; - _t819 = Jwt_Encode(header, payloadJson, JwtAlg_HS256, secret); - return _t819; + const char* _t809; + _t809 = Jwt_MakeHeader(JwtAlg_HS256); + header = _t809; + const char* _t810; + _t810 = Jwt_Encode(header, payloadJson, JwtAlg_HS256, secret); + return _t810; } const char* Jwt_EncodeHS384(const char* payloadJson, const char* secret) { const char* header; - const char* _t820; - _t820 = Jwt_MakeHeader(JwtAlg_HS384); - header = _t820; - const char* _t821; - _t821 = Jwt_Encode(header, payloadJson, JwtAlg_HS384, secret); - return _t821; + const char* _t811; + _t811 = Jwt_MakeHeader(JwtAlg_HS384); + header = _t811; + const char* _t812; + _t812 = Jwt_Encode(header, payloadJson, JwtAlg_HS384, secret); + return _t812; } const char* Jwt_EncodeHS512(const char* payloadJson, const char* secret) { const char* header; - const char* _t822; - _t822 = Jwt_MakeHeader(JwtAlg_HS512); - header = _t822; - const char* _t823; - _t823 = Jwt_Encode(header, payloadJson, JwtAlg_HS512, secret); - return _t823; + const char* _t813; + _t813 = Jwt_MakeHeader(JwtAlg_HS512); + header = _t813; + const char* _t814; + _t814 = Jwt_Encode(header, payloadJson, JwtAlg_HS512, secret); + return _t814; } const char* Jwt_EncodeRS256(const char* payloadJson, const char* pemPrivateKey) { const char* header; - const char* _t824; - _t824 = Jwt_MakeHeader(JwtAlg_RS256); - header = _t824; - const char* _t825; - _t825 = Jwt_Encode(header, payloadJson, JwtAlg_RS256, pemPrivateKey); - return _t825; + const char* _t815; + _t815 = Jwt_MakeHeader(JwtAlg_RS256); + header = _t815; + const char* _t816; + _t816 = Jwt_Encode(header, payloadJson, JwtAlg_RS256, pemPrivateKey); + return _t816; } const char* Jwt_EncodeES256(const char* payloadJson, const char* pemPrivateKey) { const char* header; - const char* _t826; - _t826 = Jwt_MakeHeader(JwtAlg_ES256); - header = _t826; - const char* _t827; - _t827 = Jwt_Encode(header, payloadJson, JwtAlg_ES256, pemPrivateKey); - return _t827; + const char* _t817; + _t817 = Jwt_MakeHeader(JwtAlg_ES256); + header = _t817; + const char* _t818; + _t818 = Jwt_Encode(header, payloadJson, JwtAlg_ES256, pemPrivateKey); + return _t818; } const char* Jwt_EncodeEdDSA(const char* payloadJson, const char* rawPrivKey) { const char* header; - const char* _t828; - _t828 = Jwt_MakeHeader(JwtAlg_EdDSA); - header = _t828; - const char* _t829; - _t829 = Jwt_Encode(header, payloadJson, JwtAlg_EdDSA, rawPrivKey); - return _t829; + const char* _t819; + _t819 = Jwt_MakeHeader(JwtAlg_EdDSA); + header = _t819; + const char* _t820; + _t820 = Jwt_Encode(header, payloadJson, JwtAlg_EdDSA, rawPrivKey); + return _t820; } const char* Ecdsa_SignP256(const char* pemPrivateKey, const char* data) { - int _t831; - int _t833; - void* _t834; + int _t822; + int _t824; + void* _t825; int siglen; siglen = 0; - unsigned int _t830; - _t830 = String_Len(pemPrivateKey); - _t831 = (int)_t830; - unsigned int _t832; - _t832 = String_Len(data); - _t833 = (int)_t832; - _t834 = &siglen; - const char* _t835; - _t835 = bux_ecdsa_sign_p256(pemPrivateKey, _t831, data, _t833, _t834); - return _t835; + unsigned int _t821; + _t821 = String_Len(pemPrivateKey); + _t822 = (int)_t821; + unsigned int _t823; + _t823 = String_Len(data); + _t824 = (int)_t823; + _t825 = &siglen; + const char* _t826; + _t826 = bux_ecdsa_sign_p256(pemPrivateKey, _t822, data, _t824, _t825); + return _t826; } const char* Ecdsa_SignP256Base64(const char* pemPrivateKey, const char* data) { - int _t838; + int _t829; const char* raw; - const char* _t836; - _t836 = Ecdsa_SignP256(pemPrivateKey, data); - raw = _t836; - unsigned int _t837; - _t837 = String_Len(raw); - _t838 = (int)_t837; - const char* _t839; - _t839 = bux_base64_encode(raw, _t838); - return _t839; + const char* _t827; + _t827 = Ecdsa_SignP256(pemPrivateKey, data); + raw = _t827; + unsigned int _t828; + _t828 = String_Len(raw); + _t829 = (int)_t828; + const char* _t830; + _t830 = bux_base64_encode(raw, _t829); + return _t830; } bool Ecdsa_VerifyP256(const char* pemPublicKey, const char* data, const char* signature) { - int _t841; - int _t843; - int _t845; - int _t847; + int _t832; + int _t834; + int _t836; + int _t838; int r; - unsigned int _t840; - _t840 = String_Len(pemPublicKey); - _t841 = (int)_t840; - unsigned int _t842; - _t842 = String_Len(data); - _t843 = (int)_t842; - unsigned int _t844; - _t844 = String_Len(signature); - _t845 = (int)_t844; - int _t846; - _t846 = bux_ecdsa_verify_p256(pemPublicKey, _t841, data, _t843, signature, _t845); - r = _t846; - _t847 = (r == 1); - return _t847; + unsigned int _t831; + _t831 = String_Len(pemPublicKey); + _t832 = (int)_t831; + unsigned int _t833; + _t833 = String_Len(data); + _t834 = (int)_t833; + unsigned int _t835; + _t835 = String_Len(signature); + _t836 = (int)_t835; + int _t837; + _t837 = bux_ecdsa_verify_p256(pemPublicKey, _t832, data, _t834, signature, _t836); + r = _t837; + _t838 = (r == 1); + return _t838; } bool Ecdsa_VerifyP256Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t849; - void* _t850; + int _t840; + void* _t841; int outlen; outlen = 0; const char* sig; - unsigned int _t848; - _t848 = String_Len(signatureB64); - _t849 = (int)_t848; - _t850 = &outlen; - const char* _t851; - _t851 = bux_base64_decode(signatureB64, _t849, _t850); - sig = _t851; - bool _t852; - _t852 = Ecdsa_VerifyP256(pemPublicKey, data, sig); - return _t852; + unsigned int _t839; + _t839 = String_Len(signatureB64); + _t840 = (int)_t839; + _t841 = &outlen; + const char* _t842; + _t842 = bux_base64_decode(signatureB64, _t840, _t841); + sig = _t842; + bool _t843; + _t843 = Ecdsa_VerifyP256(pemPublicKey, data, sig); + return _t843; } const char* Ecdsa_SignP384(const char* pemPrivateKey, const char* data) { - int _t854; - int _t856; - void* _t857; + int _t845; + int _t847; + void* _t848; int siglen; siglen = 0; - unsigned int _t853; - _t853 = String_Len(pemPrivateKey); - _t854 = (int)_t853; - unsigned int _t855; - _t855 = String_Len(data); - _t856 = (int)_t855; - _t857 = &siglen; - const char* _t858; - _t858 = bux_ecdsa_sign_p384(pemPrivateKey, _t854, data, _t856, _t857); - return _t858; + unsigned int _t844; + _t844 = String_Len(pemPrivateKey); + _t845 = (int)_t844; + unsigned int _t846; + _t846 = String_Len(data); + _t847 = (int)_t846; + _t848 = &siglen; + const char* _t849; + _t849 = bux_ecdsa_sign_p384(pemPrivateKey, _t845, data, _t847, _t848); + return _t849; } const char* Ecdsa_SignP384Base64(const char* pemPrivateKey, const char* data) { - int _t861; + int _t852; const char* raw; - const char* _t859; - _t859 = Ecdsa_SignP384(pemPrivateKey, data); - raw = _t859; - unsigned int _t860; - _t860 = String_Len(raw); - _t861 = (int)_t860; - const char* _t862; - _t862 = bux_base64_encode(raw, _t861); - return _t862; + const char* _t850; + _t850 = Ecdsa_SignP384(pemPrivateKey, data); + raw = _t850; + unsigned int _t851; + _t851 = String_Len(raw); + _t852 = (int)_t851; + const char* _t853; + _t853 = bux_base64_encode(raw, _t852); + return _t853; } bool Ecdsa_VerifyP384(const char* pemPublicKey, const char* data, const char* signature) { - int _t864; - int _t866; - int _t868; - int _t870; + int _t855; + int _t857; + int _t859; + int _t861; int r; - unsigned int _t863; - _t863 = String_Len(pemPublicKey); - _t864 = (int)_t863; - unsigned int _t865; - _t865 = String_Len(data); - _t866 = (int)_t865; - unsigned int _t867; - _t867 = String_Len(signature); - _t868 = (int)_t867; - int _t869; - _t869 = bux_ecdsa_verify_p384(pemPublicKey, _t864, data, _t866, signature, _t868); - r = _t869; - _t870 = (r == 1); - return _t870; + unsigned int _t854; + _t854 = String_Len(pemPublicKey); + _t855 = (int)_t854; + unsigned int _t856; + _t856 = String_Len(data); + _t857 = (int)_t856; + unsigned int _t858; + _t858 = String_Len(signature); + _t859 = (int)_t858; + int _t860; + _t860 = bux_ecdsa_verify_p384(pemPublicKey, _t855, data, _t857, signature, _t859); + r = _t860; + _t861 = (r == 1); + return _t861; } bool Ecdsa_VerifyP384Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t872; - void* _t873; + int _t863; + void* _t864; int outlen; outlen = 0; const char* sig; - unsigned int _t871; - _t871 = String_Len(signatureB64); - _t872 = (int)_t871; - _t873 = &outlen; - const char* _t874; - _t874 = bux_base64_decode(signatureB64, _t872, _t873); - sig = _t874; - bool _t875; - _t875 = Ecdsa_VerifyP384(pemPublicKey, data, sig); - return _t875; + unsigned int _t862; + _t862 = String_Len(signatureB64); + _t863 = (int)_t862; + _t864 = &outlen; + const char* _t865; + _t865 = bux_base64_decode(signatureB64, _t863, _t864); + sig = _t865; + bool _t866; + _t866 = Ecdsa_VerifyP384(pemPublicKey, data, sig); + return _t866; } bool Ed25519_Keypair(void* pubKey, void* privKey) { - int _t877; + int _t868; int r; - int _t876; - _t876 = bux_ed25519_keypair(pubKey, privKey); - r = _t876; - _t877 = (r == 1); - return _t877; + int _t867; + _t867 = bux_ed25519_keypair(pubKey, privKey); + r = _t867; + _t868 = (r == 1); + return _t868; } const char* Ed25519_KeypairBase64(void) { - unsigned int _t878; - unsigned int _t880; - int _t883; - const char* _t884; - const char* _t886; + unsigned int _t869; + unsigned int _t871; + int _t874; + const char* _t875; + const char* _t877; void* pubBuf; - _t878 = (unsigned int)ED25519_PUBKEY_SIZE; - void* _t879; - _t879 = Alloc(_t878); - pubBuf = _t879; + _t869 = (unsigned int)ED25519_PUBKEY_SIZE; + void* _t870; + _t870 = Alloc(_t869); + pubBuf = _t870; void* priv; - _t880 = (unsigned int)ED25519_PRIVKEY_SIZE; - void* _t881; - _t881 = Alloc(_t880); - priv = _t881; - int _t882; - _t882 = bux_ed25519_keypair(pubBuf, priv); - _t883 = (_t882 != 1); - if (!_t883) goto endif313; + _t871 = (unsigned int)ED25519_PRIVKEY_SIZE; + void* _t872; + _t872 = Alloc(_t871); + priv = _t872; + int _t873; + _t873 = bux_ed25519_keypair(pubBuf, priv); + _t874 = (_t873 != 1); + if (!_t874) goto endif300; { Free(pubBuf); Free(priv); return ""; } - endif313:; + endif300:; const char* pubB64; - _t884 = (const char*)pubBuf; - const char* _t885; - _t885 = bux_base64_encode(_t884, ED25519_PUBKEY_SIZE); - pubB64 = _t885; + _t875 = (const char*)pubBuf; + const char* _t876; + _t876 = bux_base64_encode(_t875, ED25519_PUBKEY_SIZE); + pubB64 = _t876; const char* privB64; - _t886 = (const char*)priv; - const char* _t887; - _t887 = bux_base64_encode(_t886, ED25519_PRIVKEY_SIZE); - privB64 = _t887; + _t877 = (const char*)priv; + const char* _t878; + _t878 = bux_base64_encode(_t877, ED25519_PRIVKEY_SIZE); + privB64 = _t878; Free(pubBuf); Free(priv); const char* pair; - const char* _t888; - _t888 = String_Concat(pubB64, ":"); - pair = _t888; - const char* _t889; - _t889 = String_Concat(pair, privB64); - return _t889; + const char* _t879; + _t879 = String_Concat(pubB64, ":"); + pair = _t879; + const char* _t880; + _t880 = String_Concat(pair, privB64); + return _t880; } const char* Ed25519_Sign(const char* privKey, const char* data) { - unsigned int _t890; - int _t893; - int _t895; - const char* _t896; + unsigned int _t881; + int _t884; + int _t886; + const char* _t887; void* sig; - _t890 = (unsigned int)ED25519_SIG_SIZE; - void* _t891; - _t891 = Alloc(_t890); - sig = _t891; - unsigned int _t892; - _t892 = String_Len(data); - _t893 = (int)_t892; - int _t894; - _t894 = bux_ed25519_sign(privKey, data, _t893, sig); - _t895 = (_t894 != 1); - if (!_t895) goto endif315; + _t881 = (unsigned int)ED25519_SIG_SIZE; + void* _t882; + _t882 = Alloc(_t881); + sig = _t882; + unsigned int _t883; + _t883 = String_Len(data); + _t884 = (int)_t883; + int _t885; + _t885 = bux_ed25519_sign(privKey, data, _t884, sig); + _t886 = (_t885 != 1); + if (!_t886) goto endif302; { Free(sig); return ""; } - endif315:; - _t896 = (const char*)sig; - return _t896; + endif302:; + _t887 = (const char*)sig; + return _t887; } const char* Ed25519_SignBase64(const char* privKey, const char* data) { - int _t899; + int _t890; const char* sig; - const char* _t897; - _t897 = Ed25519_Sign(privKey, data); - sig = _t897; - unsigned int _t898; - _t898 = String_Len(sig); - _t899 = (_t898 == 0); - if (!_t899) goto endif317; + const char* _t888; + _t888 = Ed25519_Sign(privKey, data); + sig = _t888; + unsigned int _t889; + _t889 = String_Len(sig); + _t890 = (_t889 == 0); + if (!_t890) goto endif304; { return ""; } - endif317:; - const char* _t900; - _t900 = bux_base64_encode(sig, ED25519_SIG_SIZE); - return _t900; + endif304:; + const char* _t891; + _t891 = bux_base64_encode(sig, ED25519_SIG_SIZE); + return _t891; } bool Ed25519_Verify(const char* pubKey, const char* signature, const char* data) { - int _t902; - int _t904; + int _t893; + int _t895; int r; - unsigned int _t901; - _t901 = String_Len(data); - _t902 = (int)_t901; - int _t903; - _t903 = bux_ed25519_verify(pubKey, signature, data, _t902); - r = _t903; - _t904 = (r == 1); - return _t904; + unsigned int _t892; + _t892 = String_Len(data); + _t893 = (int)_t892; + int _t894; + _t894 = bux_ed25519_verify(pubKey, signature, data, _t893); + r = _t894; + _t895 = (r == 1); + return _t895; } bool Ed25519_VerifyBase64(const char* pubKey, const char* signatureB64, const char* data) { - int _t906; - void* _t907; - int _t909; + int _t897; + void* _t898; + int _t900; int outlen; outlen = 0; const char* sig; - unsigned int _t905; - _t905 = String_Len(signatureB64); - _t906 = (int)_t905; - _t907 = &outlen; - const char* _t908; - _t908 = bux_base64_decode(signatureB64, _t906, _t907); - sig = _t908; - _t909 = (outlen != ED25519_SIG_SIZE); - if (!_t909) goto endif319; + unsigned int _t896; + _t896 = String_Len(signatureB64); + _t897 = (int)_t896; + _t898 = &outlen; + const char* _t899; + _t899 = bux_base64_decode(signatureB64, _t897, _t898); + sig = _t899; + _t900 = (outlen != ED25519_SIG_SIZE); + if (!_t900) goto endif306; { return 0; } - endif319:; - bool _t910; - _t910 = Ed25519_Verify(pubKey, sig, data); - return _t910; + endif306:; + bool _t901; + _t901 = Ed25519_Verify(pubKey, sig, data); + return _t901; } const char* Rsa_SignSha256(const char* pemPrivateKey, const char* data) { - int _t912; - int _t914; - void* _t915; + int _t903; + int _t905; + void* _t906; int siglen; siglen = 0; - unsigned int _t911; - _t911 = String_Len(pemPrivateKey); - _t912 = (int)_t911; - unsigned int _t913; - _t913 = String_Len(data); - _t914 = (int)_t913; - _t915 = &siglen; - const char* _t916; - _t916 = bux_rsa_sign_sha256(pemPrivateKey, _t912, data, _t914, _t915); - return _t916; + unsigned int _t902; + _t902 = String_Len(pemPrivateKey); + _t903 = (int)_t902; + unsigned int _t904; + _t904 = String_Len(data); + _t905 = (int)_t904; + _t906 = &siglen; + const char* _t907; + _t907 = bux_rsa_sign_sha256(pemPrivateKey, _t903, data, _t905, _t906); + return _t907; } const char* Rsa_SignSha384(const char* pemPrivateKey, const char* data) { - int _t918; - int _t920; - void* _t921; + int _t909; + int _t911; + void* _t912; int siglen; siglen = 0; - unsigned int _t917; - _t917 = String_Len(pemPrivateKey); - _t918 = (int)_t917; - unsigned int _t919; - _t919 = String_Len(data); - _t920 = (int)_t919; - _t921 = &siglen; - const char* _t922; - _t922 = bux_rsa_sign_sha384(pemPrivateKey, _t918, data, _t920, _t921); - return _t922; + unsigned int _t908; + _t908 = String_Len(pemPrivateKey); + _t909 = (int)_t908; + unsigned int _t910; + _t910 = String_Len(data); + _t911 = (int)_t910; + _t912 = &siglen; + const char* _t913; + _t913 = bux_rsa_sign_sha384(pemPrivateKey, _t909, data, _t911, _t912); + return _t913; } const char* Rsa_SignSha512(const char* pemPrivateKey, const char* data) { - int _t924; - int _t926; - void* _t927; + int _t915; + int _t917; + void* _t918; int siglen; siglen = 0; - unsigned int _t923; - _t923 = String_Len(pemPrivateKey); - _t924 = (int)_t923; - unsigned int _t925; - _t925 = String_Len(data); - _t926 = (int)_t925; - _t927 = &siglen; - const char* _t928; - _t928 = bux_rsa_sign_sha512(pemPrivateKey, _t924, data, _t926, _t927); - return _t928; + unsigned int _t914; + _t914 = String_Len(pemPrivateKey); + _t915 = (int)_t914; + unsigned int _t916; + _t916 = String_Len(data); + _t917 = (int)_t916; + _t918 = &siglen; + const char* _t919; + _t919 = bux_rsa_sign_sha512(pemPrivateKey, _t915, data, _t917, _t918); + return _t919; } const char* Rsa_SignSha256Base64(const char* pemPrivateKey, const char* data) { - int _t931; + int _t922; const char* raw; - const char* _t929; - _t929 = Rsa_SignSha256(pemPrivateKey, data); - raw = _t929; - unsigned int _t930; - _t930 = String_Len(raw); - _t931 = (int)_t930; - const char* _t932; - _t932 = bux_base64_encode(raw, _t931); - return _t932; + const char* _t920; + _t920 = Rsa_SignSha256(pemPrivateKey, data); + raw = _t920; + unsigned int _t921; + _t921 = String_Len(raw); + _t922 = (int)_t921; + const char* _t923; + _t923 = bux_base64_encode(raw, _t922); + return _t923; } const char* Rsa_SignSha384Base64(const char* pemPrivateKey, const char* data) { - int _t935; + int _t926; const char* raw; - const char* _t933; - _t933 = Rsa_SignSha384(pemPrivateKey, data); - raw = _t933; - unsigned int _t934; - _t934 = String_Len(raw); - _t935 = (int)_t934; - const char* _t936; - _t936 = bux_base64_encode(raw, _t935); - return _t936; + const char* _t924; + _t924 = Rsa_SignSha384(pemPrivateKey, data); + raw = _t924; + unsigned int _t925; + _t925 = String_Len(raw); + _t926 = (int)_t925; + const char* _t927; + _t927 = bux_base64_encode(raw, _t926); + return _t927; } const char* Rsa_SignSha512Base64(const char* pemPrivateKey, const char* data) { - int _t939; + int _t930; const char* raw; - const char* _t937; - _t937 = Rsa_SignSha512(pemPrivateKey, data); - raw = _t937; - unsigned int _t938; - _t938 = String_Len(raw); - _t939 = (int)_t938; - const char* _t940; - _t940 = bux_base64_encode(raw, _t939); - return _t940; + const char* _t928; + _t928 = Rsa_SignSha512(pemPrivateKey, data); + raw = _t928; + unsigned int _t929; + _t929 = String_Len(raw); + _t930 = (int)_t929; + const char* _t931; + _t931 = bux_base64_encode(raw, _t930); + return _t931; } bool Rsa_VerifySha256(const char* pemPublicKey, const char* data, const char* signature) { - int _t942; - int _t944; - int _t946; - int _t948; + int _t933; + int _t935; + int _t937; + int _t939; int r; - unsigned int _t941; - _t941 = String_Len(pemPublicKey); - _t942 = (int)_t941; - unsigned int _t943; - _t943 = String_Len(data); - _t944 = (int)_t943; - unsigned int _t945; - _t945 = String_Len(signature); - _t946 = (int)_t945; - int _t947; - _t947 = bux_rsa_verify_sha256(pemPublicKey, _t942, data, _t944, signature, _t946); - r = _t947; - _t948 = (r == 1); - return _t948; + unsigned int _t932; + _t932 = String_Len(pemPublicKey); + _t933 = (int)_t932; + unsigned int _t934; + _t934 = String_Len(data); + _t935 = (int)_t934; + unsigned int _t936; + _t936 = String_Len(signature); + _t937 = (int)_t936; + int _t938; + _t938 = bux_rsa_verify_sha256(pemPublicKey, _t933, data, _t935, signature, _t937); + r = _t938; + _t939 = (r == 1); + return _t939; } bool Rsa_VerifySha384(const char* pemPublicKey, const char* data, const char* signature) { - int _t950; - int _t952; - int _t954; - int _t956; + int _t941; + int _t943; + int _t945; + int _t947; int r; - unsigned int _t949; - _t949 = String_Len(pemPublicKey); - _t950 = (int)_t949; - unsigned int _t951; - _t951 = String_Len(data); - _t952 = (int)_t951; - unsigned int _t953; - _t953 = String_Len(signature); - _t954 = (int)_t953; - int _t955; - _t955 = bux_rsa_verify_sha384(pemPublicKey, _t950, data, _t952, signature, _t954); - r = _t955; - _t956 = (r == 1); - return _t956; + unsigned int _t940; + _t940 = String_Len(pemPublicKey); + _t941 = (int)_t940; + unsigned int _t942; + _t942 = String_Len(data); + _t943 = (int)_t942; + unsigned int _t944; + _t944 = String_Len(signature); + _t945 = (int)_t944; + int _t946; + _t946 = bux_rsa_verify_sha384(pemPublicKey, _t941, data, _t943, signature, _t945); + r = _t946; + _t947 = (r == 1); + return _t947; } bool Rsa_VerifySha512(const char* pemPublicKey, const char* data, const char* signature) { - int _t958; - int _t960; - int _t962; - int _t964; + int _t949; + int _t951; + int _t953; + int _t955; int r; - unsigned int _t957; - _t957 = String_Len(pemPublicKey); - _t958 = (int)_t957; - unsigned int _t959; - _t959 = String_Len(data); - _t960 = (int)_t959; - unsigned int _t961; - _t961 = String_Len(signature); - _t962 = (int)_t961; - int _t963; - _t963 = bux_rsa_verify_sha512(pemPublicKey, _t958, data, _t960, signature, _t962); - r = _t963; - _t964 = (r == 1); - return _t964; + unsigned int _t948; + _t948 = String_Len(pemPublicKey); + _t949 = (int)_t948; + unsigned int _t950; + _t950 = String_Len(data); + _t951 = (int)_t950; + unsigned int _t952; + _t952 = String_Len(signature); + _t953 = (int)_t952; + int _t954; + _t954 = bux_rsa_verify_sha512(pemPublicKey, _t949, data, _t951, signature, _t953); + r = _t954; + _t955 = (r == 1); + return _t955; } bool Rsa_VerifySha256Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t966; - void* _t967; + int _t957; + void* _t958; int outlen; outlen = 0; const char* sig; - unsigned int _t965; - _t965 = String_Len(signatureB64); - _t966 = (int)_t965; - _t967 = &outlen; - const char* _t968; - _t968 = bux_base64_decode(signatureB64, _t966, _t967); - sig = _t968; - bool _t969; - _t969 = Rsa_VerifySha256(pemPublicKey, data, sig); - return _t969; + unsigned int _t956; + _t956 = String_Len(signatureB64); + _t957 = (int)_t956; + _t958 = &outlen; + const char* _t959; + _t959 = bux_base64_decode(signatureB64, _t957, _t958); + sig = _t959; + bool _t960; + _t960 = Rsa_VerifySha256(pemPublicKey, data, sig); + return _t960; } bool Rsa_VerifySha384Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t971; - void* _t972; + int _t962; + void* _t963; int outlen; outlen = 0; const char* sig; - unsigned int _t970; - _t970 = String_Len(signatureB64); - _t971 = (int)_t970; - _t972 = &outlen; - const char* _t973; - _t973 = bux_base64_decode(signatureB64, _t971, _t972); - sig = _t973; - bool _t974; - _t974 = Rsa_VerifySha384(pemPublicKey, data, sig); - return _t974; + unsigned int _t961; + _t961 = String_Len(signatureB64); + _t962 = (int)_t961; + _t963 = &outlen; + const char* _t964; + _t964 = bux_base64_decode(signatureB64, _t962, _t963); + sig = _t964; + bool _t965; + _t965 = Rsa_VerifySha384(pemPublicKey, data, sig); + return _t965; } bool Rsa_VerifySha512Base64(const char* pemPublicKey, const char* data, const char* signatureB64) { - int _t976; - void* _t977; + int _t967; + void* _t968; int outlen; outlen = 0; const char* sig; - unsigned int _t975; - _t975 = String_Len(signatureB64); - _t976 = (int)_t975; - _t977 = &outlen; - const char* _t978; - _t978 = bux_base64_decode(signatureB64, _t976, _t977); - sig = _t978; - bool _t979; - _t979 = Rsa_VerifySha512(pemPublicKey, data, sig); - return _t979; + unsigned int _t966; + _t966 = String_Len(signatureB64); + _t967 = (int)_t966; + _t968 = &outlen; + const char* _t969; + _t969 = bux_base64_decode(signatureB64, _t967, _t968); + sig = _t969; + bool _t970; + _t970 = Rsa_VerifySha512(pemPublicKey, data, sig); + return _t970; } Point AddPoints(Point a, Point b) { - int _t982; - int _t985; - Point _t986; + int _t973; + int _t976; + Point _t977; Point result; - int _t980; - _t980 = a.x; - int _t981; - _t981 = b.x; - _t982 = _t980 + _t981; - int _t983; - _t983 = a.y; - int _t984; - _t984 = b.y; - _t985 = _t983 + _t984; - _t986 = (Point){.x = _t982, .y = _t985}; - result = _t986; + int _t971; + _t971 = a.x; + int _t972; + _t972 = b.x; + _t973 = _t971 + _t972; + int _t974; + _t974 = a.y; + int _t975; + _t975 = b.y; + _t976 = _t974 + _t975; + _t977 = (Point){.x = _t973, .y = _t976}; + result = _t977; return result; } int Main(void) { - Point _t987; - Point _t988; + Point _t978; + Point _t979; Point p1; - _t987 = (Point){.x = 10, .y = 20}; - p1 = _t987; + _t978 = (Point){.x = 10, .y = 20}; + p1 = _t978; Point p2; - _t988 = (Point){.x = 5, .y = 15}; - p2 = _t988; + _t979 = (Point){.x = 5, .y = 15}; + p2 = _t979; Point sum; - Point _t989; - _t989 = AddPoints(p1, p2); - sum = _t989; + Point _t980; + _t980 = AddPoints(p1, p2); + sum = _t980; PrintLine("Point sum:"); PrintLine("x = "); - int _t990; - _t990 = sum.x; - PrintInt(_t990); + int _t981; + _t981 = sum.x; + PrintInt(_t981); PrintLine(""); PrintLine("y = "); - int _t991; - _t991 = sum.y; - PrintInt(_t991); + int _t982; + _t982 = sum.y; + PrintInt(_t982); PrintLine(""); return 0; } diff --git a/tests/hir_test.nim b/tests/hir_test.nim index 6eb91f8..8d21cc3 100644 --- a/tests/hir_test.nim +++ b/tests/hir_test.nim @@ -1,5 +1,5 @@ -import std/[unittest, strformat] -import ../bootstrap/[lexer, parser, sema, hir, hir_lower, types, scope] +import std/[unittest] +import ../bootstrap/[lexer, parser, sema, hir, hir_lower, scope] proc lowerSource(source: string): HirModule = let lexRes = tokenize(source, "") diff --git a/tests/lexer_test.nim b/tests/lexer_test.nim index 21c452e..e45a54e 100644 --- a/tests/lexer_test.nim +++ b/tests/lexer_test.nim @@ -1,5 +1,5 @@ -import std/[unittest, os, strutils] -import ../bootstrap/[lexer, token, source_location] +import std/[unittest, strutils] +import ../bootstrap/[lexer, token] proc tokenKinds(source: string): seq[TokenKind] = let res = tokenize(source, "") diff --git a/tests/parser_test.nim b/tests/parser_test.nim index fad2503..7dee4e5 100644 --- a/tests/parser_test.nim +++ b/tests/parser_test.nim @@ -1,4 +1,4 @@ -import std/[unittest, os, strutils] +import std/[unittest, os] import ../bootstrap/[lexer, parser, ast, token] proc parseSource(source: string): ParseResult = diff --git a/tests/sema_test.nim b/tests/sema_test.nim index 1d00885..f2f767e 100644 --- a/tests/sema_test.nim +++ b/tests/sema_test.nim @@ -1,5 +1,5 @@ import std/[unittest, strutils] -import ../bootstrap/[lexer, parser, sema, types] +import ../bootstrap/[lexer, parser, sema] proc checkSource(source: string): SemaResult = let lexRes = tokenize(source, "")

m8F+1C1W@v&y2BHxRPMI6 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