fix(client): use tabler icons (#9915)
This commit is contained in:
parent
7436a58ea1
commit
5cf5b66696
14 changed files with 52 additions and 52 deletions
|
@ -9,7 +9,7 @@
|
||||||
>
|
>
|
||||||
<MkNoteSub v-if="appearNote.reply && !renoteCollapsed" :note="appearNote.reply" :class="$style.replyTo"/>
|
<MkNoteSub v-if="appearNote.reply && !renoteCollapsed" :note="appearNote.reply" :class="$style.replyTo"/>
|
||||||
<div v-if="pinned" :class="$style.tip"><i class="ti ti-pin"></i> {{ i18n.ts.pinnedNote }}</div>
|
<div v-if="pinned" :class="$style.tip"><i class="ti ti-pin"></i> {{ i18n.ts.pinnedNote }}</div>
|
||||||
<!--<div v-if="appearNote._prId_" class="tip"><i class="fas fa-bullhorn"></i> {{ i18n.ts.promotion }}<button class="_textButton hide" @click="readPromo()">{{ i18n.ts.hideThisNote }} <i class="ti ti-x"></i></button></div>-->
|
<!--<div v-if="appearNote._prId_" class="tip"><i class="ti ti-speakerphone"></i> {{ i18n.ts.promotion }}<button class="_textButton hide" @click="readPromo()">{{ i18n.ts.hideThisNote }} <i class="ti ti-x"></i></button></div>-->
|
||||||
<!--<div v-if="appearNote._featuredId_" class="tip"><i class="ti ti-bolt"></i> {{ i18n.ts.featured }}</div>-->
|
<!--<div v-if="appearNote._featuredId_" class="tip"><i class="ti ti-bolt"></i> {{ i18n.ts.featured }}</div>-->
|
||||||
<div v-if="isRenote" :class="$style.renote">
|
<div v-if="isRenote" :class="$style.renote">
|
||||||
<MkAvatar :class="$style.renoteAvatar" :user="note.user" link preview/>
|
<MkAvatar :class="$style.renoteAvatar" :user="note.user" link preview/>
|
||||||
|
|
|
@ -72,7 +72,7 @@ watch(() => props.antennaId, async () => {
|
||||||
}, { immediate: true });
|
}, { immediate: true });
|
||||||
|
|
||||||
const headerActions = $computed(() => antenna ? [{
|
const headerActions = $computed(() => antenna ? [{
|
||||||
icon: 'fas fa-calendar-alt',
|
icon: 'ti ti-calendar-time',
|
||||||
text: i18n.ts.jumpToSpecifiedDate,
|
text: i18n.ts.jumpToSpecifiedDate,
|
||||||
handler: timetravel,
|
handler: timetravel,
|
||||||
}, {
|
}, {
|
||||||
|
|
|
@ -7,15 +7,15 @@
|
||||||
<div v-if="origin === 'local'">
|
<div v-if="origin === 'local'">
|
||||||
<template v-if="tag == null">
|
<template v-if="tag == null">
|
||||||
<MkFoldableSection class="_margin" persist-key="explore-pinned-users">
|
<MkFoldableSection class="_margin" persist-key="explore-pinned-users">
|
||||||
<template #header><i class="fas fa-bookmark ti-fw" style="margin-right: 0.5em;"></i>{{ i18n.ts.pinnedUsers }}</template>
|
<template #header><i class="ti ti-bookmark ti-fw" style="margin-right: 0.5em;"></i>{{ i18n.ts.pinnedUsers }}</template>
|
||||||
<XUserList :pagination="pinnedUsers"/>
|
<XUserList :pagination="pinnedUsers"/>
|
||||||
</MkFoldableSection>
|
</MkFoldableSection>
|
||||||
<MkFoldableSection class="_margin" persist-key="explore-popular-users">
|
<MkFoldableSection class="_margin" persist-key="explore-popular-users">
|
||||||
<template #header><i class="fas fa-chart-line ti-fw" style="margin-right: 0.5em;"></i>{{ i18n.ts.popularUsers }}</template>
|
<template #header><i class="ti ti-chart-line ti-fw" style="margin-right: 0.5em;"></i>{{ i18n.ts.popularUsers }}</template>
|
||||||
<XUserList :pagination="popularUsers"/>
|
<XUserList :pagination="popularUsers"/>
|
||||||
</MkFoldableSection>
|
</MkFoldableSection>
|
||||||
<MkFoldableSection class="_margin" persist-key="explore-recently-updated-users">
|
<MkFoldableSection class="_margin" persist-key="explore-recently-updated-users">
|
||||||
<template #header><i class="fas fa-comment-alt ti-fw" style="margin-right: 0.5em;"></i>{{ i18n.ts.recentlyUpdatedUsers }}</template>
|
<template #header><i class="ti ti-message ti-fw" style="margin-right: 0.5em;"></i>{{ i18n.ts.recentlyUpdatedUsers }}</template>
|
||||||
<XUserList :pagination="recentlyUpdatedUsers"/>
|
<XUserList :pagination="recentlyUpdatedUsers"/>
|
||||||
</MkFoldableSection>
|
</MkFoldableSection>
|
||||||
<MkFoldableSection class="_margin" persist-key="explore-recently-registered-users">
|
<MkFoldableSection class="_margin" persist-key="explore-recently-registered-users">
|
||||||
|
@ -41,15 +41,15 @@
|
||||||
|
|
||||||
<template v-if="tag == null">
|
<template v-if="tag == null">
|
||||||
<MkFoldableSection class="_margin">
|
<MkFoldableSection class="_margin">
|
||||||
<template #header><i class="fas fa-chart-line ti-fw" style="margin-right: 0.5em;"></i>{{ i18n.ts.popularUsers }}</template>
|
<template #header><i class="ti ti-chart-line ti-fw" style="margin-right: 0.5em;"></i>{{ i18n.ts.popularUsers }}</template>
|
||||||
<XUserList :pagination="popularUsersF"/>
|
<XUserList :pagination="popularUsersF"/>
|
||||||
</MkFoldableSection>
|
</MkFoldableSection>
|
||||||
<MkFoldableSection class="_margin">
|
<MkFoldableSection class="_margin">
|
||||||
<template #header><i class="fas fa-comment-alt ti-fw" style="margin-right: 0.5em;"></i>{{ i18n.ts.recentlyUpdatedUsers }}</template>
|
<template #header><i class="ti ti-message ti-fw" style="margin-right: 0.5em;"></i>{{ i18n.ts.recentlyUpdatedUsers }}</template>
|
||||||
<XUserList :pagination="recentlyUpdatedUsersF"/>
|
<XUserList :pagination="recentlyUpdatedUsersF"/>
|
||||||
</MkFoldableSection>
|
</MkFoldableSection>
|
||||||
<MkFoldableSection class="_margin">
|
<MkFoldableSection class="_margin">
|
||||||
<template #header><i class="fas fa-rocket ti-fw" style="margin-right: 0.5em;"></i>{{ i18n.ts.recentlyDiscoveredUsers }}</template>
|
<template #header><i class="ti ti-rocket ti-fw" style="margin-right: 0.5em;"></i>{{ i18n.ts.recentlyDiscoveredUsers }}</template>
|
||||||
<XUserList :pagination="recentlyRegisteredUsersF"/>
|
<XUserList :pagination="recentlyRegisteredUsersF"/>
|
||||||
</MkFoldableSection>
|
</MkFoldableSection>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
<template>
|
<template>
|
||||||
<!-- eslint-disable vue/no-mutating-props -->
|
<!-- eslint-disable vue/no-mutating-props -->
|
||||||
<XContainer :draggable="true" @remove="() => $emit('remove')">
|
<XContainer :draggable="true" @remove="() => $emit('remove')">
|
||||||
<template #header><i class="fas fa-image"></i> {{ $ts._pages.blocks.image }}</template>
|
<template #header><i class="ti ti-photo"></i> {{ $ts._pages.blocks.image }}</template>
|
||||||
<template #func>
|
<template #func>
|
||||||
<button @click="choose()">
|
<button @click="choose()">
|
||||||
<i class="fas fa-folder-open"></i>
|
<i class="ti ti-folder"></i>
|
||||||
</button>
|
</button>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<!-- eslint-disable vue/no-mutating-props -->
|
<!-- eslint-disable vue/no-mutating-props -->
|
||||||
<XContainer :draggable="true" @remove="() => $emit('remove')">
|
<XContainer :draggable="true" @remove="() => $emit('remove')">
|
||||||
<template #header><i class="fas fa-align-left"></i> {{ $ts._pages.blocks.text }}</template>
|
<template #header><i class="ti ti-align-left"></i> {{ $ts._pages.blocks.text }}</template>
|
||||||
|
|
||||||
<section class="vckmsadr">
|
<section class="vckmsadr">
|
||||||
<textarea v-model="text"></textarea>
|
<textarea v-model="text"></textarea>
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
<FormLink @click="chooseUploadFolder()">
|
<FormLink @click="chooseUploadFolder()">
|
||||||
{{ i18n.ts.uploadFolder }}
|
{{ i18n.ts.uploadFolder }}
|
||||||
<template #suffix>{{ uploadFolder ? uploadFolder.name : '-' }}</template>
|
<template #suffix>{{ uploadFolder ? uploadFolder.name : '-' }}</template>
|
||||||
<template #suffixIcon><i class="fas fa-folder-open"></i></template>
|
<template #suffixIcon><i class="ti ti-folder"></i></template>
|
||||||
</FormLink>
|
</FormLink>
|
||||||
<MkSwitch v-model="keepOriginalUploading">
|
<MkSwitch v-model="keepOriginalUploading">
|
||||||
<template #label>{{ i18n.ts.keepOriginalUploading }}</template>
|
<template #label>{{ i18n.ts.keepOriginalUploading }}</template>
|
||||||
|
|
|
@ -43,7 +43,7 @@ const masterVolume = computed({
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const volumeIcon = computed(() => masterVolume.value === 0 ? 'fas fa-volume-mute' : 'fas fa-volume-up');
|
const volumeIcon = computed(() => masterVolume.value === 0 ? 'ti ti-volume-3' : 'ti ti-volume');
|
||||||
|
|
||||||
const sounds = ref({
|
const sounds = ref({
|
||||||
note: ColdDeviceStorage.get('sound_note'),
|
note: ColdDeviceStorage.get('sound_note'),
|
||||||
|
|
|
@ -65,7 +65,7 @@ async function timetravel() {
|
||||||
}
|
}
|
||||||
|
|
||||||
const headerActions = $computed(() => list ? [{
|
const headerActions = $computed(() => list ? [{
|
||||||
icon: 'fas fa-calendar-alt',
|
icon: 'ti ti-calendar-time',
|
||||||
text: i18n.ts.jumpToSpecifiedDate,
|
text: i18n.ts.jumpToSpecifiedDate,
|
||||||
handler: timetravel,
|
handler: timetravel,
|
||||||
}, {
|
}, {
|
||||||
|
|
|
@ -292,7 +292,7 @@ export function getNoteMenu(props: {
|
||||||
...($i.isModerator || $i.isAdmin ? [
|
...($i.isModerator || $i.isAdmin ? [
|
||||||
null,
|
null,
|
||||||
{
|
{
|
||||||
icon: 'fas fa-bullhorn',
|
icon: 'ti ti-speakerphone',
|
||||||
text: i18n.ts.promote,
|
text: i18n.ts.promote,
|
||||||
action: promote
|
action: promote
|
||||||
}]
|
}]
|
||||||
|
|
|
@ -15,12 +15,12 @@ export type Type = 'string' | 'number' | 'boolean' | 'stringArray' | null;
|
||||||
|
|
||||||
export const literalDefs: Record<string, { out: any; category: string; icon: any; }> = {
|
export const literalDefs: Record<string, { out: any; category: string; icon: any; }> = {
|
||||||
text: { out: 'string', category: 'value', icon: 'ti ti-quote' },
|
text: { out: 'string', category: 'value', icon: 'ti ti-quote' },
|
||||||
multiLineText: { out: 'string', category: 'value', icon: 'fas fa-align-left' },
|
multiLineText: { out: 'string', category: 'value', icon: 'ti ti-align-left' },
|
||||||
textList: { out: 'stringArray', category: 'value', icon: 'fas fa-list' },
|
textList: { out: 'stringArray', category: 'value', icon: 'ti ti-list' },
|
||||||
number: { out: 'number', category: 'value', icon: 'fas fa-sort-numeric-up' },
|
number: { out: 'number', category: 'value', icon: 'ti ti-list-numbers' },
|
||||||
ref: { out: null, category: 'value', icon: 'fas fa-magic' },
|
ref: { out: null, category: 'value', icon: 'ti ti-wand' },
|
||||||
aiScriptVar: { out: null, category: 'value', icon: 'fas fa-magic' },
|
aiScriptVar: { out: null, category: 'value', icon: 'ti ti-wand' },
|
||||||
fn: { out: 'function', category: 'value', icon: 'fas fa-square-root-alt' },
|
fn: { out: 'function', category: 'value', icon: 'ti ti-math-function' },
|
||||||
};
|
};
|
||||||
|
|
||||||
export const blockDefs = [
|
export const blockDefs = [
|
||||||
|
|
|
@ -130,42 +130,42 @@ export function initAiLib(hpml: Hpml) {
|
||||||
|
|
||||||
export const funcDefs: Record<string, { in: any[]; out: any; category: string; icon: any; }> = {
|
export const funcDefs: Record<string, { in: any[]; out: any; category: string; icon: any; }> = {
|
||||||
if: { in: ['boolean', 0, 0], out: 0, category: 'flow', icon: 'ti ti-share' },
|
if: { in: ['boolean', 0, 0], out: 0, category: 'flow', icon: 'ti ti-share' },
|
||||||
for: { in: ['number', 'function'], out: null, category: 'flow', icon: 'fas fa-recycle' },
|
for: { in: ['number', 'function'], out: null, category: 'flow', icon: 'ti ti-recycle' },
|
||||||
not: { in: ['boolean'], out: 'boolean', category: 'logical', icon: 'fas fa-flag' },
|
not: { in: ['boolean'], out: 'boolean', category: 'logical', icon: 'ti ti-flag' },
|
||||||
or: { in: ['boolean', 'boolean'], out: 'boolean', category: 'logical', icon: 'fas fa-flag' },
|
or: { in: ['boolean', 'boolean'], out: 'boolean', category: 'logical', icon: 'ti ti-flag' },
|
||||||
and: { in: ['boolean', 'boolean'], out: 'boolean', category: 'logical', icon: 'fas fa-flag' },
|
and: { in: ['boolean', 'boolean'], out: 'boolean', category: 'logical', icon: 'ti ti-flag' },
|
||||||
add: { in: ['number', 'number'], out: 'number', category: 'operation', icon: 'ti ti-plus' },
|
add: { in: ['number', 'number'], out: 'number', category: 'operation', icon: 'ti ti-plus' },
|
||||||
subtract: { in: ['number', 'number'], out: 'number', category: 'operation', icon: 'ti ti-minus' },
|
subtract: { in: ['number', 'number'], out: 'number', category: 'operation', icon: 'ti ti-minus' },
|
||||||
multiply: { in: ['number', 'number'], out: 'number', category: 'operation', icon: 'ti ti-x' },
|
multiply: { in: ['number', 'number'], out: 'number', category: 'operation', icon: 'ti ti-x' },
|
||||||
divide: { in: ['number', 'number'], out: 'number', category: 'operation', icon: 'fas fa-divide' },
|
divide: { in: ['number', 'number'], out: 'number', category: 'operation', icon: 'ti ti-divide' },
|
||||||
mod: { in: ['number', 'number'], out: 'number', category: 'operation', icon: 'fas fa-divide' },
|
mod: { in: ['number', 'number'], out: 'number', category: 'operation', icon: 'ti ti-divide' },
|
||||||
round: { in: ['number'], out: 'number', category: 'operation', icon: 'fas fa-calculator' },
|
round: { in: ['number'], out: 'number', category: 'operation', icon: 'ti ti-calculator' },
|
||||||
eq: { in: [0, 0], out: 'boolean', category: 'comparison', icon: 'fas fa-equals' },
|
eq: { in: [0, 0], out: 'boolean', category: 'comparison', icon: 'ti ti-equal' },
|
||||||
notEq: { in: [0, 0], out: 'boolean', category: 'comparison', icon: 'fas fa-not-equal' },
|
notEq: { in: [0, 0], out: 'boolean', category: 'comparison', icon: 'ti ti-equal-not' },
|
||||||
gt: { in: ['number', 'number'], out: 'boolean', category: 'comparison', icon: 'fas fa-greater-than' },
|
gt: { in: ['number', 'number'], out: 'boolean', category: 'comparison', icon: 'ti ti-math-greater' },
|
||||||
lt: { in: ['number', 'number'], out: 'boolean', category: 'comparison', icon: 'fas fa-less-than' },
|
lt: { in: ['number', 'number'], out: 'boolean', category: 'comparison', icon: 'ti ti-math-lower' },
|
||||||
gtEq: { in: ['number', 'number'], out: 'boolean', category: 'comparison', icon: 'fas fa-greater-than-equal' },
|
gtEq: { in: ['number', 'number'], out: 'boolean', category: 'comparison', icon: 'ti ti-math-equal-greater' },
|
||||||
ltEq: { in: ['number', 'number'], out: 'boolean', category: 'comparison', icon: 'fas fa-less-than-equal' },
|
ltEq: { in: ['number', 'number'], out: 'boolean', category: 'comparison', icon: 'ti ti-math-equal-lower' },
|
||||||
strLen: { in: ['string'], out: 'number', category: 'text', icon: 'ti ti-quote' },
|
strLen: { in: ['string'], out: 'number', category: 'text', icon: 'ti ti-quote' },
|
||||||
strPick: { in: ['string', 'number'], out: 'string', category: 'text', icon: 'ti ti-quote' },
|
strPick: { in: ['string', 'number'], out: 'string', category: 'text', icon: 'ti ti-quote' },
|
||||||
strReplace: { in: ['string', 'string', 'string'], out: 'string', category: 'text', icon: 'ti ti-quote' },
|
strReplace: { in: ['string', 'string', 'string'], out: 'string', category: 'text', icon: 'ti ti-quote' },
|
||||||
strReverse: { in: ['string'], out: 'string', category: 'text', icon: 'ti ti-quote' },
|
strReverse: { in: ['string'], out: 'string', category: 'text', icon: 'ti ti-quote' },
|
||||||
join: { in: ['stringArray', 'string'], out: 'string', category: 'text', icon: 'ti ti-quote' },
|
join: { in: ['stringArray', 'string'], out: 'string', category: 'text', icon: 'ti ti-quote' },
|
||||||
stringToNumber: { in: ['string'], out: 'number', category: 'convert', icon: 'fas fa-exchange-alt' },
|
stringToNumber: { in: ['string'], out: 'number', category: 'convert', icon: 'ti ti-arrows-right-left' },
|
||||||
numberToString: { in: ['number'], out: 'string', category: 'convert', icon: 'fas fa-exchange-alt' },
|
numberToString: { in: ['number'], out: 'string', category: 'convert', icon: 'ti ti-arrows-right-left' },
|
||||||
splitStrByLine: { in: ['string'], out: 'stringArray', category: 'convert', icon: 'fas fa-exchange-alt' },
|
splitStrByLine: { in: ['string'], out: 'stringArray', category: 'convert', icon: 'ti ti-arrows-right-left' },
|
||||||
pick: { in: [null, 'number'], out: null, category: 'list', icon: 'fas fa-indent' },
|
pick: { in: [null, 'number'], out: null, category: 'list', icon: 'ti ti-indent-increase' },
|
||||||
listLen: { in: [null], out: 'number', category: 'list', icon: 'fas fa-indent' },
|
listLen: { in: [null], out: 'number', category: 'list', icon: 'ti ti-indent-increase' },
|
||||||
rannum: { in: ['number', 'number'], out: 'number', category: 'random', icon: 'fas fa-dice' },
|
rannum: { in: ['number', 'number'], out: 'number', category: 'random', icon: 'ti ti-dice' },
|
||||||
dailyRannum: { in: ['number', 'number'], out: 'number', category: 'random', icon: 'fas fa-dice' },
|
dailyRannum: { in: ['number', 'number'], out: 'number', category: 'random', icon: 'ti ti-dice' },
|
||||||
seedRannum: { in: [null, 'number', 'number'], out: 'number', category: 'random', icon: 'fas fa-dice' },
|
seedRannum: { in: [null, 'number', 'number'], out: 'number', category: 'random', icon: 'ti ti-dice' },
|
||||||
random: { in: ['number'], out: 'boolean', category: 'random', icon: 'fas fa-dice' },
|
random: { in: ['number'], out: 'boolean', category: 'random', icon: 'ti ti-dice' },
|
||||||
dailyRandom: { in: ['number'], out: 'boolean', category: 'random', icon: 'fas fa-dice' },
|
dailyRandom: { in: ['number'], out: 'boolean', category: 'random', icon: 'ti ti-dice' },
|
||||||
seedRandom: { in: [null, 'number'], out: 'boolean', category: 'random', icon: 'fas fa-dice' },
|
seedRandom: { in: [null, 'number'], out: 'boolean', category: 'random', icon: 'ti ti-dice' },
|
||||||
randomPick: { in: [0], out: 0, category: 'random', icon: 'fas fa-dice' },
|
randomPick: { in: [0], out: 0, category: 'random', icon: 'ti ti-dice' },
|
||||||
dailyRandomPick: { in: [0], out: 0, category: 'random', icon: 'fas fa-dice' },
|
dailyRandomPick: { in: [0], out: 0, category: 'random', icon: 'ti ti-dice' },
|
||||||
seedRandomPick: { in: [null, 0], out: 0, category: 'random', icon: 'fas fa-dice' },
|
seedRandomPick: { in: [null, 0], out: 0, category: 'random', icon: 'ti ti-dice' },
|
||||||
DRPWPM: { in: ['stringArray'], out: 'string', category: 'random', icon: 'fas fa-dice' }, // dailyRandomPickWithProbabilityMapping
|
DRPWPM: { in: ['stringArray'], out: 'string', category: 'random', icon: 'ti ti-dice' }, // dailyRandomPickWithProbabilityMapping
|
||||||
};
|
};
|
||||||
|
|
||||||
export function initHpmlLib(expr: Expr, scope: HpmlScope, randomSeed: string, visitor?: any) {
|
export function initHpmlLib(expr: Expr, scope: HpmlScope, randomSeed: string, visitor?: any) {
|
||||||
|
|
|
@ -35,7 +35,7 @@ export async function search() {
|
||||||
// TODO
|
// TODO
|
||||||
//v.$root.$emit('warp', date);
|
//v.$root.$emit('warp', date);
|
||||||
os.alert({
|
os.alert({
|
||||||
icon: 'fas fa-history',
|
icon: 'ti ti-history',
|
||||||
iconOnly: true, autoClose: true,
|
iconOnly: true, autoClose: true,
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -105,7 +105,7 @@ function onContextmenu(ev: MouseEvent) {
|
||||||
type: 'label',
|
type: 'label',
|
||||||
text: path,
|
text: path,
|
||||||
}, {
|
}, {
|
||||||
icon: fullView ? 'fas fa-compress' : 'fas fa-expand',
|
icon: fullView ? 'ti ti-minimize' : 'ti ti-maximize',
|
||||||
text: fullView ? i18n.ts.quitFullView : i18n.ts.fullView,
|
text: fullView ? i18n.ts.quitFullView : i18n.ts.fullView,
|
||||||
action: () => {
|
action: () => {
|
||||||
fullView = !fullView;
|
fullView = !fullView;
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<div class="zlxnikvl">
|
<div class="zlxnikvl">
|
||||||
<XPie class="pie" :value="usage"/>
|
<XPie class="pie" :value="usage"/>
|
||||||
<div>
|
<div>
|
||||||
<p><i class="fas fa-memory"></i>RAM</p>
|
<p><i class="ti ti-section"></i>RAM</p>
|
||||||
<p>Total: {{ bytes(total, 1) }}</p>
|
<p>Total: {{ bytes(total, 1) }}</p>
|
||||||
<p>Used: {{ bytes(used, 1) }}</p>
|
<p>Used: {{ bytes(used, 1) }}</p>
|
||||||
<p>Free: {{ bytes(free, 1) }}</p>
|
<p>Free: {{ bytes(free, 1) }}</p>
|
||||||
|
|
Loading…
Reference in a new issue