@@ -1823,22 +1823,10 @@
1823 1823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1824 1824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1825 1825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return zRepo;
1826 1826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1827 1827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
1829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Returns non-zero if the default value for the "allow-symlinks" setting
1830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** is "on". When on Windows, this always returns false.
1831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
1832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int db_allow_symlinks_by_default(void){
1833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if defined(_WIN32)
1834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return 0;
1835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #else
1836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return 1;
1837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
1838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
1839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
1840 1828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
1841 1829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Returns non-zero if support for symlinks is currently enabled.
1842 1830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
1843 1831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int db_allow_symlinks(void){
1844 1832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return g.allowSymlinks;
@@ -1880,13 +1868,14 @@
1880 1868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
g.zRepositoryName = mprintf("%s", zDbName);
1881 1869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_open_or_attach(g.zRepositoryName, "repository");
1882 1870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
g.repositoryOpen = 1;
1883 1871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_file_control(g.db, "repository", SQLITE_FCNTL_DATA_VERSION,
1884 1872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&g.iRepoDataVers);
1873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1885 1874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Cache "allow-symlinks" option, because we'll need it on every stat call */
1886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- g.allowSymlinks = db_get_boolean("allow-symlinks",
1887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_allow_symlinks_by_default());
1875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ g.allowSymlinks = db_get_boolean("allow-symlinks",0);
1876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1888 1877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
g.zAuxSchema = db_get("aux-schema","");
1889 1878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
g.eHashPolicy = db_get_int("hash-policy",-1);
1890 1879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.eHashPolicy<0 ){
1891 1880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
g.eHashPolicy = hname_default_policy();
1892 1881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_set_int("hash-policy", g.eHashPolicy, 0);
@@ -3158,10 +3147,16 @@
3158 3147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --repodir DIR If REPOSITORY is a URI that will be cloned, store
3159 3148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the clone in DIR rather than in "."
3160 3149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --setmtime Set timestamps of all files to match their SCM-side
3161 3150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** times (the timestamp of the last checkin which modified
3162 3151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** them).
3152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** --symlinks Allow the use of symbolic links when expanding files
3153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** in this check-out, overriding the global allow-symlinks
3154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** setting (which default to "off"). CAUTION: This option
3155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** might allow a malicious repository to overwrite files
3156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** outside of the checkout directory. This option is a
3157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** security risk and its use is discouraged.
3163 3158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --workdir DIR Use DIR as the working directory instead of ".". The DIR
3164 3159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** directory is created if it does not exist.
3165 3160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
3166 3161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** See also: [[close]], [[clone]]
3167 3162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -3168,11 +3163,11 @@
3168 3163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void cmd_open(void){
3169 3164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int emptyFlag;
3170 3165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int keepFlag;
3171 3166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int forceMissingFlag;
3172 3167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int allowNested;
3173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int allowSymlinks;
3168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int allowSymlinks = 0;
3174 3169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int setmtimeFlag; /* --setmtime. Set mtimes on files */
3175 3170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int bForce = 0; /* --force. Open even if non-empty dir */
3176 3171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static char *azNewArgv[] = { 0, "checkout", "--prompt", 0, 0, 0, 0 };
3177 3172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zWorkDir; /* --workdir value */
3178 3173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zRepo = 0; /* Name of the repository file */
@@ -3187,10 +3182,11 @@
3187 3182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
allowNested = find_option("nested",0,0)!=0;
3188 3183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
setmtimeFlag = find_option("setmtime",0,0)!=0;
3189 3184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zWorkDir = find_option("workdir",0,1);
3190 3185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zRepoDir = find_option("repodir",0,1);
3191 3186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
bForce = find_option("force",0,0)!=0;
3187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( find_option("symlinks",0,0)!=0 ) allowSymlinks = 1;
3192 3188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zPwd = file_getcwd(0,0);
3193 3189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3194 3190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3195 3191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* We should be done with options.. */
3196 3192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
verify_all_options();
@@ -3279,23 +3275,10 @@
3279 3275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( db_exists("SELECT 1 FROM event WHERE type='ci'") ){
3280 3276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
g.zOpenRevision = db_get("main-branch", 0);
3281 3277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3282 3278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3283 3279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( g.zOpenRevision ){
3285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Since the repository is open and we know the revision now,
3286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** refresh the allow-symlinks flag. Since neither the local
3287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** checkout nor the configuration database are open at this
3288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** point, this should always return the versioned setting,
3289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** if any, or the default value, which is negative one. The
3290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** value negative one, in this context, means that the code
3291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** below should fallback to using the setting value from the
3292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** repository or global configuration databases only. */
3293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- allowSymlinks = db_get_versioned_boolean("allow-symlinks", -1);
3294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
3295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- allowSymlinks = -1; /* Use non-versioned settings only. */
3296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
3297 3280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3298 3281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if defined(_WIN32) || defined(__CYGWIN__)
3299 3282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define LOCALDB_NAME "./_FOSSIL_"
3300 3283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
3301 3284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define LOCALDB_NAME "./.fslckout"
@@ -3305,26 +3288,11 @@
3305 3288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"COMMIT; PRAGMA journal_mode=WAL; BEGIN;",
3306 3289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
3307 3290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(char*)0);
3308 3291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_delete_on_failure(LOCALDB_NAME);
3309 3292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_open_local(0);
3310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( allowSymlinks>=0 ){
3311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Use the value from the versioned setting, which was read
3312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** prior to opening the local checkout (i.e. which is most
3313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** likely empty and does not actually contain any versioned
3314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** setting files yet). Normally, this value would be given
3315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** first priority within db_get_boolean(); however, this is
3316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** a special case because we know the on-disk files may not
3317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** exist yet. */
3318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- g.allowSymlinks = allowSymlinks;
3319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
3320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Since the local checkout may not have any files at this
3321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** point, this will probably be the setting value from the
3322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** repository or global configuration databases. */
3323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- g.allowSymlinks = db_get_boolean("allow-symlinks",
3324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_allow_symlinks_by_default());
3325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
3293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( allowSymlinks ) g.allowSymlinks = 1;
3326 3294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_lset("repository", zRepo);
3327 3295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_record_repository_filename(zRepo);
3328 3296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_set_checkout(0);
3329 3297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
azNewArgv[0] = g.argv[0];
3330 3298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
g.argv = azNewArgv;
@@ -3432,32 +3400,26 @@
3432 3400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** SETTING: admin-log boolean default=off
3433 3401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
3434 3402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** When the admin-log setting is enabled, configuration changes are recorded
3435 3403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** in the "admin_log" table of the repository.
3436 3404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
3437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if defined(_WIN32)
3438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
3439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** SETTING: allow-symlinks boolean default=off versionable
3440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
3441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** When allow-symlinks is OFF, symbolic links in the repository are followed
3442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** and treated no differently from real files. When allow-symlinks is ON,
3443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the object to which the symbolic link points is ignored, and the content
3444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** of the symbolic link that is stored in the repository is the name of the
3445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** object to which the symbolic link points.
3446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
3447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
3448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if !defined(_WIN32)
3449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
3450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** SETTING: allow-symlinks boolean default=on versionable
3451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
3452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** When allow-symlinks is OFF, symbolic links in the repository are followed
3453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** and treated no differently from real files. When allow-symlinks is ON,
3454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the object to which the symbolic link points is ignored, and the content
3455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** of the symbolic link that is stored in the repository is the name of the
3456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** object to which the symbolic link points.
3457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
3458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
3405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
3406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** SETTING: allow-symlinks boolean default=off
3407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
3408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** When allow-symlinks is OFF (which is the default and recommended setting)
3409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** symbolic links a treated like text files that contain a single line of
3410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** content which is the name of their target. If allow-symlinks is ON,
3411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the symbolic links are actually followed.
3412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
3413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The use of symbolic links is dangerous. If you checkout a maliciously
3414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** crafted checkin that contains symbolic links, it is possible that files
3415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** outside of the working directory might be overwritten.
3416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
3417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Keep this setting OFF unless you have a very good reason to turn it
3418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** on and you implicitly trust the integrity of the repositories you
3419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** open.
3420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
3459 3421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
3460 3422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** SETTING: auto-captcha boolean default=on variable=autocaptcha
3461 3423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If enabled, the /login page provides a button that will automatically
3462 3424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** fill in the captcha password. This makes things easier for human users,
3463 3425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** at the expense of also making logins easier for malicious robots.
3464 3426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!