From c31205c47f382e5b7e3fe3116077163331078f9f Mon Sep 17 00:00:00 2001 From: Infinite Date: Sat, 18 Jan 2020 21:04:19 +0100 Subject: [PATCH] Linting --- ui/v2.5/.eslintcache | 2 +- .../components/Settings/SettingsLogsPanel.tsx | 144 ++++--------- .../src/components/Shared/DurationInput.tsx | 5 +- .../Shared/FolderSelect/FolderSelect.tsx | 4 +- .../performers/PerformerDetails/Performer.tsx | 14 +- .../scenes/SceneDetails/SceneMarkersPanel.tsx | 4 +- .../components/scenes/SceneFilenameParser.tsx | 192 ++++++++---------- .../ScenePlayer/ScenePlayerScrubber.tsx | 131 ++++++------ ui/v2.5/src/hooks/Toast.tsx | 21 +- ui/v2.5/yarn.lock | 31 +++ 10 files changed, 250 insertions(+), 298 deletions(-) diff --git a/ui/v2.5/.eslintcache b/ui/v2.5/.eslintcache index 7d4f89169..b7cc31ded 100644 --- a/ui/v2.5/.eslintcache +++ b/ui/v2.5/.eslintcache @@ -1 +1 @@ -[{"/home/peroo/stash/ui/v2.5/src/App.tsx":"1","/home/peroo/stash/ui/v2.5/src/components/ErrorBoundary.tsx":"2","/home/peroo/stash/ui/v2.5/src/components/Galleries/Galleries.tsx":"3","/home/peroo/stash/ui/v2.5/src/components/Galleries/Gallery.tsx":"4","/home/peroo/stash/ui/v2.5/src/components/Galleries/GalleryList.tsx":"5","/home/peroo/stash/ui/v2.5/src/components/Galleries/GalleryViewer.tsx":"6","/home/peroo/stash/ui/v2.5/src/components/MainNavbar.tsx":"7","/home/peroo/stash/ui/v2.5/src/components/PageNotFound.tsx":"8","/home/peroo/stash/ui/v2.5/src/components/Settings/Settings.tsx":"9","/home/peroo/stash/ui/v2.5/src/components/Settings/SettingsAboutPanel.tsx":"10","/home/peroo/stash/ui/v2.5/src/components/Settings/SettingsConfigurationPanel.tsx":"11","/home/peroo/stash/ui/v2.5/src/components/Settings/SettingsInterfacePanel.tsx":"12","/home/peroo/stash/ui/v2.5/src/components/Settings/SettingsLogsPanel.tsx":"13","/home/peroo/stash/ui/v2.5/src/components/Settings/SettingsTasksPanel/GenerateButton.tsx":"14","/home/peroo/stash/ui/v2.5/src/components/Settings/SettingsTasksPanel/SettingsTasksPanel.tsx":"15","/home/peroo/stash/ui/v2.5/src/components/Shared/DetailsEditNavbar.tsx":"16","/home/peroo/stash/ui/v2.5/src/components/Shared/DurationInput.tsx":"17","/home/peroo/stash/ui/v2.5/src/components/Shared/FolderSelect/FolderSelect.tsx":"18","/home/peroo/stash/ui/v2.5/src/components/Shared/TagLink.tsx":"19","/home/peroo/stash/ui/v2.5/src/components/Shared/Toast.tsx":"20","/home/peroo/stash/ui/v2.5/src/components/Stats.tsx":"21","/home/peroo/stash/ui/v2.5/src/components/Studios/StudioCard.tsx":"22","/home/peroo/stash/ui/v2.5/src/components/Studios/StudioDetails/Studio.tsx":"23","/home/peroo/stash/ui/v2.5/src/components/Studios/StudioList.tsx":"24","/home/peroo/stash/ui/v2.5/src/components/Studios/Studios.tsx":"25","/home/peroo/stash/ui/v2.5/src/components/Tags/TagList.tsx":"26","/home/peroo/stash/ui/v2.5/src/components/Tags/Tags.tsx":"27","/home/peroo/stash/ui/v2.5/src/components/Wall/WallItem.tsx":"28","/home/peroo/stash/ui/v2.5/src/components/Wall/WallPanel.tsx":"29","/home/peroo/stash/ui/v2.5/src/components/list/AddFilter.tsx":"30","/home/peroo/stash/ui/v2.5/src/components/list/ListFilter.tsx":"31","/home/peroo/stash/ui/v2.5/src/components/list/Pagination.tsx":"32","/home/peroo/stash/ui/v2.5/src/components/performers/PerformerCard.tsx":"33","/home/peroo/stash/ui/v2.5/src/components/performers/PerformerDetails/Performer.tsx":"34","/home/peroo/stash/ui/v2.5/src/components/performers/PerformerList.tsx":"35","/home/peroo/stash/ui/v2.5/src/components/performers/PerformerListTable.tsx":"36","/home/peroo/stash/ui/v2.5/src/components/performers/performers.tsx":"37","/home/peroo/stash/ui/v2.5/src/components/scenes/SceneCard.tsx":"38","/home/peroo/stash/ui/v2.5/src/components/scenes/SceneDetails/Scene.tsx":"39","/home/peroo/stash/ui/v2.5/src/components/scenes/SceneDetails/SceneDetailPanel.tsx":"40","/home/peroo/stash/ui/v2.5/src/components/scenes/SceneDetails/SceneEditPanel.tsx":"41","/home/peroo/stash/ui/v2.5/src/components/scenes/SceneDetails/SceneFileInfoPanel.tsx":"42","/home/peroo/stash/ui/v2.5/src/components/scenes/SceneDetails/SceneMarkersPanel.tsx":"43","/home/peroo/stash/ui/v2.5/src/components/scenes/SceneDetails/ScenePerformerPanel.tsx":"44","/home/peroo/stash/ui/v2.5/src/components/scenes/SceneFilenameParser.tsx":"45","/home/peroo/stash/ui/v2.5/src/components/scenes/SceneList.tsx":"46","/home/peroo/stash/ui/v2.5/src/components/scenes/SceneListTable.tsx":"47","/home/peroo/stash/ui/v2.5/src/components/scenes/SceneMarkerList.tsx":"48","/home/peroo/stash/ui/v2.5/src/components/scenes/ScenePlayer/ScenePlayer.tsx":"49","/home/peroo/stash/ui/v2.5/src/components/scenes/ScenePlayer/ScenePlayerScrubber.tsx":"50","/home/peroo/stash/ui/v2.5/src/components/scenes/SceneSelectedOptions.tsx":"51","/home/peroo/stash/ui/v2.5/src/components/scenes/helpers.tsx":"52","/home/peroo/stash/ui/v2.5/src/components/scenes/scenes.tsx":"53","/home/peroo/stash/ui/v2.5/src/components/select/FilterMultiSelect.tsx":"54","/home/peroo/stash/ui/v2.5/src/components/select/FilterSelect.tsx":"55","/home/peroo/stash/ui/v2.5/src/components/select/MarkerTitleSuggest.tsx":"56","/home/peroo/stash/ui/v2.5/src/components/select/ScrapePerformerSuggest.tsx":"57","/home/peroo/stash/ui/v2.5/src/components/select/ValidGalleriesSelect.tsx":"58","/home/peroo/stash/ui/v2.5/src/core/StashService.ts":"59","/home/peroo/stash/ui/v2.5/src/core/generated-graphql.tsx":"60","/home/peroo/stash/ui/v2.5/src/hooks/ListHook.tsx":"61","/home/peroo/stash/ui/v2.5/src/hooks/LocalForage.ts":"62","/home/peroo/stash/ui/v2.5/src/hooks/VideoHover.ts":"63","/home/peroo/stash/ui/v2.5/src/index.tsx":"64","/home/peroo/stash/ui/v2.5/src/models/base-props.ts":"65","/home/peroo/stash/ui/v2.5/src/models/index.ts":"66","/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/criterion.ts":"67","/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/favorite.ts":"68","/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/has-markers.ts":"69","/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/is-missing.ts":"70","/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/none.ts":"71","/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/performers.ts":"72","/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/rating.ts":"73","/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/resolution.ts":"74","/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/studios.ts":"75","/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/tags.ts":"76","/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/utils.ts":"77","/home/peroo/stash/ui/v2.5/src/models/list-filter/filter.ts":"78","/home/peroo/stash/ui/v2.5/src/models/list-filter/types.ts":"79","/home/peroo/stash/ui/v2.5/src/models/react-images.d.ts":"80","/home/peroo/stash/ui/v2.5/src/models/react-jw-player.d.ts":"81","/home/peroo/stash/ui/v2.5/src/models/types.ts":"82","/home/peroo/stash/ui/v2.5/src/react-app-env.d.ts":"83","/home/peroo/stash/ui/v2.5/src/serviceWorker.ts":"84","/home/peroo/stash/ui/v2.5/src/utils/color.ts":"85","/home/peroo/stash/ui/v2.5/src/utils/editabletext.tsx":"86","/home/peroo/stash/ui/v2.5/src/utils/errors.ts":"87","/home/peroo/stash/ui/v2.5/src/utils/image.tsx":"88","/home/peroo/stash/ui/v2.5/src/utils/navigation.ts":"89","/home/peroo/stash/ui/v2.5/src/utils/table.tsx":"90","/home/peroo/stash/ui/v2.5/src/utils/text.ts":"91","/home/peroo/stash/ui/v2.5/src/utils/toasts.ts":"92","/home/peroo/stash/ui/v2.5/src/utils/zoom.ts":"93"},{"size":1818,"mtime":1578432843260,"results":"94","hashOfConfig":"95"},{"size":769,"mtime":1577979127060,"results":"96","hashOfConfig":"95"},{"size":364,"mtime":1577979127060,"results":"97","hashOfConfig":"95"},{"size":1061,"mtime":1578153870063,"results":"98","hashOfConfig":"95"},{"size":1891,"mtime":1578153881712,"results":"99","hashOfConfig":"95"},{"size":1440,"mtime":1578153898526,"results":"100","hashOfConfig":"95"},{"size":2043,"mtime":1577994497113,"results":"101","hashOfConfig":"95"},{"size":154,"mtime":1577979127060,"results":"102","hashOfConfig":"95"},{"size":1885,"mtime":1577979127120,"results":"103","hashOfConfig":"95"},{"size":1109,"mtime":1578154008447,"results":"104","hashOfConfig":"95"},{"size":9581,"mtime":1578153404628,"results":"105","hashOfConfig":"95"},{"size":4412,"mtime":1578153807337,"results":"106","hashOfConfig":"95"},{"size":5105,"mtime":1578151803148,"results":"107","hashOfConfig":"95"},{"size":1767,"mtime":1577979127140,"results":"108","hashOfConfig":"95"},{"size":7437,"mtime":1578151882758,"results":"109","hashOfConfig":"95"},{"size":4140,"mtime":1578083340244,"results":"110","hashOfConfig":"95"},{"size":2898,"mtime":1578077797211,"results":"111","hashOfConfig":"95"},{"size":2923,"mtime":1578078846876,"results":"112","hashOfConfig":"95"},{"size":1174,"mtime":1578006626029,"results":"113","hashOfConfig":"95"},{"size":1319,"mtime":1578435714803,"results":"114","hashOfConfig":"95"},{"size":1957,"mtime":1577992677258,"results":"115","hashOfConfig":"95"},{"size":721,"mtime":1578076709401,"results":"116","hashOfConfig":"95"},{"size":5067,"mtime":1578076542562,"results":"117","hashOfConfig":"95"},{"size":1328,"mtime":1578153890219,"results":"118","hashOfConfig":"95"},{"size":364,"mtime":1577979127156,"results":"119","hashOfConfig":"95"},{"size":4672,"mtime":1578057682269,"results":"120","hashOfConfig":"95"},{"size":244,"mtime":1577979127172,"results":"121","hashOfConfig":"95"},{"size":4925,"mtime":1578153782630,"results":"122","hashOfConfig":"95"},{"size":2720,"mtime":1578153906690,"results":"123","hashOfConfig":"95"},{"size":7005,"mtime":1578299498166,"results":"124","hashOfConfig":"95"},{"size":7997,"mtime":1578172709206,"results":"125","hashOfConfig":"95"},{"size":3262,"mtime":1578165098978,"results":"126","hashOfConfig":"95"},{"size":1462,"mtime":1578083893006,"results":"127","hashOfConfig":"95"},{"size":13899,"mtime":1578086127588,"results":"128","hashOfConfig":"95"},{"size":2485,"mtime":1577979127184,"results":"129","hashOfConfig":"95"},{"size":2554,"mtime":1578084209211,"results":"130","hashOfConfig":"95"},{"size":397,"mtime":1577979127192,"results":"131","hashOfConfig":"95"},{"size":7168,"mtime":1578054332821,"results":"132","hashOfConfig":"95"},{"size":3737,"mtime":1578004207025,"results":"133","hashOfConfig":"95"},{"size":1381,"mtime":1578006480744,"results":"134","hashOfConfig":"95"},{"size":12685,"mtime":1578301620208,"results":"135","hashOfConfig":"95"},{"size":3133,"mtime":1577997627561,"results":"136","hashOfConfig":"95"},{"size":9231,"mtime":1578301845641,"results":"137","hashOfConfig":"95"},{"size":618,"mtime":1577979127196,"results":"138","hashOfConfig":"95"},{"size":29391,"mtime":1578301950830,"results":"139","hashOfConfig":"95"},{"size":3809,"mtime":1577994701125,"results":"140","hashOfConfig":"95"},{"size":3028,"mtime":1577996569786,"results":"141","hashOfConfig":"95"},{"size":2299,"mtime":1577979127196,"results":"142","hashOfConfig":"95"},{"size":5740,"mtime":1578054177135,"results":"143","hashOfConfig":"95"},{"size":10525,"mtime":1578154075579,"results":"144","hashOfConfig":"95"},{"size":8943,"mtime":1578302106743,"results":"145","hashOfConfig":"95"},{"size":905,"mtime":1577996960389,"results":"146","hashOfConfig":"95"},{"size":484,"mtime":1577979127227,"results":"147","hashOfConfig":"95"},{"size":6514,"mtime":1577979127227,"results":"148","hashOfConfig":"95"},{"size":5127,"mtime":1578435644103,"results":"149","hashOfConfig":"95"},{"size":2275,"mtime":1577979127227,"results":"150","hashOfConfig":"95"},{"size":2608,"mtime":1578153443601,"results":"151","hashOfConfig":"95"},{"size":2695,"mtime":1578151970904,"results":"152","hashOfConfig":"95"},{"size":16285,"mtime":1578426905076,"results":"153","hashOfConfig":"95"},{"size":73414,"mtime":1577979127231,"results":"154","hashOfConfig":"95"},{"size":11366,"mtime":1577979127231,"results":"155","hashOfConfig":"95"},{"size":1659,"mtime":1577979127231,"results":"156","hashOfConfig":"95"},{"size":2144,"mtime":1577979127231,"results":"157","hashOfConfig":"95"},{"size":737,"mtime":1577993631244,"results":"158","hashOfConfig":"95"},{"size":124,"mtime":1577979127235,"results":"159","hashOfConfig":"95"},{"size":55,"mtime":1577979127235,"results":"160","hashOfConfig":"95"},{"size":6822,"mtime":1578164766969,"results":"161","hashOfConfig":"95"},{"size":659,"mtime":1577979127255,"results":"162","hashOfConfig":"95"},{"size":664,"mtime":1577979127255,"results":"163","hashOfConfig":"95"},{"size":682,"mtime":1577979127255,"results":"164","hashOfConfig":"95"},{"size":566,"mtime":1577979127255,"results":"165","hashOfConfig":"95"},{"size":966,"mtime":1577979127255,"results":"166","hashOfConfig":"95"},{"size":1013,"mtime":1577979127255,"results":"167","hashOfConfig":"95"},{"size":694,"mtime":1577979127255,"results":"168","hashOfConfig":"95"},{"size":881,"mtime":1577979127255,"results":"169","hashOfConfig":"95"},{"size":1287,"mtime":1577979127255,"results":"170","hashOfConfig":"95"},{"size":1965,"mtime":1577979127255,"results":"171","hashOfConfig":"95"},{"size":12393,"mtime":1577979127255,"results":"172","hashOfConfig":"95"},{"size":278,"mtime":1577979127255,"results":"173","hashOfConfig":"95"},{"size":187,"mtime":1577979127255,"results":"174","hashOfConfig":"95"},{"size":200,"mtime":1577979127255,"results":"175","hashOfConfig":"95"},{"size":74,"mtime":1577979127255,"results":"176","hashOfConfig":"95"},{"size":40,"mtime":1577979127255,"results":"177","hashOfConfig":"95"},{"size":5216,"mtime":1577979127287,"results":"178","hashOfConfig":"95"},{"size":308,"mtime":1577979127287,"results":"179","hashOfConfig":"95"},{"size":1871,"mtime":1577979127287,"results":"180","hashOfConfig":"95"},{"size":529,"mtime":1577979127287,"results":"181","hashOfConfig":"95"},{"size":1049,"mtime":1578153858370,"results":"182","hashOfConfig":"95"},{"size":2396,"mtime":1577979127287,"results":"183","hashOfConfig":"95"},{"size":3507,"mtime":1578302319327,"results":"184","hashOfConfig":"95"},{"size":2241,"mtime":1577979127287,"results":"185","hashOfConfig":"95"},{"size":275,"mtime":1577979127287,"results":"186","hashOfConfig":"95"},{"size":123,"mtime":1577979127319,"results":"187","hashOfConfig":"95"},{"filePath":"188","messages":"189","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"1tsnfwq",{"filePath":"190","messages":"191","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"192","messages":"193","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"194","messages":"195","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":1,"source":"196"},{"filePath":"197","messages":"198","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"199","messages":"200","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"201","messages":"202","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"203","messages":"204","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"205","messages":"206","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":1,"source":"207"},{"filePath":"208","messages":"209","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"210","messages":"211","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":1,"source":"212"},{"filePath":"213","messages":"214","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":1,"source":"215"},{"filePath":"216","messages":"217","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":3,"source":"218"},{"filePath":"219","messages":"220","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"221","messages":"222","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"223","messages":"224","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"225","messages":"226","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"227","messages":"228","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"229","messages":"230","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"231","messages":"232","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"233","messages":"234","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"235","messages":"236","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"237","messages":"238","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"239","messages":"240","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"241","messages":"242","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"243","messages":"244","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"245","messages":"246","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"247","messages":"248","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"249","messages":"250","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"251","messages":"252","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"253","messages":"254","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"255","messages":"256","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"257","messages":"258","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"259","messages":"260","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":2,"source":"261"},{"filePath":"262","messages":"263","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"264","messages":"265","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"266","messages":"267","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"268","messages":"269","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"270","messages":"271","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":2,"source":"272"},{"filePath":"273","messages":"274","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"275","messages":"276","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"277","messages":"278","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"279","messages":"280","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"281","messages":"282","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"283","messages":"284","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":2,"source":"285"},{"filePath":"286","messages":"287","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"288","messages":"289","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"290","messages":"291","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"292","messages":"293","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"294","messages":"295","errorCount":0,"warningCount":5,"fixableErrorCount":0,"fixableWarningCount":2,"source":"296"},{"filePath":"297","messages":"298","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"299","messages":"300","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"301","messages":"302","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"303","messages":"304","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":1,"source":"305"},{"filePath":"306","messages":"307","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"308","messages":"309","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"310","messages":"311","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"312","messages":"313","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"314","messages":"315","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"316","messages":"317","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"318","messages":"319","errorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":4,"source":"320"},{"filePath":"321","messages":"322","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"323","messages":"324","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"325","messages":"326","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"327","messages":"328","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"329","messages":"330","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"331","messages":"332","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"333","messages":"334","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"335","messages":"336","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"337","messages":"338","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"339","messages":"340","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"341","messages":"342","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"343","messages":"344","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"345","messages":"346","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"347","messages":"348","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"349","messages":"350","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"351","messages":"352","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"353","messages":"354","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"355","messages":"356","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"357","messages":"358","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"359","messages":"360","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"361","messages":"362","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"363","messages":"364","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"365","messages":"366","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"367","messages":"368","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"369","messages":"370","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"371","messages":"372","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"373","messages":"374","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"375","messages":"376","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"377","messages":"378","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"379","messages":"380","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"381"},{"filePath":"382","messages":"383","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"384","messages":"385","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/home/peroo/stash/ui/v2.5/src/App.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/ErrorBoundary.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/Galleries/Galleries.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/Galleries/Gallery.tsx",["386"],"import React, { useEffect, useState } from \"react\";\nimport { Spinner } from 'react-bootstrap';\nimport * as GQL from \"../../core/generated-graphql\";\nimport { StashService } from \"../../core/StashService\";\nimport { IBaseProps } from \"../../models\";\nimport { GalleryViewer } from \"./GalleryViewer\";\n\ninterface IProps extends IBaseProps {}\n\nexport const Gallery: React.FC = (props: IProps) => {\n const [gallery, setGallery] = useState>({});\n const [isLoading, setIsLoading] = useState(false);\n\n const { data, error, loading } = StashService.useFindGallery(props.match.params.id);\n\n useEffect(() => {\n setIsLoading(loading);\n if (!data || !data.findGallery || !!error) { return; }\n setGallery(data.findGallery);\n }, [data]);\n\n if (!data || !data.findGallery || isLoading) { return ; }\n if (!!error) { return <>{error.message}; }\n return (\n
\n \n
\n );\n};\n","/home/peroo/stash/ui/v2.5/src/components/Galleries/GalleryList.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/Galleries/GalleryViewer.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/MainNavbar.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/PageNotFound.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/Settings/Settings.tsx",["387"],"import {\n Card,\n Tab,\n Tabs,\n} from \"@blueprintjs/core\";\nimport queryString from \"query-string\";\nimport React, { FunctionComponent, useEffect, useState } from \"react\";\nimport { IBaseProps } from \"../../models\";\nimport { SettingsAboutPanel } from \"./SettingsAboutPanel\";\nimport { SettingsConfigurationPanel } from \"./SettingsConfigurationPanel\";\nimport { SettingsInterfacePanel } from \"./SettingsInterfacePanel\";\nimport { SettingsLogsPanel } from \"./SettingsLogsPanel\";\nimport { SettingsTasksPanel } from \"./SettingsTasksPanel/SettingsTasksPanel\";\n\ninterface IProps extends IBaseProps {}\n\ntype TabId = \"configuration\" | \"tasks\" | \"logs\" | \"about\";\n\nexport const Settings: FunctionComponent = (props: IProps) => {\n const [tabId, setTabId] = useState(getTabId());\n\n useEffect(() => {\n const location = Object.assign({}, props.history.location);\n location.search = queryString.stringify({tab: tabId}, {encode: false});\n props.history.replace(location);\n }, [tabId]);\n\n function getTabId(): TabId {\n const queryParams = queryString.parse(props.location.search);\n if (!queryParams.tab || typeof queryParams.tab !== \"string\") { return \"tasks\"; }\n return queryParams.tab as TabId;\n }\n\n return (\n \n setTabId(newId as TabId)}\n defaultSelectedTabId={getTabId()}\n >\n } />\n } />\n } />\n } />\n } />\n \n \n );\n};\n","/home/peroo/stash/ui/v2.5/src/components/Settings/SettingsAboutPanel.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/Settings/SettingsConfigurationPanel.tsx",["388"],"import {\n AnchorButton,\n Button,\n Divider,\n FormGroup,\n InputGroup,\n Spinner,\n Checkbox,\n HTMLSelect,\n} from \"@blueprintjs/core\";\nimport React, { useEffect, useState } from \"react\";\nimport * as GQL from \"../../core/generated-graphql\";\nimport { StashService } from \"../../core/StashService\";\nimport { ErrorUtils } from \"../../utils/errors\";\nimport { ToastUtils } from \"../../utils/toasts\";\nimport { FolderSelect } from \"../Shared/FolderSelect/FolderSelect\";\n\nexport const SettingsConfigurationPanel: React.FC = () => {\n // Editing config state\n const [stashes, setStashes] = useState([]);\n const [databasePath, setDatabasePath] = useState(undefined);\n const [generatedPath, setGeneratedPath] = useState(undefined);\n const [maxTranscodeSize, setMaxTranscodeSize] = useState(undefined);\n const [maxStreamingTranscodeSize, setMaxStreamingTranscodeSize] = useState(undefined);\n const [username, setUsername] = useState(undefined);\n const [password, setPassword] = useState(undefined);\n const [logFile, setLogFile] = useState();\n const [logOut, setLogOut] = useState(true);\n const [logLevel, setLogLevel] = useState(\"Info\");\n const [logAccess, setLogAccess] = useState(true);\n const [excludes, setExcludes] = useState<(string)[]>([]);\n\n const { data, error, loading } = StashService.useConfiguration();\n\n const updateGeneralConfig = StashService.useConfigureGeneral({\n stashes,\n databasePath,\n generatedPath,\n maxTranscodeSize,\n maxStreamingTranscodeSize,\n username,\n password,\n logFile,\n logOut,\n logLevel,\n logAccess,\n excludes,\n });\n\n useEffect(() => {\n if (!data || !data.configuration || !!error) { return; }\n const conf = StashService.nullToUndefined(data.configuration) as GQL.ConfigDataFragment;\n if (!!conf.general) {\n setStashes(conf.general.stashes || []);\n setDatabasePath(conf.general.databasePath);\n setGeneratedPath(conf.general.generatedPath);\n setMaxTranscodeSize(conf.general.maxTranscodeSize);\n setMaxStreamingTranscodeSize(conf.general.maxStreamingTranscodeSize);\n setUsername(conf.general.username);\n setPassword(conf.general.password);\n setLogFile(conf.general.logFile);\n setLogOut(conf.general.logOut);\n setLogLevel(conf.general.logLevel);\n setLogAccess(conf.general.logAccess);\n setExcludes(conf.general.excludes);\n }\n }, [data]);\n\n function onStashesChanged(directories: string[]) {\n setStashes(directories);\n }\n\n function excludeRegexChanged(idx: number, value: string) {\n const newExcludes = excludes.map((regex, i)=> {\n const ret = ( idx !== i ) ? regex : value ;\n return ret\n })\n setExcludes(newExcludes);\n }\n\n function excludeRemoveRegex(idx: number) {\n const newExcludes = excludes.filter((_regex, i) => i !== idx );\n\n setExcludes(newExcludes);\n }\n\n function excludeAddRegex() {\n const demo = \"sample\\\\.mp4$\"\n const newExcludes = excludes.concat(demo);\n\n setExcludes(newExcludes);\n }\n\n\n async function onSave() {\n try {\n const result = await updateGeneralConfig();\n console.log(result);\n ToastUtils.success(\"Updated config\");\n } catch (e) {\n ErrorUtils.handle(e);\n }\n }\n\n const transcodeQualities = [\n GQL.StreamingResolutionEnum.Low,\n GQL.StreamingResolutionEnum.Standard,\n GQL.StreamingResolutionEnum.StandardHd,\n GQL.StreamingResolutionEnum.FullHd,\n GQL.StreamingResolutionEnum.FourK,\n GQL.StreamingResolutionEnum.Original\n ].map(resolutionToString);\n\n function resolutionToString(r : GQL.StreamingResolutionEnum | undefined) {\n switch (r) {\n case GQL.StreamingResolutionEnum.Low: return \"240p\";\n case GQL.StreamingResolutionEnum.Standard: return \"480p\";\n case GQL.StreamingResolutionEnum.StandardHd: return \"720p\";\n case GQL.StreamingResolutionEnum.FullHd: return \"1080p\";\n case GQL.StreamingResolutionEnum.FourK: return \"4k\";\n case GQL.StreamingResolutionEnum.Original: return \"Original\";\n }\n\n return \"Original\";\n }\n\n function translateQuality(quality : string) {\n switch (quality) {\n case \"240p\": return GQL.StreamingResolutionEnum.Low;\n case \"480p\": return GQL.StreamingResolutionEnum.Standard;\n case \"720p\": return GQL.StreamingResolutionEnum.StandardHd;\n case \"1080p\": return GQL.StreamingResolutionEnum.FullHd;\n case \"4k\": return GQL.StreamingResolutionEnum.FourK;\n case \"Original\": return GQL.StreamingResolutionEnum.Original;\n }\n\n return GQL.StreamingResolutionEnum.Original;\n }\n\n return (\n <>\n {!!error ?

{error.message}

: undefined}\n {(!data || !data.configuration || loading) ? : undefined}\n

Library

\n \n \n \n \n \n \n \n \n setDatabasePath(e.target.value)} />\n \n\n \n setGeneratedPath(e.target.value)} />\n \n\n \n\n { (excludes) ? excludes.map((regexp, i) => {\n return(\n excludeRegexChanged(i, e.target.value)}\n rightElement={\n \n );\n};\n","/home/peroo/stash/ui/v2.5/src/components/Settings/SettingsInterfacePanel.tsx",["389"],"import {\n Button,\n Checkbox,\n Divider,\n FormGroup,\n Spinner,\n TextArea,\n NumericInput\n} from \"@blueprintjs/core\";\nimport React, { FunctionComponent, useEffect, useState } from \"react\";\nimport { StashService } from \"../../core/StashService\";\nimport { ErrorUtils } from \"../../utils/errors\";\nimport { ToastUtils } from \"../../utils/toasts\";\n\ninterface IProps {}\n\nexport const SettingsInterfacePanel: FunctionComponent = () => {\n const config = StashService.useConfiguration();\n const [soundOnPreview, setSoundOnPreview] = useState();\n const [wallShowTitle, setWallShowTitle] = useState();\n const [maximumLoopDuration, setMaximumLoopDuration] = useState(0);\n const [autostartVideo, setAutostartVideo] = useState();\n const [showStudioAsText, setShowStudioAsText] = useState();\n const [css, setCSS] = useState();\n const [cssEnabled, setCSSEnabled] = useState();\n\n const updateInterfaceConfig = StashService.useConfigureInterface({\n soundOnPreview,\n wallShowTitle,\n maximumLoopDuration,\n autostartVideo,\n showStudioAsText,\n css,\n cssEnabled\n });\n\n useEffect(() => {\n if (!config.data || !config.data.configuration || !!config.error) { return; }\n if (!!config.data.configuration.interface) {\n let iCfg = config.data.configuration.interface;\n setSoundOnPreview(iCfg.soundOnPreview !== undefined ? iCfg.soundOnPreview : true);\n setWallShowTitle(iCfg.wallShowTitle !== undefined ? iCfg.wallShowTitle : true);\n setMaximumLoopDuration(iCfg.maximumLoopDuration || 0);\n setAutostartVideo(iCfg.autostartVideo !== undefined ? iCfg.autostartVideo : false);\n setShowStudioAsText(iCfg.showStudioAsText !== undefined ? iCfg.showStudioAsText : false);\n setCSS(config.data.configuration.interface.css || \"\");\n setCSSEnabled(config.data.configuration.interface.cssEnabled || false);\n }\n }, [config.data]);\n\n async function onSave() {\n try {\n const result = await updateInterfaceConfig();\n console.log(result);\n ToastUtils.success(\"Updated config\");\n } catch (e) {\n ErrorUtils.handle(e);\n }\n }\n\n return (\n <>\n {!!config.error ?

{config.error.message}

: undefined}\n {(!config.data || !config.data.configuration || config.loading) ? : undefined}\n

User Interface

\n \n setWallShowTitle(!wallShowTitle)}\n />\n setSoundOnPreview(!soundOnPreview)}\n />\n \n\n \n {\n setShowStudioAsText(!showStudioAsText)\n }}\n />\n \n \n \n {\n setAutostartVideo(!autostartVideo)\n }}\n />\n\n \n setMaximumLoopDuration(value)}\n min={0}\n minorStepSize={1}\n />\n \n \n\n \n {\n setCSSEnabled(!cssEnabled)\n }}\n />\n\n \n \n\n \n \n \n );\n};\n","/home/peroo/stash/ui/v2.5/src/components/Settings/SettingsLogsPanel.tsx",["390","391","392"],"import {\n H4, FormGroup, HTMLSelect,\n} from \"@blueprintjs/core\";\nimport React, { FunctionComponent, useState, useEffect, useRef } from \"react\";\nimport * as GQL from \"../../core/generated-graphql\";\nimport { StashService } from \"../../core/StashService\";\n\ninterface IProps {}\n\nfunction convertTime(logEntry : GQL.LogEntryDataFragment) {\n function pad(val : number) {\n var ret = val.toString();\n if (val <= 9) {\n ret = \"0\" + ret;\n }\n\n return ret;\n }\n\n var date = new Date(logEntry.time);\n var month = date.getMonth() + 1;\n var day = date.getDate();\n var dateStr = date.getFullYear() + \"-\" + pad(month) + \"-\" + pad(day);\n dateStr += \" \" + pad(date.getHours()) + \":\" + pad(date.getMinutes()) + \":\" + pad(date.getSeconds());\n\n return dateStr;\n}\n\nclass LogEntry {\n public time: string;\n public level: string;\n public message: string;\n public id: string;\n\n private static nextId: number = 0;\n\n public constructor(logEntry: GQL.LogEntryDataFragment) {\n this.time = convertTime(logEntry);\n this.level = logEntry.level;\n this.message = logEntry.message;\n\n var id = LogEntry.nextId++;\n this.id = id.toString();\n }\n}\n\nexport const SettingsLogsPanel: FunctionComponent = (props: IProps) => {\n const { data, error } = StashService.useLoggingSubscribe();\n const { data: existingData } = StashService.useLogs();\n \n const logEntries = useRef([]);\n const [logLevel, setLogLevel] = useState(\"Info\");\n const [filteredLogEntries, setFilteredLogEntries] = useState([]);\n const lastUpdate = useRef(0);\n const updateTimeout = useRef();\n\n // maximum number of log entries to display. Subsequent entries will truncate \n // the list, dropping off the oldest entries first.\n const MAX_LOG_ENTRIES = 200;\n\n function truncateLogEntries(entries : LogEntry[]) {\n entries.length = Math.min(entries.length, MAX_LOG_ENTRIES);\n }\n\n function prependLogEntries(toPrepend : LogEntry[]) {\n var newLogEntries = toPrepend.concat(logEntries.current);\n truncateLogEntries(newLogEntries);\n logEntries.current = newLogEntries;\n }\n\n function appendLogEntries(toAppend : LogEntry[]) {\n var newLogEntries = logEntries.current.concat(toAppend);\n truncateLogEntries(newLogEntries);\n logEntries.current = newLogEntries;\n }\n\n useEffect(() => {\n if (!data) { return; }\n\n // append data to the logEntries\n var convertedData = data.loggingSubscribe.map(convertLogEntry);\n\n // filter subscribed data as it comes in, otherwise we'll end up\n // truncating stuff that wasn't filtered out\n convertedData = convertedData.filter(filterByLogLevel)\n \n // put newest entries at the top\n convertedData.reverse();\n prependLogEntries(convertedData);\n\n updateFilteredEntries();\n }, [data]);\n\n useEffect(() => {\n if (!existingData || !existingData.logs) { return; }\n\n var convertedData = existingData.logs.map(convertLogEntry);\n appendLogEntries(convertedData);\n\n updateFilteredEntries();\n }, [existingData]);\n\n function updateFilteredEntries() {\n if (!updateTimeout.current) {\n console.log(\"Updating after timeout\");\n }\n updateTimeout.current = undefined;\n\n var filteredEntries = logEntries.current.filter(filterByLogLevel);\n setFilteredLogEntries(filteredEntries);\n\n lastUpdate.current = new Date().getTime();\n }\n\n useEffect(() => {\n updateFilteredEntries();\n }, [logLevel]);\n\n function convertLogEntry(logEntry : GQL.LogEntryDataFragment) {\n return new LogEntry(logEntry);\n }\n\n function levelClass(level : string) {\n return level.toLowerCase().trim();\n }\n\n interface ILogElementProps {\n logEntry : LogEntry\n }\n\n function LogElement(props : ILogElementProps) {\n // pad to maximum length of level enum\n var level = props.logEntry.level.padEnd(GQL.LogLevel.Progress.length);\n\n return (\n <>\n {props.logEntry.time} \n {level} \n {props.logEntry.message}\n
\n \n );\n }\n\n function maybeRenderError() {\n if (error) {\n return (\n <>\n Error connecting to log server: {error.message}
\n \n );\n }\n }\n\n const logLevels = [\"Debug\", \"Info\", \"Warning\", \"Error\"];\n\n function filterByLogLevel(logEntry : LogEntry) {\n if (logLevel === \"Debug\") {\n return true;\n }\n\n var logLevelIndex = logLevels.indexOf(logLevel);\n var levelIndex = logLevels.indexOf(logEntry.level);\n\n return levelIndex >= logLevelIndex;\n }\n\n return (\n <>\n

Logs

\n
\n \n setLogLevel(event.target.value)}\n value={logLevel}\n />\n \n
\n
\n {maybeRenderError()}\n {filteredLogEntries.map((logEntry) =>\n \n )}\n
\n \n );\n};\n","/home/peroo/stash/ui/v2.5/src/components/Settings/SettingsTasksPanel/GenerateButton.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/Settings/SettingsTasksPanel/SettingsTasksPanel.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/Shared/DetailsEditNavbar.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/Shared/DurationInput.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/Shared/FolderSelect/FolderSelect.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/Shared/TagLink.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/Shared/Toast.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/Stats.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/Studios/StudioCard.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/Studios/StudioDetails/Studio.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/Studios/StudioList.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/Studios/Studios.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/Tags/TagList.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/Tags/Tags.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/Wall/WallItem.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/Wall/WallPanel.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/list/AddFilter.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/list/ListFilter.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/list/Pagination.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/performers/PerformerCard.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/performers/PerformerDetails/Performer.tsx",["393","394"],"import _ from \"lodash\";\nimport { Button, Form, Modal, Spinner, Table } from 'react-bootstrap';\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { useEffect, useState } from \"react\";\nimport * as GQL from \"../../../core/generated-graphql\";\nimport { StashService } from \"../../../core/StashService\";\nimport { IBaseProps } from \"../../../models\";\nimport { ErrorUtils } from \"../../../utils/errors\";\nimport { TableUtils } from \"../../../utils/table\";\nimport { ScrapePerformerSuggest } from \"../../select/ScrapePerformerSuggest\";\nimport { DetailsEditNavbar } from \"../../Shared/DetailsEditNavbar\";\nimport { ToastUtils } from \"../../../utils/toasts\";\nimport { EditableTextUtils } from \"../../../utils/editabletext\";\nimport { ImageUtils } from \"../../../utils/image\";\n\ninterface IPerformerProps extends IBaseProps {}\n\nexport const Performer: React.FC = (props: IPerformerProps) => {\n const isNew = props.match.params.id === \"new\";\n\n // Editing state\n const [isEditing, setIsEditing] = useState(isNew);\n const [isDisplayingScraperDialog, setIsDisplayingScraperDialog] = useState(undefined);\n const [scrapePerformerDetails, setScrapePerformerDetails] = useState(undefined);\n\n // Editing performer state\n const [image, setImage] = useState(undefined);\n const [name, setName] = useState(undefined);\n const [aliases, setAliases] = useState(undefined);\n const [favorite, setFavorite] = useState(undefined);\n const [birthdate, setBirthdate] = useState(undefined);\n const [ethnicity, setEthnicity] = useState(undefined);\n const [country, setCountry] = useState(undefined);\n const [eyeColor, setEyeColor] = useState(undefined);\n const [height, setHeight] = useState(undefined);\n const [measurements, setMeasurements] = useState(undefined);\n const [fakeTits, setFakeTits] = useState(undefined);\n const [careerLength, setCareerLength] = useState(undefined);\n const [tattoos, setTattoos] = useState(undefined);\n const [piercings, setPiercings] = useState(undefined);\n const [url, setUrl] = useState(undefined);\n const [twitter, setTwitter] = useState(undefined);\n const [instagram, setInstagram] = useState(undefined);\n\n // Performer state\n const [performer, setPerformer] = useState>({});\n const [imagePreview, setImagePreview] = useState(undefined);\n\n // Network state\n const [isLoading, setIsLoading] = useState(false);\n\n const Scrapers = StashService.useListPerformerScrapers();\n const [queryableScrapers, setQueryableScrapers] = useState([]);\n\n const { data, error, loading } = StashService.useFindPerformer(props.match.params.id);\n const updatePerformer = StashService.usePerformerUpdate(getPerformerInput() as GQL.PerformerUpdateInput);\n const createPerformer = StashService.usePerformerCreate(getPerformerInput() as GQL.PerformerCreateInput);\n const deletePerformer = StashService.usePerformerDestroy(getPerformerInput() as GQL.PerformerDestroyInput);\n\n function updatePerformerEditState(state: Partial) {\n if ((state as GQL.PerformerDataFragment).favorite !== undefined) {\n setFavorite((state as GQL.PerformerDataFragment).favorite);\n }\n setName(state.name);\n setAliases(state.aliases);\n setBirthdate(state.birthdate);\n setEthnicity(state.ethnicity);\n setCountry(state.country);\n setEyeColor(state.eye_color);\n setHeight(state.height);\n setMeasurements(state.measurements);\n setFakeTits(state.fake_tits);\n setCareerLength(state.career_length);\n setTattoos(state.tattoos);\n setPiercings(state.piercings);\n setUrl(state.url);\n setTwitter(state.twitter);\n setInstagram(state.instagram);\n }\n\n useEffect(() => {\n setIsLoading(loading);\n if (!data || !data.findPerformer || !!error) { return; }\n setPerformer(data.findPerformer);\n }, [data]);\n\n useEffect(() => {\n setImagePreview(performer.image_path);\n setImage(undefined);\n updatePerformerEditState(performer);\n if (!isNew) {\n setIsEditing(false);\n }\n }, [performer]);\n\n function onImageLoad(this: FileReader) {\n setImagePreview(this.result as string);\n setImage(this.result as string);\n }\n\n ImageUtils.addPasteImageHook(onImageLoad);\n \n useEffect(() => {\n var newQueryableScrapers : GQL.ListPerformerScrapersListPerformerScrapers[] = [];\n\n if (!!Scrapers.data && Scrapers.data.listPerformerScrapers) {\n newQueryableScrapers = Scrapers.data.listPerformerScrapers.filter((s) => {\n return s.performer && s.performer.supported_scrapes.includes(GQL.ScrapeType.Name);\n });\n }\n\n setQueryableScrapers(newQueryableScrapers);\n\n }, [Scrapers.data]);\n\n if ((!isNew && !isEditing && (!data || !data.findPerformer)) || isLoading) {\n return ; \n }\n if (!!error) { return <>error...; }\n\n function getPerformerInput() {\n const performerInput: Partial = {\n name,\n aliases,\n favorite,\n birthdate,\n ethnicity,\n country,\n eye_color: eyeColor,\n height,\n measurements,\n fake_tits: fakeTits,\n career_length: careerLength,\n tattoos,\n piercings,\n url,\n twitter,\n instagram,\n image,\n };\n\n if (!isNew) {\n (performerInput as GQL.PerformerUpdateInput).id = props.match.params.id;\n }\n return performerInput;\n }\n\n async function onSave() {\n setIsLoading(true);\n try {\n if (!isNew) {\n const result = await updatePerformer();\n setPerformer(result.data.performerUpdate);\n } else {\n const result = await createPerformer();\n setPerformer(result.data.performerCreate);\n props.history.push(`/performers/${result.data.performerCreate.id}`);\n }\n } catch (e) {\n ErrorUtils.handle(e);\n }\n setIsLoading(false);\n }\n\n async function onDelete() {\n setIsLoading(true);\n try {\n await deletePerformer();\n } catch (e) {\n ErrorUtils.handle(e);\n }\n setIsLoading(false);\n \n // redirect to performers page\n props.history.push(`/performers`);\n }\n\n async function onAutoTag() {\n if (!performer || !performer.id) {\n return;\n }\n try {\n await StashService.queryMetadataAutoTag({ performers: [performer.id]});\n ToastUtils.success(\"Started auto tagging\");\n } catch (e) {\n ErrorUtils.handle(e);\n }\n }\n\n function onImageChange(event: React.FormEvent) {\n ImageUtils.onImageChange(event, onImageLoad);\n }\n\n function onDisplayFreeOnesDialog(scraper: GQL.ListPerformerScrapersListPerformerScrapers) {\n setIsDisplayingScraperDialog(scraper);\n }\n\n function getQueryScraperPerformerInput() {\n if (!scrapePerformerDetails) {\n return {};\n }\n\n let ret = _.clone(scrapePerformerDetails);\n delete ret.__typename;\n return ret as GQL.ScrapedPerformerInput;\n }\n\n async function onScrapePerformer() {\n setIsDisplayingScraperDialog(undefined);\n setIsLoading(true);\n try {\n if (!scrapePerformerDetails || !isDisplayingScraperDialog) { return; }\n const result = await StashService.queryScrapePerformer(isDisplayingScraperDialog.id, getQueryScraperPerformerInput());\n if (!result.data || !result.data.scrapePerformer) { return; }\n updatePerformerEditState(result.data.scrapePerformer);\n } catch (e) {\n ErrorUtils.handle(e);\n }\n setIsLoading(false);\n }\n\n async function onScrapePerformerURL() {\n if (!url) { return; }\n setIsLoading(true);\n try {\n const result = await StashService.queryScrapePerformerURL(url);\n if (!result.data || !result.data.scrapePerformerURL) { return; }\n updatePerformerEditState(result.data.scrapePerformerURL);\n } catch (e) {\n ErrorUtils.handle(e);\n } finally {\n setIsLoading(false);\n }\n }\n\n function renderEthnicity() {\n return TableUtils.renderHtmlSelect({\n title: \"Ethnicity\",\n value: ethnicity,\n isEditing,\n onChange: (value: string) => setEthnicity(value),\n selectOptions: [\"white\", \"black\", \"asian\", \"hispanic\"],\n });\n }\n\n function renderScraperDialog() {\n return (\n setIsDisplayingScraperDialog(undefined)}\n >\n \n Scrape\n \n \n
\n setScrapePerformerDetails(query)}\n />\n
\n
\n \n \n \n \n );\n }\n\n function urlScrapable(url: string) : boolean {\n return !!url && !!Scrapers.data && Scrapers.data.listPerformerScrapers && Scrapers.data.listPerformerScrapers.some((s) => {\n return !!s.performer && !!s.performer.urls && s.performer.urls.some((u) => { return url.includes(u); });\n });\n }\n\n function maybeRenderScrapeButton() {\n if (!url || !isEditing || !urlScrapable(url)) {\n return undefined;\n }\n return (\n \n )\n }\n\n function renderURLField() {\n return (\n \n \n URL \n {maybeRenderScrapeButton()}\n \n \n {EditableTextUtils.renderInputGroup({\n value: url, isEditing, onChange: setUrl, placeholder: \"URL\"\n })}\n \n \n );\n }\n\n return (\n <>\n {renderScraperDialog()}\n
\n
\n \"\"\n
\n
\n { setIsEditing(!isEditing); updatePerformerEditState(performer); }}\n onSave={onSave}\n onDelete={onDelete}\n onImageChange={onImageChange}\n scrapers={queryableScrapers}\n onDisplayScraperDialog={onDisplayFreeOnesDialog}\n onAutoTag={onAutoTag}\n />\n

\n { !isEditing\n ? {name}\n : setName(event.target.value)} />\n }\n

\n
\n \n Aliases:\n {EditableTextUtils.renderInputGroup({\n value: aliases, isEditing: isEditing, placeholder: \"Aliases\", onChange: setAliases\n })}\n \n
\n
\n Favorite:\n setFavorite(!favorite)}\n >\n \n \n
\n\n \n \n {TableUtils.renderInputGroup(\n {title: \"Birthdate (YYYY-MM-DD)\", value: birthdate, isEditing, onChange: setBirthdate})}\n {renderEthnicity()}\n {TableUtils.renderInputGroup(\n {title: \"Eye Color\", value: eyeColor, isEditing, onChange: setEyeColor})}\n {TableUtils.renderInputGroup(\n {title: \"Country\", value: country, isEditing, onChange: setCountry})}\n {TableUtils.renderInputGroup(\n {title: \"Height (CM)\", value: height, isEditing, onChange: setHeight})}\n {TableUtils.renderInputGroup(\n {title: \"Measurements\", value: measurements, isEditing, onChange: setMeasurements})}\n {TableUtils.renderInputGroup(\n {title: \"Fake Tits\", value: fakeTits, isEditing, onChange: setFakeTits})}\n {TableUtils.renderInputGroup(\n {title: \"Career Length\", value: careerLength, isEditing, onChange: setCareerLength})}\n {TableUtils.renderInputGroup(\n {title: \"Tattoos\", value: tattoos, isEditing, onChange: setTattoos})}\n {TableUtils.renderInputGroup(\n {title: \"Piercings\", value: piercings, isEditing, onChange: setPiercings})}\n {renderURLField()}\n {TableUtils.renderInputGroup(\n {title: \"Twitter\", value: twitter, isEditing, onChange: setTwitter})}\n {TableUtils.renderInputGroup(\n {title: \"Instagram\", value: instagram, isEditing, onChange: setInstagram})}\n \n
\n
\n
\n \n );\n};\n","/home/peroo/stash/ui/v2.5/src/components/performers/PerformerList.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/performers/PerformerListTable.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/performers/performers.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/scenes/SceneCard.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/scenes/SceneDetails/Scene.tsx",["395","396"],"import { Card, Spinner, Tab, Tabs } from 'react-bootstrap';\nimport queryString from \"query-string\";\nimport React, { FunctionComponent, useEffect, useState } from \"react\";\nimport * as GQL from \"../../../core/generated-graphql\";\nimport { StashService } from \"../../../core/StashService\";\nimport { IBaseProps } from \"../../../models\";\nimport { GalleryViewer } from \"../../Galleries/GalleryViewer\";\nimport { ScenePlayer } from \"../ScenePlayer/ScenePlayer\";\nimport { SceneDetailPanel } from \"./SceneDetailPanel\";\nimport { SceneEditPanel } from \"./SceneEditPanel\";\nimport { SceneFileInfoPanel } from \"./SceneFileInfoPanel\";\nimport { SceneMarkersPanel } from \"./SceneMarkersPanel\";\nimport { ScenePerformerPanel } from \"./ScenePerformerPanel\";\n\ninterface ISceneProps extends IBaseProps {}\n\nexport const Scene: FunctionComponent = (props: ISceneProps) => {\n const [timestamp, setTimestamp] = useState(0);\n const [autoplay, setAutoplay] = useState(false);\n const [scene, setScene] = useState>({});\n const [isLoading, setIsLoading] = useState(false);\n const { data, error, loading } = StashService.useFindScene(props.match.params.id);\n\n useEffect(() => {\n setIsLoading(loading);\n if (!data || !data.findScene || !!error) { return; }\n setScene(StashService.nullToUndefined(data.findScene));\n }, [data]);\n\n useEffect(() => {\n const queryParams = queryString.parse(props.location.search);\n if (!!queryParams.t && typeof queryParams.t === \"string\" && timestamp === 0) {\n const newTimestamp = parseInt(queryParams.t, 10);\n setTimestamp(newTimestamp);\n }\n if (queryParams.autoplay && typeof queryParams.autoplay === \"string\") {\n setAutoplay(queryParams.autoplay === \"true\");\n }\n });\n\n function onClickMarker(marker: GQL.SceneMarkerDataFragment) {\n setTimestamp(marker.seconds);\n }\n\n if (!data || !data.findScene || isLoading || Object.keys(scene).length === 0) {\n return ;\n }\n const modifiedScene =\n Object.assign({scene_marker_tags: data.sceneMarkerTags}, scene) as GQL.SceneDataFragment; // TODO Hack from angular\n if (!!error) { return <>error...; }\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n {modifiedScene.performers.length > 0 ?\n \n \n : ''\n }\n {!!modifiedScene.gallery ?\n \n \n : ''\n }\n \n \n \n \n setScene(newScene)} \n onDelete={() => props.history.push(\"/scenes\")}\n />\n \n \n \n \n );\n};\n","/home/peroo/stash/ui/v2.5/src/components/scenes/SceneDetails/SceneDetailPanel.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/scenes/SceneDetails/SceneEditPanel.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/scenes/SceneDetails/SceneFileInfoPanel.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/scenes/SceneDetails/SceneMarkersPanel.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/scenes/SceneDetails/ScenePerformerPanel.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/scenes/SceneFilenameParser.tsx",["397","398"],"import { Badge, Button, Card, Collapse, Dropdown, DropdownButton, Form, Table, Spinner } from 'react-bootstrap';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport React, { useEffect, useState } from \"react\";\nimport { StashService } from \"../../core/StashService\";\nimport * as GQL from \"../../core/generated-graphql\";\nimport { SlimSceneDataFragment, Maybe } from \"../../core/generated-graphql\";\nimport { TextUtils } from \"../../utils/text\";\nimport _ from \"lodash\";\nimport { ToastUtils } from \"../../utils/toasts\";\nimport { ErrorUtils } from \"../../utils/errors\";\nimport { Pagination } from \"../list/Pagination\";\nimport { FilterSelect, StudioSelect } from \"../select/FilterSelect\";\n \nclass ParserResult {\n public value: Maybe;\n public originalValue: Maybe;\n public set: boolean = false;\n\n public setOriginalValue(v : Maybe) {\n this.originalValue = v;\n this.value = v;\n }\n\n public setValue(v : Maybe) {\n if (!!v) {\n this.value = v;\n this.set = !_.isEqual(this.value, this.originalValue);\n }\n }\n}\n\nclass ParserField {\n public field : string;\n public helperText? : string;\n\n constructor(field: string, helperText?: string) {\n this.field = field;\n this.helperText = helperText;\n }\n\n public getFieldPattern() {\n return \"{\" + this.field + \"}\";\n }\n\n static Title = new ParserField(\"title\");\n static Ext = new ParserField(\"ext\", \"File extension\");\n\n static I = new ParserField(\"i\", \"Matches any ignored word\");\n static D = new ParserField(\"d\", \"Matches any delimiter (.-_)\");\n\n static Performer = new ParserField(\"performer\");\n static Studio = new ParserField(\"studio\");\n static Tag = new ParserField(\"tag\");\n\n // date fields\n static Date = new ParserField(\"date\", \"YYYY-MM-DD\");\n static YYYY = new ParserField(\"yyyy\", \"Year\");\n static YY = new ParserField(\"yy\", \"Year (20YY)\");\n static MM = new ParserField(\"mm\", \"Two digit month\");\n static DD = new ParserField(\"dd\", \"Two digit date\");\n static YYYYMMDD = new ParserField(\"yyyymmdd\");\n static YYMMDD = new ParserField(\"yymmdd\");\n static DDMMYYYY = new ParserField(\"ddmmyyyy\");\n static DDMMYY = new ParserField(\"ddmmyy\");\n static MMDDYYYY = new ParserField(\"mmddyyyy\");\n static MMDDYY = new ParserField(\"mmddyy\");\n\n static validFields = [\n ParserField.Title,\n ParserField.Ext,\n ParserField.D,\n ParserField.I,\n ParserField.Performer,\n ParserField.Studio,\n ParserField.Tag,\n ParserField.Date,\n ParserField.YYYY,\n ParserField.YY,\n ParserField.MM,\n ParserField.DD,\n ParserField.YYYYMMDD,\n ParserField.YYMMDD,\n ParserField.DDMMYYYY,\n ParserField.DDMMYY,\n ParserField.MMDDYYYY,\n ParserField.MMDDYY\n ]\n\n static fullDateFields = [\n ParserField.YYYYMMDD,\n ParserField.YYMMDD,\n ParserField.DDMMYYYY,\n ParserField.DDMMYY,\n ParserField.MMDDYYYY,\n ParserField.MMDDYY\n ];\n}\nclass SceneParserResult {\n public id: string;\n public filename: string;\n public title: ParserResult = new ParserResult();\n public date: ParserResult = new ParserResult();\n\n public studio: ParserResult = new ParserResult();\n public studioId: ParserResult = new ParserResult();\n public tags: ParserResult = new ParserResult();\n public tagIds: ParserResult = new ParserResult();\n public performers: ParserResult = new ParserResult();\n public performerIds: ParserResult = new ParserResult();\n\n public scene : SlimSceneDataFragment;\n\n constructor(result : GQL.ParseSceneFilenamesResults) {\n this.scene = result.scene;\n\n this.id = this.scene.id;\n this.filename = TextUtils.fileNameFromPath(this.scene.path);\n this.title.setOriginalValue(this.scene.title);\n this.date.setOriginalValue(this.scene.date);\n this.performerIds.setOriginalValue(this.scene.performers.map((p) => p.id));\n this.performers.setOriginalValue(this.scene.performers);\n this.tagIds.setOriginalValue(this.scene.tags.map((t) => t.id));\n this.tags.setOriginalValue(this.scene.tags);\n this.studioId.setOriginalValue(this.scene.studio ? this.scene.studio.id : undefined);\n this.studio.setOriginalValue(this.scene.studio);\n\n this.title.setValue(result.title);\n this.date.setValue(result.date);\n this.performerIds.setValue(result.performer_ids);\n this.tagIds.setValue(result.tag_ids);\n this.studioId.setValue(result.studio_id);\n\n if (result.performer_ids) {\n this.performers.setValue(result.performer_ids.map((p) => {\n return {\n id: p,\n name: \"\",\n favorite: false,\n image_path: \"\"\n };\n }));\n }\n\n if (result.tag_ids) {\n this.tags.setValue(result.tag_ids.map((t) => {\n return {\n id: t,\n name: \"\",\n };\n }));\n }\n\n if (result.studio_id) {\n this.studio.setValue({\n id: result.studio_id,\n name: \"\",\n image_path: \"\"\n });\n }\n }\n\n private static setInput(object: any, key: string, parserResult : ParserResult) {\n if (parserResult.set) {\n object[key] = parserResult.value;\n }\n }\n\n // returns true if any of its fields have set == true\n public isChanged() {\n return this.title.set || this.date.set || this.performerIds.set || this.studioId.set || this.tagIds.set;\n }\n\n public toSceneUpdateInput() {\n var ret = {\n id: this.id,\n title: this.scene.title,\n details: this.scene.details,\n url: this.scene.url,\n date: this.scene.date,\n rating: this.scene.rating,\n gallery_id: this.scene.gallery ? this.scene.gallery.id : undefined,\n studio_id: this.scene.studio ? this.scene.studio.id : undefined,\n performer_ids: this.scene.performers.map((performer) => performer.id),\n tag_ids: this.scene.tags.map((tag) => tag.id)\n };\n\n SceneParserResult.setInput(ret, \"title\", this.title);\n SceneParserResult.setInput(ret, \"date\", this.date);\n SceneParserResult.setInput(ret, \"performer_ids\", this.performerIds);\n SceneParserResult.setInput(ret, \"studio_id\", this.studioId);\n SceneParserResult.setInput(ret, \"tag_ids\", this.tagIds);\n\n return ret;\n }\n};\n\ninterface IParserInput {\n pattern: string,\n ignoreWords: string[],\n whitespaceCharacters: string,\n capitalizeTitle: boolean,\n page: number,\n pageSize: number,\n findClicked: boolean\n}\n\ninterface IParserRecipe {\n pattern: string,\n ignoreWords: string[],\n whitespaceCharacters: string,\n capitalizeTitle: boolean,\n description: string\n}\n\nconst builtInRecipes = [\n {\n pattern: \"{title}\",\n ignoreWords: [],\n whitespaceCharacters: \"\",\n capitalizeTitle: false,\n description: \"Filename\"\n },\n {\n pattern: \"{title}.{ext}\",\n ignoreWords: [],\n whitespaceCharacters: \"\",\n capitalizeTitle: false,\n description: \"Without extension\"\n },\n {\n pattern: \"{}.{yy}.{mm}.{dd}.{title}.XXX.{}.{ext}\",\n ignoreWords: [],\n whitespaceCharacters: \".\",\n capitalizeTitle: true,\n description: \"\"\n },\n {\n pattern: \"{}.{yy}.{mm}.{dd}.{title}.{ext}\",\n ignoreWords: [],\n whitespaceCharacters: \".\",\n capitalizeTitle: true,\n description: \"\"\n },\n {\n pattern: \"{title}.XXX.{}.{ext}\",\n ignoreWords: [],\n whitespaceCharacters: \".\",\n capitalizeTitle: true,\n description: \"\"\n },\n {\n pattern: \"{}.{yy}.{mm}.{dd}.{title}.{i}.{ext}\",\n ignoreWords: [\"cz\", \"fr\"],\n whitespaceCharacters: \".\",\n capitalizeTitle: true,\n description: \"Foreign language\"\n }\n];\n\nexport const SceneFilenameParser: React.FC = () => {\n const [parserResult, setParserResult] = useState([]);\n const [parserInput, setParserInput] = useState(initialParserInput());\n\n const [allTitleSet, setAllTitleSet] = useState(false);\n const [allDateSet, setAllDateSet] = useState(false);\n const [allPerformerSet, setAllPerformerSet] = useState(false);\n const [allTagSet, setAllTagSet] = useState(false);\n const [allStudioSet, setAllStudioSet] = useState(false);\n\n const [showFields, setShowFields] = useState>(initialShowFieldsState());\n \n const [totalItems, setTotalItems] = useState(0);\n\n // Network state\n const [isLoading, setIsLoading] = useState(false);\n\n const updateScenes = StashService.useScenesUpdate(getScenesUpdateData());\n\n function initialParserInput() {\n return {\n pattern: \"{title}.{ext}\",\n ignoreWords: [],\n whitespaceCharacters: \"._\",\n capitalizeTitle: true,\n page: 1,\n pageSize: 20,\n findClicked: false\n };\n }\n\n function initialShowFieldsState() {\n return new Map([\n [\"Title\", true],\n [\"Date\", true],\n [\"Performers\", true],\n [\"Tags\", true],\n [\"Studio\", true]\n ]);\n }\n\n function getParserFilter() {\n return {\n q: parserInput.pattern,\n page: parserInput.page,\n per_page: parserInput.pageSize,\n sort: \"path\",\n direction: GQL.SortDirectionEnum.Asc,\n };\n }\n\n function getParserInput() {\n return {\n ignoreWords: parserInput.ignoreWords,\n whitespaceCharacters: parserInput.whitespaceCharacters,\n capitalizeTitle: parserInput.capitalizeTitle\n };\n }\n\n async function onFind() {\n setParserResult([]);\n\n setIsLoading(true);\n \n try {\n const response = await StashService.queryParseSceneFilenames(getParserFilter(), getParserInput());\n\n let result = response.data.parseSceneFilenames;\n if (!!result) {\n parseResults(result.results);\n setTotalItems(result.count);\n }\n } catch (err) {\n ErrorUtils.handle(err);\n }\n\n setIsLoading(false);\n }\n\n useEffect(() => {\n if(parserInput.findClicked) {\n onFind();\n }\n }, [parserInput]);\n\n function onPageSizeChanged(newSize : number) {\n var newInput = _.clone(parserInput);\n newInput.page = 1;\n newInput.pageSize = newSize;\n setParserInput(newInput);\n }\n\n function onPageChanged(newPage : number) {\n if (newPage !== parserInput.page) {\n var newInput = _.clone(parserInput);\n newInput.page = newPage;\n setParserInput(newInput);\n }\n }\n\n function onFindClicked(input : IParserInput) {\n input.page = 1;\n input.findClicked = true;\n setParserInput(input);\n setTotalItems(0);\n }\n\n function getScenesUpdateData() {\n return parserResult.filter((result) => result.isChanged()).map((result) => result.toSceneUpdateInput());\n }\n\n async function onApply() {\n setIsLoading(true);\n\n try {\n await updateScenes();\n ToastUtils.success(\"Updated scenes\");\n } catch (e) {\n ErrorUtils.handle(e);\n }\n\n setIsLoading(false);\n }\n\n function parseResults(results : GQL.ParseSceneFilenamesResults[]) {\n if (results) {\n var result = results.map((r) => {\n return new SceneParserResult(r);\n }).filter((r) => !!r) as SceneParserResult[];\n\n setParserResult(result);\n determineFieldsToHide();\n }\n }\n\n function determineFieldsToHide() {\n var pattern = parserInput.pattern;\n var titleSet = pattern.includes(\"{title}\");\n var dateSet = pattern.includes(\"{date}\") || \n pattern.includes(\"{dd}\") || // don't worry about other partial date fields since this should be implied\n ParserField.fullDateFields.some((f) => {\n return pattern.includes(\"{\" + f.field + \"}\");\n });\n var performerSet = pattern.includes(\"{performer}\");\n var tagSet = pattern.includes(\"{tag}\");\n var studioSet = pattern.includes(\"{studio}\");\n\n var showFieldsCopy = _.clone(showFields);\n showFieldsCopy.set(\"Title\", titleSet);\n showFieldsCopy.set(\"Date\", dateSet);\n showFieldsCopy.set(\"Performers\", performerSet);\n showFieldsCopy.set(\"Tags\", tagSet);\n showFieldsCopy.set(\"Studio\", studioSet);\n setShowFields(showFieldsCopy);\n }\n\n useEffect(() => {\n var newAllTitleSet = !parserResult.some((r) => {\n return !r.title.set;\n });\n var newAllDateSet = !parserResult.some((r) => {\n return !r.date.set;\n });\n var newAllPerformerSet = !parserResult.some((r) => {\n return !r.performerIds.set;\n });\n var newAllTagSet = !parserResult.some((r) => {\n return !r.tagIds.set;\n });\n var newAllStudioSet = !parserResult.some((r) => {\n return !r.studioId.set;\n });\n\n if (newAllTitleSet !== allTitleSet) {\n setAllTitleSet(newAllTitleSet);\n }\n if (newAllDateSet !== allDateSet) {\n setAllDateSet(newAllDateSet);\n }\n if (newAllPerformerSet !== allPerformerSet) {\n setAllTagSet(newAllPerformerSet);\n }\n if (newAllTagSet !== allTagSet) {\n setAllTagSet(newAllTagSet);\n }\n if (newAllStudioSet !== allStudioSet) {\n setAllStudioSet(newAllStudioSet);\n }\n }, [parserResult]);\n\n function onSelectAllTitleSet(selected : boolean) {\n var newResult = [...parserResult];\n\n newResult.forEach((r) => {\n r.title.set = selected;\n });\n\n setParserResult(newResult);\n setAllTitleSet(selected);\n }\n\n function onSelectAllDateSet(selected : boolean) {\n var newResult = [...parserResult];\n\n newResult.forEach((r) => {\n r.date.set = selected;\n });\n\n setParserResult(newResult);\n setAllDateSet(selected);\n }\n\n function onSelectAllPerformerSet(selected : boolean) {\n var newResult = [...parserResult];\n\n newResult.forEach((r) => {\n r.performerIds.set = selected;\n });\n\n setParserResult(newResult);\n setAllPerformerSet(selected);\n }\n\n function onSelectAllTagSet(selected : boolean) {\n var newResult = [...parserResult];\n\n newResult.forEach((r) => {\n r.tagIds.set = selected;\n });\n\n setParserResult(newResult);\n setAllTagSet(selected);\n }\n\n function onSelectAllStudioSet(selected : boolean) {\n var newResult = [...parserResult];\n\n newResult.forEach((r) => {\n r.studioId.set = selected;\n });\n\n setParserResult(newResult);\n setAllStudioSet(selected);\n }\n\n interface IShowFieldsProps {\n fields: Map\n onShowFieldsChanged: (fields : Map) => void\n }\n\n function ShowFields(props: IShowFieldsProps) {\n const [open, setOpen] = useState(false);\n\n function handleClick(label: string) {\n const copy = new Map(props.fields);\n copy.set(label, !props.fields.get(label));\n props.onShowFieldsChanged(copy);\n }\n\n const fieldRows = [...props.fields.entries()].map(([label, enabled]) => (\n
{handleClick(label)}}>\n \n {label}\n
\n ));\n\n return (\n
\n
setOpen(!open)}>\n \n Display fields\n
\n \n
\n {fieldRows}\n
\n
\n
\n );\n }\n\n interface IParserInputProps {\n input: IParserInput,\n onFind: (input : IParserInput) => void\n }\n\n function ParserInput(props : IParserInputProps) {\n const [pattern, setPattern] = useState(props.input.pattern);\n const [ignoreWords, setIgnoreWords] = useState(props.input.ignoreWords.join(\" \"));\n const [whitespaceCharacters, setWhitespaceCharacters] = useState(props.input.whitespaceCharacters);\n const [capitalizeTitle, setCapitalizeTitle] = useState(props.input.capitalizeTitle);\n\n function onFind() {\n props.onFind({\n pattern: pattern,\n ignoreWords: ignoreWords.split(\" \"),\n whitespaceCharacters: whitespaceCharacters,\n capitalizeTitle: capitalizeTitle,\n page: 1,\n pageSize: props.input.pageSize,\n findClicked: props.input.findClicked\n });\n }\n\n function setParserRecipe(recipe: IParserRecipe) {\n setPattern(recipe.pattern);\n setIgnoreWords(recipe.ignoreWords.join(\" \"));\n setWhitespaceCharacters(recipe.whitespaceCharacters);\n setCapitalizeTitle(recipe.capitalizeTitle);\n }\n \n const validFields = [new ParserField(\"\", \"Wildcard\")].concat(ParserField.validFields);\n \n function addParserField(field: ParserField) {\n setPattern(pattern + field.getFieldPattern());\n }\n\n const PAGE_SIZE_OPTIONS = [\"20\", \"40\", \"60\", \"120\"];\n\n return (\n \n \n setPattern(newValue.target.value)}\n value={pattern}\n />\n \n { validFields.map(item => (\n addParserField(item)}>\n {item.field}{item.helperText}\n \n ))}\n \n
Use '\\\\' to escape literal {} characters
\n
\n\n \n Ignored words::\n setIgnoreWords(newValue.target.value)}\n value={ignoreWords}\n />\n
Matches with {\"{i}\"}
\n
\n \n \n
Title
\n Whitespace characters:\n setWhitespaceCharacters(newValue.target.value)}\n value={whitespaceCharacters}\n />\n \n Capitalize title\n setCapitalizeTitle(!capitalizeTitle)}\n />\n \n
These characters will be replaced with whitespace in the title
\n
\n \n {/* TODO - mapping stuff will go here */}\n\n \n \n { builtInRecipes.map(item => (\n setParserRecipe(item)}>\n {item.pattern}{item.description}\n \n ))}\n \n \n\n \n setShowFields(fields)}\n />\n \n\n \n \n onPageSizeChanged(parseInt(event.target.value))}\n defaultValue={props.input.pageSize}\n className=\"filter-item\"\n >\n { PAGE_SIZE_OPTIONS.map(val => ) }\n \n \n
\n );\n }\n\n interface ISceneParserFieldProps {\n parserResult : ParserResult\n className? : string\n fieldName : string\n onSetChanged : (set : boolean) => void\n onValueChanged : (value : any) => void\n originalParserResult? : ParserResult\n renderOriginalInputField: (props : ISceneParserFieldProps) => JSX.Element\n renderNewInputField: (props : ISceneParserFieldProps, onChange : (event : any) => void) => JSX.Element\n }\n\n function SceneParserField(props : ISceneParserFieldProps) {\n\n function maybeValueChanged(value : any) {\n if (value !== props.parserResult.value) {\n props.onValueChanged(value);\n }\n }\n\n if (!showFields.get(props.fieldName)) {\n return null;\n }\n\n return (\n <>\n \n {props.onSetChanged(!props.parserResult.set)}}\n />\n \n \n \n {props.renderOriginalInputField(props)}\n {props.renderNewInputField(props, (value) => maybeValueChanged(value))}\n \n \n \n );\n }\n\n function renderOriginalInputGroup(props: ISceneParserFieldProps) {\n var parserResult = props.originalParserResult || props.parserResult;\n\n return (\n \n );\n }\n\n interface IInputGroupWrapperProps {\n parserResult: ParserResult\n onChange : (event : any) => void\n className? : string\n }\n\n function InputGroupWrapper(props: IInputGroupWrapperProps) {\n return (\n props.onChange(event.target.value)}\n />\n );\n }\n \n function renderNewInputGroup(props : ISceneParserFieldProps, onChange : (value : any) => void) {\n return (\n {onChange(value)}}\n parserResult={props.parserResult}\n />\n );\n }\n\n interface HasName {\n name: string\n }\n\n function renderOriginalSelect(props : ISceneParserFieldProps) {\n const parserResult = props.originalParserResult || props.parserResult;\n\n const elements = parserResult.originalValue\n ? Array.isArray(parserResult.originalValue)\n ? parserResult.originalValue.map((el:HasName) => el.name)\n : parserResult.originalValue.name\n : [];\n\n return (\n
\n { elements.map((name:string) => {name}) }\n
\n );\n }\n\n function renderNewMultiSelect(type: \"performers\" | \"tags\", props : ISceneParserFieldProps, onChange : (value : any) => void) {\n return (\n {\n const ids = items.map((i) => i.id);\n onChange(ids);\n }}\n initialIds={props.parserResult.value}\n />\n );\n }\n\n function renderNewPerformerSelect(props : ISceneParserFieldProps, onChange : (value : any) => void) {\n return renderNewMultiSelect(\"performers\", props, onChange);\n }\n\n function renderNewTagSelect(props : ISceneParserFieldProps, onChange : (value : any) => void) {\n return renderNewMultiSelect(\"tags\", props, onChange);\n }\n\n function renderNewStudioSelect(props : ISceneParserFieldProps, onChange : (value : any) => void) {\n return (\n onChange(items[0]?.id)}\n initialIds={props.parserResult.value ? [props.parserResult.value] : []}\n />\n );\n }\n\n interface ISceneParserRowProps {\n scene : SceneParserResult,\n onChange: (changedScene : SceneParserResult) => void\n }\n\n function SceneParserRow(props : ISceneParserRowProps) {\n\n function changeParser(result : ParserResult, set : boolean, value : any) {\n var newParser = _.clone(result);\n newParser.set = set;\n newParser.value = value;\n return newParser;\n }\n\n function onTitleChanged(set : boolean, value: string | undefined) {\n var newResult = _.clone(props.scene);\n newResult.title = changeParser(newResult.title, set, value);\n props.onChange(newResult);\n }\n\n function onDateChanged(set : boolean, value: string | undefined) {\n var newResult = _.clone(props.scene);\n newResult.date = changeParser(newResult.date, set, value);\n props.onChange(newResult);\n }\n\n function onPerformerIdsChanged(set : boolean, value: string[] | undefined) {\n var newResult = _.clone(props.scene);\n newResult.performerIds = changeParser(newResult.performerIds, set, value);\n props.onChange(newResult);\n }\n\n function onTagIdsChanged(set : boolean, value: string[] | undefined) {\n var newResult = _.clone(props.scene);\n newResult.tagIds = changeParser(newResult.tagIds, set, value);\n props.onChange(newResult);\n }\n\n function onStudioIdChanged(set : boolean, value: string | undefined) {\n var newResult = _.clone(props.scene);\n newResult.studioId = changeParser(newResult.studioId, set, value);\n props.onChange(newResult);\n }\n\n return (\n \n \n {props.scene.filename}\n \n onTitleChanged(set, props.scene.title.value)}\n onValueChanged={(value) => onTitleChanged(props.scene.title.set, value)}\n renderOriginalInputField={renderOriginalInputGroup}\n renderNewInputField={renderNewInputGroup}\n />\n onDateChanged(set, props.scene.date.value)}\n onValueChanged={(value) => onDateChanged(props.scene.date.set, value)}\n renderOriginalInputField={renderOriginalInputGroup}\n renderNewInputField={renderNewInputGroup}\n />\n onPerformerIdsChanged(set, props.scene.performerIds.value)}\n onValueChanged={(value) => onPerformerIdsChanged(props.scene.performerIds.set, value)}\n renderOriginalInputField={renderOriginalSelect}\n renderNewInputField={renderNewPerformerSelect}\n />\n onTagIdsChanged(set, props.scene.tagIds.value)}\n onValueChanged={(value) => onTagIdsChanged(props.scene.tagIds.set, value)}\n renderOriginalInputField={renderOriginalSelect}\n renderNewInputField={renderNewTagSelect}\n />\n onStudioIdChanged(set, props.scene.studioId.value)}\n onValueChanged={(value) => onStudioIdChanged(props.scene.studioId.set, value)}\n renderOriginalInputField={renderOriginalSelect}\n renderNewInputField={renderNewStudioSelect}\n />\n \n )\n }\n\n function onChange(scene : SceneParserResult, changedScene : SceneParserResult) {\n var newResult = [...parserResult];\n\n var index = newResult.indexOf(scene);\n newResult[index] = changedScene;\n\n setParserResult(newResult);\n }\n\n function renderHeader(fieldName: string, allSet: boolean, onAllSet: (set: boolean) => void) {\n if (!showFields.get(fieldName)) {\n return null;\n }\n\n return (\n <>\n \n {onAllSet(!allSet)}}\n />\n \n {fieldName}\n \n )\n }\n\n function renderTable() {\n if (parserResult.length === 0) { return undefined; }\n\n return (\n <>\n
\n
\n \n \n \n \n {renderHeader(\"Title\", allTitleSet, onSelectAllTitleSet)}\n {renderHeader(\"Date\", allDateSet, onSelectAllDateSet)}\n {renderHeader(\"Performers\", allPerformerSet, onSelectAllPerformerSet)}\n {renderHeader(\"Tags\", allTagSet, onSelectAllTagSet)}\n {renderHeader(\"Studio\", allStudioSet, onSelectAllStudioSet)}\n \n \n \n {parserResult.map((scene) => \n onChange(scene, changedScene)}/>\n )}\n \n
Filename
\n
\n onPageChanged(page)}\n />\n \n
\n \n )\n }\n\n return (\n \n

Scene Filename Parser

\n onFindClicked(input)}\n />\n\n {isLoading ? : undefined}\n {renderTable()}\n
\n );\n};\n \n","/home/peroo/stash/ui/v2.5/src/components/scenes/SceneList.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/scenes/SceneListTable.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/scenes/SceneMarkerList.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/scenes/ScenePlayer/ScenePlayer.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/scenes/ScenePlayer/ScenePlayerScrubber.tsx",["399","400","401","402","403"],"import axios from \"axios\";\nimport React, { CSSProperties, useEffect, useRef, useState } from \"react\";\nimport * as GQL from \"../../../core/generated-graphql\";\nimport { TextUtils } from \"../../../utils/text\";\nimport \"./ScenePlayerScrubber.scss\";\n\ninterface IScenePlayerScrubberProps {\n scene: GQL.SceneDataFragment;\n position: number;\n onSeek: (seconds: number) => void;\n onScrolled: () => void;\n}\n\ninterface ISceneSpriteItem {\n start: number;\n end: number;\n x: number;\n y: number;\n w: number;\n h: number;\n}\n\nexport const ScenePlayerScrubber: React.FC = (props: IScenePlayerScrubberProps) => {\n const contentEl = useRef(null);\n const positionIndicatorEl = useRef(null);\n const scrubberSliderEl = useRef(null);\n const mouseDown = useRef(false);\n const lastMouseEvent = useRef(null);\n const startMouseEvent = useRef(null);\n const velocity = useRef(0);\n\n const _position = useRef(0);\n function getPostion() { return _position.current; }\n function setPosition(newPostion: number, shouldEmit: boolean = true) {\n if (!scrubberSliderEl.current || !positionIndicatorEl.current) { return; }\n if (shouldEmit) { props.onScrolled(); }\n\n const midpointOffset = scrubberSliderEl.current.clientWidth / 2;\n\n const bounds = getBounds() * -1;\n if (newPostion > midpointOffset) {\n _position.current = midpointOffset;\n } else if (newPostion < bounds - midpointOffset) {\n _position.current = bounds - midpointOffset;\n } else {\n _position.current = newPostion;\n }\n\n scrubberSliderEl.current.style.transform = `translateX(${_position.current}px)`;\n\n const indicatorPosition = (\n (newPostion - midpointOffset) / (bounds - (midpointOffset * 2)) * scrubberSliderEl.current.clientWidth\n );\n positionIndicatorEl.current.style.transform = `translateX(${indicatorPosition}px)`;\n }\n\n const [spriteItems, setSpriteItems] = useState([]);\n const [delayedRender, setDelayedRender] = useState(false);\n\n useEffect(() => {\n if (!scrubberSliderEl.current) { return; }\n scrubberSliderEl.current.style.transform = `translateX(${scrubberSliderEl.current.clientWidth / 2}px)`;\n }, [scrubberSliderEl]);\n\n useEffect(() => {\n fetchSpriteInfo();\n }, [props.scene]);\n\n useEffect(() => {\n if (!scrubberSliderEl.current) { return; }\n const duration = Number(props.scene.file.duration);\n const percentage = props.position / duration;\n const position = (\n (scrubberSliderEl.current.scrollWidth * percentage) - (scrubberSliderEl.current.clientWidth / 2)\n ) * -1;\n setPosition(position, false);\n }, [props.position]);\n\n useEffect(() => {\n window.addEventListener(\"mouseup\", onMouseUp, false);\n return () => {\n window.removeEventListener(\"mouseup\", onMouseUp);\n };\n });\n\n useEffect(() => {\n if (!contentEl.current) { return; }\n contentEl.current.addEventListener(\"mousedown\", onMouseDown, false);\n return () => {\n if (!contentEl.current) { return; }\n contentEl.current.removeEventListener(\"mousedown\", onMouseDown);\n };\n });\n\n useEffect(() => {\n if (!contentEl.current) { return; }\n contentEl.current.addEventListener(\"mousemove\", onMouseMove, false);\n return () => {\n if (!contentEl.current) { return; }\n contentEl.current.removeEventListener(\"mousemove\", onMouseMove);\n };\n });\n\n function onMouseUp(this: Window, event: MouseEvent) {\n if (!startMouseEvent.current || !scrubberSliderEl.current) { return; }\n mouseDown.current = false;\n const delta = Math.abs(event.clientX - startMouseEvent.current.clientX);\n if (delta < 1 && event.target instanceof HTMLDivElement) {\n const target: HTMLDivElement = event.target;\n let seekSeconds: number | undefined;\n\n const spriteIdString = target.getAttribute(\"data-sprite-item-id\");\n if (spriteIdString != null) {\n const spritePercentage = event.offsetX / target.clientWidth;\n const offset = target.offsetLeft + (target.clientWidth * spritePercentage);\n const percentage = offset / scrubberSliderEl.current.scrollWidth;\n seekSeconds = percentage * (props.scene.file.duration || 0);\n }\n\n const markerIdString = target.getAttribute(\"data-marker-id\");\n if (markerIdString != null) {\n const marker = props.scene.scene_markers[Number(markerIdString)];\n seekSeconds = marker.seconds;\n }\n\n if (!!seekSeconds) { props.onSeek(seekSeconds); }\n } else if (Math.abs(velocity.current) > 25) {\n const newPosition = getPostion() + (velocity.current * 10);\n setPosition(newPosition);\n velocity.current = 0;\n }\n }\n\n function onMouseDown(this: HTMLDivElement, event: MouseEvent) {\n event.preventDefault();\n mouseDown.current = true;\n lastMouseEvent.current = event;\n startMouseEvent.current = event;\n velocity.current = 0;\n }\n\n function onMouseMove(this: HTMLDivElement, event: MouseEvent) {\n if (!mouseDown.current) { return; }\n\n // negative dragging right (past), positive left (future)\n const delta = event.clientX - lastMouseEvent.current.clientX;\n\n const movement = event.movementX;\n velocity.current = movement;\n\n const newPostion = getPostion() + delta;\n setPosition(newPostion);\n lastMouseEvent.current = event;\n }\n\n function getBounds(): number {\n if (!scrubberSliderEl.current || !positionIndicatorEl.current) { return 0; }\n return scrubberSliderEl.current.scrollWidth - scrubberSliderEl.current.clientWidth;\n }\n\n function goBack() {\n if (!scrubberSliderEl.current) { return; }\n const newPosition = getPostion() + scrubberSliderEl.current.clientWidth;\n setPosition(newPosition);\n }\n\n function goForward() {\n if (!scrubberSliderEl.current) { return; }\n const newPosition = getPostion() - scrubberSliderEl.current.clientWidth;\n setPosition(newPosition);\n }\n\n async function fetchSpriteInfo() {\n if (!props.scene || !props.scene.paths.vtt) { return; }\n\n const response = await axios.get(props.scene.paths.vtt, {responseType: \"text\"});\n if (response.status !== 200) {\n console.log(response.statusText);\n }\n\n // TODO: This is gnarly\n const lines = response.data.split(\"\\n\");\n if (lines.shift() !== \"WEBVTT\") { return; }\n if (lines.shift() !== \"\") { return; }\n let item: ISceneSpriteItem = {start: 0, end: 0, x: 0, y: 0, w: 0, h: 0};\n const newSpriteItems: ISceneSpriteItem[] = [];\n while (lines.length) {\n const line = lines.shift();\n if (line === undefined) { continue; }\n\n if (line.includes(\"#\") && line.includes(\"=\") && line.includes(\",\")) {\n const size = line.split(\"#\")[1].split(\"=\")[1].split(\",\");\n item.x = Number(size[0]);\n item.y = Number(size[1]);\n item.w = Number(size[2]);\n item.h = Number(size[3]);\n\n newSpriteItems.push(item);\n item = {start: 0, end: 0, x: 0, y: 0, w: 0, h: 0};\n } else if (line.includes(\" --> \")) {\n const times = line.split(\" --> \");\n\n const start = times[0].split(\":\");\n item.start = (+start[0]) * 60 * 60 + (+start[1]) * 60 + (+start[2]);\n\n const end = times[1].split(\":\");\n item.end = (+end[0]) * 60 * 60 + (+end[1]) * 60 + (+end[2]);\n }\n }\n\n setSpriteItems(newSpriteItems);\n // TODO: Very hacky. Need to wait for the scroll width to update from the image loading.\n setTimeout(() => {\n setDelayedRender(true);\n }, 100);\n }\n\n function renderTags() {\n function getTagStyle(i: number): CSSProperties {\n if (!scrubberSliderEl.current ||\n spriteItems.length === 0 ||\n getBounds() === 0) { return {}; }\n\n const tags = window.document.getElementsByClassName(\"scrubber-tag\");\n if (tags.length === 0) { return {}; }\n\n let tag: any;\n for (let index = 0; index < tags.length; index++) {\n tag = tags.item(index) as any;\n const id = tag.getAttribute(\"data-marker-id\");\n if (id === i.toString()) {\n break;\n }\n }\n\n const marker = props.scene.scene_markers[i];\n const duration = Number(props.scene.file.duration);\n const percentage = marker.seconds / duration;\n\n const left = (scrubberSliderEl.current.scrollWidth * percentage) - (tag.clientWidth / 2);\n return {\n left: `${left}px`,\n height: 20,\n };\n }\n\n return props.scene.scene_markers.map((marker, index) => {\n const dataAttrs = {\n \"data-marker-id\": index,\n };\n return (\n \n {marker.title}\n \n );\n });\n }\n\n function renderSprites() {\n function getStyleForSprite(index: number): CSSProperties {\n if (!props.scene.paths.vtt) { return {}; }\n const sprite = spriteItems[index];\n const left = sprite.w * index;\n const path = props.scene.paths.vtt.replace(\"_thumbs.vtt\", \"_sprite.jpg\"); // TODO: Gnarly\n return {\n width: `${sprite.w}px`,\n height: `${sprite.h}px`,\n margin: \"0px auto\",\n backgroundPosition: -sprite.x + \"px \" + -sprite.y + \"px\",\n backgroundImage: `url(${path})`,\n left: `${left}px`,\n };\n }\n\n return spriteItems.map((spriteItem, index) => {\n const dataAttrs = {\n \"data-sprite-item-id\": index,\n };\n return (\n \n {TextUtils.secondsToTimestamp(spriteItem.start)} - {TextUtils.secondsToTimestamp(spriteItem.end)}\n \n );\n });\n }\n\n return (\n
\n goBack()}><\n
\n
\n
\n
\n
\n
\n
\n {renderTags()}\n
\n {renderSprites()}\n
\n
\n
\n goForward()}>>\n
\n );\n};\n","/home/peroo/stash/ui/v2.5/src/components/scenes/SceneSelectedOptions.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/scenes/helpers.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/scenes/scenes.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/select/FilterMultiSelect.tsx",["404","405"],"import * as React from \"react\";\n\nimport { MenuItem } from \"@blueprintjs/core\";\nimport { IMultiSelectProps, ItemPredicate, ItemRenderer, MultiSelect } from \"@blueprintjs/select\";\nimport * as GQL from \"../../core/generated-graphql\";\nimport { StashService } from \"../../core/StashService\";\nimport { HTMLInputProps } from \"../../models\";\nimport { ErrorUtils } from \"../../utils/errors\";\nimport { ToastUtils } from \"../../utils/toasts\";\n\nconst InternalPerformerMultiSelect = MultiSelect.ofType();\nconst InternalTagMultiSelect = MultiSelect.ofType();\nconst InternalStudioMultiSelect = MultiSelect.ofType();\n\ntype ValidTypes =\n GQL.AllPerformersForFilterAllPerformers |\n GQL.AllTagsForFilterAllTags |\n GQL.AllStudiosForFilterAllStudios;\n\ninterface IProps extends HTMLInputProps, Partial> {\n type: \"performers\" | \"studios\" | \"tags\";\n initialIds?: string[];\n onUpdate: (items: ValidTypes[]) => void;\n}\n\nexport const FilterMultiSelect: React.FunctionComponent = (props: IProps) => {\n let MultiSelectImpl = getMultiSelectImpl();\n let InternalMultiSelect = MultiSelectImpl.getInternalMultiSelect();\n const data = MultiSelectImpl.getData();\n \n const [selectedItems, setSelectedItems] = React.useState([]);\n const [items, setItems] = React.useState([]);\n const [newTagName, setNewTagName] = React.useState(\"\");\n const createTag = StashService.useTagCreate(getTagInput() as GQL.TagCreateInput);\n\n React.useEffect(() => {\n if (!!data) {\n MultiSelectImpl.translateData();\n }\n }, [data]);\n \n function getTagInput() {\n const tagInput: Partial = { name: newTagName };\n return tagInput;\n }\n\n async function onCreateNewObject(item: ValidTypes) {\n var created : any;\n if (props.type === \"tags\") {\n try {\n created = await createTag();\n \n items.push(created.data.tagCreate);\n setItems(items.slice());\n addSelectedItem(created.data.tagCreate);\n \n ToastUtils.success(\"Created tag\");\n } catch (e) {\n ErrorUtils.handle(e);\n }\n }\n }\n\n function createNewTag(query : string) {\n setNewTagName(query);\n return {\n name : query\n };\n }\n\n function createNewRenderer(query: string, active: boolean, handleClick: React.MouseEventHandler) {\n // if tag already exists with that name, then don't return anything\n if (items.find((item) => {\n return item.name === query;\n })) {\n return undefined;\n }\n\n return (\n \n );\n }\n\n React.useEffect(() => {\n if (!!props.initialIds && !!items) {\n const initialItems = items.filter((item) => props.initialIds!.includes(item.id));\n setSelectedItems(initialItems);\n }\n }, [props.initialIds, items]);\n\n function getMultiSelectImpl() {\n let getInternalMultiSelect: () => new (props: IMultiSelectProps) => MultiSelect;\n let getData: () => GQL.AllPerformersForFilterQuery | GQL.AllStudiosForFilterQuery | GQL.AllTagsForFilterQuery | undefined;\n let translateData: () => void;\n let createNewObject: ((query : string) => void) | undefined = undefined; \n\n switch (props.type) {\n case \"performers\": {\n getInternalMultiSelect = () => { return InternalPerformerMultiSelect; };\n getData = () => { const { data } = StashService.useAllPerformersForFilter(); return data; }\n translateData = () => { let perfData = data as GQL.AllPerformersForFilterQuery; setItems(!!perfData && !!perfData.allPerformers ? perfData.allPerformers : []); };\n break;\n }\n case \"studios\": {\n getInternalMultiSelect = () => { return InternalStudioMultiSelect; };\n getData = () => { const { data } = StashService.useAllStudiosForFilter(); return data; }\n translateData = () => { let studioData = data as GQL.AllStudiosForFilterQuery; setItems(!!studioData && !!studioData.allStudios ? studioData.allStudios : []); };\n break;\n }\n case \"tags\": {\n getInternalMultiSelect = () => { return InternalTagMultiSelect; };\n getData = () => { const { data } = StashService.useAllTagsForFilter(); return data; }\n translateData = () => { let tagData = data as GQL.AllTagsForFilterQuery; setItems(!!tagData && !!tagData.allTags ? tagData.allTags : []); };\n createNewObject = createNewTag;\n break;\n }\n default: {\n throw \"Unhandled case in FilterMultiSelect\";\n }\n }\n\n return {\n getInternalMultiSelect: getInternalMultiSelect,\n getData: getData,\n translateData: translateData,\n createNewObject: createNewObject\n };\n }\n\n const renderItem: ItemRenderer = (item, itemProps) => {\n if (!itemProps.modifiers.matchesPredicate) { return null; }\n return (\n \n );\n };\n\n const filter: ItemPredicate = (query, item) => {\n if (selectedItems.includes(item)) { return false; }\n return item.name!.toLowerCase().indexOf(query.toLowerCase()) >= 0;\n };\n\n function addSelectedItem(item: ValidTypes) {\n selectedItems.push(item);\n setSelectedItems(selectedItems);\n props.onUpdate(selectedItems);\n }\n\n function onItemSelect(item: ValidTypes) {\n if (item.id === undefined) {\n // create the new item, if applicable\n onCreateNewObject(item);\n } else {\n addSelectedItem(item);\n }\n }\n\n function onItemRemove(value: string, index: number) {\n const newSelectedItems = selectedItems.filter((_, i) => i !== index);\n setSelectedItems(newSelectedItems);\n props.onUpdate(newSelectedItems);\n }\n\n return (\n tag.name}\n tagInputProps={{ onRemove: onItemRemove }}\n onItemSelect={onItemSelect}\n resetOnSelect={true}\n popoverProps={{position: \"bottom\"}}\n createNewItemFromQuery={MultiSelectImpl.createNewObject}\n createNewItemRenderer={createNewRenderer}\n {...props}\n />\n );\n};\n","/home/peroo/stash/ui/v2.5/src/components/select/FilterSelect.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/select/MarkerTitleSuggest.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/select/ScrapePerformerSuggest.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/select/ValidGalleriesSelect.tsx",[],"/home/peroo/stash/ui/v2.5/src/core/StashService.ts",[],"/home/peroo/stash/ui/v2.5/src/core/generated-graphql.tsx",[],"/home/peroo/stash/ui/v2.5/src/hooks/ListHook.tsx",["406","407","408","409"],"import { Spinner } from \"@blueprintjs/core\";\nimport _ from \"lodash\";\nimport queryString from \"query-string\";\nimport React, { useEffect, useState } from \"react\";\nimport { QueryHookResult } from \"react-apollo-hooks\";\nimport { ListFilter } from \"../components/list/ListFilter\";\nimport { Pagination } from \"../components/list/Pagination\";\nimport { StashService } from \"../core/StashService\";\nimport { IBaseProps } from \"../models\";\nimport { Criterion } from \"../models/list-filter/criteria/criterion\";\nimport { ListFilterModel } from \"../models/list-filter/filter\";\nimport { DisplayMode, FilterMode } from \"../models/list-filter/types\";\n\nexport interface IListHookData {\n filter: ListFilterModel;\n template: JSX.Element;\n options: IListHookOptions;\n onSelectChange: (id: string, selected : boolean, shiftKey: boolean) => void;\n}\n\ninterface IListHookOperation {\n text: string;\n onClick: (result: QueryHookResult, filter: ListFilterModel, selectedIds: Set) => void;\n}\n\nexport interface IListHookOptions {\n filterMode: FilterMode;\n props: IBaseProps;\n zoomable?: boolean;\n otherOperations?: IListHookOperation[];\n renderContent: (result: QueryHookResult, filter: ListFilterModel, selectedIds: Set, zoomIndex: number) => JSX.Element | undefined;\n renderSelectedOptions?: (result: QueryHookResult, selectedIds: Set) => JSX.Element | undefined;\n}\n\nexport class ListHook {\n public static useList(options: IListHookOptions): IListHookData {\n const [filter, setFilter] = useState(new ListFilterModel(options.filterMode));\n const [selectedIds, setSelectedIds] = useState>(new Set());\n const [lastClickedId, setLastClickedId] = useState(undefined);\n const [totalCount, setTotalCount] = useState(0);\n const [zoomIndex, setZoomIndex] = useState(1);\n\n // Update the filter when the query parameters change\n useEffect(() => {\n const queryParams = queryString.parse(options.props.location.search);\n const newFilter = _.cloneDeep(filter);\n newFilter.configureFromQueryParameters(queryParams);\n setFilter(newFilter);\n\n // TODO: Need this side effect to update the query params properly\n filter.configureFromQueryParameters(queryParams);\n }, [options.props.location.search]);\n\n let result: QueryHookResult;\n\n let getData: (filter : ListFilterModel) => QueryHookResult;\n let getItems: () => any[];\n let getCount: () => number;\n\n switch (options.filterMode) {\n case FilterMode.Scenes: {\n getData = (filter : ListFilterModel) => { return StashService.useFindScenes(filter); }\n getItems = () => { return !!result.data && !!result.data.findScenes ? result.data.findScenes.scenes : []; }\n getCount = () => { return !!result.data && !!result.data.findScenes ? result.data.findScenes.count : 0; }\n break;\n }\n case FilterMode.SceneMarkers: {\n getData = (filter : ListFilterModel) => { return StashService.useFindSceneMarkers(filter); }\n getItems = () => { return !!result.data && !!result.data.findSceneMarkers ? result.data.findSceneMarkers.scene_markers : []; }\n getCount = () => { return !!result.data && !!result.data.findSceneMarkers ? result.data.findSceneMarkers.count : 0; }\n break;\n }\n case FilterMode.Galleries: {\n getData = (filter : ListFilterModel) => { return StashService.useFindGalleries(filter); }\n getItems = () => { return !!result.data && !!result.data.findGalleries ? result.data.findGalleries.galleries : []; }\n getCount = () => { return !!result.data && !!result.data.findGalleries ? result.data.findGalleries.count : 0; }\n break;\n }\n case FilterMode.Studios: {\n getData = (filter : ListFilterModel) => { return StashService.useFindStudios(filter); }\n getItems = () => { return !!result.data && !!result.data.findStudios ? result.data.findStudios.studios : []; }\n getCount = () => { return !!result.data && !!result.data.findStudios ? result.data.findStudios.count : 0; }\n break;\n }\n case FilterMode.Performers: {\n getData = (filter : ListFilterModel) => { return StashService.useFindPerformers(filter); }\n getItems = () => { return !!result.data && !!result.data.findPerformers ? result.data.findPerformers.performers : []; }\n getCount = () => { return !!result.data && !!result.data.findPerformers ? result.data.findPerformers.count : 0; }\n break;\n }\n default: {\n console.error(\"REMOVE DEFAULT IN LIST HOOK\");\n getData = (filter : ListFilterModel) => { return StashService.useFindScenes(filter); }\n getItems = () => { return !!result.data && !!result.data.findScenes ? result.data.findScenes.scenes : []; }\n getCount = () => { return !!result.data && !!result.data.findScenes ? result.data.findScenes.count : 0; }\n break;\n }\n }\n\n result = getData(filter);\n\n useEffect(() => {\n setTotalCount(getCount());\n\n // select none when data changes\n onSelectNone();\n setLastClickedId(undefined);\n }, [result.data])\n\n // Update the query parameters when the data changes\n useEffect(() => {\n const location = Object.assign({}, options.props.history.location);\n location.search = filter.makeQueryParameters();\n options.props.history.replace(location);\n }, [result.data, filter.displayMode]);\n\n // Update the total count\n useEffect(() => {\n const newFilter = _.cloneDeep(filter);\n newFilter.totalCount = totalCount;\n setFilter(newFilter);\n }, [totalCount]);\n\n function onChangePageSize(pageSize: number) {\n const newFilter = _.cloneDeep(filter);\n newFilter.itemsPerPage = pageSize;\n newFilter.currentPage = 1;\n setFilter(newFilter);\n }\n\n function onChangeQuery(query: string) {\n const newFilter = _.cloneDeep(filter);\n newFilter.searchTerm = query;\n newFilter.currentPage = 1;\n setFilter(newFilter);\n }\n\n function onChangeSortDirection(sortDirection: \"asc\" | \"desc\") {\n const newFilter = _.cloneDeep(filter);\n newFilter.sortDirection = sortDirection;\n setFilter(newFilter);\n }\n\n function onChangeSortBy(sortBy: string) {\n const newFilter = _.cloneDeep(filter);\n newFilter.sortBy = sortBy;\n newFilter.currentPage = 1;\n setFilter(newFilter);\n }\n\n function onChangeDisplayMode(displayMode: DisplayMode) {\n const newFilter = _.cloneDeep(filter);\n newFilter.displayMode = displayMode;\n setFilter(newFilter);\n }\n\n function onAddCriterion(criterion: Criterion, oldId?: string) {\n const newFilter = _.cloneDeep(filter);\n\n // Find if we are editing an existing criteria, then modify that. Or create a new one.\n const existingIndex = newFilter.criteria.findIndex((c) => {\n // If we modified an existing criterion, then look for the old id.\n const id = !!oldId ? oldId : criterion.getId();\n return c.getId() === id;\n });\n if (existingIndex === -1) {\n newFilter.criteria.push(criterion);\n } else {\n newFilter.criteria[existingIndex] = criterion;\n }\n\n // Remove duplicate modifiers\n newFilter.criteria = newFilter.criteria.filter((obj, pos, arr) => {\n return arr.map((mapObj: any) => mapObj.getId()).indexOf(obj.getId()) === pos;\n });\n\n newFilter.currentPage = 1;\n setFilter(newFilter);\n }\n\n function onRemoveCriterion(removedCriterion: Criterion) {\n const newFilter = _.cloneDeep(filter);\n newFilter.criteria = newFilter.criteria.filter((criterion) => criterion.getId() !== removedCriterion.getId());\n newFilter.currentPage = 1;\n setFilter(newFilter);\n }\n\n function onChangePage(page: number) {\n const newFilter = _.cloneDeep(filter);\n newFilter.currentPage = page;\n setFilter(newFilter);\n }\n\n function onSelectChange(id: string, selected : boolean, shiftKey: boolean) {\n if (shiftKey) {\n multiSelect(id, selected);\n } else {\n singleSelect(id, selected);\n }\n }\n\n function singleSelect(id: string, selected: boolean) {\n setLastClickedId(id);\n \n const newSelectedIds = _.clone(selectedIds);\n if (selected) {\n newSelectedIds.add(id);\n } else {\n newSelectedIds.delete(id);\n }\n\n setSelectedIds(newSelectedIds);\n }\n\n function multiSelect(id: string, selected : boolean) {\n let startIndex = 0;\n let thisIndex = -1;\n \n if (!!lastClickedId) {\n startIndex = getItems().findIndex((item) => {\n return item.id === lastClickedId;\n });\n }\n\n thisIndex = getItems().findIndex((item) => {\n return item.id === id;\n });\n\n selectRange(startIndex, thisIndex);\n }\n \n function selectRange(startIndex : number, endIndex : number) {\n if (startIndex > endIndex) {\n let tmp = startIndex;\n startIndex = endIndex;\n endIndex = tmp;\n }\n \n const subset = getItems().slice(startIndex, endIndex + 1);\n const newSelectedIds : Set = new Set();\n\n subset.forEach((item) => {\n newSelectedIds.add(item.id);\n });\n\n setSelectedIds(newSelectedIds);\n }\n\n function onSelectAll() {\n const newSelectedIds : Set = new Set();\n getItems().forEach((item) => {\n newSelectedIds.add(item.id);\n });\n\n setSelectedIds(newSelectedIds);\n setLastClickedId(undefined);\n }\n\n function onSelectNone() {\n const newSelectedIds : Set = new Set();\n setSelectedIds(newSelectedIds);\n setLastClickedId(undefined);\n }\n\n function onChangeZoom(newZoomIndex : number) {\n setZoomIndex(newZoomIndex);\n }\n\n const otherOperations = options.otherOperations ? options.otherOperations.map((o) => {\n return {\n text: o.text,\n onClick: () => {\n o.onClick(result, filter, selectedIds);\n }\n }\n }) : undefined;\n\n const template = (\n
\n \n {options.renderSelectedOptions && selectedIds.size > 0 ? options.renderSelectedOptions(result, selectedIds) : undefined}\n {result.loading ? : undefined}\n {result.error ?

{result.error.message}

: undefined}\n {options.renderContent(result, filter, selectedIds, zoomIndex)}\n \n
\n );\n\n return { filter, template, options, onSelectChange };\n }\n}\n","/home/peroo/stash/ui/v2.5/src/hooks/LocalForage.ts",[],"/home/peroo/stash/ui/v2.5/src/hooks/VideoHover.ts",[],"/home/peroo/stash/ui/v2.5/src/index.tsx",[],"/home/peroo/stash/ui/v2.5/src/models/base-props.ts",[],"/home/peroo/stash/ui/v2.5/src/models/index.ts",[],"/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/criterion.ts",[],"/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/favorite.ts",[],"/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/has-markers.ts",[],"/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/is-missing.ts",[],"/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/none.ts",[],"/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/performers.ts",[],"/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/rating.ts",[],"/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/resolution.ts",[],"/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/studios.ts",[],"/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/tags.ts",[],"/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/utils.ts",[],"/home/peroo/stash/ui/v2.5/src/models/list-filter/filter.ts",[],"/home/peroo/stash/ui/v2.5/src/models/list-filter/types.ts",[],"/home/peroo/stash/ui/v2.5/src/models/react-images.d.ts",[],"/home/peroo/stash/ui/v2.5/src/models/react-jw-player.d.ts",[],"/home/peroo/stash/ui/v2.5/src/models/types.ts",[],"/home/peroo/stash/ui/v2.5/src/react-app-env.d.ts",[],"/home/peroo/stash/ui/v2.5/src/serviceWorker.ts",[],"/home/peroo/stash/ui/v2.5/src/utils/color.ts",[],"/home/peroo/stash/ui/v2.5/src/utils/editabletext.tsx",[],"/home/peroo/stash/ui/v2.5/src/utils/errors.ts",[],"/home/peroo/stash/ui/v2.5/src/utils/image.tsx",[],"/home/peroo/stash/ui/v2.5/src/utils/navigation.ts",[],"/home/peroo/stash/ui/v2.5/src/utils/table.tsx",[],"/home/peroo/stash/ui/v2.5/src/utils/text.ts",["410"],"export class TextUtils {\n\n public static truncate(value?: string, limit: number = 100, tail: string = \"...\"): string {\n if (!value) { return \"\"; }\n return value.length > limit ? value.substring(0, limit) + tail : value;\n }\n\n public static fileSize(bytes: number = 0, precision: number = 2): string {\n if (isNaN(parseFloat(String(bytes))) || !isFinite(bytes)) { return \"?\"; }\n\n let unit = 0;\n while ( bytes >= 1024 ) {\n bytes /= 1024;\n unit++;\n }\n\n return bytes.toFixed(+precision) + \" \" + this.units[unit];\n }\n\n public static secondsToTimestamp(seconds: number): string {\n let ret = new Date(seconds * 1000).toISOString().substr(11, 8);\n\n if (ret.startsWith(\"00\")) {\n // strip hours if under one hour\n ret = ret.substr(3);\n }\n if (ret.startsWith(\"0\")) {\n // for duration under a minute, leave one leading zero\n ret = ret.substr(1);\n }\n return ret;\n }\n\n public static fileNameFromPath(path: string): string {\n if (!!path === false) { return \"No File Name\"; }\n return path.replace(/^.*[\\\\\\/]/, \"\");\n }\n\n public static age(dateString?: string, fromDateString?: string): number {\n if (!dateString) { return 0; }\n\n const birthdate = new Date(dateString);\n const fromDate = !!fromDateString ? new Date(fromDateString) : new Date();\n\n let age = fromDate.getFullYear() - birthdate.getFullYear();\n if (birthdate.getMonth() > fromDate.getMonth() ||\n (birthdate.getMonth() >= fromDate.getMonth() && birthdate.getDay() > fromDate.getDay())) {\n age -= 1;\n }\n\n return age;\n }\n\n public static bitRate(bitrate: number) {\n const megabits = bitrate / 1000000;\n return `${megabits.toFixed(2)} megabits per second`;\n }\n\n public static resolution(height: number) {\n if (height >= 240 && height < 480) {\n return \"240p\";\n } else if (height >= 480 && height < 720) {\n return \"480p\";\n } else if (height >= 720 && height < 1080) {\n return \"720p\";\n } else if (height >= 1080 && height < 2160) {\n return \"1080p\";\n } else if (height >= 2160) {\n return \"4K\";\n } else {\n return undefined;\n }\n }\n\n private static units = [\n \"bytes\",\n \"kB\",\n \"MB\",\n \"GB\",\n \"TB\",\n \"PB\",\n ];\n}\n","/home/peroo/stash/ui/v2.5/src/utils/toasts.ts",[],"/home/peroo/stash/ui/v2.5/src/utils/zoom.ts",[],{"ruleId":"411","severity":1,"message":"412","line":20,"column":6,"nodeType":"413","endLine":20,"endColumn":12,"fix":"414"},{"ruleId":"411","severity":1,"message":"415","line":26,"column":6,"nodeType":"413","endLine":26,"endColumn":13,"fix":"416"},{"ruleId":"411","severity":1,"message":"417","line":67,"column":6,"nodeType":"413","endLine":67,"endColumn":12,"fix":"418"},{"ruleId":"411","severity":1,"message":"419","line":49,"column":6,"nodeType":"413","endLine":49,"endColumn":19,"fix":"420"},{"ruleId":"411","severity":1,"message":"421","line":92,"column":6,"nodeType":"413","endLine":92,"endColumn":12,"fix":"422"},{"ruleId":"411","severity":1,"message":"423","line":101,"column":6,"nodeType":"413","endLine":101,"endColumn":20,"fix":"424"},{"ruleId":"411","severity":1,"message":"425","line":117,"column":6,"nodeType":"413","endLine":117,"endColumn":16,"fix":"426"},{"ruleId":"411","severity":1,"message":"412","line":85,"column":6,"nodeType":"413","endLine":85,"endColumn":12,"fix":"427"},{"ruleId":"411","severity":1,"message":"428","line":94,"column":6,"nodeType":"413","endLine":94,"endColumn":17,"fix":"429"},{"ruleId":"411","severity":1,"message":"412","line":28,"column":6,"nodeType":"413","endLine":28,"endColumn":12,"fix":"430"},{"ruleId":"411","severity":1,"message":"431","line":30,"column":3,"nodeType":"432","endLine":30,"endColumn":12,"fix":"433"},{"ruleId":"411","severity":1,"message":"434","line":343,"column":6,"nodeType":"413","endLine":343,"endColumn":19,"fix":"435"},{"ruleId":"411","severity":1,"message":"436","line":448,"column":6,"nodeType":"413","endLine":448,"endColumn":20,"fix":"437"},{"ruleId":"438","severity":1,"message":"439","line":58,"column":10,"nodeType":"432","endLine":58,"endColumn":23},{"ruleId":"411","severity":1,"message":"440","line":67,"column":6,"nodeType":"413","endLine":67,"endColumn":19,"fix":"441"},{"ruleId":"411","severity":1,"message":"442","line":77,"column":6,"nodeType":"413","endLine":77,"endColumn":22,"fix":"443"},{"ruleId":"411","severity":1,"message":"444","line":91,"column":17,"nodeType":"432","endLine":91,"endColumn":24},{"ruleId":"411","severity":1,"message":"444","line":100,"column":17,"nodeType":"432","endLine":100,"endColumn":24},{"ruleId":"411","severity":1,"message":"445","line":40,"column":6,"nodeType":"413","endLine":40,"endColumn":12,"fix":"446"},{"ruleId":"447","severity":1,"message":"448","line":123,"column":9,"nodeType":"449","messageId":"450","endLine":123,"endColumn":53},{"ruleId":"411","severity":1,"message":"451","line":52,"column":8,"nodeType":"413","endLine":52,"endColumn":39,"fix":"452"},{"ruleId":"411","severity":1,"message":"453","line":108,"column":8,"nodeType":"413","endLine":108,"endColumn":21,"fix":"454"},{"ruleId":"411","severity":1,"message":"455","line":115,"column":8,"nodeType":"413","endLine":115,"endColumn":41,"fix":"456"},{"ruleId":"411","severity":1,"message":"451","line":122,"column":8,"nodeType":"413","endLine":122,"endColumn":20,"fix":"457"},{"ruleId":"458","severity":1,"message":"459","line":36,"column":32,"nodeType":"460","messageId":"461","endLine":36,"endColumn":33,"suggestions":"462"},"react-hooks/exhaustive-deps","React Hook useEffect has missing dependencies: 'error' and 'loading'. Either include them or remove the dependency array.","ArrayExpression",{"range":"463","text":"464"},"React Hook useEffect has a missing dependency: 'props.history'. Either include it or remove the dependency array.",{"range":"465","text":"466"},"React Hook useEffect has a missing dependency: 'error'. Either include it or remove the dependency array.",{"range":"467","text":"468"},"React Hook useEffect has a missing dependency: 'config.error'. Either include it or remove the dependency array.",{"range":"469","text":"470"},"React Hook useEffect has missing dependencies: 'filterByLogLevel', 'prependLogEntries', and 'updateFilteredEntries'. Either include them or remove the dependency array.",{"range":"471","text":"472"},"React Hook useEffect has missing dependencies: 'appendLogEntries' and 'updateFilteredEntries'. Either include them or remove the dependency array.",{"range":"473","text":"474"},"React Hook useEffect has a missing dependency: 'updateFilteredEntries'. Either include it or remove the dependency array.",{"range":"475","text":"476"},{"range":"477","text":"464"},"React Hook useEffect has a missing dependency: 'isNew'. Either include it or remove the dependency array.",{"range":"478","text":"479"},{"range":"480","text":"464"},"React Hook useEffect contains a call to 'setTimestamp'. Without a list of dependencies, this can lead to an infinite chain of updates. To fix this, pass [props.location.search, timestamp] as a second argument to the useEffect Hook.","Identifier",{"range":"481","text":"482"},"React Hook useEffect has a missing dependency: 'onFind'. Either include it or remove the dependency array.",{"range":"483","text":"484"},"React Hook useEffect has missing dependencies: 'allDateSet', 'allPerformerSet', 'allStudioSet', 'allTagSet', and 'allTitleSet'. Either include them or remove the dependency array.",{"range":"485","text":"486"},"@typescript-eslint/no-unused-vars","'delayedRender' is assigned a value but never used.","React Hook useEffect has a missing dependency: 'fetchSpriteInfo'. Either include it or remove the dependency array.",{"range":"487","text":"488"},"React Hook useEffect has missing dependencies: 'props.scene.file.duration' and 'setPosition'. Either include them or remove the dependency array.",{"range":"489","text":"490"},"The ref value 'contentEl.current' will likely have changed by the time this effect cleanup function runs. If this ref points to a node rendered by React, copy 'contentEl.current' to a variable inside the effect, and use that variable in the cleanup function.","React Hook React.useEffect has a missing dependency: 'MultiSelectImpl'. Either include it or remove the dependency array.",{"range":"491","text":"492"},"no-throw-literal","Expected an error object to be thrown.","ThrowStatement","object","React Hook useEffect has a missing dependency: 'filter'. Either include it or remove the dependency array.",{"range":"493","text":"494"},"React Hook useEffect has a missing dependency: 'getCount'. Either include it or remove the dependency array.",{"range":"495","text":"496"},"React Hook useEffect has missing dependencies: 'filter' and 'options.props.history'. Either include them or remove the dependency array.",{"range":"497","text":"498"},{"range":"499","text":"500"},"no-useless-escape","Unnecessary escape character: \\/.","Literal","unnecessaryEscape",["501","502"],[766,772],"[data, error, loading]",[983,990],"[props.history, tabId]",[2592,2598],"[data, error]",[1925,1938],"[config.data, config.error]",[2796,2802],"[data, filterByLogLevel, prependLogEntries, updateFilteredEntries]",[3020,3034],"[appendLogEntries, existingData, updateFilteredEntries]",[3422,3432],"[logLevel, updateFilteredEntries]",[4401,4407],[4596,4607],"[isNew, performer]",[1360,1366],[1772,1772],", [props.location.search, timestamp]",[9771,9784],"[onFind, parserInput]",[12750,12764],"[allDateSet, allPerformerSet, allStudioSet, allTagSet, allTitleSet, parserResult]",[2298,2311],"[fetchSpriteInfo, props.scene]",[2667,2683],"[props.position, props.scene.file.duration, setPosition]",[1668,1674],"[MultiSelectImpl, data]",[2305,2336],"[filter, options.props.location.search]",[5171,5184],"[getCount, result.data]",[5448,5481],"[result.data, filter.displayMode, options.props.history, filter]",[5658,5670],"[filter, totalCount]",{"messageId":"503","fix":"504","desc":"505"},{"messageId":"506","fix":"507","desc":"508"},"removeEscape",{"range":"509","text":"510"},"Remove the `\\`. This maintains the current functionality.","escapeBackslash",{"range":"511","text":"512"},"Replace the `\\` with `\\\\` to include the actual backslash character.",[1068,1069],"",[1068,1068],"\\"] \ No newline at end of file +[{"/home/peroo/stash/ui/v2.5/src/App.tsx":"1","/home/peroo/stash/ui/v2.5/src/components/ErrorBoundary.tsx":"2","/home/peroo/stash/ui/v2.5/src/components/Galleries/Galleries.tsx":"3","/home/peroo/stash/ui/v2.5/src/components/Galleries/Gallery.tsx":"4","/home/peroo/stash/ui/v2.5/src/components/Galleries/GalleryList.tsx":"5","/home/peroo/stash/ui/v2.5/src/components/Galleries/GalleryViewer.tsx":"6","/home/peroo/stash/ui/v2.5/src/components/MainNavbar.tsx":"7","/home/peroo/stash/ui/v2.5/src/components/PageNotFound.tsx":"8","/home/peroo/stash/ui/v2.5/src/components/Settings/Settings.tsx":"9","/home/peroo/stash/ui/v2.5/src/components/Settings/SettingsAboutPanel.tsx":"10","/home/peroo/stash/ui/v2.5/src/components/Settings/SettingsConfigurationPanel.tsx":"11","/home/peroo/stash/ui/v2.5/src/components/Settings/SettingsInterfacePanel.tsx":"12","/home/peroo/stash/ui/v2.5/src/components/Settings/SettingsLogsPanel.tsx":"13","/home/peroo/stash/ui/v2.5/src/components/Settings/SettingsTasksPanel/GenerateButton.tsx":"14","/home/peroo/stash/ui/v2.5/src/components/Settings/SettingsTasksPanel/SettingsTasksPanel.tsx":"15","/home/peroo/stash/ui/v2.5/src/components/Shared/DetailsEditNavbar.tsx":"16","/home/peroo/stash/ui/v2.5/src/components/Shared/DurationInput.tsx":"17","/home/peroo/stash/ui/v2.5/src/components/Shared/FolderSelect/FolderSelect.tsx":"18","/home/peroo/stash/ui/v2.5/src/components/Shared/TagLink.tsx":"19","/home/peroo/stash/ui/v2.5/src/components/Stats.tsx":"20","/home/peroo/stash/ui/v2.5/src/components/Studios/StudioCard.tsx":"21","/home/peroo/stash/ui/v2.5/src/components/Studios/StudioDetails/Studio.tsx":"22","/home/peroo/stash/ui/v2.5/src/components/Studios/StudioList.tsx":"23","/home/peroo/stash/ui/v2.5/src/components/Studios/Studios.tsx":"24","/home/peroo/stash/ui/v2.5/src/components/Tags/TagList.tsx":"25","/home/peroo/stash/ui/v2.5/src/components/Tags/Tags.tsx":"26","/home/peroo/stash/ui/v2.5/src/components/Wall/WallItem.tsx":"27","/home/peroo/stash/ui/v2.5/src/components/Wall/WallPanel.tsx":"28","/home/peroo/stash/ui/v2.5/src/components/list/AddFilter.tsx":"29","/home/peroo/stash/ui/v2.5/src/components/list/ListFilter.tsx":"30","/home/peroo/stash/ui/v2.5/src/components/list/Pagination.tsx":"31","/home/peroo/stash/ui/v2.5/src/components/performers/PerformerCard.tsx":"32","/home/peroo/stash/ui/v2.5/src/components/performers/PerformerDetails/Performer.tsx":"33","/home/peroo/stash/ui/v2.5/src/components/performers/PerformerList.tsx":"34","/home/peroo/stash/ui/v2.5/src/components/performers/PerformerListTable.tsx":"35","/home/peroo/stash/ui/v2.5/src/components/performers/performers.tsx":"36","/home/peroo/stash/ui/v2.5/src/components/scenes/SceneCard.tsx":"37","/home/peroo/stash/ui/v2.5/src/components/scenes/SceneDetails/Scene.tsx":"38","/home/peroo/stash/ui/v2.5/src/components/scenes/SceneDetails/SceneDetailPanel.tsx":"39","/home/peroo/stash/ui/v2.5/src/components/scenes/SceneDetails/SceneEditPanel.tsx":"40","/home/peroo/stash/ui/v2.5/src/components/scenes/SceneDetails/SceneFileInfoPanel.tsx":"41","/home/peroo/stash/ui/v2.5/src/components/scenes/SceneDetails/SceneMarkersPanel.tsx":"42","/home/peroo/stash/ui/v2.5/src/components/scenes/SceneDetails/ScenePerformerPanel.tsx":"43","/home/peroo/stash/ui/v2.5/src/components/scenes/SceneFilenameParser.tsx":"44","/home/peroo/stash/ui/v2.5/src/components/scenes/SceneList.tsx":"45","/home/peroo/stash/ui/v2.5/src/components/scenes/SceneListTable.tsx":"46","/home/peroo/stash/ui/v2.5/src/components/scenes/SceneMarkerList.tsx":"47","/home/peroo/stash/ui/v2.5/src/components/scenes/ScenePlayer/ScenePlayer.tsx":"48","/home/peroo/stash/ui/v2.5/src/components/scenes/ScenePlayer/ScenePlayerScrubber.tsx":"49","/home/peroo/stash/ui/v2.5/src/components/scenes/SceneSelectedOptions.tsx":"50","/home/peroo/stash/ui/v2.5/src/components/scenes/helpers.tsx":"51","/home/peroo/stash/ui/v2.5/src/components/scenes/scenes.tsx":"52","/home/peroo/stash/ui/v2.5/src/core/StashService.ts":"53","/home/peroo/stash/ui/v2.5/src/core/generated-graphql.tsx":"54","/home/peroo/stash/ui/v2.5/src/hooks/ListHook.tsx":"55","/home/peroo/stash/ui/v2.5/src/hooks/LocalForage.ts":"56","/home/peroo/stash/ui/v2.5/src/hooks/VideoHover.ts":"57","/home/peroo/stash/ui/v2.5/src/index.tsx":"58","/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/criterion.ts":"59","/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/favorite.ts":"60","/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/has-markers.ts":"61","/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/is-missing.ts":"62","/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/none.ts":"63","/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/performers.ts":"64","/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/rating.ts":"65","/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/resolution.ts":"66","/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/studios.ts":"67","/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/tags.ts":"68","/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/utils.ts":"69","/home/peroo/stash/ui/v2.5/src/models/list-filter/filter.ts":"70","/home/peroo/stash/ui/v2.5/src/models/list-filter/types.ts":"71","/home/peroo/stash/ui/v2.5/src/models/react-jw-player.d.ts":"72","/home/peroo/stash/ui/v2.5/src/react-app-env.d.ts":"73","/home/peroo/stash/ui/v2.5/src/serviceWorker.ts":"74","/home/peroo/stash/ui/v2.5/src/utils/image.tsx":"75","/home/peroo/stash/ui/v2.5/src/utils/navigation.ts":"76","/home/peroo/stash/ui/v2.5/src/utils/table.tsx":"77","/home/peroo/stash/ui/v2.5/src/utils/text.ts":"78","/home/peroo/stash/ui/v2.5/src/components/Shared/Icon.tsx":"79","/home/peroo/stash/ui/v2.5/src/components/Shared/Modal.tsx":"80","/home/peroo/stash/ui/v2.5/src/components/Shared/Select.tsx":"81","/home/peroo/stash/ui/v2.5/src/components/Shared/index.ts":"82","/home/peroo/stash/ui/v2.5/src/hooks/Toast.tsx":"83","/home/peroo/stash/ui/v2.5/src/hooks/index.ts":"84","/home/peroo/stash/ui/v2.5/src/utils/index.ts":"85"},{"size":1808,"mtime":1578597473383,"results":"86","hashOfConfig":"87"},{"size":769,"mtime":1577979127060,"results":"88","hashOfConfig":"87"},{"size":364,"mtime":1577979127060,"results":"89","hashOfConfig":"87"},{"size":673,"mtime":1578780374404,"results":"90","hashOfConfig":"87"},{"size":1706,"mtime":1578840371228,"results":"91","hashOfConfig":"87"},{"size":1459,"mtime":1578780782586,"results":"92","hashOfConfig":"87"},{"size":2025,"mtime":1578780973810,"results":"93","hashOfConfig":"87"},{"size":154,"mtime":1577979127060,"results":"94","hashOfConfig":"87"},{"size":2080,"mtime":1578606630070,"results":"95","hashOfConfig":"87"},{"size":1089,"mtime":1578779962137,"results":"96","hashOfConfig":"87"},{"size":10690,"mtime":1578777377200,"results":"97","hashOfConfig":"87"},{"size":4174,"mtime":1578777395837,"results":"98","hashOfConfig":"87"},{"size":3378,"mtime":1579081670257,"results":"99","hashOfConfig":"87"},{"size":1596,"mtime":1578777455727,"results":"100","hashOfConfig":"87"},{"size":7197,"mtime":1578777429962,"results":"101","hashOfConfig":"87"},{"size":4100,"mtime":1578772579521,"results":"102","hashOfConfig":"87"},{"size":2808,"mtime":1579376263183,"results":"103","hashOfConfig":"87"},{"size":2842,"mtime":1579083191986,"results":"104","hashOfConfig":"87"},{"size":1089,"mtime":1578772646246,"results":"105","hashOfConfig":"87"},{"size":1957,"mtime":1577992677258,"results":"106","hashOfConfig":"87"},{"size":692,"mtime":1578779922613,"results":"107","hashOfConfig":"87"},{"size":4965,"mtime":1578775703361,"results":"108","hashOfConfig":"87"},{"size":1109,"mtime":1578840450818,"results":"109","hashOfConfig":"87"},{"size":364,"mtime":1577979127156,"results":"110","hashOfConfig":"87"},{"size":4251,"mtime":1578772374069,"results":"111","hashOfConfig":"87"},{"size":244,"mtime":1577979127172,"results":"112","hashOfConfig":"87"},{"size":4840,"mtime":1578777944861,"results":"113","hashOfConfig":"87"},{"size":2718,"mtime":1578779875383,"results":"114","hashOfConfig":"87"},{"size":6945,"mtime":1578780147932,"results":"115","hashOfConfig":"87"},{"size":7927,"mtime":1578780083370,"results":"116","hashOfConfig":"87"},{"size":3338,"mtime":1578857663610,"results":"117","hashOfConfig":"87"},{"size":1396,"mtime":1578772518825,"results":"118","hashOfConfig":"87"},{"size":13319,"mtime":1579090535092,"results":"119","hashOfConfig":"87"},{"size":2299,"mtime":1578840417294,"results":"120","hashOfConfig":"87"},{"size":2486,"mtime":1578772436440,"results":"121","hashOfConfig":"87"},{"size":397,"mtime":1577979127192,"results":"122","hashOfConfig":"87"},{"size":6781,"mtime":1578777970063,"results":"123","hashOfConfig":"87"},{"size":3460,"mtime":1578862782601,"results":"124","hashOfConfig":"87"},{"size":1340,"mtime":1578776136708,"results":"125","hashOfConfig":"87"},{"size":12186,"mtime":1578777073186,"results":"126","hashOfConfig":"87"},{"size":3084,"mtime":1578775782756,"results":"127","hashOfConfig":"87"},{"size":8860,"mtime":1579083289085,"results":"128","hashOfConfig":"87"},{"size":622,"mtime":1578779863998,"results":"129","hashOfConfig":"87"},{"size":28913,"mtime":1579375318854,"results":"130","hashOfConfig":"87"},{"size":3630,"mtime":1578840509676,"results":"131","hashOfConfig":"87"},{"size":2891,"mtime":1578779742343,"results":"132","hashOfConfig":"87"},{"size":2073,"mtime":1578840478306,"results":"133","hashOfConfig":"87"},{"size":5728,"mtime":1578779762449,"results":"134","hashOfConfig":"87"},{"size":10451,"mtime":1579365871415,"results":"135","hashOfConfig":"87"},{"size":8853,"mtime":1578777324073,"results":"136","hashOfConfig":"87"},{"size":903,"mtime":1578779727474,"results":"137","hashOfConfig":"87"},{"size":484,"mtime":1577979127227,"results":"138","hashOfConfig":"87"},{"size":15920,"mtime":1578694141057,"results":"139","hashOfConfig":"87"},{"size":73414,"mtime":1577979127231,"results":"140","hashOfConfig":"87"},{"size":10952,"mtime":1578857810131,"results":"141","hashOfConfig":"87"},{"size":1659,"mtime":1577979127231,"results":"142","hashOfConfig":"87"},{"size":2144,"mtime":1577979127231,"results":"143","hashOfConfig":"87"},{"size":737,"mtime":1577993631244,"results":"144","hashOfConfig":"87"},{"size":6817,"mtime":1578779686935,"results":"145","hashOfConfig":"87"},{"size":654,"mtime":1578779602441,"results":"146","hashOfConfig":"87"},{"size":659,"mtime":1578779676544,"results":"147","hashOfConfig":"87"},{"size":677,"mtime":1578779621979,"results":"148","hashOfConfig":"87"},{"size":561,"mtime":1578779656917,"results":"149","hashOfConfig":"87"},{"size":961,"mtime":1578779704059,"results":"150","hashOfConfig":"87"},{"size":1008,"mtime":1578779647146,"results":"151","hashOfConfig":"87"},{"size":689,"mtime":1578779632605,"results":"152","hashOfConfig":"87"},{"size":876,"mtime":1578779695856,"results":"153","hashOfConfig":"87"},{"size":1277,"mtime":1578779714508,"results":"154","hashOfConfig":"87"},{"size":1955,"mtime":1578779612056,"results":"155","hashOfConfig":"87"},{"size":12442,"mtime":1578828077239,"results":"156","hashOfConfig":"87"},{"size":278,"mtime":1577979127255,"results":"157","hashOfConfig":"87"},{"size":200,"mtime":1577979127255,"results":"158","hashOfConfig":"87"},{"size":40,"mtime":1577979127255,"results":"159","hashOfConfig":"87"},{"size":5216,"mtime":1577979127287,"results":"160","hashOfConfig":"87"},{"size":1017,"mtime":1578772276612,"results":"161","hashOfConfig":"87"},{"size":2316,"mtime":1578785966854,"results":"162","hashOfConfig":"87"},{"size":3331,"mtime":1578772154994,"results":"163","hashOfConfig":"87"},{"size":2170,"mtime":1578771832873,"results":"164","hashOfConfig":"87"},{"size":394,"mtime":1578768337650,"results":"165","hashOfConfig":"87"},{"size":1154,"mtime":1578687200851,"results":"166","hashOfConfig":"87"},{"size":8029,"mtime":1578777486582,"results":"167","hashOfConfig":"87"},{"size":391,"mtime":1578776102511,"results":"168","hashOfConfig":"87"},{"size":1921,"mtime":1579375302147,"results":"169","hashOfConfig":"87"},{"size":269,"mtime":1578840329810,"results":"170","hashOfConfig":"87"},{"size":197,"mtime":1578772509485,"results":"171","hashOfConfig":"87"},{"filePath":"172","messages":"173","errorCount":5,"warningCount":0,"fixableErrorCount":5,"fixableWarningCount":0,"source":null},"ojnhck",{"filePath":"174","messages":"175","errorCount":1,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":null},{"filePath":"176","messages":"177","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"178","messages":"179","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"180","messages":"181","errorCount":9,"warningCount":0,"fixableErrorCount":9,"fixableWarningCount":0,"source":null},{"filePath":"182","messages":"183","errorCount":3,"warningCount":0,"fixableErrorCount":3,"fixableWarningCount":0,"source":null},{"filePath":"184","messages":"185","errorCount":52,"warningCount":0,"fixableErrorCount":52,"fixableWarningCount":0,"source":null},{"filePath":"186","messages":"187","errorCount":1,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":null},{"filePath":"188","messages":"189","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"190","messages":"191","errorCount":18,"warningCount":0,"fixableErrorCount":18,"fixableWarningCount":0,"source":null},{"filePath":"192","messages":"193","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"194","messages":"195","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"196","messages":"197","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"198","messages":"199","errorCount":9,"warningCount":0,"fixableErrorCount":9,"fixableWarningCount":0,"source":null},{"filePath":"200","messages":"201","errorCount":29,"warningCount":0,"fixableErrorCount":29,"fixableWarningCount":0,"source":null},{"filePath":"202","messages":"203","errorCount":39,"warningCount":0,"fixableErrorCount":39,"fixableWarningCount":0,"source":null},{"filePath":"204","messages":"205","errorCount":20,"warningCount":0,"fixableErrorCount":20,"fixableWarningCount":0,"source":null},{"filePath":"206","messages":"207","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"208","messages":"209","errorCount":4,"warningCount":0,"fixableErrorCount":4,"fixableWarningCount":0,"source":null},{"filePath":"210","messages":"211","errorCount":6,"warningCount":0,"fixableErrorCount":6,"fixableWarningCount":0,"source":null},{"filePath":"212","messages":"213","errorCount":4,"warningCount":0,"fixableErrorCount":4,"fixableWarningCount":0,"source":null},{"filePath":"214","messages":"215","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"216","messages":"217","errorCount":5,"warningCount":0,"fixableErrorCount":5,"fixableWarningCount":0,"source":null},{"filePath":"218","messages":"219","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"220","messages":"221","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"222","messages":"223","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"224","messages":"225","errorCount":22,"warningCount":0,"fixableErrorCount":22,"fixableWarningCount":0,"source":null},{"filePath":"226","messages":"227","errorCount":14,"warningCount":0,"fixableErrorCount":14,"fixableWarningCount":0,"source":null},{"filePath":"228","messages":"229","errorCount":28,"warningCount":0,"fixableErrorCount":28,"fixableWarningCount":0,"source":null},{"filePath":"230","messages":"231","errorCount":35,"warningCount":0,"fixableErrorCount":35,"fixableWarningCount":0,"source":null},{"filePath":"232","messages":"233","errorCount":19,"warningCount":0,"fixableErrorCount":19,"fixableWarningCount":0,"source":null},{"filePath":"234","messages":"235","errorCount":9,"warningCount":0,"fixableErrorCount":9,"fixableWarningCount":0,"source":null},{"filePath":"236","messages":"237","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"238","messages":"239","errorCount":10,"warningCount":0,"fixableErrorCount":10,"fixableWarningCount":0,"source":null},{"filePath":"240","messages":"241","errorCount":45,"warningCount":0,"fixableErrorCount":45,"fixableWarningCount":0,"source":null},{"filePath":"242","messages":"243","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"244","messages":"245","errorCount":41,"warningCount":0,"fixableErrorCount":41,"fixableWarningCount":0,"source":null},{"filePath":"246","messages":"247","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"248","messages":"249","errorCount":9,"warningCount":0,"fixableErrorCount":9,"fixableWarningCount":0,"source":null},{"filePath":"250","messages":"251","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"252","messages":"253","errorCount":13,"warningCount":0,"fixableErrorCount":13,"fixableWarningCount":0,"source":null},{"filePath":"254","messages":"255","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"256","messages":"257","errorCount":4,"warningCount":0,"fixableErrorCount":4,"fixableWarningCount":0,"source":null},{"filePath":"258","messages":"259","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"260","messages":"261","errorCount":18,"warningCount":0,"fixableErrorCount":18,"fixableWarningCount":0,"source":null},{"filePath":"262","messages":"263","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"264","messages":"265","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"266","messages":"267","errorCount":47,"warningCount":0,"fixableErrorCount":47,"fixableWarningCount":0,"source":null},{"filePath":"268","messages":"269","errorCount":67,"warningCount":0,"fixableErrorCount":67,"fixableWarningCount":0,"source":null},{"filePath":"270","messages":"271","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"272","messages":"273","errorCount":5,"warningCount":0,"fixableErrorCount":5,"fixableWarningCount":0,"source":null},{"filePath":"274","messages":"275","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"276","messages":"277","errorCount":82,"warningCount":0,"fixableErrorCount":82,"fixableWarningCount":0,"source":null},{"filePath":"278","messages":"279","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"280","messages":"281","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"282","messages":"283","errorCount":4,"warningCount":0,"fixableErrorCount":4,"fixableWarningCount":0,"source":null},{"filePath":"284","messages":"285","errorCount":9,"warningCount":0,"fixableErrorCount":9,"fixableWarningCount":0,"source":null},{"filePath":"286","messages":"287","errorCount":2,"warningCount":0,"fixableErrorCount":2,"fixableWarningCount":0,"source":null},{"filePath":"288","messages":"289","errorCount":55,"warningCount":0,"fixableErrorCount":55,"fixableWarningCount":0,"source":null},{"filePath":"290","messages":"291","errorCount":1,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":null},{"filePath":"292","messages":"293","errorCount":1,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":null},{"filePath":"294","messages":"295","errorCount":2,"warningCount":0,"fixableErrorCount":2,"fixableWarningCount":0,"source":null},{"filePath":"296","messages":"297","errorCount":1,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":null},{"filePath":"298","messages":"299","errorCount":2,"warningCount":0,"fixableErrorCount":2,"fixableWarningCount":0,"source":null},{"filePath":"300","messages":"301","errorCount":3,"warningCount":0,"fixableErrorCount":3,"fixableWarningCount":0,"source":null},{"filePath":"302","messages":"303","errorCount":2,"warningCount":0,"fixableErrorCount":2,"fixableWarningCount":0,"source":null},{"filePath":"304","messages":"305","errorCount":2,"warningCount":0,"fixableErrorCount":2,"fixableWarningCount":0,"source":null},{"filePath":"306","messages":"307","errorCount":3,"warningCount":0,"fixableErrorCount":3,"fixableWarningCount":0,"source":null},{"filePath":"308","messages":"309","errorCount":21,"warningCount":0,"fixableErrorCount":21,"fixableWarningCount":0,"source":null},{"filePath":"310","messages":"311","errorCount":58,"warningCount":0,"fixableErrorCount":58,"fixableWarningCount":0,"source":null},{"filePath":"312","messages":"313","errorCount":2,"warningCount":0,"fixableErrorCount":2,"fixableWarningCount":0,"source":null},{"filePath":"314","messages":"315","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"316","messages":"317","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"318","messages":"319","errorCount":11,"warningCount":0,"fixableErrorCount":11,"fixableWarningCount":0,"source":null},{"filePath":"320","messages":"321","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"322","messages":"323","errorCount":15,"warningCount":0,"fixableErrorCount":15,"fixableWarningCount":0,"source":null},{"filePath":"324","messages":"325","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"326","messages":"327","errorCount":18,"warningCount":0,"fixableErrorCount":18,"fixableWarningCount":0,"source":null},{"filePath":"328","messages":"329","errorCount":3,"warningCount":0,"fixableErrorCount":3,"fixableWarningCount":0,"source":null},{"filePath":"330","messages":"331","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"332","messages":"333","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"334","messages":"335","errorCount":6,"warningCount":0,"fixableErrorCount":6,"fixableWarningCount":0,"source":null},{"filePath":"336","messages":"337","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"338","messages":"339","errorCount":4,"warningCount":0,"fixableErrorCount":4,"fixableWarningCount":0,"source":null},{"filePath":"340","messages":"341","errorCount":4,"warningCount":0,"fixableErrorCount":4,"fixableWarningCount":0,"source":null},"/home/peroo/stash/ui/v2.5/src/App.tsx",["342","343","344","345","346"],"/home/peroo/stash/ui/v2.5/src/components/ErrorBoundary.tsx",["347"],"/home/peroo/stash/ui/v2.5/src/components/Galleries/Galleries.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/Galleries/Gallery.tsx",["348"],"/home/peroo/stash/ui/v2.5/src/components/Galleries/GalleryList.tsx",["349","350","351","352","353","354","355","356","357"],"/home/peroo/stash/ui/v2.5/src/components/Galleries/GalleryViewer.tsx",["358","359","360"],"/home/peroo/stash/ui/v2.5/src/components/MainNavbar.tsx",["361","362","363","364","365","366","367","368","369","370","371","372","373","374","375","376","377","378","379","380","381","382","383","384","385","386","387","388","389","390","391","392","393","394","395","396","397","398","399","400","401","402","403","404","405","406","407","408","409","410","411","412"],"/home/peroo/stash/ui/v2.5/src/components/PageNotFound.tsx",["413"],"/home/peroo/stash/ui/v2.5/src/components/Settings/Settings.tsx",["414"],"/home/peroo/stash/ui/v2.5/src/components/Settings/SettingsAboutPanel.tsx",["415","416","417","418","419","420","421","422","423","424","425","426","427","428","429","430","431","432"],"/home/peroo/stash/ui/v2.5/src/components/Settings/SettingsConfigurationPanel.tsx",["433"],"/home/peroo/stash/ui/v2.5/src/components/Settings/SettingsInterfacePanel.tsx",["434"],"/home/peroo/stash/ui/v2.5/src/components/Settings/SettingsLogsPanel.tsx",["435"],"/home/peroo/stash/ui/v2.5/src/components/Settings/SettingsTasksPanel/GenerateButton.tsx",["436","437","438","439","440","441","442","443","444"],"/home/peroo/stash/ui/v2.5/src/components/Settings/SettingsTasksPanel/SettingsTasksPanel.tsx",["445","446","447","448","449","450","451","452","453","454","455","456","457","458","459","460","461","462","463","464","465","466","467","468","469","470","471","472","473"],"/home/peroo/stash/ui/v2.5/src/components/Shared/DetailsEditNavbar.tsx",["474","475","476","477","478","479","480","481","482","483","484","485","486","487","488","489","490","491","492","493","494","495","496","497","498","499","500","501","502","503","504","505","506","507","508","509","510","511","512"],"/home/peroo/stash/ui/v2.5/src/components/Shared/DurationInput.tsx",["513","514","515","516","517","518","519","520","521","522","523","524","525","526","527","528","529","530","531","532"],"/home/peroo/stash/ui/v2.5/src/components/Shared/FolderSelect/FolderSelect.tsx",["533"],"/home/peroo/stash/ui/v2.5/src/components/Shared/TagLink.tsx",["534","535","536","537"],"/home/peroo/stash/ui/v2.5/src/components/Stats.tsx",["538","539","540","541","542","543"],"/home/peroo/stash/ui/v2.5/src/components/Studios/StudioCard.tsx",["544","545","546","547"],"/home/peroo/stash/ui/v2.5/src/components/Studios/StudioDetails/Studio.tsx",["548"],"/home/peroo/stash/ui/v2.5/src/components/Studios/StudioList.tsx",["549","550","551","552","553"],"/home/peroo/stash/ui/v2.5/src/components/Studios/Studios.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/Tags/TagList.tsx",["554"],"/home/peroo/stash/ui/v2.5/src/components/Tags/Tags.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/Wall/WallItem.tsx",["555","556","557","558","559","560","561","562","563","564","565","566","567","568","569","570","571","572","573","574","575","576"],"/home/peroo/stash/ui/v2.5/src/components/Wall/WallPanel.tsx",["577","578","579","580","581","582","583","584","585","586","587","588","589","590"],"/home/peroo/stash/ui/v2.5/src/components/list/AddFilter.tsx",["591","592","593","594","595","596","597","598","599","600","601","602","603","604","605","606","607","608","609","610","611","612","613","614","615","616","617","618"],"/home/peroo/stash/ui/v2.5/src/components/list/ListFilter.tsx",["619","620","621","622","623","624","625","626","627","628","629","630","631","632","633","634","635","636","637","638","639","640","641","642","643","644","645","646","647","648","649","650","651","652","653"],"/home/peroo/stash/ui/v2.5/src/components/list/Pagination.tsx",["654","655","656","657","658","659","660","661","662","663","664","665","666","667","668","669","670","671","672"],"/home/peroo/stash/ui/v2.5/src/components/performers/PerformerCard.tsx",["673","674","675","676","677","678","679","680","681"],"/home/peroo/stash/ui/v2.5/src/components/performers/PerformerDetails/Performer.tsx",["682"],"/home/peroo/stash/ui/v2.5/src/components/performers/PerformerList.tsx",["683","684","685","686","687","688","689","690","691","692"],"/home/peroo/stash/ui/v2.5/src/components/performers/PerformerListTable.tsx",["693","694","695","696","697","698","699","700","701","702","703","704","705","706","707","708","709","710","711","712","713","714","715","716","717","718","719","720","721","722","723","724","725","726","727","728","729","730","731","732","733","734","735","736","737"],"/home/peroo/stash/ui/v2.5/src/components/performers/performers.tsx",[],"/home/peroo/stash/ui/v2.5/src/components/scenes/SceneCard.tsx",["738","739","740","741","742","743","744","745","746","747","748","749","750","751","752","753","754","755","756","757","758","759","760","761","762","763","764","765","766","767","768","769","770","771","772","773","774","775","776","777","778"],"/home/peroo/stash/ui/v2.5/src/components/scenes/SceneDetails/Scene.tsx",["779"],"/home/peroo/stash/ui/v2.5/src/components/scenes/SceneDetails/SceneDetailPanel.tsx",["780","781","782","783","784","785","786","787","788"],"/home/peroo/stash/ui/v2.5/src/components/scenes/SceneDetails/SceneEditPanel.tsx",["789"],"/home/peroo/stash/ui/v2.5/src/components/scenes/SceneDetails/SceneFileInfoPanel.tsx",["790","791","792","793","794","795","796","797","798","799","800","801","802"],"/home/peroo/stash/ui/v2.5/src/components/scenes/SceneDetails/SceneMarkersPanel.tsx",["803"],"/home/peroo/stash/ui/v2.5/src/components/scenes/SceneDetails/ScenePerformerPanel.tsx",["804","805","806","807"],"/home/peroo/stash/ui/v2.5/src/components/scenes/SceneFilenameParser.tsx",["808"],"/home/peroo/stash/ui/v2.5/src/components/scenes/SceneList.tsx",["809","810","811","812","813","814","815","816","817","818","819","820","821","822","823","824","825","826"],"/home/peroo/stash/ui/v2.5/src/components/scenes/SceneListTable.tsx",["827"],"/home/peroo/stash/ui/v2.5/src/components/scenes/SceneMarkerList.tsx",["828"],"/home/peroo/stash/ui/v2.5/src/components/scenes/ScenePlayer/ScenePlayer.tsx",["829","830","831","832","833","834","835","836","837","838","839","840","841","842","843","844","845","846","847","848","849","850","851","852","853","854","855","856","857","858","859","860","861","862","863","864","865","866","867","868","869","870","871","872","873","874","875"],"/home/peroo/stash/ui/v2.5/src/components/scenes/ScenePlayer/ScenePlayerScrubber.tsx",["876","877","878","879","880","881","882","883","884","885","886","887","888","889","890","891","892","893","894","895","896","897","898","899","900","901","902","903","904","905","906","907","908","909","910","911","912","913","914","915","916","917","918","919","920","921","922","923","924","925","926","927","928","929","930","931","932","933","934","935","936","937","938","939","940","941","942"],"/home/peroo/stash/ui/v2.5/src/components/scenes/SceneSelectedOptions.tsx",["943"],"/home/peroo/stash/ui/v2.5/src/components/scenes/helpers.tsx",["944","945","946","947","948"],"/home/peroo/stash/ui/v2.5/src/components/scenes/scenes.tsx",[],"/home/peroo/stash/ui/v2.5/src/core/StashService.ts",["949","950","951","952","953","954","955","956","957","958","959","960","961","962","963","964","965","966","967","968","969","970","971","972","973","974","975","976","977","978","979","980","981","982","983","984","985","986","987","988","989","990","991","992","993","994","995","996","997","998","999","1000","1001","1002","1003","1004","1005","1006","1007","1008","1009","1010","1011","1012","1013","1014","1015","1016","1017","1018","1019","1020","1021","1022","1023","1024","1025","1026","1027","1028","1029","1030"],"/home/peroo/stash/ui/v2.5/src/core/generated-graphql.tsx",[],"/home/peroo/stash/ui/v2.5/src/hooks/ListHook.tsx",["1031"],"/home/peroo/stash/ui/v2.5/src/hooks/LocalForage.ts",["1032","1033","1034","1035"],"/home/peroo/stash/ui/v2.5/src/hooks/VideoHover.ts",["1036","1037","1038","1039","1040","1041","1042","1043","1044"],"/home/peroo/stash/ui/v2.5/src/index.tsx",["1045","1046"],"/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/criterion.ts",["1047","1048","1049","1050","1051","1052","1053","1054","1055","1056","1057","1058","1059","1060","1061","1062","1063","1064","1065","1066","1067","1068","1069","1070","1071","1072","1073","1074","1075","1076","1077","1078","1079","1080","1081","1082","1083","1084","1085","1086","1087","1088","1089","1090","1091","1092","1093","1094","1095","1096","1097","1098","1099","1100","1101"],"/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/favorite.ts",["1102"],"/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/has-markers.ts",["1103"],"/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/is-missing.ts",["1104","1105"],"/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/none.ts",["1106"],"/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/performers.ts",["1107","1108"],"/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/rating.ts",["1109","1110","1111"],"/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/resolution.ts",["1112","1113"],"/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/studios.ts",["1114","1115"],"/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/tags.ts",["1116","1117","1118"],"/home/peroo/stash/ui/v2.5/src/models/list-filter/criteria/utils.ts",["1119","1120","1121","1122","1123","1124","1125","1126","1127","1128","1129","1130","1131","1132","1133","1134","1135","1136","1137","1138","1139"],"/home/peroo/stash/ui/v2.5/src/models/list-filter/filter.ts",["1140","1141","1142","1143","1144","1145","1146","1147","1148","1149","1150","1151","1152","1153","1154","1155","1156","1157","1158","1159","1160","1161","1162","1163","1164","1165","1166","1167","1168","1169","1170","1171","1172","1173","1174","1175","1176","1177","1178","1179","1180","1181","1182","1183","1184","1185","1186","1187","1188","1189","1190","1191","1192","1193","1194","1195","1196","1197"],"/home/peroo/stash/ui/v2.5/src/models/list-filter/types.ts",["1198","1199"],"/home/peroo/stash/ui/v2.5/src/models/react-jw-player.d.ts",[],"/home/peroo/stash/ui/v2.5/src/react-app-env.d.ts",[],"/home/peroo/stash/ui/v2.5/src/serviceWorker.ts",["1200","1201","1202","1203","1204","1205","1206","1207","1208","1209","1210"],"/home/peroo/stash/ui/v2.5/src/utils/image.tsx",["1211"],"/home/peroo/stash/ui/v2.5/src/utils/navigation.ts",["1212","1213","1214","1215","1216","1217","1218","1219","1220","1221","1222","1223","1224","1225","1226"],"/home/peroo/stash/ui/v2.5/src/utils/table.tsx",["1227"],"/home/peroo/stash/ui/v2.5/src/utils/text.ts",["1228","1229","1230","1231","1232","1233","1234","1235","1236","1237","1238","1239","1240","1241","1242","1243","1244","1245"],"/home/peroo/stash/ui/v2.5/src/components/Shared/Icon.tsx",["1246","1247","1248"],"/home/peroo/stash/ui/v2.5/src/components/Shared/Modal.tsx",["1249"],"/home/peroo/stash/ui/v2.5/src/components/Shared/Select.tsx",["1250"],"/home/peroo/stash/ui/v2.5/src/components/Shared/index.ts",["1251","1252","1253","1254","1255","1256"],"/home/peroo/stash/ui/v2.5/src/hooks/Toast.tsx",["1257"],"/home/peroo/stash/ui/v2.5/src/hooks/index.ts",["1258","1259","1260","1261"],"/home/peroo/stash/ui/v2.5/src/utils/index.ts",["1262","1263","1264","1265"],{"ruleId":"1266","severity":2,"message":"1267","line":14,"column":31,"nodeType":null,"endLine":14,"endColumn":48,"fix":"1268"},{"ruleId":"1266","severity":2,"message":"1269","line":16,"column":25,"nodeType":null,"endLine":16,"endColumn":60,"fix":"1270"},{"ruleId":"1266","severity":2,"message":"1271","line":17,"column":21,"nodeType":null,"endLine":17,"endColumn":56,"fix":"1272"},{"ruleId":"1266","severity":2,"message":"1273","line":19,"column":8,"nodeType":null,"endLine":19,"endColumn":46,"fix":"1274"},{"ruleId":"1266","severity":2,"message":"1275","line":38,"column":19,"nodeType":null,"endLine":38,"endColumn":79,"fix":"1276"},{"ruleId":"1266","severity":2,"message":"1277","line":12,"column":16,"nodeType":null,"endLine":12,"endColumn":17,"fix":"1278"},{"ruleId":"1266","severity":2,"message":"1279","line":11,"column":25,"nodeType":null},{"ruleId":"1266","severity":2,"message":"1280","line":2,"column":23,"nodeType":null,"endLine":2,"endColumn":40,"fix":"1281"},{"ruleId":"1266","severity":2,"message":"1282","line":5,"column":9,"nodeType":null,"endLine":5,"endColumn":53,"fix":"1283"},{"ruleId":"1266","severity":2,"message":"1277","line":12,"column":18,"nodeType":null,"endLine":12,"endColumn":19,"fix":"1284"},{"ruleId":"1266","severity":2,"message":"1285","line":15,"column":26,"nodeType":null,"endLine":15,"endColumn":118,"fix":"1286"},{"ruleId":"1266","severity":2,"message":"1287","line":16,"column":54,"nodeType":null,"endLine":16,"endColumn":62,"fix":"1288"},{"ruleId":"1266","severity":2,"message":"1289","line":21,"column":24,"nodeType":null,"endLine":21,"endColumn":40,"fix":"1290"},{"ruleId":"1266","severity":2,"message":"1291","line":29,"column":54,"nodeType":null,"endLine":29,"endColumn":63,"fix":"1292"},{"ruleId":"1266","severity":2,"message":"1293","line":33,"column":49,"nodeType":null,"endLine":33,"endColumn":119,"fix":"1294"},{"ruleId":"1266","severity":2,"message":"1295","line":36,"column":21,"nodeType":null,"endLine":36,"endColumn":80,"fix":"1296"},{"ruleId":"1266","severity":2,"message":"1297","line":14,"column":25,"nodeType":null,"endLine":14,"endColumn":80,"fix":"1298"},{"ruleId":"1266","severity":2,"message":"1299","line":29,"column":36,"nodeType":null,"endLine":29,"endColumn":88,"fix":"1300"},{"ruleId":"1266","severity":2,"message":"1301","line":30,"column":36,"nodeType":null,"endLine":30,"endColumn":105,"fix":"1302"},{"ruleId":"1266","severity":2,"message":"1303","line":3,"column":26,"nodeType":null,"endLine":3,"endColumn":61,"fix":"1304"},{"ruleId":"1266","severity":2,"message":"1305","line":4,"column":31,"nodeType":null,"endLine":4,"endColumn":55,"fix":"1306"},{"ruleId":"1266","severity":2,"message":"1307","line":7,"column":22,"nodeType":null,"endLine":7,"endColumn":45,"fix":"1308"},{"ruleId":"1266","severity":2,"message":"1309","line":10,"column":3,"nodeType":null,"endLine":10,"endColumn":5,"fix":"1310"},{"ruleId":"1266","severity":2,"message":"1309","line":11,"column":1,"nodeType":null,"endLine":11,"endColumn":3,"fix":"1311"},{"ruleId":"1266","severity":2,"message":"1309","line":12,"column":3,"nodeType":null,"endLine":12,"endColumn":5,"fix":"1312"},{"ruleId":"1266","severity":2,"message":"1313","line":15,"column":17,"nodeType":null,"endLine":15,"endColumn":17,"fix":"1314"},{"ruleId":"1266","severity":2,"message":"1315","line":16,"column":1,"nodeType":null,"endLine":16,"endColumn":1,"fix":"1316"},{"ruleId":"1266","severity":2,"message":"1315","line":17,"column":3,"nodeType":null,"endLine":17,"endColumn":3,"fix":"1317"},{"ruleId":"1266","severity":2,"message":"1315","line":18,"column":3,"nodeType":null,"endLine":18,"endColumn":3,"fix":"1318"},{"ruleId":"1266","severity":2,"message":"1315","line":19,"column":1,"nodeType":null,"endLine":19,"endColumn":1,"fix":"1319"},{"ruleId":"1266","severity":2,"message":"1315","line":20,"column":1,"nodeType":null,"endLine":20,"endColumn":1,"fix":"1320"},{"ruleId":"1266","severity":2,"message":"1315","line":21,"column":1,"nodeType":null,"endLine":21,"endColumn":1,"fix":"1321"},{"ruleId":"1266","severity":2,"message":"1322","line":22,"column":1,"nodeType":null,"endLine":22,"endColumn":3,"fix":"1323"},{"ruleId":"1266","severity":2,"message":"1315","line":23,"column":1,"nodeType":null,"endLine":23,"endColumn":1,"fix":"1324"},{"ruleId":"1266","severity":2,"message":"1315","line":24,"column":1,"nodeType":null,"endLine":24,"endColumn":1,"fix":"1325"},{"ruleId":"1266","severity":2,"message":"1315","line":25,"column":1,"nodeType":null,"endLine":25,"endColumn":1,"fix":"1326"},{"ruleId":"1266","severity":2,"message":"1315","line":26,"column":1,"nodeType":null,"endLine":26,"endColumn":1,"fix":"1327"},{"ruleId":"1266","severity":2,"message":"1322","line":27,"column":1,"nodeType":null,"endLine":27,"endColumn":3,"fix":"1328"},{"ruleId":"1266","severity":2,"message":"1315","line":28,"column":1,"nodeType":null,"endLine":28,"endColumn":1,"fix":"1329"},{"ruleId":"1266","severity":2,"message":"1315","line":29,"column":3,"nodeType":null,"endLine":29,"endColumn":3,"fix":"1330"},{"ruleId":"1266","severity":2,"message":"1315","line":30,"column":1,"nodeType":null,"endLine":30,"endColumn":1,"fix":"1331"},{"ruleId":"1266","severity":2,"message":"1315","line":31,"column":1,"nodeType":null,"endLine":31,"endColumn":1,"fix":"1332"},{"ruleId":"1266","severity":2,"message":"1315","line":32,"column":1,"nodeType":null,"endLine":32,"endColumn":1,"fix":"1333"},{"ruleId":"1266","severity":2,"message":"1315","line":33,"column":3,"nodeType":null,"endLine":33,"endColumn":3,"fix":"1334"},{"ruleId":"1266","severity":2,"message":"1315","line":34,"column":1,"nodeType":null,"endLine":34,"endColumn":1,"fix":"1335"},{"ruleId":"1266","severity":2,"message":"1315","line":35,"column":1,"nodeType":null,"endLine":35,"endColumn":1,"fix":"1336"},{"ruleId":"1266","severity":2,"message":"1315","line":36,"column":1,"nodeType":null,"endLine":36,"endColumn":1,"fix":"1337"},{"ruleId":"1266","severity":2,"message":"1315","line":37,"column":1,"nodeType":null,"endLine":37,"endColumn":1,"fix":"1338"},{"ruleId":"1266","severity":2,"message":"1315","line":38,"column":3,"nodeType":null,"endLine":38,"endColumn":3,"fix":"1339"},{"ruleId":"1266","severity":2,"message":"1322","line":39,"column":1,"nodeType":null,"endLine":39,"endColumn":3,"fix":"1340"},{"ruleId":"1266","severity":2,"message":"1315","line":40,"column":1,"nodeType":null,"endLine":40,"endColumn":1,"fix":"1341"},{"ruleId":"1266","severity":2,"message":"1315","line":41,"column":1,"nodeType":null,"endLine":41,"endColumn":1,"fix":"1342"},{"ruleId":"1266","severity":2,"message":"1315","line":42,"column":1,"nodeType":null,"endLine":42,"endColumn":1,"fix":"1343"},{"ruleId":"1266","severity":2,"message":"1322","line":43,"column":1,"nodeType":null,"endLine":43,"endColumn":3,"fix":"1344"},{"ruleId":"1266","severity":2,"message":"1315","line":44,"column":1,"nodeType":null,"endLine":44,"endColumn":1,"fix":"1345"},{"ruleId":"1266","severity":2,"message":"1315","line":45,"column":1,"nodeType":null,"endLine":45,"endColumn":1,"fix":"1346"},{"ruleId":"1266","severity":2,"message":"1347","line":51,"column":15,"nodeType":null,"endLine":51,"endColumn":51,"fix":"1348"},{"ruleId":"1266","severity":2,"message":"1349","line":52,"column":5,"nodeType":null,"endLine":52,"endColumn":24,"fix":"1350"},{"ruleId":"1266","severity":2,"message":"1351","line":53,"column":1,"nodeType":null,"endLine":53,"endColumn":39,"fix":"1352"},{"ruleId":"1266","severity":2,"message":"1353","line":54,"column":9,"nodeType":null,"endLine":54,"endColumn":23,"fix":"1354"},{"ruleId":"1266","severity":2,"message":"1355","line":55,"column":20,"nodeType":null,"endLine":55,"endColumn":39,"fix":"1356"},{"ruleId":"1266","severity":2,"message":"1315","line":56,"column":1,"nodeType":null,"endLine":56,"endColumn":1,"fix":"1357"},{"ruleId":"1266","severity":2,"message":"1315","line":57,"column":1,"nodeType":null,"endLine":57,"endColumn":1,"fix":"1358"},{"ruleId":"1266","severity":2,"message":"1315","line":58,"column":5,"nodeType":null,"endLine":58,"endColumn":5,"fix":"1359"},{"ruleId":"1266","severity":2,"message":"1315","line":59,"column":1,"nodeType":null,"endLine":59,"endColumn":1,"fix":"1360"},{"ruleId":"1266","severity":2,"message":"1309","line":65,"column":1,"nodeType":null,"endLine":65,"endColumn":3,"fix":"1361"},{"ruleId":"1266","severity":2,"message":"1362","line":69,"column":24,"nodeType":null,"endLine":69,"endColumn":27,"fix":"1363"},{"ruleId":"1266","severity":2,"message":"1364","line":85,"column":23,"nodeType":null,"endLine":87,"endColumn":10,"fix":"1365"},{"ruleId":"1266","severity":2,"message":"1309","line":88,"column":1,"nodeType":null,"endLine":88,"endColumn":3,"fix":"1366"},{"ruleId":"1266","severity":2,"message":"1309","line":89,"column":13,"nodeType":null,"endLine":89,"endColumn":15,"fix":"1367"},{"ruleId":"1266","severity":2,"message":"1309","line":90,"column":1,"nodeType":null,"endLine":90,"endColumn":3,"fix":"1368"},{"ruleId":"1266","severity":2,"message":"1369","line":4,"column":10,"nodeType":null,"endLine":6,"endColumn":4,"fix":"1370"},{"ruleId":"1266","severity":2,"message":"1279","line":14,"column":63,"nodeType":null},{"ruleId":"1266","severity":2,"message":"1280","line":2,"column":32,"nodeType":null,"endLine":2,"endColumn":49,"fix":"1371"},{"ruleId":"1266","severity":2,"message":"1287","line":9,"column":59,"nodeType":null,"endLine":9,"endColumn":67,"fix":"1372"},{"ruleId":"1266","severity":2,"message":"1287","line":19,"column":34,"nodeType":null,"endLine":19,"endColumn":42,"fix":"1373"},{"ruleId":"1266","severity":2,"message":"1315","line":22,"column":1,"nodeType":null,"endLine":22,"endColumn":1,"fix":"1374"},{"ruleId":"1266","severity":2,"message":"1315","line":23,"column":9,"nodeType":null,"endLine":23,"endColumn":9,"fix":"1375"},{"ruleId":"1266","severity":2,"message":"1376","line":24,"column":1,"nodeType":null,"endLine":24,"endColumn":11,"fix":"1377"},{"ruleId":"1266","severity":2,"message":"1315","line":25,"column":11,"nodeType":null,"endLine":25,"endColumn":11,"fix":"1378"},{"ruleId":"1266","severity":2,"message":"1379","line":26,"column":1,"nodeType":null,"endLine":26,"endColumn":13,"fix":"1380"},{"ruleId":"1266","severity":2,"message":"1315","line":27,"column":1,"nodeType":null,"endLine":27,"endColumn":1,"fix":"1381"},{"ruleId":"1266","severity":2,"message":"1376","line":28,"column":1,"nodeType":null,"endLine":28,"endColumn":11,"fix":"1382"},{"ruleId":"1266","severity":2,"message":"1315","line":29,"column":11,"nodeType":null,"endLine":29,"endColumn":11,"fix":"1383"},{"ruleId":"1266","severity":2,"message":"1315","line":30,"column":1,"nodeType":null,"endLine":30,"endColumn":1,"fix":"1384"},{"ruleId":"1266","severity":2,"message":"1315","line":31,"column":1,"nodeType":null,"endLine":31,"endColumn":1,"fix":"1385"},{"ruleId":"1266","severity":2,"message":"1315","line":32,"column":11,"nodeType":null,"endLine":32,"endColumn":11,"fix":"1386"},{"ruleId":"1266","severity":2,"message":"1315","line":33,"column":1,"nodeType":null,"endLine":33,"endColumn":1,"fix":"1387"},{"ruleId":"1266","severity":2,"message":"1315","line":34,"column":1,"nodeType":null,"endLine":34,"endColumn":1,"fix":"1388"},{"ruleId":"1266","severity":2,"message":"1389","line":41,"column":76,"nodeType":null,"endLine":41,"endColumn":78,"fix":"1390"},{"ruleId":"1266","severity":2,"message":"1389","line":42,"column":45,"nodeType":null,"endLine":42,"endColumn":47,"fix":"1391"},{"ruleId":"1266","severity":2,"message":"1279","line":43,"column":16,"nodeType":null},{"ruleId":"1266","severity":2,"message":"1279","line":31,"column":26,"nodeType":null},{"ruleId":"1266","severity":2,"message":"1279","line":76,"column":34,"nodeType":null},{"ruleId":"1266","severity":2,"message":"1280","line":2,"column":30,"nodeType":null,"endLine":2,"endColumn":47,"fix":"1392"},{"ruleId":"1266","severity":2,"message":"1393","line":4,"column":26,"nodeType":null,"endLine":4,"endColumn":37,"fix":"1394"},{"ruleId":"1266","severity":2,"message":"1395","line":15,"column":49,"nodeType":null,"endLine":15,"endColumn":87,"fix":"1396"},{"ruleId":"1266","severity":2,"message":"1397","line":24,"column":18,"nodeType":null,"endLine":24,"endColumn":132,"fix":"1398"},{"ruleId":"1266","severity":2,"message":"1399","line":25,"column":18,"nodeType":null,"endLine":25,"endColumn":167,"fix":"1400"},{"ruleId":"1266","severity":2,"message":"1401","line":26,"column":18,"nodeType":null,"endLine":26,"endColumn":160,"fix":"1402"},{"ruleId":"1266","severity":2,"message":"1403","line":27,"column":18,"nodeType":null,"endLine":27,"endColumn":169,"fix":"1404"},{"ruleId":"1266","severity":2,"message":"1405","line":28,"column":72,"nodeType":null,"endLine":28,"endColumn":80,"fix":"1406"},{"ruleId":"1266","severity":2,"message":"1407","line":29,"column":41,"nodeType":null,"endLine":29,"endColumn":103,"fix":"1408"},{"ruleId":"1266","severity":2,"message":"1280","line":2,"column":43,"nodeType":null,"endLine":2,"endColumn":60,"fix":"1409"},{"ruleId":"1266","severity":2,"message":"1393","line":5,"column":26,"nodeType":null,"endLine":5,"endColumn":37,"fix":"1410"},{"ruleId":"1266","severity":2,"message":"1411","line":6,"column":23,"nodeType":null,"endLine":6,"endColumn":46,"fix":"1412"},{"ruleId":"1266","severity":2,"message":"1413","line":24,"column":31,"nodeType":null,"endLine":24,"endColumn":32,"fix":"1414"},{"ruleId":"1266","severity":2,"message":"1313","line":25,"column":11,"nodeType":null,"endLine":25,"endColumn":11,"fix":"1415"},{"ruleId":"1266","severity":2,"message":"1416","line":71,"column":52,"nodeType":null,"endLine":71,"endColumn":72,"fix":"1417"},{"ruleId":"1266","severity":2,"message":"1418","line":79,"column":25,"nodeType":null,"endLine":79,"endColumn":52,"fix":"1419"},{"ruleId":"1266","severity":2,"message":"1420","line":83,"column":44,"nodeType":null,"endLine":84,"endColumn":10,"fix":"1421"},{"ruleId":"1266","severity":2,"message":"1416","line":92,"column":51,"nodeType":null,"endLine":92,"endColumn":71,"fix":"1422"},{"ruleId":"1266","severity":2,"message":"1423","line":100,"column":25,"nodeType":null,"endLine":100,"endColumn":51,"fix":"1424"},{"ruleId":"1266","severity":2,"message":"1425","line":104,"column":42,"nodeType":null,"endLine":106,"endColumn":57,"fix":"1426"},{"ruleId":"1266","severity":2,"message":"1427","line":114,"column":45,"nodeType":null,"endLine":114,"endColumn":77,"fix":"1428"},{"ruleId":"1266","severity":2,"message":"1429","line":128,"column":6,"nodeType":null,"endLine":128,"endColumn":6,"fix":"1430"},{"ruleId":"1266","severity":2,"message":"1431","line":148,"column":16,"nodeType":null,"endLine":148,"endColumn":124,"fix":"1432"},{"ruleId":"1266","severity":2,"message":"1315","line":156,"column":7,"nodeType":null,"endLine":156,"endColumn":7,"fix":"1433"},{"ruleId":"1266","severity":2,"message":"1315","line":157,"column":1,"nodeType":null,"endLine":157,"endColumn":1,"fix":"1434"},{"ruleId":"1266","severity":2,"message":"1435","line":158,"column":12,"nodeType":null,"endLine":158,"endColumn":92,"fix":"1436"},{"ruleId":"1266","severity":2,"message":"1315","line":159,"column":1,"nodeType":null,"endLine":159,"endColumn":1,"fix":"1437"},{"ruleId":"1266","severity":2,"message":"1315","line":160,"column":1,"nodeType":null,"endLine":160,"endColumn":1,"fix":"1438"},{"ruleId":"1266","severity":2,"message":"1439","line":183,"column":66,"nodeType":null,"endLine":183,"endColumn":70,"fix":"1440"},{"ruleId":"1266","severity":2,"message":"1441","line":184,"column":43,"nodeType":null,"endLine":184,"endColumn":91,"fix":"1442"},{"ruleId":"1266","severity":2,"message":"1443","line":207,"column":72,"nodeType":null,"endLine":207,"endColumn":80,"fix":"1444"},{"ruleId":"1266","severity":2,"message":"1445","line":208,"column":43,"nodeType":null,"endLine":208,"endColumn":79,"fix":"1446"},{"ruleId":"1266","severity":2,"message":"1447","line":222,"column":16,"nodeType":null,"endLine":222,"endColumn":92,"fix":"1448"},{"ruleId":"1266","severity":2,"message":"1449","line":223,"column":43,"nodeType":null,"endLine":223,"endColumn":131,"fix":"1450"},{"ruleId":"1266","severity":2,"message":"1451","line":230,"column":16,"nodeType":null,"endLine":230,"endColumn":134,"fix":"1452"},{"ruleId":"1266","severity":2,"message":"1453","line":231,"column":43,"nodeType":null,"endLine":231,"endColumn":88,"fix":"1454"},{"ruleId":"1266","severity":2,"message":"1455","line":235,"column":16,"nodeType":null,"endLine":235,"endColumn":95,"fix":"1456"},{"ruleId":"1266","severity":2,"message":"1457","line":236,"column":43,"nodeType":null,"endLine":236,"endColumn":100,"fix":"1458"},{"ruleId":"1266","severity":2,"message":"1459","line":1,"column":9,"nodeType":null,"endLine":1,"endColumn":92,"fix":"1460"},{"ruleId":"1266","severity":2,"message":"1461","line":20,"column":29,"nodeType":null,"endLine":20,"endColumn":84,"fix":"1462"},{"ruleId":"1266","severity":2,"message":"1287","line":27,"column":23,"nodeType":null,"endLine":27,"endColumn":31,"fix":"1463"},{"ruleId":"1266","severity":2,"message":"1464","line":29,"column":14,"nodeType":null,"endLine":32,"endColumn":7,"fix":"1465"},{"ruleId":"1266","severity":2,"message":"1413","line":33,"column":10,"nodeType":null,"endLine":33,"endColumn":11,"fix":"1466"},{"ruleId":"1266","severity":2,"message":"1287","line":39,"column":28,"nodeType":null,"endLine":39,"endColumn":36,"fix":"1467"},{"ruleId":"1266","severity":2,"message":"1468","line":40,"column":11,"nodeType":null,"endLine":40,"endColumn":82,"fix":"1469"},{"ruleId":"1266","severity":2,"message":"1287","line":44,"column":42,"nodeType":null,"endLine":44,"endColumn":50,"fix":"1470"},{"ruleId":"1266","severity":2,"message":"1471","line":45,"column":11,"nodeType":null,"endLine":45,"endColumn":95,"fix":"1472"},{"ruleId":"1266","severity":2,"message":"1473","line":49,"column":28,"nodeType":null,"endLine":49,"endColumn":38,"fix":"1474"},{"ruleId":"1266","severity":2,"message":"1475","line":50,"column":5,"nodeType":null,"endLine":50,"endColumn":5,"fix":"1476"},{"ruleId":"1266","severity":2,"message":"1309","line":51,"column":1,"nodeType":null,"endLine":51,"endColumn":3,"fix":"1477"},{"ruleId":"1266","severity":2,"message":"1478","line":52,"column":1,"nodeType":null,"endLine":52,"endColumn":11,"fix":"1479"},{"ruleId":"1266","severity":2,"message":"1480","line":53,"column":9,"nodeType":null,"endLine":53,"endColumn":92,"fix":"1481"},{"ruleId":"1266","severity":2,"message":"1309","line":54,"column":1,"nodeType":null,"endLine":54,"endColumn":3,"fix":"1482"},{"ruleId":"1266","severity":2,"message":"1483","line":55,"column":5,"nodeType":null,"endLine":55,"endColumn":8,"fix":"1484"},{"ruleId":"1266","severity":2,"message":"1287","line":59,"column":28,"nodeType":null,"endLine":59,"endColumn":36,"fix":"1485"},{"ruleId":"1266","severity":2,"message":"1287","line":60,"column":28,"nodeType":null,"endLine":60,"endColumn":36,"fix":"1486"},{"ruleId":"1266","severity":2,"message":"1487","line":66,"column":14,"nodeType":null,"endLine":66,"endColumn":54,"fix":"1488"},{"ruleId":"1266","severity":2,"message":"1489","line":67,"column":1,"nodeType":null,"endLine":67,"endColumn":101,"fix":"1490"},{"ruleId":"1266","severity":2,"message":"1491","line":68,"column":1,"nodeType":null,"endLine":68,"endColumn":1,"fix":"1492"},{"ruleId":"1266","severity":2,"message":"1491","line":69,"column":15,"nodeType":null,"endLine":69,"endColumn":15,"fix":"1493"},{"ruleId":"1266","severity":2,"message":"1494","line":70,"column":13,"nodeType":null,"endLine":70,"endColumn":20,"fix":"1495"},{"ruleId":"1266","severity":2,"message":"1287","line":84,"column":42,"nodeType":null,"endLine":84,"endColumn":50,"fix":"1496"},{"ruleId":"1266","severity":2,"message":"1497","line":86,"column":15,"nodeType":null,"endLine":86,"endColumn":22,"fix":"1498"},{"ruleId":"1266","severity":2,"message":"1499","line":87,"column":1,"nodeType":null,"endLine":87,"endColumn":49,"fix":"1500"},{"ruleId":"1266","severity":2,"message":"1501","line":88,"column":1,"nodeType":null,"endLine":88,"endColumn":28,"fix":"1502"},{"ruleId":"1266","severity":2,"message":"1287","line":93,"column":27,"nodeType":null,"endLine":93,"endColumn":35,"fix":"1503"},{"ruleId":"1266","severity":2,"message":"1504","line":100,"column":12,"nodeType":null,"endLine":104,"endColumn":6,"fix":"1505"},{"ruleId":"1266","severity":2,"message":"1506","line":118,"column":13,"nodeType":null,"endLine":120,"endColumn":7,"fix":"1507"},{"ruleId":"1266","severity":2,"message":"1508","line":121,"column":21,"nodeType":null,"endLine":123,"endColumn":9,"fix":"1509"},{"ruleId":"1266","severity":2,"message":"1510","line":125,"column":61,"nodeType":null,"endLine":125,"endColumn":67,"fix":"1511"},{"ruleId":"1266","severity":2,"message":"1512","line":126,"column":18,"nodeType":null,"endLine":126,"endColumn":89,"fix":"1513"},{"ruleId":"1266","severity":2,"message":"1514","line":132,"column":1,"nodeType":null,"endLine":133,"endColumn":1,"fix":"1515"},{"ruleId":"1266","severity":2,"message":"1315","line":135,"column":1,"nodeType":null,"endLine":135,"endColumn":1,"fix":"1516"},{"ruleId":"1266","severity":2,"message":"1315","line":136,"column":5,"nodeType":null,"endLine":136,"endColumn":5,"fix":"1517"},{"ruleId":"1266","severity":2,"message":"1315","line":137,"column":1,"nodeType":null,"endLine":137,"endColumn":1,"fix":"1518"},{"ruleId":"1266","severity":2,"message":"1315","line":146,"column":7,"nodeType":null,"endLine":146,"endColumn":7,"fix":"1519"},{"ruleId":"1266","severity":2,"message":"1315","line":147,"column":1,"nodeType":null,"endLine":147,"endColumn":1,"fix":"1520"},{"ruleId":"1266","severity":2,"message":"1280","line":2,"column":55,"nodeType":null,"endLine":2,"endColumn":72,"fix":"1521"},{"ruleId":"1266","severity":2,"message":"1307","line":3,"column":22,"nodeType":null,"endLine":3,"endColumn":45,"fix":"1522"},{"ruleId":"1266","severity":2,"message":"1429","line":7,"column":21,"nodeType":null,"endLine":7,"endColumn":21,"fix":"1523"},{"ruleId":"1266","severity":2,"message":"1429","line":8,"column":23,"nodeType":null,"endLine":8,"endColumn":23,"fix":"1524"},{"ruleId":"1266","severity":2,"message":"1429","line":9,"column":45,"nodeType":null,"endLine":9,"endColumn":45,"fix":"1525"},{"ruleId":"1266","severity":2,"message":"1429","line":10,"column":19,"nodeType":null,"endLine":10,"endColumn":19,"fix":"1526"},{"ruleId":"1266","severity":2,"message":"1527","line":14,"column":46,"nodeType":null,"endLine":14,"endColumn":81,"fix":"1528"},{"ruleId":"1266","severity":2,"message":"1413","line":20,"column":35,"nodeType":null,"endLine":20,"endColumn":36,"fix":"1529"},{"ruleId":"1266","severity":2,"message":"1413","line":34,"column":29,"nodeType":null,"endLine":34,"endColumn":30,"fix":"1530"},{"ruleId":"1266","severity":2,"message":"1313","line":47,"column":10,"nodeType":null,"endLine":47,"endColumn":10,"fix":"1531"},{"ruleId":"1266","severity":2,"message":"1532","line":79,"column":19,"nodeType":null,"endLine":81,"endColumn":7,"fix":"1533"},{"ruleId":"1266","severity":2,"message":"1534","line":82,"column":16,"nodeType":null,"endLine":85,"endColumn":9,"fix":"1535"},{"ruleId":"1266","severity":2,"message":"1536","line":88,"column":16,"nodeType":null,"endLine":91,"endColumn":9,"fix":"1537"},{"ruleId":"1266","severity":2,"message":"1429","line":95,"column":6,"nodeType":null,"endLine":95,"endColumn":6,"fix":"1538"},{"ruleId":"1266","severity":2,"message":"1539","line":107,"column":16,"nodeType":null,"endLine":109,"endColumn":9,"fix":"1540"},{"ruleId":"1266","severity":2,"message":"1429","line":112,"column":8,"nodeType":null,"endLine":112,"endColumn":8,"fix":"1541"},{"ruleId":"1266","severity":2,"message":"1413","line":122,"column":23,"nodeType":null,"endLine":122,"endColumn":24,"fix":"1542"},{"ruleId":"1266","severity":2,"message":"1543","line":127,"column":12,"nodeType":null,"endLine":127,"endColumn":32,"fix":"1544"},{"ruleId":"1266","severity":2,"message":"1545","line":128,"column":12,"nodeType":null,"endLine":128,"endColumn":29,"fix":"1546"},{"ruleId":"1266","severity":2,"message":"1429","line":132,"column":4,"nodeType":null,"endLine":132,"endColumn":4,"fix":"1547"},{"ruleId":"1266","severity":2,"message":"1279","line":20,"column":48,"nodeType":null},{"ruleId":"1266","severity":2,"message":"1280","line":1,"column":23,"nodeType":null,"endLine":1,"endColumn":40,"fix":"1548"},{"ruleId":"1266","severity":2,"message":"1549","line":4,"column":9,"nodeType":null,"endLine":4,"endColumn":74,"fix":"1550"},{"ruleId":"1266","severity":2,"message":"1551","line":24,"column":69,"nodeType":null,"endLine":24,"endColumn":94,"fix":"1552"},{"ruleId":"1266","severity":2,"message":"1553","line":27,"column":11,"nodeType":null,"endLine":30,"endColumn":5,"fix":"1554"},{"ruleId":"1266","severity":2,"message":"1280","line":1,"column":25,"nodeType":null,"endLine":1,"endColumn":42,"fix":"1555"},{"ruleId":"1266","severity":2,"message":"1287","line":9,"column":32,"nodeType":null,"endLine":9,"endColumn":40,"fix":"1556"},{"ruleId":"1266","severity":2,"message":"1557","line":48,"column":7,"nodeType":null,"endLine":48,"endColumn":29,"fix":"1558"},{"ruleId":"1266","severity":2,"message":"1309","line":49,"column":1,"nodeType":null,"endLine":49,"endColumn":3,"fix":"1559"},{"ruleId":"1266","severity":2,"message":"1309","line":50,"column":11,"nodeType":null,"endLine":50,"endColumn":13,"fix":"1560"},{"ruleId":"1266","severity":2,"message":"1561","line":51,"column":1,"nodeType":null,"endLine":51,"endColumn":33,"fix":"1562"},{"ruleId":"1266","severity":2,"message":"1280","line":1,"column":22,"nodeType":null,"endLine":1,"endColumn":39,"fix":"1563"},{"ruleId":"1266","severity":2,"message":"1564","line":12,"column":10,"nodeType":null,"endLine":14,"endColumn":5,"fix":"1565"},{"ruleId":"1266","severity":2,"message":"1566","line":18,"column":17,"nodeType":null,"endLine":18,"endColumn":61,"fix":"1567"},{"ruleId":"1266","severity":2,"message":"1568","line":21,"column":39,"nodeType":null,"endLine":23,"endColumn":9,"fix":"1569"},{"ruleId":"1266","severity":2,"message":"1279","line":63,"column":16,"nodeType":null},{"ruleId":"1266","severity":2,"message":"1570","line":3,"column":9,"nodeType":null,"endLine":3,"endColumn":49,"fix":"1571"},{"ruleId":"1266","severity":2,"message":"1277","line":11,"column":18,"nodeType":null,"endLine":11,"endColumn":19,"fix":"1572"},{"ruleId":"1266","severity":2,"message":"1573","line":14,"column":26,"nodeType":null,"endLine":14,"endColumn":114,"fix":"1574"},{"ruleId":"1266","severity":2,"message":"1287","line":15,"column":52,"nodeType":null,"endLine":15,"endColumn":60,"fix":"1575"},{"ruleId":"1266","severity":2,"message":"1576","line":19,"column":48,"nodeType":null,"endLine":19,"endColumn":107,"fix":"1577"},{"ruleId":"1266","severity":2,"message":"1279","line":85,"column":14,"nodeType":null},{"ruleId":"1266","severity":2,"message":"1578","line":14,"column":19,"nodeType":null,"endLine":14,"endColumn":80,"fix":"1579"},{"ruleId":"1266","severity":2,"message":"1580","line":17,"column":61,"nodeType":null,"endLine":17,"endColumn":82,"fix":"1581"},{"ruleId":"1266","severity":2,"message":"1582","line":24,"column":56,"nodeType":null,"endLine":24,"endColumn":79,"fix":"1583"},{"ruleId":"1266","severity":2,"message":"1584","line":25,"column":28,"nodeType":null,"endLine":25,"endColumn":125,"fix":"1585"},{"ruleId":"1266","severity":2,"message":"1287","line":48,"column":44,"nodeType":null,"endLine":48,"endColumn":52,"fix":"1586"},{"ruleId":"1266","severity":2,"message":"1587","line":68,"column":43,"nodeType":null,"endLine":68,"endColumn":47,"fix":"1588"},{"ruleId":"1266","severity":2,"message":"1313","line":69,"column":14,"nodeType":null,"endLine":69,"endColumn":14,"fix":"1589"},{"ruleId":"1266","severity":2,"message":"1389","line":70,"column":43,"nodeType":null,"endLine":70,"endColumn":45,"fix":"1590"},{"ruleId":"1266","severity":2,"message":"1591","line":77,"column":16,"nodeType":null,"endLine":77,"endColumn":106,"fix":"1592"},{"ruleId":"1266","severity":2,"message":"1593","line":78,"column":51,"nodeType":null,"endLine":78,"endColumn":97,"fix":"1594"},{"ruleId":"1266","severity":2,"message":"1595","line":79,"column":24,"nodeType":null,"endLine":79,"endColumn":112,"fix":"1596"},{"ruleId":"1266","severity":2,"message":"1597","line":96,"column":43,"nodeType":null,"endLine":96,"endColumn":75,"fix":"1598"},{"ruleId":"1266","severity":2,"message":"1599","line":98,"column":24,"nodeType":null,"endLine":98,"endColumn":62,"fix":"1600"},{"ruleId":"1266","severity":2,"message":"1601","line":113,"column":62,"nodeType":null,"endLine":113,"endColumn":77,"fix":"1602"},{"ruleId":"1266","severity":2,"message":"1603","line":118,"column":15,"nodeType":null,"endLine":118,"endColumn":99,"fix":"1604"},{"ruleId":"1266","severity":2,"message":"1605","line":119,"column":31,"nodeType":null,"endLine":119,"endColumn":31,"fix":"1606"},{"ruleId":"1266","severity":2,"message":"1607","line":121,"column":28,"nodeType":null,"endLine":121,"endColumn":44,"fix":"1608"},{"ruleId":"1266","severity":2,"message":"1609","line":122,"column":15,"nodeType":null,"endLine":122,"endColumn":23,"fix":"1610"},{"ruleId":"1266","severity":2,"message":"1309","line":123,"column":1,"nodeType":null,"endLine":123,"endColumn":3,"fix":"1611"},{"ruleId":"1266","severity":2,"message":"1612","line":124,"column":11,"nodeType":null,"endLine":124,"endColumn":21,"fix":"1613"},{"ruleId":"1266","severity":2,"message":"1614","line":125,"column":13,"nodeType":null,"endLine":125,"endColumn":24,"fix":"1615"},{"ruleId":"1266","severity":2,"message":"1616","line":126,"column":11,"nodeType":null,"endLine":126,"endColumn":11,"fix":"1617"},{"ruleId":"1266","severity":2,"message":"1578","line":9,"column":19,"nodeType":null,"endLine":9,"endColumn":80,"fix":"1618"},{"ruleId":"1266","severity":2,"message":"1619","line":12,"column":63,"nodeType":null,"endLine":12,"endColumn":85,"fix":"1620"},{"ruleId":"1266","severity":2,"message":"1621","line":25,"column":23,"nodeType":null,"endLine":25,"endColumn":37,"fix":"1622"},{"ruleId":"1266","severity":2,"message":"1623","line":26,"column":23,"nodeType":null,"endLine":26,"endColumn":42,"fix":"1624"},{"ruleId":"1266","severity":2,"message":"1625","line":27,"column":77,"nodeType":null,"endLine":27,"endColumn":97,"fix":"1626"},{"ruleId":"1266","severity":2,"message":"1621","line":28,"column":27,"nodeType":null,"endLine":28,"endColumn":41,"fix":"1627"},{"ruleId":"1266","severity":2,"message":"1628","line":31,"column":42,"nodeType":null,"endLine":31,"endColumn":65,"fix":"1629"},{"ruleId":"1266","severity":2,"message":"1630","line":32,"column":50,"nodeType":null,"endLine":32,"endColumn":72,"fix":"1631"},{"ruleId":"1266","severity":2,"message":"1632","line":33,"column":63,"nodeType":null,"endLine":33,"endColumn":80,"fix":"1633"},{"ruleId":"1266","severity":2,"message":"1632","line":34,"column":58,"nodeType":null,"endLine":34,"endColumn":75,"fix":"1634"},{"ruleId":"1266","severity":2,"message":"1635","line":37,"column":21,"nodeType":null,"endLine":37,"endColumn":43,"fix":"1636"},{"ruleId":"1266","severity":2,"message":"1637","line":38,"column":19,"nodeType":null,"endLine":38,"endColumn":42,"fix":"1638"},{"ruleId":"1266","severity":2,"message":"1287","line":43,"column":38,"nodeType":null,"endLine":43,"endColumn":46,"fix":"1639"},{"ruleId":"1266","severity":2,"message":"1287","line":59,"column":44,"nodeType":null,"endLine":59,"endColumn":52,"fix":"1640"},{"ruleId":"1266","severity":2,"message":"1641","line":3,"column":62,"nodeType":null,"endLine":3,"endColumn":79,"fix":"1642"},{"ruleId":"1266","severity":2,"message":"1411","line":4,"column":22,"nodeType":null,"endLine":4,"endColumn":45,"fix":"1643"},{"ruleId":"1266","severity":2,"message":"1644","line":6,"column":9,"nodeType":null,"endLine":6,"endColumn":35,"fix":"1645"},{"ruleId":"1266","severity":2,"message":"1646","line":22,"column":54,"nodeType":null,"endLine":22,"endColumn":76,"fix":"1647"},{"ruleId":"1266","severity":2,"message":"1648","line":23,"column":21,"nodeType":null,"endLine":23,"endColumn":44,"fix":"1649"},{"ruleId":"1266","severity":2,"message":"1650","line":26,"column":67,"nodeType":null,"endLine":26,"endColumn":86,"fix":"1651"},{"ruleId":"1266","severity":2,"message":"1287","line":32,"column":35,"nodeType":null,"endLine":32,"endColumn":43,"fix":"1652"},{"ruleId":"1266","severity":2,"message":"1653","line":43,"column":36,"nodeType":null,"endLine":43,"endColumn":79,"fix":"1654"},{"ruleId":"1266","severity":2,"message":"1655","line":68,"column":11,"nodeType":null,"endLine":68,"endColumn":98,"fix":"1656"},{"ruleId":"1266","severity":2,"message":"1657","line":76,"column":43,"nodeType":null,"endLine":76,"endColumn":76,"fix":"1658"},{"ruleId":"1266","severity":2,"message":"1287","line":90,"column":37,"nodeType":null,"endLine":90,"endColumn":45,"fix":"1659"},{"ruleId":"1266","severity":2,"message":"1660","line":93,"column":52,"nodeType":null,"endLine":93,"endColumn":60,"fix":"1661"},{"ruleId":"1266","severity":2,"message":"1413","line":101,"column":14,"nodeType":null,"endLine":101,"endColumn":15,"fix":"1662"},{"ruleId":"1266","severity":2,"message":"1309","line":102,"column":1,"nodeType":null,"endLine":102,"endColumn":3,"fix":"1663"},{"ruleId":"1266","severity":2,"message":"1664","line":111,"column":11,"nodeType":null,"endLine":111,"endColumn":110,"fix":"1665"},{"ruleId":"1266","severity":2,"message":"1666","line":130,"column":23,"nodeType":null,"endLine":130,"endColumn":98,"fix":"1667"},{"ruleId":"1266","severity":2,"message":"1413","line":143,"column":16,"nodeType":null,"endLine":143,"endColumn":17,"fix":"1668"},{"ruleId":"1266","severity":2,"message":"1669","line":144,"column":1,"nodeType":null,"endLine":144,"endColumn":19,"fix":"1670"},{"ruleId":"1266","severity":2,"message":"1429","line":156,"column":12,"nodeType":null,"endLine":156,"endColumn":12,"fix":"1671"},{"ruleId":"1266","severity":2,"message":"1672","line":162,"column":21,"nodeType":null,"endLine":164,"endColumn":9,"fix":"1673"},{"ruleId":"1266","severity":2,"message":"1674","line":165,"column":21,"nodeType":null,"endLine":167,"endColumn":9,"fix":"1675"},{"ruleId":"1266","severity":2,"message":"1287","line":173,"column":34,"nodeType":null,"endLine":173,"endColumn":42,"fix":"1676"},{"ruleId":"1266","severity":2,"message":"1677","line":180,"column":33,"nodeType":null,"endLine":180,"endColumn":33,"fix":"1678"},{"ruleId":"1266","severity":2,"message":"1413","line":181,"column":12,"nodeType":null,"endLine":181,"endColumn":13,"fix":"1679"},{"ruleId":"1266","severity":2,"message":"1309","line":182,"column":1,"nodeType":null,"endLine":182,"endColumn":3,"fix":"1680"},{"ruleId":"1266","severity":2,"message":"1681","line":196,"column":16,"nodeType":null,"endLine":199,"endColumn":9,"fix":"1682"},{"ruleId":"1266","severity":2,"message":"1683","line":204,"column":13,"nodeType":null,"endLine":206,"endColumn":8,"fix":"1684"},{"ruleId":"1266","severity":2,"message":"1685","line":215,"column":78,"nodeType":null,"endLine":215,"endColumn":85,"fix":"1686"},{"ruleId":"1266","severity":2,"message":"1687","line":3,"column":9,"nodeType":null,"endLine":3,"endColumn":102,"fix":"1688"},{"ruleId":"1266","severity":2,"message":"1411","line":5,"column":22,"nodeType":null,"endLine":5,"endColumn":45,"fix":"1689"},{"ruleId":"1266","severity":2,"message":"1690","line":34,"column":56,"nodeType":null,"endLine":34,"endColumn":79,"fix":"1691"},{"ruleId":"1266","severity":2,"message":"1692","line":38,"column":13,"nodeType":null,"endLine":38,"endColumn":13,"fix":"1693"},{"ruleId":"1266","severity":2,"message":"1694","line":41,"column":60,"nodeType":null,"endLine":41,"endColumn":81,"fix":"1695"},{"ruleId":"1266","severity":2,"message":"1287","line":79,"column":22,"nodeType":null,"endLine":79,"endColumn":30,"fix":"1696"},{"ruleId":"1266","severity":2,"message":"1287","line":85,"column":51,"nodeType":null,"endLine":85,"endColumn":59,"fix":"1697"},{"ruleId":"1266","severity":2,"message":"1698","line":90,"column":43,"nodeType":null,"endLine":90,"endColumn":51,"fix":"1699"},{"ruleId":"1266","severity":2,"message":"1700","line":91,"column":60,"nodeType":null,"endLine":91,"endColumn":68,"fix":"1701"},{"ruleId":"1266","severity":2,"message":"1702","line":98,"column":31,"nodeType":null,"endLine":98,"endColumn":31,"fix":"1703"},{"ruleId":"1266","severity":2,"message":"1702","line":99,"column":31,"nodeType":null,"endLine":99,"endColumn":31,"fix":"1704"},{"ruleId":"1266","severity":2,"message":"1702","line":100,"column":31,"nodeType":null,"endLine":100,"endColumn":31,"fix":"1705"},{"ruleId":"1266","severity":2,"message":"1702","line":105,"column":31,"nodeType":null,"endLine":105,"endColumn":31,"fix":"1706"},{"ruleId":"1266","severity":2,"message":"1702","line":106,"column":31,"nodeType":null,"endLine":106,"endColumn":31,"fix":"1707"},{"ruleId":"1266","severity":2,"message":"1702","line":107,"column":31,"nodeType":null,"endLine":107,"endColumn":31,"fix":"1708"},{"ruleId":"1266","severity":2,"message":"1698","line":110,"column":48,"nodeType":null,"endLine":110,"endColumn":56,"fix":"1709"},{"ruleId":"1266","severity":2,"message":"1710","line":111,"column":22,"nodeType":null,"endLine":111,"endColumn":96,"fix":"1711"},{"ruleId":"1266","severity":2,"message":"1712","line":124,"column":38,"nodeType":null,"endLine":124,"endColumn":49,"fix":"1713"},{"ruleId":"1266","severity":2,"message":"1714","line":152,"column":14,"nodeType":null,"endLine":152,"endColumn":85,"fix":"1715"},{"ruleId":"1266","severity":2,"message":"1716","line":158,"column":14,"nodeType":null,"endLine":158,"endColumn":87,"fix":"1717"},{"ruleId":"1266","severity":2,"message":"1718","line":163,"column":20,"nodeType":null,"endLine":166,"endColumn":5,"fix":"1719"},{"ruleId":"1266","severity":2,"message":"1720","line":169,"column":37,"nodeType":null,"endLine":169,"endColumn":40,"fix":"1721"},{"ruleId":"1266","severity":2,"message":"1722","line":170,"column":22,"nodeType":null,"endLine":170,"endColumn":81,"fix":"1723"},{"ruleId":"1266","severity":2,"message":"1724","line":182,"column":26,"nodeType":null,"endLine":184,"endColumn":11,"fix":"1725"},{"ruleId":"1266","severity":2,"message":"1413","line":190,"column":26,"nodeType":null,"endLine":190,"endColumn":27,"fix":"1726"},{"ruleId":"1266","severity":2,"message":"1727","line":204,"column":38,"nodeType":null,"endLine":204,"endColumn":88,"fix":"1728"},{"ruleId":"1266","severity":2,"message":"1315","line":206,"column":1,"nodeType":null,"endLine":206,"endColumn":1,"fix":"1729"},{"ruleId":"1266","severity":2,"message":"1730","line":227,"column":14,"nodeType":null,"endLine":227,"endColumn":74,"fix":"1731"},{"ruleId":"1266","severity":2,"message":"1732","line":234,"column":30,"nodeType":null,"endLine":236,"endColumn":15,"fix":"1733"},{"ruleId":"1266","severity":2,"message":"1734","line":239,"column":28,"nodeType":null,"endLine":239,"endColumn":28,"fix":"1735"},{"ruleId":"1266","severity":2,"message":"1736","line":240,"column":1,"nodeType":null,"endLine":240,"endColumn":119,"fix":"1737"},{"ruleId":"1266","severity":2,"message":"1738","line":241,"column":13,"nodeType":null,"endLine":241,"endColumn":14,"fix":"1739"},{"ruleId":"1266","severity":2,"message":"1740","line":243,"column":22,"nodeType":null,"endLine":243,"endColumn":94,"fix":"1741"},{"ruleId":"1266","severity":2,"message":"1742","line":261,"column":48,"nodeType":null,"endLine":263,"endColumn":11,"fix":"1743"},{"ruleId":"1266","severity":2,"message":"1744","line":265,"column":13,"nodeType":null,"endLine":265,"endColumn":86,"fix":"1745"},{"ruleId":"1266","severity":2,"message":"1280","line":2,"column":37,"nodeType":null,"endLine":2,"endColumn":54,"fix":"1746"},{"ruleId":"1266","severity":2,"message":"1747","line":17,"column":49,"nodeType":null,"endLine":17,"endColumn":83,"fix":"1748"},{"ruleId":"1266","severity":2,"message":"1277","line":22,"column":42,"nodeType":null,"endLine":22,"endColumn":43,"fix":"1749"},{"ruleId":"1266","severity":2,"message":"1750","line":31,"column":28,"nodeType":null,"endLine":32,"endColumn":6,"fix":"1751"},{"ruleId":"1266","severity":2,"message":"1752","line":33,"column":9,"nodeType":null,"endLine":33,"endColumn":109,"fix":"1753"},{"ruleId":"1266","severity":2,"message":"1754","line":39,"column":76,"nodeType":null,"endLine":39,"endColumn":89,"fix":"1755"},{"ruleId":"1266","severity":2,"message":"1756","line":46,"column":10,"nodeType":null,"endLine":46,"endColumn":15,"fix":"1757"},{"ruleId":"1266","severity":2,"message":"1758","line":50,"column":10,"nodeType":null,"endLine":50,"endColumn":18,"fix":"1759"},{"ruleId":"1266","severity":2,"message":"1760","line":55,"column":10,"nodeType":null,"endLine":55,"endColumn":14,"fix":"1761"},{"ruleId":"1266","severity":2,"message":"1762","line":59,"column":10,"nodeType":null,"endLine":59,"endColumn":14,"fix":"1763"},{"ruleId":"1266","severity":2,"message":"1764","line":70,"column":8,"nodeType":null,"endLine":70,"endColumn":14,"fix":"1765"},{"ruleId":"1266","severity":2,"message":"1287","line":75,"column":30,"nodeType":null,"endLine":75,"endColumn":38,"fix":"1766"},{"ruleId":"1266","severity":2,"message":"1767","line":77,"column":43,"nodeType":null,"endLine":77,"endColumn":95,"fix":"1768"},{"ruleId":"1266","severity":2,"message":"1769","line":79,"column":20,"nodeType":null,"endLine":79,"endColumn":30,"fix":"1770"},{"ruleId":"1266","severity":2,"message":"1771","line":80,"column":40,"nodeType":null,"endLine":80,"endColumn":70,"fix":"1772"},{"ruleId":"1266","severity":2,"message":"1773","line":83,"column":21,"nodeType":null,"endLine":83,"endColumn":52,"fix":"1774"},{"ruleId":"1266","severity":2,"message":"1775","line":86,"column":25,"nodeType":null,"endLine":86,"endColumn":82,"fix":"1776"},{"ruleId":"1266","severity":2,"message":"1777","line":110,"column":29,"nodeType":null,"endLine":110,"endColumn":88,"fix":"1778"},{"ruleId":"1266","severity":2,"message":"1277","line":114,"column":17,"nodeType":null,"endLine":114,"endColumn":18,"fix":"1779"},{"ruleId":"1266","severity":2,"message":"1280","line":2,"column":22,"nodeType":null,"endLine":2,"endColumn":39,"fix":"1780"},{"ruleId":"1266","severity":2,"message":"1781","line":12,"column":62,"nodeType":null,"endLine":12,"endColumn":88,"fix":"1782"},{"ruleId":"1266","severity":2,"message":"1783","line":14,"column":40,"nodeType":null,"endLine":14,"endColumn":83,"fix":"1784"},{"ruleId":"1266","severity":2,"message":"1287","line":17,"column":46,"nodeType":null,"endLine":17,"endColumn":54,"fix":"1785"},{"ruleId":"1266","severity":2,"message":"1786","line":18,"column":11,"nodeType":null,"endLine":22,"endColumn":6,"fix":"1787"},{"ruleId":"1266","severity":2,"message":"1788","line":30,"column":17,"nodeType":null,"endLine":30,"endColumn":70,"fix":"1789"},{"ruleId":"1266","severity":2,"message":"1790","line":35,"column":39,"nodeType":null,"endLine":37,"endColumn":9,"fix":"1791"},{"ruleId":"1266","severity":2,"message":"1389","line":38,"column":47,"nodeType":null,"endLine":38,"endColumn":49,"fix":"1792"},{"ruleId":"1266","severity":2,"message":"1793","line":39,"column":15,"nodeType":null,"endLine":39,"endColumn":127,"fix":"1794"},{"ruleId":"1266","severity":2,"message":"1279","line":78,"column":14,"nodeType":null},{"ruleId":"1266","severity":2,"message":"1795","line":4,"column":28,"nodeType":null,"endLine":4,"endColumn":46,"fix":"1796"},{"ruleId":"1266","severity":2,"message":"1797","line":5,"column":9,"nodeType":null,"endLine":5,"endColumn":55,"fix":"1798"},{"ruleId":"1266","severity":2,"message":"1277","line":18,"column":25,"nodeType":null,"endLine":18,"endColumn":26,"fix":"1799"},{"ruleId":"1266","severity":2,"message":"1277","line":24,"column":18,"nodeType":null,"endLine":24,"endColumn":19,"fix":"1800"},{"ruleId":"1266","severity":2,"message":"1801","line":27,"column":28,"nodeType":null,"endLine":27,"endColumn":122,"fix":"1802"},{"ruleId":"1266","severity":2,"message":"1803","line":35,"column":11,"nodeType":null,"endLine":35,"endColumn":140,"fix":"1804"},{"ruleId":"1266","severity":2,"message":"1805","line":43,"column":75,"nodeType":null,"endLine":43,"endColumn":99,"fix":"1806"},{"ruleId":"1266","severity":2,"message":"1287","line":44,"column":55,"nodeType":null,"endLine":44,"endColumn":63,"fix":"1807"},{"ruleId":"1266","severity":2,"message":"1808","line":48,"column":54,"nodeType":null,"endLine":48,"endColumn":104,"fix":"1809"},{"ruleId":"1266","severity":2,"message":"1810","line":52,"column":14,"nodeType":null,"endLine":52,"endColumn":86,"fix":"1811"},{"ruleId":"1266","severity":2,"message":"1280","line":2,"column":31,"nodeType":null,"endLine":2,"endColumn":48,"fix":"1812"},{"ruleId":"1266","severity":2,"message":"1411","line":5,"column":22,"nodeType":null,"endLine":5,"endColumn":45,"fix":"1813"},{"ruleId":"1266","severity":2,"message":"1814","line":12,"column":72,"nodeType":null,"endLine":13,"endColumn":1,"fix":"1815"},{"ruleId":"1266","severity":2,"message":"1413","line":14,"column":46,"nodeType":null,"endLine":14,"endColumn":47,"fix":"1816"},{"ruleId":"1266","severity":2,"message":"1287","line":15,"column":31,"nodeType":null,"endLine":15,"endColumn":39,"fix":"1817"},{"ruleId":"1266","severity":2,"message":"1413","line":23,"column":42,"nodeType":null,"endLine":23,"endColumn":43,"fix":"1818"},{"ruleId":"1266","severity":2,"message":"1277","line":30,"column":36,"nodeType":null,"endLine":30,"endColumn":37,"fix":"1819"},{"ruleId":"1266","severity":2,"message":"1820","line":37,"column":22,"nodeType":null,"endLine":37,"endColumn":22,"fix":"1821"},{"ruleId":"1266","severity":2,"message":"1429","line":38,"column":6,"nodeType":null,"endLine":38,"endColumn":6,"fix":"1822"},{"ruleId":"1266","severity":2,"message":"1413","line":41,"column":40,"nodeType":null,"endLine":41,"endColumn":41,"fix":"1823"},{"ruleId":"1266","severity":2,"message":"1315","line":44,"column":7,"nodeType":null,"endLine":44,"endColumn":7,"fix":"1824"},{"ruleId":"1266","severity":2,"message":"1825","line":45,"column":1,"nodeType":null,"endLine":47,"endColumn":9,"fix":"1826"},{"ruleId":"1266","severity":2,"message":"1827","line":48,"column":1,"nodeType":null,"endLine":48,"endColumn":38,"fix":"1828"},{"ruleId":"1266","severity":2,"message":"1315","line":49,"column":1,"nodeType":null,"endLine":49,"endColumn":1,"fix":"1829"},{"ruleId":"1266","severity":2,"message":"1830","line":50,"column":1,"nodeType":null,"endLine":52,"endColumn":13,"fix":"1831"},{"ruleId":"1266","severity":2,"message":"1315","line":53,"column":1,"nodeType":null,"endLine":53,"endColumn":1,"fix":"1832"},{"ruleId":"1266","severity":2,"message":"1315","line":54,"column":1,"nodeType":null,"endLine":54,"endColumn":1,"fix":"1833"},{"ruleId":"1266","severity":2,"message":"1834","line":55,"column":9,"nodeType":null,"endLine":57,"endColumn":9,"fix":"1835"},{"ruleId":"1266","severity":2,"message":"1836","line":58,"column":9,"nodeType":null,"endLine":60,"endColumn":9,"fix":"1837"},{"ruleId":"1266","severity":2,"message":"1838","line":61,"column":1,"nodeType":null,"endLine":61,"endColumn":9,"fix":"1839"},{"ruleId":"1266","severity":2,"message":"1315","line":62,"column":1,"nodeType":null,"endLine":62,"endColumn":1,"fix":"1840"},{"ruleId":"1266","severity":2,"message":"1315","line":63,"column":13,"nodeType":null,"endLine":63,"endColumn":13,"fix":"1841"},{"ruleId":"1266","severity":2,"message":"1315","line":64,"column":11,"nodeType":null,"endLine":64,"endColumn":11,"fix":"1842"},{"ruleId":"1266","severity":2,"message":"1838","line":65,"column":1,"nodeType":null,"endLine":65,"endColumn":9,"fix":"1843"},{"ruleId":"1266","severity":2,"message":"1844","line":66,"column":9,"nodeType":null,"endLine":68,"endColumn":9,"fix":"1845"},{"ruleId":"1266","severity":2,"message":"1846","line":69,"column":1,"nodeType":null,"endLine":71,"endColumn":9,"fix":"1847"},{"ruleId":"1266","severity":2,"message":"1848","line":72,"column":1,"nodeType":null,"endLine":72,"endColumn":7,"fix":"1849"},{"ruleId":"1266","severity":2,"message":"1429","line":74,"column":6,"nodeType":null,"endLine":74,"endColumn":6,"fix":"1850"},{"ruleId":"1266","severity":2,"message":"1315","line":79,"column":1,"nodeType":null,"endLine":79,"endColumn":1,"fix":"1851"},{"ruleId":"1266","severity":2,"message":"1315","line":80,"column":7,"nodeType":null,"endLine":80,"endColumn":7,"fix":"1852"},{"ruleId":"1266","severity":2,"message":"1315","line":81,"column":9,"nodeType":null,"endLine":81,"endColumn":9,"fix":"1853"},{"ruleId":"1266","severity":2,"message":"1315","line":82,"column":11,"nodeType":null,"endLine":82,"endColumn":11,"fix":"1854"},{"ruleId":"1266","severity":2,"message":"1855","line":83,"column":1,"nodeType":null,"endLine":83,"endColumn":21,"fix":"1856"},{"ruleId":"1266","severity":2,"message":"1315","line":84,"column":1,"nodeType":null,"endLine":84,"endColumn":1,"fix":"1857"},{"ruleId":"1266","severity":2,"message":"1379","line":85,"column":1,"nodeType":null,"endLine":85,"endColumn":13,"fix":"1858"},{"ruleId":"1266","severity":2,"message":"1315","line":86,"column":1,"nodeType":null,"endLine":86,"endColumn":1,"fix":"1859"},{"ruleId":"1266","severity":2,"message":"1379","line":87,"column":1,"nodeType":null,"endLine":87,"endColumn":13,"fix":"1860"},{"ruleId":"1266","severity":2,"message":"1315","line":88,"column":13,"nodeType":null,"endLine":88,"endColumn":13,"fix":"1861"},{"ruleId":"1266","severity":2,"message":"1379","line":89,"column":1,"nodeType":null,"endLine":89,"endColumn":13,"fix":"1862"},{"ruleId":"1266","severity":2,"message":"1315","line":90,"column":11,"nodeType":null,"endLine":90,"endColumn":11,"fix":"1863"},{"ruleId":"1266","severity":2,"message":"1838","line":91,"column":1,"nodeType":null,"endLine":91,"endColumn":9,"fix":"1864"},{"ruleId":"1266","severity":2,"message":"1865","line":92,"column":9,"nodeType":null,"endLine":94,"endColumn":9,"fix":"1866"},{"ruleId":"1266","severity":2,"message":"1848","line":95,"column":1,"nodeType":null,"endLine":95,"endColumn":7,"fix":"1867"},{"ruleId":"1266","severity":2,"message":"1315","line":96,"column":1,"nodeType":null,"endLine":96,"endColumn":1,"fix":"1868"},{"ruleId":"1266","severity":2,"message":"1514","line":100,"column":1,"nodeType":null,"endLine":101,"endColumn":1,"fix":"1869"},{"ruleId":"1266","severity":2,"message":"1870","line":2,"column":9,"nodeType":null,"endLine":2,"endColumn":91,"fix":"1871"},{"ruleId":"1266","severity":2,"message":"1872","line":4,"column":16,"nodeType":null,"endLine":4,"endColumn":28,"fix":"1873"},{"ruleId":"1266","severity":2,"message":"1411","line":8,"column":31,"nodeType":null,"endLine":8,"endColumn":54,"fix":"1874"},{"ruleId":"1266","severity":2,"message":"1875","line":15,"column":31,"nodeType":null,"endLine":15,"endColumn":52,"fix":"1876"},{"ruleId":"1266","severity":2,"message":"1877","line":18,"column":54,"nodeType":null,"endLine":18,"endColumn":76,"fix":"1878"},{"ruleId":"1266","severity":2,"message":"1879","line":20,"column":56,"nodeType":null,"endLine":20,"endColumn":80,"fix":"1880"},{"ruleId":"1266","severity":2,"message":"1881","line":23,"column":27,"nodeType":null,"endLine":23,"endColumn":127,"fix":"1882"},{"ruleId":"1266","severity":2,"message":"1287","line":26,"column":31,"nodeType":null,"endLine":26,"endColumn":39,"fix":"1883"},{"ruleId":"1266","severity":2,"message":"1884","line":28,"column":11,"nodeType":null,"endLine":28,"endColumn":100,"fix":"1885"},{"ruleId":"1266","severity":2,"message":"1886","line":37,"column":36,"nodeType":null,"endLine":37,"endColumn":135,"fix":"1887"},{"ruleId":"1266","severity":2,"message":"1888","line":38,"column":52,"nodeType":null,"endLine":38,"endColumn":146,"fix":"1889"},{"ruleId":"1266","severity":2,"message":"1750","line":44,"column":29,"nodeType":null,"endLine":45,"endColumn":6,"fix":"1890"},{"ruleId":"1266","severity":2,"message":"1277","line":48,"column":65,"nodeType":null,"endLine":48,"endColumn":66,"fix":"1891"},{"ruleId":"1266","severity":2,"message":"1892","line":59,"column":14,"nodeType":null,"endLine":62,"endColumn":9,"fix":"1893"},{"ruleId":"1266","severity":2,"message":"1750","line":70,"column":38,"nodeType":null,"endLine":71,"endColumn":6,"fix":"1894"},{"ruleId":"1266","severity":2,"message":"1895","line":75,"column":10,"nodeType":null,"endLine":75,"endColumn":38,"fix":"1896"},{"ruleId":"1266","severity":2,"message":"1413","line":77,"column":11,"nodeType":null,"endLine":77,"endColumn":12,"fix":"1897"},{"ruleId":"1266","severity":2,"message":"1750","line":92,"column":44,"nodeType":null,"endLine":93,"endColumn":6,"fix":"1898"},{"ruleId":"1266","severity":2,"message":"1899","line":97,"column":10,"nodeType":null,"endLine":98,"endColumn":49,"fix":"1900"},{"ruleId":"1266","severity":2,"message":"1309","line":99,"column":1,"nodeType":null,"endLine":99,"endColumn":3,"fix":"1901"},{"ruleId":"1266","severity":2,"message":"1902","line":100,"column":1,"nodeType":null,"endLine":100,"endColumn":15,"fix":"1903"},{"ruleId":"1266","severity":2,"message":"1309","line":101,"column":15,"nodeType":null,"endLine":101,"endColumn":17,"fix":"1904"},{"ruleId":"1266","severity":2,"message":"1669","line":102,"column":1,"nodeType":null,"endLine":102,"endColumn":19,"fix":"1905"},{"ruleId":"1266","severity":2,"message":"1309","line":103,"column":1,"nodeType":null,"endLine":103,"endColumn":3,"fix":"1906"},{"ruleId":"1266","severity":2,"message":"1907","line":104,"column":17,"nodeType":null,"endLine":104,"endColumn":74,"fix":"1908"},{"ruleId":"1266","severity":2,"message":"1909","line":105,"column":15,"nodeType":null,"endLine":105,"endColumn":24,"fix":"1910"},{"ruleId":"1266","severity":2,"message":"1309","line":106,"column":1,"nodeType":null,"endLine":106,"endColumn":3,"fix":"1911"},{"ruleId":"1266","severity":2,"message":"1309","line":107,"column":13,"nodeType":null,"endLine":107,"endColumn":15,"fix":"1912"},{"ruleId":"1266","severity":2,"message":"1309","line":108,"column":1,"nodeType":null,"endLine":108,"endColumn":3,"fix":"1913"},{"ruleId":"1266","severity":2,"message":"1914","line":109,"column":9,"nodeType":null,"endLine":110,"endColumn":9,"fix":"1915"},{"ruleId":"1266","severity":2,"message":"1916","line":125,"column":5,"nodeType":null,"endLine":126,"endColumn":10,"fix":"1917"},{"ruleId":"1266","severity":2,"message":"1918","line":130,"column":10,"nodeType":null,"endLine":130,"endColumn":50,"fix":"1919"},{"ruleId":"1266","severity":2,"message":"1413","line":134,"column":11,"nodeType":null,"endLine":134,"endColumn":12,"fix":"1920"},{"ruleId":"1266","severity":2,"message":"1820","line":149,"column":9,"nodeType":null,"endLine":149,"endColumn":9,"fix":"1921"},{"ruleId":"1266","severity":2,"message":"1309","line":150,"column":1,"nodeType":null,"endLine":150,"endColumn":3,"fix":"1922"},{"ruleId":"1266","severity":2,"message":"1923","line":151,"column":1,"nodeType":null,"endLine":151,"endColumn":45,"fix":"1924"},{"ruleId":"1266","severity":2,"message":"1315","line":191,"column":5,"nodeType":null,"endLine":191,"endColumn":5,"fix":"1925"},{"ruleId":"1266","severity":2,"message":"1926","line":196,"column":78,"nodeType":null,"endLine":196,"endColumn":133,"fix":"1927"},{"ruleId":"1266","severity":2,"message":"1928","line":198,"column":12,"nodeType":null,"endLine":198,"endColumn":110,"fix":"1929"},{"ruleId":"1266","severity":2,"message":"1930","line":205,"column":27,"nodeType":null,"endLine":205,"endColumn":61,"fix":"1931"},{"ruleId":"1266","severity":2,"message":"1932","line":215,"column":31,"nodeType":null,"endLine":215,"endColumn":51,"fix":"1933"},{"ruleId":"1266","severity":2,"message":"1279","line":24,"column":33,"nodeType":null},{"ruleId":"1266","severity":2,"message":"1934","line":11,"column":63,"nodeType":null,"endLine":11,"endColumn":87,"fix":"1935"},{"ruleId":"1266","severity":2,"message":"1287","line":13,"column":62,"nodeType":null,"endLine":13,"endColumn":70,"fix":"1936"},{"ruleId":"1266","severity":2,"message":"1287","line":23,"column":41,"nodeType":null,"endLine":23,"endColumn":49,"fix":"1937"},{"ruleId":"1266","severity":2,"message":"1938","line":24,"column":39,"nodeType":null,"endLine":24,"endColumn":44,"fix":"1939"},{"ruleId":"1266","severity":2,"message":"1315","line":37,"column":5,"nodeType":null,"endLine":37,"endColumn":5,"fix":"1940"},{"ruleId":"1266","severity":2,"message":"1941","line":39,"column":29,"nodeType":null,"endLine":39,"endColumn":49,"fix":"1942"},{"ruleId":"1266","severity":2,"message":"1389","line":41,"column":57,"nodeType":null,"endLine":41,"endColumn":59,"fix":"1943"},{"ruleId":"1266","severity":2,"message":"1389","line":42,"column":69,"nodeType":null,"endLine":42,"endColumn":71,"fix":"1944"},{"ruleId":"1266","severity":2,"message":"1945","line":43,"column":34,"nodeType":null,"endLine":43,"endColumn":107,"fix":"1946"},{"ruleId":"1266","severity":2,"message":"1279","line":343,"column":72,"nodeType":null},{"ruleId":"1266","severity":2,"message":"1280","line":2,"column":23,"nodeType":null,"endLine":2,"endColumn":40,"fix":"1947"},{"ruleId":"1266","severity":2,"message":"1948","line":10,"column":72,"nodeType":null,"endLine":10,"endColumn":103,"fix":"1949"},{"ruleId":"1266","severity":2,"message":"1950","line":24,"column":13,"nodeType":null,"endLine":24,"endColumn":82,"fix":"1951"},{"ruleId":"1266","severity":2,"message":"1952","line":33,"column":13,"nodeType":null,"endLine":33,"endColumn":78,"fix":"1953"},{"ruleId":"1266","severity":2,"message":"1287","line":39,"column":47,"nodeType":null,"endLine":39,"endColumn":55,"fix":"1954"},{"ruleId":"1266","severity":2,"message":"1287","line":49,"column":51,"nodeType":null,"endLine":49,"endColumn":59,"fix":"1955"},{"ruleId":"1266","severity":2,"message":"1287","line":59,"column":51,"nodeType":null,"endLine":59,"endColumn":59,"fix":"1956"},{"ruleId":"1266","severity":2,"message":"1957","line":63,"column":13,"nodeType":null,"endLine":63,"endColumn":65,"fix":"1958"},{"ruleId":"1266","severity":2,"message":"1287","line":69,"column":52,"nodeType":null,"endLine":69,"endColumn":60,"fix":"1959"},{"ruleId":"1266","severity":2,"message":"1287","line":79,"column":50,"nodeType":null,"endLine":79,"endColumn":58,"fix":"1960"},{"ruleId":"1266","severity":2,"message":"1287","line":89,"column":54,"nodeType":null,"endLine":89,"endColumn":62,"fix":"1961"},{"ruleId":"1266","severity":2,"message":"1287","line":99,"column":54,"nodeType":null,"endLine":99,"endColumn":62,"fix":"1962"},{"ruleId":"1266","severity":2,"message":"1287","line":109,"column":54,"nodeType":null,"endLine":109,"endColumn":62,"fix":"1963"},{"ruleId":"1266","severity":2,"message":"1279","line":37,"column":31,"nodeType":null},{"ruleId":"1266","severity":2,"message":"1964","line":9,"column":53,"nodeType":null,"endLine":9,"endColumn":78,"fix":"1965"},{"ruleId":"1266","severity":2,"message":"1966","line":10,"column":44,"nodeType":null,"endLine":10,"endColumn":55,"fix":"1967"},{"ruleId":"1266","severity":2,"message":"1968","line":11,"column":19,"nodeType":null,"endLine":11,"endColumn":91,"fix":"1969"},{"ruleId":"1266","severity":2,"message":"1970","line":16,"column":29,"nodeType":null,"endLine":18,"endColumn":7,"fix":"1971"},{"ruleId":"1266","severity":2,"message":"1279","line":767,"column":49,"nodeType":null},{"ruleId":"1266","severity":2,"message":"1795","line":4,"column":28,"nodeType":null,"endLine":4,"endColumn":46,"fix":"1972"},{"ruleId":"1266","severity":2,"message":"1973","line":5,"column":9,"nodeType":null,"endLine":5,"endColumn":70,"fix":"1974"},{"ruleId":"1266","severity":2,"message":"1277","line":20,"column":26,"nodeType":null,"endLine":20,"endColumn":27,"fix":"1975"},{"ruleId":"1266","severity":2,"message":"1976","line":31,"column":29,"nodeType":null,"endLine":31,"endColumn":115,"fix":"1977"},{"ruleId":"1266","severity":2,"message":"1978","line":41,"column":11,"nodeType":null,"endLine":41,"endColumn":128,"fix":"1979"},{"ruleId":"1266","severity":2,"message":"1980","line":49,"column":34,"nodeType":null,"endLine":49,"endColumn":121,"fix":"1981"},{"ruleId":"1266","severity":2,"message":"1982","line":51,"column":51,"nodeType":null,"endLine":51,"endColumn":69,"fix":"1983"},{"ruleId":"1266","severity":2,"message":"1413","line":55,"column":23,"nodeType":null,"endLine":55,"endColumn":24,"fix":"1984"},{"ruleId":"1266","severity":2,"message":"1985","line":56,"column":25,"nodeType":null,"endLine":56,"endColumn":29,"fix":"1986"},{"ruleId":"1266","severity":2,"message":"1987","line":57,"column":31,"nodeType":null,"endLine":57,"endColumn":38,"fix":"1988"},{"ruleId":"1266","severity":2,"message":"1989","line":68,"column":7,"nodeType":null,"endLine":68,"endColumn":90,"fix":"1990"},{"ruleId":"1266","severity":2,"message":"1991","line":73,"column":28,"nodeType":null,"endLine":73,"endColumn":102,"fix":"1992"},{"ruleId":"1266","severity":2,"message":"1993","line":80,"column":69,"nodeType":null,"endLine":80,"endColumn":123,"fix":"1994"},{"ruleId":"1266","severity":2,"message":"1429","line":82,"column":6,"nodeType":null,"endLine":82,"endColumn":6,"fix":"1995"},{"ruleId":"1266","severity":2,"message":"1996","line":85,"column":26,"nodeType":null,"endLine":85,"endColumn":157,"fix":"1997"},{"ruleId":"1266","severity":2,"message":"1287","line":86,"column":51,"nodeType":null,"endLine":86,"endColumn":59,"fix":"1998"},{"ruleId":"1266","severity":2,"message":"1999","line":90,"column":46,"nodeType":null,"endLine":90,"endColumn":103,"fix":"2000"},{"ruleId":"1266","severity":2,"message":"1313","line":94,"column":68,"nodeType":null,"endLine":94,"endColumn":68,"fix":"2001"},{"ruleId":"1266","severity":2,"message":"1279","line":71,"column":30,"nodeType":null},{"ruleId":"1266","severity":2,"message":"1279","line":47,"column":18,"nodeType":null},{"ruleId":"1266","severity":2,"message":"1309","line":23,"column":3,"nodeType":null,"endLine":23,"endColumn":5,"fix":"2002"},{"ruleId":"1266","severity":2,"message":"2003","line":24,"column":1,"nodeType":null,"endLine":24,"endColumn":5,"fix":"2004"},{"ruleId":"1266","severity":2,"message":"1309","line":25,"column":1,"nodeType":null,"endLine":25,"endColumn":3,"fix":"2005"},{"ruleId":"1266","severity":2,"message":"1309","line":26,"column":3,"nodeType":null,"endLine":26,"endColumn":5,"fix":"2006"},{"ruleId":"1266","severity":2,"message":"1429","line":27,"column":2,"nodeType":null,"endLine":27,"endColumn":2,"fix":"2007"},{"ruleId":"1266","severity":2,"message":"2008","line":29,"column":54,"nodeType":null,"endLine":29,"endColumn":90,"fix":"2009"},{"ruleId":"1266","severity":2,"message":"2010","line":42,"column":19,"nodeType":null,"endLine":42,"endColumn":38,"fix":"2011"},{"ruleId":"1266","severity":2,"message":"1309","line":52,"column":5,"nodeType":null,"endLine":52,"endColumn":7,"fix":"2012"},{"ruleId":"1266","severity":2,"message":"1309","line":53,"column":1,"nodeType":null,"endLine":53,"endColumn":3,"fix":"2013"},{"ruleId":"1266","severity":2,"message":"1309","line":54,"column":7,"nodeType":null,"endLine":54,"endColumn":9,"fix":"2014"},{"ruleId":"1266","severity":2,"message":"2015","line":55,"column":1,"nodeType":null,"endLine":55,"endColumn":5,"fix":"2016"},{"ruleId":"1266","severity":2,"message":"2015","line":56,"column":9,"nodeType":null,"endLine":56,"endColumn":13,"fix":"2017"},{"ruleId":"1266","severity":2,"message":"2018","line":57,"column":1,"nodeType":null,"endLine":57,"endColumn":13,"fix":"2019"},{"ruleId":"1266","severity":2,"message":"2015","line":58,"column":1,"nodeType":null,"endLine":58,"endColumn":5,"fix":"2020"},{"ruleId":"1266","severity":2,"message":"2018","line":59,"column":1,"nodeType":null,"endLine":59,"endColumn":13,"fix":"2021"},{"ruleId":"1266","severity":2,"message":"2015","line":60,"column":9,"nodeType":null,"endLine":60,"endColumn":13,"fix":"2022"},{"ruleId":"1266","severity":2,"message":"2023","line":61,"column":1,"nodeType":null,"endLine":61,"endColumn":11,"fix":"2024"},{"ruleId":"1266","severity":2,"message":"1309","line":62,"column":1,"nodeType":null,"endLine":62,"endColumn":3,"fix":"2025"},{"ruleId":"1266","severity":2,"message":"2026","line":66,"column":46,"nodeType":null,"endLine":66,"endColumn":78,"fix":"2027"},{"ruleId":"1266","severity":2,"message":"2028","line":68,"column":4,"nodeType":null,"endLine":68,"endColumn":5,"fix":"2029"},{"ruleId":"1266","severity":2,"message":"2026","line":70,"column":46,"nodeType":null,"endLine":70,"endColumn":78,"fix":"2030"},{"ruleId":"1266","severity":2,"message":"2028","line":72,"column":4,"nodeType":null,"endLine":72,"endColumn":5,"fix":"2031"},{"ruleId":"1266","severity":2,"message":"2032","line":73,"column":14,"nodeType":null,"endLine":73,"endColumn":49,"fix":"2033"},{"ruleId":"1266","severity":2,"message":"2034","line":74,"column":14,"nodeType":null,"endLine":74,"endColumn":91,"fix":"2035"},{"ruleId":"1266","severity":2,"message":"2036","line":77,"column":18,"nodeType":null,"endLine":77,"endColumn":32,"fix":"2037"},{"ruleId":"1266","severity":2,"message":"2038","line":78,"column":18,"nodeType":null,"endLine":78,"endColumn":35,"fix":"2039"},{"ruleId":"1266","severity":2,"message":"2040","line":79,"column":18,"nodeType":null,"endLine":79,"endColumn":35,"fix":"2041"},{"ruleId":"1266","severity":2,"message":"2042","line":80,"column":19,"nodeType":null,"endLine":80,"endColumn":33,"fix":"2043"},{"ruleId":"1266","severity":2,"message":"1429","line":81,"column":4,"nodeType":null,"endLine":81,"endColumn":4,"fix":"2044"},{"ruleId":"1266","severity":2,"message":"2045","line":100,"column":44,"nodeType":null,"endLine":100,"endColumn":84,"fix":"2046"},{"ruleId":"1266","severity":2,"message":"2047","line":101,"column":11,"nodeType":null,"endLine":101,"endColumn":95,"fix":"2048"},{"ruleId":"1266","severity":2,"message":"2049","line":105,"column":31,"nodeType":null,"endLine":105,"endColumn":42,"fix":"2050"},{"ruleId":"1266","severity":2,"message":"2051","line":109,"column":18,"nodeType":null,"endLine":109,"endColumn":69,"fix":"2052"},{"ruleId":"1266","severity":2,"message":"2053","line":110,"column":28,"nodeType":null,"endLine":110,"endColumn":57,"fix":"2054"},{"ruleId":"1266","severity":2,"message":"2055","line":119,"column":24,"nodeType":null,"endLine":119,"endColumn":85,"fix":"2056"},{"ruleId":"1266","severity":2,"message":"1429","line":126,"column":8,"nodeType":null,"endLine":126,"endColumn":8,"fix":"2057"},{"ruleId":"1266","severity":2,"message":"1277","line":135,"column":29,"nodeType":null,"endLine":135,"endColumn":30,"fix":"2058"},{"ruleId":"1266","severity":2,"message":"1277","line":139,"column":27,"nodeType":null,"endLine":139,"endColumn":28,"fix":"2059"},{"ruleId":"1266","severity":2,"message":"1277","line":140,"column":10,"nodeType":null,"endLine":140,"endColumn":11,"fix":"2060"},{"ruleId":"1266","severity":2,"message":"1277","line":145,"column":26,"nodeType":null,"endLine":145,"endColumn":27,"fix":"2061"},{"ruleId":"1266","severity":2,"message":"2062","line":149,"column":17,"nodeType":null,"endLine":149,"endColumn":40,"fix":"2063"},{"ruleId":"1266","severity":2,"message":"2064","line":170,"column":20,"nodeType":null,"endLine":170,"endColumn":46,"fix":"2065"},{"ruleId":"1266","severity":2,"message":"2064","line":179,"column":22,"nodeType":null,"endLine":179,"endColumn":48,"fix":"2066"},{"ruleId":"1266","severity":2,"message":"2067","line":192,"column":58,"nodeType":null,"endLine":192,"endColumn":82,"fix":"2068"},{"ruleId":"1266","severity":2,"message":"1309","line":193,"column":1,"nodeType":null,"endLine":193,"endColumn":3,"fix":"2069"},{"ruleId":"1266","severity":2,"message":"2070","line":195,"column":3,"nodeType":null,"endLine":195,"endColumn":139,"fix":"2071"},{"ruleId":"1266","severity":2,"message":"2072","line":196,"column":1,"nodeType":null,"endLine":196,"endColumn":2,"fix":"2073"},{"ruleId":"1266","severity":2,"message":"2074","line":1,"column":16,"nodeType":null,"endLine":1,"endColumn":73,"fix":"2075"},{"ruleId":"1266","severity":2,"message":"1280","line":2,"column":24,"nodeType":null,"endLine":2,"endColumn":41,"fix":"2076"},{"ruleId":"1266","severity":2,"message":"1514","line":24,"column":1,"nodeType":null,"endLine":25,"endColumn":1,"fix":"2077"},{"ruleId":"1266","severity":2,"message":"2078","line":26,"column":54,"nodeType":null,"endLine":26,"endColumn":74,"fix":"2079"},{"ruleId":"1266","severity":2,"message":"2080","line":33,"column":36,"nodeType":null,"endLine":33,"endColumn":44,"fix":"2081"},{"ruleId":"1266","severity":2,"message":"2080","line":34,"column":30,"nodeType":null,"endLine":34,"endColumn":38,"fix":"2082"},{"ruleId":"1266","severity":2,"message":"2083","line":35,"column":33,"nodeType":null,"endLine":35,"endColumn":73,"fix":"2084"},{"ruleId":"1266","severity":2,"message":"2085","line":39,"column":30,"nodeType":null,"endLine":39,"endColumn":40,"fix":"2086"},{"ruleId":"1266","severity":2,"message":"2087","line":42,"column":24,"nodeType":null,"endLine":42,"endColumn":52,"fix":"2088"},{"ruleId":"1266","severity":2,"message":"2083","line":49,"column":15,"nodeType":null,"endLine":49,"endColumn":55,"fix":"2089"},{"ruleId":"1266","severity":2,"message":"2090","line":54,"column":20,"nodeType":null,"endLine":54,"endColumn":74,"fix":"2091"},{"ruleId":"1266","severity":2,"message":"2092","line":57,"column":18,"nodeType":null,"endLine":57,"endColumn":66,"fix":"2093"},{"ruleId":"1266","severity":2,"message":"1514","line":62,"column":2,"nodeType":null,"endLine":63,"endColumn":1,"fix":"2094"},{"ruleId":"1266","severity":2,"message":"2095","line":65,"column":74,"nodeType":null,"endLine":65,"endColumn":106,"fix":"2096"},{"ruleId":"1266","severity":2,"message":"2097","line":76,"column":35,"nodeType":null,"endLine":76,"endColumn":35,"fix":"2098"},{"ruleId":"1266","severity":2,"message":"2099","line":77,"column":1,"nodeType":null,"endLine":77,"endColumn":77,"fix":"2100"},{"ruleId":"1266","severity":2,"message":"2101","line":78,"column":1,"nodeType":null,"endLine":78,"endColumn":42,"fix":"2102"},{"ruleId":"1266","severity":2,"message":"1315","line":80,"column":1,"nodeType":null,"endLine":80,"endColumn":1,"fix":"2103"},{"ruleId":"1266","severity":2,"message":"1315","line":82,"column":5,"nodeType":null,"endLine":82,"endColumn":5,"fix":"2104"},{"ruleId":"1266","severity":2,"message":"1315","line":83,"column":1,"nodeType":null,"endLine":83,"endColumn":1,"fix":"2105"},{"ruleId":"1266","severity":2,"message":"1848","line":84,"column":1,"nodeType":null,"endLine":84,"endColumn":7,"fix":"2106"},{"ruleId":"1266","severity":2,"message":"1315","line":85,"column":1,"nodeType":null,"endLine":85,"endColumn":1,"fix":"2107"},{"ruleId":"1266","severity":2,"message":"1315","line":86,"column":1,"nodeType":null,"endLine":86,"endColumn":1,"fix":"2108"},{"ruleId":"1266","severity":2,"message":"1315","line":87,"column":5,"nodeType":null,"endLine":87,"endColumn":5,"fix":"2109"},{"ruleId":"1266","severity":2,"message":"1315","line":88,"column":1,"nodeType":null,"endLine":88,"endColumn":1,"fix":"2110"},{"ruleId":"1266","severity":2,"message":"2111","line":89,"column":1,"nodeType":null,"endLine":89,"endColumn":5,"fix":"2112"},{"ruleId":"1266","severity":2,"message":"2113","line":91,"column":1,"nodeType":null,"endLine":91,"endColumn":79,"fix":"2114"},{"ruleId":"1266","severity":2,"message":"2115","line":93,"column":1,"nodeType":null,"endLine":93,"endColumn":32,"fix":"2116"},{"ruleId":"1266","severity":2,"message":"2117","line":94,"column":7,"nodeType":null,"endLine":94,"endColumn":109,"fix":"2118"},{"ruleId":"1266","severity":2,"message":"2119","line":95,"column":3,"nodeType":null,"endLine":96,"endColumn":1,"fix":"2120"},{"ruleId":"1266","severity":2,"message":"2121","line":97,"column":3,"nodeType":null,"endLine":97,"endColumn":13,"fix":"2122"},{"ruleId":"1266","severity":2,"message":"1287","line":102,"column":37,"nodeType":null,"endLine":102,"endColumn":45,"fix":"2123"},{"ruleId":"1266","severity":2,"message":"1820","line":103,"column":78,"nodeType":null,"endLine":103,"endColumn":78,"fix":"2124"},{"ruleId":"1266","severity":2,"message":"1750","line":107,"column":32,"nodeType":null,"endLine":108,"endColumn":6,"fix":"2125"},{"ruleId":"1266","severity":2,"message":"2126","line":109,"column":49,"nodeType":null,"endLine":109,"endColumn":58,"fix":"2127"},{"ruleId":"1266","severity":2,"message":"2128","line":110,"column":9,"nodeType":null,"endLine":111,"endColumn":8,"fix":"2129"},{"ruleId":"1266","severity":2,"message":"1287","line":116,"column":37,"nodeType":null,"endLine":116,"endColumn":45,"fix":"2130"},{"ruleId":"1266","severity":2,"message":"2131","line":119,"column":21,"nodeType":null,"endLine":119,"endColumn":23,"fix":"2132"},{"ruleId":"1266","severity":2,"message":"2133","line":120,"column":57,"nodeType":null,"endLine":120,"endColumn":103,"fix":"2134"},{"ruleId":"1266","severity":2,"message":"2135","line":121,"column":6,"nodeType":null,"endLine":121,"endColumn":10,"fix":"2136"},{"ruleId":"1266","severity":2,"message":"1287","line":133,"column":30,"nodeType":null,"endLine":133,"endColumn":38,"fix":"2137"},{"ruleId":"1266","severity":2,"message":"1660","line":137,"column":17,"nodeType":null,"endLine":137,"endColumn":25,"fix":"2138"},{"ruleId":"1266","severity":2,"message":"1287","line":143,"column":30,"nodeType":null,"endLine":143,"endColumn":38,"fix":"2139"},{"ruleId":"1266","severity":2,"message":"1660","line":147,"column":17,"nodeType":null,"endLine":147,"endColumn":25,"fix":"2140"},{"ruleId":"1266","severity":2,"message":"1287","line":153,"column":65,"nodeType":null,"endLine":153,"endColumn":73,"fix":"2141"},{"ruleId":"1266","severity":2,"message":"2142","line":163,"column":23,"nodeType":null,"endLine":163,"endColumn":83,"fix":"2143"},{"ruleId":"1266","severity":2,"message":"2144","line":174,"column":27,"nodeType":null,"endLine":174,"endColumn":54,"fix":"2145"},{"ruleId":"1266","severity":2,"message":"2146","line":176,"column":43,"nodeType":null,"endLine":176,"endColumn":66,"fix":"2147"},{"ruleId":"1266","severity":2,"message":"1287","line":191,"column":30,"nodeType":null,"endLine":191,"endColumn":38,"fix":"2148"},{"ruleId":"1266","severity":2,"message":"2149","line":205,"column":69,"nodeType":null,"endLine":205,"endColumn":79,"fix":"2150"},{"ruleId":"1266","severity":2,"message":"2151","line":206,"column":12,"nodeType":null,"endLine":206,"endColumn":87,"fix":"2152"},{"ruleId":"1266","severity":2,"message":"1287","line":210,"column":37,"nodeType":null,"endLine":210,"endColumn":45,"fix":"2153"},{"ruleId":"1266","severity":2,"message":"1287","line":216,"column":37,"nodeType":null,"endLine":216,"endColumn":45,"fix":"2154"},{"ruleId":"1266","severity":2,"message":"1677","line":223,"column":11,"nodeType":null,"endLine":223,"endColumn":11,"fix":"2155"},{"ruleId":"1266","severity":2,"message":"1309","line":224,"column":9,"nodeType":null,"endLine":224,"endColumn":11,"fix":"2156"},{"ruleId":"1266","severity":2,"message":"2157","line":225,"column":1,"nodeType":null,"endLine":225,"endColumn":42,"fix":"2158"},{"ruleId":"1266","severity":2,"message":"2159","line":228,"column":31,"nodeType":null,"endLine":228,"endColumn":42,"fix":"2160"},{"ruleId":"1266","severity":2,"message":"2161","line":243,"column":19,"nodeType":null,"endLine":243,"endColumn":95,"fix":"2162"},{"ruleId":"1266","severity":2,"message":"1277","line":246,"column":19,"nodeType":null,"endLine":246,"endColumn":20,"fix":"2163"},{"ruleId":"1266","severity":2,"message":"1277","line":252,"column":32,"nodeType":null,"endLine":252,"endColumn":33,"fix":"2164"},{"ruleId":"1266","severity":2,"message":"2159","line":269,"column":36,"nodeType":null,"endLine":269,"endColumn":47,"fix":"2165"},{"ruleId":"1266","severity":2,"message":"1277","line":279,"column":26,"nodeType":null,"endLine":279,"endColumn":27,"fix":"2166"},{"ruleId":"1266","severity":2,"message":"1277","line":285,"column":37,"nodeType":null,"endLine":285,"endColumn":38,"fix":"2167"},{"ruleId":"1266","severity":2,"message":"2168","line":294,"column":17,"nodeType":null,"endLine":294,"endColumn":114,"fix":"2169"},{"ruleId":"1266","severity":2,"message":"2170","line":302,"column":14,"nodeType":null,"endLine":302,"endColumn":106,"fix":"2171"},{"ruleId":"1266","severity":2,"message":"2172","line":309,"column":44,"nodeType":null,"endLine":311,"endColumn":13,"fix":"2173"},{"ruleId":"1266","severity":2,"message":"2174","line":316,"column":14,"nodeType":null,"endLine":316,"endColumn":97,"fix":"2175"},{"ruleId":"1266","severity":2,"message":"1279","line":248,"column":34,"nodeType":null},{"ruleId":"1266","severity":2,"message":"2176","line":1,"column":13,"nodeType":null,"endLine":1,"endColumn":19,"fix":"2177"},{"ruleId":"1266","severity":2,"message":"1750","line":10,"column":23,"nodeType":null,"endLine":11,"endColumn":6,"fix":"2178"},{"ruleId":"1266","severity":2,"message":"1277","line":20,"column":36,"nodeType":null,"endLine":20,"endColumn":37,"fix":"2179"},{"ruleId":"1266","severity":2,"message":"2180","line":22,"column":12,"nodeType":null,"endLine":27,"endColumn":6,"fix":"2181"},{"ruleId":"1266","severity":2,"message":"2182","line":30,"column":42,"nodeType":null,"endLine":30,"endColumn":66,"fix":"2183"},{"ruleId":"1266","severity":2,"message":"2184","line":2,"column":31,"nodeType":null,"endLine":2,"endColumn":47,"fix":"2185"},{"ruleId":"1266","severity":2,"message":"2186","line":3,"column":31,"nodeType":null,"endLine":3,"endColumn":54,"fix":"2187"},{"ruleId":"1266","severity":2,"message":"1277","line":34,"column":15,"nodeType":null,"endLine":34,"endColumn":16,"fix":"2188"},{"ruleId":"1266","severity":2,"message":"1277","line":41,"column":8,"nodeType":null,"endLine":41,"endColumn":9,"fix":"2189"},{"ruleId":"1266","severity":2,"message":"2190","line":47,"column":25,"nodeType":null,"endLine":47,"endColumn":78,"fix":"2191"},{"ruleId":"1266","severity":2,"message":"1277","line":50,"column":15,"nodeType":null,"endLine":50,"endColumn":16,"fix":"2192"},{"ruleId":"1266","severity":2,"message":"1413","line":67,"column":43,"nodeType":null,"endLine":67,"endColumn":44,"fix":"2193"},{"ruleId":"1266","severity":2,"message":"2194","line":76,"column":13,"nodeType":null,"endLine":76,"endColumn":13,"fix":"2195"},{"ruleId":"1266","severity":2,"message":"1315","line":77,"column":11,"nodeType":null,"endLine":77,"endColumn":11,"fix":"2196"},{"ruleId":"1266","severity":2,"message":"2197","line":78,"column":1,"nodeType":null,"endLine":78,"endColumn":11,"fix":"2198"},{"ruleId":"1266","severity":2,"message":"1277","line":88,"column":40,"nodeType":null,"endLine":88,"endColumn":41,"fix":"2199"},{"ruleId":"1266","severity":2,"message":"1277","line":89,"column":8,"nodeType":null,"endLine":89,"endColumn":9,"fix":"2200"},{"ruleId":"1266","severity":2,"message":"1277","line":107,"column":34,"nodeType":null,"endLine":107,"endColumn":35,"fix":"2201"},{"ruleId":"1266","severity":2,"message":"1277","line":108,"column":8,"nodeType":null,"endLine":108,"endColumn":9,"fix":"2202"},{"ruleId":"1266","severity":2,"message":"1277","line":120,"column":34,"nodeType":null,"endLine":120,"endColumn":35,"fix":"2203"},{"ruleId":"1266","severity":2,"message":"1277","line":139,"column":47,"nodeType":null,"endLine":139,"endColumn":48,"fix":"2204"},{"ruleId":"1266","severity":2,"message":"1277","line":140,"column":8,"nodeType":null,"endLine":140,"endColumn":9,"fix":"2205"},{"ruleId":"1266","severity":2,"message":"1277","line":152,"column":47,"nodeType":null,"endLine":152,"endColumn":48,"fix":"2206"},{"ruleId":"1266","severity":2,"message":"1277","line":160,"column":40,"nodeType":null,"endLine":160,"endColumn":41,"fix":"2207"},{"ruleId":"1266","severity":2,"message":"1277","line":161,"column":8,"nodeType":null,"endLine":161,"endColumn":9,"fix":"2208"},{"ruleId":"1266","severity":2,"message":"1277","line":179,"column":42,"nodeType":null,"endLine":179,"endColumn":43,"fix":"2209"},{"ruleId":"1266","severity":2,"message":"1277","line":180,"column":8,"nodeType":null,"endLine":180,"endColumn":9,"fix":"2210"},{"ruleId":"1266","severity":2,"message":"1277","line":192,"column":42,"nodeType":null,"endLine":192,"endColumn":43,"fix":"2211"},{"ruleId":"1266","severity":2,"message":"2212","line":197,"column":45,"nodeType":null,"endLine":197,"endColumn":91,"fix":"2213"},{"ruleId":"1266","severity":2,"message":"2214","line":198,"column":43,"nodeType":null,"endLine":198,"endColumn":87,"fix":"2215"},{"ruleId":"1266","severity":2,"message":"2216","line":201,"column":34,"nodeType":null,"endLine":201,"endColumn":55,"fix":"2217"},{"ruleId":"1266","severity":2,"message":"2216","line":205,"column":31,"nodeType":null,"endLine":205,"endColumn":52,"fix":"2218"},{"ruleId":"1266","severity":2,"message":"1413","line":229,"column":60,"nodeType":null,"endLine":229,"endColumn":61,"fix":"2219"},{"ruleId":"1266","severity":2,"message":"2220","line":230,"column":40,"nodeType":null,"endLine":230,"endColumn":103,"fix":"2221"},{"ruleId":"1266","severity":2,"message":"2222","line":232,"column":36,"nodeType":null,"endLine":232,"endColumn":99,"fix":"2223"},{"ruleId":"1266","severity":2,"message":"2224","line":233,"column":1,"nodeType":null,"endLine":233,"endColumn":111,"fix":"2225"},{"ruleId":"1266","severity":2,"message":"2226","line":240,"column":57,"nodeType":null,"endLine":240,"endColumn":119,"fix":"2227"},{"ruleId":"1266","severity":2,"message":"2228","line":241,"column":37,"nodeType":null,"endLine":241,"endColumn":68,"fix":"2229"},{"ruleId":"1266","severity":2,"message":"2230","line":242,"column":31,"nodeType":null,"endLine":242,"endColumn":56,"fix":"2231"},{"ruleId":"1266","severity":2,"message":"2232","line":243,"column":40,"nodeType":null,"endLine":243,"endColumn":74,"fix":"2233"},{"ruleId":"1266","severity":2,"message":"2234","line":244,"column":46,"nodeType":null,"endLine":244,"endColumn":86,"fix":"2235"},{"ruleId":"1266","severity":2,"message":"2236","line":245,"column":43,"nodeType":null,"endLine":245,"endColumn":80,"fix":"2237"},{"ruleId":"1266","severity":2,"message":"2238","line":247,"column":43,"nodeType":null,"endLine":247,"endColumn":73,"fix":"2239"},{"ruleId":"1266","severity":2,"message":"2240","line":249,"column":29,"nodeType":null,"endLine":249,"endColumn":52,"fix":"2241"},{"ruleId":"1266","severity":2,"message":"2242","line":250,"column":31,"nodeType":null,"endLine":250,"endColumn":56,"fix":"2243"},{"ruleId":"1266","severity":2,"message":"2244","line":252,"column":37,"nodeType":null,"endLine":252,"endColumn":68,"fix":"2245"},{"ruleId":"1266","severity":2,"message":"2246","line":253,"column":48,"nodeType":null,"endLine":253,"endColumn":99,"fix":"2247"},{"ruleId":"1266","severity":2,"message":"2248","line":265,"column":20,"nodeType":null,"endLine":265,"endColumn":97,"fix":"2249"},{"ruleId":"1266","severity":2,"message":"2248","line":271,"column":20,"nodeType":null,"endLine":271,"endColumn":97,"fix":"2250"},{"ruleId":"1266","severity":2,"message":"2248","line":277,"column":20,"nodeType":null,"endLine":277,"endColumn":97,"fix":"2251"},{"ruleId":"1266","severity":2,"message":"2252","line":293,"column":20,"nodeType":null,"endLine":293,"endColumn":93,"fix":"2253"},{"ruleId":"1266","severity":2,"message":"2254","line":310,"column":20,"nodeType":null,"endLine":310,"endColumn":97,"fix":"2255"},{"ruleId":"1266","severity":2,"message":"2256","line":315,"column":52,"nodeType":null,"endLine":315,"endColumn":62,"fix":"2257"},{"ruleId":"1266","severity":2,"message":"2252","line":321,"column":20,"nodeType":null,"endLine":321,"endColumn":93,"fix":"2258"},{"ruleId":"1266","severity":2,"message":"2259","line":334,"column":20,"nodeType":null,"endLine":334,"endColumn":94,"fix":"2260"},{"ruleId":"1266","severity":2,"message":"2259","line":341,"column":20,"nodeType":null,"endLine":341,"endColumn":94,"fix":"2261"},{"ruleId":"1266","severity":2,"message":"2259","line":348,"column":20,"nodeType":null,"endLine":348,"endColumn":94,"fix":"2262"},{"ruleId":"1266","severity":2,"message":"1277","line":362,"column":54,"nodeType":null,"endLine":362,"endColumn":55,"fix":"2263"},{"ruleId":"1266","severity":2,"message":"1277","line":369,"column":54,"nodeType":null,"endLine":369,"endColumn":55,"fix":"2264"},{"ruleId":"1266","severity":2,"message":"2265","line":376,"column":20,"nodeType":null,"endLine":376,"endColumn":20,"fix":"2266"},{"ruleId":"1266","severity":2,"message":"2267","line":381,"column":37,"nodeType":null,"endLine":381,"endColumn":93,"fix":"2268"},{"ruleId":"1266","severity":2,"message":"2267","line":385,"column":39,"nodeType":null,"endLine":385,"endColumn":95,"fix":"2269"},{"ruleId":"1266","severity":2,"message":"2270","line":398,"column":20,"nodeType":null,"endLine":398,"endColumn":30,"fix":"2271"},{"ruleId":"1266","severity":2,"message":"2270","line":404,"column":20,"nodeType":null,"endLine":404,"endColumn":30,"fix":"2272"},{"ruleId":"1266","severity":2,"message":"1277","line":411,"column":34,"nodeType":null,"endLine":411,"endColumn":35,"fix":"2273"},{"ruleId":"1266","severity":2,"message":"1277","line":419,"column":38,"nodeType":null,"endLine":419,"endColumn":39,"fix":"2274"},{"ruleId":"1266","severity":2,"message":"1277","line":420,"column":8,"nodeType":null,"endLine":420,"endColumn":9,"fix":"2275"},{"ruleId":"1266","severity":2,"message":"2276","line":424,"column":38,"nodeType":null,"endLine":424,"endColumn":100,"fix":"2277"},{"ruleId":"1266","severity":2,"message":"1277","line":429,"column":44,"nodeType":null,"endLine":429,"endColumn":45,"fix":"2278"},{"ruleId":"1266","severity":2,"message":"1277","line":430,"column":8,"nodeType":null,"endLine":430,"endColumn":9,"fix":"2279"},{"ruleId":"1266","severity":2,"message":"1277","line":438,"column":17,"nodeType":null,"endLine":438,"endColumn":18,"fix":"2280"},{"ruleId":"1266","severity":2,"message":"1277","line":439,"column":8,"nodeType":null,"endLine":439,"endColumn":9,"fix":"2281"},{"ruleId":"1266","severity":2,"message":"1277","line":447,"column":17,"nodeType":null,"endLine":447,"endColumn":18,"fix":"2282"},{"ruleId":"1266","severity":2,"message":"1277","line":448,"column":8,"nodeType":null,"endLine":448,"endColumn":9,"fix":"2283"},{"ruleId":"1266","severity":2,"message":"2284","line":452,"column":34,"nodeType":null,"endLine":452,"endColumn":80,"fix":"2285"},{"ruleId":"1266","severity":2,"message":"1277","line":457,"column":21,"nodeType":null,"endLine":457,"endColumn":22,"fix":"2286"},{"ruleId":"1266","severity":2,"message":"1277","line":458,"column":8,"nodeType":null,"endLine":458,"endColumn":9,"fix":"2287"},{"ruleId":"1266","severity":2,"message":"1277","line":466,"column":34,"nodeType":null,"endLine":466,"endColumn":35,"fix":"2288"},{"ruleId":"1266","severity":2,"message":"1277","line":474,"column":34,"nodeType":null,"endLine":474,"endColumn":35,"fix":"2289"},{"ruleId":"1266","severity":2,"message":"1277","line":482,"column":34,"nodeType":null,"endLine":482,"endColumn":35,"fix":"2290"},{"ruleId":"1266","severity":2,"message":"1277","line":489,"column":34,"nodeType":null,"endLine":489,"endColumn":35,"fix":"2291"},{"ruleId":"1266","severity":2,"message":"1277","line":496,"column":34,"nodeType":null,"endLine":496,"endColumn":35,"fix":"2292"},{"ruleId":"1266","severity":2,"message":"1277","line":503,"column":34,"nodeType":null,"endLine":503,"endColumn":35,"fix":"2293"},{"ruleId":"1266","severity":2,"message":"2294","line":510,"column":19,"nodeType":null,"endLine":510,"endColumn":35,"fix":"2295"},{"ruleId":"1266","severity":2,"message":"2296","line":514,"column":42,"nodeType":null,"endLine":514,"endColumn":98,"fix":"2297"},{"ruleId":"1266","severity":2,"message":"2298","line":517,"column":19,"nodeType":null,"endLine":517,"endColumn":49,"fix":"2299"},{"ruleId":"1266","severity":2,"message":"1277","line":518,"column":34,"nodeType":null,"endLine":518,"endColumn":35,"fix":"2300"},{"ruleId":"1266","severity":2,"message":"1279","line":71,"column":47,"nodeType":null},{"ruleId":"1266","severity":2,"message":"1514","line":5,"column":33,"nodeType":null,"endLine":6,"endColumn":1,"fix":"2301"},{"ruleId":"1266","severity":2,"message":"2302","line":19,"column":57,"nodeType":null,"endLine":19,"endColumn":85,"fix":"2303"},{"ruleId":"1266","severity":2,"message":"1277","line":27,"column":10,"nodeType":null,"endLine":27,"endColumn":11,"fix":"2304"},{"ruleId":"1266","severity":2,"message":"2305","line":65,"column":11,"nodeType":null,"endLine":65,"endColumn":51,"fix":"2306"},{"ruleId":"1266","severity":2,"message":"2307","line":16,"column":31,"nodeType":null,"endLine":16,"endColumn":62,"fix":"2308"},{"ruleId":"1266","severity":2,"message":"2309","line":22,"column":25,"nodeType":null,"endLine":22,"endColumn":123,"fix":"2310"},{"ruleId":"1266","severity":2,"message":"1660","line":26,"column":23,"nodeType":null,"endLine":26,"endColumn":31,"fix":"2311"},{"ruleId":"1266","severity":2,"message":"2312","line":34,"column":32,"nodeType":null,"endLine":34,"endColumn":57,"fix":"2313"},{"ruleId":"1266","severity":2,"message":"1660","line":39,"column":23,"nodeType":null,"endLine":39,"endColumn":31,"fix":"2314"},{"ruleId":"1266","severity":2,"message":"2315","line":43,"column":13,"nodeType":null,"endLine":43,"endColumn":52,"fix":"2316"},{"ruleId":"1266","severity":2,"message":"1287","line":50,"column":21,"nodeType":null,"endLine":50,"endColumn":29,"fix":"2317"},{"ruleId":"1266","severity":2,"message":"2318","line":52,"column":29,"nodeType":null,"endLine":52,"endColumn":36,"fix":"2319"},{"ruleId":"1266","severity":2,"message":"1287","line":62,"column":21,"nodeType":null,"endLine":62,"endColumn":29,"fix":"2320"},{"ruleId":"1266","severity":2,"message":"2321","line":10,"column":17,"nodeType":null,"endLine":10,"endColumn":18,"fix":"2322"},{"ruleId":"1266","severity":2,"message":"2323","line":15,"column":19,"nodeType":null,"endLine":16,"endColumn":35,"fix":"2324"},{"ruleId":"1266","severity":2,"message":"2325","line":5,"column":3,"nodeType":null,"endLine":7,"endColumn":17,"fix":"2326"},{"ruleId":"1266","severity":2,"message":"2327","line":8,"column":3,"nodeType":null,"endLine":8,"endColumn":15,"fix":"2328"},{"ruleId":"1266","severity":2,"message":"2329","line":9,"column":3,"nodeType":null,"endLine":16,"endColumn":10,"fix":"2330"},{"ruleId":"1266","severity":2,"message":"2331","line":17,"column":2,"nodeType":null,"endLine":17,"endColumn":16,"fix":"2332"},{"ruleId":"1266","severity":2,"message":"2333","line":18,"column":2,"nodeType":null,"endLine":23,"endColumn":20,"fix":"2334"},{"ruleId":"1266","severity":2,"message":"2335","line":24,"column":3,"nodeType":null,"endLine":26,"endColumn":2,"fix":"2336"},{"ruleId":"1266","severity":2,"message":"2265","line":31,"column":19,"nodeType":null,"endLine":31,"endColumn":19,"fix":"2337"},{"ruleId":"1266","severity":2,"message":"2265","line":32,"column":21,"nodeType":null,"endLine":32,"endColumn":21,"fix":"2338"},{"ruleId":"1266","severity":2,"message":"2265","line":33,"column":25,"nodeType":null,"endLine":33,"endColumn":25,"fix":"2339"},{"ruleId":"1266","severity":2,"message":"2265","line":34,"column":23,"nodeType":null,"endLine":34,"endColumn":23,"fix":"2340"},{"ruleId":"1266","severity":2,"message":"2265","line":35,"column":25,"nodeType":null,"endLine":35,"endColumn":25,"fix":"2341"},{"ruleId":"1266","severity":2,"message":"2265","line":36,"column":24,"nodeType":null,"endLine":36,"endColumn":24,"fix":"2342"},{"ruleId":"1266","severity":2,"message":"2265","line":37,"column":19,"nodeType":null,"endLine":37,"endColumn":19,"fix":"2343"},{"ruleId":"1266","severity":2,"message":"2265","line":38,"column":24,"nodeType":null,"endLine":38,"endColumn":24,"fix":"2344"},{"ruleId":"1266","severity":2,"message":"2265","line":39,"column":25,"nodeType":null,"endLine":39,"endColumn":25,"fix":"2345"},{"ruleId":"1266","severity":2,"message":"2265","line":40,"column":22,"nodeType":null,"endLine":40,"endColumn":22,"fix":"2346"},{"ruleId":"1266","severity":2,"message":"2265","line":41,"column":25,"nodeType":null,"endLine":41,"endColumn":25,"fix":"2347"},{"ruleId":"1266","severity":2,"message":"2265","line":42,"column":18,"nodeType":null,"endLine":42,"endColumn":18,"fix":"2348"},{"ruleId":"1266","severity":2,"message":"2265","line":43,"column":24,"nodeType":null,"endLine":43,"endColumn":24,"fix":"2349"},{"ruleId":"1266","severity":2,"message":"2265","line":44,"column":22,"nodeType":null,"endLine":44,"endColumn":22,"fix":"2350"},{"ruleId":"1266","severity":2,"message":"2265","line":45,"column":24,"nodeType":null,"endLine":45,"endColumn":24,"fix":"2351"},{"ruleId":"1266","severity":2,"message":"2265","line":46,"column":21,"nodeType":null,"endLine":46,"endColumn":21,"fix":"2352"},{"ruleId":"1266","severity":2,"message":"2265","line":47,"column":27,"nodeType":null,"endLine":47,"endColumn":27,"fix":"2353"},{"ruleId":"1266","severity":2,"message":"2265","line":48,"column":24,"nodeType":null,"endLine":48,"endColumn":24,"fix":"2354"},{"ruleId":"1266","severity":2,"message":"2265","line":49,"column":28,"nodeType":null,"endLine":49,"endColumn":28,"fix":"2355"},{"ruleId":"1266","severity":2,"message":"2265","line":50,"column":22,"nodeType":null,"endLine":50,"endColumn":22,"fix":"2356"},{"ruleId":"1266","severity":2,"message":"2265","line":51,"column":24,"nodeType":null,"endLine":51,"endColumn":24,"fix":"2357"},{"ruleId":"1266","severity":2,"message":"2265","line":52,"column":22,"nodeType":null,"endLine":52,"endColumn":22,"fix":"2358"},{"ruleId":"1266","severity":2,"message":"2359","line":56,"column":35,"nodeType":null,"endLine":56,"endColumn":89,"fix":"2360"},{"ruleId":"1266","severity":2,"message":"2361","line":58,"column":37,"nodeType":null,"endLine":58,"endColumn":94,"fix":"2362"},{"ruleId":"1266","severity":2,"message":"2363","line":59,"column":40,"nodeType":null,"endLine":59,"endColumn":104,"fix":"2364"},{"ruleId":"1266","severity":2,"message":"2365","line":60,"column":42,"nodeType":null,"endLine":60,"endColumn":110,"fix":"2366"},{"ruleId":"1266","severity":2,"message":"2367","line":61,"column":39,"nodeType":null,"endLine":61,"endColumn":101,"fix":"2368"},{"ruleId":"1266","severity":2,"message":"2369","line":62,"column":37,"nodeType":null,"endLine":62,"endColumn":95,"fix":"2370"},{"ruleId":"1266","severity":2,"message":"2371","line":63,"column":38,"nodeType":null,"endLine":63,"endColumn":98,"fix":"2372"},{"ruleId":"1266","severity":2,"message":"2373","line":64,"column":42,"nodeType":null,"endLine":64,"endColumn":110,"fix":"2374"},{"ruleId":"1266","severity":2,"message":"2375","line":65,"column":39,"nodeType":null,"endLine":65,"endColumn":100,"fix":"2376"},{"ruleId":"1266","severity":2,"message":"2377","line":66,"column":39,"nodeType":null,"endLine":66,"endColumn":100,"fix":"2378"},{"ruleId":"1266","severity":2,"message":"2379","line":81,"column":37,"nodeType":null,"endLine":81,"endColumn":60,"fix":"2380"},{"ruleId":"1266","severity":2,"message":"2381","line":82,"column":40,"nodeType":null,"endLine":82,"endColumn":67,"fix":"2382"},{"ruleId":"1266","severity":2,"message":"2383","line":83,"column":42,"nodeType":null,"endLine":83,"endColumn":78,"fix":"2384"},{"ruleId":"1266","severity":2,"message":"2385","line":84,"column":39,"nodeType":null,"endLine":84,"endColumn":72,"fix":"2386"},{"ruleId":"1266","severity":2,"message":"2387","line":85,"column":37,"nodeType":null,"endLine":85,"endColumn":65,"fix":"2388"},{"ruleId":"1266","severity":2,"message":"2389","line":86,"column":38,"nodeType":null,"endLine":86,"endColumn":70,"fix":"2390"},{"ruleId":"1266","severity":2,"message":"2391","line":87,"column":39,"nodeType":null,"endLine":87,"endColumn":68,"fix":"2392"},{"ruleId":"1266","severity":2,"message":"2393","line":88,"column":42,"nodeType":null,"endLine":88,"endColumn":75,"fix":"2394"},{"ruleId":"1266","severity":2,"message":"2395","line":89,"column":39,"nodeType":null,"endLine":89,"endColumn":68,"fix":"2396"},{"ruleId":"1266","severity":2,"message":"2265","line":90,"column":15,"nodeType":null,"endLine":90,"endColumn":15,"fix":"2397"},{"ruleId":"1266","severity":2,"message":"2398","line":94,"column":9,"nodeType":null,"endLine":94,"endColumn":98,"fix":"2399"},{"ruleId":"1266","severity":2,"message":"2400","line":99,"column":32,"nodeType":null,"endLine":99,"endColumn":38,"fix":"2401"},{"ruleId":"1266","severity":2,"message":"2402","line":134,"column":20,"nodeType":null,"endLine":134,"endColumn":37,"fix":"2403"},{"ruleId":"1266","severity":2,"message":"1277","line":148,"column":59,"nodeType":null,"endLine":148,"endColumn":60,"fix":"2404"},{"ruleId":"1266","severity":2,"message":"2405","line":153,"column":19,"nodeType":null,"endLine":153,"endColumn":70,"fix":"2406"},{"ruleId":"1266","severity":2,"message":"1277","line":178,"column":59,"nodeType":null,"endLine":178,"endColumn":60,"fix":"2407"},{"ruleId":"1266","severity":2,"message":"2405","line":183,"column":19,"nodeType":null,"endLine":183,"endColumn":70,"fix":"2408"},{"ruleId":"1266","severity":2,"message":"2409","line":2,"column":9,"nodeType":null,"endLine":6,"endColumn":1,"fix":"2410"},{"ruleId":"1266","severity":2,"message":"2409","line":2,"column":9,"nodeType":null,"endLine":6,"endColumn":1,"fix":"2411"},{"ruleId":"1266","severity":2,"message":"2409","line":2,"column":9,"nodeType":null,"endLine":6,"endColumn":1,"fix":"2412"},{"ruleId":"1266","severity":2,"message":"2413","line":13,"column":31,"nodeType":null,"endLine":13,"endColumn":88,"fix":"2414"},{"ruleId":"1266","severity":2,"message":"2409","line":2,"column":9,"nodeType":null,"endLine":6,"endColumn":1,"fix":"2415"},{"ruleId":"1266","severity":2,"message":"2409","line":3,"column":9,"nodeType":null,"endLine":7,"endColumn":1,"fix":"2416"},{"ruleId":"1266","severity":2,"message":"1277","line":22,"column":60,"nodeType":null,"endLine":22,"endColumn":61,"fix":"2417"},{"ruleId":"1266","severity":2,"message":"2409","line":2,"column":9,"nodeType":null,"endLine":6,"endColumn":1,"fix":"2418"},{"ruleId":"1266","severity":2,"message":"2419","line":8,"column":65,"nodeType":null,"endLine":8,"endColumn":65,"fix":"2420"},{"ruleId":"1266","severity":2,"message":"1277","line":18,"column":59,"nodeType":null,"endLine":18,"endColumn":60,"fix":"2421"},{"ruleId":"1266","severity":2,"message":"2409","line":2,"column":9,"nodeType":null,"endLine":6,"endColumn":1,"fix":"2422"},{"ruleId":"1266","severity":2,"message":"2419","line":8,"column":69,"nodeType":null,"endLine":8,"endColumn":69,"fix":"2423"},{"ruleId":"1266","severity":2,"message":"2409","line":3,"column":9,"nodeType":null,"endLine":7,"endColumn":1,"fix":"2424"},{"ruleId":"1266","severity":2,"message":"1277","line":21,"column":60,"nodeType":null,"endLine":21,"endColumn":61,"fix":"2425"},{"ruleId":"1266","severity":2,"message":"2409","line":4,"column":9,"nodeType":null,"endLine":8,"endColumn":1,"fix":"2426"},{"ruleId":"1266","severity":2,"message":"2427","line":10,"column":46,"nodeType":null,"endLine":10,"endColumn":87,"fix":"2428"},{"ruleId":"1266","severity":2,"message":"1277","line":17,"column":60,"nodeType":null,"endLine":17,"endColumn":61,"fix":"2429"},{"ruleId":"1266","severity":2,"message":"2430","line":1,"column":9,"nodeType":null,"endLine":3,"endColumn":1,"fix":"2431"},{"ruleId":"1266","severity":2,"message":"2432","line":4,"column":9,"nodeType":null,"endLine":4,"endColumn":69,"fix":"2433"},{"ruleId":"1266","severity":2,"message":"2434","line":17,"column":17,"nodeType":null,"endLine":17,"endColumn":17,"fix":"2435"},{"ruleId":"1266","severity":2,"message":"2434","line":18,"column":19,"nodeType":null,"endLine":18,"endColumn":19,"fix":"2436"},{"ruleId":"1266","severity":2,"message":"2434","line":19,"column":23,"nodeType":null,"endLine":19,"endColumn":23,"fix":"2437"},{"ruleId":"1266","severity":2,"message":"2434","line":20,"column":21,"nodeType":null,"endLine":20,"endColumn":21,"fix":"2438"},{"ruleId":"1266","severity":2,"message":"2434","line":21,"column":23,"nodeType":null,"endLine":21,"endColumn":23,"fix":"2439"},{"ruleId":"1266","severity":2,"message":"2434","line":22,"column":22,"nodeType":null,"endLine":22,"endColumn":22,"fix":"2440"},{"ruleId":"1266","severity":2,"message":"2434","line":23,"column":17,"nodeType":null,"endLine":23,"endColumn":17,"fix":"2441"},{"ruleId":"1266","severity":2,"message":"2434","line":24,"column":22,"nodeType":null,"endLine":24,"endColumn":22,"fix":"2442"},{"ruleId":"1266","severity":2,"message":"2434","line":25,"column":23,"nodeType":null,"endLine":25,"endColumn":23,"fix":"2443"},{"ruleId":"1266","severity":2,"message":"2434","line":26,"column":20,"nodeType":null,"endLine":26,"endColumn":20,"fix":"2444"},{"ruleId":"1266","severity":2,"message":"2445","line":30,"column":1,"nodeType":null,"endLine":30,"endColumn":9,"fix":"2446"},{"ruleId":"1266","severity":2,"message":"1309","line":31,"column":1,"nodeType":null,"endLine":31,"endColumn":3,"fix":"2447"},{"ruleId":"1266","severity":2,"message":"1309","line":32,"column":7,"nodeType":null,"endLine":32,"endColumn":9,"fix":"2448"},{"ruleId":"1266","severity":2,"message":"1478","line":33,"column":1,"nodeType":null,"endLine":33,"endColumn":11,"fix":"2449"},{"ruleId":"1266","severity":2,"message":"1309","line":34,"column":1,"nodeType":null,"endLine":34,"endColumn":3,"fix":"2450"},{"ruleId":"1266","severity":2,"message":"1309","line":35,"column":9,"nodeType":null,"endLine":35,"endColumn":11,"fix":"2451"},{"ruleId":"1266","severity":2,"message":"1478","line":36,"column":1,"nodeType":null,"endLine":36,"endColumn":11,"fix":"2452"},{"ruleId":"1266","severity":2,"message":"1309","line":37,"column":7,"nodeType":null,"endLine":37,"endColumn":9,"fix":"2453"},{"ruleId":"1266","severity":2,"message":"1309","line":38,"column":1,"nodeType":null,"endLine":38,"endColumn":3,"fix":"2454"},{"ruleId":"1266","severity":2,"message":"1277","line":8,"column":20,"nodeType":null,"endLine":8,"endColumn":21,"fix":"2455"},{"ruleId":"1266","severity":2,"message":"2456","line":10,"column":9,"nodeType":null,"endLine":10,"endColumn":104,"fix":"2457"},{"ruleId":"1266","severity":2,"message":"2458","line":11,"column":9,"nodeType":null,"endLine":11,"endColumn":53,"fix":"2459"},{"ruleId":"1266","severity":2,"message":"2460","line":12,"column":9,"nodeType":null,"endLine":12,"endColumn":57,"fix":"2461"},{"ruleId":"1266","severity":2,"message":"2462","line":13,"column":9,"nodeType":null,"endLine":13,"endColumn":55,"fix":"2463"},{"ruleId":"1266","severity":2,"message":"2464","line":15,"column":9,"nodeType":null,"endLine":15,"endColumn":57,"fix":"2465"},{"ruleId":"1266","severity":2,"message":"2466","line":17,"column":9,"nodeType":null,"endLine":17,"endColumn":57,"fix":"2467"},{"ruleId":"1266","severity":2,"message":"2468","line":19,"column":9,"nodeType":null,"endLine":19,"endColumn":71,"fix":"2469"},{"ruleId":"1266","severity":2,"message":"2470","line":21,"column":9,"nodeType":null,"endLine":24,"endColumn":1,"fix":"2471"},{"ruleId":"1266","severity":2,"message":"2472","line":52,"column":39,"nodeType":null,"endLine":52,"endColumn":61,"fix":"2473"},{"ruleId":"1266","severity":2,"message":"2474","line":53,"column":31,"nodeType":null,"endLine":53,"endColumn":122,"fix":"2475"},{"ruleId":"1266","severity":2,"message":"1277","line":57,"column":27,"nodeType":null,"endLine":57,"endColumn":28,"fix":"2476"},{"ruleId":"1266","severity":2,"message":"1277","line":67,"column":39,"nodeType":null,"endLine":67,"endColumn":40,"fix":"2477"},{"ruleId":"1266","severity":2,"message":"2478","line":71,"column":39,"nodeType":null,"endLine":71,"endColumn":61,"fix":"2479"},{"ruleId":"1266","severity":2,"message":"2480","line":73,"column":36,"nodeType":null,"endLine":76,"endColumn":9,"fix":"2481"},{"ruleId":"1266","severity":2,"message":"1413","line":78,"column":27,"nodeType":null,"endLine":78,"endColumn":28,"fix":"2482"},{"ruleId":"1266","severity":2,"message":"1413","line":79,"column":27,"nodeType":null,"endLine":79,"endColumn":28,"fix":"2483"},{"ruleId":"1266","severity":2,"message":"2484","line":97,"column":62,"nodeType":null,"endLine":97,"endColumn":107,"fix":"2485"},{"ruleId":"1266","severity":2,"message":"1315","line":98,"column":1,"nodeType":null,"endLine":98,"endColumn":1,"fix":"2486"},{"ruleId":"1266","severity":2,"message":"2197","line":99,"column":1,"nodeType":null,"endLine":99,"endColumn":11,"fix":"2487"},{"ruleId":"1266","severity":2,"message":"2478","line":102,"column":39,"nodeType":null,"endLine":102,"endColumn":61,"fix":"2488"},{"ruleId":"1266","severity":2,"message":"2489","line":104,"column":36,"nodeType":null,"endLine":106,"endColumn":9,"fix":"2490"},{"ruleId":"1266","severity":2,"message":"2491","line":107,"column":34,"nodeType":null,"endLine":109,"endColumn":9,"fix":"2492"},{"ruleId":"1266","severity":2,"message":"2493","line":112,"column":39,"nodeType":null,"endLine":112,"endColumn":61,"fix":"2494"},{"ruleId":"1266","severity":2,"message":"2495","line":114,"column":36,"nodeType":null,"endLine":116,"endColumn":9,"fix":"2496"},{"ruleId":"1266","severity":2,"message":"2491","line":117,"column":34,"nodeType":null,"endLine":119,"endColumn":9,"fix":"2497"},{"ruleId":"1266","severity":2,"message":"2498","line":122,"column":39,"nodeType":null,"endLine":122,"endColumn":62,"fix":"2499"},{"ruleId":"1266","severity":2,"message":"2500","line":123,"column":31,"nodeType":null,"endLine":123,"endColumn":92,"fix":"2501"},{"ruleId":"1266","severity":2,"message":"2502","line":124,"column":36,"nodeType":null,"endLine":126,"endColumn":9,"fix":"2503"},{"ruleId":"1266","severity":2,"message":"1277","line":131,"column":42,"nodeType":null,"endLine":131,"endColumn":43,"fix":"2504"},{"ruleId":"1266","severity":2,"message":"2491","line":137,"column":34,"nodeType":null,"endLine":139,"endColumn":9,"fix":"2505"},{"ruleId":"1266","severity":2,"message":"2506","line":142,"column":40,"nodeType":null,"endLine":142,"endColumn":87,"fix":"2507"},{"ruleId":"1266","severity":2,"message":"2508","line":144,"column":7,"nodeType":null,"endLine":145,"endColumn":6,"fix":"2509"},{"ruleId":"1266","severity":2,"message":"1712","line":188,"column":27,"nodeType":null,"endLine":188,"endColumn":38,"fix":"2510"},{"ruleId":"1266","severity":2,"message":"1277","line":203,"column":25,"nodeType":null,"endLine":203,"endColumn":26,"fix":"2511"},{"ruleId":"1266","severity":2,"message":"2512","line":205,"column":43,"nodeType":null,"endLine":205,"endColumn":56,"fix":"2513"},{"ruleId":"1266","severity":2,"message":"2514","line":216,"column":17,"nodeType":null,"endLine":216,"endColumn":96,"fix":"2515"},{"ruleId":"1266","severity":2,"message":"2516","line":222,"column":26,"nodeType":null,"endLine":222,"endColumn":38,"fix":"2517"},{"ruleId":"1266","severity":2,"message":"2518","line":226,"column":28,"nodeType":null,"endLine":226,"endColumn":83,"fix":"2519"},{"ruleId":"1266","severity":2,"message":"2520","line":230,"column":25,"nodeType":null,"endLine":230,"endColumn":65,"fix":"2521"},{"ruleId":"1266","severity":2,"message":"2522","line":231,"column":25,"nodeType":null,"endLine":231,"endColumn":70,"fix":"2523"},{"ruleId":"1266","severity":2,"message":"2524","line":232,"column":25,"nodeType":null,"endLine":232,"endColumn":72,"fix":"2525"},{"ruleId":"1266","severity":2,"message":"2526","line":233,"column":26,"nodeType":null,"endLine":233,"endColumn":69,"fix":"2527"},{"ruleId":"1266","severity":2,"message":"2528","line":234,"column":23,"nodeType":null,"endLine":234,"endColumn":65,"fix":"2529"},{"ruleId":"1266","severity":2,"message":"2530","line":246,"column":26,"nodeType":null,"endLine":246,"endColumn":98,"fix":"2531"},{"ruleId":"1266","severity":2,"message":"2532","line":250,"column":32,"nodeType":null,"endLine":250,"endColumn":106,"fix":"2533"},{"ruleId":"1266","severity":2,"message":"2534","line":254,"column":29,"nodeType":null,"endLine":254,"endColumn":107,"fix":"2535"},{"ruleId":"1266","severity":2,"message":"1712","line":263,"column":27,"nodeType":null,"endLine":263,"endColumn":38,"fix":"2536"},{"ruleId":"1266","severity":2,"message":"2537","line":266,"column":36,"nodeType":null,"endLine":266,"endColumn":36,"fix":"2538"},{"ruleId":"1266","severity":2,"message":"2539","line":270,"column":32,"nodeType":null,"endLine":270,"endColumn":79,"fix":"2540"},{"ruleId":"1266","severity":2,"message":"2541","line":278,"column":31,"nodeType":null,"endLine":278,"endColumn":80,"fix":"2542"},{"ruleId":"1266","severity":2,"message":"2543","line":282,"column":29,"nodeType":null,"endLine":282,"endColumn":82,"fix":"2544"},{"ruleId":"1266","severity":2,"message":"2545","line":294,"column":34,"nodeType":null,"endLine":294,"endColumn":79,"fix":"2546"},{"ruleId":"1266","severity":2,"message":"2547","line":302,"column":35,"nodeType":null,"endLine":302,"endColumn":82,"fix":"2548"},{"ruleId":"1266","severity":2,"message":"1712","line":323,"column":27,"nodeType":null,"endLine":323,"endColumn":38,"fix":"2549"},{"ruleId":"1266","severity":2,"message":"2530","line":327,"column":26,"nodeType":null,"endLine":327,"endColumn":98,"fix":"2550"},{"ruleId":"1266","severity":2,"message":"2551","line":331,"column":32,"nodeType":null,"endLine":331,"endColumn":114,"fix":"2552"},{"ruleId":"1266","severity":2,"message":"2553","line":335,"column":32,"nodeType":null,"endLine":335,"endColumn":128,"fix":"2554"},{"ruleId":"1266","severity":2,"message":"1277","line":4,"column":7,"nodeType":null,"endLine":4,"endColumn":8,"fix":"2555"},{"ruleId":"1266","severity":2,"message":"1277","line":12,"column":15,"nodeType":null,"endLine":12,"endColumn":16,"fix":"2556"},{"ruleId":"1266","severity":2,"message":"1277","line":19,"column":63,"nodeType":null,"endLine":19,"endColumn":64,"fix":"2557"},{"ruleId":"1266","severity":2,"message":"1277","line":20,"column":6,"nodeType":null,"endLine":20,"endColumn":7,"fix":"2558"},{"ruleId":"1266","severity":2,"message":"1277","line":33,"column":27,"nodeType":null,"endLine":33,"endColumn":28,"fix":"2559"},{"ruleId":"1266","severity":2,"message":"1277","line":54,"column":67,"nodeType":null,"endLine":54,"endColumn":68,"fix":"2560"},{"ruleId":"1266","severity":2,"message":"2561","line":68,"column":11,"nodeType":null,"endLine":68,"endColumn":25,"fix":"2562"},{"ruleId":"1266","severity":2,"message":"1277","line":82,"column":78,"nodeType":null,"endLine":82,"endColumn":79,"fix":"2563"},{"ruleId":"1266","severity":2,"message":"2564","line":104,"column":11,"nodeType":null,"endLine":104,"endColumn":19,"fix":"2565"},{"ruleId":"1266","severity":2,"message":"2566","line":112,"column":11,"nodeType":null,"endLine":112,"endColumn":21,"fix":"2567"},{"ruleId":"1266","severity":2,"message":"2568","line":120,"column":43,"nodeType":null,"endLine":120,"endColumn":58,"fix":"2569"},{"ruleId":"1266","severity":2,"message":"1277","line":132,"column":72,"nodeType":null,"endLine":132,"endColumn":73,"fix":"2570"},{"ruleId":"1266","severity":2,"message":"2561","line":139,"column":40,"nodeType":null,"endLine":139,"endColumn":54,"fix":"2571"},{"ruleId":"1266","severity":2,"message":"1279","line":10,"column":24,"nodeType":null},{"ruleId":"1266","severity":2,"message":"2572","line":8,"column":33,"nodeType":null,"endLine":8,"endColumn":78,"fix":"2573"},{"ruleId":"1266","severity":2,"message":"2574","line":9,"column":21,"nodeType":null,"endLine":10,"endColumn":4,"fix":"2575"},{"ruleId":"1266","severity":2,"message":"2576","line":13,"column":22,"nodeType":null,"endLine":13,"endColumn":96,"fix":"2577"},{"ruleId":"1266","severity":2,"message":"1429","line":16,"column":2,"nodeType":null,"endLine":16,"endColumn":2,"fix":"2578"},{"ruleId":"1266","severity":2,"message":"2574","line":19,"column":18,"nodeType":null,"endLine":20,"endColumn":4,"fix":"2579"},{"ruleId":"1266","severity":2,"message":"2580","line":23,"column":22,"nodeType":null,"endLine":23,"endColumn":84,"fix":"2581"},{"ruleId":"1266","severity":2,"message":"1429","line":26,"column":2,"nodeType":null,"endLine":26,"endColumn":2,"fix":"2582"},{"ruleId":"1266","severity":2,"message":"2574","line":29,"column":15,"nodeType":null,"endLine":30,"endColumn":4,"fix":"2583"},{"ruleId":"1266","severity":2,"message":"1429","line":36,"column":2,"nodeType":null,"endLine":36,"endColumn":2,"fix":"2584"},{"ruleId":"1266","severity":2,"message":"2574","line":39,"column":15,"nodeType":null,"endLine":40,"endColumn":4,"fix":"2585"},{"ruleId":"1266","severity":2,"message":"1429","line":46,"column":2,"nodeType":null,"endLine":46,"endColumn":2,"fix":"2586"},{"ruleId":"1266","severity":2,"message":"2587","line":48,"column":29,"nodeType":null,"endLine":48,"endColumn":78,"fix":"2588"},{"ruleId":"1266","severity":2,"message":"2574","line":49,"column":45,"nodeType":null,"endLine":50,"endColumn":4,"fix":"2589"},{"ruleId":"1266","severity":2,"message":"1429","line":52,"column":2,"nodeType":null,"endLine":52,"endColumn":2,"fix":"2590"},{"ruleId":"1266","severity":2,"message":"1429","line":60,"column":2,"nodeType":null,"endLine":60,"endColumn":2,"fix":"2591"},{"ruleId":"1266","severity":2,"message":"1279","line":59,"column":45,"nodeType":null},{"ruleId":"1266","severity":2,"message":"2592","line":1,"column":16,"nodeType":null,"endLine":8,"endColumn":1,"fix":"2593"},{"ruleId":"1266","severity":2,"message":"2594","line":10,"column":19,"nodeType":null,"endLine":10,"endColumn":76,"fix":"2595"},{"ruleId":"1266","severity":2,"message":"2574","line":11,"column":14,"nodeType":null,"endLine":12,"endColumn":4,"fix":"2596"},{"ruleId":"1266","severity":2,"message":"2597","line":13,"column":30,"nodeType":null,"endLine":15,"endColumn":4,"fix":"2598"},{"ruleId":"1266","severity":2,"message":"1429","line":16,"column":2,"nodeType":null,"endLine":16,"endColumn":2,"fix":"2599"},{"ruleId":"1266","severity":2,"message":"2574","line":19,"column":67,"nodeType":null,"endLine":20,"endColumn":4,"fix":"2600"},{"ruleId":"1266","severity":2,"message":"2601","line":23,"column":10,"nodeType":null,"endLine":23,"endColumn":25,"fix":"2602"},{"ruleId":"1266","severity":2,"message":"1429","line":29,"column":2,"nodeType":null,"endLine":29,"endColumn":2,"fix":"2603"},{"ruleId":"1266","severity":2,"message":"1429","line":43,"column":2,"nodeType":null,"endLine":43,"endColumn":2,"fix":"2604"},{"ruleId":"1266","severity":2,"message":"2574","line":46,"column":24,"nodeType":null,"endLine":47,"endColumn":4,"fix":"2605"},{"ruleId":"1266","severity":2,"message":"1429","line":49,"column":2,"nodeType":null,"endLine":49,"endColumn":2,"fix":"2606"},{"ruleId":"1266","severity":2,"message":"2574","line":52,"column":19,"nodeType":null,"endLine":53,"endColumn":4,"fix":"2607"},{"ruleId":"1266","severity":2,"message":"2097","line":59,"column":7,"nodeType":null,"endLine":59,"endColumn":7,"fix":"2608"},{"ruleId":"1266","severity":2,"message":"2609","line":60,"column":1,"nodeType":null,"endLine":60,"endColumn":94,"fix":"2610"},{"ruleId":"1266","severity":2,"message":"1429","line":65,"column":2,"nodeType":null,"endLine":65,"endColumn":2,"fix":"2611"},{"ruleId":"1266","severity":2,"message":"1429","line":70,"column":2,"nodeType":null,"endLine":70,"endColumn":2,"fix":"2612"},{"ruleId":"1266","severity":2,"message":"1429","line":86,"column":2,"nodeType":null,"endLine":86,"endColumn":2,"fix":"2613"},{"ruleId":"1266","severity":2,"message":"1429","line":96,"column":2,"nodeType":null,"endLine":96,"endColumn":2,"fix":"2614"},{"ruleId":"1266","severity":2,"message":"2615","line":1,"column":19,"nodeType":null,"endLine":1,"endColumn":26,"fix":"2616"},{"ruleId":"1266","severity":2,"message":"2617","line":2,"column":33,"nodeType":null,"endLine":2,"endColumn":65,"fix":"2618"},{"ruleId":"1266","severity":2,"message":"1303","line":3,"column":26,"nodeType":null,"endLine":3,"endColumn":61,"fix":"2619"},{"ruleId":"1266","severity":2,"message":"1279","line":29,"column":26,"nodeType":null},{"ruleId":"1266","severity":2,"message":"1279","line":47,"column":27,"nodeType":null},{"ruleId":"1266","severity":2,"message":"2620","line":9,"column":8,"nodeType":null,"endLine":9,"endColumn":18,"fix":"2621"},{"ruleId":"1266","severity":2,"message":"2622","line":11,"column":33,"nodeType":null,"endLine":11,"endColumn":41,"fix":"2623"},{"ruleId":"1266","severity":2,"message":"2624","line":12,"column":34,"nodeType":null,"endLine":12,"endColumn":43,"fix":"2625"},{"ruleId":"1266","severity":2,"message":"2626","line":13,"column":35,"nodeType":null,"endLine":13,"endColumn":56,"fix":"2627"},{"ruleId":"1266","severity":2,"message":"2628","line":14,"column":31,"nodeType":null,"endLine":14,"endColumn":48,"fix":"2629"},{"ruleId":"1266","severity":2,"message":"2630","line":15,"column":25,"nodeType":null,"endLine":15,"endColumn":36,"fix":"2631"},{"ruleId":"1266","severity":2,"message":"1279","line":29,"column":34,"nodeType":null},{"ruleId":"1266","severity":2,"message":"2632","line":1,"column":37,"nodeType":null,"endLine":1,"endColumn":46,"fix":"2633"},{"ruleId":"1266","severity":2,"message":"2634","line":2,"column":41,"nodeType":null,"endLine":2,"endColumn":56,"fix":"2635"},{"ruleId":"1266","severity":2,"message":"2636","line":3,"column":32,"nodeType":null,"endLine":3,"endColumn":46,"fix":"2637"},{"ruleId":"1266","severity":2,"message":"2638","line":4,"column":9,"nodeType":null,"endLine":4,"endColumn":117,"fix":"2639"},{"ruleId":"1266","severity":2,"message":"2640","line":1,"column":39,"nodeType":null,"endLine":1,"endColumn":48,"fix":"2641"},{"ruleId":"1266","severity":2,"message":"2642","line":2,"column":37,"nodeType":null,"endLine":2,"endColumn":51,"fix":"2643"},{"ruleId":"1266","severity":2,"message":"2644","line":3,"column":39,"nodeType":null,"endLine":3,"endColumn":48,"fix":"2645"},{"ruleId":"1266","severity":2,"message":"2646","line":4,"column":38,"nodeType":null,"endLine":4,"endColumn":46,"fix":"2647"},"prettier/prettier","Replace `'src/hooks/Toast'` with `\"src/hooks/Toast\"`",{"range":"2648","text":"2649"},"Replace `'@fortawesome/fontawesome-svg-core'` with `\"@fortawesome/fontawesome-svg-core\";`",{"range":"2650","text":"2651"},"Replace `'@fortawesome/free-solid-svg-icons'` with `\"@fortawesome/free-solid-svg-icons\";`",{"range":"2652","text":"2653"},"Replace `'bootstrap/dist/css/bootstrap.min.css'` with `\"bootstrap/dist/css/bootstrap.min.css\"`",{"range":"2654","text":"2655"},"Replace `·path=\"/sceneFilenameParser\"·component={SceneFilenameParser}` with `⏎··············path=\"/sceneFilenameParser\"⏎··············component={SceneFilenameParser}⏎···········`",{"range":"2656","text":"2657"},"Delete `,`",{"range":"2658","text":"2659"},"Parsing error: Expression expected.","Replace `'react-bootstrap'` with `\"react-bootstrap\"`",{"range":"2660","text":"2661"},"Replace `·FindGalleriesQuery,·FindGalleriesVariables·` with `⏎··FindGalleriesQuery,⏎··FindGalleriesVariables⏎`",{"range":"2662","text":"2663"},{"range":"2664","text":"2659"},"Replace `result:·QueryHookResult,·filter:·ListFilterModel` with `⏎····result:·QueryHookResult,⏎····filter:·ListFilterModel⏎··`",{"range":"2665","text":"2666"},"Replace `·return;` with `⏎······return;⏎···`",{"range":"2667","text":"2668"},"Replace `margin:·\"0·auto\"` with `·margin:·\"0·auto\"·`",{"range":"2669","text":"2670"},"Replace `(gallery)` with `gallery`",{"range":"2671","text":"2672"},"Replace `·:·undefined` with `(⏎······················⏎····················)·:·(⏎······················undefined⏎····················)`",{"range":"2673","text":"2674"},"Replace `{gallery.path}` with `⏎··················{gallery.path}⏎················`",{"range":"2675","text":"2676"},"Replace `_event:·React.MouseEvent,·obj:·{index:·number}` with `⏎····_event:·React.MouseEvent,⏎····obj:·{·index:·number·}⏎··`",{"range":"2677","text":"2678"},"Replace `(file)·=>·({src:·file.path·||·\"\",·caption:·file.name` with `file·=>·({⏎····src:·file.path·||·\"\",⏎····caption:·file.name⏎··`",{"range":"2679","text":"2680"},"Replace `(file)·=>·({src:·`${file.path}?thumb=true`·||·\"\",·width:·1,·height:·1` with `file·=>·({⏎····src:·`${file.path}?thumb=true`·||·\"\",⏎····width:·1,⏎····height:·1⏎··`",{"range":"2681","text":"2682"},"Replace `'@fortawesome/fontawesome-svg-core'` with `\"@fortawesome/fontawesome-svg-core\"`",{"range":"2683","text":"2684"},"Replace `'react-router-bootstrap'` with `\"react-router-bootstrap\"`",{"range":"2685","text":"2686"},"Replace `'src/components/Shared'` with `\"src/components/Shared\";`",{"range":"2687","text":"2688"},"Delete `··`",{"range":"2689","text":"2659"},{"range":"2690","text":"2659"},{"range":"2691","text":"2659"},"Insert `·`",{"range":"2692","text":"2693"},"Insert `··`",{"range":"2694","text":"2695"},{"range":"2696","text":"2695"},{"range":"2697","text":"2695"},{"range":"2698","text":"2695"},{"range":"2699","text":"2695"},{"range":"2700","text":"2695"},"Replace `··` with `····`",{"range":"2701","text":"2702"},{"range":"2703","text":"2695"},{"range":"2704","text":"2695"},{"range":"2705","text":"2695"},{"range":"2706","text":"2695"},{"range":"2707","text":"2702"},{"range":"2708","text":"2695"},{"range":"2709","text":"2695"},{"range":"2710","text":"2695"},{"range":"2711","text":"2695"},{"range":"2712","text":"2695"},{"range":"2713","text":"2695"},{"range":"2714","text":"2695"},{"range":"2715","text":"2695"},{"range":"2716","text":"2695"},{"range":"2717","text":"2695"},{"range":"2718","text":"2695"},{"range":"2719","text":"2702"},{"range":"2720","text":"2695"},{"range":"2721","text":"2695"},{"range":"2722","text":"2695"},{"range":"2723","text":"2702"},{"range":"2724","text":"2695"},{"range":"2725","text":"2695"},"Replace `·location.pathname·===·'/performers'` with `⏎····location.pathname·===·\"/performers\"`",{"range":"2726","text":"2727"},"Replace `?·'/performers/new'` with `··?·\"/performers/new\"`",{"range":"2728","text":"2729"},"Replace `····:·location.pathname·===·'/studios'` with `······:·location.pathname·===·\"/studios\"`",{"range":"2730","text":"2731"},"Replace `'/studios/new'` with `\"/studios/new\"⏎·····`",{"range":"2732","text":"2733"},"Replace `·path·===·null·?·''` with `⏎····path·===·null·?·(⏎······\"\"⏎····)`",{"range":"2734","text":"2735"},{"range":"2736","text":"2695"},{"range":"2737","text":"2695"},{"range":"2738","text":"2695"},{"range":"2739","text":"2695"},{"range":"2740","text":"2659"},"Replace `(i)` with `i`",{"range":"2741","text":"2742"},"Replace `⏎··········exact={true}⏎·········` with `·exact={true}`",{"range":"2743","text":"2744"},{"range":"2745","text":"2659"},{"range":"2746","text":"2659"},{"range":"2747","text":"2659"},"Replace `(⏎····

Page·not·found.

⏎··)` with `

Page·not·found.

`",{"range":"2748","text":"2749"},{"range":"2750","text":"2661"},{"range":"2751","text":"2668"},{"range":"2752","text":"2668"},{"range":"2753","text":"2695"},{"range":"2754","text":"2695"},"Replace `··········` with `············`",{"range":"2755","text":"2756"},{"range":"2757","text":"2695"},"Replace `············` with `··············`",{"range":"2758","text":"2759"},{"range":"2760","text":"2695"},{"range":"2761","text":"2756"},{"range":"2762","text":"2695"},{"range":"2763","text":"2695"},{"range":"2764","text":"2695"},{"range":"2765","text":"2695"},{"range":"2766","text":"2695"},{"range":"2767","text":"2695"},"Replace `''` with `\"\"`",{"range":"2768","text":"2769"},{"range":"2770","text":"2769"},{"range":"2771","text":"2661"},"Replace `'src/hooks'` with `\"src/hooks\"`",{"range":"2772","text":"2773"},"Replace `sprites,·previews,·markers,·transcodes` with `⏎········sprites,⏎········previews,⏎········markers,⏎········transcodes⏎······`",{"range":"2774","text":"2775"},"Replace `·id=\"sprite-task\"·checked={sprites}·label=\"Sprites·(for·the·scene·scrubber)\"·onChange={()·=>·setSprites(!sprites)}` with `⏎········id=\"sprite-task\"⏎········checked={sprites}⏎········label=\"Sprites·(for·the·scene·scrubber)\"⏎········onChange={()·=>·setSprites(!sprites)}⏎·····`",{"range":"2776","text":"2777"},"Replace `·id=\"preview-task\"·checked={previews}·label=\"Previews·(video·previews·which·play·when·hovering·over·a·scene)\"·onChange={()·=>·setPreviews(!previews)}` with `⏎········id=\"preview-task\"⏎········checked={previews}⏎········label=\"Previews·(video·previews·which·play·when·hovering·over·a·scene)\"⏎········onChange={()·=>·setPreviews(!previews)}⏎·····`",{"range":"2778","text":"2779"},"Replace `·id=\"marker-task\"·checked={markers}·label=\"Markers·(20·second·videos·which·begin·at·the·given·timecode)\"·onChange={()·=>·setMarkers(!markers)}` with `⏎········id=\"marker-task\"⏎········checked={markers}⏎········label=\"Markers·(20·second·videos·which·begin·at·the·given·timecode)\"⏎········onChange={()·=>·setMarkers(!markers)}⏎·····`",{"range":"2780","text":"2781"},"Replace `·id=\"transcode-task\"·checked={transcodes}·label=\"Transcodes·(MP4·conversions·of·unsupported·video·formats)\"·onChange={()·=>·setTranscodes(!transcodes)}` with `⏎········id=\"transcode-task\"⏎········checked={transcodes}⏎········label=\"Transcodes·(MP4·conversions·of·unsupported·video·formats)\"⏎········onChange={()·=>·setTranscodes(!transcodes)}⏎·····`",{"range":"2782","text":"2783"},"Replace `Generate` with `⏎········Generate⏎······`",{"range":"2784","text":"2785"},"Replace `Generate·supporting·image,·sprite,·video,·vtt·and·other·files.` with `⏎········Generate·supporting·image,·sprite,·video,·vtt·and·other·files.⏎······`",{"range":"2786","text":"2787"},{"range":"2788","text":"2661"},{"range":"2789","text":"2773"},"Replace `'src/components/Shared'` with `\"src/components/Shared\"`",{"range":"2790","text":"2791"},"Delete `·`",{"range":"2792","text":"2659"},{"range":"2793","text":"2693"},"Replace `·jobStatus.refetch()` with `⏎······jobStatus.refetch();⏎····`",{"range":"2794","text":"2795"},"Replace `'Import',·variant:·'danger'` with `\"Import\",·variant:·\"danger\"`",{"range":"2796","text":"2797"},"Replace `·This·will·delete·the·database·and·re-import·from⏎·········` with `This·will·delete·the·database·and⏎··········re-import·from`",{"range":"2798","text":"2799"},{"range":"2800","text":"2795"},"Replace `'Clean',·variant:·'danger'` with `\"Clean\",·variant:·\"danger\"`",{"range":"2801","text":"2802"},"Replace `⏎··········This·will·delete·db·information·and·generated·content⏎··········for·all·scenes·that·are·no·longer·found·in·the` with `·This·will·delete·db·information·and⏎··········generated·content·for·all·scenes·that·are·no·longer·found·in·the⏎·········`",{"range":"2803","text":"2804"},"Replace `useFileMetadata:·useFileMetadata` with `⏎········useFileMetadata:·useFileMetadata⏎······`",{"range":"2805","text":"2806"},"Insert `;`",{"range":"2807","text":"2808"},"Replace `·id=\"stop\"·variant=\"danger\"·onClick={()·=>·StashService.queryStopJob().then(()·=>·jobStatus.refetch())}>Stop` with `⏎··········id=\"stop\"⏎··········variant=\"danger\"⏎··········onClick={()·=>⏎············StashService.queryStopJob().then(()·=>·jobStatus.refetch())⏎··········}⏎········>⏎··········Stop⏎········`",{"range":"2809","text":"2810"},{"range":"2811","text":"2695"},{"range":"2812","text":"2695"},"Replace `·status·!==·\"Idle\"·?··:·''·` with `status·!==·\"Idle\"·?·(⏎············⏎··········)·:·(⏎············\"\"⏎··········)`",{"range":"2813","text":"2814"},{"range":"2815","text":"2695"},{"range":"2816","text":"2695"},"Replace `Scan` with `⏎··········Scan⏎········`",{"range":"2817","text":"2818"},"Replace `Scan·for·new·content·and·add·it·to·the·database.` with `⏎··········Scan·for·new·content·and·add·it·to·the·database.⏎········`",{"range":"2819","text":"2820"},"Replace `Auto·Tag` with `⏎··········Auto·Tag⏎········`",{"range":"2821","text":"2822"},"Replace `Auto-tag·content·based·on·filenames.` with `⏎··········Auto-tag·content·based·on·filenames.⏎········`",{"range":"2823","text":"2824"},"Replace `·id=\"clean\"·variant=\"danger\"·onClick={()·=>·setIsCleanAlertOpen(true)}>Clean` with `⏎··········id=\"clean\"⏎··········variant=\"danger\"⏎··········onClick={()·=>·setIsCleanAlertOpen(true)}⏎········>⏎··········Clean⏎········`",{"range":"2825","text":"2826"},"Replace `Check·for·missing·files·and·remove·them·from·the·database.·This·is·a·destructive·action.` with `⏎··········Check·for·missing·files·and·remove·them·from·the·database.·This·is·a⏎··········destructive·action.⏎········`",{"range":"2827","text":"2828"},"Replace `·id=\"export\"·type=\"submit\"onClick={()·=>·StashService.queryMetadataExport().then(()·=>·{·jobStatus.refetch()})}>Export` with `⏎··········id=\"export\"⏎··········type=\"submit\"⏎··········onClick={()·=>⏎············StashService.queryMetadataExport().then(()·=>·{⏎··············jobStatus.refetch();⏎············})⏎··········}⏎········>⏎··········Export⏎········`",{"range":"2829","text":"2830"},"Replace `Export·the·database·content·into·JSON·format.` with `⏎··········Export·the·database·content·into·JSON·format.⏎········`",{"range":"2831","text":"2832"},"Replace `·id=\"import\"·variant=\"danger\"·onClick={()·=>·setIsImportAlertOpen(true)}>Import` with `⏎··········id=\"import\"⏎··········variant=\"danger\"⏎··········onClick={()·=>·setIsImportAlertOpen(true)}⏎········>⏎··········Import⏎········`",{"range":"2833","text":"2834"},"Replace `Import·from·exported·JSON.··This·is·a·destructive·action.` with `⏎··········Import·from·exported·JSON.·This·is·a·destructive·action.⏎········`",{"range":"2835","text":"2836"},"Replace `·Button,·Form,·Modal,·Nav,·Navbar,·OverlayTrigger,·Popover·}·from·'react-bootstrap'` with `⏎··Button,⏎··Form,⏎··Modal,⏎··Nav,⏎··Navbar,⏎··OverlayTrigger,⏎··Popover⏎}·from·\"react-bootstrap\"`",{"range":"2837","text":"2838"},"Replace `scraper:·GQL.ListPerformerScrapersListPerformerScrapers` with `⏎····scraper:·GQL.ListPerformerScrapersListPerformerScrapers⏎··`",{"range":"2839","text":"2840"},{"range":"2841","text":"2668"},"Replace `⏎········variant=\"primary\"⏎········onClick={()·=>·props.onToggleEdit()}⏎······` with `·variant=\"primary\"·onClick={()·=>·props.onToggleEdit()}`",{"range":"2842","text":"2843"},{"range":"2844","text":"2659"},{"range":"2845","text":"2668"},"Replace `··props.onSave()}>Save` with `·(⏎·······props.onSave()}>⏎········Save⏎······⏎····)`",{"range":"2846","text":"2847"},{"range":"2848","text":"2668"},"Replace `··setIsDeleteAlertOpen(true)}>Delete` with `·(⏎·······setIsDeleteAlertOpen(true)}>⏎········Delete⏎······⏎····)`",{"range":"2849","text":"2850"},"Replace `·return;·}` with `⏎······return;`",{"range":"2851","text":"2852"},"Insert `}⏎··`",{"range":"2853","text":"2854"},{"range":"2855","text":"2659"},"Replace `··········` with `········`",{"range":"2856","text":"2857"},"Replace `···props.onDisplayScraperDialog·&&··props.onDisplayScraperDialog(s)·}` with `··················⏎······················props.onDisplayScraperDialog·&&⏎······················props.onDisplayScraperDialog(s)⏎····················}⏎··················`",{"range":"2867","text":"2868"},"Insert `····`",{"range":"2869","text":"2702"},{"range":"2870","text":"2702"},"Replace `))·:·''` with `····))⏎··············:·\"\"`",{"range":"2871","text":"2872"},{"range":"2873","text":"2668"},"Replace `Auto·Tag)` with `··········}}⏎········>⏎··········Auto·Tag⏎········⏎······);`",{"range":"2878","text":"2879"},{"range":"2880","text":"2668"},"Replace `(⏎······⏎········Scenes⏎······⏎····)` with `Scenes`",{"range":"2881","text":"2882"},"Replace `⏎········show={isDeleteAlertOpen}⏎······` with `·show={isDeleteAlertOpen}`",{"range":"2883","text":"2884"},"Replace `⏎··········Are·you·sure·you·want·to·delete·{name}?⏎········` with `Are·you·sure·you·want·to·delete·{name}?`",{"range":"2885","text":"2886"},"Replace `Delete` with `⏎············Delete⏎··········`",{"range":"2887","text":"2888"},"Replace `·variant=\"secondary\"·onClick={()·=>·setIsDeleteAlertOpen(false)}>Cancel` with `⏎············variant=\"secondary\"⏎············onClick={()·=>·setIsDeleteAlertOpen(false)}⏎··········>⏎············Cancel⏎··········`",{"range":"2889","text":"2890"},"Delete `⏎`",{"range":"2891","text":"2659"},{"range":"2892","text":"2695"},{"range":"2893","text":"2695"},{"range":"2894","text":"2695"},{"range":"2895","text":"2695"},{"range":"2896","text":"2695"},{"range":"2897","text":"2661"},{"range":"2898","text":"2688"},{"range":"2899","text":"2808"},{"range":"2900","text":"2808"},{"range":"2901","text":"2808"},{"range":"2902","text":"2808"},"Replace `secondsToString(props.numericValue)` with `⏎····secondsToString(props.numericValue)⏎··`",{"range":"2903","text":"2904"},{"range":"2905","text":"2659"},{"range":"2906","text":"2659"},{"range":"2907","text":"2693"},"Replace `⏎·······vertical={true}⏎······` with `·vertical={true}`",{"range":"2908","text":"2909"},"Replace `⏎··········disabled={props.disabled}⏎··········onClick={()·=>·increment()}⏎········` with `·disabled={props.disabled}·onClick={()·=>·increment()}`",{"range":"2910","text":"2911"},"Replace `⏎··········disabled={props.disabled}⏎··········onClick={()·=>·decrement()}⏎········` with `·disabled={props.disabled}·onClick={()·=>·decrement()}`",{"range":"2912","text":"2913"},{"range":"2914","text":"2808"},"Replace `⏎··········onClick={()·=>·onReset()}⏎········` with `·onClick={()·=>·onReset()}`",{"range":"2915","text":"2916"},{"range":"2917","text":"2808"},{"range":"2918","text":"2659"},"Replace `·maybeRenderReset()·` with `maybeRenderReset()`",{"range":"2919","text":"2920"},"Replace `·renderButtons()·` with `renderButtons()`",{"range":"2921","text":"2922"},{"range":"2923","text":"2808"},{"range":"2924","text":"2661"},"Replace `·PerformerDataFragment,·SceneMarkerDataFragment,·TagDataFragment·` with `⏎··PerformerDataFragment,⏎··SceneMarkerDataFragment,⏎··TagDataFragment⏎`",{"range":"2925","text":"2926"},"Replace `props.marker.seconds·||·0` with `⏎······props.marker.seconds·||·0⏎····`",{"range":"2927","text":"2928"},"Replace `⏎······className=\"tag-item\"⏎······variant=\"secondary\"⏎····` with `·className=\"tag-item\"·variant=\"secondary\"`",{"range":"2929","text":"2930"},{"range":"2931","text":"2661"},{"range":"2932","text":"2668"},"Replace `··{!data·||·loading·?·` with `{!data·||·loading·?·(`",{"range":"2933","text":"2934"},{"range":"2935","text":"2659"},{"range":"2936","text":"2659"},"Replace `···········:·undefined` with `········⏎······)·:·(⏎········undefined⏎······)`",{"range":"2937","text":"2938"},{"range":"2939","text":"2661"},"Replace `⏎······className=\"col-4\"⏎····` with `·className=\"col-4\"`",{"range":"2940","text":"2941"},"Replace `backgroundImage:·`url(${studio.image_path})`` with `·backgroundImage:·`url(${studio.image_path})`·`",{"range":"2942","text":"2943"},"Replace `⏎··········{studio.name}⏎········` with `{studio.name}`",{"range":"2944","text":"2945"},"Replace `·FindStudiosQuery,·FindStudiosVariables·` with `⏎··FindStudiosQuery,⏎··FindStudiosVariables⏎`",{"range":"2946","text":"2947"},{"range":"2948","text":"2659"},"Replace `result:·QueryHookResult,·filter:·ListFilterModel` with `⏎····result:·QueryHookResult,⏎····filter:·ListFilterModel⏎··`",{"range":"2949","text":"2950"},{"range":"2951","text":"2668"},"Replace `(studio)·=>·(` with `studio·=>·(⏎············⏎··········`",{"range":"2952","text":"2953"},"Replace `item:·GQL.SlimSceneDataFragment·|·GQL.SceneMarkerDataFragment` with `⏎····item:·GQL.SlimSceneDataFragment·|·GQL.SceneMarkerDataFragment⏎··`",{"range":"2954","text":"2955"},"Replace `props:·IWallItemProps` with `⏎··props:·IWallItemProps⏎`",{"range":"2956","text":"2957"},"Replace `resetOnMouseLeave:·true` with `⏎····resetOnMouseLeave:·true⏎··`",{"range":"2958","text":"2959"},"Replace `·!!config.data·&&·!!config.data.configuration·?·config.data.configuration.interface.wallShowTitle` with `⏎····!!config.data·&&·!!config.data.configuration⏎······?·config.data.configuration.interface.wallShowTitle⏎·····`",{"range":"2960","text":"2961"},{"range":"2962","text":"2668"},"Replace `'10'` with `\"10\"`",{"range":"2963","text":"2964"},{"range":"2965","text":"2693"},{"range":"2966","text":"2769"},"Replace ``${props.sceneMarker!.title}·-·${TextUtils.secondsToTimestamp(props.sceneMarker.seconds)}`` with `⏎········`${props.sceneMarker!.title}·-·${TextUtils.secondsToTimestamp(⏎··········props.sceneMarker.seconds⏎········)}`⏎······`",{"range":"2967","text":"2968"},"Replace `(tag)·=>·({tag.name}` with `tag·=>·(⏎········{tag.name}⏎······`",{"range":"2969","text":"2970"},"Replace `{props.sceneMarker.primary_tag.name}` with `⏎········⏎··········{props.sceneMarker.primary_tag.name}⏎········⏎······`",{"range":"2971","text":"2972"},"Replace `·className.push(\"double-scale\");` with `⏎····className.push(\"double-scale\");⏎·`",{"range":"2973","text":"2974"},"Replace `·style.transformOrigin·=·props.origin;` with `⏎····style.transformOrigin·=·props.origin;⏎·`",{"range":"2975","text":"2976"},"Replace `display:·\"none\"` with `·display:·\"none\"·`",{"range":"2977","text":"2978"},"Replace `·alt=\"Preview\"·src={previewPath·||·screenshotPath}·onError={()·=>·previewNotFound()}` with `⏎············alt=\"Preview\"⏎············src={previewPath·||·screenshotPath}⏎············onError={()·=>·previewNotFound()}⏎·········`",{"range":"2979","text":"2980"},"Insert `·(`",{"range":"2981","text":"2982"},"Replace `lineHeight:·1}}>` with `·lineHeight:·1·}}>{title}
`",{"range":"2983","text":"2984"},"Replace `··{title` with `{tags`",{"range":"2985","text":"2986"},{"range":"2987","text":"2659"},"Replace `····{tags}` with `)·:·(`",{"range":"2988","text":"2989"},"Replace `
·:·''` with `\"\"`",{"range":"2990","text":"2769"},"Insert `)`",{"range":"2991","text":"2992"},{"range":"2993","text":"2955"},"Replace `props:·IWallPanelProps` with `⏎··props:·IWallPanelProps⏎`",{"range":"2994","text":"2995"},"Replace `·return·\"top\";` with `⏎······return·\"top\";⏎···`",{"range":"2996","text":"2997"},"Replace `·return·\"top·left\";` with `⏎······return·\"top·left\";⏎···`",{"range":"2998","text":"2999"},"Replace `·return·\"top·right\";` with `⏎······return·\"top·right\";⏎···`",{"range":"3000","text":"3001"},{"range":"3002","text":"2997"},"Replace `·return·\"bottom·right\";` with `⏎······return·\"bottom·right\";⏎···`",{"range":"3003","text":"3004"},"Replace `·return·\"bottom·left\";` with `⏎······return·\"bottom·left\";⏎···`",{"range":"3005","text":"3006"},"Replace `·return·\"bottom\";` with `⏎······return·\"bottom\";⏎···`",{"range":"3007","text":"3008"},{"range":"3009","text":"3008"},"Replace `·return·\"center·left\";` with `⏎······return·\"center·left\";⏎···`",{"range":"3010","text":"3011"},"Replace `·return·\"center·right\";` with `⏎······return·\"center·right\";⏎···`",{"range":"3012","text":"3013"},{"range":"3014","text":"2668"},{"range":"3015","text":"2668"},"Replace `'react-bootstrap'` with `\"react-bootstrap\";`",{"range":"3016","text":"3017"},{"range":"3018","text":"2791"},"Replace `·Criterion,·CriterionType·` with `⏎··Criterion,⏎··CriterionType⏎`",{"range":"3019","text":"3020"},"Replace `props:·IAddFilterProps` with `⏎··props:·IAddFilterProps⏎`",{"range":"3021","text":"3022"},"Replace `=·useRef` with `⏎····event:·React.ChangeEvent⏎··`",{"range":"3028","text":"3029"},"Replace `criterion.options·&&·(value·===·undefined·||·value·===·\"\"·||·typeof·value·===·\"number\")` with `⏎········criterion.options·&&⏎········(value·===·undefined·||·value·===·\"\"·||·typeof·value·===·\"number\")⏎······`",{"range":"3030","text":"3031"},"Replace `·?·props.editingCriterion.getId()` with `⏎······?·props.editingCriterion.getId()⏎·····`",{"range":"3032","text":"3033"},{"range":"3034","text":"2668"},"Replace `·return;` with `⏎········return;⏎·····`",{"range":"3035","text":"3036"},{"range":"3037","text":"2659"},{"range":"3038","text":"2659"},"Replace `criterion.modifier·===·CriterionModifier.IsNull·||·criterion.modifier·===·CriterionModifier.NotNull` with `⏎········criterion.modifier·===·CriterionModifier.IsNull·||⏎········criterion.modifier·===·CriterionModifier.NotNull⏎······`",{"range":"3039","text":"3040"},"Replace `(items)·=>·criterion.value·=·items.map((i)·=>·({id:·i.id,·label:·i.name!}))` with `items·=>⏎··············(criterion.value·=·items.map(i·=>·({·id:·i.id,·label:·i.name!·})))⏎············`",{"range":"3041","text":"3042"},{"range":"3043","text":"2659"},"Replace `··················` with `················`",{"range":"3044","text":"3045"},{"range":"3046","text":"2808"},"Replace `⏎··········{renderModifier()}⏎········` with `{renderModifier()}`",{"range":"3047","text":"3048"},"Replace `⏎··········{renderSelect()}⏎········` with `{renderSelect()}`",{"range":"3049","text":"3050"},{"range":"3051","text":"2668"},"Insert `⏎········`",{"range":"3052","text":"3053"},{"range":"3054","text":"2659"},{"range":"3055","text":"2659"},"Replace `⏎··········onClick={()·=>·onToggle()}⏎··········active={isOpen}⏎········` with `·onClick={()·=>·onToggle()}·active={isOpen}`",{"range":"3056","text":"3057"},"Replace `⏎········show={isOpen}⏎·······` with `·show={isOpen}`",{"range":"3058","text":"3059"},"Replace `{title}` with `⏎············{title}⏎··········`",{"range":"3060","text":"3061"},"Replace `·Badge,·Button,·ButtonGroup,·Dropdown,·Form,·OverlayTrigger,·Tooltip·}·from·'react-bootstrap'` with `⏎··Badge,⏎··Button,⏎··ButtonGroup,⏎··Dropdown,⏎··Form,⏎··OverlayTrigger,⏎··Tooltip⏎}·from·\"react-bootstrap\"`",{"range":"3062","text":"3063"},{"range":"3064","text":"2791"},"Replace `props:·IListFilterProps` with `⏎··props:·IListFilterProps⏎`",{"range":"3065","text":"3066"},"Insert `⏎···`",{"range":"3067","text":"3068"},"Replace `Criterion·|·undefined` with `⏎····Criterion·|·undefined⏎··`",{"range":"3069","text":"3070"},{"range":"3071","text":"2668"},{"range":"3072","text":"2668"},"Replace `(option)` with `option`",{"range":"3073","text":"3074"},"Replace `{option}` with `⏎········{option}⏎······`",{"range":"3075","text":"3076"},"Insert `⏎·········`",{"range":"3077","text":"3078"},{"range":"3079","text":"3078"},{"range":"3080","text":"3078"},{"range":"3081","text":"3078"},{"range":"3082","text":"3078"},{"range":"3083","text":"3078"},{"range":"3084","text":"3074"},"Replace `·overlay={{getLabel(option)}}` with `⏎········overlay={⏎··········{getLabel(option)}⏎········}⏎······`",{"range":"3085","text":"3086"},"Replace `(criterion)` with `criterion`",{"range":"3087","text":"3088"},"Replace `·onSelectAll()}>Select·All` with `(⏎·········onSelectAll()}>Select·All⏎······)`",{"range":"3089","text":"3090"},"Replace `·onSelectNone()}>Select·None` with `(⏎·········onSelectNone()}>⏎··········Select·None⏎········⏎······)`",{"range":"3091","text":"3092"},"Replace `⏎······renderSelectAll(),⏎······renderSelectNone()⏎····` with `renderSelectAll(),·renderSelectNone()`",{"range":"3093","text":"3094"},"Replace `(o)` with `o`",{"range":"3095","text":"3096"},"Replace `{o.text}` with `⏎··········{o.text}⏎········`",{"range":"3097","text":"3098"},"Replace `⏎············{options}⏎··········` with `{options}`",{"range":"3099","text":"3100"},{"range":"3101","text":"2659"},"Replace `·onChangeZoom(Number.parseInt(event.target.value))` with `⏎··············onChangeZoom(Number.parseInt(event.target.value))⏎············`",{"range":"3102","text":"3103"},{"range":"3104","text":"2695"},"Replace `·PAGE_SIZE_OPTIONS.map(s·=>·{s})·` with `PAGE_SIZE_OPTIONS.map(s·=>·(⏎··············{s}⏎············))`",{"range":"3105","text":"3106"},"Replace `⏎················{renderSortByOptions()}⏎··············` with `{renderSortByOptions()}`",{"range":"3107","text":"3108"},"Insert `⏎·············`",{"range":"3109","text":"3110"},"Replace `··············{props.filter.sortDirection·===·\"asc\"·?·\"Ascending\"·:·\"Descending\"}` with `················⏎··················{props.filter.sortDirection·===·\"asc\"⏎····················?·\"Ascending\"⏎····················:·\"Descending\"}⏎················`",{"range":"3111","text":"3112"},"Replace `}` with `··}⏎············`",{"range":"3113","text":"3114"},"Replace `·icon={props.filter.sortDirection·===·\"asc\"·?·\"caret-up\"·:·\"caret-down\"}` with `⏎··················icon={⏎····················props.filter.sortDirection·===·\"asc\"⏎······················?·\"caret-up\"⏎······················:·\"caret-down\"⏎··················}⏎···············`",{"range":"3115","text":"3116"},"Replace `⏎············{renderMore()}⏎··········` with `{renderMore()}`",{"range":"3117","text":"3118"},"Replace `·style={{display:·\"flex\",·justifyContent:·\"center\",·margin:·\"10px·auto\"}}` with `⏎··········style={{⏎············display:·\"flex\",⏎············justifyContent:·\"center\",⏎············margin:·\"10px·auto\"⏎··········}}⏎········`",{"range":"3119","text":"3120"},{"range":"3121","text":"2661"},"Replace `IPaginationProps,·IPaginationState` with `⏎··IPaginationProps,⏎··IPaginationState⏎`",{"range":"3122","text":"3123"},{"range":"3124","text":"2659"},"Delete `⏎·····`",{"range":"3125","text":"2659"},"Replace `this.props.totalItems·!==·prevProps.totalItems·||·this.props.itemsPerPage·!==·prevProps.itemsPerPage` with `⏎······this.props.totalItems·!==·prevProps.totalItems·||⏎······this.props.itemsPerPage·!==·prevProps.itemsPerPage⏎····`",{"range":"3126","text":"3127"},"Replace `·return·null;` with `⏎······return·null;⏎···`",{"range":"3128","text":"3129"},"Replace `First` with `⏎··········First⏎········`",{"range":"3130","text":"3131"},"Replace `Previous` with `⏎··········Previous⏎········`",{"range":"3132","text":"3133"},"Replace `Next` with `⏎··········Next⏎········`",{"range":"3134","text":"3135"},"Replace `Last` with `⏎··········Last⏎········`",{"range":"3136","text":"3137"},"Replace `{page}` with `⏎········{page}⏎······`",{"range":"3138","text":"3139"},{"range":"3140","text":"2668"},"Replace `this.props.totalItems,·page,·this.props.itemsPerPage` with `⏎······this.props.totalItems,⏎······page,⏎······this.props.itemsPerPage⏎····`",{"range":"3141","text":"3142"},"Replace `·page·=·1;` with `⏎······page·=·1;⏎···`",{"range":"3143","text":"3144"},"Replace `·page·=·pagerState.totalPages;` with `⏎······page·=·pagerState.totalPages;⏎···`",{"range":"3145","text":"3146"},"Replace `·this.props.onChangePage(page);` with `⏎······this.props.onChangePage(page);⏎···`",{"range":"3147","text":"3148"},"Replace `totalItems:·number,·currentPage:·number,·pageSize:·number` with `⏎····totalItems:·number,⏎····currentPage:·number,⏎····pageSize:·number⏎··`",{"range":"3149","text":"3150"},"Replace `(endPage·+·1)·-·startPage).keys()].map((i)·=>·startPage·+·i` with `endPage·+·1·-·startPage).keys()].map(⏎······i·=>·startPage·+·i⏎····`",{"range":"3151","text":"3152"},{"range":"3153","text":"2659"},{"range":"3154","text":"2661"},"Replace `props:·IPerformerCardProps` with `⏎··props:·IPerformerCardProps⏎`",{"range":"3155","text":"3156"},"Replace `props.ageFromDate·?·\"·in·this·scene.\"·:·\".\"` with `⏎····props.ageFromDate·?·\"·in·this·scene.\"·:·\".\"⏎··`",{"range":"3157","text":"3158"},{"range":"3159","text":"2668"},"Replace `·(⏎······⏎········FAVORITE⏎······
⏎····)` with `·FAVORITE`",{"range":"3160","text":"3161"},"Replace `backgroundImage:·`url(${props.performer.image_path})`` with `·backgroundImage:·`url(${props.performer.image_path})`·`",{"range":"3162","text":"3163"},"Replace `⏎··········{props.performer.name}⏎········` with `{props.performer.name}`",{"range":"3164","text":"3165"},{"range":"3166","text":"2769"},"Replace `Stars·in·{props.performer.scene_count}·scenes` with `⏎··········Stars·in·{props.performer.scene_count}{\"·\"}⏎··········⏎············scenes⏎··········⏎··········`",{"range":"3167","text":"3168"},"Replace `'react-router-dom'` with `\"react-router-dom\"`",{"range":"3169","text":"3170"},"Replace `·FindPerformersQuery,·FindPerformersVariables·` with `⏎··FindPerformersQuery,⏎··FindPerformersVariables⏎`",{"range":"3171","text":"3172"},{"range":"3173","text":"2659"},{"range":"3174","text":"2659"},"Replace `result:·QueryHookResult,·filter:·ListFilterModel` with `⏎····result:·QueryHookResult,⏎····filter:·ListFilterModel⏎··`",{"range":"3175","text":"3176"},"Replace `singleResult·&&·singleResult.data·&&·singleResult.data.findPerformers·&&·singleResult.data.findPerformers.performers.length·===·1` with `⏎········singleResult·&&⏎········singleResult.data·&&⏎········singleResult.data.findPerformers·&&⏎········singleResult.data.findPerformers.performers.length·===·1⏎······`",{"range":"3177","text":"3178"},"Replace `·filter:·ListFilterModel` with `⏎····filter:·ListFilterModel⏎··`",{"range":"3179","text":"3180"},{"range":"3181","text":"2668"},"Replace `(p)·=>·(` with `p·=>·(⏎············⏎··········`",{"range":"3182","text":"3183"},"Replace `` with `(⏎········⏎······)`",{"range":"3184","text":"3185"},{"range":"3186","text":"2661"},{"range":"3187","text":"2791"},"Replace `props:·IPerformerListTableProps)·=>·{⏎` with `⏎··props:·IPerformerListTableProps⏎)·=>·{`",{"range":"3188","text":"3189"},{"range":"3190","text":"2659"},{"range":"3191","text":"2668"},{"range":"3192","text":"2659"},{"range":"3193","text":"2659"},"Insert `⏎······`",{"range":"3194","text":"3195"},{"range":"3196","text":"2808"},{"range":"3197","text":"2659"},{"range":"3198","text":"2695"},"Replace `········⏎··········{renderPerformerImage(performer)}⏎········` with `··········{renderPerformerImage(performer)}`",{"range":"3199","text":"3200"},"Replace `········⏎··············{performer.name}⏎············` with `··············{performer.name}`",{"range":"3204","text":"3205"},{"range":"3206","text":"2695"},{"range":"3207","text":"2695"},"Replace `⏎··········{performer.aliases·?·performer.aliases·:·''}⏎········` with `··{performer.aliases·?·performer.aliases·:·\"\"}`",{"range":"3208","text":"3209"},"Replace `⏎··········{maybeRenderFavoriteHeart(performer)}⏎········` with `··{maybeRenderFavoriteHeart(performer)}`",{"range":"3210","text":"3211"},"Replace `········` with `··········`",{"range":"3212","text":"3213"},{"range":"3214","text":"2695"},{"range":"3215","text":"2695"},{"range":"3216","text":"2695"},{"range":"3217","text":"3213"},"Replace `⏎··········{performer.birthdate}⏎········` with `··{performer.birthdate}`",{"range":"3218","text":"3219"},"Replace `········⏎··········{performer.height}⏎········` with `··········{performer.height}`",{"range":"3220","text":"3221"},"Replace `······` with `········`",{"range":"3222","text":"2857"},{"range":"3223","text":"2808"},{"range":"3224","text":"2695"},{"range":"3225","text":"2695"},{"range":"3226","text":"2695"},{"range":"3227","text":"2695"},"Replace `············⏎··········{props.performers.map(renderPerformerRow)}⏎········` with `··{props.performers.map(renderPerformerRow)}`",{"range":"3238","text":"3239"},{"range":"3240","text":"2857"},{"range":"3241","text":"2695"},{"range":"3242","text":"2659"},"Replace `·Button,·ButtonGroup,·Card,·Form,·Popover,·OverlayTrigger·}·from·'react-bootstrap'` with `⏎··Button,⏎··ButtonGroup,⏎··Card,⏎··Form,⏎··Popover,⏎··OverlayTrigger⏎}·from·\"react-bootstrap\"`",{"range":"3243","text":"3244"},"Replace `'classnames'` with `\"classnames\"`",{"range":"3245","text":"3246"},{"range":"3247","text":"2791"},"Replace `·:·boolean,·shiftKey·` with `:·boolean,·shiftKey`",{"range":"3248","text":"3249"},"Replace `props:·ISceneCardProps` with `⏎··props:·ISceneCardProps⏎`",{"range":"3250","text":"3251"},"Replace `resetOnMouseLeave:·false` with `⏎····resetOnMouseLeave:·false⏎··`",{"range":"3252","text":"3253"},"Replace `·!!config.data·&&·!!config.data.configuration·?·config.data.configuration.interface.showStudioAsText` with `⏎····!!config.data·&&·!!config.data.configuration⏎······?·config.data.configuration.interface.showStudioAsText⏎·····`",{"range":"3254","text":"3255"},{"range":"3256","text":"2668"},"Replace `·className={`rating-banner·${props.scene.rating·?·`rating-${props.scene.rating}`·:·''·}`}` with `⏎········className={`rating-banner·${⏎··········props.scene.rating·?·`rating-${props.scene.rating}`·:·\"\"⏎········}`}⏎······`",{"range":"3257","text":"3258"},"Replace `·{TextUtils.resolution(props.scene.file.height)}·:·''` with `(⏎··········⏎············{\"·\"}⏎············{TextUtils.resolution(props.scene.file.height)}⏎··········⏎········)·:·(⏎··········\"\"⏎········)`",{"range":"3259","text":"3260"},"Replace `·props.scene.file.duration·>=·1·?·TextUtils.secondsToTimestamp(props.scene.file.duration)·:·''` with `⏎········props.scene.file.duration·>=·1⏎··········?·TextUtils.secondsToTimestamp(props.scene.file.duration)⏎··········:·\"\"`",{"range":"3261","text":"3262"},{"range":"3263","text":"2659"},{"range":"3264","text":"2659"},"Replace `⏎··········to={`/studios/${props.scene.studio.id}`}⏎··········style={style}⏎········` with `·to={`/studios/${props.scene.studio.id}`}·style={style}`",{"range":"3265","text":"3266"},{"range":"3267","text":"2659"},"Replace `··props.scene.tags.map((tag)` with `props.scene.tags.map(tag`",{"range":"3268","text":"3269"},{"range":"3270","text":"2659"},{"range":"3271","text":"2659"},"Replace `⏎··········props.scene.performers.map((performer)` with `props.scene.performers.map(performer`",{"range":"3272","text":"3273"},{"range":"3274","text":"2659"},"Replace `··············` with `············`",{"range":"3275","text":"2756"},{"range":"3276","text":"2659"},{"range":"3277","text":"3045"},{"range":"3278","text":"2659"},"Replace `··style={{backgroundImage:·`url(${performer.image_path})`` with `style={{·backgroundImage:·`url(${performer.image_path})`·`",{"range":"3279","text":"3280"},"Replace `··>·0` with `······props.scene.scene_markers.length·>·0⏎····`",{"range":"3295","text":"3296"},{"range":"3297","text":"2695"},"Replace `·shiftKey·=·event.shiftKey;·event.stopPropagation();·}·` with `⏎··········shiftKey·=·event.shiftKey;⏎··········event.stopPropagation();⏎········}`",{"range":"3298","text":"3299"},"Replace `·to={`/scenes/${props.scene.id}`}·className={cx('image',·'previewable',·{portrait:·isPortrait()})}` with `⏎········to={`/scenes/${props.scene.id}`}⏎········className={cx(\"image\",·\"previewable\",·{·portrait:·isPortrait()·})}⏎······`",{"range":"3300","text":"3301"},"Replace `'preview',·{portrait:·isPortrait()` with `\"preview\",·{·portrait:·isPortrait()·`",{"range":"3302","text":"3303"},"Replace `·?·props.scene.title` with `⏎············?·props.scene.title⏎···········`",{"range":"3304","text":"3305"},"Replace `props:·ISceneDetailProps` with `⏎··props:·ISceneDetailProps⏎`",{"range":"3306","text":"3307"},{"range":"3308","text":"2668"},{"range":"3309","text":"2668"},"Replace `(tag)` with `tag`",{"range":"3310","text":"3311"},{"range":"3312","text":"2695"},"Replace `·?·props.scene.title` with `⏎··········?·props.scene.title⏎·········`",{"range":"3313","text":"3314"},{"range":"3315","text":"2769"},{"range":"3316","text":"2769"},"Replace `
Resolution:·{TextUtils.resolution(props.scene.file.height)}
·:·''` with `(⏎········
Resolution:·{TextUtils.resolution(props.scene.file.height)}
⏎······)·:·(⏎········\"\"⏎······)`",{"range":"3317","text":"3318"},{"range":"3319","text":"2661"},"Replace `props:·ISceneFileInfoPanelProps` with `⏎··props:·ISceneFileInfoPanelProps⏎`",{"range":"3320","text":"3321"},"Replace `{\"file://\"+props.scene.path}` with `⏎··········⏎············{\"file://\"·+·props.scene.path}⏎··········{\"·\"}⏎·······`",{"range":"3322","text":"3323"},"Replace `{props.scene.paths.stream}` with `⏎··········{props.scene.paths.stream}{\"·\"}⏎·······`",{"range":"3324","text":"3325"},{"range":"3326","text":"2668"},{"range":"3327","text":"2668"},{"range":"3328","text":"2668"},"Replace `{props.scene.file.width}·x·{props.scene.file.height}` with `⏎··········{props.scene.file.width}·x·{props.scene.file.height}⏎········`",{"range":"3329","text":"3330"},{"range":"3331","text":"2668"},{"range":"3332","text":"2668"},{"range":"3333","text":"2668"},{"range":"3334","text":"2668"},{"range":"3335","text":"2668"},"Replace `IScenePerformerPanelProps` with `⏎··IScenePerformerPanelProps⏎`",{"range":"3336","text":"3337"},"Replace `(performer)` with `performer`",{"range":"3338","text":"3339"},"Replace `·key={performer.id}·performer={performer}·ageFromDate={props.scene.date}` with `⏎······key={performer.id}⏎······performer={performer}⏎······ageFromDate={props.scene.date}⏎···`",{"range":"3340","text":"3341"},"Replace `⏎········{cards}⏎······` with `{cards}`",{"range":"3342","text":"3343"},{"range":"3344","text":"3170"},"Replace `·FindScenesQuery,·FindScenesVariables,·SlimSceneDataFragment·` with `⏎··FindScenesQuery,⏎··FindScenesVariables,⏎··SlimSceneDataFragment⏎`",{"range":"3345","text":"3346"},{"range":"3347","text":"2659"},"Replace `result:·QueryHookResult,·filter:·ListFilterModel` with `⏎····result:·QueryHookResult,⏎····filter:·ListFilterModel⏎··`",{"range":"3348","text":"3349"},"Replace `singleResult·&&·singleResult.data·&&·singleResult.data.findScenes·&&·singleResult.data.findScenes.scenes.length·===·1` with `⏎········singleResult·&&⏎········singleResult.data·&&⏎········singleResult.data.findScenes·&&⏎········singleResult.data.findScenes.scenes.length·===·1⏎······`",{"range":"3350","text":"3351"},"Replace `result:·QueryHookResult,·selectedIds:·Set` with `⏎····result:·QueryHookResult,⏎····selectedIds:·Set⏎··`",{"range":"3352","text":"3353"},"Replace `·return·undefined;` with `⏎······return·undefined;⏎···`",{"range":"3354","text":"3355"},{"range":"3356","text":"2659"},"Replace `(id)` with `id`",{"range":"3357","text":"3358"},"Replace `(scene)` with `scene`",{"range":"3359","text":"3360"},"Replace `·{·return;·}}` with `···{⏎············return;⏎··········}}⏎········`",{"range":"3361","text":"3362"},"Replace `scene·:·SlimSceneDataFragment,·selectedIds:·Set,·zoomIndex:·number` with `⏎····scene:·SlimSceneDataFragment,⏎····selectedIds:·Set,⏎····zoomIndex:·number⏎··`",{"range":"3363","text":"3364"},"Replace `·listData.onSelectChange(scene.id,·selected,·shiftKey)` with `⏎··········listData.onSelectChange(scene.id,·selected,·shiftKey)⏎········`",{"range":"3365","text":"3366"},{"range":"3367","text":"2808"},"Replace `result:·QueryHookResult,·filter:·ListFilterModel,·selectedIds:·Set,·zoomIndex:·number` with `⏎····result:·QueryHookResult,⏎····filter:·ListFilterModel,⏎····selectedIds:·Set,⏎····zoomIndex:·number⏎··`",{"range":"3368","text":"3369"},{"range":"3370","text":"2668"},"Replace `(scene)·=>·renderSceneCard(scene,·selectedIds,·zoomIndex)` with `scene·=>⏎············renderSceneCard(scene,·selectedIds,·zoomIndex)⏎··········`",{"range":"3371","text":"3372"},{"range":"3373","text":"2693"},{"range":"3374","text":"2659"},"Replace `····` with `··`",{"range":"3375","text":"2695"},{"range":"3376","text":"2659"},{"range":"3377","text":"2659"},{"range":"3378","text":"2808"},"Replace `IScenePlayerProps,·IScenePlayerState` with `⏎··IScenePlayerProps,⏎··IScenePlayerState⏎`",{"range":"3379","text":"3380"},"Replace `scrubberPosition:·0` with `·scrubberPosition:·0·`",{"range":"3381","text":"3382"},{"range":"3383","text":"2659"},{"range":"3384","text":"2659"},{"range":"3385","text":"2659"},"Delete `····`",{"range":"3386","text":"2659"},{"range":"3387","text":"2659"},"Replace `············` with `········`",{"range":"3388","text":"2857"},{"range":"3389","text":"2659"},{"range":"3390","text":"2857"},{"range":"3391","text":"2659"},"Replace `··········` with `······`",{"range":"3392","text":"3393"},{"range":"3394","text":"2659"},"Replace `·?·this.player.getPlaybackRate()` with `⏎······?·this.player.getPlaybackRate()⏎·····`",{"range":"3395","text":"3396"},"Delete `;`",{"range":"3397","text":"2659"},{"range":"3398","text":"3396"},{"range":"3399","text":"2659"},"Replace `·this.player.setPlaybackRate(1);·};` with `⏎····this.player.setPlaybackRate(1);⏎··}`",{"range":"3400","text":"3401"},"Replace `·this.player.getState().paused·?·this.player.play()·:·this.player.pause();·};` with `⏎····this.player.getState().paused·?·this.player.play()·:·this.player.pause();⏎··}`",{"range":"3402","text":"3403"},"Replace `this.onReset()` with `⏎······this.onReset();⏎····`",{"range":"3404","text":"3405"},"Replace `this.onDecrease()` with `⏎······this.onDecrease();⏎····`",{"range":"3406","text":"3407"},"Replace `this.onIncrease()` with `⏎······this.onIncrease();⏎····`",{"range":"3408","text":"3409"},"Replace `this.onPause()` with `⏎······this.onPause();⏎····`",{"range":"3410","text":"3411"},{"range":"3412","text":"2808"},"Replace `·?·this.props.config.maximumLoopDuration` with `⏎······?·this.props.config.maximumLoopDuration⏎·····`",{"range":"3413","text":"3414"},"Replace `·!!scene.file.duration·&&·!!maxLoopDuration·&&·scene.file.duration·<·maxLoopDuration` with `·(⏎······!!scene.file.duration·&&⏎······!!maxLoopDuration·&&⏎······scene.file.duration·<·maxLoopDuration⏎····)`",{"range":"3415","text":"3416"},"Replace `·return·{};` with `⏎······return·{};⏎···`",{"range":"3417","text":"3418"},"Replace `·((seekToPosition:·number,·_videoTag:·any)·=>·void)` with `⏎······|·((seekToPosition:·number,·_videoTag:·any)·=>·void)⏎·····`",{"range":"3419","text":"3420"},"Replace `·((_videoTag:·any)·=>·number)` with `⏎······|·((_videoTag:·any)·=>·number)⏎·····`",{"range":"3421","text":"3422"},"Replace `·(this.props.scene.paths.stream·+·\"?start=\"·+·seekToPosition)` with `⏎··········this.props.scene.paths.stream·+·\"?start=\"·+·seekToPosition`",{"range":"3423","text":"3424"},{"range":"3425","text":"2808"},{"range":"3426","text":"2659"},{"range":"3427","text":"2659"},{"range":"3428","text":"2659"},{"range":"3429","text":"2659"},"Replace `·this.props.autoplay·||` with `⏎········this.props.autoplay·||⏎·······`",{"range":"3430","text":"3431"},"Replace `scrubberPosition:·position` with `·scrubberPosition:·position·`",{"range":"3432","text":"3433"},{"range":"3434","text":"3433"},"Replace `props:·IScenePlayerProps` with `⏎··props:·IScenePlayerProps⏎`",{"range":"3435","text":"3436"},{"range":"3437","text":"2659"},"Replace `··return··goBack()}><` with `⏎········variant=\"link\"⏎········className=\"scrubber-button\"⏎········id=\"scrubber-back\"⏎········onClick={()·=>·goBack()}⏎······>⏎········<⏎······`",{"range":"3534","text":"3535"},"Replace `⏎··············{renderTags()}⏎············` with `{renderTags()}`",{"range":"3536","text":"3537"},"Replace `·className=\"scrubber-button\"·id=\"scrubber-forward\"·onClick={()·=>·goForward()}>>` with `⏎········className=\"scrubber-button\"⏎········id=\"scrubber-forward\"⏎········onClick={()·=>·goForward()}⏎······>⏎········>⏎······`",{"range":"3538","text":"3539"},"Delete `,·{··}`",{"range":"3540","text":"2659"},{"range":"3541","text":"2659"},{"range":"3542","text":"2659"},"Replace `(⏎······⏎····)` with ``",{"range":"3543","text":"3544"},"Replace `·return·\"main-jwplayer\";` with `⏎····return·\"main-jwplayer\";⏎·`",{"range":"3545","text":"3546"},"Replace `'apollo-link-ws'` with `\"apollo-link-ws\"`",{"range":"3547","text":"3548"},"Replace `'apollo-cache-inmemory'` with `\"apollo-cache-inmemory\"`",{"range":"3549","text":"3550"},{"range":"3551","text":"2659"},{"range":"3552","text":"2659"},"Replace `'OperationDefinition'·&&·operation·===·'subscription'` with `\"OperationDefinition\"·&&·operation·===·\"subscription\"`",{"range":"3553","text":"3554"},{"range":"3555","text":"2659"},{"range":"3556","text":"2659"},"Insert `⏎··········`",{"range":"3557","text":"3558"},{"range":"3559","text":"2695"},"Replace `········})` with `··········})⏎········`",{"range":"3560","text":"3561"},{"range":"3562","text":"2659"},{"range":"3563","text":"2659"},{"range":"3564","text":"2659"},{"range":"3565","text":"2659"},{"range":"3566","text":"2659"},{"range":"3567","text":"2659"},{"range":"3568","text":"2659"},{"range":"3569","text":"2659"},{"range":"3570","text":"2659"},{"range":"3571","text":"2659"},{"range":"3572","text":"2659"},{"range":"3573","text":"2659"},{"range":"3574","text":"2659"},"Replace `·return·GQL.useFindGallery({variables:·{id}});` with `⏎····return·GQL.useFindGallery({·variables:·{·id·}·});⏎·`",{"range":"3575","text":"3576"},"Replace `·return·GQL.useFindScene({variables:·{id}});` with `⏎····return·GQL.useFindScene({·variables:·{·id·}·});⏎·`",{"range":"3577","text":"3578"},"Replace `variables:·{id},·skip` with `·variables:·{·id·},·skip·`",{"range":"3579","text":"3580"},{"range":"3581","text":"3580"},{"range":"3582","text":"2659"},"Replace `·variables:·{·scraper_id:·scraperId,·query:·q·},·skip:·q·===·''` with `⏎······variables:·{·scraper_id:·scraperId,·query:·q·},⏎······skip:·q·===·\"\"⏎····`",{"range":"3583","text":"3584"},"Replace `scraperId:·string,·scrapedPerformer·:·GQL.ScrapedPerformerInput` with `⏎····scraperId:·string,⏎····scrapedPerformer:·GQL.ScrapedPerformerInput⏎··`",{"range":"3585","text":"3586"},"Replace `·····return·GQL.useScrapePerformer({·variables:·{·scraper_id:·scraperId,·scraped_performer:·scrapedPerformer·}` with `····return·GQL.useScrapePerformer({⏎······variables:·{·scraper_id:·scraperId,·scraped_performer:·scrapedPerformer·}⏎····`",{"range":"3587","text":"3588"},"Replace `·return·GQL.useScrapeFreeonesPerformers({·variables:·{·q·}·});` with `⏎····return·GQL.useScrapeFreeonesPerformers({·variables:·{·q·}·});⏎·`",{"range":"3589","text":"3590"},"Replace `·return·GQL.useMarkerStrings();` with `⏎····return·GQL.useMarkerStrings();⏎·`",{"range":"3591","text":"3592"},"Replace `·return·GQL.useAllTags();` with `⏎····return·GQL.useAllTags();⏎·`",{"range":"3593","text":"3594"},"Replace `·return·GQL.useAllTagsForFilter();` with `⏎····return·GQL.useAllTagsForFilter();⏎·`",{"range":"3595","text":"3596"},"Replace `·return·GQL.useAllPerformersForFilter();` with `⏎····return·GQL.useAllPerformersForFilter();⏎·`",{"range":"3597","text":"3598"},"Replace `·return·GQL.useAllStudiosForFilter();` with `⏎····return·GQL.useAllStudiosForFilter();⏎·`",{"range":"3599","text":"3600"},"Replace `variables:·{scene_id:·sceneId}` with `·variables:·{·scene_id:·sceneId·}·`",{"range":"3601","text":"3602"},"Replace `·return·GQL.useStats();` with `⏎····return·GQL.useStats();⏎·`",{"range":"3603","text":"3604"},"Replace `·return·GQL.useVersion();` with `⏎····return·GQL.useVersion();⏎·`",{"range":"3605","text":"3606"},"Replace `·return·GQL.useConfiguration();` with `⏎····return·GQL.useConfiguration();⏎·`",{"range":"3607","text":"3608"},"Replace `·return·GQL.useDirectories({·variables:·{·path·}});` with `⏎····return·GQL.useDirectories({·variables:·{·path·}·});⏎·`",{"range":"3609","text":"3610"},"Replace `·StashService.invalidateQueries(StashService.performerMutationImpactedQueries` with `⏎········StashService.invalidateQueries(⏎··········StashService.performerMutationImpactedQueries⏎········`",{"range":"3611","text":"3612"},{"range":"3613","text":"3612"},{"range":"3614","text":"3612"},"Replace `·StashService.invalidateQueries(StashService.sceneMutationImpactedQueries` with `⏎········StashService.invalidateQueries(⏎··········StashService.sceneMutationImpactedQueries⏎········`",{"range":"3615","text":"3616"},"Replace `·StashService.invalidateQueries(StashService.sceneBulkMutationImpactedQueries` with `⏎········StashService.invalidateQueries(⏎··········StashService.sceneBulkMutationImpactedQueries⏎········`",{"range":"3617","text":"3618"},"Replace `·:·input·}` with `:·input·}·`",{"range":"3619","text":"3620"},{"range":"3621","text":"3616"},"Replace `·StashService.invalidateQueries(StashService.studioMutationImpactedQueries` with `⏎········StashService.invalidateQueries(⏎··········StashService.studioMutationImpactedQueries⏎········`",{"range":"3622","text":"3623"},{"range":"3624","text":"3623"},{"range":"3625","text":"3623"},{"range":"3626","text":"2659"},{"range":"3627","text":"2659"},"Insert `⏎·······`",{"range":"3628","text":"3629"},"Replace `·variables:·{·input·},·refetchQueries:·[\"Configuration\"]` with `⏎······variables:·{·input·},⏎······refetchQueries:·[\"Configuration\"]⏎···`",{"range":"3630","text":"3631"},{"range":"3632","text":"3631"},"Replace `'no-cache'` with `\"no-cache\"`",{"range":"3633","text":"3634"},{"range":"3635","text":"3634"},{"range":"3636","text":"2659"},{"range":"3637","text":"2659"},{"range":"3638","text":"2659"},"Replace `scraperId:·string,·scrapedPerformer:·GQL.ScrapedPerformerInput` with `⏎····scraperId:·string,⏎····scrapedPerformer:·GQL.ScrapedPerformerInput⏎··`",{"range":"3639","text":"3586"},{"range":"3640","text":"2659"},{"range":"3641","text":"2659"},{"range":"3642","text":"2659"},{"range":"3643","text":"2659"},{"range":"3644","text":"2659"},{"range":"3645","text":"2659"},"Replace `scraperId:·string,·scene:·GQL.SceneUpdateInput` with `⏎····scraperId:·string,⏎····scene:·GQL.SceneUpdateInput⏎··`",{"range":"3646","text":"3647"},{"range":"3648","text":"2659"},{"range":"3649","text":"2659"},{"range":"3650","text":"2659"},{"range":"3651","text":"2659"},{"range":"3652","text":"2659"},{"range":"3653","text":"2659"},{"range":"3654","text":"2659"},{"range":"3655","text":"2659"},"Replace `filter:·filter},` with `·filter:·filter·}`",{"range":"3656","text":"3657"},"Replace `filter:·GQL.FindFilterType,·config:·GQL.SceneParserInput` with `⏎····filter:·GQL.FindFilterType,⏎····config:·GQL.SceneParserInput⏎··`",{"range":"3658","text":"3659"},"Replace `filter:·filter,·config:·config` with `·filter:·filter,·config:·config·`",{"range":"3660","text":"3661"},{"range":"3662","text":"2659"},{"range":"3663","text":"2659"},"Replace `IInterfaceConfig·|·undefined` with `⏎··IInterfaceConfig·|·undefined⏎`",{"range":"3664","text":"3665"},{"range":"3666","text":"2659"},"Replace `data:·json,·setData:·setJson,·error:·err` with `·data:·json,·setData:·setJson,·error:·err·`",{"range":"3667","text":"3668"},"Replace `options:·IVideoHoverHookOptions` with `⏎····options:·IVideoHoverHookOptions⏎··`",{"range":"3669","text":"3670"},"Replace `·!!config.data·&&·!!config.data.configuration·?·config.data.configuration.interface.soundOnPreview` with `⏎······!!config.data·&&·!!config.data.configuration⏎········?·config.data.configuration.interface.soundOnPreview⏎·······`",{"range":"3671","text":"3672"},{"range":"3673","text":"3036"},"Replace `isPlaying.current·=·false` with `(isPlaying.current·=·false)`",{"range":"3674","text":"3675"},{"range":"3676","text":"3036"},"Replace `videoEl,·isPlaying,·isHovering,·options` with `·videoEl,·isPlaying,·isHovering,·options·`",{"range":"3677","text":"3678"},{"range":"3679","text":"2668"},"Replace `(error)` with `error`",{"range":"3680","text":"3681"},{"range":"3682","text":"2668"},"Delete `(`",{"range":"3683","text":"2659"},"Replace `⏎),·document.getElementById(\"root\")` with `,⏎··document.getElementById(\"root\")⏎`",{"range":"3684","text":"3685"},"Replace `\"none\"·|⏎··\"rating\"·|⏎··\"resolution\"·|` with `|·\"none\"⏎··|·\"rating\"⏎··|·\"resolution\"`",{"range":"3686","text":"3687"},"Replace `\"favorite\"·|` with `|·\"favorite\"`",{"range":"3688","text":"3689"},"Replace `\"hasMarkers\"·|⏎··\"isMissing\"·|⏎··\"tags\"·|⏎··\"sceneTags\"·|⏎··\"performers\"·|⏎··\"studios\"·|⏎··\"birth_year\"·|⏎··\"age\"·|` with `|·\"hasMarkers\"⏎··|·\"isMissing\"⏎··|·\"tags\"⏎··|·\"sceneTags\"⏎··|·\"performers\"⏎··|·\"studios\"⏎··|·\"birth_year\"⏎··|·\"age\"`",{"range":"3690","text":"3691"},"Replace `·\"ethnicity\"·|` with `·|·\"ethnicity\"`",{"range":"3692","text":"3693"},"Replace `·\"country\"·|⏎··\"eye_color\"·|⏎··\"height\"·|⏎··\"measurements\"·|⏎··\"fake_tits\"·|⏎··\"career_length\"·|` with `·|·\"country\"⏎··|·\"eye_color\"⏎··|·\"height\"⏎··|·\"measurements\"⏎··|·\"fake_tits\"⏎··|·\"career_length\"`",{"range":"3694","text":"3695"},"Replace `\"tattoos\"·|⏎··\"piercings\"·|⏎·` with `|·\"tattoos\"⏎··|·\"piercings\"⏎··|`",{"range":"3696","text":"3697"},{"range":"3698","text":"3629"},{"range":"3699","text":"3629"},{"range":"3700","text":"3629"},{"range":"3701","text":"3629"},{"range":"3702","text":"3629"},{"range":"3703","text":"3629"},{"range":"3704","text":"3629"},{"range":"3705","text":"3629"},{"range":"3706","text":"3629"},{"range":"3707","text":"3629"},{"range":"3708","text":"3629"},{"range":"3709","text":"3629"},{"range":"3710","text":"3629"},{"range":"3711","text":"3629"},{"range":"3712","text":"3629"},{"range":"3713","text":"3629"},{"range":"3714","text":"3629"},{"range":"3715","text":"3629"},{"range":"3716","text":"3629"},{"range":"3717","text":"3629"},{"range":"3718","text":"3629"},{"range":"3719","text":"3629"},"Replace `modifier:·CriterionModifier·=·CriterionModifier.Equals` with `⏎····modifier:·CriterionModifier·=·CriterionModifier.Equals⏎··`",{"range":"3720","text":"3721"},"Replace `·return·{value:·CriterionModifier.Equals,·label:·\"Equals\"` with `⏎········return·{·value:·CriterionModifier.Equals,·label:·\"Equals\"·`",{"range":"3722","text":"3723"},"Replace `·return·{value:·CriterionModifier.NotEquals,·label:·\"Not·Equals\"` with `⏎········return·{·value:·CriterionModifier.NotEquals,·label:·\"Not·Equals\"·`",{"range":"3724","text":"3725"},"Replace `·return·{value:·CriterionModifier.GreaterThan,·label:·\"Greater·Than\"` with `⏎········return·{·value:·CriterionModifier.GreaterThan,·label:·\"Greater·Than\"·`",{"range":"3726","text":"3727"},"Replace `·return·{value:·CriterionModifier.LessThan,·label:·\"Less·Than\"` with `⏎········return·{·value:·CriterionModifier.LessThan,·label:·\"Less·Than\"·`",{"range":"3728","text":"3729"},"Replace `·return·{value:·CriterionModifier.IsNull,·label:·\"Is·NULL\"` with `⏎········return·{·value:·CriterionModifier.IsNull,·label:·\"Is·NULL\"·`",{"range":"3730","text":"3731"},"Replace `·return·{value:·CriterionModifier.NotNull,·label:·\"Not·NULL\"` with `⏎········return·{·value:·CriterionModifier.NotNull,·label:·\"Not·NULL\"·`",{"range":"3732","text":"3733"},"Replace `·return·{value:·CriterionModifier.IncludesAll,·label:·\"Includes·All\"` with `⏎········return·{·value:·CriterionModifier.IncludesAll,·label:·\"Includes·All\"·`",{"range":"3734","text":"3735"},"Replace `·return·{value:·CriterionModifier.Includes,·label:·\"Includes\"` with `⏎········return·{·value:·CriterionModifier.Includes,·label:·\"Includes\"·`",{"range":"3736","text":"3737"},"Replace `·return·{value:·CriterionModifier.Excludes,·label:·\"Excludes\"` with `⏎········return·{·value:·CriterionModifier.Excludes,·label:·\"Excludes\"·`",{"range":"3738","text":"3739"},"Replace `·modifierString·=·\"is\";` with `⏎········modifierString·=·\"is\";⏎·······`",{"range":"3740","text":"3741"},"Replace `·modifierString·=·\"is·not\";` with `⏎········modifierString·=·\"is·not\";⏎·······`",{"range":"3742","text":"3743"},"Replace `·modifierString·=·\"is·greater·than\";` with `⏎········modifierString·=·\"is·greater·than\";⏎·······`",{"range":"3744","text":"3745"},"Replace `·modifierString·=·\"is·less·than\";` with `⏎········modifierString·=·\"is·less·than\";⏎·······`",{"range":"3746","text":"3747"},"Replace `·modifierString·=·\"is·null\";` with `⏎········modifierString·=·\"is·null\";⏎·······`",{"range":"3748","text":"3749"},"Replace `·modifierString·=·\"is·not·null\";` with `⏎········modifierString·=·\"is·not·null\";⏎·······`",{"range":"3750","text":"3751"},"Replace `·modifierString·=·\"includes\";` with `⏎········modifierString·=·\"includes\";⏎·······`",{"range":"3752","text":"3753"},"Replace `·modifierString·=·\"includes·all\";` with `⏎········modifierString·=·\"includes·all\";⏎·······`",{"range":"3754","text":"3755"},"Replace `·modifierString·=·\"excludes\";` with `⏎········modifierString·=·\"excludes\";⏎·······`",{"range":"3756","text":"3757"},{"range":"3758","text":"3629"},"Replace `this.modifier·===·CriterionModifier.IsNull·||·this.modifier·===·CriterionModifier.NotNull` with `⏎······this.modifier·===·CriterionModifier.IsNull·||⏎······this.modifier·===·CriterionModifier.NotNull⏎····`",{"range":"3759","text":"3760"},"Replace `(item)` with `item`",{"range":"3761","text":"3762"},"Replace `·:·string,·value·` with `:·string,·value`",{"range":"3763","text":"3764"},{"range":"3765","text":"2659"},"Replace `·:·CriterionType,·parameterName?:·string,·options?·` with `:·CriterionType,·parameterName?:·string,·options?`",{"range":"3766","text":"3767"},{"range":"3768","text":"2659"},{"range":"3769","text":"3767"},"Replace `⏎··Criterion,⏎··CriterionType,⏎··ICriterionOption,⏎` with `·Criterion,·CriterionType,·ICriterionOption·`",{"range":"3770","text":"3771"},{"range":"3772","text":"3771"},{"range":"3773","text":"3771"},"Replace `\"title\",·\"url\",·\"date\",·\"gallery\",·\"studio\",·\"performers\"` with `⏎····\"title\",⏎····\"url\",⏎····\"date\",⏎····\"gallery\",⏎····\"studio\",⏎····\"performers\"⏎··`",{"range":"3774","text":"3775"},{"range":"3776","text":"3771"},{"range":"3777","text":"3771"},{"range":"3778","text":"2659"},{"range":"3779","text":"3771"},"Insert `⏎·`",{"range":"3780","text":"3781"},{"range":"3782","text":"2659"},{"range":"3783","text":"3771"},{"range":"3784","text":"3781"},{"range":"3785","text":"3771"},{"range":"3786","text":"2659"},{"range":"3787","text":"3771"},"Replace `GQL.AllTagsForFilterAllTags,·ILabeledId[]` with `⏎··GQL.AllTagsForFilterAllTags,⏎··ILabeledId[]⏎`",{"range":"3788","text":"3789"},{"range":"3790","text":"2659"},"Replace `⏎··CriterionModifier,⏎` with `·CriterionModifier·`",{"range":"3791","text":"3792"},"Replace `·Criterion,·CriterionType,·StringCriterion,·NumberCriterion·` with `⏎··Criterion,⏎··CriterionType,⏎··StringCriterion,⏎··NumberCriterion⏎`",{"range":"3793","text":"3794"},"Insert `⏎·····`",{"range":"3795","text":"3796"},{"range":"3797","text":"3796"},{"range":"3798","text":"3796"},{"range":"3799","text":"3796"},{"range":"3800","text":"3796"},{"range":"3801","text":"3796"},{"range":"3802","text":"3796"},{"range":"3803","text":"3796"},{"range":"3804","text":"3796"},{"range":"3805","text":"3796"},"Replace `········` with `······`",{"range":"3806","text":"3393"},{"range":"3807","text":"2659"},{"range":"3808","text":"2659"},{"range":"3809","text":"2857"},{"range":"3810","text":"2659"},{"range":"3811","text":"2659"},{"range":"3812","text":"2857"},{"range":"3813","text":"2659"},{"range":"3814","text":"2659"},{"range":"3815","text":"2659"},"Replace `·Criterion,·ICriterionOption,·CriterionType,·CriterionOption,·NumberCriterion,·StringCriterion·` with `⏎··Criterion,⏎··ICriterionOption,⏎··CriterionType,⏎··CriterionOption,⏎··NumberCriterion,⏎··StringCriterion⏎`",{"range":"3816","text":"3817"},"Replace `·FavoriteCriterion,·FavoriteCriterionOption·` with `⏎··FavoriteCriterion,⏎··FavoriteCriterionOption⏎`",{"range":"3818","text":"3819"},"Replace `·HasMarkersCriterion,·HasMarkersCriterionOption·` with `⏎··HasMarkersCriterion,⏎··HasMarkersCriterionOption⏎`",{"range":"3820","text":"3821"},"Replace `·IsMissingCriterion,·IsMissingCriterionOption·` with `⏎··IsMissingCriterion,⏎··IsMissingCriterionOption⏎`",{"range":"3822","text":"3823"},"Replace `·PerformersCriterion,·PerformersCriterionOption·` with `⏎··PerformersCriterion,⏎··PerformersCriterionOption⏎`",{"range":"3824","text":"3825"},"Replace `·ResolutionCriterion,·ResolutionCriterionOption·` with `⏎··ResolutionCriterion,⏎··ResolutionCriterionOption⏎`",{"range":"3826","text":"3827"},"Replace `·SceneTagsCriterionOption,·TagsCriterion,·TagsCriterionOption·` with `⏎··SceneTagsCriterionOption,⏎··TagsCriterion,⏎··TagsCriterionOption⏎`",{"range":"3828","text":"3829"},"Replace `⏎··DisplayMode,⏎··FilterMode,⏎` with `·DisplayMode,·FilterMode·`",{"range":"3830","text":"3831"},"Replace `·this.sortBy·=·\"date\";` with `⏎··········this.sortBy·=·\"date\";⏎·······`",{"range":"3832","text":"3833"},"Replace `\"title\",·\"path\",·\"rating\",·\"date\",·\"filesize\",·\"duration\",·\"framerate\",·\"bitrate\",·\"random\"` with `⏎··········\"title\",⏎··········\"path\",⏎··········\"rating\",⏎··········\"date\",⏎··········\"filesize\",⏎··········\"duration\",⏎··········\"framerate\",⏎··········\"bitrate\",⏎··········\"random\"⏎········`",{"range":"3834","text":"3835"},{"range":"3836","text":"2659"},{"range":"3837","text":"2659"},"Replace `·this.sortBy·=·\"name\";` with `⏎··········this.sortBy·=·\"name\";⏎·······`",{"range":"3838","text":"3839"},"Replace `⏎··········DisplayMode.Grid,⏎··········DisplayMode.List,⏎········` with `DisplayMode.Grid,·DisplayMode.List`",{"range":"3840","text":"3841"},{"range":"3842","text":"2659"},{"range":"3843","text":"2659"},"Replace `numberCriteria.concat(stringCriteria).map((c)` with `⏎··········numberCriteria.concat(stringCriteria).map(c`",{"range":"3844","text":"3845"},{"range":"3846","text":"2695"},{"range":"3847","text":"3561"},{"range":"3848","text":"3839"},"Replace `⏎··········DisplayMode.Grid,⏎········` with `DisplayMode.Grid`",{"range":"3849","text":"3850"},"Replace `⏎··········new·NoneCriterionOption(),⏎········` with `new·NoneCriterionOption()`",{"range":"3851","text":"3852"},"Replace `·this.sortBy·=·\"path\";` with `⏎··········this.sortBy·=·\"path\";⏎·······`",{"range":"3853","text":"3854"},"Replace `⏎··········DisplayMode.List,⏎········` with `DisplayMode.List`",{"range":"3855","text":"3856"},{"range":"3857","text":"3852"},"Replace `·this.sortBy·=·\"title\";` with `⏎··········this.sortBy·=·\"title\";⏎·······`",{"range":"3858","text":"3859"},"Replace `\"title\",·\"seconds\",·\"scene_id\",·\"random\",·\"scenes_updated_at\"` with `⏎··········\"title\",⏎··········\"seconds\",⏎··········\"scene_id\",⏎··········\"random\",⏎··········\"scenes_updated_at\"⏎········`",{"range":"3860","text":"3861"},"Replace `⏎··········DisplayMode.Wall,⏎········` with `DisplayMode.Wall`",{"range":"3862","text":"3863"},{"range":"3864","text":"2659"},{"range":"3865","text":"3852"},"Replace `·this.displayMode·=·this.displayModeOptions[0];` with `⏎······this.displayMode·=·this.displayModeOptions[0];⏎···`",{"range":"3866","text":"3867"},"Replace `(rawParms)⏎·····` with `·(rawParms)`",{"range":"3868","text":"3869"},{"range":"3870","text":"3088"},{"range":"3871","text":"2659"},"Replace `encode:·false` with `·encode:·false·`",{"range":"3872","text":"3873"},"Replace `·this.sortDirection·===·\"asc\"·?·SortDirectionEnum.Asc·:·SortDirectionEnum.Desc,` with `⏎········this.sortDirection·===·\"asc\"⏎··········?·SortDirectionEnum.Asc⏎··········:·SortDirectionEnum.Desc`",{"range":"3874","text":"3875"},"Replace `((criterion)` with `(criterion`",{"range":"3876","text":"3877"},"Replace `·value:·ratingCrit.value,·modifier:·ratingCrit.modifier` with `⏎············value:·ratingCrit.value,⏎············modifier:·ratingCrit.modifier⏎·········`",{"range":"3878","text":"3879"},"Replace `·result.resolution·=·ResolutionEnum.Low;` with `⏎··············result.resolution·=·ResolutionEnum.Low;⏎·············`",{"range":"3880","text":"3881"},"Replace `·result.resolution·=·ResolutionEnum.Standard;` with `⏎··············result.resolution·=·ResolutionEnum.Standard;⏎·············`",{"range":"3882","text":"3883"},"Replace `·result.resolution·=·ResolutionEnum.StandardHd;` with `⏎··············result.resolution·=·ResolutionEnum.StandardHd;⏎·············`",{"range":"3884","text":"3885"},"Replace `·result.resolution·=·ResolutionEnum.FullHd;` with `⏎··············result.resolution·=·ResolutionEnum.FullHd;⏎·············`",{"range":"3886","text":"3887"},"Replace `·result.resolution·=·ResolutionEnum.FourK;` with `⏎··············result.resolution·=·ResolutionEnum.FourK;⏎·············`",{"range":"3888","text":"3889"},"Replace `·value:·tagsCrit.value.map((tag)·=>·tag.id),·modifier:·tagsCrit.modifier` with `⏎············value:·tagsCrit.value.map(tag·=>·tag.id),⏎············modifier:·tagsCrit.modifier⏎·········`",{"range":"3890","text":"3891"},"Replace `·value:·perfCrit.value.map((perf)·=>·perf.id),·modifier:·perfCrit.modifier` with `⏎············value:·perfCrit.value.map(perf·=>·perf.id),⏎············modifier:·perfCrit.modifier⏎·········`",{"range":"3892","text":"3893"},"Replace `·value:·studCrit.value.map((studio)·=>·studio.id),·modifier:·studCrit.modifier` with `⏎············value:·studCrit.value.map(studio·=>·studio.id),⏎············modifier:·studCrit.modifier⏎·········`",{"range":"3894","text":"3895"},{"range":"3896","text":"3088"},"Insert `⏎···········`",{"range":"3897","text":"3898"},"Replace `·value:·byCrit.value,·modifier:·byCrit.modifier` with `⏎············value:·byCrit.value,⏎············modifier:·byCrit.modifier⏎·········`",{"range":"3899","text":"3900"},"Replace `·value:·ethCrit.value,·modifier:·ethCrit.modifier` with `⏎············value:·ethCrit.value,⏎············modifier:·ethCrit.modifier⏎·········`",{"range":"3901","text":"3902"},"Replace `·value:·cntryCrit.value,·modifier:·cntryCrit.modifier` with `⏎············value:·cntryCrit.value,⏎············modifier:·cntryCrit.modifier⏎·········`",{"range":"3903","text":"3904"},"Replace `·value:·mCrit.value,·modifier:·mCrit.modifier` with `⏎············value:·mCrit.value,⏎············modifier:·mCrit.modifier⏎·········`",{"range":"3905","text":"3906"},"Replace `·value:·clCrit.value,·modifier:·clCrit.modifier` with `⏎············value:·clCrit.value,⏎············modifier:·clCrit.modifier⏎·········`",{"range":"3907","text":"3908"},{"range":"3909","text":"3088"},{"range":"3910","text":"3891"},"Replace `·value:·sceneTagsCrit.value.map((tag)·=>·tag.id),·modifier:·sceneTagsCrit.modifier` with `⏎············value:·sceneTagsCrit.value.map(tag·=>·tag.id),⏎············modifier:·sceneTagsCrit.modifier⏎·········`",{"range":"3911","text":"3912"},"Replace `·value:·performersCrit.value.map((performer)·=>·performer.id),·modifier:·performersCrit.modifier` with `⏎············value:·performersCrit.value.map(performer·=>·performer.id),⏎············modifier:·performersCrit.modifier⏎·········`",{"range":"3913","text":"3914"},{"range":"3915","text":"2659"},{"range":"3916","text":"2659"},{"range":"3917","text":"2659"},{"range":"3918","text":"2659"},{"range":"3919","text":"2659"},{"range":"3920","text":"2659"},"Replace `(registration)` with `registration`",{"range":"3921","text":"3922"},{"range":"3923","text":"2659"},"Replace `((error)` with `(error`",{"range":"3924","text":"3925"},"Replace `(response)` with `response`",{"range":"3926","text":"3927"},"Replace `((registration)` with `(registration`",{"range":"3928","text":"3929"},{"range":"3930","text":"2659"},{"range":"3931","text":"3922"},"Replace `performer:·Partial` with `⏎··performer:·Partial⏎`",{"range":"3932","text":"3933"},"Delete `⏎···`",{"range":"3934","text":"2659"},"Replace `{·id:·performer.id,·label:·performer.name·||·`Performer·${performer.id}`·}` with `⏎····{·id:·performer.id,·label:·performer.name·||·`Performer·${performer.id}`·}⏎··`",{"range":"3935","text":"3936"},{"range":"3937","text":"2808"},{"range":"3938","text":"2659"},"Replace `{·id:·studio.id,·label:·studio.name·||·`Studio·${studio.id}`·}` with `⏎····{·id:·studio.id,·label:·studio.name·||·`Studio·${studio.id}`·}⏎··`",{"range":"3939","text":"3940"},{"range":"3941","text":"2808"},{"range":"3942","text":"2659"},{"range":"3943","text":"2808"},{"range":"3944","text":"2659"},{"range":"3945","text":"2808"},"Replace `sceneMarker:·Partial` with `⏎··sceneMarker:·Partial⏎`",{"range":"3946","text":"3947"},{"range":"3948","text":"2659"},{"range":"3949","text":"2808"},{"range":"3950","text":"2808"},"Replace `⏎··\"bytes\",⏎··\"kB\",⏎··\"MB\",⏎··\"GB\",⏎··\"TB\",⏎··\"PB\",⏎` with `\"bytes\",·\"kB\",·\"MB\",·\"GB\",·\"TB\",·\"PB\"`",{"range":"3951","text":"3952"},"Replace `value?:·string,·limit:·number·=·100,·tail:·string·=·\"...\"` with `⏎··value?:·string,⏎··limit:·number·=·100,⏎··tail:·string·=·\"...\"⏎`",{"range":"3953","text":"3954"},{"range":"3955","text":"2659"},"Replace `⏎····?·value.substring(0,·limit)·+·tail⏎···` with `·?·value.substring(0,·limit)·+·tail`",{"range":"3956","text":"3957"},{"range":"3958","text":"2808"},{"range":"3959","text":"2659"},"Replace `·bytes·>=·1024·` with `bytes·>=·1024`",{"range":"3960","text":"3961"},{"range":"3962","text":"2808"},{"range":"3963","text":"2808"},{"range":"3964","text":"2659"},{"range":"3965","text":"2808"},{"range":"3966","text":"2659"},{"range":"3967","text":"3466"},"Replace `······(birthdate.getMonth()·>=·fromDate.getMonth()·&&·birthdate.getDay()·>·fromDate.getDay())` with `····(birthdate.getMonth()·>=·fromDate.getMonth()·&&⏎······birthdate.getDay()·>·fromDate.getDay())⏎··`",{"range":"3968","text":"3969"},{"range":"3970","text":"2808"},{"range":"3971","text":"2808"},{"range":"3972","text":"2808"},{"range":"3973","text":"2808"},"Replace `'react'` with `\"react\"`",{"range":"3974","text":"3975"},"Replace `'@fortawesome/react-fontawesome'` with `\"@fortawesome/react-fontawesome\"`",{"range":"3976","text":"3977"},{"range":"3978","text":"2684"},"Replace `'./Select'` with `\"./Select\"`",{"range":"3979","text":"3980"},"Replace `'./Icon'` with `\"./Icon\"`",{"range":"3981","text":"3982"},"Replace `'./Modal'` with `\"./Modal\"`",{"range":"3983","text":"3984"},"Replace `'./DetailsEditNavbar'` with `\"./DetailsEditNavbar\"`",{"range":"3985","text":"3986"},"Replace `'./DurationInput'` with `\"./DurationInput\"`",{"range":"3987","text":"3988"},"Replace `'./TagLink'` with `\"./TagLink\"`",{"range":"3989","text":"3990"},"Replace `'./Toast'` with `\"./Toast\"`",{"range":"3991","text":"3992"},"Replace `'./LocalForage'` with `\"./LocalForage\"`",{"range":"3993","text":"3994"},"Replace `'./VideoHover'` with `\"./VideoHover\"`",{"range":"3995","text":"3996"},"Replace `·useScenesList,·useSceneMarkersList,·useGalleriesList,·useStudiosList,·usePerformersList·}·from·'./ListHook'` with `⏎··useScenesList,⏎··useSceneMarkersList,⏎··useGalleriesList,⏎··useStudiosList,⏎··usePerformersList⏎}·from·\"./ListHook\"`",{"range":"3997","text":"3998"},"Replace `'./image'` with `\"./image\"`",{"range":"3999","text":"4000"},"Replace `'./navigation'` with `\"./navigation\"`",{"range":"4001","text":"4002"},"Replace `'./table'` with `\"./table\"`",{"range":"4003","text":"4004"},"Replace `'./text'` with `\"./text\"`",{"range":"4005","text":"4006"},[724,741],"\"src/hooks/Toast\"",[768,803],"\"@fortawesome/fontawesome-svg-core\";",[824,859],"\"@fortawesome/free-solid-svg-icons\";",[868,906],"\"bootstrap/dist/css/bootstrap.min.css\"",[1606,1666],"\n path=\"/sceneFilenameParser\"\n component={SceneFilenameParser}\n ",[298,299],"",[49,66],"\"react-bootstrap\"",[171,215],"\n FindGalleriesQuery,\n FindGalleriesVariables\n",[524,525],[558,650],"\n result: QueryHookResult,\n filter: ListFilterModel\n ",[707,715],"\n return;\n ",[893,909]," margin: \"0 auto\" ",[1115,1124],"gallery",[1292,1362],"(\n \"\"\n ) : (\n undefined\n )",[1432,1491],"\n {gallery.path}\n ",[485,540],"\n _event: React.MouseEvent,\n obj: { index: number }\n ",[870,922],"file => ({\n src: file.path || \"\",\n caption: file.name\n ",[962,1031],"file => ({\n src: `${file.path}?thumb=true` || \"\",\n width: 1,\n height: 1\n ",[107,142],"\"@fortawesome/fontawesome-svg-core\"",[174,198],"\"react-router-bootstrap\"",[276,299],"\"src/components/Shared\";",[325,327],[341,343],[361,363],[398,398]," ",[414,414]," ",[418,418],[441,441],[457,457],[475,475],[478,478],[480,482]," ",[507,507],[533,533],[551,551],[554,554],[556,558],[578,578],[597,597],[615,615],[618,618],[620,620],[645,645],[659,659],[680,680],[683,683],[685,685],[707,707],[722,724],[740,740],[743,743],[745,745],[762,764],[777,777],[792,792],[891,927],"\n location.pathname === \"/performers\"",[932,951]," ? \"/performers/new\"",[952,990]," : location.pathname === \"/studios\"",[999,1013],"\"/studios/new\"\n ",[1041,1060],"\n path === null ? (\n \"\"\n )",[1065,1065],[1095,1095],[1144,1144],[1161,1161],[1284,1286],[1432,1435],"i",[1818,1851]," exact={true}",[1868,1870],[1921,1923],[1943,1945],[115,149],"

Page not found.

",[58,75],[335,343],[522,530],[555,555],[577,577],[585,595]," ",[624,624],[629,641]," ",[662,662],[703,713],[729,729],[734,734],[767,767],[824,824],[830,830],[847,847],[997,999],"\"\"",[1045,1047],[70,87],[168,179],"\"src/hooks\"",[549,587],"\n sprites,\n previews,\n markers,\n transcodes\n ",[743,857],"\n id=\"sprite-task\"\n checked={sprites}\n label=\"Sprites (for the scene scrubber)\"\n onChange={() => setSprites(!sprites)}\n ",[878,1027],"\n id=\"preview-task\"\n checked={previews}\n label=\"Previews (video previews which play when hovering over a scene)\"\n onChange={() => setPreviews(!previews)}\n ",[1048,1190],"\n id=\"marker-task\"\n checked={markers}\n label=\"Markers (20 second videos which begin at the given timecode)\"\n onChange={() => setMarkers(!markers)}\n ",[1211,1362],"\n id=\"transcode-task\"\n checked={transcodes}\n label=\"Transcodes (MP4 conversions of unsupported video formats)\"\n onChange={() => setTranscodes(!transcodes)}\n ",[1437,1445],"\n Generate\n ",[1495,1557],"\n Generate supporting image, sprite, video, vtt and other files.\n ",[94,111],[233,244],[268,291],"\"src/components/Shared\"",[1114,1115],[1137,1137],[2421,2441],"\n jobStatus.refetch();\n ",[2591,2618],"\"Import\", variant: \"danger\"",[2768,2827],"This will delete the database and\n re-import from",[2997,3017],[3165,3191],"\"Clean\", variant: \"danger\"",[3337,3458]," This will delete db information and\n generated content for all scenes that are no longer found in the\n ",[3593,3625],"\n useFileMetadata: useFileMetadata\n ",[3972,3972],";",[4370,4478],"\n id=\"stop\"\n variant=\"danger\"\n onClick={() =>\n StashService.queryStopJob().then(() => jobStatus.refetch())\n }\n >\n Stop\n ",[4579,4579],[4592,4592],[4637,4717],"status !== \"Idle\" ? (\n \n ) : (\n \"\"\n )",[4719,4719],[4739,4739],[5238,5242],"\n Scan\n ",[5294,5342],"\n Scan for new content and add it to the database.\n ",[5971,5979],"\n Auto Tag\n ",[6031,6067],"\n Auto-tag content based on filenames.\n ",[6355,6431],"\n id=\"clean\"\n variant=\"danger\"\n onClick={() => setIsCleanAlertOpen(true)}\n >\n Clean\n ",[6483,6571],"\n Check for missing files and remove them from the database. This is a\n destructive action.\n ",[6677,6795],"\n id=\"export\"\n type=\"submit\"\n onClick={() =>\n StashService.queryMetadataExport().then(() => {\n jobStatus.refetch();\n })\n }\n >\n Export\n ",[6847,6892],"\n Export the database content into JSON format.\n ",[6960,7039],"\n id=\"import\"\n variant=\"danger\"\n onClick={() => setIsImportAlertOpen(true)}\n >\n Import\n ",[7091,7148],"\n Import from exported JSON. This is a destructive action.\n ",[8,91],"\n Button,\n Form,\n Modal,\n Nav,\n Navbar,\n OverlayTrigger,\n Popover\n} from \"react-bootstrap\"",[725,780],"\n scraper: GQL.ListPerformerScrapersListPerformerScrapers\n ",[999,1007],[1036,1114]," variant=\"primary\" onClick={() => props.onToggleEdit()}",[1125,1126],[1250,1258],[1271,1342]," (\n \n )",[1424,1432],[1445,1529]," (\n \n )",[1595,1605],"\n return;",[1610,1610],"}\n ",[1621,1623],[1665,1675]," ",[1724,1807],"\n props.onDisplayScraperDialog &&\n props.onDisplayScraperDialog(s)\n }\n ",[2218,2218],[2257,2257],[2276,2283]," ))\n : \"\"",[2595,2603],[2649,2656],"\n \n Auto Tag\n \n );",[2824,2832],[3067,3129],"Scenes",[3340,3380]," show={isDeleteAlertOpen}",[3402,3461],"Are you sure you want to delete {name}?",[3558,3564],"\n Delete\n ",[3591,3662],"\n variant=\"secondary\"\n onClick={() => setIsDeleteAlertOpen(false)}\n >\n Cancel\n ",[3723,3724],[3742,3742],[3772,3772],[3791,3791],[4063,4063],[4070,4070],[106,123],[146,169],[249,249],[272,272],[317,317],[336,336],[453,488],"\n secondsToString(props.numericValue)\n ",[626,627],[880,881],[1064,1064],[1681,1711]," vertical={true}",[1728,1811]," disabled={props.disabled} onClick={() => increment()}",[1883,1966]," disabled={props.disabled} onClick={() => decrement()}",[2051,2051],[2226,2271]," onClick={() => onReset()}",[2330,2330],[2493,2494],[2682,2702],"maybeRenderReset()",[2715,2732],"renderButtons()",[2804,2804],[22,39],[117,182],"\n PerformerDataFragment,\n SceneMarkerDataFragment,\n TagDataFragment\n",[916,941],"\n props.marker.seconds || 0\n ",[971,1029]," className=\"tag-item\" variant=\"secondary\"",[24,41],[314,322],[1532,1554],"{!data || loading ? (",[1555,1557],[1628,1630],[1674,1706],"
\n ) : (\n undefined\n )",[21,38],[298,327]," className=\"col-4\"",[439,483]," backgroundImage: `url(${studio.image_path})` ",[570,603],"{studio.name}",[89,129],"\n FindStudiosQuery,\n FindStudiosVariables\n",[476,477],[510,598],"\n result: QueryHookResult,\n filter: ListFilterModel\n ",[653,661],[808,867],"studio => (\n \n ",[527,588],"\n item: GQL.SlimSceneDataFragment | GQL.SceneMarkerDataFragment\n ",[662,683],"\n props: IWallItemProps\n",[1107,1130],"\n resetOnMouseLeave: true\n ",[1161,1258],"\n !!config.data && !!config.data.configuration\n ? config.data.configuration.interface.wallShowTitle\n ",[1922,1930],[2585,2589],"\"10\"",[2604,2604],[2671,2673],[2799,2889],"\n `${props.sceneMarker!.title} - ${TextUtils.secondsToTimestamp(\n props.sceneMarker.seconds\n )}`\n ",[2942,2988],"tag => (\n {tag.name}\n ",[3015,3103],"\n \n {props.sceneMarker.primary_tag.name}\n \n ",[3664,3696],"\n className.push(\"double-scale\");\n ",[3763,3801],"\n style.transformOrigin = props.origin;\n ",[4328,4343]," display: \"none\" ",[4466,4550],"\n alt=\"Preview\"\n src={previewPath || screenshotPath}\n onError={() => previewNotFound()}\n ",[4584,4584]," (",[4673,4689]," lineHeight: 1 }}>{title}",[4704,4712],"{tags",[4714,4716],[4745,4755],") : (",[4768,4779],[4790,4790],")",[307,368],[444,466],"\n props: IWallPanelProps\n",[867,881],"\n return \"top\";\n ",[906,925],"\n return \"top left\";\n ",[1004,1024],"\n return \"top right\";\n ",[1053,1067],[1130,1153],"\n return \"bottom right\";\n ",[1205,1227],"\n return \"bottom left\";\n ",[1292,1309],"\n return \"bottom\";\n ",[1369,1386],[1433,1455],"\n return \"center left\";\n ",[1476,1499],"\n return \"center right\";\n ",[1598,1606],[2020,2028],[145,162],"\"react-bootstrap\";",[184,207],[281,307],"\n Criterion,\n CriterionType\n",[1080,1102],"\n props: IAddFilterProps\n",[1129,1152]," = useRef\n ",[2671,2758],"\n criterion.options &&\n (value === undefined || value === \"\" || typeof value === \"number\")\n ",[3034,3067],"\n ? props.editingCriterion.getId()\n ",[3368,3376],[3463,3471],"\n return;\n ",[3662,3663],[3700,3702],[3944,4043],"\n criterion.modifier === CriterionModifier.IsNull ||\n criterion.modifier === CriterionModifier.NotNull\n ",[4559,4634],"items =>\n (criterion.value = items.map(i => ({ id: i.id, label: i.name! })))\n ",[5018,5019],[5048,5066]," ",[5404,5404],[5471,5509],"{renderModifier()}",[5543,5579],"{renderSelect()}",[5688,5696],[5909,5909],"\n ",[5922,5923],[5964,5966],[6316,6388]," onClick={() => onToggle()} active={isOpen}",[6478,6508]," show={isOpen}",[6873,6880],"\n {title}\n ",[113,206],"\n Badge,\n Button,\n ButtonGroup,\n Dropdown,\n Form,\n OverlayTrigger,\n Tooltip\n} from \"react-bootstrap\"",[230,253],[1283,1306],"\n props: IListFilterProps\n",[1441,1441],"\n ",[1529,1550],"\n Criterion | undefined\n ",[2579,2587],[2820,2828],[2949,2957],"option",[3022,3030],"\n {option}\n ",[3198,3198],"\n ",[3248,3248],[3294,3294],[3425,3425],[3471,3471],[3517,3517],[3594,3602],[3629,3703],"\n overlay={\n {getLabel(option)}\n }\n ",[4029,4040],"criterion",[4617,4688],"(\n onSelectAll()}>Select All\n )",[4776,4849],"(\n onSelectNone()}>\n Select None\n \n )",[4907,4962],"renderSelectAll(), renderSelectNone()",[5035,5038],"o",[5065,5124],"\n {o.text}\n ",[5409,5442],"{options}",[5524,5525],[5848,5898],"\n onChangeZoom(Number.parseInt(event.target.value))\n ",[5913,5913],[6430,6490],"PAGE_SIZE_OPTIONS.map(s => (\n \n ))",[6773,6828],"{renderSortByOptions()}",[6897,6897],"\n ",[6908,7026]," \n {props.filter.sortDirection === \"asc\"\n ? \"Ascending\"\n : \"Descending\"}\n ",[7049,7050]," }\n ",[7128,7200],"\n icon={\n props.filter.sortDirection === \"asc\"\n ? \"caret-up\"\n : \"caret-down\"\n }\n ",[7682,7720],"{renderMore()}",[7762,7835],"\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n margin: \"10px auto\"\n }}\n ",[63,80],[366,400],"\n IPaginationProps,\n IPaginationState\n",[540,541],[726,732],[749,849],"\n this.props.totalItems !== prevProps.totalItems ||\n this.props.itemsPerPage !== prevProps.itemsPerPage\n ",[1003,1016],"\n return null;\n ",[1199,1204],"\n First\n ",[1356,1364],"\n Previous\n ",[1571,1575],"\n Next\n ",[1742,1746],"\n Last\n ",[2021,2027],"\n {page}\n ",[2141,2149],[2195,2247],"\n this.props.totalItems,\n page,\n this.props.itemsPerPage\n ",[2270,2280],"\n page = 1;\n ",[2322,2352],"\n page = pagerState.totalPages;\n ",[2407,2438],"\n this.props.onChangePage(page);\n ",[2470,2527],"\n totalItems: number,\n currentPage: number,\n pageSize: number\n ",[3218,3277],"endPage + 1 - startPage).keys()].map(\n i => startPage + i\n ",[3323,3324],[48,65],[369,395],"\n props: IPerformerCardProps\n",[516,559],"\n props.ageFromDate ? \" in this scene.\" : \".\"\n ",[650,658],[671,758],"
FAVORITE
",[930,983]," backgroundImage: `url(${props.performer.image_path})` ",[1121,1163],"{props.performer.name}",[1215,1217],[1233,1345],"\n Stars in {props.performer.scene_count}{\" \"}\n \n scenes\n \n ",[132,150],"\"react-router-dom\"",[160,206],"\n FindPerformersQuery,\n FindPerformersVariables\n",[742,743],[850,851],[886,980],"\n result: QueryHookResult,\n filter: ListFilterModel\n ",[1352,1481],"\n singleResult &&\n singleResult.data &&\n singleResult.data.findPerformers &&\n singleResult.data.findPerformers.performers.length === 1\n ",[1719,1743],"\n filter: ListFilterModel\n ",[1801,1809],[1962,2012],"p => (\n \n ",[2111,2183],"(\n \n )",[57,74],[189,212],[407,445],"\n props: IPerformerListTableProps\n) => {",[491,492],[553,561],[721,722],[1007,1008],[1151,1151],"\n ",[1159,1159],[1204,1205],[1264,1264],[1269,1334]," {renderPerformerImage(performer)}",[1340,1377]," {performer.name}",[1525,1525],[1543,1543],[1565,1633]," {performer.aliases ? performer.aliases : \"\"}",[1647,1708]," {maybeRenderFavoriteHeart(performer)}",[1714,1722]," ",[1727,1727],[1804,1804],[1847,1847],[1855,1863],[1877,1922]," {performer.birthdate}",[1928,1978]," {performer.height}",[1984,1990],[2011,2011],[2035,2035],[2068,2068],[2101,2101],[2119,2119],[2124,2144]," {props.performers.map(renderPerformerRow)}",[2443,2449],[2458,2458],[2485,2486],[49,131],"\n Button,\n ButtonGroup,\n Card,\n Form,\n Popover,\n OverlayTrigger\n} from \"react-bootstrap\"",[189,201],"\"classnames\"",[382,405],[595,616],": boolean, shiftKey",[692,714],"\n props: ISceneCardProps\n",[857,881],"\n resetOnMouseLeave: false\n ",[962,1062],"\n !!config.data && !!config.data.configuration\n ? config.data.configuration.interface.showStudioAsText\n ",[1142,1150],[1176,1265],"\n className={`rating-banner ${\n props.scene.rating ? `rating-${props.scene.rating}` : \"\"\n }`}\n ",[1467,1566],"(\n \n {\" \"}\n {TextUtils.resolution(props.scene.file.height)}\n \n ) : (\n \"\"\n )",[1619,1713],"\n props.scene.file.duration >= 1\n ? TextUtils.secondsToTimestamp(props.scene.file.duration)\n : \"\"",[1813,1819],[1932,1933],[2125,2209]," to={`/studios/${props.scene.studio.id}`} style={style}",[2349,2355],[2429,2457],"props.scene.tags.map(tag",[2518,2519],[2864,2870],[2950,2999],"props.scene.performers.map(performer",[3005,3007],[3026,3040],[3096,3098],[3104,3122],[3157,3159],[3235,3292],"style={{ backgroundImage: `url(${performer.image_path})` ",[3309,3318],"/",[3320,3322],[3401,3403],[3410,3412],[3433,3446],"})",[3761,3815],"if (props.scene.scene_markers.length <= 0)",[3892,3932],"props.scene.scene_markers.map(marker",[4101,4102],[4417,4417],[4448,4450],[4493,4537]," props.scene.scene_markers.length > 0\n ",[5480,5480],[5736,5791],"\n shiftKey = event.shiftKey;\n event.stopPropagation();\n }",[5813,5911],"\n to={`/scenes/${props.scene.id}`}\n className={cx(\"image\", \"previewable\", { portrait: isPortrait() })}\n ",[6140,6174],"\"preview\", { portrait: isPortrait() ",[6503,6523],"\n ? props.scene.title\n ",[337,361],"\n props: ISceneDetailProps\n",[458,466],[657,665],[706,711],"tag",[869,869],[958,978],"\n ? props.scene.title\n ",[1095,1097],[1167,1169],[1204,1277],"(\n
Resolution: {TextUtils.resolution(props.scene.file.height)}
\n ) : (\n \"\"\n )",[49,66],[302,333],"\n props: ISceneFileInfoPanelProps\n",[568,637],"\n \n {\"file://\" + props.scene.path}\n {\" \"}\n ",[756,821],"\n {props.scene.paths.stream}{\" \"}\n ",[928,936],[1169,1177],[1411,1419],[1486,1538],"\n {props.scene.file.width} x {props.scene.file.height}\n ",[1650,1658],[1879,1887],[2112,2120],[2333,2341],[2547,2555],[300,325],"\n IScenePerformerPanelProps\n",[412,423],"performer",[447,519],"\n key={performer.id}\n performer={performer}\n ageFromDate={props.scene.date}\n ",[576,599],"{cards}",[132,150],[160,221],"\n FindScenesQuery,\n FindScenesVariables,\n SlimSceneDataFragment\n",[844,845],[1031,1117],"\n result: QueryHookResult,\n filter: ListFilterModel\n ",[1510,1627],"\n singleResult &&\n singleResult.data &&\n singleResult.data.findScenes &&\n singleResult.data.findScenes.scenes.length === 1\n ",[1849,1936],"\n result: QueryHookResult,\n selectedIds: Set\n ",[2034,2052],"\n return undefined;\n ",[2127,2128],[2184,2188],"id",[2224,2231],"scene",[2380,2463]," {\n return;\n }}\n ",[2515,2589],"\n scene: SlimSceneDataFragment,\n selectedIds: Set,\n zoomIndex: number\n ",[2811,2865],"\n listData.onSelectChange(scene.id, selected, shiftKey)\n ",[2881,2881],[2912,3043],"\n result: QueryHookResult,\n filter: ListFilterModel,\n selectedIds: Set,\n zoomIndex: number\n ",[3097,3105],[3250,3307],"scene =>\n renderSceneCard(scene, selectedIds, zoomIndex)\n ",[3459,3459],[605,607],[618,622],[633,635],[650,652],[664,664],[719,755],"\n IScenePlayerProps,\n IScenePlayerState\n",[1143,1162]," scrubberPosition: 0 ",[1366,1368],[1426,1428],[1447,1449],[1464,1468],[1524,1528],[1565,1577],[1598,1602],[1633,1645],[1678,1682],[1703,1713]," ",[1716,1718],[1792,1824],"\n ? this.player.getPlaybackRate()\n ",[1893,1894],[1957,1989],[2058,2059],[2073,2108],"\n this.player.setPlaybackRate(1);\n }",[2122,2199],"\n this.player.getState().paused ? this.player.play() : this.player.pause();\n }",[2244,2258],"\n this.onReset();\n ",[2278,2295],"\n this.onDecrease();\n ",[2315,2332],"\n this.onIncrease();\n ",[2353,2367],"\n this.onPause();\n ",[2372,2372],[2901,2941],"\n ? this.props.config.maximumLoopDuration\n ",[2957,3041]," (\n !!scene.file.duration &&\n !!maxLoopDuration &&\n scene.file.duration < maxLoopDuration\n )",[3139,3150],"\n return {};\n ",[3290,3341],"\n | ((seekToPosition: number, _videoTag: any) => void)\n ",[3394,3423],"\n | ((_videoTag: any) => number)\n ",[3710,3771],"\n this.props.scene.paths.stream + \"?start=\" + seekToPosition",[3953,3953],[4133,4134],[4224,4225],[4235,4236],[4337,4338],[4404,4427],"\n this.props.autoplay ||\n ",[4983,5009]," scrubberPosition: position ",[5258,5284],[5501,5525],"\n props: IScenePlayerProps\n",[5532,5534],[5587,5723],"return (\n goBack()}\n >\n <\n ",[10202,10244],"{renderTags()}",[10339,10422],"\n className=\"scrubber-button\"\n id=\"scrubber-forward\"\n onClick={() => goForward()}\n >\n >\n ",[12,18],[298,304],[620,621],[640,733],"",[781,805],"\n return \"main-jwplayer\";\n ",[72,88],"\"apollo-link-ws\"",[120,143],"\"apollo-cache-inmemory\"",[1225,1226],[1341,1342],[1485,1538],"\"OperationDefinition\" && operation === \"subscription\"",[1577,1578],[1945,1946],[2249,2249],"\n ",[2289,2289],[2318,2328]," })\n ",[2548,2549],[2557,2558],[3052,3053],[3061,3062],[3396,3397],[3942,3943],[3951,3952],[4335,4336],[4506,4507],[4515,4516],[5038,5039],[5047,5048],[5414,5415],[5481,5527],"\n return GQL.useFindGallery({ variables: { id } });\n ",[5572,5616],"\n return GQL.useFindScene({ variables: { id } });\n ",[5745,5766]," variables: { id }, skip ",[5894,5915],[6648,6649],[6700,6763],"\n variables: { scraper_id: scraperId, query: q },\n skip: q === \"\"\n ",[6806,6869],"\n scraperId: string,\n scrapedPerformer: GQL.ScrapedPerformerInput\n ",[6873,6983]," return GQL.useScrapePerformer({\n variables: { scraper_id: scraperId, scraped_performer: scrapedPerformer }\n ",[7133,7195],"\n return GQL.useScrapeFreeonesPerformers({ variables: { q } });\n ",[7234,7265],"\n return GQL.useMarkerStrings();\n ",[7298,7323],"\n return GQL.useAllTags();\n ",[7365,7399],"\n return GQL.useAllTagsForFilter();\n ",[7447,7487],"\n return GQL.useAllPerformersForFilter();\n ",[7532,7569],"\n return GQL.useAllStudiosForFilter();\n ",[7675,7705]," variables: { scene_id: sceneId } ",[7741,7764],"\n return GQL.useStats();\n ",[7797,7822],"\n return GQL.useVersion();\n ",[7862,7893],"\n return GQL.useConfiguration();\n ",[7943,7994],"\n return GQL.useDirectories({ variables: { path } });\n ",[8291,8368],"\n StashService.invalidateQueries(\n StashService.performerMutationImpactedQueries\n ",[8531,8608],[8774,8851],[9208,9281],"\n StashService.invalidateQueries(\n StashService.sceneMutationImpactedQueries\n ",[9717,9794],"\n StashService.invalidateQueries(\n StashService.sceneBulkMutationImpactedQueries\n ",[9925,9935],": input } ",[10084,10157],[10423,10497],"\n StashService.invalidateQueries(\n StashService.studioMutationImpactedQueries\n ",[10652,10726],[10884,10958],[11271,11272],[11544,11545],[11747,11747],"\n ",[11938,11994],"\n variables: { input },\n refetchQueries: [\"Configuration\"]\n ",[12115,12171],[12415,12425],"\"no-cache\"",[12521,12531],[12702,12703],[12939,12940],[12948,12949],[13000,13062],[13266,13267],[13275,13276],[13493,13494],[13502,13503],[13708,13709],[13717,13718],[13765,13811],"\n scraperId: string,\n scene: GQL.SceneUpdateInput\n ",[13984,13985],[13993,13994],[14236,14237],[14491,14492],[14750,14751],[14940,14941],[15133,15134],[15326,15327],[15546,15562]," filter: filter }",[15617,15673],"\n filter: GQL.FindFilterType,\n config: GQL.SceneParserInput\n ",[15810,15840]," filter: filter, config: config ",[15876,15877],[123,124],[417,445],"\n IInterfaceConfig | undefined\n",[660,661],[1614,1654]," data: json, setData: setJson, error: err ",[448,479],"\n options: IVideoHoverHookOptions\n ",[726,824],"\n !!config.data && !!config.data.configuration\n ? config.data.configuration.interface.soundOnPreview\n ",[918,926],[1138,1163],"(isPlaying.current = false)",[1269,1277],[1366,1405]," videoEl, isPlaying, isHovering, options ",[1571,1579],[1664,1671],"error",[1893,1901],[335,336],[466,501],",\n document.getElementById(\"root\")\n",[149,187],"| \"none\"\n | \"rating\"\n | \"resolution\"",[190,202],"| \"favorite\"",[205,320],"| \"hasMarkers\"\n | \"isMissing\"\n | \"tags\"\n | \"sceneTags\"\n | \"performers\"\n | \"studios\"\n | \"birth_year\"\n | \"age\"",[322,336]," | \"ethnicity\"",[338,434]," | \"country\"\n | \"eye_color\"\n | \"height\"\n | \"measurements\"\n | \"fake_tits\"\n | \"career_length\"",[437,466],"| \"tattoos\"\n | \"piercings\"\n |",[643,643],[679,679],[721,721],[765,765],[809,809],[855,855],[895,895],[934,934],[980,980],[1023,1023],[1066,1066],[1105,1105],[1143,1143],[1185,1185],[1227,1227],[1268,1268],[1312,1312],[1359,1359],[1407,1407],[1453,1453],[1495,1495],[1537,1537],[1601,1655],"\n modifier: CriterionModifier = CriterionModifier.Equals\n ",[1734,1791],"\n return { value: CriterionModifier.Equals, label: \"Equals\" ",[1833,1897],"\n return { value: CriterionModifier.NotEquals, label: \"Not Equals\" ",[1941,2009],"\n return { value: CriterionModifier.GreaterThan, label: \"Greater Than\" ",[2050,2112],"\n return { value: CriterionModifier.LessThan, label: \"Less Than\" ",[2151,2209],"\n return { value: CriterionModifier.IsNull, label: \"Is NULL\" ",[2249,2309],"\n return { value: CriterionModifier.NotNull, label: \"Not NULL\" ",[2353,2421],"\n return { value: CriterionModifier.IncludesAll, label: \"Includes All\" ",[2462,2523],"\n return { value: CriterionModifier.Includes, label: \"Includes\" ",[2564,2625],"\n return { value: CriterionModifier.Excludes, label: \"Excludes\" ",[3078,3101],"\n modifierString = \"is\";\n ",[3148,3175],"\n modifierString = \"is not\";\n ",[3224,3260],"\n modifierString = \"is greater than\";\n ",[3306,3339],"\n modifierString = \"is less than\";\n ",[3383,3411],"\n modifierString = \"is null\";\n ",[3456,3488],"\n modifierString = \"is not null\";\n ",[3534,3563],"\n modifierString = \"includes\";\n ",[3612,3645],"\n modifierString = \"includes all\";\n ",[3691,3720],"\n modifierString = \"excludes\";\n ",[3742,3742],[3808,3897],"\n this.modifier === CriterionModifier.IsNull ||\n this.modifier === CriterionModifier.NotNull\n ",[4106,4112],"item",[4957,4974],": string, value",[5488,5489],[5583,5634],": CriterionType, parameterName?: string, options?",[6435,6436],[6529,6580],[72,123]," Criterion, CriterionType, ICriterionOption ",[72,123],[72,123],[412,469],"\n \"title\",\n \"url\",\n \"date\",\n \"gallery\",\n \"studio\",\n \"performers\"\n ",[72,123],[111,162],[702,703],[72,123],[210,210],"\n ",[760,761],[72,123],[214,214],[111,162],[626,627],[162,213],[281,322],"\n GQL.AllTagsForFilterAllTags,\n ILabeledId[]\n",[652,653],[8,30]," CriterionModifier ",[75,135],"\n Criterion,\n CriterionType,\n StringCriterion,\n NumberCriterion\n",[679,679],"\n ",[726,726],[779,779],[834,834],[889,889],[945,945],[995,995],[1051,1051],[1113,1113],[1167,1167],[1239,1247],[1290,1292],[1359,1361],[1385,1395],[1450,1452],[1526,1528],[1588,1598],[1660,1662],[1665,1667],[171,172],[218,313],"\n Criterion,\n ICriterionOption,\n CriterionType,\n CriterionOption,\n NumberCriterion,\n StringCriterion\n",[352,396],"\n FavoriteCriterion,\n FavoriteCriterionOption\n",[434,482],"\n HasMarkersCriterion,\n HasMarkersCriterionOption\n",[523,569],"\n IsMissingCriterion,\n IsMissingCriterionOption\n",[664,712],"\n PerformersCriterion,\n PerformersCriterionOption\n",[828,876],"\n ResolutionCriterion,\n ResolutionCriterionOption\n",[995,1057],"\n SceneTagsCriterionOption,\n TagsCriterion,\n TagsCriterionOption\n",[1140,1170]," DisplayMode, FilterMode ",[1998,2020],"\n this.sortBy = \"date\";\n ",[2053,2144],"\n \"title\",\n \"path\",\n \"rating\",\n \"date\",\n \"filesize\",\n \"duration\",\n \"framerate\",\n \"bitrate\",\n \"random\"\n ",[2265,2266],[2634,2635],[2734,2756],"\n this.sortBy = \"name\";\n ",[2872,2937],"DisplayMode.Grid, DisplayMode.List",[2967,2968],[3037,3038],[3483,3528],"\n numberCriteria.concat(stringCriteria).map(c",[3534,3534],[3598,3608],[3695,3717],[3810,3847],"DisplayMode.Grid",[3883,3929],"new NoneCriterionOption()",[4018,4040],"\n this.sortBy = \"path\";\n ",[4117,4154],"DisplayMode.List",[4190,4236],[4328,4351],"\n this.sortBy = \"title\";\n ",[4384,4445],"\n \"title\",\n \"seconds\",\n \"scene_id\",\n \"random\",\n \"scenes_updated_at\"\n ",[4483,4520],"DisplayMode.Wall",[4714,4715],[4861,4907],[4970,5017],"\n this.displayMode = this.displayModeOptions[0];\n ",[5104,5120]," (rawParms)",[6393,6404],[6902,6903],[6953,6966]," encode: false ",[7258,7337],"\n this.sortDirection === \"asc\"\n ? SortDirectionEnum.Asc\n : SortDirectionEnum.Desc",[7461,7473],"(criterion",[7620,7675],"\n value: ratingCrit.value,\n modifier: ratingCrit.modifier\n ",[7811,7851],"\n result.resolution = ResolutionEnum.Low;\n ",[7883,7928],"\n result.resolution = ResolutionEnum.Standard;\n ",[7960,8007],"\n result.resolution = ResolutionEnum.StandardHd;\n ",[8040,8083],"\n result.resolution = ResolutionEnum.FullHd;\n ",[8113,8155],"\n result.resolution = ResolutionEnum.FourK;\n ",[8534,8606],"\n value: tagsCrit.value.map(tag => tag.id),\n modifier: tagsCrit.modifier\n ",[8746,8820],"\n value: perfCrit.value.map(perf => perf.id),\n modifier: perfCrit.modifier\n ",[8951,9029],"\n value: studCrit.value.map(studio => studio.id),\n modifier: studCrit.modifier\n ",[9214,9225],[9323,9323],"\n ",[9505,9552],"\n value: byCrit.value,\n modifier: byCrit.modifier\n ",[9855,9904],"\n value: ethCrit.value,\n modifier: ethCrit.modifier\n ",[10035,10088],"\n value: cntryCrit.value,\n modifier: cntryCrit.modifier\n ",[10574,10619],"\n value: mCrit.value,\n modifier: mCrit.modifier\n ",[10938,10985],"\n value: clCrit.value,\n modifier: clCrit.modifier\n ",[11696,11707],[11846,11918],[12056,12138],"\n value: sceneTagsCrit.value.map(tag => tag.id),\n modifier: sceneTagsCrit.modifier\n ",[12284,12380],"\n value: performersCrit.value.map(performer => performer.id),\n modifier: performersCrit.modifier\n ",[48,49],[140,141],[890,891],[897,898],[1377,1378],[2320,2321],[2599,2613],"registration",[3338,3339],[3976,3984],"(error",[4242,4252],"response",[4654,4669],"(registration",[5019,5020],[5149,5163],[430,475],"\n performer: Partial\n",[502,506],[644,718],"\n { id: performer.id, label: performer.name || `Performer ${performer.id}` }\n ",[809,809],[903,907],[1042,1104],"\n { id: studio.id, label: studio.name || `Studio ${studio.id}` }\n ",[1195,1195],[1277,1281],[1560,1560],[1648,1652],[1945,1945],[1975,2024],"\n sceneMarker: Partial\n",[2075,2079],[2162,2162],[2295,2295],[15,67],"\"bytes\", \"kB\", \"MB\", \"GB\", \"TB\", \"PB\"",[89,146],"\n value?: string,\n limit: number = 100,\n tail: string = \"...\"\n",[166,170],[211,254]," ? value.substring(0, limit) + tail",[265,265],[398,402],[441,456],"bytes >= 1024",[553,553],[900,900],[970,974],[1038,1038],[1122,1126],[1324,1324],[1370,1463]," (birthdate.getMonth() >= fromDate.getMonth() &&\n birthdate.getDay() > fromDate.getDay())\n ",[1501,1501],[1636,1636],[2022,2022],[2142,2142],[18,25],"\"react\"",[59,91],"\"@fortawesome/react-fontawesome\"",[118,153],[149,159],"\"./Select\"",[194,202],"\"./Icon\"",[237,246],"\"./Modal\"",[282,303],"\"./DetailsEditNavbar\"",[335,352],"\"./DurationInput\"",[378,389],"\"./TagLink\"",[36,45],"\"./Toast\"",[87,102],"\"./LocalForage\"",[135,149],"\"./VideoHover\"",[159,267],"\n useScenesList,\n useSceneMarkersList,\n useGalleriesList,\n useStudiosList,\n usePerformersList\n} from \"./ListHook\"",[38,47],"\"./image\"",[85,99],"\"./navigation\"",[139,148],"\"./table\"",[187,195],"\"./text\""] \ No newline at end of file diff --git a/ui/v2.5/src/components/Settings/SettingsLogsPanel.tsx b/ui/v2.5/src/components/Settings/SettingsLogsPanel.tsx index 8270a25ea..18714b915 100644 --- a/ui/v2.5/src/components/Settings/SettingsLogsPanel.tsx +++ b/ui/v2.5/src/components/Settings/SettingsLogsPanel.tsx @@ -1,4 +1,4 @@ -import React, { useState, useEffect, useRef } from "react"; +import React, { useState } from "react"; import { Form, Col } from 'react-bootstrap'; import * as GQL from "src/core/generated-graphql"; import { StashService } from "src/core/StashService"; @@ -22,6 +22,29 @@ function convertTime(logEntry: GQL.LogEntryDataFragment) { return dateStr; } +function levelClass(level : string) { + return level.toLowerCase().trim(); +} + +interface ILogElementProps { + logEntry : LogEntry +} + +const LogElement: React.FC = ({ logEntry }) => { + // pad to maximum length of level enum + var level = logEntry.level.padEnd(GQL.LogLevel.Progress.length); + + return ( + <> + {logEntry.time}  + {level}  + {logEntry.message} +
+ + ); +} + + class LogEntry { public time: string; public level: string; @@ -40,120 +63,29 @@ class LogEntry { } } +// maximum number of log entries to display. Subsequent entries will truncate +// the list, dropping off the oldest entries first. +const MAX_LOG_ENTRIES = 200; +const logLevels = ["Debug", "Info", "Warning", "Error"]; + export const SettingsLogsPanel: React.FC = () => { const { data, error } = StashService.useLoggingSubscribe(); const { data: existingData } = StashService.useLogs(); - - const logEntries = useRef([]); const [logLevel, setLogLevel] = useState("Info"); - const [filteredLogEntries, setFilteredLogEntries] = useState([]); - const lastUpdate = useRef(0); - const updateTimeout = useRef(); - // maximum number of log entries to display. Subsequent entries will truncate - // the list, dropping off the oldest entries first. - const MAX_LOG_ENTRIES = 200; + const oldData = (existingData?.logs ?? []).map(e => new LogEntry(e)); + const newData = (data?.loggingSubscribe ?? []).map(e => new LogEntry(e)); - function truncateLogEntries(entries : LogEntry[]) { - entries.length = Math.min(entries.length, MAX_LOG_ENTRIES); - } + const filteredLogEntries = [...newData.reverse(), ...oldData] + .filter(filterByLogLevel).slice(0, MAX_LOG_ENTRIES); - function prependLogEntries(toPrepend : LogEntry[]) { - var newLogEntries = toPrepend.concat(logEntries.current); - truncateLogEntries(newLogEntries); - logEntries.current = newLogEntries; - } - - function appendLogEntries(toAppend : LogEntry[]) { - var newLogEntries = logEntries.current.concat(toAppend); - truncateLogEntries(newLogEntries); - logEntries.current = newLogEntries; - } - - useEffect(() => { - if (!data) { return; } - - // append data to the logEntries - var convertedData = data.loggingSubscribe.map(convertLogEntry); - - // filter subscribed data as it comes in, otherwise we'll end up - // truncating stuff that wasn't filtered out - convertedData = convertedData.filter(filterByLogLevel) - - // put newest entries at the top - convertedData.reverse(); - prependLogEntries(convertedData); - - updateFilteredEntries(); - }, [data]); - - useEffect(() => { - if (!existingData || !existingData.logs) { return; } - - var convertedData = existingData.logs.map(convertLogEntry); - appendLogEntries(convertedData); - - updateFilteredEntries(); - }, [existingData]); - - function updateFilteredEntries() { - if (!updateTimeout.current) { - console.log("Updating after timeout"); - } - updateTimeout.current = undefined; - - var filteredEntries = logEntries.current.filter(filterByLogLevel); - setFilteredLogEntries(filteredEntries); - - lastUpdate.current = new Date().getTime(); - } - - useEffect(() => { - updateFilteredEntries(); - }, [logLevel]); - - function convertLogEntry(logEntry : GQL.LogEntryDataFragment) { - return new LogEntry(logEntry); - } - - function levelClass(level : string) { - return level.toLowerCase().trim(); - } - - interface ILogElementProps { - logEntry : LogEntry - } - - function LogElement(props : ILogElementProps) { - // pad to maximum length of level enum - var level = props.logEntry.level.padEnd(GQL.LogLevel.Progress.length); - - return ( - <> - {props.logEntry.time}  - {level}  - {props.logEntry.message} -
- - ); - } - - function maybeRenderError() { - if (error) { - return ( - <> - Error connecting to log server: {error.message}
- - ); - } - } - - const logLevels = ["Debug", "Info", "Warning", "Error"]; + const maybeRenderError = error + ?
Error connecting to log server: {error.message}
+ : ''; function filterByLogLevel(logEntry : LogEntry) { - if (logLevel === "Debug") { + if (logLevel === "Debug") return true; - } var logLevelIndex = logLevels.indexOf(logLevel); var levelIndex = logLevels.indexOf(logEntry.level); @@ -179,7 +111,7 @@ export const SettingsLogsPanel: React.FC = () => {
- {maybeRenderError()} + {maybeRenderError} {filteredLogEntries.map((logEntry) => )} diff --git a/ui/v2.5/src/components/Shared/DurationInput.tsx b/ui/v2.5/src/components/Shared/DurationInput.tsx index 152af3df7..d37dfbb7e 100644 --- a/ui/v2.5/src/components/Shared/DurationInput.tsx +++ b/ui/v2.5/src/components/Shared/DurationInput.tsx @@ -118,13 +118,14 @@ export const DurationInput: React.FC = (props: IProps) => { setValue(e.target.value)} onBlur={() => props.onValueChange(stringToSeconds(value))} placeholder="hh:mm:ss" /> - {maybeRenderReset()} + { maybeRenderReset() } + { renderButtons() } diff --git a/ui/v2.5/src/components/Shared/FolderSelect/FolderSelect.tsx b/ui/v2.5/src/components/Shared/FolderSelect/FolderSelect.tsx index 532cfba64..a6c72cdcf 100644 --- a/ui/v2.5/src/components/Shared/FolderSelect/FolderSelect.tsx +++ b/ui/v2.5/src/components/Shared/FolderSelect/FolderSelect.tsx @@ -52,7 +52,7 @@ export const FolderSelect: React.FC = (props: IProps) => { defaultValue={currentDirectory} /> - {(!data || !data.directories || loading) ? : undefined} + {(!data || !data.directories || loading) ? : ''} @@ -75,7 +75,7 @@ export const FolderSelect: React.FC = (props: IProps) => { {renderDialog()} {selectedDirectories.map((path) => { - return ; + return
{path}
; })}
diff --git a/ui/v2.5/src/components/performers/PerformerDetails/Performer.tsx b/ui/v2.5/src/components/performers/PerformerDetails/Performer.tsx index 7a4563956..6c0867044 100644 --- a/ui/v2.5/src/components/performers/PerformerDetails/Performer.tsx +++ b/ui/v2.5/src/components/performers/PerformerDetails/Performer.tsx @@ -1,6 +1,5 @@ import React, { useEffect, useState } from "react"; import { Button, Form, Spinner, Table } from 'react-bootstrap'; -import _ from "lodash"; import { useParams, useHistory } from 'react-router-dom'; import * as GQL from "src/core/generated-graphql"; import { StashService } from "src/core/StashService"; @@ -48,7 +47,7 @@ export const Performer: React.FC = () => { const Scrapers = StashService.useListPerformerScrapers(); const [queryableScrapers, setQueryableScrapers] = useState([]); - const { data, error, loading } = StashService.useFindPerformer(id); + const { data, error } = StashService.useFindPerformer(id); const updatePerformer = StashService.usePerformerUpdate(getPerformerInput() as GQL.PerformerUpdateInput); const createPerformer = StashService.usePerformerCreate(getPerformerInput() as GQL.PerformerCreateInput); const deletePerformer = StashService.usePerformerDestroy(getPerformerInput() as GQL.PerformerDestroyInput); @@ -75,19 +74,16 @@ export const Performer: React.FC = () => { } useEffect(() => { - setIsLoading(loading); - if (!data || !data.findPerformer || error) - return; - setPerformer(data.findPerformer); + setIsLoading(false); + if(data?.findPerformer) + setPerformer(data.findPerformer); }, [data]); useEffect(() => { setImagePreview(performer.image_path); setImage(undefined); updatePerformerEditState(performer); - if (!isNew) { - setIsEditing(false); - } + setIsEditing(false); }, [performer]); function onImageLoad(this: FileReader) { diff --git a/ui/v2.5/src/components/scenes/SceneDetails/SceneMarkersPanel.tsx b/ui/v2.5/src/components/scenes/SceneDetails/SceneMarkersPanel.tsx index efc68dbb1..a922dc152 100644 --- a/ui/v2.5/src/components/scenes/SceneDetails/SceneMarkersPanel.tsx +++ b/ui/v2.5/src/components/scenes/SceneDetails/SceneMarkersPanel.tsx @@ -52,8 +52,8 @@ export const SceneMarkersPanel: React.FC = (props: ISce

- onClickMarker(marker)}>{marker.title} - {!isEditorOpen ? onOpenEditor(marker)}>Edit : undefined} + + {!isEditorOpen ? : ''}
{TextUtils.secondsToTimestamp(marker.seconds)} diff --git a/ui/v2.5/src/components/scenes/SceneFilenameParser.tsx b/ui/v2.5/src/components/scenes/SceneFilenameParser.tsx index 3d3115d1c..83a878b45 100644 --- a/ui/v2.5/src/components/scenes/SceneFilenameParser.tsx +++ b/ui/v2.5/src/components/scenes/SceneFilenameParser.tsx @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from "react"; +import React, { useEffect, useState, useCallback } from "react"; import { Badge, Button, Card, Collapse, Dropdown, DropdownButton, Form, Table, Spinner } from 'react-bootstrap'; import _ from "lodash"; import { StashService } from "src/core/StashService"; @@ -255,10 +255,28 @@ const builtInRecipes = [ } ]; +const initialParserInput = { + pattern: "{title}.{ext}", + ignoreWords: [], + whitespaceCharacters: "._", + capitalizeTitle: true, + page: 1, + pageSize: 20, + findClicked: false +}; + +const initialShowFieldsState = new Map([ + ["Title", true], + ["Date", true], + ["Performers", true], + ["Tags", true], + ["Studio", true] +]); + export const SceneFilenameParser: React.FC = () => { const Toast = useToast(); const [parserResult, setParserResult] = useState([]); - const [parserInput, setParserInput] = useState(initialParserInput()); + const [parserInput, setParserInput] = useState(initialParserInput); const [allTitleSet, setAllTitleSet] = useState(false); const [allDateSet, setAllDateSet] = useState(false); @@ -266,7 +284,7 @@ export const SceneFilenameParser: React.FC = () => { const [allTagSet, setAllTagSet] = useState(false); const [allStudioSet, setAllStudioSet] = useState(false); - const [showFields, setShowFields] = useState>(initialShowFieldsState()); + const [showFields, setShowFields] = useState>(initialShowFieldsState); const [totalItems, setTotalItems] = useState(0); @@ -275,71 +293,75 @@ export const SceneFilenameParser: React.FC = () => { const updateScenes = StashService.useScenesUpdate(getScenesUpdateData()); - function initialParserInput() { - return { - pattern: "{title}.{ext}", - ignoreWords: [], - whitespaceCharacters: "._", - capitalizeTitle: true, - page: 1, - pageSize: 20, - findClicked: false - }; - } + const determineFieldsToHide = useCallback(() => { + var pattern = parserInput.pattern; + var titleSet = pattern.includes("{title}"); + var dateSet = pattern.includes("{date}") || + pattern.includes("{dd}") || // don't worry about other partial date fields since this should be implied + ParserField.fullDateFields.some((f) => { + return pattern.includes("{" + f.field + "}"); + }); + var performerSet = pattern.includes("{performer}"); + var tagSet = pattern.includes("{tag}"); + var studioSet = pattern.includes("{studio}"); - function initialShowFieldsState() { - return new Map([ - ["Title", true], - ["Date", true], - ["Performers", true], - ["Tags", true], - ["Studio", true] + const newShowFields = new Map([ + ["Title", titleSet], + ["Date", dateSet], + ["Performers", performerSet], + ["Tags", tagSet], + ["Studio", studioSet] ]); - } - function getParserFilter() { - return { - q: parserInput.pattern, - page: parserInput.page, - per_page: parserInput.pageSize, - sort: "path", - direction: GQL.SortDirectionEnum.Asc, - }; - } + setShowFields(newShowFields); + }, [parserInput]); - function getParserInput() { - return { - ignoreWords: parserInput.ignoreWords, - whitespaceCharacters: parserInput.whitespaceCharacters, - capitalizeTitle: parserInput.capitalizeTitle - }; - } + const parseResults = useCallback((results : GQL.ParseSceneFilenamesResults[]) => { + if (results) { + var result = results.map((r) => { + return new SceneParserResult(r); + }).filter((r) => !!r) as SceneParserResult[]; - async function onFind() { - setParserResult([]); - - setIsLoading(true); - - try { - const response = await StashService.queryParseSceneFilenames(getParserFilter(), getParserInput()); - - let result = response.data.parseSceneFilenames; - if (result) { - parseResults(result.results); - setTotalItems(result.count); - } - } catch (err) { - Toast.error(err); + setParserResult(result); + determineFieldsToHide(); } - - setIsLoading(false); - } + }, [determineFieldsToHide]); useEffect(() => { if(parserInput.findClicked) { - onFind(); + setParserResult([]); + setIsLoading(true); + + const parserFilter = { + q: parserInput.pattern, + page: parserInput.page, + per_page: parserInput.pageSize, + sort: "path", + direction: GQL.SortDirectionEnum.Asc, + }; + + const parserInputData = { + ignoreWords: parserInput.ignoreWords, + whitespaceCharacters: parserInput.whitespaceCharacters, + capitalizeTitle: parserInput.capitalizeTitle + }; + + StashService.queryParseSceneFilenames(parserFilter, parserInputData) + .then((response) => { + let result = response.data.parseSceneFilenames; + if (result) { + parseResults(result.results); + setTotalItems(result.count); + } + }) + .catch((err) => ( + Toast.error(err) + )) + .finally(() => ( + setIsLoading(false) + )); } - }, [parserInput]); + }, [parserInput, parseResults, Toast]); function onPageSizeChanged(newSize : number) { var newInput = _.clone(parserInput); @@ -380,38 +402,6 @@ export const SceneFilenameParser: React.FC = () => { setIsLoading(false); } - function parseResults(results : GQL.ParseSceneFilenamesResults[]) { - if (results) { - var result = results.map((r) => { - return new SceneParserResult(r); - }).filter((r) => !!r) as SceneParserResult[]; - - setParserResult(result); - determineFieldsToHide(); - } - } - - function determineFieldsToHide() { - var pattern = parserInput.pattern; - var titleSet = pattern.includes("{title}"); - var dateSet = pattern.includes("{date}") || - pattern.includes("{dd}") || // don't worry about other partial date fields since this should be implied - ParserField.fullDateFields.some((f) => { - return pattern.includes("{" + f.field + "}"); - }); - var performerSet = pattern.includes("{performer}"); - var tagSet = pattern.includes("{tag}"); - var studioSet = pattern.includes("{studio}"); - - var showFieldsCopy = _.clone(showFields); - showFieldsCopy.set("Title", titleSet); - showFieldsCopy.set("Date", dateSet); - showFieldsCopy.set("Performers", performerSet); - showFieldsCopy.set("Tags", tagSet); - showFieldsCopy.set("Studio", studioSet); - setShowFields(showFieldsCopy); - } - useEffect(() => { var newAllTitleSet = !parserResult.some((r) => { return !r.title.set; @@ -429,21 +419,11 @@ export const SceneFilenameParser: React.FC = () => { return !r.studioId.set; }); - if (newAllTitleSet !== allTitleSet) { - setAllTitleSet(newAllTitleSet); - } - if (newAllDateSet !== allDateSet) { - setAllDateSet(newAllDateSet); - } - if (newAllPerformerSet !== allPerformerSet) { - setAllTagSet(newAllPerformerSet); - } - if (newAllTagSet !== allTagSet) { - setAllTagSet(newAllTagSet); - } - if (newAllStudioSet !== allStudioSet) { - setAllStudioSet(newAllStudioSet); - } + setAllTitleSet(newAllTitleSet); + setAllDateSet(newAllDateSet); + setAllTagSet(newAllPerformerSet); + setAllTagSet(newAllTagSet); + setAllStudioSet(newAllStudioSet); }, [parserResult]); function onSelectAllTitleSet(selected : boolean) { @@ -746,7 +726,7 @@ export const SceneFilenameParser: React.FC = () => { const elements = parserResult.originalValue ? Array.isArray(parserResult.originalValue) ? parserResult.originalValue.map((el:HasName) => el.name) - : parserResult.originalValue.name + : [parserResult.originalValue.name] : []; return ( diff --git a/ui/v2.5/src/components/scenes/ScenePlayer/ScenePlayerScrubber.tsx b/ui/v2.5/src/components/scenes/ScenePlayer/ScenePlayerScrubber.tsx index 37ba202c1..b8b2df8d0 100644 --- a/ui/v2.5/src/components/scenes/ScenePlayer/ScenePlayerScrubber.tsx +++ b/ui/v2.5/src/components/scenes/ScenePlayer/ScenePlayerScrubber.tsx @@ -1,4 +1,5 @@ -import React, { CSSProperties, useEffect, useRef, useState } from "react"; +import React, { CSSProperties, useEffect, useRef, useState, useCallback } from "react"; +import { Button } from 'react-bootstrap'; import axios from "axios"; import * as GQL from "src/core/generated-graphql"; import { TextUtils } from "src/utils"; @@ -20,6 +21,47 @@ interface ISceneSpriteItem { h: number; } + +async function fetchSpriteInfo(vttPath: string) { + const response = await axios.get(vttPath, {responseType: "text"}); + if (response.status !== 200) { + console.log(response.statusText); + } + + // TODO: This is gnarly + const lines = response.data.split("\n"); + if (lines.shift() !== "WEBVTT") { return; } + if (lines.shift() !== "") { return; } + let item: ISceneSpriteItem = {start: 0, end: 0, x: 0, y: 0, w: 0, h: 0}; + const newSpriteItems: ISceneSpriteItem[] = []; + while (lines.length) { + const line = lines.shift(); + if (line === undefined) { continue; } + + if (line.includes("#") && line.includes("=") && line.includes(",")) { + const size = line.split("#")[1].split("=")[1].split(","); + item.x = Number(size[0]); + item.y = Number(size[1]); + item.w = Number(size[2]); + item.h = Number(size[3]); + + newSpriteItems.push(item); + item = {start: 0, end: 0, x: 0, y: 0, w: 0, h: 0}; + } else if (line.includes(" --> ")) { + const times = line.split(" --> "); + + const start = times[0].split(":"); + item.start = (+start[0]) * 60 * 60 + (+start[1]) * 60 + (+start[2]); + + const end = times[1].split(":"); + item.end = (+end[0]) * 60 * 60 + (+end[1]) * 60 + (+end[2]); + } + } + + return newSpriteItems; +} + + export const ScenePlayerScrubber: React.FC = (props: IScenePlayerScrubberProps) => { const contentEl = useRef(null); const positionIndicatorEl = useRef(null); @@ -30,8 +72,8 @@ export const ScenePlayerScrubber: React.FC = (props: const velocity = useRef(0); const _position = useRef(0); - function getPostion() { return _position.current; } - function setPosition(newPostion: number, shouldEmit: boolean = true) { + const getPosition = useCallback(() => _position.current, []); + const setPosition = useCallback((newPostion: number, shouldEmit: boolean = true) => { if (!scrubberSliderEl.current || !positionIndicatorEl.current) { return; } if (shouldEmit) { props.onScrolled(); } @@ -52,10 +94,9 @@ export const ScenePlayerScrubber: React.FC = (props: (newPostion - midpointOffset) / (bounds - (midpointOffset * 2)) * scrubberSliderEl.current.clientWidth ); positionIndicatorEl.current.style.transform = `translateX(${indicatorPosition}px)`; - } + }, [props]); const [spriteItems, setSpriteItems] = useState([]); - const [delayedRender, setDelayedRender] = useState(false); useEffect(() => { if (!scrubberSliderEl.current) { return; } @@ -63,7 +104,12 @@ export const ScenePlayerScrubber: React.FC = (props: }, [scrubberSliderEl]); useEffect(() => { - fetchSpriteInfo(); + if (!props.scene.paths.vtt) + return; + fetchSpriteInfo(props.scene.paths.vtt).then((sprites) => { + if(sprites) + setSpriteItems(sprites); + }); }, [props.scene]); useEffect(() => { @@ -74,7 +120,7 @@ export const ScenePlayerScrubber: React.FC = (props: (scrubberSliderEl.current.scrollWidth * percentage) - (scrubberSliderEl.current.clientWidth / 2) ) * -1; setPosition(position, false); - }, [props.position]); + }, [props.position, props.scene.file.duration, setPosition]); useEffect(() => { window.addEventListener("mouseup", onMouseUp, false); @@ -85,19 +131,21 @@ export const ScenePlayerScrubber: React.FC = (props: useEffect(() => { if (!contentEl.current) { return; } - contentEl.current.addEventListener("mousedown", onMouseDown, false); + const el = contentEl.current; + el.addEventListener("mousedown", onMouseDown, false); return () => { - if (!contentEl.current) { return; } - contentEl.current.removeEventListener("mousedown", onMouseDown); + if (!el) { return; } + el.removeEventListener("mousedown", onMouseDown); }; }); useEffect(() => { if (!contentEl.current) { return; } - contentEl.current.addEventListener("mousemove", onMouseMove, false); + const el = contentEl.current; + el.addEventListener("mousemove", onMouseMove, false); return () => { - if (!contentEl.current) { return; } - contentEl.current.removeEventListener("mousemove", onMouseMove); + if (!el) { return; } + el.removeEventListener("mousemove", onMouseMove); }; }); @@ -125,7 +173,7 @@ export const ScenePlayerScrubber: React.FC = (props: if (!!seekSeconds) { props.onSeek(seekSeconds); } } else if (Math.abs(velocity.current) > 25) { - const newPosition = getPostion() + (velocity.current * 10); + const newPosition = getPosition() + (velocity.current * 10); setPosition(newPosition); velocity.current = 0; } @@ -148,7 +196,7 @@ export const ScenePlayerScrubber: React.FC = (props: const movement = event.movementX; velocity.current = movement; - const newPostion = getPostion() + delta; + const newPostion = getPosition() + delta; setPosition(newPostion); lastMouseEvent.current = event; } @@ -160,61 +208,16 @@ export const ScenePlayerScrubber: React.FC = (props: function goBack() { if (!scrubberSliderEl.current) { return; } - const newPosition = getPostion() + scrubberSliderEl.current.clientWidth; + const newPosition = getPosition() + scrubberSliderEl.current.clientWidth; setPosition(newPosition); } function goForward() { if (!scrubberSliderEl.current) { return; } - const newPosition = getPostion() - scrubberSliderEl.current.clientWidth; + const newPosition = getPosition() - scrubberSliderEl.current.clientWidth; setPosition(newPosition); } - async function fetchSpriteInfo() { - if (!props.scene || !props.scene.paths.vtt) { return; } - - const response = await axios.get(props.scene.paths.vtt, {responseType: "text"}); - if (response.status !== 200) { - console.log(response.statusText); - } - - // TODO: This is gnarly - const lines = response.data.split("\n"); - if (lines.shift() !== "WEBVTT") { return; } - if (lines.shift() !== "") { return; } - let item: ISceneSpriteItem = {start: 0, end: 0, x: 0, y: 0, w: 0, h: 0}; - const newSpriteItems: ISceneSpriteItem[] = []; - while (lines.length) { - const line = lines.shift(); - if (line === undefined) { continue; } - - if (line.includes("#") && line.includes("=") && line.includes(",")) { - const size = line.split("#")[1].split("=")[1].split(","); - item.x = Number(size[0]); - item.y = Number(size[1]); - item.w = Number(size[2]); - item.h = Number(size[3]); - - newSpriteItems.push(item); - item = {start: 0, end: 0, x: 0, y: 0, w: 0, h: 0}; - } else if (line.includes(" --> ")) { - const times = line.split(" --> "); - - const start = times[0].split(":"); - item.start = (+start[0]) * 60 * 60 + (+start[1]) * 60 + (+start[2]); - - const end = times[1].split(":"); - item.end = (+end[0]) * 60 * 60 + (+end[1]) * 60 + (+end[2]); - } - } - - setSpriteItems(newSpriteItems); - // TODO: Very hacky. Need to wait for the scroll width to update from the image loading. - setTimeout(() => { - setDelayedRender(true); - }, 100); - } - function renderTags() { function getTagStyle(i: number): CSSProperties { if (!scrubberSliderEl.current || @@ -296,7 +299,7 @@ export const ScenePlayerScrubber: React.FC = (props: return (
- goBack()}>< +
@@ -310,7 +313,7 @@ export const ScenePlayerScrubber: React.FC = (props:
- goForward()}>> +
); }; diff --git a/ui/v2.5/src/hooks/Toast.tsx b/ui/v2.5/src/hooks/Toast.tsx index 039914a06..aa9c09fa1 100644 --- a/ui/v2.5/src/hooks/Toast.tsx +++ b/ui/v2.5/src/hooks/Toast.tsx @@ -1,4 +1,4 @@ -import React, { useState, useContext, createContext } from 'react'; +import React, { useEffect, useState, useContext, createContext } from 'react'; import { Toast } from 'react-bootstrap'; interface IToast { @@ -52,19 +52,28 @@ export const ToastProvider: React.FC = ({children}) => { ) } -const useToasts = () => { - const setToast = useContext(ToastContext); +function createHookObject(toastFunc: (toast:IToast) => void) { return { - success: setToast, + success: toastFunc, error: (error: Error) => { console.error(error.message); - setToast({ + toastFunc({ variant: 'danger', header: 'Error', content: error.message ?? error.toString() }); } - }; + } +} + +const useToasts = () => { + const setToast = useContext(ToastContext); + const [hookObject, setHookObject] = useState(createHookObject(setToast)); + useEffect(() => ( + setHookObject(createHookObject(setToast)) + ), [setToast]); + + return hookObject; } export default useToasts; diff --git a/ui/v2.5/yarn.lock b/ui/v2.5/yarn.lock index 1fb3fe3eb..cc9857b85 100644 --- a/ui/v2.5/yarn.lock +++ b/ui/v2.5/yarn.lock @@ -4463,6 +4463,13 @@ escodegen@^1.11.0, escodegen@^1.9.1: optionalDependencies: source-map "~0.6.1" +eslint-config-prettier@^6.9.0: + version "6.9.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.9.0.tgz#430d24822e82f7deb1e22a435bfa3999fae4ad64" + integrity sha512-k4E14HBtcLv0uqThaI6I/n1LEqROp8XaPu6SO9Z32u5NlGRC07Enu1Bh2KEFw4FNHbekH8yzbIU9kUGxbiGmCA== + dependencies: + get-stdin "^6.0.0" + eslint-config-react-app@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-5.1.0.tgz#a37b3f2d4f56f856f93277281ef52bd791273e63" @@ -4536,6 +4543,13 @@ eslint-plugin-jsx-a11y@6.2.3: has "^1.0.3" jsx-ast-utils "^2.2.1" +eslint-plugin-prettier@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz#432e5a667666ab84ce72f945c72f77d996a5c9ba" + integrity sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA== + dependencies: + prettier-linter-helpers "^1.0.0" + eslint-plugin-react-hooks@^1.6.1: version "1.7.0" resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz#6210b6d5a37205f0b92858f895a4e827020a7d04" @@ -4859,6 +4873,11 @@ fast-deep-equal@^2.0.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= +fast-diff@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" + integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== + fast-glob@^2.0.2: version "2.2.7" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" @@ -5311,6 +5330,11 @@ get-stdin@^4.0.1: resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= +get-stdin@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" + integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== + get-stream@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" @@ -9640,6 +9664,13 @@ prepend-http@^1.0.0: resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + prettier@1.16.4: version "1.16.4" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.16.4.tgz#73e37e73e018ad2db9c76742e2647e21790c9717"