From 31fcf8d2ef4e02ac481c1a85886591b42560bdb4 Mon Sep 17 00:00:00 2001 From: Martin Stefcek Date: Wed, 14 Feb 2024 14:54:22 +0400 Subject: [PATCH 1/4] feat: adapt validator node to ts-rs exported interfaces --- Cargo.lock | 1 + .../tari_dan_wallet_web_ui/package-lock.json | 10 +- .../src/Components/StatusChip.tsx | 2 +- .../src/api/hooks/useAccounts.tsx | 2 +- .../src/api/hooks/useTransactions.tsx | 2 +- .../routes/AccountDetails/AccountDetails.tsx | 3 +- .../routes/AssetVault/Components/Assets.tsx | 2 +- .../AssetVault/Components/ClaimBurn.tsx | 2 +- .../AssetVault/Components/ClaimFees.tsx | 2 +- .../AssetVault/Components/SelectAccount.tsx | 2 +- .../src/routes/Transactions/Events.tsx | 2 +- .../routes/Transactions/FeeInstructions.tsx | 2 +- .../src/routes/Transactions/Instructions.tsx | 2 +- .../src/routes/Transactions/Logs.tsx | 4 +- .../src/routes/Transactions/Substates.tsx | 2 +- .../Transactions/TransactionDetails.tsx | 9 +- .../src/routes/Transactions/Transactions.tsx | 2 +- .../routes/Wallet/Components/AccessTokens.tsx | 3 +- .../src/routes/Wallet/Components/Accounts.tsx | 2 +- .../src/utils/helpers.tsx | 2 +- .../src/utils/json_rpc.tsx | 4 +- .../tari_indexer/src/http_ui/server.rs | 2 +- .../{build => dist}/.gitkeep | 0 .../dist/assets/AvenirLTStd-Book-24072342.otf | Bin 0 -> 28288 bytes .../assets/AvenirLTStd-Heavy-c9bb9964.otf | Bin 0 -> 28508 bytes .../assets/AvenirLTStd-Medium-5e25b13a.otf | Bin 0 -> 28132 bytes .../dist/assets/index-cde4d391.js | 171 + .../dist/assets/index-e44c8cec.css | 1 + .../tari_indexer_web_ui/dist/index.html | 14 + .../tari_indexer_web_ui/dist/manifest.json | 9 + .../tari_indexer_web_ui/dist/robots.txt | 3 + applications/tari_indexer_web_ui/index.html | 12 + .../tari_indexer_web_ui/package-lock.json | 29035 +--------------- applications/tari_indexer_web_ui/package.json | 73 +- .../src/{index.tsx => main.tsx} | 6 - .../src/reportWebVitals.ts | 37 - .../src/routes/VN/Components/Connections.tsx | 4 +- .../src/routes/VN/Components/Info.tsx | 2 +- .../VN/Components/MonitoredNftCollections.tsx | 2 - .../src/routes/VN/Components/NftGallery.tsx | 25 +- .../VN/Components/RecentTransactions.tsx | 1 - .../src/routes/VN/ValidatorNode.test.tsx | 31 - .../src/routes/VN/ValidatorNode.tsx | 2 +- .../src/theme/LayoutMain.tsx | 1 - .../src/utils/json_rpc.tsx | 14 +- .../src/{react-app-env.d.ts => vite-env.d.ts} | 2 +- .../tari_indexer_web_ui/tsconfig.json | 17 +- .../tari_indexer_web_ui/tsconfig.node.json | 9 + .../{src/setupTests.ts => vite.config.ts} | 12 +- .../tari_validator_node/src/http_ui/server.rs | 2 +- .../src/json_rpc/handlers.rs | 31 +- .../tari_validator_node_web_ui/backup/.nvmrc | 1 + .../backup/README.md | 46 + .../backup/package-lock.json | 17499 ++++++++++ .../backup/package.json | 58 + .../backup/tsconfig.json | 20 + .../{build => dist}/.gitkeep | 0 .../dist/assets/AvenirLTStd-Book-24072342.otf | Bin 0 -> 28288 bytes .../assets/AvenirLTStd-Heavy-c9bb9964.otf | Bin 0 -> 28508 bytes .../assets/AvenirLTStd-Medium-5e25b13a.otf | Bin 0 -> 28132 bytes .../dist/assets/index-0c0151eb.js | 281 + .../dist/assets/index-5ef424bc.css | 1 + .../dist/index.html | 14 + .../dist/manifest.json | 9 + .../dist/robots.txt | 3 + .../tari_validator_node_web_ui/index.html | 12 + .../package-lock.json | 16038 +-------- .../tari_validator_node_web_ui/package.json | 77 +- .../public/index.html | 5 +- .../tari_validator_node_web_ui/src/App.tsx | 35 +- .../src/Components/MenuItems.tsx | 1 - .../src/Components/SearchFilter.tsx | 2 +- .../src/Components/StatusChip.tsx | 9 +- .../src/{index.tsx => main.tsx} | 6 - .../src/reportWebVitals.ts | 37 - .../src/routes/Blocks/BlockDetails.tsx | 65 +- .../src/routes/Blocks/Transactions.tsx | 9 +- .../src/routes/Committees/Committee.tsx | 4 +- .../routes/Committees/CommitteeMembers.tsx | 4 +- .../src/routes/Committees/CommitteeSingle.tsx | 13 +- .../src/routes/Committees/Committees.tsx | 9 +- .../routes/Committees/CommitteesLayout.tsx | 18 +- .../routes/Committees/CommitteesPieChart.tsx | 46 +- .../routes/Committees/CommitteesRadial.tsx | 13 +- .../routes/Committees/CommitteesWaterfall.tsx | 4 +- .../src/routes/Transactions/Events.tsx | 21 +- .../routes/Transactions/FeeInstructions.tsx | 7 +- .../src/routes/Transactions/Instructions.tsx | 7 +- .../src/routes/Transactions/Logs.tsx | 8 +- .../src/routes/Transactions/Substates.tsx | 13 +- .../Transactions/TransactionDetails.tsx | 84 +- .../src/routes/VN/Components/AllVNs.tsx | 12 +- .../src/routes/VN/Components/Blocks.tsx | 102 +- .../src/routes/VN/Components/Connections.tsx | 28 +- .../src/routes/VN/Components/Fees.tsx | 46 +- .../src/routes/VN/Components/Info.tsx | 26 +- .../src/routes/VN/Components/Mempool.tsx | 2 +- .../VN/Components/TemplateFunctions.tsx | 23 +- .../src/routes/VN/Components/Templates.tsx | 38 +- .../src/routes/VN/Components/helpers.tsx | 4 +- .../src/routes/VN/ValidatorNode.test.tsx | 30 - .../src/routes/VN/ValidatorNode.tsx | 6 +- .../src/utils/helpers.tsx | 16 - .../src/utils/interfaces.tsx | 71 +- .../src/utils/json_rpc.tsx | 194 +- .../src/{react-app-env.d.ts => vite-env.d.ts} | 2 +- .../tari_validator_node_web_ui/tsconfig.json | 17 +- .../tsconfig.node.json | 9 + .../{src/setupTests.ts => vite.config.ts} | 12 +- bindings/base-node-client.ts | 4 + bindings/build.sh | 30 +- bindings/index.ts | 313 +- bindings/src/types/ArgDef.ts | 3 +- bindings/src/types/Block.ts | 5 +- bindings/src/types/Committee.ts | 5 + bindings/src/types/ComponentHeader.ts | 2 +- bindings/src/types/FinalizeResult.ts | 2 +- bindings/src/types/FunctionDef.ts | 3 +- bindings/src/types/Instruction.ts | 2 +- bindings/src/types/LogEntry.ts | 1 - bindings/src/types/PeerAddress.ts | 3 + bindings/src/types/RuleRequirement.ts | 2 +- bindings/src/types/Shard.ts | 3 + bindings/src/types/TransactionPoolRecord.ts | 13 + bindings/src/types/TransactionPoolStage.ts | 3 + bindings/src/types/TransactionReceipt.ts | 2 +- .../BaseLayerValidatorNode.ts | 2 +- .../AddAddressRequest.ts | 2 +- .../AddAddressResponse.ts | 0 .../AddPeerRequest.ts | 0 .../AddPeerResponse.ts | 0 .../ClearAddressesResponse.ts | 0 .../{ => tari-indexer-client}/Connection.ts | 0 .../ConnectionDirection.ts | 0 .../DeleteAddressRequest.ts | 2 +- .../DeleteAddressResponse.ts | 0 .../GetAddressesResponse.ts | 0 .../GetAllVnsRequest.ts | 2 +- .../GetAllVnsResponse.ts | 2 +- .../GetCommsStatsResponse.ts | 0 .../GetConnectionsResponse.ts | 0 .../GetEpochManagerStatsResponse.ts | 7 + .../GetIdentityResponse.ts | 7 + .../GetNonFungibleCollectionsResponse.ts | 0 .../GetNonFungibleCountRequest.ts | 2 +- .../GetNonFungibleCountResponse.ts | 0 .../GetNonFungiblesRequest.ts | 2 +- .../GetNonFungiblesResponse.ts | 0 .../GetRelatedTransactionsRequest.ts | 2 +- .../GetRelatedTransactionsResponse.ts | 0 .../tari-indexer-client/GetSubstateRequest.ts | 8 + .../GetSubstateResponse.ts | 10 + .../GetTemplateDefinitionRequest.ts | 0 .../GetTemplateDefinitionResponse.ts | 2 +- .../GetTransactionResultRequest.ts | 0 .../GetTransactionResultResponse.ts | 6 + .../IndexerTransactionFinalizedResult.ts | 4 +- .../InspectSubstateRequest.ts | 2 +- .../InspectSubstateResponse.ts | 2 +- .../NonFungibleSubstate.ts | 4 +- .../SubmitTransactionRequest.ts | 9 + .../SubmitTransactionResponse.ts | 7 + .../validator-node-client/AddPeerRequest.ts | 7 + .../validator-node-client/AddPeerResponse.ts | 3 + .../src/types/validator-node-client/ArgDef.ts | 6 + .../CommitteeShardInfo.ts | 2 +- .../types/validator-node-client/Connection.ts | 11 + .../ConnectionDirection.ts | 3 + .../DryRunTransactionFinalizeResult.ts | 6 +- .../validator-node-client/FunctionDef.ts | 9 + .../validator-node-client/GetAllVnsRequest.ts | 6 + .../GetAllVnsResponse.ts | 6 + .../GetBlockRequest.ts | 0 .../GetBlockResponse.ts | 2 +- .../GetBlocksCountResponse.ts | 0 .../GetBlocksRequest.ts | 2 +- .../GetBlocksResponse.ts | 2 +- .../GetCommitteeRequest.ts | 4 +- .../GetCommitteeResponse.ts | 7 + .../GetCommsStatsResponse.ts | 5 + .../GetConnectionsResponse.ts | 6 + .../GetEpochManagerStatsResponse.ts | 4 +- .../GetIdentityResponse.ts | 0 .../GetMempoolStatsResponse.ts | 5 + .../GetNetworkCommitteeResponse.ts | 2 +- .../GetRecentTransactionsRequest.ts | 0 .../GetRecentTransactionsResponse.ts | 2 +- .../GetShardKeyRequest.ts} | 2 +- .../GetShardKeyResponse.ts | 6 + .../GetStateRequest.ts | 2 +- .../GetStateResponse.ts | 0 .../GetSubstateRequest.ts | 2 +- .../GetSubstateResponse.ts | 2 +- .../GetSubstatesByTransactionRequest.ts | 0 .../GetSubstatesByTransactionResponse.ts | 2 +- .../GetTemplateRequest.ts | 2 +- .../GetTemplateResponse.ts | 0 .../GetTemplatesRequest.ts | 0 .../GetTemplatesResponse.ts | 0 .../GetTransactionRequest.ts | 0 .../GetTransactionResponse.ts | 2 +- .../GetTransactionResultRequest.ts | 5 + .../GetTransactionResultResponse.ts | 4 +- .../GetTxPoolResponse.ts | 6 + .../ListBlocksRequest.ts | 0 .../ListBlocksResponse.ts | 2 +- .../types/validator-node-client/LogEntry.ts | 8 + .../types/validator-node-client/LogLevel.ts | 3 + .../RegisterValidatorNodeRequest.ts | 0 .../RegisterValidatorNodeResponse.ts | 0 .../SubmitTransactionRequest.ts | 2 +- .../SubmitTransactionResponse.ts | 0 .../SubstateStatus.ts | 0 .../TemplateAbi.ts | 0 .../TemplateMetadata.ts | 2 +- .../TemplateRegistrationRequest.ts | 0 .../TemplateRegistrationResponse.ts | 0 .../VNGetValidatorFeesRequest.ts | 7 + .../VNGetValidatorFeesResponse.ts | 6 + .../ValidatorFee.ts | 2 +- .../ValidatorNode.ts | 4 +- .../AccountGetDefaultRequest.ts | 0 .../AccountGetRequest.ts | 0 .../AccountGetResponse.ts | 2 +- .../{ => wallet-daemon-client}/AccountInfo.ts | 2 +- .../AccountNftInfo.ts | 0 .../AccountSetDefaultRequest.ts | 0 .../AccountSetDefaultResponse.ts | 0 .../AccountsCreateFreeTestCoinsRequest.ts | 2 +- .../AccountsCreateFreeTestCoinsResponse.ts | 4 +- .../AccountsCreateRequest.ts | 4 +- .../AccountsCreateResponse.ts | 4 +- .../AccountsGetBalancesRequest.ts | 0 .../AccountsGetBalancesResponse.ts | 2 +- .../AccountsInvokeRequest.ts | 4 +- .../AccountsInvokeResponse.ts | 2 +- .../AccountsListRequest.ts | 0 .../AccountsListResponse.ts | 0 .../AuthGetAllJwtRequest.ts | 0 .../AuthGetAllJwtResponse.ts | 2 +- .../AuthLoginAcceptRequest.ts | 0 .../AuthLoginAcceptResponse.ts | 0 .../AuthLoginDenyRequest.ts | 0 .../AuthLoginDenyResponse.ts | 0 .../AuthLoginRequest.ts | 0 .../AuthLoginResponse.ts | 0 .../AuthRevokeTokenRequest.ts | 0 .../AuthRevokeTokenResponse.ts | 0 .../BalanceEntry.ts | 8 +- .../CallInstructionRequest.ts | 4 +- .../ClaimBurnRequest.ts | 2 +- .../ClaimBurnResponse.ts | 4 +- .../ClaimValidatorFeesRequest.ts | 4 +- .../ClaimValidatorFeesResponse.ts | 4 +- .../ComponentAddressOrName.ts | 2 +- .../ConfidentialCreateOutputProofRequest.ts | 2 +- .../ConfidentialCreateOutputProofResponse.ts | 2 +- .../ConfidentialTransferRequest.ts | 4 +- .../ConfidentialTransferResponse.ts | 4 +- .../GetAccountNftRequest.ts | 2 +- .../GetValidatorFeesRequest.ts | 2 +- .../GetValidatorFeesResponse.ts | 4 +- .../KeysCreateRequest.ts | 0 .../KeysCreateResponse.ts | 0 .../KeysListRequest.ts | 0 .../KeysListResponse.ts | 0 .../KeysSetActiveRequest.ts | 0 .../KeysSetActiveResponse.ts | 0 .../ListAccountNftRequest.ts | 0 .../ListAccountNftResponse.ts | 0 .../MintAccountNftRequest.ts | 2 +- .../MintAccountNftResponse.ts | 8 +- .../ProofsCancelRequest.ts | 0 .../ProofsCancelResponse.ts | 0 .../ProofsFinalizeRequest.ts | 0 .../ProofsFinalizeResponse.ts | 0 .../ProofsGenerateRequest.ts | 4 +- .../ProofsGenerateResponse.ts | 2 +- .../RevealFundsRequest.ts | 2 +- .../RevealFundsResponse.ts | 4 +- .../SettingsGetResponse.ts | 0 .../SettingsSetRequest.ts | 0 .../SettingsSetResponse.ts | 0 .../SubstatesGetRequest.ts | 2 +- .../SubstatesGetResponse.ts | 2 +- .../SubstatesListRequest.ts | 2 +- .../SubstatesListResponse.ts | 0 .../TemplatesGetRequest.ts | 0 .../TemplatesGetResponse.ts | 2 +- .../TransactionClaimBurnResponse.ts | 2 +- .../TransactionGetAllRequest.ts | 4 +- .../TransactionGetAllResponse.ts | 6 +- .../TransactionGetRequest.ts | 0 .../TransactionGetResponse.ts | 6 +- .../TransactionGetResultRequest.ts | 0 .../TransactionGetResultResponse.ts | 4 +- .../TransactionSubmitRequest.ts | 6 +- .../TransactionSubmitResponse.ts | 4 +- .../TransactionWaitResultRequest.ts | 0 .../TransactionWaitResultResponse.ts | 6 +- .../TransferRequest.ts | 4 +- .../TransferResponse.ts | 4 +- .../WalletSubstateRecord.ts | 2 +- .../{ => wallet-daemon-client}/WebRtcStart.ts | 0 .../WebRtcStartRequest.ts | 0 .../WebRtcStartResponse.ts | 0 bindings/tari-indexer-client.ts | 38 + bindings/validator-node-client.ts | 62 + bindings/wallet-daemon-client.ts | 88 + clients/base_node_client/src/types.rs | 6 +- clients/tari_indexer_client/src/types.rs | 210 +- clients/validator_node_client/Cargo.toml | 1 + clients/validator_node_client/src/types.rs | 415 +- clients/wallet_daemon_client/src/lib.rs | 6 +- clients/wallet_daemon_client/src/types.rs | 506 +- dan_layer/common_types/src/committee.rs | 2 + dan_layer/common_types/src/peer_address.rs | 5 +- dan_layer/common_types/src/shard.rs | 5 +- dan_layer/engine_types/src/commit_result.rs | 2 +- dan_layer/engine_types/src/component.rs | 2 +- dan_layer/engine_types/src/instruction.rs | 2 +- .../engine_types/src/transaction_receipt.rs | 2 +- .../storage/src/consensus_models/block.rs | 3 +- .../src/consensus_models/transaction_pool.rs | 10 + .../template_lib/src/auth/access_rules.rs | 2 +- 325 files changed, 23486 insertions(+), 43383 deletions(-) rename applications/tari_indexer_web_ui/{build => dist}/.gitkeep (100%) create mode 100644 applications/tari_indexer_web_ui/dist/assets/AvenirLTStd-Book-24072342.otf create mode 100644 applications/tari_indexer_web_ui/dist/assets/AvenirLTStd-Heavy-c9bb9964.otf create mode 100644 applications/tari_indexer_web_ui/dist/assets/AvenirLTStd-Medium-5e25b13a.otf create mode 100644 applications/tari_indexer_web_ui/dist/assets/index-cde4d391.js create mode 100644 applications/tari_indexer_web_ui/dist/assets/index-e44c8cec.css create mode 100644 applications/tari_indexer_web_ui/dist/index.html create mode 100644 applications/tari_indexer_web_ui/dist/manifest.json create mode 100644 applications/tari_indexer_web_ui/dist/robots.txt create mode 100644 applications/tari_indexer_web_ui/index.html rename applications/tari_indexer_web_ui/src/{index.tsx => main.tsx} (90%) delete mode 100644 applications/tari_indexer_web_ui/src/reportWebVitals.ts delete mode 100644 applications/tari_indexer_web_ui/src/routes/VN/ValidatorNode.test.tsx rename applications/tari_indexer_web_ui/src/{react-app-env.d.ts => vite-env.d.ts} (97%) create mode 100644 applications/tari_indexer_web_ui/tsconfig.node.json rename applications/tari_indexer_web_ui/{src/setupTests.ts => vite.config.ts} (86%) create mode 100644 applications/tari_validator_node_web_ui/backup/.nvmrc create mode 100644 applications/tari_validator_node_web_ui/backup/README.md create mode 100644 applications/tari_validator_node_web_ui/backup/package-lock.json create mode 100644 applications/tari_validator_node_web_ui/backup/package.json create mode 100644 applications/tari_validator_node_web_ui/backup/tsconfig.json rename applications/tari_validator_node_web_ui/{build => dist}/.gitkeep (100%) create mode 100644 applications/tari_validator_node_web_ui/dist/assets/AvenirLTStd-Book-24072342.otf create mode 100644 applications/tari_validator_node_web_ui/dist/assets/AvenirLTStd-Heavy-c9bb9964.otf create mode 100644 applications/tari_validator_node_web_ui/dist/assets/AvenirLTStd-Medium-5e25b13a.otf create mode 100644 applications/tari_validator_node_web_ui/dist/assets/index-0c0151eb.js create mode 100644 applications/tari_validator_node_web_ui/dist/assets/index-5ef424bc.css create mode 100644 applications/tari_validator_node_web_ui/dist/index.html create mode 100644 applications/tari_validator_node_web_ui/dist/manifest.json create mode 100644 applications/tari_validator_node_web_ui/dist/robots.txt create mode 100644 applications/tari_validator_node_web_ui/index.html rename applications/tari_validator_node_web_ui/src/{index.tsx => main.tsx} (92%) delete mode 100644 applications/tari_validator_node_web_ui/src/reportWebVitals.ts delete mode 100644 applications/tari_validator_node_web_ui/src/routes/VN/ValidatorNode.test.tsx rename applications/tari_validator_node_web_ui/src/{react-app-env.d.ts => vite-env.d.ts} (97%) create mode 100644 applications/tari_validator_node_web_ui/tsconfig.node.json rename applications/tari_validator_node_web_ui/{src/setupTests.ts => vite.config.ts} (86%) create mode 100644 bindings/base-node-client.ts create mode 100644 bindings/src/types/Committee.ts create mode 100644 bindings/src/types/PeerAddress.ts create mode 100644 bindings/src/types/Shard.ts create mode 100644 bindings/src/types/TransactionPoolRecord.ts create mode 100644 bindings/src/types/TransactionPoolStage.ts rename bindings/src/types/{ => base-node-client}/BaseLayerValidatorNode.ts (77%) rename bindings/src/types/{ => tari-indexer-client}/AddAddressRequest.ts (77%) rename bindings/src/types/{ => tari-indexer-client}/AddAddressResponse.ts (100%) rename bindings/src/types/{ => tari-indexer-client}/AddPeerRequest.ts (100%) rename bindings/src/types/{ => tari-indexer-client}/AddPeerResponse.ts (100%) rename bindings/src/types/{ => tari-indexer-client}/ClearAddressesResponse.ts (100%) rename bindings/src/types/{ => tari-indexer-client}/Connection.ts (100%) rename bindings/src/types/{ => tari-indexer-client}/ConnectionDirection.ts (100%) rename bindings/src/types/{ => tari-indexer-client}/DeleteAddressRequest.ts (77%) rename bindings/src/types/{ => tari-indexer-client}/DeleteAddressResponse.ts (100%) rename bindings/src/types/{ => tari-indexer-client}/GetAddressesResponse.ts (100%) rename bindings/src/types/{ => tari-indexer-client}/GetAllVnsRequest.ts (80%) rename bindings/src/types/{ => tari-indexer-client}/GetAllVnsResponse.ts (67%) rename bindings/src/types/{ => tari-indexer-client}/GetCommsStatsResponse.ts (100%) rename bindings/src/types/{ => tari-indexer-client}/GetConnectionsResponse.ts (100%) create mode 100644 bindings/src/types/tari-indexer-client/GetEpochManagerStatsResponse.ts create mode 100644 bindings/src/types/tari-indexer-client/GetIdentityResponse.ts rename bindings/src/types/{ => tari-indexer-client}/GetNonFungibleCollectionsResponse.ts (100%) rename bindings/src/types/{ => tari-indexer-client}/GetNonFungibleCountRequest.ts (78%) rename bindings/src/types/{ => tari-indexer-client}/GetNonFungibleCountResponse.ts (100%) rename bindings/src/types/{ => tari-indexer-client}/GetNonFungiblesRequest.ts (81%) rename bindings/src/types/{ => tari-indexer-client}/GetNonFungiblesResponse.ts (100%) rename bindings/src/types/{ => tari-indexer-client}/GetRelatedTransactionsRequest.ts (80%) rename bindings/src/types/{ => tari-indexer-client}/GetRelatedTransactionsResponse.ts (100%) create mode 100644 bindings/src/types/tari-indexer-client/GetSubstateRequest.ts create mode 100644 bindings/src/types/tari-indexer-client/GetSubstateResponse.ts rename bindings/src/types/{ => tari-indexer-client}/GetTemplateDefinitionRequest.ts (100%) rename bindings/src/types/{ => tari-indexer-client}/GetTemplateDefinitionResponse.ts (79%) rename bindings/src/types/{ => tari-indexer-client}/GetTransactionResultRequest.ts (100%) create mode 100644 bindings/src/types/tari-indexer-client/GetTransactionResultResponse.ts rename bindings/src/types/{ => tari-indexer-client}/IndexerTransactionFinalizedResult.ts (82%) rename bindings/src/types/{ => tari-indexer-client}/InspectSubstateRequest.ts (80%) rename bindings/src/types/{ => tari-indexer-client}/InspectSubstateResponse.ts (83%) rename bindings/src/types/{ => tari-indexer-client}/NonFungibleSubstate.ts (68%) create mode 100644 bindings/src/types/tari-indexer-client/SubmitTransactionRequest.ts create mode 100644 bindings/src/types/tari-indexer-client/SubmitTransactionResponse.ts create mode 100644 bindings/src/types/validator-node-client/AddPeerRequest.ts create mode 100644 bindings/src/types/validator-node-client/AddPeerResponse.ts create mode 100644 bindings/src/types/validator-node-client/ArgDef.ts rename bindings/src/types/{ => validator-node-client}/CommitteeShardInfo.ts (84%) create mode 100644 bindings/src/types/validator-node-client/Connection.ts create mode 100644 bindings/src/types/validator-node-client/ConnectionDirection.ts rename bindings/src/types/{ => validator-node-client}/DryRunTransactionFinalizeResult.ts (59%) create mode 100644 bindings/src/types/validator-node-client/FunctionDef.ts create mode 100644 bindings/src/types/validator-node-client/GetAllVnsRequest.ts create mode 100644 bindings/src/types/validator-node-client/GetAllVnsResponse.ts rename bindings/src/types/{ => validator-node-client}/GetBlockRequest.ts (100%) rename bindings/src/types/{ => validator-node-client}/GetBlockResponse.ts (80%) rename bindings/src/types/{ => validator-node-client}/GetBlocksCountResponse.ts (100%) rename bindings/src/types/{ => validator-node-client}/GetBlocksRequest.ts (82%) rename bindings/src/types/{ => validator-node-client}/GetBlocksResponse.ts (81%) rename bindings/src/types/{ => validator-node-client}/GetCommitteeRequest.ts (67%) create mode 100644 bindings/src/types/validator-node-client/GetCommitteeResponse.ts create mode 100644 bindings/src/types/validator-node-client/GetCommsStatsResponse.ts create mode 100644 bindings/src/types/validator-node-client/GetConnectionsResponse.ts rename bindings/src/types/{ => validator-node-client}/GetEpochManagerStatsResponse.ts (74%) rename bindings/src/types/{ => validator-node-client}/GetIdentityResponse.ts (100%) create mode 100644 bindings/src/types/validator-node-client/GetMempoolStatsResponse.ts rename bindings/src/types/{ => validator-node-client}/GetNetworkCommitteeResponse.ts (87%) rename bindings/src/types/{ => validator-node-client}/GetRecentTransactionsRequest.ts (100%) rename bindings/src/types/{ => validator-node-client}/GetRecentTransactionsResponse.ts (79%) rename bindings/src/types/{GetShardKey.ts => validator-node-client/GetShardKeyRequest.ts} (80%) create mode 100644 bindings/src/types/validator-node-client/GetShardKeyResponse.ts rename bindings/src/types/{ => validator-node-client}/GetStateRequest.ts (74%) rename bindings/src/types/{ => validator-node-client}/GetStateResponse.ts (100%) rename bindings/src/types/{ => validator-node-client}/GetSubstateRequest.ts (79%) rename bindings/src/types/{ => validator-node-client}/GetSubstateResponse.ts (84%) rename bindings/src/types/{ => validator-node-client}/GetSubstatesByTransactionRequest.ts (100%) rename bindings/src/types/{ => validator-node-client}/GetSubstatesByTransactionResponse.ts (77%) rename bindings/src/types/{ => validator-node-client}/GetTemplateRequest.ts (82%) rename bindings/src/types/{ => validator-node-client}/GetTemplateResponse.ts (100%) rename bindings/src/types/{ => validator-node-client}/GetTemplatesRequest.ts (100%) rename bindings/src/types/{ => validator-node-client}/GetTemplatesResponse.ts (100%) rename bindings/src/types/{ => validator-node-client}/GetTransactionRequest.ts (100%) rename bindings/src/types/{ => validator-node-client}/GetTransactionResponse.ts (73%) create mode 100644 bindings/src/types/validator-node-client/GetTransactionResultRequest.ts rename bindings/src/types/{ => validator-node-client}/GetTransactionResultResponse.ts (77%) create mode 100644 bindings/src/types/validator-node-client/GetTxPoolResponse.ts rename bindings/src/types/{ => validator-node-client}/ListBlocksRequest.ts (100%) rename bindings/src/types/{ => validator-node-client}/ListBlocksResponse.ts (81%) create mode 100644 bindings/src/types/validator-node-client/LogEntry.ts create mode 100644 bindings/src/types/validator-node-client/LogLevel.ts rename bindings/src/types/{ => validator-node-client}/RegisterValidatorNodeRequest.ts (100%) rename bindings/src/types/{ => validator-node-client}/RegisterValidatorNodeResponse.ts (100%) rename bindings/src/types/{ => validator-node-client}/SubmitTransactionRequest.ts (79%) rename bindings/src/types/{ => validator-node-client}/SubmitTransactionResponse.ts (100%) rename bindings/src/types/{ => validator-node-client}/SubstateStatus.ts (100%) rename bindings/src/types/{ => validator-node-client}/TemplateAbi.ts (100%) rename bindings/src/types/{ => validator-node-client}/TemplateMetadata.ts (90%) rename bindings/src/types/{ => validator-node-client}/TemplateRegistrationRequest.ts (100%) rename bindings/src/types/{ => validator-node-client}/TemplateRegistrationResponse.ts (100%) create mode 100644 bindings/src/types/validator-node-client/VNGetValidatorFeesRequest.ts create mode 100644 bindings/src/types/validator-node-client/VNGetValidatorFeesResponse.ts rename bindings/src/types/{ => validator-node-client}/ValidatorFee.ts (87%) rename bindings/src/types/{ => validator-node-client}/ValidatorNode.ts (74%) rename bindings/src/types/{ => wallet-daemon-client}/AccountGetDefaultRequest.ts (100%) rename bindings/src/types/{ => wallet-daemon-client}/AccountGetRequest.ts (100%) rename bindings/src/types/{ => wallet-daemon-client}/AccountGetResponse.ts (81%) rename bindings/src/types/{ => wallet-daemon-client}/AccountInfo.ts (80%) rename bindings/src/types/{ => wallet-daemon-client}/AccountNftInfo.ts (100%) rename bindings/src/types/{ => wallet-daemon-client}/AccountSetDefaultRequest.ts (100%) rename bindings/src/types/{ => wallet-daemon-client}/AccountSetDefaultResponse.ts (100%) rename bindings/src/types/{ => wallet-daemon-client}/AccountsCreateFreeTestCoinsRequest.ts (89%) rename bindings/src/types/{ => wallet-daemon-client}/AccountsCreateFreeTestCoinsResponse.ts (73%) rename bindings/src/types/{ => wallet-daemon-client}/AccountsCreateRequest.ts (73%) rename bindings/src/types/{ => wallet-daemon-client}/AccountsCreateResponse.ts (67%) rename bindings/src/types/{ => wallet-daemon-client}/AccountsGetBalancesRequest.ts (100%) rename bindings/src/types/{ => wallet-daemon-client}/AccountsGetBalancesResponse.ts (84%) rename bindings/src/types/{ => wallet-daemon-client}/AccountsInvokeRequest.ts (80%) rename bindings/src/types/{ => wallet-daemon-client}/AccountsInvokeResponse.ts (74%) rename bindings/src/types/{ => wallet-daemon-client}/AccountsListRequest.ts (100%) rename bindings/src/types/{ => wallet-daemon-client}/AccountsListResponse.ts (100%) rename bindings/src/types/{ => wallet-daemon-client}/AuthGetAllJwtRequest.ts (100%) rename bindings/src/types/{ => wallet-daemon-client}/AuthGetAllJwtResponse.ts (80%) rename bindings/src/types/{ => wallet-daemon-client}/AuthLoginAcceptRequest.ts (100%) rename bindings/src/types/{ => wallet-daemon-client}/AuthLoginAcceptResponse.ts (100%) rename bindings/src/types/{ => wallet-daemon-client}/AuthLoginDenyRequest.ts (100%) rename bindings/src/types/{ => wallet-daemon-client}/AuthLoginDenyResponse.ts (100%) rename bindings/src/types/{ => wallet-daemon-client}/AuthLoginRequest.ts (100%) rename bindings/src/types/{ => wallet-daemon-client}/AuthLoginResponse.ts (100%) rename bindings/src/types/{ => wallet-daemon-client}/AuthRevokeTokenRequest.ts (100%) rename bindings/src/types/{ => wallet-daemon-client}/AuthRevokeTokenResponse.ts (100%) rename bindings/src/types/{ => wallet-daemon-client}/BalanceEntry.ts (61%) rename bindings/src/types/{ => wallet-daemon-client}/CallInstructionRequest.ts (82%) rename bindings/src/types/{ => wallet-daemon-client}/ClaimBurnRequest.ts (88%) rename bindings/src/types/{ => wallet-daemon-client}/ClaimBurnResponse.ts (68%) rename bindings/src/types/{ => wallet-daemon-client}/ClaimValidatorFeesRequest.ts (81%) rename bindings/src/types/{ => wallet-daemon-client}/ClaimValidatorFeesResponse.ts (69%) rename bindings/src/types/{ => wallet-daemon-client}/ComponentAddressOrName.ts (76%) rename bindings/src/types/{ => wallet-daemon-client}/ConfidentialCreateOutputProofRequest.ts (81%) rename bindings/src/types/{ => wallet-daemon-client}/ConfidentialCreateOutputProofResponse.ts (72%) rename bindings/src/types/{ => wallet-daemon-client}/ConfidentialTransferRequest.ts (80%) rename bindings/src/types/{ => wallet-daemon-client}/ConfidentialTransferResponse.ts (69%) rename bindings/src/types/{ => wallet-daemon-client}/GetAccountNftRequest.ts (75%) rename bindings/src/types/{ => wallet-daemon-client}/GetValidatorFeesRequest.ts (83%) rename bindings/src/types/{ => wallet-daemon-client}/GetValidatorFeesResponse.ts (70%) rename bindings/src/types/{ => wallet-daemon-client}/KeysCreateRequest.ts (100%) rename bindings/src/types/{ => wallet-daemon-client}/KeysCreateResponse.ts (100%) rename bindings/src/types/{ => wallet-daemon-client}/KeysListRequest.ts (100%) rename bindings/src/types/{ => wallet-daemon-client}/KeysListResponse.ts (100%) rename bindings/src/types/{ => wallet-daemon-client}/KeysSetActiveRequest.ts (100%) rename bindings/src/types/{ => wallet-daemon-client}/KeysSetActiveResponse.ts (100%) rename bindings/src/types/{ => wallet-daemon-client}/ListAccountNftRequest.ts (100%) rename bindings/src/types/{ => wallet-daemon-client}/ListAccountNftResponse.ts (100%) rename bindings/src/types/{ => wallet-daemon-client}/MintAccountNftRequest.ts (89%) rename bindings/src/types/{ => wallet-daemon-client}/MintAccountNftResponse.ts (54%) rename bindings/src/types/{ => wallet-daemon-client}/ProofsCancelRequest.ts (100%) rename bindings/src/types/{ => wallet-daemon-client}/ProofsCancelResponse.ts (100%) rename bindings/src/types/{ => wallet-daemon-client}/ProofsFinalizeRequest.ts (100%) rename bindings/src/types/{ => wallet-daemon-client}/ProofsFinalizeResponse.ts (100%) rename bindings/src/types/{ => wallet-daemon-client}/ProofsGenerateRequest.ts (78%) rename bindings/src/types/{ => wallet-daemon-client}/ProofsGenerateResponse.ts (72%) rename bindings/src/types/{ => wallet-daemon-client}/RevealFundsRequest.ts (89%) rename bindings/src/types/{ => wallet-daemon-client}/RevealFundsResponse.ts (68%) rename bindings/src/types/{ => wallet-daemon-client}/SettingsGetResponse.ts (100%) rename bindings/src/types/{ => wallet-daemon-client}/SettingsSetRequest.ts (100%) rename bindings/src/types/{ => wallet-daemon-client}/SettingsSetResponse.ts (100%) rename bindings/src/types/{ => wallet-daemon-client}/SubstatesGetRequest.ts (78%) rename bindings/src/types/{ => wallet-daemon-client}/SubstatesGetResponse.ts (85%) rename bindings/src/types/{ => wallet-daemon-client}/SubstatesListRequest.ts (80%) rename bindings/src/types/{ => wallet-daemon-client}/SubstatesListResponse.ts (100%) rename bindings/src/types/{ => wallet-daemon-client}/TemplatesGetRequest.ts (100%) rename bindings/src/types/{ => wallet-daemon-client}/TemplatesGetResponse.ts (78%) rename bindings/src/types/{ => wallet-daemon-client}/TransactionClaimBurnResponse.ts (80%) rename bindings/src/types/{ => wallet-daemon-client}/TransactionGetAllRequest.ts (64%) rename bindings/src/types/{ => wallet-daemon-client}/TransactionGetAllResponse.ts (58%) rename bindings/src/types/{ => wallet-daemon-client}/TransactionGetRequest.ts (100%) rename bindings/src/types/{ => wallet-daemon-client}/TransactionGetResponse.ts (60%) rename bindings/src/types/{ => wallet-daemon-client}/TransactionGetResultRequest.ts (100%) rename bindings/src/types/{ => wallet-daemon-client}/TransactionGetResultResponse.ts (69%) rename bindings/src/types/{ => wallet-daemon-client}/TransactionSubmitRequest.ts (73%) rename bindings/src/types/{ => wallet-daemon-client}/TransactionSubmitResponse.ts (69%) rename bindings/src/types/{ => wallet-daemon-client}/TransactionWaitResultRequest.ts (100%) rename bindings/src/types/{ => wallet-daemon-client}/TransactionWaitResultResponse.ts (66%) rename bindings/src/types/{ => wallet-daemon-client}/TransferRequest.ts (79%) rename bindings/src/types/{ => wallet-daemon-client}/TransferResponse.ts (70%) rename bindings/src/types/{ => wallet-daemon-client}/WalletSubstateRecord.ts (85%) rename bindings/src/types/{ => wallet-daemon-client}/WebRtcStart.ts (100%) rename bindings/src/types/{ => wallet-daemon-client}/WebRtcStartRequest.ts (100%) rename bindings/src/types/{ => wallet-daemon-client}/WebRtcStartResponse.ts (100%) create mode 100644 bindings/tari-indexer-client.ts create mode 100644 bindings/validator-node-client.ts create mode 100644 bindings/wallet-daemon-client.ts diff --git a/Cargo.lock b/Cargo.lock index ac24c6aaa..667a9c34c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10042,6 +10042,7 @@ dependencies = [ "reqwest", "serde", "serde_json", + "tari_base_node_client", "tari_common_types", "tari_dan_common_types", "tari_dan_storage", diff --git a/applications/tari_dan_wallet_web_ui/package-lock.json b/applications/tari_dan_wallet_web_ui/package-lock.json index ac70826f6..1cbce4b76 100644 --- a/applications/tari_dan_wallet_web_ui/package-lock.json +++ b/applications/tari_dan_wallet_web_ui/package-lock.json @@ -15,13 +15,13 @@ "@mui/x-data-grid": "^6.0.2", "@tanstack/react-query": "^4.33.0", "@tanstack/react-query-devtools": "^4.33.0", + "@tarilabs/typescript-bindings": "file:../../bindings", "async-mutex": "^0.4.0", "file-saver": "^2.0.5", "react": "^18.2.0", "react-dom": "^18.2.0", "react-icons": "^4.9.0", "react-router-dom": "^6.9.0", - "@tarilabs/typescript-bindings": "file:../../bindings", "use-react-router-breadcrumbs": "^4.0.1", "zustand": "^4.4.1", "zustand-persist": "^0.1.6" @@ -1141,6 +1141,10 @@ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/@tarilabs/typescript-bindings": { + "resolved": "../../bindings", + "link": true + }, "node_modules/@types/file-saver": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/@types/file-saver/-/file-saver-2.0.7.tgz", @@ -1840,10 +1844,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@tarilabs/typescript-bindings": { - "resolved": "../../bindings", - "link": true - }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", diff --git a/applications/tari_dan_wallet_web_ui/src/Components/StatusChip.tsx b/applications/tari_dan_wallet_web_ui/src/Components/StatusChip.tsx index f0df34451..a65fddb09 100644 --- a/applications/tari_dan_wallet_web_ui/src/Components/StatusChip.tsx +++ b/applications/tari_dan_wallet_web_ui/src/Components/StatusChip.tsx @@ -23,7 +23,7 @@ import { Chip, Avatar } from "@mui/material"; import { IoCheckmarkOutline, IoDiamondOutline, IoReload, IoHourglassOutline, IoCloseOutline } from "react-icons/io5"; import { useTheme } from "@mui/material/styles"; -import { TransactionStatus } from "@tarilabs/typescript-bindings"; +import type { TransactionStatus } from "@tarilabs/typescript-bindings"; interface StatusChipProps { status: TransactionStatus; diff --git a/applications/tari_dan_wallet_web_ui/src/api/hooks/useAccounts.tsx b/applications/tari_dan_wallet_web_ui/src/api/hooks/useAccounts.tsx index d0e9c2208..0ef7d86ac 100644 --- a/applications/tari_dan_wallet_web_ui/src/api/hooks/useAccounts.tsx +++ b/applications/tari_dan_wallet_web_ui/src/api/hooks/useAccounts.tsx @@ -35,7 +35,7 @@ import { } from "../../utils/json_rpc"; import { apiError } from "../helpers/types"; import queryClient from "../queryClient"; -import { AccountsListResponse, Arg, ComponentAccessRules } from "@tarilabs/typescript-bindings"; +import type { Arg, ComponentAccessRules } from "@tarilabs/typescript-bindings"; // Fees are passed as strings because Amount is tagged export const useAccountsClaimBurn = (account: string, claimProof: string, fee: number) => { diff --git a/applications/tari_dan_wallet_web_ui/src/api/hooks/useTransactions.tsx b/applications/tari_dan_wallet_web_ui/src/api/hooks/useTransactions.tsx index efd1f6f69..bb8760aa8 100644 --- a/applications/tari_dan_wallet_web_ui/src/api/hooks/useTransactions.tsx +++ b/applications/tari_dan_wallet_web_ui/src/api/hooks/useTransactions.tsx @@ -24,7 +24,7 @@ import { useQuery } from "@tanstack/react-query"; import { transactionsGet, transactionsGetAll } from "../../utils/json_rpc"; import { apiError } from "../helpers/types"; -import { TransactionGetAllResponse, TransactionStatus } from "@tarilabs/typescript-bindings"; +import type { TransactionStatus } from "@tarilabs/typescript-bindings"; const useTransactionDetails = (hash: string) => { return useQuery({ diff --git a/applications/tari_dan_wallet_web_ui/src/routes/AccountDetails/AccountDetails.tsx b/applications/tari_dan_wallet_web_ui/src/routes/AccountDetails/AccountDetails.tsx index 1708f78c9..6623ebabd 100644 --- a/applications/tari_dan_wallet_web_ui/src/routes/AccountDetails/AccountDetails.tsx +++ b/applications/tari_dan_wallet_web_ui/src/routes/AccountDetails/AccountDetails.tsx @@ -35,7 +35,8 @@ import { shortenString } from "../../utils/helpers"; import { DataTableCell } from "../../Components/StyledComponents"; import CopyToClipboard from "../../Components/CopyToClipboard"; import FetchStatusCheck from "../../Components/FetchStatusCheck"; -import { Account, AccountNftInfo, BalanceEntry, substateIdToString } from "@tarilabs/typescript-bindings"; +import { substateIdToString } from "@tarilabs/typescript-bindings"; +import type { AccountNftInfo, BalanceEntry } from "@tarilabs/typescript-bindings/wallet-daemon-client"; function BalanceRow(props: BalanceEntry) { return ( diff --git a/applications/tari_dan_wallet_web_ui/src/routes/AssetVault/Components/Assets.tsx b/applications/tari_dan_wallet_web_ui/src/routes/AssetVault/Components/Assets.tsx index 8b0d04b6e..1fc259594 100644 --- a/applications/tari_dan_wallet_web_ui/src/routes/AssetVault/Components/Assets.tsx +++ b/applications/tari_dan_wallet_web_ui/src/routes/AssetVault/Components/Assets.tsx @@ -37,7 +37,7 @@ import { DataTableCell } from "../../../Components/StyledComponents"; import { useAccountNFTsList, useAccountsGetBalances } from "../../../api/hooks/useAccounts"; import useAccountStore from "../../../store/accountStore"; import { shortenString } from "../../../utils/helpers"; -import { AccountNftInfo, BalanceEntry } from "@tarilabs/typescript-bindings"; +import type { AccountNftInfo, BalanceEntry } from "@tarilabs/typescript-bindings/wallet-daemon-client"; interface TabPanelProps { children?: React.ReactNode; diff --git a/applications/tari_dan_wallet_web_ui/src/routes/AssetVault/Components/ClaimBurn.tsx b/applications/tari_dan_wallet_web_ui/src/routes/AssetVault/Components/ClaimBurn.tsx index 508e5f0cb..7a5518ae0 100644 --- a/applications/tari_dan_wallet_web_ui/src/routes/AssetVault/Components/ClaimBurn.tsx +++ b/applications/tari_dan_wallet_web_ui/src/routes/AssetVault/Components/ClaimBurn.tsx @@ -37,7 +37,7 @@ import { useTheme } from "@mui/material/styles"; import { accountsClaimBurn } from "../../../utils/json_rpc"; import useAccountStore from "../../../store/accountStore"; import { useKeysList } from "../../../api/hooks/useKeys"; -import { AccountInfo, AccountsListResponse } from "@tarilabs/typescript-bindings"; +import type { AccountInfo } from "@tarilabs/typescript-bindings/wallet-daemon-client"; export default function ClaimBurn() { const [open, setOpen] = useState(false); diff --git a/applications/tari_dan_wallet_web_ui/src/routes/AssetVault/Components/ClaimFees.tsx b/applications/tari_dan_wallet_web_ui/src/routes/AssetVault/Components/ClaimFees.tsx index 72777806e..cc1e1803b 100644 --- a/applications/tari_dan_wallet_web_ui/src/routes/AssetVault/Components/ClaimFees.tsx +++ b/applications/tari_dan_wallet_web_ui/src/routes/AssetVault/Components/ClaimFees.tsx @@ -36,7 +36,7 @@ import useAccountStore from "../../../store/accountStore"; import { FormControl, InputLabel, MenuItem, Select, SelectChangeEvent } from "@mui/material"; import { useKeysList } from "../../../api/hooks/useKeys"; import { validatorsClaimFees } from "../../../utils/json_rpc"; -import { AccountInfo } from "@tarilabs/typescript-bindings"; +import type { AccountInfo } from "@tarilabs/typescript-bindings/wallet-daemon-client"; export default function ClaimFees() { const [open, setOpen] = useState(false); diff --git a/applications/tari_dan_wallet_web_ui/src/routes/AssetVault/Components/SelectAccount.tsx b/applications/tari_dan_wallet_web_ui/src/routes/AssetVault/Components/SelectAccount.tsx index 4e638bb45..9f10dab42 100644 --- a/applications/tari_dan_wallet_web_ui/src/routes/AssetVault/Components/SelectAccount.tsx +++ b/applications/tari_dan_wallet_web_ui/src/routes/AssetVault/Components/SelectAccount.tsx @@ -32,7 +32,7 @@ import Select, { SelectChangeEvent } from "@mui/material/Select"; import Dialog from "./AddAccount"; import useAccountStore from "../../../store/accountStore"; import { useAccountsList } from "../../../api/hooks/useAccounts"; -import { AccountInfo } from "@tarilabs/typescript-bindings"; +import type { AccountInfo } from "@tarilabs/typescript-bindings/wallet-daemon-client"; function SelectAccount() { const { accountName, setAccountName } = useAccountStore(); diff --git a/applications/tari_dan_wallet_web_ui/src/routes/Transactions/Events.tsx b/applications/tari_dan_wallet_web_ui/src/routes/Transactions/Events.tsx index b1f1cf574..b133fd382 100644 --- a/applications/tari_dan_wallet_web_ui/src/routes/Transactions/Events.tsx +++ b/applications/tari_dan_wallet_web_ui/src/routes/Transactions/Events.tsx @@ -30,7 +30,7 @@ import KeyboardArrowDownIcon from "@mui/icons-material/KeyboardArrowDown"; import KeyboardArrowUpIcon from "@mui/icons-material/KeyboardArrowUp"; import CodeBlockExpand from "../../Components/CodeBlock"; import { useTheme } from "@mui/material/styles"; -import { Event } from "@tarilabs/typescript-bindings"; +import type { Event } from "@tarilabs/typescript-bindings"; function RowData({ component_address, template_address, topic, tx_hash, payload }: Event, index: number) { const [open, setOpen] = useState(false); diff --git a/applications/tari_dan_wallet_web_ui/src/routes/Transactions/FeeInstructions.tsx b/applications/tari_dan_wallet_web_ui/src/routes/Transactions/FeeInstructions.tsx index 61982e9b0..77eda7aa3 100644 --- a/applications/tari_dan_wallet_web_ui/src/routes/Transactions/FeeInstructions.tsx +++ b/applications/tari_dan_wallet_web_ui/src/routes/Transactions/FeeInstructions.tsx @@ -27,7 +27,7 @@ import KeyboardArrowDownIcon from "@mui/icons-material/KeyboardArrowDown"; import KeyboardArrowUpIcon from "@mui/icons-material/KeyboardArrowUp"; import CodeBlockExpand from "../../Components/CodeBlock"; import { useTheme } from "@mui/material/styles"; -import { Instruction } from "@tarilabs/typescript-bindings"; +import type { Instruction } from "@tarilabs/typescript-bindings"; function RowData({ title, data }: { title: string; data: Instruction }, index: number) { const [open, setOpen] = useState(false); diff --git a/applications/tari_dan_wallet_web_ui/src/routes/Transactions/Instructions.tsx b/applications/tari_dan_wallet_web_ui/src/routes/Transactions/Instructions.tsx index 15e13b827..c225493b3 100644 --- a/applications/tari_dan_wallet_web_ui/src/routes/Transactions/Instructions.tsx +++ b/applications/tari_dan_wallet_web_ui/src/routes/Transactions/Instructions.tsx @@ -27,7 +27,7 @@ import KeyboardArrowDownIcon from "@mui/icons-material/KeyboardArrowDown"; import KeyboardArrowUpIcon from "@mui/icons-material/KeyboardArrowUp"; import CodeBlockExpand from "../../Components/CodeBlock"; import { useTheme } from "@mui/material/styles"; -import { Instruction } from "@tarilabs/typescript-bindings"; +import type { Instruction } from "@tarilabs/typescript-bindings"; function RowData({ title, data }: { title: string; data: Instruction }, index: number) { const [open, setOpen] = useState(false); diff --git a/applications/tari_dan_wallet_web_ui/src/routes/Transactions/Logs.tsx b/applications/tari_dan_wallet_web_ui/src/routes/Transactions/Logs.tsx index a88b822c8..d7ea01663 100644 --- a/applications/tari_dan_wallet_web_ui/src/routes/Transactions/Logs.tsx +++ b/applications/tari_dan_wallet_web_ui/src/routes/Transactions/Logs.tsx @@ -22,7 +22,7 @@ import { TableContainer, Table, TableHead, TableRow, TableCell, TableBody } from "@mui/material"; import { DataTableCell } from "../../Components/StyledComponents"; -import { LogEntry } from "@tarilabs/typescript-bindings"; +import type { LogEntry } from "@tarilabs/typescript-bindings"; export default function Logs({ data }: { data: Array }) { return ( @@ -35,7 +35,7 @@ export default function Logs({ data }: { data: Array }) { - {data.map(({ level, message, timestamp }: LogEntry, index: number) => { + {data.map(({ level, message }: LogEntry, index: number) => { return ( {level} diff --git a/applications/tari_dan_wallet_web_ui/src/routes/Transactions/Substates.tsx b/applications/tari_dan_wallet_web_ui/src/routes/Transactions/Substates.tsx index 2e5b4c90a..69440a299 100644 --- a/applications/tari_dan_wallet_web_ui/src/routes/Transactions/Substates.tsx +++ b/applications/tari_dan_wallet_web_ui/src/routes/Transactions/Substates.tsx @@ -29,7 +29,7 @@ import KeyboardArrowUpIcon from "@mui/icons-material/KeyboardArrowUp"; import { IoArrowDownCircle, IoArrowUpCircle } from "react-icons/io5"; import CodeBlockExpand from "../../Components/CodeBlock"; import { useTheme } from "@mui/material/styles"; -import { Substate, SubstateId, TransactionResult } from "@tarilabs/typescript-bindings"; +import type { Substate, SubstateId, TransactionResult } from "@tarilabs/typescript-bindings"; function RowData({ info, state }: { info: [SubstateId, Substate | number]; state: string }, index: number) { const [open, setOpen] = useState(false); diff --git a/applications/tari_dan_wallet_web_ui/src/routes/Transactions/TransactionDetails.tsx b/applications/tari_dan_wallet_web_ui/src/routes/Transactions/TransactionDetails.tsx index 3fd0c8e25..f1b81337e 100644 --- a/applications/tari_dan_wallet_web_ui/src/routes/Transactions/TransactionDetails.tsx +++ b/applications/tari_dan_wallet_web_ui/src/routes/Transactions/TransactionDetails.tsx @@ -39,13 +39,8 @@ import KeyboardArrowDownIcon from "@mui/icons-material/KeyboardArrowDown"; import KeyboardArrowUpIcon from "@mui/icons-material/KeyboardArrowUp"; import Loading from "../../Components/Loading"; import Error from "../../Components/Error"; -import { - FinalizeResult, - RejectReason, - TransactionResult, - getRejectReasonFromTransactionResult, - rejectReasonToString, -} from "@tarilabs/typescript-bindings"; +import type { FinalizeResult, RejectReason, TransactionResult } from "@tarilabs/typescript-bindings"; +import { getRejectReasonFromTransactionResult, rejectReasonToString } from "@tarilabs/typescript-bindings"; export default function TransactionDetails() { const [expandedPanels, setExpandedPanels] = useState([]); diff --git a/applications/tari_dan_wallet_web_ui/src/routes/Transactions/Transactions.tsx b/applications/tari_dan_wallet_web_ui/src/routes/Transactions/Transactions.tsx index f1aca45ed..98631c92e 100644 --- a/applications/tari_dan_wallet_web_ui/src/routes/Transactions/Transactions.tsx +++ b/applications/tari_dan_wallet_web_ui/src/routes/Transactions/Transactions.tsx @@ -41,7 +41,7 @@ import { DataTableCell } from "../../Components/StyledComponents"; import { useGetAllTransactions } from "../../api/hooks/useTransactions"; import { emptyRows, handleChangePage, handleChangeRowsPerPage } from "../../utils/helpers"; import { useAccountsGet } from "../../api/hooks/useAccounts"; -import { FinalizeResult, Transaction, TransactionStatus } from "@tarilabs/typescript-bindings"; +import type { FinalizeResult, Transaction, TransactionStatus } from "@tarilabs/typescript-bindings"; export default function Transactions({ accountName }: { accountName: string }) { const { data: accountsData } = useAccountsGet(accountName); diff --git a/applications/tari_dan_wallet_web_ui/src/routes/Wallet/Components/AccessTokens.tsx b/applications/tari_dan_wallet_web_ui/src/routes/Wallet/Components/AccessTokens.tsx index 833111788..f4439d63e 100644 --- a/applications/tari_dan_wallet_web_ui/src/routes/Wallet/Components/AccessTokens.tsx +++ b/applications/tari_dan_wallet_web_ui/src/routes/Wallet/Components/AccessTokens.tsx @@ -49,7 +49,8 @@ import FetchStatusCheck from "../../../Components/FetchStatusCheck"; import { AccordionIconButton, CodeBlock, DataTableCell } from "../../../Components/StyledComponents"; import { useAuthRevokeToken, useGetAllTokens } from "../../../api/hooks/useTokens"; import { shortenString } from "../../../utils/helpers"; -import { Claims, JrpcPermission, JrpcPermissions, jrpcPermissionToString } from "@tarilabs/typescript-bindings"; +import type { Claims, JrpcPermission, JrpcPermissions } from "@tarilabs/typescript-bindings"; +import { jrpcPermissionToString } from "@tarilabs/typescript-bindings"; function AlertDialog({ fn, row }: any) { const [open, setOpen] = useState(false); diff --git a/applications/tari_dan_wallet_web_ui/src/routes/Wallet/Components/Accounts.tsx b/applications/tari_dan_wallet_web_ui/src/routes/Wallet/Components/Accounts.tsx index 88b635e2d..d440690f9 100644 --- a/applications/tari_dan_wallet_web_ui/src/routes/Wallet/Components/Accounts.tsx +++ b/applications/tari_dan_wallet_web_ui/src/routes/Wallet/Components/Accounts.tsx @@ -50,7 +50,7 @@ import { } from "../../../api/hooks/useAccounts"; import FetchStatusCheck from "../../../Components/FetchStatusCheck"; import queryClient from "../../../api/queryClient"; -import { AccountInfo } from "@tarilabs/typescript-bindings"; +import type { AccountInfo } from "@tarilabs/typescript-bindings/wallet-daemon-client"; function Account(account: AccountInfo, index: number) { const { pathname } = useLocation(); diff --git a/applications/tari_dan_wallet_web_ui/src/utils/helpers.tsx b/applications/tari_dan_wallet_web_ui/src/utils/helpers.tsx index 7873d6a4e..5d730932b 100644 --- a/applications/tari_dan_wallet_web_ui/src/utils/helpers.tsx +++ b/applications/tari_dan_wallet_web_ui/src/utils/helpers.tsx @@ -21,7 +21,7 @@ // USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. import { ChangeEvent } from "react"; -import { FinalizeResult, SubstateId, Transaction, TransactionStatus } from "@tarilabs/typescript-bindings"; +import type { FinalizeResult, SubstateId, Transaction, TransactionStatus } from "@tarilabs/typescript-bindings"; const renderJson = (json: any) => { if (Array.isArray(json)) { diff --git a/applications/tari_dan_wallet_web_ui/src/utils/json_rpc.tsx b/applications/tari_dan_wallet_web_ui/src/utils/json_rpc.tsx index 3d5ade03d..6bde1e7a5 100644 --- a/applications/tari_dan_wallet_web_ui/src/utils/json_rpc.tsx +++ b/applications/tari_dan_wallet_web_ui/src/utils/json_rpc.tsx @@ -22,7 +22,7 @@ import { Mutex } from "async-mutex"; import { json } from "react-router-dom"; -import { +import type { AccountGetDefaultRequest, AccountGetRequest, AccountGetResponse, @@ -94,7 +94,7 @@ import { TransferResponse, WebRtcStartRequest, WebRtcStartResponse, -} from "@tarilabs/typescript-bindings"; +} from "@tarilabs/typescript-bindings/wallet-daemon-client"; let token: String | null = null; let json_id = 0; diff --git a/applications/tari_indexer/src/http_ui/server.rs b/applications/tari_indexer/src/http_ui/server.rs index 33db40ba0..daa8373c5 100644 --- a/applications/tari_indexer/src/http_ui/server.rs +++ b/applications/tari_indexer/src/http_ui/server.rs @@ -57,7 +57,7 @@ pub async fn run_http_ui_server(address: SocketAddr, json_rpc_address: String) - Ok(()) } -static PROJECT_DIR: Dir<'_> = include_dir!("$CARGO_MANIFEST_DIR/../tari_indexer_web_ui/build"); +static PROJECT_DIR: Dir<'_> = include_dir!("$CARGO_MANIFEST_DIR/../tari_indexer_web_ui/dist"); async fn handler(uri: Uri) -> impl IntoResponse { let path = uri.path(); diff --git a/applications/tari_indexer_web_ui/build/.gitkeep b/applications/tari_indexer_web_ui/dist/.gitkeep similarity index 100% rename from applications/tari_indexer_web_ui/build/.gitkeep rename to applications/tari_indexer_web_ui/dist/.gitkeep diff --git a/applications/tari_indexer_web_ui/dist/assets/AvenirLTStd-Book-24072342.otf b/applications/tari_indexer_web_ui/dist/assets/AvenirLTStd-Book-24072342.otf new file mode 100644 index 0000000000000000000000000000000000000000..6117f64c53fa09c35a0ff95f16e8ab58953c4f95 GIT binary patch literal 28288 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 X+z^_BsnNoJpOIr0=_f8}BO>xIt}3c1 literal 0 HcmV?d00001 diff --git a/applications/tari_indexer_web_ui/dist/assets/AvenirLTStd-Heavy-c9bb9964.otf b/applications/tari_indexer_web_ui/dist/assets/AvenirLTStd-Heavy-c9bb9964.otf new file mode 100644 index 0000000000000000000000000000000000000000..24cced143da7e9fafaf8bf39eb385c5075932be2 GIT binary patch literal 28508 zcmd432UrwIw=i5iGu?wdI4aGcGWN`ffD$AcFb9HJ5D*Xy3>hUyQ53V7Ft4rwF)J7_ zU;-6$!W>Z-Tou<9*A;iyYPN9sPY<|v_uhTq`+nd5{Lk~#)KqoFQ>RWDW% zqn2nEk|LkMgZw;~v|n=wp}=f}P;YlHFWrSBKg~tRcn?DTUU>Ko8xo)QnS=Bb2({fY z#K+t3K#$|+5%PJ05VLKF-`K(LAO8LTq0yTVlJxcVb94zFo-zd?Y9Q1X8Xm7tn)7O9 z2tx9=2+8teBJ~k(Z;!tYY0ts+h=BKwSe9$3sVS`~0}Xvf6#OEo#9C5@ zXe5&?mIT53h$f$!h+L?4P>(_`l}O-UCgwF1ZvGkMG1wDe)DcNjTL8oFIz!v=^FVSD zvgwdmsvTwhXZ!B(F7`_NZHe5Q!xCg9f@6r6q7EpiIV?kFD6Kh6qrPZybC^MG(B#;+E_pxX%17!Uec>M3@}I{o5ND%CW&tj z%aDa+XLFcFQzciL!^~ge<&;i3pgFz;(#R$?hZV?0HlsPLL_=icUT(eY;kQ?Jd!37ulZ$RpL}FN^&Mzx9Eiyh;H!LAMF(oN6MV}TK;h-B77pF^! zjgCo6)ulwHMy6yy{aI5;^u^@&ML3r|eQ&^bFeIdpgK6R)2VnV1&k5EmN; z=?>0rJ$gF-t0rPob$VS|iasJTUY{~Wml&lR8Jm!pmX#E#8xkKj6#5Vy3*AhKjL^j< z=+a^$bz>d;9CSX=*@QHmJ|RNq|7T(EsHoWRNJC`2K1&BE`g`f{$doia)RG9*r06E6 zr^Kd4#D=Fqmr?<55h=0y1f5q(dRlCBWJ*k0T2gOE$IQ%32fc`Ghw#LBM-i-lncx@~ z8Lf|Vh)Ii&LwkX|ol!632F|`Y+zWL#gk6vmJT4GB2t}Yo6ow)p?1!>YDiCxeiU(hZ zhM@!$4yh?9$?&T;q(vYHL%BE<2Yw2QMbRh*Qp6G|P&O4@3d(?AG3OvdC;@V%K>A4J z55InpI|BUf@aT{))E$rX(AHoG#X*V-lygF^klF{zdqBLWAtct>RFhawQ!QQ5P>9t- zD_MVQ>z{K37+^~UXcD0&-QQaBff{wqcoEwdpFYsDM1WSrLISiQVpL3X0N9)%RfKyA z)G6kPg4j5yIjp%>2gu=udZ3=*{~Zgl23+Z(wlu(s9(pWdTo2(X5SIuwiI|Fo7R7qA z0Q=(T41qjh(Ay>~M?-qkScy0nu_@*kYm71E9t+U;fz!dl)iiDikfwuhf+4s6KeX%( zEk{8;;f5N%<`f~zf|5-%BDVIg+7`>DKr8xYSVZVWXvC49jMBjuVU94gkOsdZPE!pq zic~13if!tU7lhNHtVmg6X_30p01Lg5BRrXg#{u$wrCbNY_{2lnS8V;CmvDr!6MLoy z-@(vgJcRx}Zhxg-Hv{ed7wy5iE$%+xB&N-)dIxa@HM}#F0BJ1{Zch2S$3W!2{i9&V zl)@fGBL>L4CMMAIvJ=nlGz?xRQO0eT2~fdr=lAq(gLDn@5f9$EtgxCn?W6NcFcZGq8w1-o`Q`VppK989(Zlx!fx z3^WbxLq|{%I*LlrF?1ZAKqpZtDuW)LLFdqUbP=sYGf@tjg=V8UXdar67NCVFSL9hB zPZ(g5hLI4*U=lzy6BVHCsF8A}22*~No|;O{q*h6;NUlk~lkSz4Ny~Mub*4IVoknM& zv(`E3dh0xN`#N$REjn6vbg+KeW*X+Gzi08xhb3)!5khJsJeA z1Gu2Zvj{bYLaXrCI2xfp?t^ni=!@?cyDwc{{MwX)&y z)w`-MRaFR8{ZRF&>VDOgs-mhjRV$x$rQ`mbAzuso!(=g{SjrguzqqDkN=db*OhrEM zpZ_S4zx$tm(LgZ;Kvi>ro|XVztV8ucTeARTo6ru}IA;JorNY?HN8bP~O-1==BaGN| zpqwJ0gkl3-F9ymk0opzSRB^JIDmDP6pD|FzS)lkmK%o~6^l<@QLYskpZ@?V52K0X& zX21%V1NUGSh;!f(%mQ%^?1owJ4CX;4%z>vsk*i@IR2gQ%OSBEBb17P7pxbiv9lC;E z1104)Q`|zJz6Az)7HK)%K-C#Af0AM5d_cPZ1>))ie~l$D=l|i40%AoJMVb5$CP|F7 z6Z#;bFD3LdMnZpyFhD8{l#$*fuY)Z2_W^W=mUmipPJ;5w*R)4LNeYmv$6`nbr{wAgr&1=UBz#`bV_aqFc| zN=iwbYDkPth>A^!P0NBZE-p?zAU+~JJS|C|k`}9vi-?ViGSoTP-H`6wD>@|-YDzH_ zjZ2&snE(u#9#}PfoM(DUA~cn1NNUR6JvJdNGCD;cmzo|A001{9#ydGX=^awjlOj`M z6H^lZ3`I?fjhYmfm=O7AOj_oDrKZKCME+MwGk5Ern3QE;sQ=&d;kstN`u{gfuRrk9 z5wX#+Y5KUhEL|iB5)r^?$LqsmViQE}Ss$Sfi;L8yCPt-Y>Qf?hQHd$KrooF%h!(kV zR_6~qag;thGF2A`%y&X6lut|4WhJKTpqJraaR;$o!fpN+3_7p|>BYB6dhz`#z3BX7 zpsGJ%fUqbA02na1X<4Gk@Hcsg{hL5!kOpEw7;1tpF(uXhPXPf)w@FB7>QZEcy)GT# zx7V?Nl+>g+eU|tVp9lmRD~2F4JT6h}A)o-Bv>n9s3^O22{g~{S%b7ZSz8)WBXS7i@nFJ+%)gl948^o$Oc+bXo^fFYF+-V=j1S|_ zgffXtDl?6l&EzsmnH9`hW)ri6*~9E(jx*)VMdk)`hk3wMF)x`~=2zy6TqbAbt>mWi z_HsV5DE7D&KWR#Aq(*TR|DqbgYX-A8lQ`inBzd7`AgjggR;xT%-1$9`k&eX97QD{G zSdBu*D}`M+ShY`%`#Akb%=@#C@9nyCLDRh=hV@nt9eeEFTy2f)&YI&V?x`Q0oaDJw ztMKB5>9`&Dq$AG>isSnWj~oLdY0mPOQi%qQ2Gnj*mt; zhM&rFXSkUiS?-J_t5A^+DJ*pLM@C8Z3ceY;GR|ebx^ncU$?j_0wvwBP7YgpGO5Bfm z9&y+%VBCzj7|pQ&ddv2m>-MP+@132dojXn5mni0U)pBPBKhEBN=)}5xTL3o;t5oyl z(V5ANRpk*wwv15Q+J)$}WCUJU*~L6^;Y-OEvpbV)OS>!^&eC)NKM)j zvmwMl9v+A%dQGhv?v7hx4m-lrl5nIuJfiOij~L%wqdc=_ zckwCnCxeQ6_ZybbBUAG!lis~*`^LTMqJo@^$k=(&+9`};?%u+Mh3el*PSqUH;!NQg zP1-O((BIRG7-EjUr%5|T5x@^&xw0-im%V^htVl^&maHZ=@!d#!?T{{3ALNQDV~WSB z2PTgkF-xl?Swg@2*zP`6_#N(7Eyd%6eySfIU3vLx;FYcpgS}m~-4;FaeyhGO^GiIs z|G@5}7cT4x15P2#PpcdeH>PjTg|Esrc%kC@NP2J4$t|bV3YVOkewCQ7{#2u=Ey#fB zh=k#pis?M|#|$2f8ATQh?0WFM*uB`&WEQI+$=Hc>!3l~Wo;&8i!qD^N1`e#F_Twc| zydR%dktJ4m38Pfi3H_WHVoO?_A6ET{R#13F3f~V%-?GZ>)2FJcPoLbXEG^yKEH!wK z*|_lVapS^|oIZU-bm8MP3hHqRAIvLM0|UHVT?6hs>ceW3x6KBzeI|y5q-z#23LLRe zmF7#2%bcF!qt3`!v1+PTF_@nX5YETfGlYJb6dqD1#Y1q(a9A$}o+0)m4cn89$7hHU zcBd6Et&d`)xJ{<2fKW^Fn7AFK`WiLn-(d;1z!ol8Lb?ncnXCwAf5DcDF)S=G3f0zC z>k4+M6$4o1V>4`0A4E(TMMiy4reYK;Hr;_yh`=g{F(X(stRKxcOqx=^o+7=4g;LUc zr8`UA#m3UntfC-8NXt|}SRwpSNyXy_QhcnwyNW#MhaWIXX}z8ByXv`TuR=TZKtS2C z$bI@r(J`T+#gmU6KX~AnMv3Ke?0{uM$Ut~hLx_u3IUA;{LP#UVisRT=A*8~zJ2PSE z)+AQ3%47kr2-_cf^yvQmur%)v3yX~n(CD?FE$6@sKJA36bv>|P>6a(Z9^0st*k{9987FLaKu36A!-exRwF7O zQQsiyTSToy)MiAjK-4lsZA8>Midu@OMTlC6s3nNngsAOs`a@AWB-AQIZGkfxk-ZoV z!dwa{Po7eV)GkR+iKiq-a#He9+D6(zs*!e0GV(BrG}>?U#OP%Uvld=0Mz_dqv9ra27FSq1HkF;jZe@$u z3Po#$m%>}&ub84(sK{4bQan|>2l}%y9&DUtJk$6a<4-NywsdYewdJ0c#Y%-zt<)(8 zD`S*9m4(V5l)tyqwF+*P*J^vK{jH^~+qF(=eYSN~o55}7wOP>Sk;wp)C){XmJeS1H z<5qJ8+%|3pcZz#tDlwIrb~PPsI?goSbh>GtX|d@C)ex1hYJzI2Do?dSbwYJfbzAjP z^^2L*%*CvqnV;Eavn^)l+uFBHZ=2c9xSeS`mv)=mw`sqk{i^nb?f13+&0J;fXFkV# zn|X~|uC`WBRA;DPs$X|-?J&4QQHSad-}7Dh?tEX~n-AoZ_{IEDzLY=DKjmNYZ~31! zT{MmwKTU`xT$7=hsadYst2v}Op?RWtp?Rli&>Cr5YaO(swE@~}?I!JY?LF-WolIv8 zN+buJm(E)krHj`s&~4Oh(;d;B)m_oO>L~4~=-9cVdq@9{0Ud)n26sGc(c5BoC)-Zn zcDm51q0=9h?v~|NZdT{5CDuKxqpeG=&sdjRpSQkfecAe|^>ynC>s!`$tnYQ^I;)7u zlGDQb)8en?>9$K`LT`SH)X2{Rg&desPr0c4k^Z0JdSj#-#bs1~j zvxdncN?P=BA`VkcgBMFfMrG`5zI#T!6eE*TY*KUX6E@+p@xA(8s-oE+L+9q}UhdP|=O>c4%6dJZ#|oK%Gr=+|B~KXa_;)N0K+a$j|7`h{se=3JRi z$YlRnup;iysU4Vs_tfUp;-R&(_`Ra{N&Mk9mUBhr!ZJK~BoE;)b8!O%0?Vx%cDS=x zo`sQDhVX}>H|@M(G3p76(Z2dn!AM0qGJRpcW^gO|?!kLkUYcX0u4g;y?8Xoy&x4^S z#%Z{tJthzFus0`aEFX;9)LbjNby35`J?c$kM}~C8eQ2^w2vi+AkQf>09~+jgjoTAl zTx?!)c+W{F`@UhKDkeH2#$W9nc;edC(?zFtYn93TS?te+as_7vpK&~?B2K>>Q>8GZ z0rg2LCt~7HoJbFI((^oVd_zn$)#vFxSQ>(LBJ&AMobDNxYL+e+3C2(oTh~eJh?D9K zHaU--a1V3b(;quJVG~VHKl&MwmJ%(|m=ivP==u<;X7NHO*;AO7i5I{I>I*!^u2i-s zv0zAtQ^|cWKfXJmZv|Cj`S*mqbGkcjfjb;een!-jXyp;SqK?7`>ZI53XO$IBB1v^P z2`AMN_^~2Ma^*ahI)weDhi34~VbHPp;q2|ZE-aaymr{TM?=F zvZ*SbR<7WMrI<0Wk~_lrBTzAUg+1e*KERU%|j^!j5ab6)Y#Y(Na-z3!M9a=mN4%NW2Z{sus72L~>V zC~OwO#*OIAECihTvQ)OAGc&Kjgf1vKxBjg9Rb^xsub@Ep(Gi7brfZ1_Kuqnc4!|-s zw!+f4*dBMX{efsxrsU3_s?Eb4X?&=u`dYjqlR6IF`UZeH4(rq~a)^!?l{99MIkEi( zL{Mz?`5o?zTe*HBZBi2#&YhuIvcD^Juz;9A$ zfKTMH3*`roUDa}*$Z=W4xe3FEjvMdgHSW}{igPC`w1#0=Q43gQsL6ob6ds>5!^7|) z`tY?~mmZp9+fHvt7hVAV5myh9X(a~epvYz;P@O`ltF`1l3&*+bERDRa}NP1E-8M~CTW zW_z3a%el9iMC-!h!C5uWYjA8$O$}94cexG^t;Te%RIn1pt4?o^2=LDsHo$Gky@H#E z&)?GGIPzE(5j;G7pqlg}ZGOY`ojYUWu9VpYCau?z|1F+zRUe4h1(9CND_Bcs@3<1C0Fo)C{j?usJp_#SU*q z+;v$i&QamP*3;$B%rPLgOs64xR`CR>eqr8~#E%ZpNB7hcIYW>Pw**Z>U1{?*$DjY>$1=0O;5mc*5TuyvmTQEW73 zX0ia%DO>>@ZUwwoW2RvOqr~E?I*w2f;<5&LEZR3<^&d3r|{5e6NspW#tdQ( zIY6rM0T6eTe?#6%Pi1z3E_Q+T1jLEDqa^vDQwpERZL*bl0&H{8 z(Q;T0USMPDJK$~d!};%0dEvz}22W{tLB9e|ctI~~fOJ^ieHr4{FprE8=F!9-O7@46 zM{uuMJPfJ;-QrG&onyEs6IrDfOU>k^9eHIoz;zM^KLn%cEIt{}k~uJ>SCV*~v82ul zx(Pc3$iG4w=($eRKdV!bNz0hqho4u9%Ap8g=WNJCc={6?5<#Zn-b9O&G=dY;Fh~$o zxYN%Tq@$LbO02APz^iGjKVvHmcLI0(`Bx0{emOK=4vqU`1lV6OO~g(44-6=h%4uxR z5FdP#{&mCUM|I}dm6#qU9W-PyKnI+oKc?grm9u*~y3O~{Dg%MI&cVVKirY!uc#(Px zD=1EbB`FR13~%v3Hy434;u&SL>dcx|9?fEN>$^+wZZk|V_;7s?Xx2zbLlGG(6w$;A zaEP8enXS44CzHSfHDU50apgkB5!CBH9%}5c;#Z& zpH(hoZvrRu4RAul{|{sAU+G+*R0AX_@(`OcsXX8y@_>QB6<;<~?IjiUn`kJ4C3Vs* zzye|a-;IfXznU*e&W!R1)JokEc1W=|u2sQ)HWzm$b7{;nBvqj3Uf?xQzzdm>Hm9j2 zLatQEC2drv8*<0Vzp`jJHwTnqK`|_=Hi-3Jh9C2=c(i2{1l$pVIym7Rr1~Dva(P%oj*Q@ z7yO|fQAG#;q8fpSZINxXZ2UJ1-po^&ct5eWTcMY!_BZb{X`3 zpb6#Pg2wNOsPTK-k5?`y^MKGyz#T|r1^T_xsf6!WR4`cMv-$BqDq&=xvl?Jgn@NCgq@>CqBkoC)` z56S#nhNE{E@*o>cS~A9aX3ny_nHnx_PA8f>I^ju2fw@t5>FK5I5k4An7?Re@ukF6}=-%c)Zw=W2?}z1BKJg7Pbq`7$9izFD z60~QKy3YjtL|`}=?)f9a$d!Q^EGYR-c=OzoC*u1k)|OSyWmmE$fG1J+@q8>lCPvKv z{ywC0&jkxIZ!|xbg(12uq-FCAjFN>oN_+1DV7RK6)@|B-s_9G-6hM{?a+Lb&&p0%n4u1svA0xkC7k(-<^1J;e%OCtcq;o3+hml`z88V&R~4u^F~l z#p8jv4H-ydYle&k9?T7=(1d3?5lcJqOu?FgwK#=VPGL;|B(B(p=aRAsqPgNe&~eKp zwfJc5SXPnhcE%$%~%YBEBpe4}QiKPw| zvx;(!7Rje996oh%KO^EJPgoG=aZgt{^TgB`Qpv9JysnM$ zD%*vX4ck0&nbFt=Yn8|5sB3r4AMC&Sa05sHFgl6Vz^5S!_YLQ7nhA-upz}|}J*r8M z8s>V*m4_tQ(UG2BcyR6k^)HvMU~Y%@B0frE*e)j%%ewk* zwI(+)(-YQfOWe*G4yfJ=OX_LWqsVSM`>DAnT`a~D>9`${N0YVOTi>{dNrTB~T)u@! z%!7lbhXn_1J3T|A3#1*7ejoQv{VQfK;FhK7B@ugoM$5JxJbfPflJaR-YJT$QmLnyH zQ^UX2aIZ;w@=O)EX?%W}`Qe=#i#BLp>*?Z*9<%_!F3s z*1l7fmC;j%4 zH!v$+uMIBs_9+Xd<3h6n{mgwg2Nvoz!ND|CI$rg|#mlc>U-WTw^!0Xe@xAhc2KLRAgydHwr z!w>ver9JP=6B8U<+q}KwQ>unsJ0TZPFLbTNlhRo-i3Ho>;D#b#|B7%(EeV0NE46rg zEgl7_qlmv9_6J7W-~o#cL@~A&7NPA1k5T%v$@Q)8Q+RRB=Nc(qOiWZY^?9GaN=K~TfFFx&0w~f08xIX9^lVXa4MUpeSiAt>C>Nn>ig8jrf**xji@{Uy^!=Q zC{J{dc@uS6u#)0}89XT>o5t~gkgbBx0G8|*-vAYdL{w~meuBg|2zo29An8#raW^;^ zH8|6xmj)s8doz$Uzc;gEg+n)1L*h-!&`p6ZO3y!##syE9O zIN{4?;H%LeN}-h) zyG?%Z0;!IB^9XYrG{kf*J$6CFBtLavfzW6zlc3WzJf6~fidJQsSWhUN;wSmEw+eykwlLe~iu za7a}Ehg6~c`3NXdc{7s=$8V+Ksch$!w!u%uK?)Pj425~xnAER|ZYH&DbBJ31} z8DXcH0Ozlyd?^pHM}fbe$25%l5=7&!3@3BOvFe9yly$Yfs`{!Cq9D3BY}0t z!)Xv9NEjJLivm}Jqug_ps35p|jRxUpM&|WQlbJkM0gLW9Rl@OU7p|Fmu;)vsCmhk7 znxHzM&-Wc^-h6k!J1Bo&m@ZnG@>SsI?8*#_$ zFXGuM+;JdO;H2?d8j=vHH{uc_PLJ5;x5#L~z_hUe+Clui;)$MG8-{f08Ah1SHIrUE zySJsHM9Uoy*?%MQx%%b3-M7oNGuX;JE&jxCnGFv?D3}to@nm`R+MC)dIgH-~-`*OW z1uB%A%TJcxRNpO`Fl4z_35+pZ(BgsD6tv8p+w^C-mlus!gZ`csLxhswxkD?b&*r;j z2s(_GWM=Y!A8*`EmA!55?mgxqY~ijs*#(-TdeygStCAAU^=w@7>J1qhd|lA0JlyG` zNq(D?SS=SfY^!gvUNdwE&22gocK03~ckF!DRZ(AO^by-tq+f_B(LyYU(>b+vb(pEH zt8*5SR9p*4GUgJ0SK?6d=0_8n+()Jaglft|hVSrD_h;|k*j`?$4KBWx_*6v1!*VTm za0YunPrI;M^=R3R!xz;z4A(&bEx(7To|oTwRa5TOyLW(>Gn|P&*C?}d>O3>HW(e}S zqznvPqsawq{3|w@fsKbj)87o_dd#{2QvE^Z&cUuqnXQa>jqkVD}Q}G zxN8sZfS#GtmaWdxasdOa<=patb9e8~-3?N}Pj4~*OTbIrx1w$)Z`SSIhb}%a$E~cd z5hK#Q?*KAPqx1#+@w+-oSX?I+7URxvx_G+bu$3^9QFh}6R`{ca0{t0|tHXOh#O#5~ zAj2c9tRWwq;jj|lBaa}WU>Wm~6wr5>kGOzdMhfZ#C(w=CkOCWchmcZK=HRGmJlcmP z<->a31SvgA1w3Ni|N(*p_j&1|Q5c!2_VqTFlmQr||&sq*_1?pH%qK zNLIsDI}Ho9pRe_1$q-^slR6i7_DE5kc+`#$0)z+Qh6qWv!pWpl9qxn^f#JcOtQeBq za99N=unmV9gHFQ6ay$A%`YMCAL4tH3(h;GrLD;XOc9ifzx;ox`>i zu->+&FF^O7#gh+MrHbcCgDjpGd0_YYH%&ZnPZjx8hd;@!8bB;Ggp?#hu&l&xmDCaO zS9(OasB*pU{_55J`>$TP-*0|ely9?CujHja4r>DbF8|uW)_cg>$=wAZqKpt2X0?z{Uq!RA}L&2*%XRd>;ZB{ zE_tPb9*=+V;%s%Gp}&jRhFb!s+Qu9|ws?Y;+xH@w)eL93{h_`2I}OKFRgpAT7&?OO zDQY>Z@si5w%GcG@?poZw7E>^qwZLzHC|Zkcw=u7YE&VIg89UM?D^DK3YyM;R0%r|e z19{g^b&A=3cu{y*#Nt%#c!oTQ>IDP}M<@pUt%ybt6LC`Jj?8=FYEUJNu3w`f(xB{b zWA{bxZr^##mT89*HcxG@8+XO`x3aw4Qz0jU_xrbBw20oF5Vm%bny879HL>f<;(@P0 z(b-4KeZaQ8L8bYt2DdmzlL-wCD)FvDcV4SJ0tY_S6Jd=M+Y0AY?jCp~84c{s@P~sz zjXeyHAj2L$B%^@6fj7^)WH=d4D;*7;e^QOtR6i0s|FTvP^}BQ621sCTOqO2l8FlI5 z{i3r^4(`jIutxhM^FDiEDd;Xty}FTB#P~s1Z1VESxu3t)He9^ei??TqgD}ko{71qx zSKgh6+ZGfa2AgjumK+hz>sZL)TF*K{(kXExHoF8FVqc4~Zw;|ZPxc$Jvaf2&C7IBT zubRpOO`6JE6Indr>`>m4hbuoFZNL}$3msi~FaE}O_Bv=J@4?NxKW+%IIu^3{3x^ze zFZS?q9(L~M9eL3ESq)`DHz;1=X;u$%Pu$?H9(jP@yRvpXc_GZR;q7=!VV*1hUpMMZ z9%GY?@oWZg8K10q?tMd~P@xmE*VLOj^2-DH5&TABoQ)VV!Rk3|KbHHIv=FxH*u^X$ z&Y!KR-{s0W@SqE=v*E|^W6yz>tdyG$TC!40wg%S$*LGaw+DgONF?<|5bUfP|Bd%-~ zmpx0=q|LH~jEL+Idg;VkEQQ&Q{9yj7IQ((!YH|4IL-sQRxtRmSdvyaL``KCRg^@kj z!TfW$_W`XP;Zh;#xFt)X@NYm7r9ctK;mVR_9zckCWxydFg6ksI)m#;5-`c(IiWM1J zU$^co_hEl2UGhA?v^13M#)5u#j}0Hdjy(sN7sGD#xf6dG?*aHfi12?7V*}XbtnYZ% z7t-oG@!V%}0e{qqCEW!#M?RX>^GmC3zz3!kt^kQ@FT9`{%0CgyzYSxfS(93Q zVh4j#>{nupopcbd=eOXgjy&j)#6E!@=>X`FZi#xNkFSREJ^3H;6B~X!AQx7N_ZBRE zjGsWg&&7J*hq2@NwBFJK!w)wi}{ zxl=&u7I0;QY!?~#DdH6>gZ||N=wGH9^e-p+h#RF%bJ{bQU}cb&ZAdHY!#@!_->jdh z240`tDg5Zl+QUtdZhS7VQ(iw(*bEefZkUz|KMG!|H9yh~Lz!+tGp8nNza31k-d31* zK@Ez%crr1H$c(UrDgJ2>j$eTlMxa+e%Jf?qyl$!n^xbp!&OZhRIr~Aj&-o3vuKD3D zHvSC93@WK`@u6zqBRVD_D$`#*a8lW$Of4SF?5Uwi9JBbFCF|CiZ&{kZY_kT>VfMVG z$x`NJ;kA9Y)W;6bp1Ma{{E5zw^ZwRfO)LrOO|13WKqk(CzR4_}zIa-e`HUqqmd@0K zGl|ahQ--K_RoY`$^}B~hPVUnxyUu+re0fS?8EkRdhf*O7d#WZR1dki7_MdR%#UkxN zIdr{c6*j`H%xfn-?b5ZU2N|g$>*dL*2^sMzd%fFj`8I#!=5LL1LMIhg9XY)J)aFP(H*crDaFG$OowWtO%Ezy^!WBMS;Tvott$&5ztJcc#L^2#u zl}^%N#di~rH}G)M6Q|*}phpQ8o?moHeCQQ$#z{1(iUXrzVwstYId%Ev+2Q_JBX+>NKx=qZmH6HZ~ z$j86IuzQU&u6y`yp zy#`C9^)bRH)rT+MU9jwnAC}bn;WbUZTp3~eQTXLYlWoG0hTYhndm&u6Refx*%9G>e za3aIqAzAncy&V7XW5YKCO;9)0>~QaEv2Sjn<#KbglR_9AQ7dd(_wWIGi0!3=bJIS}n+Nyz0`CiNk_peMbjG z7d;uSE#80TUWHmovPu7{->FIyZ1I!ZPuv|rQD3WCIV*Wps+xNNr@e6r+R#bUMi9mv z5Ycx7jEASWU5-98SuJ8s6Sg=;B)Z;c4>ncuEd{bd^Oqj<7aZ`l_LXc{FLQ#UpsmHQjrLWO$D~9 zpw7Sz1fh?xNfod)fUq>lACBiS!-*A5+=pWuW}?m6wDY(njki^hTn0+ect`~tW-0Y^ zZ<(AG(i#$PbLGO$530vQ+PAP`RN@xsW^r zid?F1p&9^1gf7H~UL*%b+J_z>7vk_V`mVgePIjvy84Bc#dsQ!gO`U^#k-|m%tBQmR z*0c*lq8hAmSc5hFn!z%d_HZ42-Ta(6Nx3uIFJyAp&nuXl50{oUwu3t`YgTVwwPnSo z_Ib?m?A2+jrx}5s3~uN|z*-v$Ix;7I0PoB9WF6TGxHA7OHk!rnsW;||_n6fi-)6{? zdJCGgXUK{#ooH;dRRu!)Czu+W&J|UzIbgJ$SvPTik4*tEGheoYO0zcC2W=*c*Wpd; z;1S2&c?^!1!0d}W&s z-^Xo$?-Gy0H-y*VJHh+#ZQv_}DW2*{dBazou~Y)Jo;m~fJZq`nB<7Ni5*x_~iH{^i z5&_pS7fY5))=Bau+a*Pk63J=FeaSP)N6BxJ-=#`vSE;kKuhd(bEL|mCC(V~0hObU9 zNUut7N$*R4mi{I)lC^|yK-$AMAbn*6WS+7Sve7cVY_cp-He0q(wnDZ>mM_~T+a=pC zE0vv>U6I|8-G;A1s${jY-{89tM9bjYJ&tZq>u4+5mhMLPrM>9Uv@d)oGJy`Kqs1>p ztXRYDDag!V1K7jdUINMwy+K2v8N}Z>8Rw&&883(Pm*KOBlNN6K&Qk%G-z4EIVA zO&&83D^)`yLVHC_%s+kyGb?UtcEBxO9S@hXK@)v1g}3Gvp@$}yh*y!1MePd}uO`Ed zZMgfgIGpbU*?r=Gp6X>j>;@QROD^IsScrt3Gk5-|&JmHv+_rys) zV@`%%z6`62Cd6zCD8=KGwiOoc+O~J^uCzF~!!sY3RO7WZ)FDx>mlk5Uuk&~$YY^r& zAj}U1VO~kB48obBACIp!DB)~HVf(bt`}fbDy?@{5sjY3_zP6egv(pC;o<3b1J#Ji7 z)VOic#iuoj5cXBM*FZ({DX{{tfHQr3fx-EL4NYtrxZ!eu48{j&;sS9EHnhTx?F;v) zKQk}zCK?VY6eIy|4|XA$;+^ZJbIt1It^pdd5Z*7yf12=ys1!JPIV{axaI(1qB;64# z?)V-!5o@^e9mtP@8{y%eyh1#;3g5;t!*Kfox(Dm?va0E@^|W*$0gsF zO*!tr3N$hbp<8{5+aX$6O@iTE4>Vl#p*>p;9yfn6{Ftj^Ivjs1?wU$z+SIJ+S_Nh%utFQS60wPa8)9&$6feN@pqC68ttCZ@f)HK-M^#hc&J;fG z!m8l1i9Jpu_Bdle5H=!k(VsdX9FiU|6Al5Hv}J@gaF__8orDpL_djkql zSC0k);!F-ghv0s%EpA_gy|6QBT}pVZLR79(ik0j#kPNu@iqT70MNHz%=;+M+!ufC< z+fh*;q=K&o>T~Du3OH4p3ui$1xB8%LUi_56bS10MvlAg@CJSFpPztz<^3+TL_gdzQ z_gWN&L*P#08L%0naJwAC`ly4vN+Dg$CHUY?@VQz$#eL`kc8J0zQKC4cSe^i%9>6$@ zCm(RRoorBm##?Uq3Zb$-sghDqcftF50DkkzFtb&Or z@HqgPcdoKjVKSLlY!w11MXeotfIz|5_*55z^N`5FPLL0B1gDiQK^jR7a)PvO;6%R- zbsKe%Y(V`XY)$n+7T|kO^BXbb?*eWRxIW+AaC%Ggk*~A^_=6xF@=E=| z&oGqHLOD6qH&U{(@r(2!)Vm*CM&l>Q*9qzwOwC79@J*q8&*uJjle9;cP~L-j32ksgTBID+;2UrZ~PRSadK|V3;C5=J@AdiP6%#hzh%m?*)P-S4hX+D$_)8t_J3aoud z+BY_eVW``JGJ}uot59FctnoW&KT^aA;AS+q!Dx45F!;t2pT-8s7}OoYmXNN8vc17+ zAS^m-NHZ3l2s`*T;2aJ01R*WN4TEqu$ls^AoHbbA3Y0AeoXC+H`fwTG_XEEI+;wm- z!98j2-!1UlH;3Otd?UDlLgS-8eRt&I<@HabvPivqRkzT$!kye`N#XuJ#ZTvT9 zpc9}GDF3Hx!h->?fXBvr1{x6QsB=E){ zqrb$7mfUEtM+4Sq^!m6o)Zg&y6_uh7N23kD{&BIw>KKz1tge0)5 zVfdYDs2hO(i!a){5o4NuMT-?;TjH+>(br!QDheQAzzU8TSh}$WYc@R~24X3bruRbW3v%-!@J-u&Ls{N4cXQowL)u;8=3Ilt(O`9xn# zr@(HEXjMZ3?HHpP@Q0%>@H-0JNN|6kMnfD8-+fWk*Y}~2JL@ko6xi_*Ympi(h3tZ` z6d*SNOC6924FM;C)k(B;M>ks*YI_GjMBzuQRTc(rq9H76u7w4wER-z3Fs2NQc?b9a zZ7Ns*f=}6yQR5!K$hF2>=z8N1=mz)|;BJDu)3_hqZ3Md_;6DZb8MyBnU!xa|_kilJ zLFhWT8{jIy-2`_B++A?@z*ROrhElJgO)=M<#!v9}3Cex~n4UJ4Lg*~CJ_uTuNGn9h zWHMO-;7JSp-O>1=@jSR6z#VH$6Fc^Q{b$nn;s3gnjVsqxuA<@n#@8dpNk!HIv+ z?n?3bON1+K2xdv9Em*V;y27 zVEx#?O#ELGfM%OZ{|ODyU*l_NRrH%i;@{Nqf70)-z57}nv~0jQw9||`u{MY^yfqdY z-f&~#*Zlvv|5toKKg7MK>5qaH(g^Gm^#to@y}=F`1s2qdU?=DdJE*h41YuLk5U_J5 zS~v>^8%&}NsQqBI=pa~vx&%AROVG+lU>!ArM+qf6!&_H)q)>x1tPHO3FwjPK*fV>= z(*oLZLkeiGH`wVIVpw!hsd6@1R}LT3mYrb{N|7GOXkDYdZh{_NO=5WzYb0mG8 z=1@B&t&>i@=37_VbUWsDeY&*b)LEyNe?mz~0G>$(@T6m93?~`u=iJsw#lQ>8DZ!{} ztY2(&g1ufz+<(hCf-!e4OPmM(5iZV=(xy;t{M!T;X_Fnh~i`waGjrL&hI zr`d}nvuC4g z?bMw7)h9Qg!cH?D?VGfZ1}^{)Af0V>ZexQk|Rb&I?Rso+%1s;IsFwp7!oPKRXWnd z?zX)(@;2qZ+eI4KHuIML(xpT6D#z?&mwvDQ_;zg>zdX)<&zOqTCp*ghK8}85U7kS& z&R#XKW8K|DjX&J!7<4nX?JJKCo7#KyS~ULoCe$imndIA_wyp3S`MR|Aj(#6qq{_Nm z!rNVruJ!0WWy|P2jS(#)oaRWU0S$!}NF|g+(%Q}H@$Z8EVE(Tw zey}ci6#Ve75Ys?Je*Ym6**V#WL?q=bzEYRYKQH!$!L~ximFu_rEnNk~`Ry>Z%*!;`HyR=3>bwUsYM| zf>0Z?;USJAR!&*C@|W)ZLEYco?J+TIl<$~s$>*m>@r$m0XM1rn`?+W3`m~jwR~;xW z$@r#j@9=QXAr4a%t45EoTlyhr_>u?m*XH)ZoWh{Wn}dJpTAp6DtmsM}zaeg<(OON_ zv!A2CPdPvAe12%(?_ZuV+a5kO)^z&*t_G^vKKr86>~l`t7$aCuXj%@kOBW|=C(Ezz zPSk>S%{GA(!&8$SGGIQZLI*{I!A{125uT%{MwtXm+PaEwTA96*ty7l*>jKLK7R?32 zQ{w(s&M_@DwQIQE0pgv^#6nhL6~<2N*G8pAPD(Mpl^8FRN|veb7{m?%URX0TUws4GC#CcvUS&-uEuj!vwO00l=j8J zZS^Hj=s$9w)va84B*1*&|5M$yheNflabw2)-nfLpxD?xUE#opS5#wxB$i1yxCKS0O zaxG$#OOmZzB57o5yR?TwJC_hT;@P^m?1OTPXXhX_b`(YDTNszxr*oe3oc`E<%pdFf zX07$jdf(sg{k`vc=KXF=UZ^MPm51sa*S};lrdyMf+@5JFRbJgnO?4h#=<&jsYFne8 z60V6ov?@_-of%2k!%DO|9r5>%_QR9I?1=-ktb8}#OE0e1H&D(rdyEYItkm0jeYaPC ztK|NBH}yDsh;jvl6pgdFlXV=j#%3m5997;pg*uBav)IXk$8D^Y!jBzVMGIpO%tsoz z21h4}<*Smewc9_6-Z7`Ff7d31<$3`3Y1er-`?p&woCSiKKg|A|N#z$CY!Qw1XcJHg zOu#TE-$p1tWqUBKwcoAUQgem?(ANS!YOCloZxGKMO11l*^zK=J1s_cN?2$onDI1XB zVgidmSmY6NVtJiG^Fxqb;Ys8mZ&(=Gf(&zDdCWqC50V4JeEt2snfBnuvOD;Y!;gD| z_g<37*LbkPD+8N}9hQNlR_rIbI*kB0go)o(*b)Fzwbo&a91@tY{U%&NLCI}=DhSC_ zPy#F<1ah+?9#!0aoAzr5zKlCM`DSA1n@VfO(0zf1!({M}TwH(cd^@2u9!lO9bMBen zfKI+Z!_%pVneZDiM-3Y;mhsj2y!Fp$zh|dbYO!PXPLHd*Bcv+ARM z@S)O$4Js1v*RC?gGbpb2e`E~AcUBmK6JiJGW<{|;Cdil!MjwQ89jX>pGXeT{ys_dd z8(oEDvdkigr%G-68ikcFP?U zd1tIEYZC;=GE#_%731UCEK83av#b?5ixsV-=)aIn{!o7OvaQc;pjPFKQPq{Iz7gk7 z^_34|W*_tBzsX)w=`ygBlq4#?Gu{PJFb&|Nw2EVs^a2;Xh@r=p-iL@%dqSH&Tk*G7 zLP$i_f^=b>b!Z}o+DvH1Rc;`XuZh7`65zp#u7}j%(2(PJYj4oDG}sR|fb@XP0EuWi zcn5>606@n_(7_TJpjp2vaxxmbZSCqz%}D}%K=DYJ zM#KWxazG0a3jYcG^>x#AF|SWg4(r-{KnoJUjUgq5Ej#XaILwU$0lH=WR7>#kn*5O97+b<-9m!eo`&r)VOon z&xe}`n(0{l$6|Tm+<>O|-C;hMo@1)6vI|Lk+ZScj(p6rf9Ia*ow3R4BeSQb-{MJ_z zx9Hw+y2kU$6SMvz zC{f(ktOvo!Rb(*W6bOh2s$9adv4O3>kP$(iWWqB1kyrxYFA51W?*cT#s-QumH){z% z1VZdwD~mG)Y6r**pq&vx3FL(wgr`YEI9LMO3I>4h2rat|fy5*TEy8l(lH$jRVuU$o zZO1<>?bzX^bJFMW{)nQX>Ib?|Tr6@ac}ye}Uf@Y1e{(oezM7k@QW#xd?C!1;jtgFn zQ#)y|EKPpQ$xE&)Qsc-KZJc$Yf zc{7duf{+E*&UxI{$iwmq!?isld+Cz1`~$=4aUHRR{&qI$p^j&3iVsY!ZONSXU|RM3`uH-spM5!ccB7r zuMs1lMNJr5BgTQv#0Z2e;$@szZW7tw7re&^^d-YWkN`5sf#tL(2jX{ue!Q?eB#R7j z3rlS31iYycFl+=FB46UcYMZTeJjPp^;hBV|hPU$d3_gl98OGZ)yB#}$n}Tk($d)Hz znlKKMSUz7EYZ(ZZveIgrxd{t%3Fxma;j76`$*UCF+e{~|nT~yF(a`a?T({2Td1)T| zM-U^u<^5}USDNNkiM(=sQa!12o0*+ij?|b(fZ4&W7LSa}G90`feuHI6ra$3ic+Ls# zvset3K30DGMP#Sef{>~hw!Dbe7Fg?1uSG8jFOG-^``R5(FnRgIABNd%B+Kw4^F z5YgJyG8_GWXz))Y4H^n%vKk;RU+D0EnWh;t&w^MJ2w(gfvM+gacDD9w)Q~B#s|+NA zJQI1$R!B7V&q?odM#Tt%#BRMpC5c&9d*J=ir_Z3ioT%MWFZ77^9l05`_=r+{tJ5EC z-q|0aF{)#TdM?^3?pK?1n|95ndd?xY7#40YPqo>fddu<%efXc^rmxW<69(ZIqULTm z`wo37t7wcQu&Er&XGCKj+Pp|UB9>=!Tk#N~GlQ0PUP|5QCtWZ1XVPQu_1JcNnPHsu^N*S^i0g9D%YQncVEQ*5dxCh1o}g zH}>jZlc2n@Z@wEk9cH7laGBw(`)hBQITT#3(t*jm9$1{wMQVlN1RP5T+)A^G)-V_*=ld1GPQ`}OL_Ckl&ht4b6-3VOR2h9kcM}Rl^P<|H2#>^ENsCP zr}xHZ^}0j~CX`Csj4Kl5sQ8e9DRKAreh7Yct{_$$2i}lmEG$l zHilR4KV+pm7wI&mYn1AqBx0i$y|;jZiUBMYwZ3?En1b>HLx&L$Is8rPWPehf<7MYu zDMYgZ6+!(0NFruo8kmY_?SKOXEVVYn1`8|~+=!aGny?lDCb$6hSewPbTQGtXOG|7LC)ZI-7-(iaojP zl%H@n<)3ekpF+LJu+3Du!b(Yx6RzO**gn;fRIAh9tD+o~jlVqM7E}@}^RV=~gio3J u4!tyU!FwzhJ literal 0 HcmV?d00001 diff --git a/applications/tari_indexer_web_ui/dist/assets/AvenirLTStd-Medium-5e25b13a.otf b/applications/tari_indexer_web_ui/dist/assets/AvenirLTStd-Medium-5e25b13a.otf new file mode 100644 index 0000000000000000000000000000000000000000..e902718152796a3b42299408775f8b1f21eecd1a GIT binary patch literal 28132 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[o]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))r(o);new MutationObserver(o=>{for(const i of o)if(i.type==="childList")for(const a of i.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&r(a)}).observe(document,{childList:!0,subtree:!0});function n(o){const i={};return o.integrity&&(i.integrity=o.integrity),o.referrerPolicy&&(i.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?i.credentials="include":o.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function r(o){if(o.ep)return;o.ep=!0;const i=n(o);fetch(o.href,i)}})();function Ev(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Fx(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var n=function r(){return this instanceof r?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(r){var o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(n,r,o.get?o:{enumerable:!0,get:function(){return e[r]}})}),n}var Pv={exports:{}},wu={},Tv={exports:{}},Pe={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var ws=Symbol.for("react.element"),Wx=Symbol.for("react.portal"),Ux=Symbol.for("react.fragment"),Hx=Symbol.for("react.strict_mode"),Vx=Symbol.for("react.profiler"),Kx=Symbol.for("react.provider"),Gx=Symbol.for("react.context"),Yx=Symbol.for("react.forward_ref"),Xx=Symbol.for("react.suspense"),qx=Symbol.for("react.memo"),Qx=Symbol.for("react.lazy"),Oh=Symbol.iterator;function Zx(e){return e===null||typeof e!="object"?null:(e=Oh&&e[Oh]||e["@@iterator"],typeof e=="function"?e:null)}var $v={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Mv=Object.assign,Iv={};function _i(e,t,n){this.props=e,this.context=t,this.refs=Iv,this.updater=n||$v}_i.prototype.isReactComponent={};_i.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};_i.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function jv(){}jv.prototype=_i.prototype;function zf(e,t,n){this.props=e,this.context=t,this.refs=Iv,this.updater=n||$v}var Ff=zf.prototype=new jv;Ff.constructor=zf;Mv(Ff,_i.prototype);Ff.isPureReactComponent=!0;var Nh=Array.isArray,Lv=Object.prototype.hasOwnProperty,Wf={current:null},Ov={key:!0,ref:!0,__self:!0,__source:!0};function Nv(e,t,n){var r,o={},i=null,a=null;if(t!=null)for(r in t.ref!==void 0&&(a=t.ref),t.key!==void 0&&(i=""+t.key),t)Lv.call(t,r)&&!Ov.hasOwnProperty(r)&&(o[r]=t[r]);var s=arguments.length-2;if(s===1)o.children=n;else if(1>>1,ee=M[ne];if(0>>1;neo(ue,H))Ko(fe,ue)?(M[ne]=fe,M[K]=H,ne=K):(M[ne]=ue,M[q]=H,ne=q);else if(Ko(fe,H))M[ne]=fe,M[K]=H,ne=K;else break e}}return N}function o(M,N){var H=M.sortIndex-N.sortIndex;return H!==0?H:M.id-N.id}if(typeof performance=="object"&&typeof performance.now=="function"){var i=performance;e.unstable_now=function(){return i.now()}}else{var a=Date,s=a.now();e.unstable_now=function(){return a.now()-s}}var l=[],u=[],c=1,f=null,p=3,b=!1,y=!1,x=!1,k=typeof setTimeout=="function"?setTimeout:null,h=typeof clearTimeout=="function"?clearTimeout:null,g=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function v(M){for(var N=n(u);N!==null;){if(N.callback===null)r(u);else if(N.startTime<=M)r(u),N.sortIndex=N.expirationTime,t(l,N);else break;N=n(u)}}function S(M){if(x=!1,v(M),!y)if(n(l)!==null)y=!0,z(E);else{var N=n(u);N!==null&&B(S,N.startTime-M)}}function E(M,N){y=!1,x&&(x=!1,h(P),P=-1),b=!0;var H=p;try{for(v(N),f=n(l);f!==null&&(!(f.expirationTime>N)||M&&!L());){var ne=f.callback;if(typeof ne=="function"){f.callback=null,p=f.priorityLevel;var ee=ne(f.expirationTime<=N);N=e.unstable_now(),typeof ee=="function"?f.callback=ee:f===n(l)&&r(l),v(N)}else r(l);f=n(l)}if(f!==null)var he=!0;else{var q=n(u);q!==null&&B(S,q.startTime-N),he=!1}return he}finally{f=null,p=H,b=!1}}var w=!1,R=null,P=-1,$=5,T=-1;function L(){return!(e.unstable_now()-T<$)}function _(){if(R!==null){var M=e.unstable_now();T=M;var N=!0;try{N=R(!0,M)}finally{N?O():(w=!1,R=null)}}else w=!1}var O;if(typeof g=="function")O=function(){g(_)};else if(typeof MessageChannel<"u"){var D=new MessageChannel,W=D.port2;D.port1.onmessage=_,O=function(){W.postMessage(null)}}else O=function(){k(_,0)};function z(M){R=M,w||(w=!0,O())}function B(M,N){P=k(function(){M(e.unstable_now())},N)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(M){M.callback=null},e.unstable_continueExecution=function(){y||b||(y=!0,z(E))},e.unstable_forceFrameRate=function(M){0>M||125ne?(M.sortIndex=H,t(u,M),n(l)===null&&M===n(u)&&(x?(h(P),P=-1):x=!0,B(S,H-ne))):(M.sortIndex=ee,t(l,M),y||b||(y=!0,z(E))),M},e.unstable_shouldYield=L,e.unstable_wrapCallback=function(M){var N=p;return function(){var H=p;p=N;try{return M.apply(this,arguments)}finally{p=H}}}})(Dv);Av.exports=Dv;var ub=Av.exports;/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var zv=m,cn=ub;function U(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),kd=Object.prototype.hasOwnProperty,cb=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,Bh={},Ah={};function db(e){return kd.call(Ah,e)?!0:kd.call(Bh,e)?!1:cb.test(e)?Ah[e]=!0:(Bh[e]=!0,!1)}function fb(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function pb(e,t,n,r){if(t===null||typeof t>"u"||fb(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function Vt(e,t,n,r,o,i,a){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=o,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=i,this.removeEmptyString=a}var Nt={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){Nt[e]=new Vt(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];Nt[t]=new Vt(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){Nt[e]=new Vt(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){Nt[e]=new Vt(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){Nt[e]=new Vt(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){Nt[e]=new Vt(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){Nt[e]=new Vt(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){Nt[e]=new Vt(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){Nt[e]=new Vt(e,5,!1,e.toLowerCase(),null,!1,!1)});var Hf=/[\-:]([a-z])/g;function Vf(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(Hf,Vf);Nt[t]=new Vt(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(Hf,Vf);Nt[t]=new Vt(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(Hf,Vf);Nt[t]=new Vt(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){Nt[e]=new Vt(e,1,!1,e.toLowerCase(),null,!1,!1)});Nt.xlinkHref=new Vt("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){Nt[e]=new Vt(e,1,!1,e.toLowerCase(),null,!0,!0)});function Kf(e,t,n,r){var o=Nt.hasOwnProperty(t)?Nt[t]:null;(o!==null?o.type!==0:r||!(2s||o[a]!==i[s]){var l=` +`+o[a].replace(" at new "," at ");return e.displayName&&l.includes("")&&(l=l.replace("",e.displayName)),l}while(1<=a&&0<=s);break}}}finally{Dc=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?xa(e):""}function hb(e){switch(e.tag){case 5:return xa(e.type);case 16:return xa("Lazy");case 13:return xa("Suspense");case 19:return xa("SuspenseList");case 0:case 2:case 15:return e=zc(e.type,!1),e;case 11:return e=zc(e.type.render,!1),e;case 1:return e=zc(e.type,!0),e;default:return""}}function Td(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Jo:return"Fragment";case Zo:return"Portal";case Rd:return"Profiler";case Gf:return"StrictMode";case Ed:return"Suspense";case Pd:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case Uv:return(e.displayName||"Context")+".Consumer";case Wv:return(e._context.displayName||"Context")+".Provider";case Yf:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Xf:return t=e.displayName||null,t!==null?t:Td(e.type)||"Memo";case Br:t=e._payload,e=e._init;try{return Td(e(t))}catch{}}return null}function mb(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Td(t);case 8:return t===Gf?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function no(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Vv(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function gb(e){var t=Vv(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var o=n.get,i=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(a){r=""+a,i.call(this,a)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(a){r=""+a},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Ys(e){e._valueTracker||(e._valueTracker=gb(e))}function Kv(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=Vv(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function Dl(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function $d(e,t){var n=t.checked;return ot({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function zh(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=no(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function Gv(e,t){t=t.checked,t!=null&&Kf(e,"checked",t,!1)}function Md(e,t){Gv(e,t);var n=no(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?Id(e,t.type,n):t.hasOwnProperty("defaultValue")&&Id(e,t.type,no(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Fh(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function Id(e,t,n){(t!=="number"||Dl(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var ba=Array.isArray;function fi(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o"+t.valueOf().toString()+"",t=Xs.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Ka(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Pa={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},vb=["Webkit","ms","Moz","O"];Object.keys(Pa).forEach(function(e){vb.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Pa[t]=Pa[e]})});function Qv(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||Pa.hasOwnProperty(e)&&Pa[e]?(""+t).trim():t+"px"}function Zv(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,o=Qv(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}var yb=ot({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Od(e,t){if(t){if(yb[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(U(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(U(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(U(61))}if(t.style!=null&&typeof t.style!="object")throw Error(U(62))}}function Nd(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var _d=null;function qf(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Bd=null,pi=null,hi=null;function Hh(e){if(e=ks(e)){if(typeof Bd!="function")throw Error(U(280));var t=e.stateNode;t&&(t=Eu(t),Bd(e.stateNode,e.type,t))}}function Jv(e){pi?hi?hi.push(e):hi=[e]:pi=e}function e0(){if(pi){var e=pi,t=hi;if(hi=pi=null,Hh(e),t)for(e=0;e>>=0,e===0?32:31-($b(e)/Mb|0)|0}var qs=64,Qs=4194304;function wa(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Ul(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,o=e.suspendedLanes,i=e.pingedLanes,a=n&268435455;if(a!==0){var s=a&~o;s!==0?r=wa(s):(i&=a,i!==0&&(r=wa(i)))}else a=n&~o,a!==0?r=wa(a):i!==0&&(r=wa(i));if(r===0)return 0;if(t!==0&&t!==r&&!(t&o)&&(o=r&-r,i=t&-t,o>=i||o===16&&(i&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function Cs(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Wn(t),e[t]=n}function Ob(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=$a),Jh=String.fromCharCode(32),em=!1;function b0(e,t){switch(e){case"keyup":return l2.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function w0(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var ei=!1;function c2(e,t){switch(e){case"compositionend":return w0(t);case"keypress":return t.which!==32?null:(em=!0,Jh);case"textInput":return e=t.data,e===Jh&&em?null:e;default:return null}}function d2(e,t){if(ei)return e==="compositionend"||!op&&b0(e,t)?(e=y0(),Cl=tp=Wr=null,ei=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=om(n)}}function R0(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?R0(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function E0(){for(var e=window,t=Dl();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Dl(e.document)}return t}function ip(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function b2(e){var t=E0(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&R0(n.ownerDocument.documentElement,n)){if(r!==null&&ip(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var o=n.textContent.length,i=Math.min(r.start,o);r=r.end===void 0?i:Math.min(r.end,o),!e.extend&&i>r&&(o=r,r=i,i=o),o=im(n,i);var a=im(n,r);o&&a&&(e.rangeCount!==1||e.anchorNode!==o.node||e.anchorOffset!==o.offset||e.focusNode!==a.node||e.focusOffset!==a.offset)&&(t=t.createRange(),t.setStart(o.node,o.offset),e.removeAllRanges(),i>r?(e.addRange(t),e.extend(a.node,a.offset)):(t.setEnd(a.node,a.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,ti=null,Ud=null,Ia=null,Hd=!1;function am(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Hd||ti==null||ti!==Dl(r)||(r=ti,"selectionStart"in r&&ip(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Ia&&Za(Ia,r)||(Ia=r,r=Kl(Ud,"onSelect"),0oi||(e.current=qd[oi],qd[oi]=null,oi--)}function Fe(e,t){oi++,qd[oi]=e.current,e.current=t}var ro={},zt=uo(ro),Qt=uo(!1),Po=ro;function Ci(e,t){var n=e.type.contextTypes;if(!n)return ro;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o={},i;for(i in n)o[i]=t[i];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function Zt(e){return e=e.childContextTypes,e!=null}function Yl(){He(Qt),He(zt)}function pm(e,t,n){if(zt.current!==ro)throw Error(U(168));Fe(zt,t),Fe(Qt,n)}function N0(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var o in r)if(!(o in t))throw Error(U(108,mb(e)||"Unknown",o));return ot({},n,r)}function Xl(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||ro,Po=zt.current,Fe(zt,e),Fe(Qt,Qt.current),!0}function hm(e,t,n){var r=e.stateNode;if(!r)throw Error(U(169));n?(e=N0(e,t,Po),r.__reactInternalMemoizedMergedChildContext=e,He(Qt),He(zt),Fe(zt,e)):He(Qt),Fe(Qt,n)}var vr=null,Pu=!1,ed=!1;function _0(e){vr===null?vr=[e]:vr.push(e)}function j2(e){Pu=!0,_0(e)}function co(){if(!ed&&vr!==null){ed=!0;var e=0,t=Ne;try{var n=vr;for(Ne=1;e>=a,o-=a,yr=1<<32-Wn(t)+o|n<P?($=R,R=null):$=R.sibling;var T=p(h,R,v[P],S);if(T===null){R===null&&(R=$);break}e&&R&&T.alternate===null&&t(h,R),g=i(T,g,P),w===null?E=T:w.sibling=T,w=T,R=$}if(P===v.length)return n(h,R),qe&&ho(h,P),E;if(R===null){for(;PP?($=R,R=null):$=R.sibling;var L=p(h,R,T.value,S);if(L===null){R===null&&(R=$);break}e&&R&&L.alternate===null&&t(h,R),g=i(L,g,P),w===null?E=L:w.sibling=L,w=L,R=$}if(T.done)return n(h,R),qe&&ho(h,P),E;if(R===null){for(;!T.done;P++,T=v.next())T=f(h,T.value,S),T!==null&&(g=i(T,g,P),w===null?E=T:w.sibling=T,w=T);return qe&&ho(h,P),E}for(R=r(h,R);!T.done;P++,T=v.next())T=b(R,h,P,T.value,S),T!==null&&(e&&T.alternate!==null&&R.delete(T.key===null?P:T.key),g=i(T,g,P),w===null?E=T:w.sibling=T,w=T);return e&&R.forEach(function(_){return t(h,_)}),qe&&ho(h,P),E}function k(h,g,v,S){if(typeof v=="object"&&v!==null&&v.type===Jo&&v.key===null&&(v=v.props.children),typeof v=="object"&&v!==null){switch(v.$$typeof){case Gs:e:{for(var E=v.key,w=g;w!==null;){if(w.key===E){if(E=v.type,E===Jo){if(w.tag===7){n(h,w.sibling),g=o(w,v.props.children),g.return=h,h=g;break e}}else if(w.elementType===E||typeof E=="object"&&E!==null&&E.$$typeof===Br&&wm(E)===w.type){n(h,w.sibling),g=o(w,v.props),g.ref=Zi(h,w,v),g.return=h,h=g;break e}n(h,w);break}else t(h,w);w=w.sibling}v.type===Jo?(g=Ro(v.props.children,h.mode,S,v.key),g.return=h,h=g):(S=Ml(v.type,v.key,v.props,null,h.mode,S),S.ref=Zi(h,g,v),S.return=h,h=S)}return a(h);case Zo:e:{for(w=v.key;g!==null;){if(g.key===w)if(g.tag===4&&g.stateNode.containerInfo===v.containerInfo&&g.stateNode.implementation===v.implementation){n(h,g.sibling),g=o(g,v.children||[]),g.return=h,h=g;break e}else{n(h,g);break}else t(h,g);g=g.sibling}g=ld(v,h.mode,S),g.return=h,h=g}return a(h);case Br:return w=v._init,k(h,g,w(v._payload),S)}if(ba(v))return y(h,g,v,S);if(Gi(v))return x(h,g,v,S);ol(h,v)}return typeof v=="string"&&v!==""||typeof v=="number"?(v=""+v,g!==null&&g.tag===6?(n(h,g.sibling),g=o(g,v),g.return=h,h=g):(n(h,g),g=sd(v,h.mode,S),g.return=h,h=g),a(h)):n(h,g)}return k}var ki=H0(!0),V0=H0(!1),Rs={},nr=uo(Rs),ns=uo(Rs),rs=uo(Rs);function bo(e){if(e===Rs)throw Error(U(174));return e}function hp(e,t){switch(Fe(rs,t),Fe(ns,e),Fe(nr,Rs),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:Ld(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=Ld(t,e)}He(nr),Fe(nr,t)}function Ri(){He(nr),He(ns),He(rs)}function K0(e){bo(rs.current);var t=bo(nr.current),n=Ld(t,e.type);t!==n&&(Fe(ns,e),Fe(nr,n))}function mp(e){ns.current===e&&(He(nr),He(ns))}var tt=uo(0);function tu(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var td=[];function gp(){for(var e=0;en?n:4,e(!0);var r=nd.transition;nd.transition={};try{e(!1),t()}finally{Ne=n,nd.transition=r}}function ly(){return Tn().memoizedState}function _2(e,t,n){var r=Jr(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},uy(e))cy(t,n);else if(n=z0(e,t,n,r),n!==null){var o=Ut();Un(n,e,r,o),dy(n,t,r)}}function B2(e,t,n){var r=Jr(e),o={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(uy(e))cy(t,o);else{var i=e.alternate;if(e.lanes===0&&(i===null||i.lanes===0)&&(i=t.lastRenderedReducer,i!==null))try{var a=t.lastRenderedState,s=i(a,n);if(o.hasEagerState=!0,o.eagerState=s,Hn(s,a)){var l=t.interleaved;l===null?(o.next=o,fp(t)):(o.next=l.next,l.next=o),t.interleaved=o;return}}catch{}finally{}n=z0(e,t,o,r),n!==null&&(o=Ut(),Un(n,e,r,o),dy(n,t,r))}}function uy(e){var t=e.alternate;return e===rt||t!==null&&t===rt}function cy(e,t){ja=nu=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function dy(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Zf(e,n)}}var ru={readContext:Pn,useCallback:_t,useContext:_t,useEffect:_t,useImperativeHandle:_t,useInsertionEffect:_t,useLayoutEffect:_t,useMemo:_t,useReducer:_t,useRef:_t,useState:_t,useDebugValue:_t,useDeferredValue:_t,useTransition:_t,useMutableSource:_t,useSyncExternalStore:_t,useId:_t,unstable_isNewReconciler:!1},A2={readContext:Pn,useCallback:function(e,t){return Qn().memoizedState=[e,t===void 0?null:t],e},useContext:Pn,useEffect:Sm,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,El(4194308,4,ry.bind(null,t,e),n)},useLayoutEffect:function(e,t){return El(4194308,4,e,t)},useInsertionEffect:function(e,t){return El(4,2,e,t)},useMemo:function(e,t){var n=Qn();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Qn();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=_2.bind(null,rt,e),[r.memoizedState,e]},useRef:function(e){var t=Qn();return e={current:e},t.memoizedState=e},useState:Cm,useDebugValue:wp,useDeferredValue:function(e){return Qn().memoizedState=e},useTransition:function(){var e=Cm(!1),t=e[0];return e=N2.bind(null,e[1]),Qn().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=rt,o=Qn();if(qe){if(n===void 0)throw Error(U(407));n=n()}else{if(n=t(),Tt===null)throw Error(U(349));$o&30||X0(r,t,n)}o.memoizedState=n;var i={value:n,getSnapshot:t};return o.queue=i,Sm(Q0.bind(null,r,i,e),[e]),r.flags|=2048,as(9,q0.bind(null,r,i,n,t),void 0,null),n},useId:function(){var e=Qn(),t=Tt.identifierPrefix;if(qe){var n=xr,r=yr;n=(r&~(1<<32-Wn(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=os++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=a.createElement(n,{is:r.is}):(e=a.createElement(n),n==="select"&&(a=e,r.multiple?a.multiple=!0:r.size&&(a.size=r.size))):e=a.createElementNS(e,n),e[er]=t,e[ts]=r,by(e,t,!1,!1),t.stateNode=e;e:{switch(a=Nd(n,r),n){case"dialog":Ue("cancel",e),Ue("close",e),o=r;break;case"iframe":case"object":case"embed":Ue("load",e),o=r;break;case"video":case"audio":for(o=0;oPi&&(t.flags|=128,r=!0,Ji(i,!1),t.lanes=4194304)}else{if(!r)if(e=tu(a),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Ji(i,!0),i.tail===null&&i.tailMode==="hidden"&&!a.alternate&&!qe)return Bt(t),null}else 2*pt()-i.renderingStartTime>Pi&&n!==1073741824&&(t.flags|=128,r=!0,Ji(i,!1),t.lanes=4194304);i.isBackwards?(a.sibling=t.child,t.child=a):(n=i.last,n!==null?n.sibling=a:t.child=a,i.last=a)}return i.tail!==null?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.renderingStartTime=pt(),t.sibling=null,n=tt.current,Fe(tt,r?n&1|2:n&1),t):(Bt(t),null);case 22:case 23:return Pp(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?on&1073741824&&(Bt(t),t.subtreeFlags&6&&(t.flags|=8192)):Bt(t),null;case 24:return null;case 25:return null}throw Error(U(156,t.tag))}function K2(e,t){switch(sp(t),t.tag){case 1:return Zt(t.type)&&Yl(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Ri(),He(Qt),He(zt),gp(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return mp(t),null;case 13:if(He(tt),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(U(340));Si()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return He(tt),null;case 4:return Ri(),null;case 10:return dp(t.type._context),null;case 22:case 23:return Pp(),null;case 24:return null;default:return null}}var al=!1,Dt=!1,G2=typeof WeakSet=="function"?WeakSet:Set,Q=null;function li(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){ct(e,t,r)}else n.current=null}function uf(e,t,n){try{n()}catch(r){ct(e,t,r)}}var jm=!1;function Y2(e,t){if(Vd=Hl,e=E0(),ip(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var o=r.anchorOffset,i=r.focusNode;r=r.focusOffset;try{n.nodeType,i.nodeType}catch{n=null;break e}var a=0,s=-1,l=-1,u=0,c=0,f=e,p=null;t:for(;;){for(var b;f!==n||o!==0&&f.nodeType!==3||(s=a+o),f!==i||r!==0&&f.nodeType!==3||(l=a+r),f.nodeType===3&&(a+=f.nodeValue.length),(b=f.firstChild)!==null;)p=f,f=b;for(;;){if(f===e)break t;if(p===n&&++u===o&&(s=a),p===i&&++c===r&&(l=a),(b=f.nextSibling)!==null)break;f=p,p=f.parentNode}f=b}n=s===-1||l===-1?null:{start:s,end:l}}else n=null}n=n||{start:0,end:0}}else n=null;for(Kd={focusedElem:e,selectionRange:n},Hl=!1,Q=t;Q!==null;)if(t=Q,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,Q=e;else for(;Q!==null;){t=Q;try{var y=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(y!==null){var x=y.memoizedProps,k=y.memoizedState,h=t.stateNode,g=h.getSnapshotBeforeUpdate(t.elementType===t.type?x:Bn(t.type,x),k);h.__reactInternalSnapshotBeforeUpdate=g}break;case 3:var v=t.stateNode.containerInfo;v.nodeType===1?v.textContent="":v.nodeType===9&&v.documentElement&&v.removeChild(v.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(U(163))}}catch(S){ct(t,t.return,S)}if(e=t.sibling,e!==null){e.return=t.return,Q=e;break}Q=t.return}return y=jm,jm=!1,y}function La(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var o=r=r.next;do{if((o.tag&e)===e){var i=o.destroy;o.destroy=void 0,i!==void 0&&uf(t,n,i)}o=o.next}while(o!==r)}}function Mu(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function cf(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function Sy(e){var t=e.alternate;t!==null&&(e.alternate=null,Sy(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[er],delete t[ts],delete t[Xd],delete t[M2],delete t[I2])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function ky(e){return e.tag===5||e.tag===3||e.tag===4}function Lm(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||ky(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function df(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Gl));else if(r!==4&&(e=e.child,e!==null))for(df(e,t,n),e=e.sibling;e!==null;)df(e,t,n),e=e.sibling}function ff(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(ff(e,t,n),e=e.sibling;e!==null;)ff(e,t,n),e=e.sibling}var It=null,An=!1;function Or(e,t,n){for(n=n.child;n!==null;)Ry(e,t,n),n=n.sibling}function Ry(e,t,n){if(tr&&typeof tr.onCommitFiberUnmount=="function")try{tr.onCommitFiberUnmount(Cu,n)}catch{}switch(n.tag){case 5:Dt||li(n,t);case 6:var r=It,o=An;It=null,Or(e,t,n),It=r,An=o,It!==null&&(An?(e=It,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):It.removeChild(n.stateNode));break;case 18:It!==null&&(An?(e=It,n=n.stateNode,e.nodeType===8?Jc(e.parentNode,n):e.nodeType===1&&Jc(e,n),qa(e)):Jc(It,n.stateNode));break;case 4:r=It,o=An,It=n.stateNode.containerInfo,An=!0,Or(e,t,n),It=r,An=o;break;case 0:case 11:case 14:case 15:if(!Dt&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){o=r=r.next;do{var i=o,a=i.destroy;i=i.tag,a!==void 0&&(i&2||i&4)&&uf(n,t,a),o=o.next}while(o!==r)}Or(e,t,n);break;case 1:if(!Dt&&(li(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(s){ct(n,t,s)}Or(e,t,n);break;case 21:Or(e,t,n);break;case 22:n.mode&1?(Dt=(r=Dt)||n.memoizedState!==null,Or(e,t,n),Dt=r):Or(e,t,n);break;default:Or(e,t,n)}}function Om(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new G2),t.forEach(function(r){var o=rw.bind(null,e,r);n.has(r)||(n.add(r),r.then(o,o))})}}function _n(e,t){var n=t.deletions;if(n!==null)for(var r=0;ro&&(o=a),r&=~i}if(r=o,r=pt()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*q2(r/1960))-r,10e?16:e,Ur===null)var r=!1;else{if(e=Ur,Ur=null,au=0,Ie&6)throw Error(U(331));var o=Ie;for(Ie|=4,Q=e.current;Q!==null;){var i=Q,a=i.child;if(Q.flags&16){var s=i.deletions;if(s!==null){for(var l=0;lpt()-Rp?ko(e,0):kp|=n),Jt(e,t)}function Ly(e,t){t===0&&(e.mode&1?(t=Qs,Qs<<=1,!(Qs&130023424)&&(Qs=4194304)):t=1);var n=Ut();e=kr(e,t),e!==null&&(Cs(e,t,n),Jt(e,n))}function nw(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Ly(e,n)}function rw(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,o=e.memoizedState;o!==null&&(n=o.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(U(314))}r!==null&&r.delete(t),Ly(e,n)}var Oy;Oy=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||Qt.current)qt=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return qt=!1,H2(e,t,n);qt=!!(e.flags&131072)}else qt=!1,qe&&t.flags&1048576&&B0(t,Ql,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Pl(e,t),e=t.pendingProps;var o=Ci(t,zt.current);gi(t,n),o=yp(null,t,r,e,o,n);var i=xp();return t.flags|=1,typeof o=="object"&&o!==null&&typeof o.render=="function"&&o.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Zt(r)?(i=!0,Xl(t)):i=!1,t.memoizedState=o.state!==null&&o.state!==void 0?o.state:null,pp(t),o.updater=Tu,t.stateNode=o,o._reactInternals=t,tf(t,r,e,n),t=of(null,t,r,!0,i,n)):(t.tag=0,qe&&i&&ap(t),Ft(null,t,o,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Pl(e,t),e=t.pendingProps,o=r._init,r=o(r._payload),t.type=r,o=t.tag=iw(r),e=Bn(r,e),o){case 0:t=rf(null,t,r,e,n);break e;case 1:t=$m(null,t,r,e,n);break e;case 11:t=Pm(null,t,r,e,n);break e;case 14:t=Tm(null,t,r,Bn(r.type,e),n);break e}throw Error(U(306,r,""))}return t;case 0:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:Bn(r,o),rf(e,t,r,o,n);case 1:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:Bn(r,o),$m(e,t,r,o,n);case 3:e:{if(vy(t),e===null)throw Error(U(387));r=t.pendingProps,i=t.memoizedState,o=i.element,F0(e,t),eu(t,r,null,n);var a=t.memoizedState;if(r=a.element,i.isDehydrated)if(i={element:r,isDehydrated:!1,cache:a.cache,pendingSuspenseBoundaries:a.pendingSuspenseBoundaries,transitions:a.transitions},t.updateQueue.baseState=i,t.memoizedState=i,t.flags&256){o=Ei(Error(U(423)),t),t=Mm(e,t,r,n,o);break e}else if(r!==o){o=Ei(Error(U(424)),t),t=Mm(e,t,r,n,o);break e}else for(sn=qr(t.stateNode.containerInfo.firstChild),ln=t,qe=!0,zn=null,n=V0(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(Si(),r===o){t=Rr(e,t,n);break e}Ft(e,t,r,n)}t=t.child}return t;case 5:return K0(t),e===null&&Zd(t),r=t.type,o=t.pendingProps,i=e!==null?e.memoizedProps:null,a=o.children,Gd(r,o)?a=null:i!==null&&Gd(r,i)&&(t.flags|=32),gy(e,t),Ft(e,t,a,n),t.child;case 6:return e===null&&Zd(t),null;case 13:return yy(e,t,n);case 4:return hp(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=ki(t,null,r,n):Ft(e,t,r,n),t.child;case 11:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:Bn(r,o),Pm(e,t,r,o,n);case 7:return Ft(e,t,t.pendingProps,n),t.child;case 8:return Ft(e,t,t.pendingProps.children,n),t.child;case 12:return Ft(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,o=t.pendingProps,i=t.memoizedProps,a=o.value,Fe(Zl,r._currentValue),r._currentValue=a,i!==null)if(Hn(i.value,a)){if(i.children===o.children&&!Qt.current){t=Rr(e,t,n);break e}}else for(i=t.child,i!==null&&(i.return=t);i!==null;){var s=i.dependencies;if(s!==null){a=i.child;for(var l=s.firstContext;l!==null;){if(l.context===r){if(i.tag===1){l=br(-1,n&-n),l.tag=2;var u=i.updateQueue;if(u!==null){u=u.shared;var c=u.pending;c===null?l.next=l:(l.next=c.next,c.next=l),u.pending=l}}i.lanes|=n,l=i.alternate,l!==null&&(l.lanes|=n),Jd(i.return,n,t),s.lanes|=n;break}l=l.next}}else if(i.tag===10)a=i.type===t.type?null:i.child;else if(i.tag===18){if(a=i.return,a===null)throw Error(U(341));a.lanes|=n,s=a.alternate,s!==null&&(s.lanes|=n),Jd(a,n,t),a=i.sibling}else a=i.child;if(a!==null)a.return=i;else for(a=i;a!==null;){if(a===t){a=null;break}if(i=a.sibling,i!==null){i.return=a.return,a=i;break}a=a.return}i=a}Ft(e,t,o.children,n),t=t.child}return t;case 9:return o=t.type,r=t.pendingProps.children,gi(t,n),o=Pn(o),r=r(o),t.flags|=1,Ft(e,t,r,n),t.child;case 14:return r=t.type,o=Bn(r,t.pendingProps),o=Bn(r.type,o),Tm(e,t,r,o,n);case 15:return hy(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:Bn(r,o),Pl(e,t),t.tag=1,Zt(r)?(e=!0,Xl(t)):e=!1,gi(t,n),U0(t,r,o),tf(t,r,o,n),of(null,t,r,!0,e,n);case 19:return xy(e,t,n);case 22:return my(e,t,n)}throw Error(U(156,t.tag))};function Ny(e,t){return s0(e,t)}function ow(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function wn(e,t,n,r){return new ow(e,t,n,r)}function $p(e){return e=e.prototype,!(!e||!e.isReactComponent)}function iw(e){if(typeof e=="function")return $p(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Yf)return 11;if(e===Xf)return 14}return 2}function eo(e,t){var n=e.alternate;return n===null?(n=wn(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Ml(e,t,n,r,o,i){var a=2;if(r=e,typeof e=="function")$p(e)&&(a=1);else if(typeof e=="string")a=5;else e:switch(e){case Jo:return Ro(n.children,o,i,t);case Gf:a=8,o|=8;break;case Rd:return e=wn(12,n,t,o|2),e.elementType=Rd,e.lanes=i,e;case Ed:return e=wn(13,n,t,o),e.elementType=Ed,e.lanes=i,e;case Pd:return e=wn(19,n,t,o),e.elementType=Pd,e.lanes=i,e;case Hv:return ju(n,o,i,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Wv:a=10;break e;case Uv:a=9;break e;case Yf:a=11;break e;case Xf:a=14;break e;case Br:a=16,r=null;break e}throw Error(U(130,e==null?e:typeof e,""))}return t=wn(a,n,t,o),t.elementType=e,t.type=r,t.lanes=i,t}function Ro(e,t,n,r){return e=wn(7,e,r,t),e.lanes=n,e}function ju(e,t,n,r){return e=wn(22,e,r,t),e.elementType=Hv,e.lanes=n,e.stateNode={isHidden:!1},e}function sd(e,t,n){return e=wn(6,e,null,t),e.lanes=n,e}function ld(e,t,n){return t=wn(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function aw(e,t,n,r,o){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Wc(0),this.expirationTimes=Wc(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Wc(0),this.identifierPrefix=r,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function Mp(e,t,n,r,o,i,a,s,l){return e=new aw(e,t,n,s,l),t===1?(t=1,i===!0&&(t|=8)):t=0,i=wn(3,null,null,t),e.current=i,i.stateNode=e,i.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},pp(i),e}function sw(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Dy)}catch(e){console.error(e)}}Dy(),Bv.exports=fn;var Es=Bv.exports;const Sa=Ev(Es),fw=Rv({__proto__:null,default:Sa},[Es]);var Wm=Es;Sd.createRoot=Wm.createRoot,Sd.hydrateRoot=Wm.hydrateRoot;/** + * @remix-run/router v1.15.0 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function dt(){return dt=Object.assign?Object.assign.bind():function(e){for(var t=1;t"u")throw new Error(t)}function jo(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function hw(){return Math.random().toString(36).substr(2,8)}function Hm(e,t){return{usr:e.state,key:e.key,idx:t}}function ls(e,t,n,r){return n===void 0&&(n=null),dt({pathname:typeof e=="string"?e:e.pathname,search:"",hash:""},typeof t=="string"?Mr(t):t,{state:n,key:t&&t.key||r||hw()})}function oo(e){let{pathname:t="/",search:n="",hash:r=""}=e;return n&&n!=="?"&&(t+=n.charAt(0)==="?"?n:"?"+n),r&&r!=="#"&&(t+=r.charAt(0)==="#"?r:"#"+r),t}function Mr(e){let t={};if(e){let n=e.indexOf("#");n>=0&&(t.hash=e.substr(n),e=e.substr(0,n));let r=e.indexOf("?");r>=0&&(t.search=e.substr(r),e=e.substr(0,r)),e&&(t.pathname=e)}return t}function mw(e,t,n,r){r===void 0&&(r={});let{window:o=document.defaultView,v5Compat:i=!1}=r,a=o.history,s=ft.Pop,l=null,u=c();u==null&&(u=0,a.replaceState(dt({},a.state,{idx:u}),""));function c(){return(a.state||{idx:null}).idx}function f(){s=ft.Pop;let k=c(),h=k==null?null:k-u;u=k,l&&l({action:s,location:x.location,delta:h})}function p(k,h){s=ft.Push;let g=ls(x.location,k,h);n&&n(g,k),u=c()+1;let v=Hm(g,u),S=x.createHref(g);try{a.pushState(v,"",S)}catch(E){if(E instanceof DOMException&&E.name==="DataCloneError")throw E;o.location.assign(S)}i&&l&&l({action:s,location:x.location,delta:1})}function b(k,h){s=ft.Replace;let g=ls(x.location,k,h);n&&n(g,k),u=c();let v=Hm(g,u),S=x.createHref(g);a.replaceState(v,"",S),i&&l&&l({action:s,location:x.location,delta:0})}function y(k){let h=o.location.origin!=="null"?o.location.origin:o.location.href,g=typeof k=="string"?k:oo(k);return xe(h,"No window.location.(origin|href) available to create URL for href: "+g),new URL(g,h)}let x={get action(){return s},get location(){return e(o,a)},listen(k){if(l)throw new Error("A history only accepts one active listener");return o.addEventListener(Um,f),l=k,()=>{o.removeEventListener(Um,f),l=null}},createHref(k){return t(o,k)},createURL:y,encodeLocation(k){let h=y(k);return{pathname:h.pathname,search:h.search,hash:h.hash}},push:p,replace:b,go(k){return a.go(k)}};return x}var ut;(function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"})(ut||(ut={}));const gw=new Set(["lazy","caseSensitive","path","id","index","children"]);function vw(e){return e.index===!0}function vf(e,t,n,r){return n===void 0&&(n=[]),r===void 0&&(r={}),e.map((o,i)=>{let a=[...n,i],s=typeof o.id=="string"?o.id:a.join("-");if(xe(o.index!==!0||!o.children,"Cannot specify children on an index route"),xe(!r[s],'Found a route id collision on id "'+s+`". Route id's must be globally unique within Data Router usages`),vw(o)){let l=dt({},o,t(o),{id:s});return r[s]=l,l}else{let l=dt({},o,t(o),{id:s,children:void 0});return r[s]=l,o.children&&(l.children=vf(o.children,t,a,r)),l}})}function ci(e,t,n){n===void 0&&(n="/");let r=typeof t=="string"?Mr(t):t,o=Vn(r.pathname||"/",n);if(o==null)return null;let i=zy(e);xw(i);let a=null;for(let s=0;a==null&&s{let l={relativePath:s===void 0?i.path||"":s,caseSensitive:i.caseSensitive===!0,childrenIndex:a,route:i};l.relativePath.startsWith("/")&&(xe(l.relativePath.startsWith(r),'Absolute route path "'+l.relativePath+'" nested under path '+('"'+r+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),l.relativePath=l.relativePath.slice(r.length));let u=rr([r,l.relativePath]),c=n.concat(l);i.children&&i.children.length>0&&(xe(i.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+u+'".')),zy(i.children,t,c,u)),!(i.path==null&&!i.index)&&t.push({path:u,score:Ew(u,i.index),routesMeta:c})};return e.forEach((i,a)=>{var s;if(i.path===""||!((s=i.path)!=null&&s.includes("?")))o(i,a);else for(let l of Fy(i.path))o(i,a,l)}),t}function Fy(e){let t=e.split("/");if(t.length===0)return[];let[n,...r]=t,o=n.endsWith("?"),i=n.replace(/\?$/,"");if(r.length===0)return o?[i,""]:[i];let a=Fy(r.join("/")),s=[];return s.push(...a.map(l=>l===""?i:[i,l].join("/"))),o&&s.push(...a),s.map(l=>e.startsWith("/")&&l===""?"/":l)}function xw(e){e.sort((t,n)=>t.score!==n.score?n.score-t.score:Pw(t.routesMeta.map(r=>r.childrenIndex),n.routesMeta.map(r=>r.childrenIndex)))}const bw=/^:[\w-]+$/,ww=3,Cw=2,Sw=1,kw=10,Rw=-2,Vm=e=>e==="*";function Ew(e,t){let n=e.split("/"),r=n.length;return n.some(Vm)&&(r+=Rw),t&&(r+=Cw),n.filter(o=>!Vm(o)).reduce((o,i)=>o+(bw.test(i)?ww:i===""?Sw:kw),r)}function Pw(e,t){return e.length===t.length&&e.slice(0,-1).every((r,o)=>r===t[o])?e[e.length-1]-t[t.length-1]:0}function Tw(e,t){let{routesMeta:n}=e,r={},o="/",i=[];for(let a=0;a{let{paramName:p,isOptional:b}=c;if(p==="*"){let x=s[f]||"";a=i.slice(0,i.length-x.length).replace(/(.)\/+$/,"$1")}const y=s[f];return b&&!y?u[p]=void 0:u[p]=Iw(y||"",p),u},{}),pathname:i,pathnameBase:a,pattern:e}}function $w(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!0),jo(e==="*"||!e.endsWith("*")||e.endsWith("/*"),'Route path "'+e+'" will be treated as if it were '+('"'+e.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+e.replace(/\*$/,"/*")+'".'));let r=[],o="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(a,s,l)=>(r.push({paramName:s,isOptional:l!=null}),l?"/?([^\\/]+)?":"/([^\\/]+)"));return e.endsWith("*")?(r.push({paramName:"*"}),o+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?o+="\\/*$":e!==""&&e!=="/"&&(o+="(?:(?=\\/|$))"),[new RegExp(o,t?void 0:"i"),r]}function Mw(e){try{return decodeURI(e)}catch(t){return jo(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+t+").")),e}}function Iw(e,t){try{return decodeURIComponent(e)}catch(n){return jo(!1,'The value for the URL param "'+t+'" will not be decoded because'+(' the string "'+e+'" is a malformed URL segment. This is probably')+(" due to a bad percent encoding ("+n+").")),e}}function Vn(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith("/")?t.length-1:t.length,r=e.charAt(n);return r&&r!=="/"?null:e.slice(n)||"/"}function jw(e,t){t===void 0&&(t="/");let{pathname:n,search:r="",hash:o=""}=typeof e=="string"?Mr(e):e;return{pathname:n?n.startsWith("/")?n:Lw(n,t):t,search:Nw(r),hash:_w(o)}}function Lw(e,t){let n=t.replace(/\/+$/,"").split("/");return e.split("/").forEach(o=>{o===".."?n.length>1&&n.pop():o!=="."&&n.push(o)}),n.length>1?n.join("/"):"/"}function ud(e,t,n,r){return"Cannot include a '"+e+"' character in a manually specified "+("`to."+t+"` field ["+JSON.stringify(r)+"]. Please separate it out to the ")+("`to."+n+"` field. Alternatively you may provide the full path as ")+'a string in and the router will parse it for you.'}function Wy(e){return e.filter((t,n)=>n===0||t.route.path&&t.route.path.length>0)}function Op(e,t){let n=Wy(e);return t?n.map((r,o)=>o===e.length-1?r.pathname:r.pathnameBase):n.map(r=>r.pathnameBase)}function Np(e,t,n,r){r===void 0&&(r=!1);let o;typeof e=="string"?o=Mr(e):(o=dt({},e),xe(!o.pathname||!o.pathname.includes("?"),ud("?","pathname","search",o)),xe(!o.pathname||!o.pathname.includes("#"),ud("#","pathname","hash",o)),xe(!o.search||!o.search.includes("#"),ud("#","search","hash",o)));let i=e===""||o.pathname==="",a=i?"/":o.pathname,s;if(a==null)s=n;else{let f=t.length-1;if(!r&&a.startsWith("..")){let p=a.split("/");for(;p[0]==="..";)p.shift(),f-=1;o.pathname=p.join("/")}s=f>=0?t[f]:"/"}let l=jw(o,s),u=a&&a!=="/"&&a.endsWith("/"),c=(i||a===".")&&n.endsWith("/");return!l.pathname.endsWith("/")&&(u||c)&&(l.pathname+="/"),l}const rr=e=>e.join("/").replace(/\/\/+/g,"/"),Ow=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),Nw=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,_w=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e;class _p{constructor(t,n,r,o){o===void 0&&(o=!1),this.status=t,this.statusText=n||"",this.internal=o,r instanceof Error?(this.data=r.toString(),this.error=r):this.data=r}}function Uy(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}const Hy=["post","put","patch","delete"],Bw=new Set(Hy),Aw=["get",...Hy],Dw=new Set(Aw),zw=new Set([301,302,303,307,308]),Fw=new Set([307,308]),cd={state:"idle",location:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},Ww={state:"idle",data:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},ta={state:"unblocked",proceed:void 0,reset:void 0,location:void 0},Vy=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Uw=e=>({hasErrorBoundary:!!e.hasErrorBoundary}),Ky="remix-router-transitions";function Hw(e){const t=e.window?e.window:typeof window<"u"?window:void 0,n=typeof t<"u"&&typeof t.document<"u"&&typeof t.document.createElement<"u",r=!n;xe(e.routes.length>0,"You must provide a non-empty routes array to createRouter");let o;if(e.mapRouteProperties)o=e.mapRouteProperties;else if(e.detectErrorBoundary){let I=e.detectErrorBoundary;o=j=>({hasErrorBoundary:I(j)})}else o=Uw;let i={},a=vf(e.routes,o,void 0,i),s,l=e.basename||"/",u=dt({v7_fetcherPersist:!1,v7_normalizeFormMethod:!1,v7_partialHydration:!1,v7_prependBasename:!1,v7_relativeSplatPath:!1},e.future),c=null,f=new Set,p=null,b=null,y=null,x=e.hydrationData!=null,k=ci(a,e.history.location,l),h=null;if(k==null){let I=gn(404,{pathname:e.history.location.pathname}),{matches:j,route:A}=Jm(a);k=j,h={[A.id]:I}}let g,v=k.some(I=>I.route.lazy),S=k.some(I=>I.route.loader);if(v)g=!1;else if(!S)g=!0;else if(u.v7_partialHydration){let I=e.hydrationData?e.hydrationData.loaderData:null,j=e.hydrationData?e.hydrationData.errors:null;g=k.every(A=>A.route.loader&&A.route.loader.hydrate!==!0&&(I&&I[A.route.id]!==void 0||j&&j[A.route.id]!==void 0))}else g=e.hydrationData!=null;let E,w={historyAction:e.history.action,location:e.history.location,matches:k,initialized:g,navigation:cd,restoreScrollPosition:e.hydrationData!=null?!1:null,preventScrollReset:!1,revalidation:"idle",loaderData:e.hydrationData&&e.hydrationData.loaderData||{},actionData:e.hydrationData&&e.hydrationData.actionData||null,errors:e.hydrationData&&e.hydrationData.errors||h,fetchers:new Map,blockers:new Map},R=ft.Pop,P=!1,$,T=!1,L=new Map,_=null,O=!1,D=!1,W=[],z=[],B=new Map,M=0,N=-1,H=new Map,ne=new Set,ee=new Map,he=new Map,q=new Set,ue=new Map,K=new Map,fe=!1;function me(){if(c=e.history.listen(I=>{let{action:j,location:A,delta:Y}=I;if(fe){fe=!1;return}jo(K.size===0||Y!=null,"You are trying to use a blocker on a POP navigation to a location that was not created by @remix-run/router. This will fail silently in production. This can happen if you are navigating outside the router via `window.history.pushState`/`window.location.hash` instead of using router navigation APIs. This can also happen if you are using createHashRouter and the user manually changes the URL.");let Z=rn({currentLocation:w.location,nextLocation:A,historyAction:j});if(Z&&Y!=null){fe=!0,e.history.go(Y*-1),De(Z,{state:"blocked",location:A,proceed(){De(Z,{state:"proceeding",proceed:void 0,reset:void 0,location:A}),e.history.go(Y)},reset(){let Se=new Map(w.blockers);Se.set(Z,ta),te({blockers:Se})}});return}return ye(j,A)}),n){tC(t,L);let I=()=>nC(t,L);t.addEventListener("pagehide",I),_=()=>t.removeEventListener("pagehide",I)}return w.initialized||ye(ft.Pop,w.location,{initialHydration:!0}),E}function de(){c&&c(),_&&_(),f.clear(),$&&$.abort(),w.fetchers.forEach((I,j)=>vt(j)),w.blockers.forEach((I,j)=>je(j))}function Be(I){return f.add(I),()=>f.delete(I)}function te(I,j){j===void 0&&(j={}),w=dt({},w,I);let A=[],Y=[];u.v7_fetcherPersist&&w.fetchers.forEach((Z,Se)=>{Z.state==="idle"&&(q.has(Se)?Y.push(Se):A.push(Se))}),[...f].forEach(Z=>Z(w,{deletedFetchers:Y,unstable_viewTransitionOpts:j.viewTransitionOpts,unstable_flushSync:j.flushSync===!0})),u.v7_fetcherPersist&&(A.forEach(Z=>w.fetchers.delete(Z)),Y.forEach(Z=>vt(Z)))}function $e(I,j,A){var Y,Z;let{flushSync:Se}=A===void 0?{}:A,pe=w.actionData!=null&&w.navigation.formMethod!=null&&Dn(w.navigation.formMethod)&&w.navigation.state==="loading"&&((Y=I.state)==null?void 0:Y._isRedirect)!==!0,ce;j.actionData?Object.keys(j.actionData).length>0?ce=j.actionData:ce=null:pe?ce=w.actionData:ce=null;let re=j.loaderData?Zm(w.loaderData,j.loaderData,j.matches||[],j.errors):w.loaderData,Re=w.blockers;Re.size>0&&(Re=new Map(Re),Re.forEach((ke,et)=>Re.set(et,ta)));let Ve=P===!0||w.navigation.formMethod!=null&&Dn(w.navigation.formMethod)&&((Z=I.state)==null?void 0:Z._isRedirect)!==!0;s&&(a=s,s=void 0),O||R===ft.Pop||(R===ft.Push?e.history.push(I,I.state):R===ft.Replace&&e.history.replace(I,I.state));let ve;if(R===ft.Pop){let ke=L.get(w.location.pathname);ke&&ke.has(I.pathname)?ve={currentLocation:w.location,nextLocation:I}:L.has(I.pathname)&&(ve={currentLocation:I,nextLocation:w.location})}else if(T){let ke=L.get(w.location.pathname);ke?ke.add(I.pathname):(ke=new Set([I.pathname]),L.set(w.location.pathname,ke)),ve={currentLocation:w.location,nextLocation:I}}te(dt({},j,{actionData:ce,loaderData:re,historyAction:R,location:I,initialized:!0,navigation:cd,revalidation:"idle",restoreScrollPosition:Us(I,j.matches||w.matches),preventScrollReset:Ve,blockers:Re}),{viewTransitionOpts:ve,flushSync:Se===!0}),R=ft.Pop,P=!1,T=!1,O=!1,D=!1,W=[],z=[]}async function ge(I,j){if(typeof I=="number"){e.history.go(I);return}let A=yf(w.location,w.matches,l,u.v7_prependBasename,I,u.v7_relativeSplatPath,j==null?void 0:j.fromRouteId,j==null?void 0:j.relative),{path:Y,submission:Z,error:Se}=Km(u.v7_normalizeFormMethod,!1,A,j),pe=w.location,ce=ls(w.location,Y,j&&j.state);ce=dt({},ce,e.history.encodeLocation(ce));let re=j&&j.replace!=null?j.replace:void 0,Re=ft.Push;re===!0?Re=ft.Replace:re===!1||Z!=null&&Dn(Z.formMethod)&&Z.formAction===w.location.pathname+w.location.search&&(Re=ft.Replace);let Ve=j&&"preventScrollReset"in j?j.preventScrollReset===!0:void 0,ve=(j&&j.unstable_flushSync)===!0,ke=rn({currentLocation:pe,nextLocation:ce,historyAction:Re});if(ke){De(ke,{state:"blocked",location:ce,proceed(){De(ke,{state:"proceeding",proceed:void 0,reset:void 0,location:ce}),ge(I,j)},reset(){let et=new Map(w.blockers);et.set(ke,ta),te({blockers:et})}});return}return await ye(Re,ce,{submission:Z,pendingError:Se,preventScrollReset:Ve,replace:j&&j.replace,enableViewTransition:j&&j.unstable_viewTransition,flushSync:ve})}function Te(){if(We(),te({revalidation:"loading"}),w.navigation.state!=="submitting"){if(w.navigation.state==="idle"){ye(w.historyAction,w.location,{startUninterruptedRevalidation:!0});return}ye(R||w.historyAction,w.navigation.location,{overrideNavigation:w.navigation})}}async function ye(I,j,A){$&&$.abort(),$=null,R=I,O=(A&&A.startUninterruptedRevalidation)===!0,_c(w.location,w.matches),P=(A&&A.preventScrollReset)===!0,T=(A&&A.enableViewTransition)===!0;let Y=s||a,Z=A&&A.overrideNavigation,Se=ci(Y,j,l),pe=(A&&A.flushSync)===!0;if(!Se){let et=gn(404,{pathname:j.pathname}),{matches:Yt,route:Ke}=Jm(Y);pr(),$e(j,{matches:Yt,loaderData:{},errors:{[Ke.id]:et}},{flushSync:pe});return}if(w.initialized&&!D&&Xw(w.location,j)&&!(A&&A.submission&&Dn(A.submission.formMethod))){$e(j,{matches:Se},{flushSync:pe});return}$=new AbortController;let ce=ra(e.history,j,$.signal,A&&A.submission),re,Re;if(A&&A.pendingError)Re={[_a(Se).route.id]:A.pendingError};else if(A&&A.submission&&Dn(A.submission.formMethod)){let et=await Mt(ce,j,A.submission,Se,{replace:A.replace,flushSync:pe});if(et.shortCircuited)return;re=et.pendingActionData,Re=et.pendingActionError,Z=dd(j,A.submission),pe=!1,ce=new Request(ce.url,{signal:ce.signal})}let{shortCircuited:Ve,loaderData:ve,errors:ke}=await bt(ce,j,Se,Z,A&&A.submission,A&&A.fetcherSubmission,A&&A.replace,A&&A.initialHydration===!0,pe,re,Re);Ve||($=null,$e(j,dt({matches:Se},re?{actionData:re}:{},{loaderData:ve,errors:ke})))}async function Mt(I,j,A,Y,Z){Z===void 0&&(Z={}),We();let Se=Jw(j,A);te({navigation:Se},{flushSync:Z.flushSync===!0});let pe,ce=bf(Y,j);if(!ce.route.action&&!ce.route.lazy)pe={type:ut.error,error:gn(405,{method:I.method,pathname:j.pathname,routeId:ce.route.id})};else if(pe=await na("action",I,ce,Y,i,o,l,u.v7_relativeSplatPath),I.signal.aborted)return{shortCircuited:!0};if(Co(pe)){let re;return Z&&Z.replace!=null?re=Z.replace:re=pe.location===w.location.pathname+w.location.search,await Ee(w,pe,{submission:A,replace:re}),{shortCircuited:!0}}if(di(pe)){let re=_a(Y,ce.route.id);return(Z&&Z.replace)!==!0&&(R=ft.Push),{pendingActionData:{},pendingActionError:{[re.route.id]:pe.error}}}if(wo(pe))throw gn(400,{type:"defer-action"});return{pendingActionData:{[ce.route.id]:pe.data}}}async function bt(I,j,A,Y,Z,Se,pe,ce,re,Re,Ve){let ve=Y||dd(j,Z),ke=Z||Se||ng(ve),et=s||a,[Yt,Ke]=Gm(e.history,w,A,ke,j,u.v7_partialHydration&&ce===!0,D,W,z,q,ee,ne,et,l,Re,Ve);if(pr(we=>!(A&&A.some(Ge=>Ge.route.id===we))||Yt&&Yt.some(Ge=>Ge.route.id===we)),N=++M,Yt.length===0&&Ke.length===0){let we=mn();return $e(j,dt({matches:A,loaderData:{},errors:Ve||null},Re?{actionData:Re}:{},we?{fetchers:new Map(w.fetchers)}:{}),{flushSync:re}),{shortCircuited:!0}}if(!O&&(!u.v7_partialHydration||!ce)){Ke.forEach(Ge=>{let Xn=w.fetchers.get(Ge.key),Vs=oa(void 0,Xn?Xn.data:void 0);w.fetchers.set(Ge.key,Vs)});let we=Re||w.actionData;te(dt({navigation:ve},we?Object.keys(we).length===0?{actionData:null}:{actionData:we}:{},Ke.length>0?{fetchers:new Map(w.fetchers)}:{}),{flushSync:re})}Ke.forEach(we=>{B.has(we.key)&&J(we.key),we.controller&&B.set(we.key,we.controller)});let Gn=()=>Ke.forEach(we=>J(we.key));$&&$.signal.addEventListener("abort",Gn);let{results:Uo,loaderResults:hr,fetcherResults:Nn}=await gt(w.matches,A,Yt,Ke,I);if(I.signal.aborted)return{shortCircuited:!0};$&&$.signal.removeEventListener("abort",Gn),Ke.forEach(we=>B.delete(we.key));let Yn=eg(Uo);if(Yn){if(Yn.idx>=Yt.length){let we=Ke[Yn.idx-Yt.length].key;ne.add(we)}return await Ee(w,Yn.result,{replace:pe}),{shortCircuited:!0}}let{loaderData:Hi,errors:Vi}=Qm(w,A,Yt,hr,Ve,Ke,Nn,ue);ue.forEach((we,Ge)=>{we.subscribe(Xn=>{(Xn||we.done)&&ue.delete(Ge)})});let Ki=mn(),Lr=Gt(N),be=Ki||Lr||Ke.length>0;return dt({loaderData:Hi,errors:Vi},be?{fetchers:new Map(w.fetchers)}:{})}function it(I,j,A,Y){if(r)throw new Error("router.fetch() was called during the server render, but it shouldn't be. You are likely calling a useFetcher() method in the body of your component. Try moving it to a useEffect or a callback.");B.has(I)&&J(I);let Z=(Y&&Y.unstable_flushSync)===!0,Se=s||a,pe=yf(w.location,w.matches,l,u.v7_prependBasename,A,u.v7_relativeSplatPath,j,Y==null?void 0:Y.relative),ce=ci(Se,pe,l);if(!ce){Je(I,j,gn(404,{pathname:pe}),{flushSync:Z});return}let{path:re,submission:Re,error:Ve}=Km(u.v7_normalizeFormMethod,!0,pe,Y);if(Ve){Je(I,j,Ve,{flushSync:Z});return}let ve=bf(ce,re);if(P=(Y&&Y.preventScrollReset)===!0,Re&&Dn(Re.formMethod)){Et(I,j,re,ve,ce,Z,Re);return}ee.set(I,{routeId:j,path:re}),ze(I,j,re,ve,ce,Z,Re)}async function Et(I,j,A,Y,Z,Se,pe){if(We(),ee.delete(I),!Y.route.action&&!Y.route.lazy){let Ge=gn(405,{method:pe.formMethod,pathname:A,routeId:j});Je(I,j,Ge,{flushSync:Se});return}let ce=w.fetchers.get(I);Ce(I,eC(pe,ce),{flushSync:Se});let re=new AbortController,Re=ra(e.history,A,re.signal,pe);B.set(I,re);let Ve=M,ve=await na("action",Re,Y,Z,i,o,l,u.v7_relativeSplatPath);if(Re.signal.aborted){B.get(I)===re&&B.delete(I);return}if(u.v7_fetcherPersist&&q.has(I)){if(Co(ve)||di(ve)){Ce(I,_r(void 0));return}}else{if(Co(ve))if(B.delete(I),N>Ve){Ce(I,_r(void 0));return}else return ne.add(I),Ce(I,oa(pe)),Ee(w,ve,{fetcherSubmission:pe});if(di(ve)){Je(I,j,ve.error);return}}if(wo(ve))throw gn(400,{type:"defer-action"});let ke=w.navigation.location||w.location,et=ra(e.history,ke,re.signal),Yt=s||a,Ke=w.navigation.state!=="idle"?ci(Yt,w.navigation.location,l):w.matches;xe(Ke,"Didn't find any matches after fetcher action");let Gn=++M;H.set(I,Gn);let Uo=oa(pe,ve.data);w.fetchers.set(I,Uo);let[hr,Nn]=Gm(e.history,w,Ke,pe,ke,!1,D,W,z,q,ee,ne,Yt,l,{[Y.route.id]:ve.data},void 0);Nn.filter(Ge=>Ge.key!==I).forEach(Ge=>{let Xn=Ge.key,Vs=w.fetchers.get(Xn),zx=oa(void 0,Vs?Vs.data:void 0);w.fetchers.set(Xn,zx),B.has(Xn)&&J(Xn),Ge.controller&&B.set(Xn,Ge.controller)}),te({fetchers:new Map(w.fetchers)});let Yn=()=>Nn.forEach(Ge=>J(Ge.key));re.signal.addEventListener("abort",Yn);let{results:Hi,loaderResults:Vi,fetcherResults:Ki}=await gt(w.matches,Ke,hr,Nn,et);if(re.signal.aborted)return;re.signal.removeEventListener("abort",Yn),H.delete(I),B.delete(I),Nn.forEach(Ge=>B.delete(Ge.key));let Lr=eg(Hi);if(Lr){if(Lr.idx>=hr.length){let Ge=Nn[Lr.idx-hr.length].key;ne.add(Ge)}return Ee(w,Lr.result)}let{loaderData:be,errors:we}=Qm(w,w.matches,hr,Vi,void 0,Nn,Ki,ue);if(w.fetchers.has(I)){let Ge=_r(ve.data);w.fetchers.set(I,Ge)}Gt(Gn),w.navigation.state==="loading"&&Gn>N?(xe(R,"Expected pending action"),$&&$.abort(),$e(w.navigation.location,{matches:Ke,loaderData:be,errors:we,fetchers:new Map(w.fetchers)})):(te({errors:we,loaderData:Zm(w.loaderData,be,Ke,we),fetchers:new Map(w.fetchers)}),D=!1)}async function ze(I,j,A,Y,Z,Se,pe){let ce=w.fetchers.get(I);Ce(I,oa(pe,ce?ce.data:void 0),{flushSync:Se});let re=new AbortController,Re=ra(e.history,A,re.signal);B.set(I,re);let Ve=M,ve=await na("loader",Re,Y,Z,i,o,l,u.v7_relativeSplatPath);if(wo(ve)&&(ve=await Xy(ve,Re.signal,!0)||ve),B.get(I)===re&&B.delete(I),!Re.signal.aborted){if(q.has(I)){Ce(I,_r(void 0));return}if(Co(ve))if(N>Ve){Ce(I,_r(void 0));return}else{ne.add(I),await Ee(w,ve);return}if(di(ve)){Je(I,j,ve.error);return}xe(!wo(ve),"Unhandled fetcher deferred data"),Ce(I,_r(ve.data))}}async function Ee(I,j,A){let{submission:Y,fetcherSubmission:Z,replace:Se}=A===void 0?{}:A;j.revalidate&&(D=!0);let pe=ls(I.location,j.location,{_isRedirect:!0});if(xe(pe,"Expected a location on the redirect navigation"),n){let ke=!1;if(j.reloadDocument)ke=!0;else if(Vy.test(j.location)){const et=e.history.createURL(j.location);ke=et.origin!==t.location.origin||Vn(et.pathname,l)==null}if(ke){Se?t.location.replace(j.location):t.location.assign(j.location);return}}$=null;let ce=Se===!0?ft.Replace:ft.Push,{formMethod:re,formAction:Re,formEncType:Ve}=I.navigation;!Y&&!Z&&re&&Re&&Ve&&(Y=ng(I.navigation));let ve=Y||Z;if(Fw.has(j.status)&&ve&&Dn(ve.formMethod))await ye(ce,pe,{submission:dt({},ve,{formAction:j.location}),preventScrollReset:P});else{let ke=dd(pe,Y);await ye(ce,pe,{overrideNavigation:ke,fetcherSubmission:Z,preventScrollReset:P})}}async function gt(I,j,A,Y,Z){let Se=await Promise.all([...A.map(re=>na("loader",Z,re,j,i,o,l,u.v7_relativeSplatPath)),...Y.map(re=>re.matches&&re.match&&re.controller?na("loader",ra(e.history,re.path,re.controller.signal),re.match,re.matches,i,o,l,u.v7_relativeSplatPath):{type:ut.error,error:gn(404,{pathname:re.path})})]),pe=Se.slice(0,A.length),ce=Se.slice(A.length);return await Promise.all([tg(I,A,pe,pe.map(()=>Z.signal),!1,w.loaderData),tg(I,Y.map(re=>re.match),ce,Y.map(re=>re.controller?re.controller.signal:null),!0)]),{results:Se,loaderResults:pe,fetcherResults:ce}}function We(){D=!0,W.push(...pr()),ee.forEach((I,j)=>{B.has(j)&&(z.push(j),J(j))})}function Ce(I,j,A){A===void 0&&(A={}),w.fetchers.set(I,j),te({fetchers:new Map(w.fetchers)},{flushSync:(A&&A.flushSync)===!0})}function Je(I,j,A,Y){Y===void 0&&(Y={});let Z=_a(w.matches,j);vt(I),te({errors:{[Z.route.id]:A},fetchers:new Map(w.fetchers)},{flushSync:(Y&&Y.flushSync)===!0})}function wt(I){return u.v7_fetcherPersist&&(he.set(I,(he.get(I)||0)+1),q.has(I)&&q.delete(I)),w.fetchers.get(I)||Ww}function vt(I){let j=w.fetchers.get(I);B.has(I)&&!(j&&j.state==="loading"&&H.has(I))&&J(I),ee.delete(I),H.delete(I),ne.delete(I),q.delete(I),w.fetchers.delete(I)}function Me(I){if(u.v7_fetcherPersist){let j=(he.get(I)||0)-1;j<=0?(he.delete(I),q.add(I)):he.set(I,j)}else vt(I);te({fetchers:new Map(w.fetchers)})}function J(I){let j=B.get(I);xe(j,"Expected fetch controller: "+I),j.abort(),B.delete(I)}function at(I){for(let j of I){let A=wt(j),Y=_r(A.data);w.fetchers.set(j,Y)}}function mn(){let I=[],j=!1;for(let A of ne){let Y=w.fetchers.get(A);xe(Y,"Expected fetcher: "+A),Y.state==="loading"&&(ne.delete(A),I.push(A),j=!0)}return at(I),j}function Gt(I){let j=[];for(let[A,Y]of H)if(Y0}function oe(I,j){let A=w.blockers.get(I)||ta;return K.get(I)!==j&&K.set(I,j),A}function je(I){w.blockers.delete(I),K.delete(I)}function De(I,j){let A=w.blockers.get(I)||ta;xe(A.state==="unblocked"&&j.state==="blocked"||A.state==="blocked"&&j.state==="blocked"||A.state==="blocked"&&j.state==="proceeding"||A.state==="blocked"&&j.state==="unblocked"||A.state==="proceeding"&&j.state==="unblocked","Invalid blocker state transition: "+A.state+" -> "+j.state);let Y=new Map(w.blockers);Y.set(I,j),te({blockers:Y})}function rn(I){let{currentLocation:j,nextLocation:A,historyAction:Y}=I;if(K.size===0)return;K.size>1&&jo(!1,"A router only supports one blocker at a time");let Z=Array.from(K.entries()),[Se,pe]=Z[Z.length-1],ce=w.blockers.get(Se);if(!(ce&&ce.state==="proceeding")&&pe({currentLocation:j,nextLocation:A,historyAction:Y}))return Se}function pr(I){let j=[];return ue.forEach((A,Y)=>{(!I||I(Y))&&(A.cancel(),j.push(Y),ue.delete(Y))}),j}function Fs(I,j,A){if(p=I,y=j,b=A||null,!x&&w.navigation===cd){x=!0;let Y=Us(w.location,w.matches);Y!=null&&te({restoreScrollPosition:Y})}return()=>{p=null,y=null,b=null}}function Ws(I,j){return b&&b(I,j.map(Y=>yw(Y,w.loaderData)))||I.key}function _c(I,j){if(p&&y){let A=Ws(I,j);p[A]=y()}}function Us(I,j){if(p){let A=Ws(I,j),Y=p[A];if(typeof Y=="number")return Y}return null}function Hs(I){i={},s=vf(I,o,void 0,i)}return E={get basename(){return l},get future(){return u},get state(){return w},get routes(){return a},get window(){return t},initialize:me,subscribe:Be,enableScrollRestoration:Fs,navigate:ge,fetch:it,revalidate:Te,createHref:I=>e.history.createHref(I),encodeLocation:I=>e.history.encodeLocation(I),getFetcher:wt,deleteFetcher:Me,dispose:de,getBlocker:oe,deleteBlocker:je,_internalFetchControllers:B,_internalActiveDeferreds:ue,_internalSetRoutes:Hs},E}function Vw(e){return e!=null&&("formData"in e&&e.formData!=null||"body"in e&&e.body!==void 0)}function yf(e,t,n,r,o,i,a,s){let l,u;if(a){l=[];for(let f of t)if(l.push(f),f.route.id===a){u=f;break}}else l=t,u=t[t.length-1];let c=Np(o||".",Op(l,i),Vn(e.pathname,n)||e.pathname,s==="path");return o==null&&(c.search=e.search,c.hash=e.hash),(o==null||o===""||o===".")&&u&&u.route.index&&!Bp(c.search)&&(c.search=c.search?c.search.replace(/^\?/,"?index&"):"?index"),r&&n!=="/"&&(c.pathname=c.pathname==="/"?n:rr([n,c.pathname])),oo(c)}function Km(e,t,n,r){if(!r||!Vw(r))return{path:n};if(r.formMethod&&!Zw(r.formMethod))return{path:n,error:gn(405,{method:r.formMethod})};let o=()=>({path:n,error:gn(400,{type:"invalid-body"})}),i=r.formMethod||"get",a=e?i.toUpperCase():i.toLowerCase(),s=Yy(n);if(r.body!==void 0){if(r.formEncType==="text/plain"){if(!Dn(a))return o();let p=typeof r.body=="string"?r.body:r.body instanceof FormData||r.body instanceof URLSearchParams?Array.from(r.body.entries()).reduce((b,y)=>{let[x,k]=y;return""+b+x+"="+k+` +`},""):String(r.body);return{path:n,submission:{formMethod:a,formAction:s,formEncType:r.formEncType,formData:void 0,json:void 0,text:p}}}else if(r.formEncType==="application/json"){if(!Dn(a))return o();try{let p=typeof r.body=="string"?JSON.parse(r.body):r.body;return{path:n,submission:{formMethod:a,formAction:s,formEncType:r.formEncType,formData:void 0,json:p,text:void 0}}}catch{return o()}}}xe(typeof FormData=="function","FormData is not available in this environment");let l,u;if(r.formData)l=xf(r.formData),u=r.formData;else if(r.body instanceof FormData)l=xf(r.body),u=r.body;else if(r.body instanceof URLSearchParams)l=r.body,u=qm(l);else if(r.body==null)l=new URLSearchParams,u=new FormData;else try{l=new URLSearchParams(r.body),u=qm(l)}catch{return o()}let c={formMethod:a,formAction:s,formEncType:r&&r.formEncType||"application/x-www-form-urlencoded",formData:u,json:void 0,text:void 0};if(Dn(c.formMethod))return{path:n,submission:c};let f=Mr(n);return t&&f.search&&Bp(f.search)&&l.append("index",""),f.search="?"+l,{path:oo(f),submission:c}}function Kw(e,t){let n=e;if(t){let r=e.findIndex(o=>o.route.id===t);r>=0&&(n=e.slice(0,r))}return n}function Gm(e,t,n,r,o,i,a,s,l,u,c,f,p,b,y,x){let k=x?Object.values(x)[0]:y?Object.values(y)[0]:void 0,h=e.createURL(t.location),g=e.createURL(o),v=x?Object.keys(x)[0]:void 0,E=Kw(n,v).filter((R,P)=>{let{route:$}=R;if($.lazy)return!0;if($.loader==null)return!1;if(i)return $.loader.hydrate?!0:t.loaderData[$.id]===void 0&&(!t.errors||t.errors[$.id]===void 0);if(Gw(t.loaderData,t.matches[P],R)||s.some(_=>_===R.route.id))return!0;let T=t.matches[P],L=R;return Ym(R,dt({currentUrl:h,currentParams:T.params,nextUrl:g,nextParams:L.params},r,{actionResult:k,defaultShouldRevalidate:a||h.pathname+h.search===g.pathname+g.search||h.search!==g.search||Gy(T,L)}))}),w=[];return c.forEach((R,P)=>{if(i||!n.some(O=>O.route.id===R.routeId)||u.has(P))return;let $=ci(p,R.path,b);if(!$){w.push({key:P,routeId:R.routeId,path:R.path,matches:null,match:null,controller:null});return}let T=t.fetchers.get(P),L=bf($,R.path),_=!1;f.has(P)?_=!1:l.includes(P)?_=!0:T&&T.state!=="idle"&&T.data===void 0?_=a:_=Ym(L,dt({currentUrl:h,currentParams:t.matches[t.matches.length-1].params,nextUrl:g,nextParams:n[n.length-1].params},r,{actionResult:k,defaultShouldRevalidate:a})),_&&w.push({key:P,routeId:R.routeId,path:R.path,matches:$,match:L,controller:new AbortController})}),[E,w]}function Gw(e,t,n){let r=!t||n.route.id!==t.route.id,o=e[n.route.id]===void 0;return r||o}function Gy(e,t){let n=e.route.path;return e.pathname!==t.pathname||n!=null&&n.endsWith("*")&&e.params["*"]!==t.params["*"]}function Ym(e,t){if(e.route.shouldRevalidate){let n=e.route.shouldRevalidate(t);if(typeof n=="boolean")return n}return t.defaultShouldRevalidate}async function Xm(e,t,n){if(!e.lazy)return;let r=await e.lazy();if(!e.lazy)return;let o=n[e.id];xe(o,"No route found in manifest");let i={};for(let a in r){let l=o[a]!==void 0&&a!=="hasErrorBoundary";jo(!l,'Route "'+o.id+'" has a static property "'+a+'" defined but its lazy function is also returning a value for this property. '+('The lazy route property "'+a+'" will be ignored.')),!l&&!gw.has(a)&&(i[a]=r[a])}Object.assign(o,i),Object.assign(o,dt({},t(o),{lazy:void 0}))}async function na(e,t,n,r,o,i,a,s,l){l===void 0&&(l={});let u,c,f,p=x=>{let k,h=new Promise((g,v)=>k=v);return f=()=>k(),t.signal.addEventListener("abort",f),Promise.race([x({request:t,params:n.params,context:l.requestContext}),h])};try{let x=n.route[e];if(n.route.lazy)if(x){let k,h=await Promise.all([p(x).catch(g=>{k=g}),Xm(n.route,i,o)]);if(k)throw k;c=h[0]}else if(await Xm(n.route,i,o),x=n.route[e],x)c=await p(x);else if(e==="action"){let k=new URL(t.url),h=k.pathname+k.search;throw gn(405,{method:t.method,pathname:h,routeId:n.route.id})}else return{type:ut.data,data:void 0};else if(x)c=await p(x);else{let k=new URL(t.url),h=k.pathname+k.search;throw gn(404,{pathname:h})}xe(c!==void 0,"You defined "+(e==="action"?"an action":"a loader")+" for route "+('"'+n.route.id+"\" but didn't return anything from your `"+e+"` ")+"function. Please return a value or `null`.")}catch(x){u=ut.error,c=x}finally{f&&t.signal.removeEventListener("abort",f)}if(Qw(c)){let x=c.status;if(zw.has(x)){let h=c.headers.get("Location");if(xe(h,"Redirects returned/thrown from loaders/actions must have a Location header"),!Vy.test(h))h=yf(new URL(t.url),r.slice(0,r.indexOf(n)+1),a,!0,h,s);else if(!l.isStaticRequest){let g=new URL(t.url),v=h.startsWith("//")?new URL(g.protocol+h):new URL(h),S=Vn(v.pathname,a)!=null;v.origin===g.origin&&S&&(h=v.pathname+v.search+v.hash)}if(l.isStaticRequest)throw c.headers.set("Location",h),c;return{type:ut.redirect,status:x,location:h,revalidate:c.headers.get("X-Remix-Revalidate")!==null,reloadDocument:c.headers.get("X-Remix-Reload-Document")!==null}}if(l.isRouteRequest)throw{type:u===ut.error?ut.error:ut.data,response:c};let k;try{let h=c.headers.get("Content-Type");h&&/\bapplication\/json\b/.test(h)?c.body==null?k=null:k=await c.json():k=await c.text()}catch(h){return{type:ut.error,error:h}}return u===ut.error?{type:u,error:new _p(x,c.statusText,k),headers:c.headers}:{type:ut.data,data:k,statusCode:c.status,headers:c.headers}}if(u===ut.error)return{type:u,error:c};if(qw(c)){var b,y;return{type:ut.deferred,deferredData:c,statusCode:(b=c.init)==null?void 0:b.status,headers:((y=c.init)==null?void 0:y.headers)&&new Headers(c.init.headers)}}return{type:ut.data,data:c}}function ra(e,t,n,r){let o=e.createURL(Yy(t)).toString(),i={signal:n};if(r&&Dn(r.formMethod)){let{formMethod:a,formEncType:s}=r;i.method=a.toUpperCase(),s==="application/json"?(i.headers=new Headers({"Content-Type":s}),i.body=JSON.stringify(r.json)):s==="text/plain"?i.body=r.text:s==="application/x-www-form-urlencoded"&&r.formData?i.body=xf(r.formData):i.body=r.formData}return new Request(o,i)}function xf(e){let t=new URLSearchParams;for(let[n,r]of e.entries())t.append(n,typeof r=="string"?r:r.name);return t}function qm(e){let t=new FormData;for(let[n,r]of e.entries())t.append(n,r);return t}function Yw(e,t,n,r,o){let i={},a=null,s,l=!1,u={};return n.forEach((c,f)=>{let p=t[f].route.id;if(xe(!Co(c),"Cannot handle redirect results in processLoaderData"),di(c)){let b=_a(e,p),y=c.error;r&&(y=Object.values(r)[0],r=void 0),a=a||{},a[b.route.id]==null&&(a[b.route.id]=y),i[p]=void 0,l||(l=!0,s=Uy(c.error)?c.error.status:500),c.headers&&(u[p]=c.headers)}else wo(c)?(o.set(p,c.deferredData),i[p]=c.deferredData.data):i[p]=c.data,c.statusCode!=null&&c.statusCode!==200&&!l&&(s=c.statusCode),c.headers&&(u[p]=c.headers)}),r&&(a=r,i[Object.keys(r)[0]]=void 0),{loaderData:i,errors:a,statusCode:s||200,loaderHeaders:u}}function Qm(e,t,n,r,o,i,a,s){let{loaderData:l,errors:u}=Yw(t,n,r,o,s);for(let c=0;cr.route.id===t)+1):[...e]).reverse().find(r=>r.route.hasErrorBoundary===!0)||e[0]}function Jm(e){let t=e.length===1?e[0]:e.find(n=>n.index||!n.path||n.path==="/")||{id:"__shim-error-route__"};return{matches:[{params:{},pathname:"",pathnameBase:"",route:t}],route:t}}function gn(e,t){let{pathname:n,routeId:r,method:o,type:i}=t===void 0?{}:t,a="Unknown Server Error",s="Unknown @remix-run/router error";return e===400?(a="Bad Request",o&&n&&r?s="You made a "+o+' request to "'+n+'" but '+('did not provide a `loader` for route "'+r+'", ')+"so there is no way to handle the request.":i==="defer-action"?s="defer() is not supported in actions":i==="invalid-body"&&(s="Unable to encode submission body")):e===403?(a="Forbidden",s='Route "'+r+'" does not match URL "'+n+'"'):e===404?(a="Not Found",s='No route matches URL "'+n+'"'):e===405&&(a="Method Not Allowed",o&&n&&r?s="You made a "+o.toUpperCase()+' request to "'+n+'" but '+('did not provide an `action` for route "'+r+'", ')+"so there is no way to handle the request.":o&&(s='Invalid request method "'+o.toUpperCase()+'"')),new _p(e||500,a,new Error(s),!0)}function eg(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(Co(n))return{result:n,idx:t}}}function Yy(e){let t=typeof e=="string"?Mr(e):e;return oo(dt({},t,{hash:""}))}function Xw(e,t){return e.pathname!==t.pathname||e.search!==t.search?!1:e.hash===""?t.hash!=="":e.hash===t.hash?!0:t.hash!==""}function wo(e){return e.type===ut.deferred}function di(e){return e.type===ut.error}function Co(e){return(e&&e.type)===ut.redirect}function qw(e){let t=e;return t&&typeof t=="object"&&typeof t.data=="object"&&typeof t.subscribe=="function"&&typeof t.cancel=="function"&&typeof t.resolveData=="function"}function Qw(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.headers=="object"&&typeof e.body<"u"}function Zw(e){return Dw.has(e.toLowerCase())}function Dn(e){return Bw.has(e.toLowerCase())}async function tg(e,t,n,r,o,i){for(let a=0;af.route.id===l.route.id),c=u!=null&&!Gy(u,l)&&(i&&i[l.route.id])!==void 0;if(wo(s)&&(o||c)){let f=r[a];xe(f,"Expected an AbortSignal for revalidating fetcher deferred result"),await Xy(s,f,o).then(p=>{p&&(n[a]=p||n[a])})}}}async function Xy(e,t,n){if(n===void 0&&(n=!1),!await e.deferredData.resolveData(t)){if(n)try{return{type:ut.data,data:e.deferredData.unwrappedData}}catch(o){return{type:ut.error,error:o}}return{type:ut.data,data:e.deferredData.data}}}function Bp(e){return new URLSearchParams(e).getAll("index").some(t=>t==="")}function bf(e,t){let n=typeof t=="string"?Mr(t).search:t.search;if(e[e.length-1].route.index&&Bp(n||""))return e[e.length-1];let r=Wy(e);return r[r.length-1]}function ng(e){let{formMethod:t,formAction:n,formEncType:r,text:o,formData:i,json:a}=e;if(!(!t||!n||!r)){if(o!=null)return{formMethod:t,formAction:n,formEncType:r,formData:void 0,json:void 0,text:o};if(i!=null)return{formMethod:t,formAction:n,formEncType:r,formData:i,json:void 0,text:void 0};if(a!==void 0)return{formMethod:t,formAction:n,formEncType:r,formData:void 0,json:a,text:void 0}}}function dd(e,t){return t?{state:"loading",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}:{state:"loading",location:e,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0}}function Jw(e,t){return{state:"submitting",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}}function oa(e,t){return e?{state:"loading",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t}:{state:"loading",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:t}}function eC(e,t){return{state:"submitting",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t?t.data:void 0}}function _r(e){return{state:"idle",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:e}}function tC(e,t){try{let n=e.sessionStorage.getItem(Ky);if(n){let r=JSON.parse(n);for(let[o,i]of Object.entries(r||{}))i&&Array.isArray(i)&&t.set(o,new Set(i||[]))}}catch{}}function nC(e,t){if(t.size>0){let n={};for(let[r,o]of t)n[r]=[...o];try{e.sessionStorage.setItem(Ky,JSON.stringify(n))}catch(r){jo(!1,"Failed to save applied view transitions in sessionStorage ("+r+").")}}}/** + * React Router v6.22.0 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function us(){return us=Object.assign?Object.assign.bind():function(e){for(var t=1;t{s.current=!0}),m.useCallback(function(u,c){if(c===void 0&&(c={}),!s.current)return;if(typeof u=="number"){r.go(u);return}let f=Np(u,JSON.parse(a),i,c.relative==="path");e==null&&t!=="/"&&(f.pathname=f.pathname==="/"?t:rr([t,f.pathname])),(c.replace?r.replace:r.push)(f,c.state,c)},[t,r,a,i,e])}const iC=m.createContext(null);function aC(e){let t=m.useContext(dr).outlet;return t&&m.createElement(iC.Provider,{value:e},t)}function sC(){let{matches:e}=m.useContext(dr),t=e[e.length-1];return t?t.params:{}}function $s(e,t){let{relative:n}=t===void 0?{}:t,{future:r}=m.useContext(cr),{matches:o}=m.useContext(dr),{pathname:i}=zo(),a=JSON.stringify(Op(o,r.v7_relativeSplatPath));return m.useMemo(()=>Np(e,JSON.parse(a),i,n==="path"),[e,a,i,n])}function lC(e,t){return Jy(e,t)}function Jy(e,t,n,r){Ts()||xe(!1);let{navigator:o}=m.useContext(cr),{matches:i}=m.useContext(dr),a=i[i.length-1],s=a?a.params:{};a&&a.pathname;let l=a?a.pathnameBase:"/";a&&a.route;let u=zo(),c;if(t){var f;let k=typeof t=="string"?Mr(t):t;l==="/"||(f=k.pathname)!=null&&f.startsWith(l)||xe(!1),c=k}else c=u;let p=c.pathname||"/",b=l==="/"?p:p.slice(l.length)||"/",y=ci(e,{pathname:b}),x=pC(y&&y.map(k=>Object.assign({},k,{params:Object.assign({},s,k.params),pathname:rr([l,o.encodeLocation?o.encodeLocation(k.pathname).pathname:k.pathname]),pathnameBase:k.pathnameBase==="/"?l:rr([l,o.encodeLocation?o.encodeLocation(k.pathnameBase).pathname:k.pathnameBase])})),i,n,r);return t&&x?m.createElement(Bu.Provider,{value:{location:us({pathname:"/",search:"",hash:"",state:null,key:"default"},c),navigationType:ft.Pop}},x):x}function uC(){let e=t1(),t=Uy(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,o={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"},i=null;return m.createElement(m.Fragment,null,m.createElement("h2",null,"Unexpected Application Error!"),m.createElement("h3",{style:{fontStyle:"italic"}},t),n?m.createElement("pre",{style:o},n):null,i)}const cC=m.createElement(uC,null);class dC extends m.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,n){return n.location!==t.location||n.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:n.error,location:n.location,revalidation:t.revalidation||n.revalidation}}componentDidCatch(t,n){console.error("React Router caught the following error during render",t,n)}render(){return this.state.error!==void 0?m.createElement(dr.Provider,{value:this.props.routeContext},m.createElement(qy.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function fC(e){let{routeContext:t,match:n,children:r}=e,o=m.useContext(Ps);return o&&o.static&&o.staticContext&&(n.route.errorElement||n.route.ErrorBoundary)&&(o.staticContext._deepestRenderedBoundaryId=n.route.id),m.createElement(dr.Provider,{value:t},r)}function pC(e,t,n,r){var o;if(t===void 0&&(t=[]),n===void 0&&(n=null),r===void 0&&(r=null),e==null){var i;if((i=n)!=null&&i.errors)e=n.matches;else return null}let a=e,s=(o=n)==null?void 0:o.errors;if(s!=null){let c=a.findIndex(f=>f.route.id&&(s==null?void 0:s[f.route.id]));c>=0||xe(!1),a=a.slice(0,Math.min(a.length,c+1))}let l=!1,u=-1;if(n&&r&&r.v7_partialHydration)for(let c=0;c=0?a=a.slice(0,u+1):a=[a[0]];break}}}return a.reduceRight((c,f,p)=>{let b,y=!1,x=null,k=null;n&&(b=s&&f.route.id?s[f.route.id]:void 0,x=f.route.errorElement||cC,l&&(u<0&&p===0?(xC("route-fallback",!1),y=!0,k=null):u===p&&(y=!0,k=f.route.hydrateFallbackElement||null)));let h=t.concat(a.slice(0,p+1)),g=()=>{let v;return b?v=x:y?v=k:f.route.Component?v=m.createElement(f.route.Component,null):f.route.element?v=f.route.element:v=c,m.createElement(fC,{match:f,routeContext:{outlet:c,matches:h,isDataRoute:n!=null},children:v})};return n&&(f.route.ErrorBoundary||f.route.errorElement||p===0)?m.createElement(dC,{location:n.location,revalidation:n.revalidation,component:x,error:b,children:g(),routeContext:{outlet:null,matches:h,isDataRoute:!0}}):g()},null)}var e1=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(e1||{}),cs=function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e}(cs||{});function hC(e){let t=m.useContext(Ps);return t||xe(!1),t}function mC(e){let t=m.useContext(Ap);return t||xe(!1),t}function gC(e){let t=m.useContext(dr);return t||xe(!1),t}function Dp(e){let t=gC(),n=t.matches[t.matches.length-1];return n.route.id||xe(!1),n.route.id}function vC(){return Dp(cs.UseRouteId)}function t1(){var e;let t=m.useContext(qy),n=mC(cs.UseRouteError),r=Dp(cs.UseRouteError);return t!==void 0?t:(e=n.errors)==null?void 0:e[r]}function yC(){let{router:e}=hC(e1.UseNavigateStable),t=Dp(cs.UseNavigateStable),n=m.useRef(!1);return Qy(()=>{n.current=!0}),m.useCallback(function(o,i){i===void 0&&(i={}),n.current&&(typeof o=="number"?e.navigate(o):e.navigate(o,us({fromRouteId:t},i)))},[e,t])}const rg={};function xC(e,t,n){!t&&!rg[e]&&(rg[e]=!0)}function bC(e){return aC(e.context)}function mr(e){xe(!1)}function wC(e){let{basename:t="/",children:n=null,location:r,navigationType:o=ft.Pop,navigator:i,static:a=!1,future:s}=e;Ts()&&xe(!1);let l=t.replace(/^\/*/,"/"),u=m.useMemo(()=>({basename:l,navigator:i,static:a,future:us({v7_relativeSplatPath:!1},s)}),[l,s,i,a]);typeof r=="string"&&(r=Mr(r));let{pathname:c="/",search:f="",hash:p="",state:b=null,key:y="default"}=r,x=m.useMemo(()=>{let k=Vn(c,l);return k==null?null:{location:{pathname:k,search:f,hash:p,state:b,key:y},navigationType:o}},[l,c,f,p,b,y,o]);return x==null?null:m.createElement(cr.Provider,{value:u},m.createElement(Bu.Provider,{children:n,value:x}))}function CC(e){let{children:t,location:n}=e;return lC(wf(t),n)}new Promise(()=>{});function wf(e,t){t===void 0&&(t=[]);let n=[];return m.Children.forEach(e,(r,o)=>{if(!m.isValidElement(r))return;let i=[...t,o];if(r.type===m.Fragment){n.push.apply(n,wf(r.props.children,i));return}r.type!==mr&&xe(!1),!r.props.index||!r.props.children||xe(!1);let a={id:r.props.id||i.join("-"),caseSensitive:r.props.caseSensitive,element:r.props.element,Component:r.props.Component,index:r.props.index,path:r.props.path,loader:r.props.loader,action:r.props.action,errorElement:r.props.errorElement,ErrorBoundary:r.props.ErrorBoundary,hasErrorBoundary:r.props.ErrorBoundary!=null||r.props.errorElement!=null,shouldRevalidate:r.props.shouldRevalidate,handle:r.props.handle,lazy:r.props.lazy};r.props.children&&(a.children=wf(r.props.children,i)),n.push(a)}),n}function SC(e){let t={hasErrorBoundary:e.ErrorBoundary!=null||e.errorElement!=null};return e.Component&&Object.assign(t,{element:m.createElement(e.Component),Component:void 0}),e.HydrateFallback&&Object.assign(t,{hydrateFallbackElement:m.createElement(e.HydrateFallback),HydrateFallback:void 0}),e.ErrorBoundary&&Object.assign(t,{errorElement:m.createElement(e.ErrorBoundary),ErrorBoundary:void 0}),t}/** + * React Router DOM v6.22.0 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function io(){return io=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&(n[o]=e[o]);return n}const Il="get",fd="application/x-www-form-urlencoded";function Au(e){return e!=null&&typeof e.tagName=="string"}function kC(e){return Au(e)&&e.tagName.toLowerCase()==="button"}function RC(e){return Au(e)&&e.tagName.toLowerCase()==="form"}function EC(e){return Au(e)&&e.tagName.toLowerCase()==="input"}function PC(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function TC(e,t){return e.button===0&&(!t||t==="_self")&&!PC(e)}let ul=null;function $C(){if(ul===null)try{new FormData(document.createElement("form"),0),ul=!1}catch{ul=!0}return ul}const MC=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function pd(e){return e!=null&&!MC.has(e)?null:e}function IC(e,t){let n,r,o,i,a;if(RC(e)){let s=e.getAttribute("action");r=s?Vn(s,t):null,n=e.getAttribute("method")||Il,o=pd(e.getAttribute("enctype"))||fd,i=new FormData(e)}else if(kC(e)||EC(e)&&(e.type==="submit"||e.type==="image")){let s=e.form;if(s==null)throw new Error('Cannot submit a