{"{{count}} requests_one":"{{count}} request","{{count}} requests_other":"{{count}} requests","{{count}} unread notifications_one":"{{count}} unread notification","{{count}} unread notifications_other":"{{count}} unread notifications","Disabling the Context Engine for this group will affect {{count}} opted-in user(s). Are you sure?_one":"Disabling the Context Engine for this group will affect {{count}} opted-in user. Are you sure?","Disabling the Context Engine for this group will affect {{count}} opted-in user(s). Are you sure?_other":"Disabling the Context Engine for this group will affect {{count}} opted-in users. Are you sure?","Left Quota":"Remaining Quota","Cache read / cache write tokens for this request. Cache accounting is applied on the billing side. The usage block in API responses reports your prompt as counted by the tokenizer and does not include cache buckets.":"Cache read / cache write tokens for this request. Cache accounting is applied on the billing side. The usage block in API responses reports your prompt as counted by the tokenizer and does not include cached tokens.","Off = session usage is tracked but never blocks requests.":"Off = this group's session quota doesn't block requests — it only suggests a default spend limit. A user's own session cap still applies.","Off = daily usage is tracked but never blocks requests.":"Off = this group's daily quota doesn't block requests — it only suggests a default spend limit. A user's own daily cap still applies.","Off = weekly usage is tracked but never blocks requests.":"Off = this group's weekly quota doesn't block requests — it only suggests a default spend limit. A user's own weekly cap still applies.","Move {{count}} users to group \"{{group}}\"?_one":"Move {{count}} user to group \"{{group}}\"?","Move {{count}} users to group \"{{group}}\"?_other":"Move {{count}} users to group \"{{group}}\"?","Failed to update {{count}} users_one":"Failed to update {{count}} user","Failed to update {{count}} users_other":"Failed to update {{count}} users","Support Models":"Supported Models","Unselect All":"Deselect All","API key entries is required.":"API key entries are required.","Are you sure you want to {{action}} {{count}} model mapping(s)?_one":"Are you sure you want to {{action}} {{count}} model mapping?","Are you sure you want to {{action}} {{count}} model mapping(s)?_other":"Are you sure you want to {{action}} {{count}} model mappings?","Selected {{count}} model mapping(s)_one":"Selected {{count}} model mapping","Selected {{count}} model mapping(s)_other":"Selected {{count}} model mappings","Operator-defined credits groups":"Operator-assigned access and pricing policy, independent of Rank. Raises credits-rail capacity; the highest price multiplier wins","Enter to configure":"Enter a value to configure","register_conflict_exit":"An account with this username or email may already exist. <login>Log in</login> or <reset>reset your password</reset>.","register_terms_agreement":"I agree to the <tos>Terms of Service</tos> and <privacy>Privacy Policy</privacy>.","From (issuer)":"From","table.columns.button":"Columns","table.columns.menuLabel":"Toggle column visibility","table.columns.search":"Search columns","table.columns.showAll":"Show all","table.columns.hideAll":"Hide all","table.columns.empty":"No columns found","table.density.button":"Density","table.density.menuLabel":"Row density","table.density.compact":"Compact","table.density.normal":"Normal","table.density.comfortable":"Comfortable","table.export.button":"Export","table.export.title":"Export data","table.export.scope_label":"Rows to export","table.export.scope_current":"Current page","table.export.scope_all":"All rows","table.export.include_headers":"Include headers","table.export.selected_only":"Selected only","table.export.csv":"Export as CSV","table.export.json":"Export as JSON","table.export.empty":"No rows to export","table.bulk.actions_label":"Bulk actions","table.bulk.{{count}} selected":"{{count}} selected","table.bulk.clear":"Clear selection","table.pagination.navigation":"Pagination","table.pagination.rows_per_page":"Rows per page","table.pagination.page_of":"Page {{page}} of {{total}}","table.pagination.showing":"Showing","table.pagination.of":"of","table.pagination.no_results":"No results","table.pagination.first_page":"First page","table.pagination.previous_page":"Previous page","table.pagination.next_page":"Next page","table.pagination.last_page":"Last page","table.pagination.go_to_page":"Go to page","table.toolbar.label":"Table toolbar","table.toolbar.search":"Search","table.toolbar.search_placeholder":"Search","table.toolbar.clear_search":"Clear search","table.toolbar.export_csv":"Export CSV","table.toolbar.export_json":"Export JSON","table.datatable.caption_default":"Data table","table.datatable.select_all":"Select all rows","table.datatable.select_row":"Select row","table.datatable.loading":"Loading","table.datatable.empty":"No data","table.datatable.error_title":"Something went wrong","table.datatable.card_list_truncated":"Showing first {{shown}} of {{total}} rows — narrow your filters to see the rest.","table.actions.more":"More actions","table.filters.active_filters":"Active filters","table.filters.add_filter":"Add filter","table.filters.clear_all":"Clear all","table.filters.active_filter":"Active filter","table.filters.remove_filter":"Remove filter","table.filters.select_field":"Select field","table.filters.select_operator":"Select operator","table.filters.enter_value":"Enter value","table.filters.from":"From","table.filters.to":"To","table.filters.select_option":"Select","table.filters.apply":"Apply","table.filters.load_preset":"Load saved filter","table.filters.save_preset":"Save filter","table.filters.save_current_filters":"Save current filters","table.filters.preset_name_placeholder":"Enter filter name","forms.validation.required":"This field is required","forms.validation.invalid_email":"Enter a valid email address","forms.validation.invalid_url":"Enter a valid URL","forms.validation.min_length_{{min}}":"Must be at least {{min}} characters","forms.validation.max_length_{{max}}":"Must be at most {{max}} characters","forms.validation.pattern":"Invalid format","forms.validation.invalid_number":"Enter a valid number","forms.validation.integer":"Must be a whole number","forms.validation.positive":"Must be greater than zero","forms.validation.min_{{min}}":"Must be at least {{min}}","forms.validation.max_{{max}}":"Must be at most {{max}}","forms.validation.invalid_option":"Select a valid option","forms.validation.invalid_value":"Invalid value","forms.validation.array_min_{{min}}":"Select at least {{min}} item(s)","forms.validation.array_min_{{min}}_one":"Select at least {{min}} item","forms.validation.array_min_{{min}}_other":"Select at least {{min}} items","forms.validation.array_max_{{max}}":"Select at most {{max}} item(s)","forms.validation.array_max_{{max}}_one":"Select at most {{max}} item","forms.validation.array_max_{{max}}_other":"Select at most {{max}} items","forms.validation.password_min_{{min}}":"Password must be at least {{min}} characters","forms.validation.password_uppercase":"Include at least one uppercase letter","forms.validation.password_lowercase":"Include at least one lowercase letter","forms.validation.password_digit":"Include at least one number","forms.validation.password_special":"Include at least one special character","forms.fields.required":"required","forms.modal.close":"Close","forms.wizard.progress":"Progress","forms.wizard.completed":"completed","forms.wizard.step_{{current}}_of_{{total}}":"Step {{current}} of {{total}}","forms.wizard.cancel":"Cancel","forms.wizard.back":"Back","forms.wizard.next":"Next","forms.wizard.finish":"Finish","forms.select.placeholder":"Select","forms.select.no_options":"No options","forms.select.clear":"Clear selection","forms.select.count_selected_{{count}}":"{{count}} selected","forms.inlineedit.edit_{{label}}":"Edit {{label}}","forms.inlineedit.save":"Save","forms.inlineedit.cancel":"Cancel","forms.inlineedit.saving":"Saving","forms.inlineedit.error":"Could not save your change. Please try again.","forms.inlineedit.empty":"Empty","forms.draft.unsavedChangesFound":"Unsaved changes found","forms.draft.draftFrom":"You have a draft from {{time}}","forms.draft.restore":"Restore","forms.draft.discard":"Discard","forms.draft.savingDraft":"Saving draft","forms.draft.draftSaved":"Draft saved {{time}}","forms.draft.unsavedChanges":"Unsaved changes","forms.draft.leave":"Leave","charts.status.rate_limited":"Rate Limited","settings.group.security":"Security","settings.group.preferences":"Preferences","settings.group.preferencesDesc":"Control how your account behaves.","settings.securityScore.title":"Security score","settings.securityScore.desc":"An overview of how well your account is protected.","settings.securityScore.level.low":"Needs attention","settings.securityScore.level.medium":"Good","settings.securityScore.level.high":"Excellent","settings.securityScore.factor.password":"Account password","settings.securityScore.factor.totp":"Authenticator app (TOTP)","settings.securityScore.factor.passkey":"Passkey","settings.securityScore.recommendationsTitle":"Recommendations","settings.securityScore.recommend.totp":"Set up an authenticator app (TOTP).","settings.securityScore.recommend.passkey":"Add a passkey for passwordless sign-in.","settings.securityScore.allGood":"All recommended protections are enabled.","settings.passwordStrength.label":"Password strength","settings.passwordStrength.veryWeak":"Very weak","settings.passwordStrength.weak":"Weak","settings.passwordStrength.fair":"Fair","settings.passwordStrength.good":"Good","settings.passwordStrength.strong":"Strong","settings.passwordCriteria.title":"Password must include","settings.passwordCriteria.length":"At least 8 characters","settings.passwordCriteria.lower":"A lowercase letter","settings.passwordCriteria.upper":"An uppercase letter","settings.passwordCriteria.digit":"A number","settings.passwordCriteria.symbol":"A symbol","settings.passwordCriteria.met":"met","settings.passwordCriteria.notMet":"not met","common.save":"Save","common.cancel":"Cancel","headersWatchdog.title":"Per-provider headers watchdog","headersWatchdog.seconds":"Headers watchdog (seconds)","headersWatchdog.mode":"Headers watchdog mode","{{count}} widgets_one":"{{count}} widget","{{count}} widgets_other":"{{count}} widgets","Updated {{count}} model(s) successfully_one":"Updated {{count}} model successfully","Updated {{count}} model(s) successfully_other":"Updated {{count}} models successfully","This will update the display group for {{count}} model(s)._one":"This will update the display group for {{count}} model.","This will update the display group for {{count}} model(s)._other":"This will update the display group for {{count}} models.","Preview: {{count}} model(s) affected_one":"Preview: {{count}} model affected","Preview: {{count}} model(s) affected_other":"Preview: {{count}} models affected","Are you sure you want to {{action}} {{count}} model(s)?_one":"Are you sure you want to {{action}} {{count}} model?","Are you sure you want to {{action}} {{count}} model(s)?_other":"Are you sure you want to {{action}} {{count}} models?","Business settings":"Business","models.priceChip.input":"Input","models.priceChip.output":"Output","models.priceChip.cacheRead":"Cache","models.priceChip.cacheWrite":"Write","Plan {{plan}} expires in {{days}} day(s) ({{date}})._one":"Plan {{plan}} expires in {{days}} day ({{date}}).","Plan {{plan}} expires in {{days}} day(s) ({{date}})._other":"Plan {{plan}} expires in {{days}} days ({{date}}).","Plan {{plan}} expires in {{days}} day(s)._one":"Plan {{plan}} expires in {{days}} day.","Plan {{plan}} expires in {{days}} day(s)._other":"Plan {{plan}} expires in {{days}} days.","sale_code":"Sale code","auto_assigned":"Auto-assigned","manual":"Manual","reassigned":"Reassigned","active":"Active","disabled":"Disabled","suspended":"Suspended","inactive":"Inactive","check that all {{count}} are active":"→ check that all {{count}} are active","Invite sfast all accounts":"Invite SFast all accounts","invoiceSync.reason.portalRejected":"Portal rejected the request","invoiceSync.reason.orbRejected":"Orb rejected the request","invoiceSync.reason.storeWriteFailed":"Database write failed","invoiceSync.reason.accountLoadFailed":"Account could not be loaded","invoiceSync.reason.timeout":"Timed out","invoiceSync.reason.requestFailed":"Request failed","invoiceSync.reason.syncInProgress":"Sync already in progress","invoiceSync.phase.pending":"Sync queued, waiting for a worker","invoiceSync.phase.running":"Sync running in the background; leaving this page will not interrupt it","Commission payout is due for unpaid period(s): {{periods}}_one":"Commission payout is due for unpaid period: {{periods}}","Commission payout is due for unpaid period(s): {{periods}}_other":"Commission payout is due for unpaid periods: {{periods}}","plan.passTab.daily":"Daily","plan.passTab.weekly":"Weekly","plan.passTab.monthly":"Monthly","plan.passTab.freeGo":"Free Go","plan.passTab.unlimited":"Unlimited","pricing.tab.credits":"Flex","pricing.tab.daily":"Daily","pricing.tab.weekly":"Weekly","pricing.tab.monthly":"Monthly","pricing.tab.freeGo":"Free Go","pricing.tab.yearly":"Yearly","pricing.tab.unlimited":"∞ Unlimited","dash.errClass.client":"Client-caused errors today (4xx request errors, client cancellations) — not counted against upstream health","dash.errClass.relayGate":"Shed by the relay gate (slot / RPM) before the provider","dash.errClass.rateLimited":"HTTP 429 from the upstream provider","dash.errClass.upstream5xx":"Upstream 5xx, incl. model faults (broken turn from the provider)","dash.errClass.other":"Other upstream failures (credential 401/402/403, timeouts, …)","dash.relayGateDenials":"Relay-gate denials: {{today}} today · {{recent}} in {{w}} min — plan RPM 429, not counted in error rates · since {{since}}","You earn {{count}} ticket(s) each time a friend links Telegram._one":"You earn {{count}} ticket each time a friend links Telegram.","You earn {{count}} ticket(s) each time a friend links Telegram._other":"You earn {{count}} tickets each time a friend links Telegram.","{{remaining}} more qualified invite(s) to earn {{amount}} credits._one":"{{remaining}} more qualified invite to earn {{amount}} credits.","{{remaining}} more qualified invite(s) to earn {{amount}} credits._other":"{{remaining}} more qualified invites to earn {{amount}} credits.","Not enough daily quota headroom left for a session reset.":"You don't have enough daily usage left to buy a session reset.","Not enough weekly quota headroom left for a daily reset.":"You don't have enough weekly usage left to buy a daily reset.","logs.billingSource.plan":"Plan","logs.billingSource.free":"Free","logs.cacheFilter.title":"Cache","logs.cacheFilter.hit":"Hit","logs.cacheFilter.miss":"Miss","Cache read / cache write tokens for this request. A request counts as a cache hit when it has cache-read tokens; cache writes alone are not hits, and requests to models or routes without prompt caching count as misses. Cache accounting is applied on the billing side. The usage block in API responses reports your prompt as counted by the tokenizer and does not include cache buckets.":"Cache read / cache write tokens for this request. A request counts as a cache hit when it has cache-read tokens; cache writes alone are not hits, and requests to models or routes without prompt caching count as misses. Cache accounting is applied on the billing side. The usage block in API responses reports your prompt as counted by the tokenizer and does not include cached tokens.","You have {{amount}} credits left. Requests on {{count}} credit-billed API keys will be blocked once your balance reaches zero._one":"You have {{amount}} credits left. Requests on {{count}} credit-billed API key will be blocked once your balance reaches zero.","You have {{amount}} credits left. Requests on {{count}} credit-billed API keys will be blocked once your balance reaches zero._other":"You have {{amount}} credits left. Requests on {{count}} credit-billed API keys will be blocked once your balance reaches zero.","Your credit balance is empty, so requests on {{count}} credit-billed API keys are blocked._one":"Your credit balance is empty, so requests on {{count}} credit-billed API key are blocked.","Your credit balance is empty, so requests on {{count}} credit-billed API keys are blocked._other":"Your credit balance is empty, so requests on {{count}} credit-billed API keys are blocked.","{{count}} API keys are bound to a plan that is no longer active, so requests on those keys are blocked. Move them to an active plan or to credits._one":"{{count}} API key is bound to a plan that is no longer active, so requests on that key are blocked. Move it to an active plan or to credits.","{{count}} API keys are bound to a plan that is no longer active, so requests on those keys are blocked. Move them to an active plan or to credits._other":"{{count}} API keys are bound to a plan that is no longer active, so requests on those keys are blocked. Move them to an active plan or to credits.","At least {{count}} API keys are bound to a plan that is no longer active, so requests on those keys are blocked. Move them to an active plan or to credits._one":"At least {{count}} API key is bound to a plan that is no longer active, so requests on it are blocked. Move it to an active plan or to credits.","At least {{count}} API keys are bound to a plan that is no longer active, so requests on those keys are blocked. Move them to an active plan or to credits._other":"At least {{count}} API keys are bound to a plan that is no longer active, so requests on those keys are blocked. Move them to an active plan or to credits.","planFilter.creditsOnly":"Credits only (no plan)","planFilter.unclassified":"Unclassified","planFilter.unclassifiedHint":"Usage recorded before per-plan tracking.","pricing.tab.ariaLabel":"Pricing plans","{{count}} keys now use {{plan}}._one":"{{count}} key now uses {{plan}}.","{{count}} keys now use {{plan}}._other":"{{count}} keys now use {{plan}}.","Move {{count}} keys_one":"Move {{count}} key","Move {{count}} keys_other":"Move {{count}} keys","{{count}} of {{total}} keys could not be moved: {{reason}}_one":"{{count}} of {{total}} keys could not be moved: {{reason}}","{{count}} of {{total}} keys could not be moved: {{reason}}_other":"{{count}} of {{total}} keys could not be moved: {{reason}}","plan.passTab.flex":"Flex","plan.tabCaption.paid":"Official-grade models at full power — billed at the provider's official prices.","plan.tabCaption.freeGo":"For tasks that don't need a frontier model: translation, summarisation, OpenClaw-style bots… High daily volume at a flat price.","plan.flex.capByProviderCost":"Cap is measured by provider cost","plan.flex.noExpiry":"Never expires — use at your own pace","Up to {{count}} requests per second_one":"Up to {{count}} request per second","Up to {{count}} requests per second_other":"Up to {{count}} requests per second","Up to {{count}} requests per minute_one":"Up to {{count}} request per minute","Up to {{count}} requests per minute_other":"Up to {{count}} requests per minute","Up to {{count}} concurrent requests_one":"Up to {{count}} concurrent request","Up to {{count}} concurrent requests_other":"Up to {{count}} concurrent requests","{{count}} devices per day_one":"{{count}} device per day","{{count}} devices per day_other":"{{count}} devices per day","logsDetail.time.header_title":"Local time; hover a value for the UTC timestamp","logsDetail.time.header_title_utc":"UTC time; hover a value for the full timestamp","logsDetail.tz.local":"Local","logsDetail.tz.utc":"UTC","logsDetail.tz.label":"Timezone","logsDetail.serviceLevel":"Service level","logsDetail.missingParams.title":"Missing request bucket","logsDetail.missingParams.description":"This page needs a date and a model in the URL. Open it from a row on the Logs page.","logsDetail.finish.stop":"Stop","logsDetail.finish.length":"Max length","logsDetail.finish.toolCall":"Tool call","logsDetail.finish.contentFilter":"Content filter","logsDetail.finish.error":"Error","adminLogsDetail.missingDate.description":"This page needs a date in the URL. Open it from a row on the admin Logs page.","upstream.pool.active":"In pool","upstream.pool.wait":"Wait pool","upstream.pool.none":"Out of pool","upstream.pool.tooltip.active":"In the active pool — relay and invite traffic when healthy.","upstream.pool.tooltip.wait":"Wait pool — kept warm by keep-alive, no relay or invite traffic.","upstream.pool.tooltip.none":"Out of pool — not a member; no relay or invite traffic.","upstream.status.suspended":"Suspended","upstream.status.tooltip.suspended":"The upstream provider suspended this account. Re-enable only after the portal clears it.","upstream.status.revoked":"Token revoked","upstream.status.tooltip.revoked":"The refresh token was revoked. Re-issue the credential to continue.","upstream.status.plan_lost":"Plan lost","upstream.status.tooltip.plan_lost":"The account was downgraded and no longer qualifies for relay. An operator must resolve it.","upstream.status.out_of_credits":"Out of credits","upstream.status.tooltip.out_of_credits":"Credits are exhausted. Comes back on an invite / plan upgrade; after a manual top-up, Re-enable by hand.","upstream.status.low_credits":"Low credits","upstream.status.tooltip.low_credits":"Credits are running low (guard). The account keeps serving until they run out.","upstream.status.portal_session_rejected":"Portal session rejected","upstream.status.tooltip.portal_session_rejected":"The provider portal rejected the session. Re-login through the portal.","upstream.status.relogin_needed":"Re-login needed","upstream.status.tooltip.relogin_needed":"The refresh token is no longer valid (invalid_grant). Re-login is required.","upstream.status.low_health":"Low health","upstream.status.tooltip.low_health":"The health score dropped below the threshold. Probes continue in the background.","upstream.status.relay_auth_failed":"Upstream auth failing","upstream.status.tooltip.relay_auth_failed":"Repeated relay authentication failures disabled this account automatically.","upstream.status.disabled_other":"Disabled (other)","upstream.status.tooltip.disabled_other":"Disabled automatically for a reason that is not classified. See the raw reason.","upstream.status.marker_unreadable":"Marker unreadable","upstream.status.tooltip.marker_unreadable":"The auto-disable marker could not be decoded. Check the raw marker.","upstream.status.free_plan":"Free plan — waiting","upstream.status.tooltip.free_plan":"The account is on a Free plan and waits until it is upgraded.","upstream.status.operator_off":"Turned off","upstream.status.tooltip.operator_off":"An operator turned this account off.","upstream.status.cooling_down":"Cooling down","upstream.status.tooltip.cooling_down":"A replica is holding this account for a cooldown window.","upstream.status.runtime_blocked":"Blocked (runtime)","upstream.status.tooltip.runtime_blocked":"A replica is blocking this account. See the block reason.","upstream.status.unproven":"Unproven","upstream.status.tooltip.unproven":"No request has succeeded through this account yet.","upstream.status.session_stale":"Session stale","upstream.status.tooltip.session_stale":"The portal session is expired, missing or unreadable. Relay is unaffected; keep-alive and invites are.","upstream.status.serving":"Serving","upstream.status.tooltip.serving":"The account is in the pool, loaded and eligible for traffic.","upstream.status.ready":"Ready","upstream.status.tooltip.ready":"The account is healthy but not in the active pool — use Activate to serve.","upstream.status.tooltip.missing_view":"Not reported by this backend version.","upstream.status.eligible":"Eligible — the relay can pick this credential","upstream.status.not_serving":"Not serving","upstream.status.reason.not_loaded":"Not loaded on any replica","upstream.status.serving_line":"Relay","upstream.status.session_line":"Session","upstream.status.since":"Since","upstream.status.until":"Until","upstream.status.raw_reason":"Raw reason","upstream.status.help":"How the status is chosen","upstream.chip.auto":"Auto","upstream.chip.evicted":"Evicted","upstream.chip.free_plan":"Free plan","upstream.chip.reserve":"Reserve","upstream.chip.tooltip.auto":"Promoted by the autoscaler; returns to the wait pool at the daily reset","upstream.chip.tooltip.evicted":"Removed from the pool by the system","upstream.chip.tooltip.free_plan":"Free plan account","upstream.chip.tooltip.reserve":"Reserve bucket — serves only when the higher buckets are exhausted","upstream.chip.retry_at":"Retry at","upstream.chip.probe_at":"Probe at","upstream.chip.cooldown_until":"Cooldown until","upstream.chip.session_stale":"Session stale","upstream.chip.unproven":"Unproven","upstream.chip.estimated":"Estimated","upstream.chip.upgrade_ready":"Ready to upgrade","upstream.chip.upgrade_soon":"Upgrade soon","upstream.chip.age_unknown":"Age unknown","upstream.session.healthy":"Alive","upstream.session.expiring_soon":"Expiring soon","upstream.session.expired":"Expired","upstream.session.missing":"No session","upstream.session.undecodable":"Unreadable","upstream.session.n_a":"N/A","upstream.session.rejected":"Portal rejected","upstream.tile.serving":"Serving","upstream.tile.serving.basis_db":"Counted from the database only — the replica's runtime blocks were not consulted.","upstream.tile.in_pool_not_serving":"In pool, not serving","upstream.tile.attention":"Needs action","upstream.tile.recoverable":"Recovering","upstream.tile.ready":"Ready (out of pool)","upstream.tile.session_stale":"Session stale","upstream.tile.session_rejected":"Portal rejected session","upstream.tile.caption":"Tiles count by axis and overlap; Serving ⊆ In pool.","upstream.tile.basis.db":"Counted from the database.","upstream.tile.basis.replica":"Counted with this replica's runtime snapshot.","upstream.filter.pool":"Pool","upstream.filter.pool.all":"Any pool state","upstream.filter.status":"Status","upstream.filter.reason":"Reason","upstream.filter.serving":"Serving","upstream.filter.serving.all":"Any","upstream.filter.serving.true":"Serving","upstream.filter.serving.false":"Not serving","upstream.filter.session":"Session","upstream.filter.session.all":"Any session","upstream.filter.plan":"Plan","upstream.filter.sort":"Sort by","upstream.filter.order":"Order","upstream.filter.attention":"Needs action","upstream.filter.member":"In pool or wait pool","upstream.filter.too_broad":"This filter matches more than 1,000 candidate accounts, which is more than the server can check. Narrow it by key, type, group, pool or plan.","upstream.col.back_when":"Back when","upstream.back_when.kind.cycle":"billing cycle","upstream.back_when.kind.anchor":"daily anchor","upstream.back_when.today":"today","upstream.back_when.in_days":"in {{n}} days","upstream.back_when.past_days":"{{n}} days ago","upstream.back_when.unknown":"unknown","upstream.back_when.unknown.tooltip":"No return date: a paid plan without an observed billing period. Check balance to find out.","upstream.back_when.estimated":"estimate","upstream.detail.recovery_contract":"The account re-enables itself when credit returns (invite / plan upgrade / Check balance); there is no timed auto re-enable.","upstream.filter.recovery":"Back when","upstream.filter.recovery.all":"All","upstream.filter.recovery.today":"Today","upstream.filter.recovery.this_week":"Next 6 days","upstream.filter.recovery.later":"Later","upstream.filter.recovery.cycle_passed":"Past cycle","upstream.filter.recovery.unknown":"Unknown","upstream.filter.sort.expected_recover_at":"Back when (soonest first)","upstream.filter.batch":"Batch","upstream.filter.batch.all":"All","upstream.filter.batch.none":"No batch","upstream.filter.pool_source":"Pool source","upstream.filter.pool_source.all":"All","upstream.filter.pool_source.manual":"Manual","upstream.filter.pool_source.batch":"Batch","upstream.filter.pool_source.auto":"Autoscaler","upstream.filter.pool_source.evicted":"Evicted","upstream.filter.pool_source.none":"Unset","upstream.batch.column":"Batch","upstream.batch.tab":"Batch schedule","upstream.batch.badge.none":"No batch","upstream.batch.badge.running":"Batch {{label}} · day {{day}}/{{total}}","upstream.batch.badge.soaking":"Batch {{label}} · soaking","upstream.batch.badge.soaking_days":"Batch {{label}} · soaking, {{days}} days left","upstream.batch.badge.expired":"Batch {{label}} · expired","upstream.batch.badge.paused":"Batch {{label}} · standby","upstream.batch.badge.standby_hint":"on standby — not auto-invited","upstream.batch.badge.tooltip":"Show the accounts of this batch","upstream.batch.hero.window":"serving from {{from}} to {{to}}","upstream.batch.hero.today":"today day {{day}}/{{total}}","upstream.batch.hero.soaking":"soaking","upstream.batch.hero.soaking_days":"soaking, {{days}} days left","upstream.batch.hero.expired":"expired","upstream.batch.hero.paused":"standby (manual override)","upstream.batch.owned.message":"This account belongs to batch {{label}}: the batch holds its pool state by schedule, so the change was refused (nothing written). Override applies the change and puts this account alone on batch standby.","upstream.batch.owned.override":"Override (put this account on batch standby)","upstream.batch.owned.bulk_skipped":"Updated {{updated}}, failed {{failed}}, skipped {{skipped}} batch-owned accounts","upstream.batch.owned.bulk_message":"{{count}} batch-owned accounts were skipped (the batch holds their pool state by schedule). Override applies the change to those accounts and puts each of them on batch standby.","upstream.batch.cohorts.header":"Schedule: time zone {{tz}} · today {{today}}","upstream.batch.cohorts.settings_link":"Price ladder, time zone & default settings","upstream.batch.cohorts.defaults":"defaults: {{size}} accounts/batch · soak {{soak}} · run {{run}} · top-up {{topup}}","upstream.batch.cohorts.create":"Create batch","upstream.batch.cohorts.empty.title":"No batch schedule yet","upstream.batch.cohorts.empty.desc":"Create the first batch when you buy accounts: label, purchase date and account count.","upstream.batch.cohorts.loading":"Loading batch schedule","upstream.batch.cohorts.error":"Could not load the batch schedule","upstream.batch.cohorts.col.label":"Batch","upstream.batch.cohorts.gap_banner":"{{count}} days with no batch serving ({{dates}}) — check for a late slot","upstream.batch.cohorts.col.schedule":"Schedule","upstream.batch.cohorts.col.schedule_hint":"Bought → soaking → serving → batch expiry (the day before the same date next month).","upstream.batch.cohorts.col.today":"Today","upstream.batch.cohorts.col.today_hint":"Awaiting purchase → Soaking → Starts serving (day 1) → Serving → Batch expired. Day N/M = the Nth serving day of the effective total.","upstream.batch.cohorts.col.accounts":"Accounts","upstream.batch.cohorts.col.purchase":"Purchase","upstream.batch.cohorts.col.next":"Next step","upstream.batch.cohorts.col.actions":"Actions","upstream.batch.cohorts.slot_sub":"Slot day {{slot}}","upstream.batch.cohorts.schedule.short":"Bought {{purchased}} → serving {{serve}}","upstream.batch.cohorts.schedule.tooltip":"Bought {{purchased}} · soaking {{soak}} days (through {{soak_until}}) · serving {{serve}}, {{run}} days · expires {{expires}}","upstream.batch.cohorts.schedule.tooltip_planned":"Buy {{purchased}} · soak {{soak}} days (through {{soak_until}}) · serving {{serve}}, {{run}} days · expires {{expires}}","upstream.batch.cohorts.state.scheduled":"Awaiting purchase · {{date}}","upstream.batch.cohorts.state.soaking":"Soaking · serving from {{date}}","upstream.batch.cohorts.state.ready":"Starts serving today · day 1/{{total}}","upstream.batch.cohorts.state.running":"Period running · day {{day}}/{{total}}","upstream.batch.cohorts.state.running_end":"· ends {{date}}","upstream.batch.cohorts.state.days_left":"({{days}} days left)","upstream.batch.cohorts.state.expired":"Batch expired {{date}}","upstream.batch.cohorts.state.projected":"Planned purchase · {{date}}","upstream.batch.cohorts.state.projected_due":"Buy today","upstream.batch.cohorts.state.projected_overdue":"Purchase overdue by {{days}} days","upstream.batch.cohorts.projected":"Planned","upstream.batch.cohorts.projected_after":"after {{label}}","upstream.batch.cohorts.projected_from":"Planned (after {{label}})","upstream.batch.cohorts.accounts.short":"{{n}} short","upstream.batch.cohorts.accounts.over":"{{n}} over","upstream.batch.cohorts.accounts.ready":"ready {{ready}}/{{size}}","upstream.batch.cohorts.purchase.tooltip":"{{topup}}/acct × {{size}} · serving amortization {{run_cost}} · {{per_day}}/acct-day","upstream.batch.cohorts.next.short_add":"{{n}} short → Add","upstream.batch.cohorts.next.missing_ready":"{{n}} short of ready","upstream.batch.cohorts.next.invite":"Invite {{n}}","upstream.batch.cohorts.next.paused":"{{n}} standby","upstream.batch.cohorts.next.buy":"Next purchase {{date}}","upstream.batch.cohorts.next.buy_now":"Buy now","upstream.batch.cohorts.next.none":"No next step","upstream.batch.cohorts.show_projected":"Show planned purchases ({{n}})","upstream.batch.cohorts.hidden_projected":"{{n}} planned purchases hidden · Show all","upstream.batch.cohorts.todo.title":"To do","upstream.batch.cohorts.todo.window":"(next {{days}} days)","upstream.batch.cohorts.todo.none":"Nothing urgent — next purchase {{date}}","upstream.batch.cohorts.todo.none_no_next":"Nothing urgent","upstream.batch.cohorts.todo.buy":"Buy batch {{date}} · slot day {{slot}} · {{size}} accounts (after {{label}})","upstream.batch.cohorts.todo.add":"Batch {{label}} serving from {{date}} ({{days}} days left) · {{missing}} accounts short","upstream.batch.cohorts.todo.add_started":"Batch {{label}} serving (since {{date}}) · {{missing}} accounts short","upstream.batch.cohorts.horizon.label":"Horizon","upstream.batch.cohorts.horizon.months":"{{count}} months","upstream.batch.cohorts.month_projected":"+ {{count}} projected batches · {{buy}}","upstream.batch.cohorts.run_capped":"run cut to {{days}} days (account expires {{date}})","upstream.batch.cohorts.lifetime_mismatch":"real end {{observed}} ≠ computed {{computed}}","upstream.batch.cohorts.lifetime_renewed":"renewed {{periods}} more cycle(s) — real end {{observed}}","upstream.batch.cohorts.schedule_mode.anniversary":"schedule: anniversary","upstream.batch.cohorts.schedule_mode.chained":"schedule: chained","upstream.batch.cohorts.mark_bought":"Bought → create batch","upstream.batch.cohorts.months":"By month","upstream.batch.cohorts.month_row":"{{month}}/{{year}}: month cost {{serve}} · {{buy}} bought ({{count}} batches)","upstream.batch.cohorts.view_accounts":"View accounts","upstream.batch.cohorts.edit":"Edit","upstream.batch.cohorts.delete":"Delete","upstream.batch.cohorts.members.add":"Add accounts","upstream.batch.cohorts.members.remove":"Remove from batch","upstream.batch.cohorts.members.empty":"No accounts in this batch yet","upstream.batch.cohorts.members.loading":"Loading members","upstream.batch.cohorts.members.truncated":"Showing {{shown}} / {{total}} — see the full list in the accounts table","upstream.batch.cohorts.members.removed":"Removed {{count}} accounts from the batch","upstream.batch.badge.ready":"Batch {{label}} · awaiting invite","upstream.batch.badge.ready_late":"Batch {{label}} · awaiting invite, {{days}} days late","upstream.batch.badge.soaking_until":"Batch {{label}} · soaking through {{until}}","upstream.batch.badge.unknown":"Batch {{label}} · —","upstream.batch.hero.ready":"awaiting invite","upstream.batch.hero.ready_late":"awaiting invite, {{days}} days late","upstream.batch.hero.soaking_until":"soaking through {{until}}","upstream.batch.hero.unknown":"—","upstream.batch.anchor.none":"day 1: not set yet","upstream.batch.anchor.invite":"day 1: {{date}} (first invite)","upstream.batch.anchor.manual":"day 1: {{date}} (typed)","upstream.batch.phase.soaking":"soaking","upstream.batch.phase.ready":"awaiting invite","upstream.batch.phase.running":"counting","upstream.batch.phase.running_day":"day {{day}}/{{total}}","upstream.batch.phase.expired":"expired","upstream.batch.phase.off":"standby","upstream.batch.ready.yes":"Ready","upstream.batch.ready.no":"Not ready · {{reason}}","upstream.batch.ready.plan_unpaid":"no paid plan yet","upstream.batch.own_schedule":"own schedule","upstream.batch.cohorts.actual.day":"actual day {{day}}/{{total}}","upstream.batch.cohorts.actual.day_span":"actual day {{min}}–{{max}}/{{total}}","upstream.batch.cohorts.actual.phases":"Members","upstream.batch.cohorts.actual.soaking":"{{count}} soaking","upstream.batch.cohorts.actual.ready":"{{count}} awaiting invite","upstream.batch.cohorts.actual.running":"{{count}} serving","upstream.batch.cohorts.actual.expired":"{{count}} expired","upstream.batch.cohorts.actual.off":"{{count}} standby","upstream.batch.cohorts.actual.cost":"today {{cost}}","upstream.batch.cohorts.actual.guests":"+{{count}} guests","upstream.batch.cohorts.members.pause":"Set standby","upstream.batch.cohorts.members.resume":"Activate","upstream.batch.cohorts.members.paused":"{{key}}: set to standby","upstream.batch.cohorts.members.resumed":"{{key}}: activated","upstream.batch.cohorts.detail.open":"Open batch details","upstream.batch.cohorts.detail.title":"Batch {{label}} details","upstream.batch.cohorts.detail.cycle":"Current period","upstream.batch.cohorts.detail.cycle_value":"period {{k}} · next renewal {{renew}}","upstream.batch.cohorts.detail.cycle_repurchase":"bought {{date}} · next purchase {{next}}","upstream.batch.cohorts.detail.real_end":"Real end","upstream.batch.cohorts.detail.paid":"On a plan","upstream.batch.cohorts.detail.paid_value":"{{paid}}/{{total}} accounts","upstream.batch.cohorts.detail.filter":"Filter members","upstream.batch.cohorts.detail.filter_all":"All","upstream.batch.cohorts.detail.filter_live":"Live","upstream.batch.cohorts.detail.filter_serving":"Serving","upstream.batch.cohorts.detail.filter_ready":"Ready","upstream.batch.cohorts.detail.filter_soaking":"Soaking","upstream.batch.cohorts.detail.filter_unpaid":"Unpaid","upstream.batch.cohorts.detail.filter_attention":"Needs attention","upstream.batch.cohorts.detail.filter_standby":"Standby","upstream.batch.cohorts.detail.filter_dead":"Dead","upstream.batch.cohorts.detail.filter_not_ready":"Not ready","upstream.batch.cohorts.detail.filter_free":"On Free","upstream.batch.cohorts.detail.filter_cancel":"Cancel scheduled","upstream.batch.cohorts.detail.col.key":"Account","upstream.batch.cohorts.detail.col.plan":"Plan","upstream.batch.cohorts.detail.col.pool":"Pool","upstream.batch.cohorts.detail.col.ready":"Ready","upstream.batch.cohorts.detail.col.phase":"Actual phase · day 1","upstream.batch.cohorts.detail.col.ends":"Real end","upstream.batch.cohorts.detail.col.cancel":"Cancel","upstream.batch.cohorts.detail.col.actions":"Actions","upstream.batch.cohorts.detail.unavailable":"unavailable","upstream.batch.cohorts.detail.empty_filter":"No account matches this filter","upstream.batch.cohorts.mode.renewal":"Renewal mode: the same accounts renew their plan every period","upstream.batch.cohorts.col.today_hint_renew":"Awaiting purchase → Soaking → Serving starts → Serving → Awaiting renewal → next period.","upstream.batch.cohorts.state.renew_due":"Awaiting renewal · {{date}}","upstream.batch.cohorts.state.renew_overdue":"Renewal overdue by {{days}} days","upstream.batch.cohorts.state.renew_next":"next renewal {{date}}","upstream.batch.cohorts.projected_renewal":"Planned renewal of {{label}} · period {{k}}","upstream.batch.cohorts.state.projected_renewal":"Planned renewal · {{date}}","upstream.batch.cohorts.state.projected_renewal_due":"Renew today","upstream.batch.cohorts.state.projected_renewal_overdue":"Renewal overdue by {{days}} days","upstream.batch.cohorts.accounts.paid":"on plan {{paid}}/{{total}}","upstream.batch.cohorts.accounts.cancel":"{{n}} cancel scheduled","upstream.batch.cohorts.next.renew":"Renew {{n}}","upstream.batch.cohorts.next.uncancel":"Undo cancel {{n}}","upstream.batch.cohorts.mark_renewed":"Renewed → open next period","upstream.batch.cohorts.todo.renew":"Renew the plan on {{n}} accounts of batch {{label}} · {{date}} ({{days}} days left)","upstream.batch.cohorts.todo.renew_today":"Renew the plan on {{n}} accounts of batch {{label}} today","upstream.batch.cohorts.todo.renew_overdue":"Renewal overdue by {{days}} days · batch {{label}} · {{free}} accounts still Free","upstream.batch.cohorts.todo.uncancel":"Undo the scheduled cancel on {{n}} accounts of batch {{label}} before {{date}}","upstream.batch.cohorts.todo.none_renew":"Nothing urgent — next renewal {{date}}","upstream.batch.cohorts.renew.title":"Open the next period for batch {{label}}","upstream.batch.cohorts.renew.hint":"Opens period {{k}} from {{date}}; day 1 is anchored again on invite.","upstream.batch.cohorts.renew.done":"Period {{k}} opened for batch {{label}}","upstream.batch.cohorts.renew.done_standby":"Period {{k}} opened for batch {{label}} · everyone on standby","upstream.batch.cohorts.projected_renewal_short":"Renewal · period {{k}}","upstream.batch.cohorts.schedule.short_renewal":"Renew {{purchased}} → serving {{serve}}","upstream.batch.cohorts.schedule.short_planned":"Buy {{purchased}} → serving {{serve}}","upstream.batch.cohorts.accounts.carry":"{{n}} carry over","upstream.batch.cohorts.detail.cycle_planned":"period {{k}} · renews on {{date}}","upstream.batch.cohorts.detail.chain":"Period chain","upstream.batch.cohorts.detail.chain_chip":"period {{k}} ({{date}})","upstream.batch.cohorts.detail.vendor":"On the vendor","upstream.batch.cohorts.detail.vendor_value":"{{renewed}}/{{n}} renewed","upstream.batch.cohorts.state.renew_vendor":"{{renewed}}/{{n}} renewed on the vendor","upstream.batch.cohorts.state.closed":"Closed · next period {{label}}","upstream.batch.cohorts.state.empty":"No accounts yet","upstream.batch.cohorts.show_closed":"Show closed periods ({{n}})","upstream.batch.cohorts.todo.renew_cta_open":"Open next period","upstream.batch.cohorts.detail.cycle_unbought":"Not bought yet · buy on {{date}}","upstream.batch.cohorts.todo.buy_first":"Buy batch {{label}} · {{date}} ({{days}} days left) · {{size}} accounts","upstream.batch.cohorts.todo.buy_first_today":"Buy batch {{label}} today · {{size}} accounts","upstream.batch.cohorts.renew.soak_label":"Soak days of the new period","upstream.batch.cohorts.renew.soak_hint":"Defaults to the previous period's {{soak}} soak days; set 0 to skip soaking again.","upstream.batch.cohorts.renew.inherit_note":"Run days ({{run}}) and the purchase slot stay as in the previous period.","upstream.batch.cohorts.renew.plan":"Schedule renewal","upstream.batch.cohorts.renew.now":"Renew now","upstream.batch.cohorts.members.plan_lost":"Back to Free","upstream.batch.cohorts.members.oversize":"The batch will have {{n}} accounts (> size {{size}})","upstream.batch.cohorts.members.raise_size":"Raise the batch size to {{n}}","upstream.batch.ready.cancel_scheduled":"Cancel scheduled","upstream.batch.ready.cancel_scheduled_hint":"The plan drops to Free on {{date}} — the account still serves until the day before","upstream.batch.cohorts.upcoming.need_upgrade":"needs upgrade","upstream.batch.cohorts.one_off":"One-off","upstream.batch.cohorts.detail.cycle_one_off":"One-off batch · bought {{date}} · ends {{end}}","upstream.batch.cohorts.renew.err_one_off":"A one-off batch cannot be renewed","upstream.batch.cohorts.renew.preview_loading":"Loading the account list…","upstream.batch.cohorts.renew.preview_error":"Could not load the account list — every account moves, as before.","upstream.batch.cohorts.renew.preview_truncated":"The batch has more than {{max}} accounts — every account moves, as before.","upstream.batch.cohorts.renew.preview_all_dead":"All {{k}} accounts are dead — the new period takes every account, as before.","upstream.batch.cohorts.renew.preview":"Move {{n}} accounts · leave {{k}} dead behind","upstream.batch.cohorts.renew.preview_all":"Move {{n}} accounts","upstream.batch.cohorts.renew.leave_dead":"Leave {{k}} dead accounts behind (not moved to the new period)","upstream.batch.cohorts.renew.leave_dead_hint":"Dead = evicted from the pool, plan lost or a terminal status — none recover on their own. Standby, unpaid and attention accounts still move.","upstream.batch.cohorts.renew.mode_legend":"New period","upstream.batch.cohorts.renew.mode_keep":"Keep the running set","upstream.batch.cohorts.renew.mode_standby":"All to standby — activate later","upstream.batch.cohorts.renew.mode_standby_hint":"The next auto-invite run invites nobody until you activate accounts.","upstream.batch.cohorts.renew.err_not_member":"The batch's account list changed — no period was opened. It has been reloaded; check and try again.","upstream.batch.dialog.one_off":"One-off batch","upstream.batch.dialog.one_off_hint":"No slot repeat, no renewal — bought once, no next purchase projected","upstream.batch.dialog.one_off_leave":"The batch will join the slot chain of day {{slot}}","upstream.batch.dialog.err.one_off_linked":"The batch is linked to a period chain — it cannot be one-off","upstream.batch.detail.title":"Batch {{label}}","upstream.batch.detail.phase":"Phase","upstream.batch.detail.anchor":"Day 1","upstream.batch.detail.expected":"Schedule","upstream.batch.detail.edit_anchor":"Edit day 1","upstream.batch.detail.pause":"Set to standby","upstream.batch.detail.resume":"Count again","upstream.batch.detail.paused":"This account is on batch standby","upstream.batch.detail.resumed":"Batch count resumed for this account","upstream.batch.edit.legend":"Batch {{label}}","upstream.batch.edit.current":"Now: {{phase}}","upstream.batch.edit.anchor_label":"Day 1 (batch count)","upstream.batch.edit.anchor_hint":"Leave blank to keep the current day 1. A typed date overrides the first-invite date; tick \"Clear day 1\" to go back to the invite date.","upstream.batch.edit.anchor_clear":"Clear day 1 (use the first-invite date again)","upstream.batch.edit.anchor_invalid":"Enter a date as YYYY-MM-DD.","upstream.batch.edit.paused_label":"Standby (the batch does not count days for this account)","upstream.batch.edit.paused_hint":"The batch stops moving this account's pool state; the schedule keeps running for the rest of the batch.","upstream.filter.batch_phase":"Batch phase","upstream.filter.batch_phase.all":"All","upstream.filter.batch_phase.soaking":"Soaking","upstream.filter.batch_phase.ready":"Awaiting invite","upstream.filter.batch_phase.running":"Counting","upstream.filter.batch_phase.expired":"Expired","upstream.filter.batch_phase.off":"Not counting","upstream.filter.batch_phase.none":"No batch","upstream.batch.dialog.create_title":"Create batch","upstream.batch.dialog.edit_title":"Edit batch {{label}}","upstream.batch.dialog.label":"Label","upstream.batch.dialog.purchased_on":"Purchase date","upstream.batch.dialog.purchased_on_hint":"Civil date in {{tz}}","upstream.batch.dialog.n":"Accounts (N)","upstream.batch.dialog.soak":"Soak (days)","upstream.batch.dialog.run":"Run (days)","upstream.batch.dialog.topup":"Top-up per account ($)","upstream.batch.dialog.notes":"Notes","upstream.batch.dialog.slot_day":"Slot (day of month)","upstream.batch.dialog.slot_day_hint":"1–31, optional — the monthly purchase slot this batch continues; empty = inferred from the purchase date","upstream.batch.dialog.server_default":"Leave empty → server default","upstream.batch.dialog.schedule_hint":"Soak / run follow the schedule for this date: serving from {{serve_start}}, accounts expire {{lifetime_end}}","upstream.batch.dialog.warn.run_nonpositive":"Nothing can run: run ≤ 0 (accounts expire {{lifetime_end}}) — adjust the slot head's run","upstream.batch.dialog.warn.gap":"Bought late: this slot idles until {{serve_start}} (after its planned serve day) — check the calendar's gap banner","upstream.batch.dialog.warn.overlap":"An earlier batch still serves on {{serve_start}}","upstream.batch.dialog.warn.slot_early":"{{days}} days before slot {{slot}}'s milestone — the batch still belongs to the slot; next milestone {{next}}","upstream.batch.dialog.warn.slot_late":"{{days}} days after slot {{slot}}'s milestone — the batch still belongs to the slot; next milestone {{next}}","upstream.batch.dialog.err.label_required":"Enter a label","upstream.batch.dialog.err.label_exists":"Label already exists — choose another","upstream.batch.dialog.err.date_required":"Pick the purchase date (YYYY-MM-DD)","upstream.batch.dialog.err.n_min":"N must be ≥ 1","upstream.batch.dialog.err.soak_min":"Soak must be ≥ 0","upstream.batch.dialog.err.run_min":"Run must be ≥ 1","upstream.batch.dialog.err.topup_min":"Top-up must be ≥ 0","upstream.batch.dialog.err.no_changes":"Nothing changed","upstream.batch.dialog.err.slot_day_range":"Slot must be a day of month 1–31","upstream.batch.dialog.save":"Save","upstream.batch.dialog.created":"Batch {{label}} created","upstream.batch.dialog.updated":"Batch {{label}} updated","upstream.batch.delete.title":"Delete batch {{label}}","upstream.batch.delete.message":"Detach {{count}} accounts from the batch (pool state kept as is). This cannot be undone.","upstream.batch.delete.confirm":"Delete batch","upstream.batch.delete.done":"Batch {{label}} deleted — {{count}} accounts detached","upstream.batch.assign.title":"Assign to batch","upstream.batch.assign.batch":"Batch","upstream.batch.assign.pick":"Pick a batch…","upstream.batch.assign.count":"{{count}} accounts selected","upstream.batch.assign.submit":"Assign","upstream.batch.assign.done":"Assigned {{written}} / {{requested}} accounts to batch {{label}}","upstream.batch.assign.elsewhere_title":"Accounts belong to another batch","upstream.batch.assign.elsewhere_message":"{{count}} accounts belong to another batch, so nothing was written. Move them to batch {{label}}?","upstream.batch.assign.move":"Move to this batch","upstream.batch.assign.anchor_label":"Day 1 (optional)","upstream.batch.assign.anchor_hint":"The day the count starts for the assigned accounts. Leave blank and each account keeps the day 1 it already has (if any).","upstream.batch.assign.no_count_label":"Standby","upstream.batch.assign.no_count_hint":"Assign to the batch without following its schedule — no day 1 needed, the actuator never touches them.","upstream.batch.assign.anchor_required":"Nothing written: some accounts are serving (active) without a day 1 while batch {{label}} is past its soak — the next tick would pull them out of the pool. Fill in \"Day 1\" or tick \"Standby\" and assign again.","upstream.batch.members.add_title":"Add accounts to batch {{label}}","upstream.batch.members.search":"Search by key","upstream.batch.members.candidates_empty":"No eligible accounts without a batch","upstream.batch.members.add_submit":"Add {{count}}","upstream.batch.cohorts.todo.oneoff_cancel":"Schedule the plan cancel on {{n}} accounts of batch {{label}} before {{date}} — one-off, no renewal","upstream.batch.cohorts.schedule.short_no_soak":"Bought & serving {{purchased}}","upstream.batch.cohorts.schedule.short_no_soak_planned":"Buy & serve {{purchased}}","upstream.batch.cohorts.schedule.soak_note":"soak {{days}} days · ends {{expires}}","upstream.batch.cohorts.schedule.no_soak":"no soak · ends {{expires}}","upstream.batch.cohorts.schedule.tooltip_no_soak":"Bought {{purchased}} · no soak · serving {{serve}}, {{run}} days · expires {{expires}}","upstream.batch.cohorts.schedule.tooltip_no_soak_planned":"Buy {{purchased}} · no soak · serving {{serve}}, {{run}} days · expires {{expires}}","upstream.batch.cohorts.schedule.tooltip_slot":" · slot {{slot}}","upstream.batch.cohorts.schedule.slot_short":"Buy day {{buy}} → serve day {{serve}}","upstream.batch.cohorts.schedule.slot_short_renewal":"Renew day {{buy}} → serve day {{serve}}","upstream.batch.cohorts.schedule.slot_short_next_month":" next month","upstream.batch.cohorts.schedule.slot_short_no_soak":"Buy & serve day {{buy}}","upstream.batch.cohorts.schedule.slot_cycle":"this cycle: {{purchased}} → {{serve}}","upstream.batch.cohorts.run_capped_short":"cut to {{days}} days","upstream.batch.dialog.edit_hint":"With these values: serving from {{serve_start}}, expires {{expires_on}} (accounts expire {{lifetime_end}})","upstream.batch.dialog.warn.run_over_lifetime":"Run {{run}} > lifetime {{span}} days (expires {{lifetime_end}}) — the batch serves only {{span}} days; set Run = {{span}}","upstream.batch.dialog.warn.soak_over_lifetime":"Soak {{soak}} days from {{purchased_on}} ⇒ serving {{serve_start}}, after the accounts expire {{lifetime_end}} — the server will refuse; set Soak ≤ {{max}}","upstream.batch.dialog.err.soak_outlives_lifetime":"Not saved: soak {{soak}} days from {{purchased_on}} ⇒ serving {{serve_start}}, after the accounts expire {{lifetime_end}}. Set Soak ≤ {{max}} or change the purchase day.","upstream.batch.dialog.err.soak_outlives_lifetime_short":"Not saved: the soak outlives the accounts (it ends after they expire). Lower Soak or change the purchase day.","upstream.batch.dialog.slot_day_one_off":"A one-off batch belongs to no slot","upstream.batch.dialog.soak_hint":"0 = serving on the purchase day","upstream.batch.cohorts.detail.not_ready_banner":"{{n}}/{{total}} in-use accounts not ready — not served: {{reasons}}. {{contract}}","upstream.batch.cohorts.detail.not_ready_filter":"Filter {{n}} not ready","upstream.batch.cohorts.accounts.serving":"{{serving}}/{{total}} actual","upstream.batch.cohorts.detail.cancel_one_off_hint":"One-off batch, no renewal — the scheduled cancel is the right state","upstream.batch.cohorts.actual.guests_hint":"{{count}} accounts joined the batch on their own schedule (their own real end differs from the batch's)","upstream.batch.cohorts.next.one_off":"No renewal","upstream.batch.cohorts.next.one_off_hint":"One-off batch: no renewal — schedule the plan cancel before {{date}} for {{count}} accounts not yet scheduled","upstream.batch.cohorts.detail.not_found":"Batch not found.","upstream.batch.cohorts.detail.timeline":"Timeline","upstream.batch.cohorts.detail.tl_bought":"Bought","upstream.batch.cohorts.detail.tl_buy":"Buy","upstream.batch.cohorts.detail.tl_soak":"Soak {{days}} days · through","upstream.batch.cohorts.detail.tl_no_soak":"No soak","upstream.batch.cohorts.detail.tl_serve":"Serving from","upstream.batch.cohorts.detail.tl_expires":"Expires · {{run}} days","upstream.batch.cohorts.detail.renewal":"Renewal","upstream.batch.cohorts.detail.col.price":"Price today","upstream.batch.cohorts.detail.split":"({{native}} native, {{guest}} guests)","upstream.batch.cohorts.detail.counts_live_target":"In use {{live}} / target {{target}}","upstream.batch.cohorts.detail.counts_live":"In use {{live}}","upstream.batch.cohorts.detail.counts_ready":"ready {{n}}","upstream.batch.cohorts.detail.counts_standby":"standby {{n}}","upstream.batch.cohorts.detail.counts_dead":"dead {{n}}","upstream.batch.cohorts.detail.counts_total":"total {{n}}","upstream.batch.cohorts.detail.preflight":"The next auto-invite run will invite {{n}} accounts","upstream.batch.cohorts.detail.preflight_short":"short {{k}}","upstream.batch.cohorts.detail.preflight_over":"over by {{k}}","upstream.batch.cohorts.detail.preflight_reason":"— {{s}} on standby, {{d}} dead; Activate to invite","upstream.batch.cohorts.detail.counts_target_unset":"target: not set ·","upstream.batch.cohorts.detail.counts_set_target":"Set","upstream.batch.cohorts.detail.col.bucket":"Bucket","upstream.batch.cohorts.detail.bucket_serving":"Serving","upstream.batch.cohorts.detail.bucket_ready":"Ready","upstream.batch.cohorts.detail.bucket_soaking":"Soaking","upstream.batch.cohorts.detail.bucket_unpaid":"Unpaid","upstream.batch.cohorts.detail.bucket_attention":"Attention","upstream.batch.cohorts.detail.bucket_standby":"Standby","upstream.batch.cohorts.detail.bucket_dead":"Dead","upstream.batch.cohorts.members.selected":"Selected {{n}}","upstream.batch.cohorts.members.standby_n":"Set standby ({{n}})","upstream.batch.cohorts.members.activate_n":"Activate ({{n}})","upstream.batch.cohorts.members.pick_standby":"Pick the first {{k}} standby","upstream.batch.cohorts.members.select_filtered":"Select all {{n}} filtered","upstream.batch.cohorts.members.clear_selection":"Clear selection","upstream.batch.cohorts.members.select_page":"Select all on this page","upstream.batch.cohorts.members.select_row":"Select","upstream.batch.cohorts.members.remove_dead":"Remove {{n}} dead from the batch","upstream.batch.cohorts.members.remove_dead_title":"Remove {{n}} dead accounts from the batch?","upstream.batch.cohorts.members.remove_dead_confirm":"Detaches them from the batch only — the accounts and their pool are untouched. The batch size ({{size}}) stays.","upstream.batch.cohorts.members.standby_confirm_title":"Set {{n}} accounts to standby?","upstream.batch.cohorts.members.standby_confirm":"Standby accounts leave the auto-invite rotation and stop serving until activated again; a serving account is moved back to wait.","upstream.batch.cohorts.members.activate_confirm_title":"Activate {{n}} accounts?","upstream.batch.cohorts.members.activate_confirm":"The next auto-invite run invites the ready, paid ones among them.","upstream.batch.cohorts.members.standby_done":"Set {{ok}}/{{n}} accounts to standby","upstream.batch.cohorts.members.activate_done":"Activated {{ok}}/{{n}} accounts","upstream.batch.cohorts.members.standby_not_member":"{{n}} accounts are not members of this batch, skipped: {{keys}}","upstream.batch.cohorts.members.standby_unchanged":"{{n}} accounts unchanged (already in this state)","upstream.batch.cohorts.members.pager":"Member pages","upstream.batch.cohorts.members.page":"Page {{page}}/{{pages}} · {{from}}–{{to}} of {{n}}","upstream.automation.tab":"Automation","upstream.automation.empty.title":"Automation","upstream.automation.header.now":"Server time {{time}} ({{tz}})","upstream.automation.error.load":"Could not load the automation status","upstream.automation.error.unsupported":"This server does not expose the automation status yet (older build).","upstream.automation.state.on":"ON","upstream.automation.state.off":"OFF","upstream.automation.state.default_on":"default: on","upstream.automation.state.default_off":"default: off","upstream.automation.settings_link":"Open in Settings","upstream.automation.seconds":"{{count}} s","upstream.automation.batch.title":"Batch purchase & pool schedule","upstream.automation.batch.cohorts_link":"Open the batch schedule","upstream.automation.batch.intro":"Each purchase batch soaks {{soak}} days by default, then serves until the account's calendar-month lifetime ends; the next purchase of the same slot is due on the same day of the following month (clamped to the month's end), and the run ({{run}} days by default) is derived from the schedule. {{size}} accounts per batch by default.","upstream.automation.batch.phase.soaking":"{{soak}} days after purchase: pool_state=wait, nothing counts, no invites.","upstream.automation.batch.phase.ready":"Soak over, no invite yet: still wait; the first successful invite anchors day 1.","upstream.automation.batch.phase.running":"Serving (pool_state=active) from day 1 to day {{run}} after the anchor.","upstream.automation.batch.phase.expired":"Past day {{run}}: pool_state=none, out of the pool.","upstream.automation.batch.phase.off":"Paused by a manual override — the actuator skips this account.","upstream.automation.batch.ladder":"Daily price per account","upstream.automation.batch.today":"Today","upstream.automation.batch.today_value":"{{batches}} batches · {{running}} serving · {{soaking}} soaking · drift {{drift}}","upstream.automation.batch.actuator.switch":"Pool-state actuator","upstream.automation.batch.actuator.hint":"Writes pool_state from each member's phase on every tick. Off: nothing is written; Preview still shows the plan.","upstream.automation.batch.actuator.interval":"Tick interval","upstream.automation.batch.actuator.last_tick":"Last tick","upstream.automation.batch.actuator.never":"never","upstream.automation.batch.actuator.last_result":"Last result","upstream.automation.batch.actuator.last_result_value":"{{applied}} applied · {{skipped}} skipped","upstream.automation.batch.actuator.last_error":"Last tick failed: {{error}}","upstream.automation.batch.actuator.last_error_stale":"Automatic tick before the manual apply failed: {{error}}","upstream.automation.batch.actuator.manual_apply":"Last manual apply","upstream.automation.batch.actuator.manual_apply_value":"{{time}} · {{applied}} written · {{skipped}} skipped","upstream.automation.batch.preview":"Preview","upstream.automation.batch.apply":"Apply now","upstream.automation.batch.apply.needs_switch":"Turn the actuator on in Settings to apply.","upstream.automation.batch.apply.disabled":"The actuator is off — nothing was written.","upstream.automation.batch.apply.precondition":"POOL_EVICT_MARK_SOURCE is off — the actuator refuses to write.","upstream.automation.batch.apply.done":"Applied {{count}} pool-state changes","upstream.automation.batch.apply.confirm_title":"Apply the actuator plan now?","upstream.automation.batch.apply.confirm_counted":"{{count}} pool_state changes from the latest preview will be written. The plan is recomputed on the server first.","upstream.automation.batch.apply.confirm_message":"The server computes the plan and writes every pool_state change immediately.","upstream.automation.batch.plan.title.preview":"Plan: {{count}} changes","upstream.automation.batch.plan.title.applied":"Applied: {{count}} changes","upstream.automation.batch.plan.day":"day {{today}} ({{tz}})","upstream.automation.batch.plan.switch_off":"Preview only — the actuator is off, nothing was written.","upstream.automation.batch.plan.empty":"No change: every batch member already has the pool state its phase implies.","upstream.automation.batch.plan.col.auth":"Account","upstream.automation.batch.plan.col.batch":"Batch","upstream.automation.batch.plan.col.phase":"Phase","upstream.automation.batch.plan.col.change":"pool_state","upstream.automation.batch.plan.truncated":"… {{count}} more rows not shown","upstream.automation.batch.plan.skipped":"Skipped: {{summary}}","upstream.automation.batch.plan.skip.evicted":"{{count}} evicted","upstream.automation.batch.plan.skip.plan_lost":"{{count}} plan lost","upstream.automation.batch.plan.skip.tick_bound":"{{count}} over the tick bound","upstream.automation.batch.plan.skip.conflict":"{{count}} conflicts","upstream.automation.batch.plan.skip.other":"{{count}} {{reason}}","upstream.automation.invite.title":"Auto invite","upstream.automation.invite.intro":"Every invite path (manual and automatic) passes the invite gate; the automatic triggers below only fire while the gate is on.","upstream.automation.invite.surface":"Invite gate","upstream.automation.invite.surface_hint":"Mode: {{mode}}","upstream.automation.invite.auto":"Daily schedule","upstream.automation.invite.auto_hint":"At {{time}} · next {{next}} · window {{window}} · jitter {{jitter}} ms","upstream.automation.invite.no_window":"none","upstream.automation.invite.ooc":"Out-of-credits trigger","upstream.automation.invite.ooc_hint":"Cooldown {{cooldown}} min · max {{max}}/day","upstream.automation.invite.ooc_hint_inactive":"Inactive while the daily schedule is off · cooldown {{cooldown}} min · max {{max}}/day","upstream.automation.invite.time_decay":"Time-decay invites","upstream.automation.invite.time_decay_hint":"Rest {{rest}} days · max {{max}}/day · tick {{tick}} s","upstream.automation.invite.balance":"Balance check","upstream.automation.invite.balance_hint":"Window {{window}} · tick {{tick}} s","upstream.automation.invite.anchor_rule":"Soaking members are always locked out. The daily auto invite (and Invite all) touches \"awaiting invite\" members only once their plan is paid — members still on a free plan are left alone and the \"upgrade plan\" reminder flags them. The first successful invite, manual or automatic, records day 1; the next actuator tick moves the member wait → active.","upstream.automation.batch.demotion_cap":"The plan demotes {{planned}} rows, over the cap of {{cap}} per tick — the actuator will not write all of them.","upstream.automation.batch.demotion_cap_hint":"Re-check the purchase / start dates of the batches: many batches expiring at once usually means a shifted batch date.","upstream.automation.readiness.title":"Auto invite readiness","upstream.automation.readiness.intro":"Review before switching the auto invite schedule on: the preconditions, the rows the next fire will invite and the last fire's outcome. Read-only — no setting is changed here.","upstream.automation.readiness.generated_at":"Updated at {{time}} ({{tz}})","upstream.automation.readiness.generated_at_cached":"The server caches this result for a short while — after changing a setting, press Refresh and check the time advances.","upstream.automation.readiness.no_data":"No readiness data yet — this server does not expose the endpoint. Nothing is inferred from the current status.","upstream.automation.readiness.error.load":"Could not load the readiness checks.","upstream.automation.readiness.checks.title":"Preconditions","upstream.automation.readiness.checks.empty":"The server returned no checks.","upstream.automation.readiness.summary.ready":"Ready to switch on","upstream.automation.readiness.summary.ready_warn":"Ready to switch on — {{count}} warning(s) worth a look","upstream.automation.readiness.summary.pending":"{{count}} item(s) to resolve before switching on","upstream.automation.readiness.summary.unknown":"Not ready — the server returned no checks, so nothing is vouched for","upstream.automation.readiness.status.ok":"OK","upstream.automation.readiness.status.warn":"Warning","upstream.automation.readiness.status.fail":"Failed","upstream.automation.readiness.status.unknown":"Unknown","upstream.automation.readiness.fix_link":"Open where to fix","upstream.automation.readiness.preview.title":"Next fire preview","upstream.automation.readiness.preview.next_fire":"Next fire","upstream.automation.readiness.preview.mode":"Invite mode","upstream.automation.readiness.preview.window":"Invite window","upstream.automation.readiness.preview.window_ok":"Inside the window","upstream.automation.readiness.preview.window_blocked":"Outside the window — the fire will be blocked","upstream.automation.readiness.preview.max_per_fire":"Max per fire","upstream.automation.readiness.preview.email_pool":"Email pool","upstream.automation.readiness.preview.email_pool_value":"{{available}} available / {{needed}} needed","upstream.automation.readiness.preview.pool_short":"The email pool is {{count}} address(es) short for this fire — add emails before switching on.","upstream.automation.readiness.preview.cut":"{{count}} row(s) cut by the max of {{max}} per fire — they wait for the next one.","upstream.automation.readiness.preview.empty":"No row will be invited at the next fire.","upstream.automation.readiness.preview.table_caption":"{{count}} row(s) to invite","upstream.automation.readiness.preview.col.label":"Row","upstream.automation.readiness.preview.col.batch":"Batch","upstream.automation.readiness.preview.col.phase":"Phase","upstream.automation.readiness.preview.col.emails":"Emails","upstream.automation.readiness.preview.col.day1":"Day 1","upstream.automation.readiness.preview.day1_yes":"Starts day 1","upstream.automation.readiness.preview.truncated":"… and {{count}} more","upstream.automation.readiness.skipped":"Skipped: {{summary}}","upstream.automation.readiness.skip.limit_reached":"{{count}} at the invite limit","upstream.automation.readiness.skip.soaking":"{{count}} soaking","upstream.automation.readiness.skip.stale_warm":"{{count}} stale session, not warmed","upstream.automation.readiness.skip.free_plan":"{{count}} still on the free plan","upstream.automation.readiness.skip.future_anchor":"{{count}} before their start date","upstream.automation.readiness.skip.pool_empty":"{{count}} out of pool emails","upstream.automation.readiness.skip.already_claimed":"{{count}} already invited","upstream.automation.readiness.skip.max_per_fire_cut":"{{count}} over the max per fire","upstream.automation.readiness.skip.surface_gate_off":"{{count}} because the invite gate is off","upstream.automation.readiness.skip.other":"{{count}} {{reason}}","upstream.automation.readiness.last_run.title":"Last fire","upstream.automation.readiness.last_run.none":"No fire yet.","upstream.automation.readiness.last_run.all_failed":"The last fire attempted {{count}} row(s) and none succeeded — check the sessions and the email pool before switching on again.","upstream.automation.readiness.last_run.at":"When","upstream.automation.readiness.last_run.trigger":"Triggered by","upstream.automation.readiness.last_run.outcome":"Outcome","upstream.automation.readiness.last_run.outcome_value":"attempted {{attempted}} · ok {{ok}} · failed {{failed}}","upstream.automation.readiness.last_run.started_day1":"Started day 1","upstream.automation.readiness.last_run.duration":"Duration","upstream.automation.readiness.trigger.schedule":"Daily schedule","upstream.automation.readiness.trigger.ooc":"Out of credits","upstream.automation.readiness.trigger.manual":"Manual","upstream.automation.readiness.trigger.time_decay":"Time decay","upstream.automation.readiness.check.surface_gate":"Invite gate (Enable Invite)","upstream.automation.readiness.check.auto_enabled":"Daily auto invite","upstream.automation.readiness.check.mode":"Invite mode","upstream.automation.readiness.check.fire_time_window":"Fire time & window","upstream.automation.readiness.check.leader":"Leader lock (replica)","upstream.automation.readiness.check.email_pool":"Email pool","upstream.automation.readiness.check.stale_cookie":"Expired cookies","upstream.automation.readiness.check.invite_limit_zero":"Rows without an invite limit","upstream.automation.readiness.check.invite_over_limit":"Rows past their invite limit","upstream.automation.readiness.check.active_free":"Active free-plan rows (no batch)","upstream.automation.readiness.check.soaking_members":"Soaking batch members","upstream.automation.readiness.check.ready_paid_members":"Ready paid batch members","upstream.automation.readiness.check.actuator_enabled":"Batch actuator","upstream.automation.readiness.check.ooc_settings":"Out-of-credits trigger","upstream.automation.readiness.check.autoscale_decay_balance":"Autoscale · Time decay · Balance check","upstream.automation.readiness.check.recovery_reconciler":"Recovery reconciler","upstream.automation.readiness.check.last_run_health":"Recent fire health","upstream.automation.readiness.fix.surface_gate":"Turn on Enable Invite under Settings → Primary provider → Invites & seats (runbook invite-auto.md, checklist step 0).","upstream.automation.readiness.fix.auto_enabled":"Turn on Auto invite daily once every other item passes (hot, no restart — checklist step 16).","upstream.automation.readiness.fix.mode":"Set Invite mode to Standard for the first run; SFast needs Enable seat reset on.","upstream.automation.readiness.fix.fire_time_window":"Change Run time (GMT+7) or clear both Invite window bounds (start and end) for the first run.","upstream.automation.readiness.fix.leader":"Wait for the in-flight fire to finish; the invite_auto_leader metric names the replica holding the lock.","upstream.automation.readiness.fix.email_pool":"Load more addresses into the pool (Invite Emails) or reduce the participating rows.","upstream.automation.readiness.fix.stale_cookie":"Log in to the provider portal again for the rows with expired cookies.","upstream.automation.readiness.fix.invite_limit_zero":"Set an explicit invite_limit (e.g. 5) on every participating row in the Credentials tab.","upstream.automation.readiness.fix.invite_over_limit":"Raise invite_limit, or leave it if that row should stop inviting.","upstream.automation.readiness.fix.active_free":"Upgrade the plan or take the row out of the pool; auto invite keeps skipping it.","upstream.automation.readiness.fix.soaking_members":"Nothing to do — the batch opens after soak_days.","upstream.automation.readiness.fix.ready_paid_members":"Set is_available = true (with a live cookie) on the ready members that must start day 1.","upstream.automation.readiness.fix.actuator_enabled":"Turn on the batch actuator switch under Settings → Primary provider → Batches & plan upgrade (runbook invite-auto.md, checklist step 11).","upstream.automation.readiness.fix.ooc_settings":"Turn off Invite on out-of-credits banner for the first day; turn it back on after a clean run.","upstream.automation.readiness.fix.autoscale_decay_balance":"Turn off Enable pool autoscale, Time-decay invites and Balance check for the first day; re-enable one at a time.","upstream.automation.readiness.fix.recovery_reconciler":"Turn off Auth Recovery Reconciler (RECOV-OFF-1).","upstream.automation.readiness.fix.last_run_health":"Review the last fire and the invite history; fix the cause before enabling again.","upstream.dialog.reenable.title":"Re-enable account","upstream.dialog.reenable.title_available":"Set available","upstream.dialog.reenable.body":"Turning it back on makes it available, but the relay will not use it until it is In pool. Choose where it should land.","upstream.dialog.reenable.confirm":"Re-enable","upstream.dialog.reenable.confirm_available":"Set available","upstream.dialog.reenable.cancel":"Cancel","upstream.dialog.reenable.legend":"Pool membership","upstream.dialog.reenable.option.active":"Add to In pool","upstream.dialog.reenable.option.active_hint":"The relay can pick it right away.","upstream.dialog.reenable.option.wait":"Add to Wait pool","upstream.dialog.reenable.option.wait_hint":"The autoscaler may promote it to In pool.","upstream.dialog.reenable.option.none":"Keep Out of pool","upstream.dialog.reenable.option.none_hint":"Only the availability changes; pool membership stays as it is (Out of pool or Wait pool).","upstream.dialog.reenable.restore_hint":"Before it was taken out of the pool it was:","upstream.dialog.reenable.terminal":"The provider still blocks this account. Re-admitting it to the pool will not make it serve until the provider clears the block.","upstream.dialog.reenable.portal":"Fix this at the provider portal first, then Re-enable.","upstream.dialog.reenable.plan_free":"Free plan — keep-alive or the plan gate will take this account out of the pool again.","upstream.dialog.reenable.plan_expired":"Plan expired — keep-alive or the plan gate will take this account out of the pool again.","upstream.dialog.reenable.super_admin_only":"Only a super-admin can add this account to the pool. It is re-enabled in place; ask a super-admin to add it to the pool.","upstream.dialog.reenable.version_mismatch":"This account changed in the meantime. Nothing was written — the list has been reloaded; try again.","{{n}} of {{m}} selected are Out of pool or Standby":"{{n}} of {{m}} selected are Out of pool or Wait pool","upstream.plan.free":"Free plan","upstream.plan.expired":"Plan expired","upstream.conditions.title":"Conditions","upstream.conditions.col.axis":"Axis","upstream.conditions.col.value":"Value","upstream.conditions.col.reason":"Reason / detail","upstream.conditions.col.since":"Since","upstream.conditions.col.until":"Until / retry","upstream.conditions.axis.pool":"Pool","upstream.conditions.axis.verdict":"Verdict","upstream.conditions.axis.availability":"Availability","upstream.conditions.axis.runtime":"Runtime","upstream.conditions.axis.lifecycle":"Lifecycle","upstream.conditions.axis.session":"Session","upstream.conditions.axis.plan":"Plan","upstream.conditions.axis.age":"Age","upstream.conditions.axis.recovery":"Recovery","upstream.conditions.axis.selection":"Selection","upstream.conditions.pool.source.manual":"Set by an operator","upstream.conditions.pool.source.auto":"Promoted by the autoscaler","upstream.conditions.pool.source.evicted":"Evicted by the system","upstream.conditions.basis.replica":"Checked against this replica's runtime snapshot","upstream.conditions.basis.db":"Database only — runtime not consulted","upstream.conditions.runtime.loaded":"Loaded on this replica","upstream.conditions.lifecycle.proven":"Proven","upstream.conditions.recovery.expected":"Expected recovery","upstream.conditions.selection.last_served":"Last served","upstream.conditions.selection.last_excluded":"Last excluded","upstream.conditions.age.not_applicable":"Not applicable","upstream.conditions.age.not_applicable_paid":"Not applicable — paid plan","upstream.conditions.recovery.never_auto_disabled":"Never auto-disabled","upstream.conditions.selection.none":"No selection data yet","upstream.conditions.selection.none_hint":"The relay records selection data the first time it picks this account for a request.","upstream.help.precedence":"Status shows the most urgent fact, in this order: Suspended › Token revoked › Plan lost › Out of credits › Low credits › Portal session rejected › Re-login needed › Low health › Upstream auth failing › Disabled (other) › Marker unreadable › Free plan › Turned off › Cooling down › Blocked (runtime) › Unproven › Session stale › Serving / Ready. Pool is independent: In pool / Wait pool / Out of pool. ● means the credential is eligible — the relay may still skip it for reserve-bucket or ACL rules.","upstream.help.group.terminal":"Provider blocked","upstream.help.group.recoverable":"Recovering","upstream.help.group.operator":"Operator","upstream.help.group.runtime":"Runtime","upstream.help.group.lifecycle":"Lifecycle","upstream.help.group.session":"Portal session","upstream.help.group.healthy":"Healthy","upstream.help.do.terminal":"Fix it on the provider portal, then Re-enable.","upstream.help.do.recoverable":"Re-login or top up when the label says so; after a manual top-up, Re-enable by hand.","upstream.help.do.operator":"Set Available (or Re-enable) when you want it back.","upstream.help.do.runtime":"A replica holds it for a while; it clears by itself.","upstream.help.do.lifecycle":"Upgrade the Free plan, or send traffic to prove a new account.","upstream.help.do.session":"Re-login on the portal; relay traffic is unaffected.","upstream.help.do.healthy":"Nothing to do — Activate a Ready row to make it serve.","upstream.help.do.upgrade_ready":"The window is open: Open checkout, then Confirm plan update.","upstream.help.do.upgrade_soon":"The window opens on the date in the chip — wait.","upstream.help.do.age_unknown":"No billing anchor yet — run Refresh plan info.","upstream.help.warm_outcome":"The badge in the \"Last warmed\" column / tile is the result of the latest keep-alive run, not the account status — Status always follows the precedence order above.","upstream.warm.refreshed":"Refreshed","upstream.warm.alive":"Session alive","upstream.warm.expired":"Expired (portal)","upstream.warm.needs_reauth":"Portal login required","upstream.warm.transient_error":"Transient error","upstream.warm.version_conflict":"Version conflict","upstream.warm.notStatus":"Keep-alive result — not the account status","upstream.warm.confirm.terminal.message":"Run keep-alive for this account now? It refreshes the portal session when it can and records the outcome under \"Last warmed\".","upstream.warm.confirm.terminal.warning":"Account is {{status}} — the warm result will not change this status.","upstream.age.cycle.day":"Cycle day","upstream.age.cycle.estimated":"Estimated cycle","upstream.age.window.n_a":"N/A","upstream.age.window.unknown":"Unknown","upstream.age.window.waiting":"Waiting","upstream.age.window.ready":"Ready","upstream.age.window.expiring":"Expiring","upstream.age.window.opens_at":"opens","upstream.age.window.closes_at":"closes","upstream.age.unknown.no_bpe":"No billing period end yet","upstream.age.unknown.bpe_stale":"Billing period end is stale","upstream.age.unknown.bpe_future":"Billing period end is too far ahead","upstream.age.unknown.not_free":"Not a Free plan","upstream.age.unknown.hint":"Not warmed yet, session expired or plan not observed — run Refresh plan info.","upstream.age.upgrade.usable_days":"Usable days after upgrading today","upstream.age.upgrade.credits_on_upgrade":"Credits on upgrade","upstream.age.upgrade.topup_credits_today":"top-up if purchased today","upstream.age.upgrade.verified":"verified","upstream.age.cost.upgrade_today":"today","upstream.age.cost.through_cycle_end":"through cycle end","upstream.age.cost.estimated_label":"estimated · model","upstream.age.cost.disclaimer":"Estimate only — not verified against an invoice.","upstream.age.filter.upgrade":"Upgrade window","upstream.age.filter.upgrade.all":"All","upstream.age.filter.upgrade.ready":"Ready to upgrade","upstream.age.filter.upgrade.soon":"Upgrade soon","upstream.age.filter.upgrade.waiting":"Waiting","upstream.age.filter.upgrade.unknown":"Age unknown","upstream.age.sort.window_opens_at":"Window opens","upstream.age.sort.requires_filter":"Sorting by window needs the Upgrade window or Free plan filter — sort reset.","upstream.age.tile.upgrade_ready":"Ready to upgrade","upstream.age.tile.upgrade_soon":"Upgrade soon","upstream.age.tile.next_opens":"next opens","upstream.age.tile.unknown":"Too many Free accounts to count the window for every row.","upstream.age.tooltip.title":"Upgrade window","upstream.age.tooltip.cycle":"Cycle","upstream.age.tooltip.window":"Window","upstream.age.tooltip.usable":"Upgrade today","upstream.age.tooltip.session_stale":"Session expired — an upgrade cannot be detected automatically; re-login first.","upstream.age.hero.label":"Age","upstream.age.hero.reported":"reported","upstream.age.action.open_checkout":"Open checkout","upstream.age.action.confirm_plan_update":"Confirm plan update","upstream.age.action.refresh_plan":"Refresh plan info","upstream.age.dialog.checkout.title":"Open checkout","upstream.age.dialog.checkout.body":"Creates a Stripe checkout link for Indie and opens it in a new tab. The link is single-use and is not stored.","upstream.age.dialog.checkout.estimate_warning":"The cost shown is an estimate from the operator model, not an invoice.","upstream.age.dialog.checkout.acknowledge":"I understand this is an estimate","upstream.age.dialog.checkout.opened":"Checkout opened in a new tab.","upstream.age.dialog.checkout.applied_directly":"Plan change applied directly — no checkout needed.","upstream.age.dialog.checkout.no_link":"No checkout link was returned.","upstream.age.dialog.checkout.mode_manual":"Checkout links are off (UPGRADE_MODE=manual). Upgrade on the portal, then use Confirm plan update.","upstream.age.dialog.confirm.body":"Re-reads the plan now. If the account is already on Indie, the pending marker is cleared and the account is set available again.","upstream.age.dialog.confirm.readmit":"With auto re-admit on it returns to:","upstream.age.toast.confirmed":"Plan update confirmed.","upstream.age.toast.still_old_plan":"The portal still reports the old plan.","upstream.age.toast.refreshed":"Plan info refreshed — billing period end:","upstream.age.toast.unchanged":"Plan info unchanged — billing period end:","upstream.age.toast.session_expired":"Session expired — re-login before refreshing plan info.","Failed to refresh data {{count}} times. Auto-refresh will retry with backoff._one":"Failed to refresh data {{count}} time. Auto-refresh will retry with backoff.","Failed to refresh data {{count}} times. Auto-refresh will retry with backoff._other":"Failed to refresh data {{count}} times. Auto-refresh will retry with backoff.","Failed to refresh data {{count}} times. Auto-refresh is paused — click Refresh, return to this tab, or reconnect to resume._one":"Failed to refresh data {{count}} time. Auto-refresh is paused — click Refresh, return to this tab, or reconnect to resume.","Failed to refresh data {{count}} times. Auto-refresh is paused — click Refresh, return to this tab, or reconnect to resume._other":"Failed to refresh data {{count}} times. Auto-refresh is paused — click Refresh, return to this tab, or reconnect to resume.","{{count}} open anomalies_one":"{{count}} open anomaly","{{count}} open anomalies_other":"{{count}} open anomalies","{{count}} users opted in_one":"{{count}} user opted in","{{count}} users opted in_other":"{{count}} users opted in","{{count}} new requests buffered while paused_one":"{{count}} new request buffered while paused","{{count}} new requests buffered while paused_other":"{{count}} new requests buffered while paused","{{count}} accounts_one":"{{count}} account","{{count}} accounts_other":"{{count}} accounts","Activate {{count}} selected accounts into the relay pool?_one":"Activate {{count}} selected account into the relay pool?","Activate {{count}} selected accounts into the relay pool?_other":"Activate {{count}} selected accounts into the relay pool?","Move {{count}} selected accounts to the wait pool? Active accounts stop serving relay traffic immediately._one":"Move {{count}} selected account to the wait pool? An active account stops serving relay traffic immediately.","Move {{count}} selected accounts to the wait pool? Active accounts stop serving relay traffic immediately._other":"Move {{count}} selected accounts to the wait pool? Active accounts stop serving relay traffic immediately.","Remove {{count}} selected accounts from the pool? Active accounts stop serving relay traffic immediately._one":"Remove {{count}} selected account from the pool? An active account stops serving relay traffic immediately.","Remove {{count}} selected accounts from the pool? Active accounts stop serving relay traffic immediately._other":"Remove {{count}} selected accounts from the pool? Active accounts stop serving relay traffic immediately.","Reset seat/invite counters (DB only) for {{count}} selected accounts? The provider portal is not called._one":"Reset seat/invite counters (DB only) for {{count}} selected account? The provider portal is not called.","Reset seat/invite counters (DB only) for {{count}} selected accounts? The provider portal is not called._other":"Reset seat/invite counters (DB only) for {{count}} selected accounts? The provider portal is not called.","Clear the adaptive RPM ceiling for {{count}} selected accounts? The limiter restarts from each account's configured RPM._one":"Clear the adaptive RPM ceiling for {{count}} selected account? The limiter restarts from the account's configured RPM.","Clear the adaptive RPM ceiling for {{count}} selected accounts? The limiter restarts from each account's configured RPM._other":"Clear the adaptive RPM ceiling for {{count}} selected accounts? The limiter restarts from each account's configured RPM.","{{count}} bindings_one":"{{count}} binding","{{count}} bindings_other":"{{count}} bindings","{{count}} proxies over capacity_one":"{{count}} proxy over capacity","{{count}} proxies over capacity_other":"{{count}} proxies over capacity","Selected {{count}} upstream accounts_one":"Selected {{count}} upstream account","Selected {{count}} upstream accounts_other":"Selected {{count}} upstream accounts","Selected {{count}} proxy servers_one":"Selected {{count}} proxy server","Selected {{count}} proxy servers_other":"Selected {{count}} proxy servers","{{count}} permissions_one":"{{count}} permission","{{count}} permissions_other":"{{count}} permissions","{{count}} keys_one":"{{count}} key","{{count}} keys_other":"{{count}} keys","Imported {{count}} upstream accounts_one":"Imported {{count}} upstream account","Imported {{count}} upstream accounts_other":"Imported {{count}} upstream accounts","{{count}} transfers processed_one":"{{count}} transfer processed","{{count}} transfers processed_other":"{{count}} transfers processed","Resolve {{count}} selected anomalies._one":"Resolve {{count}} selected anomaly.","Resolve {{count}} selected anomalies._other":"Resolve {{count}} selected anomalies.","Resolved {{count}} anomalies._one":"Resolved {{count}} anomaly.","Resolved {{count}} anomalies._other":"Resolved {{count}} anomalies.","Resolved {{count}} anomalies. {{remaining}} still match — run again to continue._one":"Resolved {{count}} anomaly. {{remaining}} still match — run again to continue.","Resolved {{count}} anomalies. {{remaining}} still match — run again to continue._other":"Resolved {{count}} anomalies. {{remaining}} still match — run again to continue.","{{count}} upstream accounts_one":"{{count}} upstream account","{{count}} upstream accounts_other":"{{count}} upstream accounts","View all {{count}} models_one":"View {{count}} model","View all {{count}} models_other":"View all {{count}} models","{{count}} notes total_one":"{{count}} note total","{{count}} notes total_other":"{{count}} notes total","{{count}} results_one":"{{count}} result","{{count}} results_other":"{{count}} results","Successfully updated {{count}} billing rules_one":"Successfully updated {{count}} billing rule","Successfully updated {{count}} billing rules_other":"Successfully updated {{count}} billing rules","{{count}} models_one":"{{count}} model","{{count}} models_other":"{{count}} models","{{count}} customers_one":"{{count}} customer","{{count}} customers_other":"{{count}} customers","{{count}} members_one":"{{count}} member","{{count}} members_other":"{{count}} members","{{count}} profiles_one":"{{count}} profile","{{count}} profiles_other":"{{count}} profiles","CPU ({{count}} cores)_one":"CPU ({{count}} core)","CPU ({{count}} cores)_other":"CPU ({{count}} cores)","Mark {{count}} emails as unused? They will be included in the next Invite all run._one":"Mark {{count}} email as unused? It will be included in the next Invite all run.","Mark {{count}} emails as unused? They will be included in the next Invite all run._other":"Mark {{count}} emails as unused? They will be included in the next Invite all run.","{{count}} emails marked as unused_one":"{{count}} email marked as unused","{{count}} emails marked as unused_other":"{{count}} emails marked as unused","Delete {{count}} emails from the pool? This cannot be undone._one":"Delete {{count}} email from the pool? This cannot be undone.","Delete {{count}} emails from the pool? This cannot be undone._other":"Delete {{count}} emails from the pool? This cannot be undone.","{{count}} emails deleted_one":"{{count}} email deleted","{{count}} emails deleted_other":"{{count}} emails deleted","{{count}} unused emails_one":"{{count}} unused email","{{count}} unused emails_other":"{{count}} unused emails","{{count}} emails reset to unused_one":"{{count}} email reset to unused","{{count}} emails reset to unused_other":"{{count}} emails reset to unused","Invite the stored email pool from {{count}} selected accounts? Pending invitations are cancelled right after sending._one":"Invite the stored email pool from {{count}} selected account? Pending invitations are cancelled right after sending.","Invite the stored email pool from {{count}} selected accounts? Pending invitations are cancelled right after sending._other":"Invite the stored email pool from {{count}} selected accounts? Pending invitations are cancelled right after sending.","Invite the stored email pool from {{count}} selected accounts (mode: {{mode}})? Pending invitations are cancelled right after sending._one":"Invite the stored email pool from {{count}} selected account (mode: {{mode}})? Pending invitations are cancelled right after sending.","Invite the stored email pool from {{count}} selected accounts (mode: {{mode}})? Pending invitations are cancelled right after sending._other":"Invite the stored email pool from {{count}} selected accounts (mode: {{mode}})? Pending invitations are cancelled right after sending.","{{labels}} start serving today ({{count}} accounts)_one":"{{labels}} start serving today ({{count}} account)","{{labels}} start serving today ({{count}} accounts)_other":"{{labels}} start serving today ({{count}} accounts)","Cost today: {{today}} · Month {{month}}: {{serve}} serving + {{buy}} purchases ({{count}} batches) · estimate_one":"Cost today: {{today}} · Month {{month}}: {{serve}} serving + {{buy}} purchases ({{count}} batch) · estimate","Cost today: {{today}} · Month {{month}}: {{serve}} serving + {{buy}} purchases ({{count}} batches) · estimate_other":"Cost today: {{today}} · Month {{month}}: {{serve}} serving + {{buy}} purchases ({{count}} batches) · estimate","Warm all {{count}} provider accounts now, including healthy ones?_one":"Warm {{count}} provider account now, even if healthy?","Warm all {{count}} provider accounts now, including healthy ones?_other":"Warm all {{count}} provider accounts now, including healthy ones?","Invite the stored email pool from all {{count}} provider accounts? Each batch uses the next unused pool emails; pending invitations are cancelled right after sending._one":"Invite the stored email pool from {{count}} provider account? Each batch uses the next unused pool emails; pending invitations are cancelled right after sending.","Invite the stored email pool from all {{count}} provider accounts? Each batch uses the next unused pool emails; pending invitations are cancelled right after sending._other":"Invite the stored email pool from all {{count}} provider accounts? Each batch uses the next unused pool emails; pending invitations are cancelled right after sending.","Fast-invite the stored email pool from ALL {{count}} provider accounts? This is one server-side fan-out over every account — the current filter and selection are ignored. Fast mode skips every confirmation step (no per-email verify, no cancel confirmation) — leftover invitations may keep holding seats._one":"Fast-invite the stored email pool from {{count}} provider account? This is one server-side fan-out over every account — the current filter and selection are ignored. Fast mode skips every confirmation step (no per-email verify, no cancel confirmation) — leftover invitations may keep holding seats.","Fast-invite the stored email pool from ALL {{count}} provider accounts? This is one server-side fan-out over every account — the current filter and selection are ignored. Fast mode skips every confirmation step (no per-email verify, no cancel confirmation) — leftover invitations may keep holding seats._other":"Fast-invite the stored email pool from ALL {{count}} provider accounts? This is one server-side fan-out over every account — the current filter and selection are ignored. Fast mode skips every confirmation step (no per-email verify, no cancel confirmation) — leftover invitations may keep holding seats.","Run the pure seat cycle on ALL {{count}} provider accounts? This is one server-side fan-out over every account — the current filter and selection are ignored. SFast only expands seats and resets them back — no invitation is sent and no pool email is consumed._one":"Run the pure seat cycle on {{count}} provider account? This is one server-side fan-out over every account — the current filter and selection are ignored. SFast only expands seats and resets them back — no invitation is sent and no pool email is consumed.","Run the pure seat cycle on ALL {{count}} provider accounts? This is one server-side fan-out over every account — the current filter and selection are ignored. SFast only expands seats and resets them back — no invitation is sent and no pool email is consumed._other":"Run the pure seat cycle on ALL {{count}} provider accounts? This is one server-side fan-out over every account — the current filter and selection are ignored. SFast only expands seats and resets them back — no invitation is sent and no pool email is consumed.","{{count}} pending invites cancelled_one":"{{count}} pending invite cancelled","{{count}} pending invites cancelled_other":"{{count}} pending invites cancelled","{{count}} days_one":"{{count}} day","{{count}} days_other":"{{count}} days","Generated {{count}} codes_one":"Generated {{count}} code","Generated {{count}} codes_other":"Generated {{count}} codes","{{count}} accounts with unpaid invoices — total {{total}}_one":"{{count}} account with unpaid invoices — total {{total}}","{{count}} accounts with unpaid invoices — total {{total}}_other":"{{count}} accounts with unpaid invoices — total {{total}}","Reassign {{count}} customers_one":"Reassign {{count}} customer","Reassign {{count}} customers_other":"Reassign {{count}} customers","Randomly reassign {{count}} selected customers within your team?_one":"Randomly reassign {{count}} selected customer within your team?","Randomly reassign {{count}} selected customers within your team?_other":"Randomly reassign {{count}} selected customers within your team?","Reassigned {{count}} customers_one":"Reassigned {{count}} customer","Reassigned {{count}} customers_other":"Reassigned {{count}} customers","Role limit: up to {{count}} transactions (deposits + manual top-ups combined) per convert. This is a per-role cap, not an error._one":"Role limit: up to {{count}} transaction (deposit or manual top-up) per convert. This is a per-role cap, not an error.","Role limit: up to {{count}} transactions (deposits + manual top-ups combined) per convert. This is a per-role cap, not an error._other":"Role limit: up to {{count}} transactions (deposits + manual top-ups combined) per convert. This is a per-role cap, not an error.","{{count}} settings_one":"{{count}} setting","{{count}} settings_other":"{{count}} settings","+{{percent}}% · {{count}} extra calls_one":"+{{percent}}% · {{count}} extra call","+{{percent}}% · {{count}} extra calls_other":"+{{percent}}% · {{count}} extra calls","{{count}} grants · {{amount}} credits_one":"{{count}} grant · {{amount}} credits","{{count}} grants · {{amount}} credits_other":"{{count}} grants · {{amount}} credits","{{count}} deposits · {{ton}} TON_one":"{{count}} deposit · {{ton}} TON","{{count}} deposits · {{ton}} TON_other":"{{count}} deposits · {{ton}} TON","{{count}} valid keys = {{count}} winner slots (blank lines and duplicates are ignored)._one":"{{count}} valid key = {{count}} winner slot (blank lines and duplicates are ignored).","{{count}} valid keys = {{count}} winner slots (blank lines and duplicates are ignored)._other":"{{count}} valid keys = {{count}} winner slots (blank lines and duplicates are ignored).","Key drop fired — {{count}} keys loaded. The bot posts it next poll cycle._one":"Key drop fired — {{count}} key loaded. The bot posts it next poll cycle.","Key drop fired — {{count}} keys loaded. The bot posts it next poll cycle._other":"Key drop fired — {{count}} keys loaded. The bot posts it next poll cycle.","{{count}} invites_one":"{{count}} invite","{{count}} invites_other":"{{count}} invites","{{count}} assigned keys not delivered yet_one":"{{count}} assigned key not delivered yet","{{count}} assigned keys not delivered yet_other":"{{count}} assigned keys not delivered yet","Showing the newest {{count}} claims._one":"Showing the newest {{count}} claim.","Showing the newest {{count}} claims._other":"Showing the newest {{count}} claims.","Users with requests in the last {{count}} minutes, across all providers_one":"Users with requests in the last {{count}} minute, across all providers","Users with requests in the last {{count}} minutes, across all providers_other":"Users with requests in the last {{count}} minutes, across all providers","{{count}} active users_one":"{{count}} active user","{{count}} active users_other":"{{count}} active users","No users active in the last {{count}} minutes_one":"No users active in the last {{count}} minute","No users active in the last {{count}} minutes_other":"No users active in the last {{count}} minutes","Users with requests in the last {{count}} minutes on {{provider}}_one":"Users with requests in the last {{count}} minute on {{provider}}","Users with requests in the last {{count}} minutes on {{provider}}_other":"Users with requests in the last {{count}} minutes on {{provider}}","{{count}} cached tokens_one":"{{count}} cached token","{{count}} cached tokens_other":"{{count}} cached tokens","{{pct}} of {{count}} signals_one":"{{pct}} of {{count}} signal","{{pct}} of {{count}} signals_other":"{{pct}} of {{count}} signals","Export the whole filtered set as CSV (up to {{count}} rows)_one":"Export the whole filtered set as CSV (up to {{count}} row)","Export the whole filtered set as CSV (up to {{count}} rows)_other":"Export the whole filtered set as CSV (up to {{count}} rows)","Export capped at {{count}} rows — narrow the filter for the rest._one":"Export capped at {{count}} row — narrow the filter for the rest.","Export capped at {{count}} rows — narrow the filter for the rest._other":"Export capped at {{count}} rows — narrow the filter for the rest.","Up to {{count}} input tokens per request_one":"Up to {{count}} input token per request","Up to {{count}} input tokens per request_other":"Up to {{count}} input tokens per request","Contributions today: {{count}} messages → +{{bonus}}_one":"Contributions today: {{count}} message → +{{bonus}}","Contributions today: {{count}} messages → +{{bonus}}_other":"Contributions today: {{count}} messages → +{{bonus}}","{{count}} active subscriptions still reference this group. Wait for them to lapse or move the holders first._one":"{{count}} active subscription still references this group. Wait for it to lapse or move the holder first.","{{count}} active subscriptions still reference this group. Wait for them to lapse or move the holders first._other":"{{count}} active subscriptions still reference this group. Wait for them to lapse or move the holders first.","{{count}} active subscriptions still reference this plan. Disable it instead of deleting or re-wiring it._one":"{{count}} active subscription still references this plan. Disable it instead of deleting or re-wiring it.","{{count}} active subscriptions still reference this plan. Disable it instead of deleting or re-wiring it._other":"{{count}} active subscriptions still reference this plan. Disable it instead of deleting or re-wiring it.","This user still has {{count}} active subscriptions. Cancel them before removing every group._one":"This user still has {{count}} active subscription. Cancel it before removing every group.","This user still has {{count}} active subscriptions. Cancel them before removing every group._other":"This user still has {{count}} active subscriptions. Cancel them before removing every group.","{{count}} keys bound_one":"{{count}} key bound","{{count}} keys bound_other":"{{count}} keys bound","{{count}} revoked keys hidden_one":"{{count}} revoked key hidden","{{count}} revoked keys hidden_other":"{{count}} revoked keys hidden","{{count}} days left_one":"{{count}} day left","{{count}} days left_other":"{{count}} days left","{{count}} keys on credits_one":"{{count}} key on credits","{{count}} keys on credits_other":"{{count}} keys on credits","{{count}} failures_one":"{{count}} failure","{{count}} failures_other":"{{count}} failures","+{{count}} other groups_one":"+{{count}} other group","+{{count}} other groups_other":"+{{count}} other groups","Skipped {{count}} existing members — their expiry was not changed. Use Extend on each member to update it._one":"Skipped {{count}} existing member — their expiry was not changed. Use Extend on the member to update it.","Skipped {{count}} existing members — their expiry was not changed. Use Extend on each member to update it._other":"Skipped {{count}} existing members — their expiry was not changed. Use Extend on each member to update it.","{{count}} selected proxies would exceed their per-provider cap after this bind. Manual binds are still applied; Auto placement will skip them._one":"{{count}} selected proxy would exceed its per-provider cap after this bind. Manual binds are still applied; Auto placement will skip it.","{{count}} selected proxies would exceed their per-provider cap after this bind. Manual binds are still applied; Auto placement will skip them._other":"{{count}} selected proxies would exceed their per-provider cap after this bind. Manual binds are still applied; Auto placement will skip them.","Fair use: up to {{count}} Go-model calls per day_one":"Fair use: up to {{count}} Go-model call per day","Fair use: up to {{count}} Go-model calls per day_other":"Fair use: up to {{count}} Go-model calls per day","You've reached your {{plan}} plan's daily cap of {{count}} Go-model calls. Upgrade {{plan}} for a higher cap._one":"You've reached your {{plan}} plan's daily cap of {{count}} Go-model call. Upgrade {{plan}} for a higher cap.","You've reached your {{plan}} plan's daily cap of {{count}} Go-model calls. Upgrade {{plan}} for a higher cap._other":"You've reached your {{plan}} plan's daily cap of {{count}} Go-model calls. Upgrade {{plan}} for a higher cap.","{{count}} announcements set to \"Every visit\" for this audience ({{ids}}) — users will see them all on every dashboard visit._one":"{{count}} announcement set to \"Every visit\" for this audience ({{ids}}) — users will see it on every dashboard visit.","{{count}} announcements set to \"Every visit\" for this audience ({{ids}}) — users will see them all on every dashboard visit._other":"{{count}} announcements set to \"Every visit\" for this audience ({{ids}}) — users will see them all on every dashboard visit.","{{count}} IPs_one":"{{count}} IP","{{count}} IPs_other":"{{count}} IPs","First {{count}} rows (partial)_one":"First {{count}} row (partial)","First {{count}} rows (partial)_other":"First {{count}} rows (partial)","upstream.automation.readiness.detail.unknown":"Could not read the data — reload; if it persists, check the server log.","upstream.automation.readiness.detail.surface_gate_off":"Enable Invite is off — every automatic fire is skipped (surface_gate_off).","upstream.automation.readiness.detail.surface_gate_on":"The invite gate is open.","upstream.automation.readiness.detail.auto_enabled_on":"Daily auto invite is on — fires at {{time}} (GMT+7).","upstream.automation.readiness.detail.auto_enabled_off":"Not on yet — turn on Auto invite daily once the remaining items pass.","upstream.automation.readiness.detail.mode_sfast_seat_reset_off":"SFast mode needs Enable seat reset on; it is off, so every row is skipped (seat_reset_disabled).","upstream.automation.readiness.detail.mode_unknown":"Unexpected value — the worker runs as standard.","upstream.automation.readiness.detail.fire_outside_window":"The fire time is outside the allowed window — the fire is skipped, not postponed.","upstream.automation.readiness.detail.fire_near_midnight":"The fire time is close to midnight GMT+7 — the claim ledger's day_key may change mid-run; move it away from 00:00.","upstream.automation.readiness.detail.fire_half_window":"Only one window bound is set, or both are equal — the worker treats the window as unbounded.","upstream.automation.readiness.detail.fire_next":"Next fire: {{at}} (GMT+7).","upstream.automation.readiness.detail.leader_held":"A replica holds the leader lock — a fire is in flight; this replica skips (not_leader) until the lock is released.","upstream.automation.readiness.detail.leader_free":"No replica holds the lock — the replica answering will lead the next fire.","upstream.automation.readiness.detail.email_pool_empty":"The email pool is empty — the whole fire is skipped (pool_empty).","upstream.automation.readiness.detail.email_pool_short":"{{count}} unused address(es) short — the auto-reset reuses sent addresses; load more if you do not want that.","upstream.automation.readiness.detail.stale_cookie_rows":"{{count}} row(s) have an expired cookie — the run warms them first and skips the ones it cannot restore (stale_warm); log in again if you need that row.","upstream.automation.readiness.detail.invite_limit_zero_rows":"{{count}} row(s) have invite_limit = 0 (unlimited) — the convention is an explicit limit (e.g. 5) on every participating row.","upstream.automation.readiness.detail.invite_over_limit_rows":"{{count}} row(s) have invite_count ≥ invite_limit — skipped permanently (limit_reached) until the limit is changed.","upstream.automation.readiness.detail.active_free_rows":"{{count}} active free-plan row(s) outside any batch — auto invite skips them (free_plan); upgrade or leave as is.","upstream.automation.readiness.detail.soaking_members":"{{count}} batch member(s) are soaking — not invited until serve_start.","upstream.automation.readiness.detail.ready_paid_blocked":"{{blocked}}/{{total}} ready member(s) (paid plan, no day 1 yet) have is_available=false or no cookie — they will not be invited and will not start day 1.","upstream.automation.readiness.detail.ready_paid_ok":"{{count}} ready member(s) (paid plan, no day 1 yet) take priority at the next fire.","upstream.automation.readiness.detail.actuator_off_scheduled":"The batch actuator is off but {{count}} batch member(s) are scheduled — after the first invite they will not move wait→active.","upstream.automation.readiness.detail.actuator_off_idle":"Off — no scheduled batch member yet, so it is not needed.","upstream.automation.readiness.detail.ooc_on_first_day":"Invite on out-of-credits is on (default) — turn it off for the first day so the schedule is the only trigger.","upstream.automation.readiness.detail.ooc_on":"Invite on out-of-credits is on — the schedule is no longer the only trigger; turn it off unless intended.","upstream.automation.readiness.detail.triggers_on_first_day":"An independent trigger feeds the same invite chain — turn all three off for the first day and re-enable one at a time after a clean run.","upstream.automation.readiness.detail.triggers_on":"An independent trigger feeds the same invite chain (pool autoscale / time decay / balance check) — turn off the unintended ones so the schedule is the only trigger.","upstream.automation.readiness.detail.recovery_on":"Auth Recovery Reconciler is on — it is retired for out_of_credits (RECOV-OFF-1); do not rely on it as a safety net.","upstream.automation.readiness.detail.last_run_none":"No automatic fire has been recorded yet.","upstream.automation.readiness.detail.last_run_bad_streak":"{{count}} consecutive day(s) the fire failed or was skipped — check the login sessions, the email pool and the gates before enabling again.","upstream.automation.readiness.detail.last_run_bad_once":"The last fire failed or was skipped — see the reason under Last fire.","upstream.automation.readiness.value.on":"On","upstream.automation.readiness.value.off":"Off","upstream.automation.readiness.value.window_unbounded":"{{time}} · no window","upstream.automation.readiness.value.window":"{{time}} · window {{start}}–{{end}}","upstream.automation.readiness.value.window_invalid":"{{time}} · invalid window (ignored)","upstream.automation.readiness.value.leader_held":"held","upstream.automation.readiness.value.leader_free":"free","upstream.automation.readiness.value.email_pool":"{{unused}} unused / {{total}} total · need {{needed}}","upstream.automation.readiness.value.ooc":"{{on}} · cooldown {{cooldown}} min · max {{max}}/day","upstream.automation.readiness.value.triggers":"autoscale {{autoscale}} · decay {{decay}} · balance {{balance}}","upstream.automation.readiness.value.last_run":"{{at}} · {{ok}}/{{total}} OK","upstream.automation.readiness.value.last_run_skipped":"{{at}} · skipped","upstream.automation.readiness.value.last_run_none":"—","system.failover.subsystem.rate_limit":"rate limit (RATE_LIMIT_REDIS_ENABLED + RATE_LIMIT_REDIS_ADDR)","system.failover.subsystem.daily_usage":"daily usage quota (DAILY_USAGE_REDIS_ENABLED + DAILY_USAGE_REDIS_ADDR)","system.failover.subsystem.slot":"slot counter (SLOT_REDIS_ENABLED + SLOT_REDIS_ADDR)","system.failover.subsystem.init_bootstrap":"init-bootstrap lockout (INIT_BOOTSTRAP_REDIS_ENABLED + INIT_BOOTSTRAP_REDIS_ADDR)","system.failover.subsystem.idempotency":"billing idempotency (IDEMPOTENCY_REDIS_ENABLED + IDEMPOTENCY_REDIS_ADDR)","system.failover.subsystem.pass_devices":"pass device tracker (PASS_DEVICES_REDIS_ENABLED + PASS_DEVICES_REDIS_ADDR)","system.failover.subsystem.weekly_usage":"weekly usage quota (WEEKLY_USAGE_REDIS_ENABLED + WEEKLY_USAGE_REDIS_ADDR)","system.failover.subsystem.totp_replay":"TOTP replay guard (TOTP_REPLAY_REDIS_ENABLED + TOTP_REPLAY_REDIS_ADDR)","system.failover.subsystem.revocation":"token revocation propagation (REVOCATION_REDIS_ENABLED + REVOCATION_REDIS_ADDR)","system.failover.subsystem.mfa_session":"MFA ceremony sessions (MFA_SESSION_REDIS_ENABLED + MFA_SESSION_REDIS_ADDR)"}