# Hungarian translation for unity-tweak-tool
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the unity-tweak-tool package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: unity-tweak-tool\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-03-24 18:26-0700\n"
"PO-Revision-Date: 2015-02-15 20:06+0000\n"
"Last-Translator: Richard Somlói <ricsipontaz@gmail.com>\n"
"Language-Team: Hungarian <hu@li.org>\n"
"Language: hu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2015-02-16 06:33+0000\n"
"X-Generator: Launchpad (build 17341)\n"

#: ../data/about.ui:12
msgid "Copyright © 2013 Freyja Development team"
msgstr "Copyright © 2013 Freyja fejlesztőcsapat"

#: ../data/about.ui:13
msgid ""
"Unity Tweak Tool is a settings manager intended to be used with Ubuntu Unity."
msgstr ""
"A Unity Tweak Tool egy, az Ubuntu Unity beállítását megkönnyítő "
"segédalkalmazás."

#: ../data/about.ui:15
msgid "Unity Tweak Tool on Launchpad"
msgstr "Unity Tweak Tool a Launchpad-on"

#: ../data/about.ui:16
msgid "GPL3"
msgstr "GPL3"

#: ../data/appearance.ui:32 ../data/appearance.ui:198
#: ../data/appearance.ui:299
msgid "Available themes"
msgstr "Elérhető témák"

#: ../data/appearance.ui:67 ../data/appearance.ui:68
msgid "List of GTK Themes"
msgstr "GTK témák"

#: ../data/appearance.ui:80
msgid "GTK Theme"
msgstr "GTK téma"

#: ../data/appearance.ui:112 ../data/appearance.ui:113
msgid "List of Window decoration themes"
msgstr "Ablakdekorációs témák listája"

#: ../data/appearance.ui:123
msgid "Window decoration theme"
msgstr "Ablakdekorációs téma"

#: ../data/appearance.ui:154 ../data/appearance.ui:251
#: ../data/appearance.ui:386 ../data/appearance.ui:765 ../data/system.ui:259
#: ../data/system.ui:406 ../data/system.ui:657 ../data/unity.ui:814
#: ../data/unity.ui:1135 ../data/unity.ui:1805 ../data/unity.ui:2105
#: ../data/unity.ui:2269 ../data/unity.ui:2507 ../data/windowmanager.ui:573
#: ../data/windowmanager.ui:833 ../data/windowmanager.ui:1091
#: ../data/windowmanager.ui:1469 ../data/windowmanager.ui:1793
#: ../data/windowmanager.ui:2207
msgid "Restore defaults"
msgstr "Az alapértelmezések visszaállítása"

#: ../data/appearance.ui:158 ../data/appearance.ui:159
msgid "Restore system's default theme configurations"
msgstr "A rendszer alapértelmezett témabeállításainak visszaállítása"

#: ../data/appearance.ui:179 ../data/overview.ui:850 ../data/unitytweak.ui:215
msgid "Theme"
msgstr "Téma"

#: ../data/appearance.ui:220 ../data/appearance.ui:221
msgid "List of icon themes"
msgstr "Ikontémák"

#: ../data/appearance.ui:231
msgid "Icon theme"
msgstr "Ikontéma"

#: ../data/appearance.ui:255 ../data/appearance.ui:256
msgid "Restore system's default icon theme configurations"
msgstr ""

#: ../data/appearance.ui:279 ../data/overview.ui:901 ../data/unitytweak.ui:224
#: ../data/unity.ui:621
msgid "Icons"
msgstr "Ikonok"

#: ../data/appearance.ui:321 ../data/appearance.ui:322
msgid "List of cursor themes"
msgstr "Kurzortémák listája"

#: ../data/appearance.ui:330
msgid "Cursor Theme"
msgstr "Kurzortéma"

#: ../data/appearance.ui:354
msgid "Preferences"
msgstr "Beállítások"

#: ../data/appearance.ui:367
msgid "Use large cursors"
msgstr "Nagy kurzorok használata"

#: ../data/appearance.ui:371 ../data/appearance.ui:372
msgid "If enabled, the system will use a larger cursor."
msgstr ""

#: ../data/appearance.ui:390 ../data/appearance.ui:391
msgid "Restore system's default cursor theme configurations"
msgstr ""

#: ../data/appearance.ui:414 ../data/unitytweak.ui:233
msgid "Cursor"
msgstr "Kurzor"

#: ../data/appearance.ui:434 ../data/overview.ui:474 ../data/unitytweak.ui:146
#: ../data/unity.ui:857 ../data/unity.ui:1183 ../data/unity.ui:1852
#: ../data/unity.ui:2150 ../data/windowmanager.ui:597
#: ../data/windowmanager.ui:616 ../data/windowmanager.ui:881
#: ../data/windowmanager.ui:1138 ../data/windowmanager.ui:1514
msgid "General"
msgstr "Általános"

#: ../data/appearance.ui:456 ../data/appearance.ui:457
#: ../data/appearance.ui:491 ../data/appearance.ui:492
msgid "Select the default font for all applications."
msgstr "Az alkalmazások alapértelmezett betűtípusának kiválasztása."

#: ../data/appearance.ui:459
msgid "Default font:"
msgstr "Alap betűtípus:"

#: ../data/appearance.ui:474 ../data/appearance.ui:475
#: ../data/appearance.ui:511 ../data/appearance.ui:512
msgid "Select the default font used for reading documents."
msgstr "A dokumentumok alapértelmezett betűtípusának kiválasztása."

#: ../data/appearance.ui:477
msgid "Document font:"
msgstr "Dokumentum betűtípusa:"

#: ../data/appearance.ui:530 ../data/appearance.ui:531
#: ../data/appearance.ui:565 ../data/appearance.ui:566
msgid "Select the default monospace font."
msgstr "Az alapértelmezett monospace betűtípus kiválasztása."

#: ../data/appearance.ui:533
msgid "Monospace font:"
msgstr "Monospace betűtípus:"

#: ../data/appearance.ui:548 ../data/appearance.ui:549
#: ../data/appearance.ui:585 ../data/appearance.ui:586
msgid "Select the default font for the window titlebar."
msgstr "Az alapértelmezett ablakcím betűtípus kiválasztása."

#: ../data/appearance.ui:551
msgid "Window title font:"
msgstr "Ablakcím betűtípusa:"

#: ../data/appearance.ui:613 ../data/overview.ui:793 ../data/unitytweak.ui:202
#: ../data/unity.ui:364
msgid "Appearance"
msgstr "Megjelenés"

#: ../data/appearance.ui:636 ../data/appearance.ui:637
#: ../data/appearance.ui:654 ../data/appearance.ui:655
msgid "Select the type of antialiasing used to render fonts."
msgstr ""

#: ../data/appearance.ui:640
msgid "Antialiasing:"
msgstr "Élsimítás:"

#: ../data/appearance.ui:659 ../data/appearance.ui:681
msgid "None"
msgstr "Nincs"

#: ../data/appearance.ui:660
msgid "Grayscale"
msgstr "Szürkeárnyalatos"

#: ../data/appearance.ui:661
msgid "RGBA"
msgstr "RGBA"

#: ../data/appearance.ui:676 ../data/appearance.ui:677
#: ../data/appearance.ui:700 ../data/appearance.ui:701
msgid "Select the type of hinting to use when rendering fonts"
msgstr ""

#: ../data/appearance.ui:682
msgid "Slight"
msgstr "Enyhe"

#: ../data/appearance.ui:683
msgid "Medium"
msgstr "Közepes"

#: ../data/appearance.ui:684
msgid "Full"
msgstr "Teljes"

#: ../data/appearance.ui:703
msgid "Hinting:"
msgstr ""

#: ../data/appearance.ui:718 ../data/appearance.ui:719
#: ../data/appearance.ui:735 ../data/appearance.ui:736
msgid ""
"Select the factor used to enlarge or reduce text display, without changing "
"font size."
msgstr ""

#: ../data/appearance.ui:721
msgid "Text scaling factor:"
msgstr "Szöveg skálázása:"

#: ../data/appearance.ui:769 ../data/appearance.ui:770
msgid "Restore system's default font configurations"
msgstr ""

#: ../data/appearance.ui:792 ../data/overview.ui:1003
#: ../data/unitytweak.ui:242
msgid "Fonts"
msgstr "Betűkészletek"

#: ../data/errordialog.ui:8
msgid "Schemas missing"
msgstr "Hiányzó sémák"

#: ../data/errordialog.ui:15
msgid "The following schema is missing"
msgstr "A következő séma hiányzik"

#: ../data/filechooser-theme.ui:17
msgid "Choose a Theme file to install"
msgstr "Válasszon ki egy telepítendő témát"

#: ../data/filechooser-theme.ui:51
msgid "Install Theme"
msgstr "Téma telepítése"

#: ../data/overview.ui:40 ../data/unitytweak.ui:64
msgid "Unity"
msgstr "Unity"

#: ../data/overview.ui:99 ../data/unitytweak.ui:77 ../data/unity.ui:838
msgid "Launcher"
msgstr "Indító"

#: ../data/overview.ui:152 ../data/unitytweak.ui:86 ../data/unity.ui:1163
msgid "Search"
msgstr "Keresés"

#: ../data/overview.ui:203 ../data/unitytweak.ui:95 ../data/unity.ui:1833
msgid "Panel"
msgstr "Panel"

#: ../data/overview.ui:254 ../data/unitytweak.ui:104 ../data/unity.ui:2131
msgid "Switcher"
msgstr "Ablakváltó"

#: ../data/overview.ui:305 ../data/unitytweak.ui:113 ../data/unity.ui:2296
msgid "Web Apps"
msgstr "Webalkalmazások"

#: ../data/overview.ui:356 ../data/overview.ui:732 ../data/unitytweak.ui:122
#: ../data/unitytweak.ui:191 ../data/unity.ui:2533
#: ../data/windowmanager.ui:2233
msgid "Additional"
msgstr "Egyéb"

#: ../data/overview.ui:417 ../data/unitytweak.ui:133
msgid "Window Manager"
msgstr "Ablakkezelő"

#: ../data/overview.ui:525
msgid ""
"Workspace\n"
"Settings"
msgstr ""
"Munkaterület\n"
"beállítások"

#: ../data/overview.ui:577
msgid ""
"Window\n"
"Spread"
msgstr ""
"Ablak\n"
"kiterítés"

#: ../data/overview.ui:629
msgid ""
"Window\n"
"Snapping"
msgstr ""
"Ablak\n"
"elkapás"

#: ../data/overview.ui:681 ../data/unitytweak.ui:182
#: ../data/windowmanager.ui:1818
msgid "Hotcorners"
msgstr "Forrósarkok"

#: ../data/overview.ui:952
msgid "Cursors"
msgstr "Kurzorok"

#: ../data/overview.ui:1067 ../data/unitytweak.ui:253
msgid "System"
msgstr "Rendszer"

#: ../data/overview.ui:1124
msgid ""
"Desktop\n"
"Icons"
msgstr ""
"Asztal\n"
"ikonok"

#: ../data/overview.ui:1176 ../data/system.ui:434 ../data/unitytweak.ui:275
msgid "Security"
msgstr "Biztonság"

#: ../data/overview.ui:1227 ../data/system.ui:682 ../data/unitytweak.ui:284
msgid "Scrolling"
msgstr "Görgetés"

#: ../data/system.ui:31
msgid "Items to display:"
msgstr "Megjelenítendő elemek:"

#: ../data/system.ui:52 ../data/system.ui:53 ../data/system.ui:80
msgid "Home Folder"
msgstr "Saját mappa"

#: ../data/system.ui:103 ../data/system.ui:104 ../data/system.ui:131
msgid "Network"
msgstr "Hálózat"

#: ../data/system.ui:154 ../data/system.ui:155
msgid "Rubbish Bin"
msgstr "Kuka"

#: ../data/system.ui:182
msgid "Trash"
msgstr "Kuka"

#: ../data/system.ui:205 ../data/system.ui:206
msgid "Mounted Devices"
msgstr "Csatolt eszközök"

#: ../data/system.ui:233
msgid "Devices"
msgstr "Eszközök"

#: ../data/system.ui:264 ../data/system.ui:265
msgid "Restore the default configurations for Desktop icons"
msgstr ""

#: ../data/system.ui:284 ../data/unitytweak.ui:266
msgid "Desktop Icons"
msgstr "Asztali ikonok"

#: ../data/system.ui:303
msgid "Enhance system security by disabling:"
msgstr "Rendszerbiztonság növelése a következők letiltásával:"

#: ../data/system.ui:319
msgid "Desktop lock"
msgstr "Asztal zárolás"

#: ../data/system.ui:324 ../data/system.ui:325
msgid "Disable the desktop lock screen."
msgstr "Az asztal zárolási képernyő tiltása."

#: ../data/system.ui:339
msgid "User log out"
msgstr "Felhasználó kijelentkezés"

#: ../data/system.ui:344 ../data/system.ui:345
msgid "Disable session log out."
msgstr "Munkamenet kijelentkezésének tiltása."

#: ../data/system.ui:359
msgid "User switching"
msgstr "Felhasználóváltás"

#: ../data/system.ui:364 ../data/system.ui:365
msgid "Disable fast user switching."
msgstr "Gyors felhasználóváltás tiltása."

#: ../data/system.ui:379
msgid "Printing"
msgstr "Nyomtatás"

#: ../data/system.ui:384 ../data/system.ui:385
msgid "Prevent user access to the system's printers and print setup."
msgstr "Nyomtatás és nyomtató beállítás letiltása a felhasználók felé."

#: ../data/system.ui:411 ../data/system.ui:412
msgid "Restore the default configurations for Security settings"
msgstr ""

#: ../data/system.ui:454
msgid "Scrollbars"
msgstr "Görgetősávok"

#: ../data/system.ui:472
msgid "Legacy"
msgstr ""

#: ../data/system.ui:491
msgid "Overlay "
msgstr ""

#: ../data/system.ui:518 ../data/system.ui:519
msgid "Select the behaviour of the overlay scrollbars."
msgstr ""

#: ../data/system.ui:524
msgid "Default"
msgstr "Alapértelmezett"

#: ../data/system.ui:525
msgid "Overlay with mouse"
msgstr ""

#: ../data/system.ui:526
msgid "No overlay"
msgstr ""

#: ../data/system.ui:544
msgid "Behaviour:"
msgstr "Viselkedés:"

#: ../data/system.ui:574
msgid "Touch scrolling"
msgstr "Érintéses görgetés"

#: ../data/system.ui:592
msgid "Edge"
msgstr "Széleken"

#: ../data/system.ui:596 ../data/system.ui:597
msgid "If enabled, edge scrolling is active on touchpads."
msgstr ""

#: ../data/system.ui:612
msgid "Two-finger"
msgstr "Két-ujjas"

#: ../data/system.ui:616 ../data/system.ui:617
msgid "If enabled, two-finger scrolling is active on multitouch touchpads."
msgstr ""

#: ../data/system.ui:632
msgid "Horizontal scrolling"
msgstr "Vízszintes görgetés"

#: ../data/unitytweak.ui:41
msgid "Unity Tweak Tool"
msgstr "Unity Tweak Tool"

#: ../data/unitytweak.ui:56
msgid "_File"
msgstr "_Fájl"

#: ../data/unitytweak.ui:155
msgid "Workspace settings"
msgstr "Munkaterület beállítások"

#: ../data/unitytweak.ui:164
msgid "Windows spread"
msgstr ""

#: ../data/unitytweak.ui:173
msgid "Windows snapping"
msgstr "Ablakillesztés"

#: ../data/unitytweak.ui:317
msgid "_Help"
msgstr "_Súgó"

#: ../data/unitytweak.ui:360
msgid " Overview"
msgstr " Áttekintés"

#: ../data/unity.ui:42
msgid "Invoke HUD"
msgstr "HUD hívása"

#: ../data/unity.ui:43
msgid "Super+H"
msgstr "Super+H"

#: ../data/unity.ui:46
msgid "Show the launcher"
msgstr "Indító megjelenítése"

#: ../data/unity.ui:47
msgid "Super+E"
msgstr "Super+E"

#: ../data/unity.ui:50
msgid "Execute command"
msgstr "Parancsvégrehajtás"

#: ../data/unity.ui:51
msgid "Super+M"
msgstr "Super+M"

#: ../data/unity.ui:54
msgid "Put keyboard focus on the launcher"
msgstr "Billentyűzet fókusz indítón tartása"

#: ../data/unity.ui:55
msgid "Super+A"
msgstr "Super+A"

#: ../data/unity.ui:58
msgid "Open the first panel menu"
msgstr "Első panel menü megnyitás"

#: ../data/unity.ui:59
msgid "Super+N"
msgstr "Super+N"

#: ../data/unity.ui:72 ../data/unity.ui:90
msgid "Start switcher"
msgstr "Ablakváltó indítása"

#: ../data/unity.ui:73
msgid "Super+Tab"
msgstr "Super+Tab"

#: ../data/unity.ui:76 ../data/unity.ui:94
msgid "Start switcher in reverse"
msgstr "Ablakváltó indítása visszafelé"

#: ../data/unity.ui:77
msgid "Shift+Super+Tab"
msgstr "Shift+Super+Tab"

#: ../data/unity.ui:91
msgid "Alt+Tab"
msgstr "Alt+Tab"

#: ../data/unity.ui:95
msgid "Shift+Alt+Tab"
msgstr "Shift+Alt+Tab"

#: ../data/unity.ui:98
msgid "Start switcher for all workspaces"
msgstr "Ablakváltó indítása az összes munkaterülethez"

#: ../data/unity.ui:99
msgid "Ctrl+Super+Alt+Tab"
msgstr "Ctrl+Super+Alt+Tab"

#: ../data/unity.ui:102
msgid "Start switcher for all workspaces in reverse"
msgstr "Ablakváltó indítása az összes munkaterülethez visszafelé"

#: ../data/unity.ui:103
msgid "Shift+Ctrl+Super+Alt+Tab"
msgstr "Shift+Ctrl+Super+Alt+Tab"

#: ../data/unity.ui:106
msgid "Flip through windows in the switcher"
msgstr ""

#: ../data/unity.ui:107 ../data/unity.ui:111 ../data/windowmanager.ui:90
#: ../data/windowmanager.ui:115
msgid "Disabled"
msgstr "Letiltva"

#: ../data/unity.ui:110
msgid "Flip through windows in the switcher backwards"
msgstr ""

#: ../data/unity.ui:135 ../data/windowmanager.ui:1247
#: ../data/windowmanager.ui:1571
msgid "Behaviour"
msgstr "Viselkedés"

#: ../data/unity.ui:159 ../data/unity.ui:160
msgid "Should the launcher be hidden?"
msgstr "Az indító legyen elrejtve?"

#: ../data/unity.ui:175
msgid "Auto-hide:"
msgstr "Automatikus elrejtés:"

#: ../data/unity.ui:187 ../data/unity.ui:188
msgid "Select the auto-hide animation of the launcher."
msgstr "Indító automatikus elrejtés animáció kiválasztás"

#: ../data/unity.ui:190
msgid "Fade Dash and slide"
msgstr ""

#: ../data/unity.ui:191
msgid "Slide only"
msgstr "Csak csúsztatás"

#: ../data/unity.ui:192
msgid "Fade only"
msgstr "Csak áttűnés"

#: ../data/unity.ui:193
msgid "Fade and slide"
msgstr ""

#: ../data/unity.ui:208
msgid "Auto-hide animation:"
msgstr "Automatikus elrejtés animáció:"

#: ../data/unity.ui:237
msgid ""
"Select the option to reveal the dash with the mouse, when auto-hide is "
"enabled."
msgstr ""

#: ../data/unity.ui:238
msgid "Reveal location:"
msgstr "Előtűnés helye:"

#: ../data/unity.ui:253
msgid "Reveal sensitivity:"
msgstr "Előtűnés érzékenysége:"

#: ../data/unity.ui:268 ../data/unity.ui:269
msgid "How much pointer \"pressure\" is required to reveal the launcher."
msgstr ""

#: ../data/unity.ui:287
msgid "Left side"
msgstr "Bal oldal"

#: ../data/unity.ui:293 ../data/unity.ui:294
msgid ""
"When in auto-hide mode the left edge of the current workspace triggers the "
"launcher."
msgstr ""

#: ../data/unity.ui:308
msgid "Top left corner"
msgstr "Bal felső sarok"

#: ../data/unity.ui:314 ../data/unity.ui:315
msgid ""
"When in auto-hide mode the top left corner of the current workspace triggers "
"the launcher."
msgstr ""

#: ../data/unity.ui:341
msgid "Minimize single window applications on click"
msgstr "Egyablakos alkalmazás minimalizálása kattintásra"

#: ../data/unity.ui:387 ../data/unity.ui:388
msgid "Select the level of the transparency of the launcher"
msgstr "Az indító átlátszóságának megadása"

#: ../data/unity.ui:389 ../data/unity.ui:1220
msgid "Transparency level:"
msgstr "Átláthatóság:"

#: ../data/unity.ui:403 ../data/unity.ui:404
msgid "How transparent the launcher will be."
msgstr "Milyen átlátszó legyen az indító."

#: ../data/unity.ui:431
msgid "Based on wallpaper"
msgstr "Háttérképtől függ"

#: ../data/unity.ui:436 ../data/unity.ui:437
msgid "If selected, the launcher colour is based on the desktop background"
msgstr ""
"Kiválasztás után az indító színe a háttérkép színeihez lesz megválasztva"

#: ../data/unity.ui:453
msgid "Colour:"
msgstr "Szín:"

#: ../data/unity.ui:467
msgid "Visibility:"
msgstr "Láthatóság:"

#: ../data/unity.ui:481
msgid "Custom:"
msgstr "Egyéni:"

#: ../data/unity.ui:486 ../data/unity.ui:487
msgid "If selected, the launcher will be the colour chosen by the user"
msgstr "Kiválasztás utána az indító színe megadható a felhasználó által"

#: ../data/unity.ui:521
msgid "All desktops"
msgstr "Minden asztalon"

#: ../data/unity.ui:526
msgid "If selected, the launcher is visible on all desktops."
msgstr "Kiválasztás után az indító minden asztalon látszódni fog."

#: ../data/unity.ui:527
msgid "If selected, the launcher is visible on all desktops"
msgstr "Kiválasztás után az indító minden asztalon látszódni fog"

#: ../data/unity.ui:541
msgid "Primary desktop"
msgstr "Elsődleges asztalon"

#: ../data/unity.ui:546 ../data/unity.ui:547
msgid "If selected, the launcher is visible on the primary desktop"
msgstr "Kiválasztás után az indító az elsődleges asztalon fog látszódni"

#: ../data/unity.ui:559
#, fuzzy
msgid "Bottom"
msgstr "Alsó fél"

#: ../data/unity.ui:563
#, fuzzy
msgid ""
"When selected, the launcher will be positioned on the bottom of the screen."
msgstr "Kiválasztás utána az indító színe megadható a felhasználó által"

#: ../data/unity.ui:577
msgid "Left"
msgstr "Bal"

#: ../data/unity.ui:581
#, fuzzy
msgid ""
"When selected, the launcher will be positioned on the left of the screen."
msgstr "Kiválasztás utána az indító színe megadható a felhasználó által"

#: ../data/unity.ui:597
msgid "Position:"
msgstr ""

#: ../data/unity.ui:645
msgid "Icon size:"
msgstr "Ikonméret:"

#: ../data/unity.ui:659 ../data/unity.ui:660
msgid "Select the animation used for launching an application."
msgstr ""

#: ../data/unity.ui:662 ../data/unity.ui:682
msgid "No animation"
msgstr "Nincs animáció"

#: ../data/unity.ui:663 ../data/unity.ui:683
msgid "Pulse"
msgstr "Lüktet"

#: ../data/unity.ui:664
msgid "Blink"
msgstr "Villogás"

#: ../data/unity.ui:679 ../data/unity.ui:680
msgid "Select the animation used for an urgent notification on the launcher"
msgstr "Válassza ki az indító sürgős értesítéseihez tartozó animációt"

#: ../data/unity.ui:684
msgid "Wiggle"
msgstr "Ide-odamozog"

#: ../data/unity.ui:699
msgid "Launch animation:"
msgstr "Indítás animáció:"

#: ../data/unity.ui:712
msgid "Urgent animation:"
msgstr "Sürgős animáció:"

#: ../data/unity.ui:724 ../data/unity.ui:725
msgid "Select how the icons are coloured on the launcher"
msgstr ""

#: ../data/unity.ui:728
msgid "All applications"
msgstr "Minden alkalmazásnál"

#: ../data/unity.ui:729
msgid "Open applications only"
msgstr "Csak futó alkalmazásoknál"

#: ../data/unity.ui:730
msgid "No colouring"
msgstr "Nincs színezés"

#: ../data/unity.ui:731
msgid "Coloured edges"
msgstr "Színes körvonalak"

#: ../data/unity.ui:732
msgid "Alternated for each workspace"
msgstr ""

#: ../data/unity.ui:747
msgid "Icon backgrounds:"
msgstr "Ikonhátterek:"

#: ../data/unity.ui:774
msgid "\"Show Desktop\" icon:"
msgstr "„Asztal megjelenítése” ikon:"

#: ../data/unity.ui:787 ../data/unity.ui:788
msgid "Select the size of the icons on the launcher"
msgstr "Az indítóikonok méretének megadása"

#: ../data/unity.ui:818 ../data/unity.ui:819
msgid "Restore default Unity launcher settings."
msgstr "A Unity indító beállításainak visszaállítása."

#: ../data/unity.ui:882
msgid "Background blur:"
msgstr "Elmosott háttér:"

#: ../data/unity.ui:895 ../data/unity.ui:896
msgid "Enable dash blur?"
msgstr "Dash elmosás engedélyezése?"

#: ../data/unity.ui:910 ../data/unity.ui:911
msgid "Select the type of blur in the dash"
msgstr "A Dash elmosás típusának kiválasztása"

#: ../data/unity.ui:913
msgid "Blur type:"
msgstr "Elmosás típusa:"

#: ../data/unity.ui:928
msgid "Active"
msgstr "Aktív"

#: ../data/unity.ui:933 ../data/unity.ui:934
msgid "Use a dynamic blur in the dash."
msgstr "Dinamikus elmosás használata a Dash-hoz."

#: ../data/unity.ui:947
msgid "Static"
msgstr "Statikus"

#: ../data/unity.ui:952 ../data/unity.ui:953
msgid "Use a static blur in the dash, uses less resources."
msgstr "Statikus elmosás használata a Dash-hoz (kevesebb erőforrást igényel)."

#: ../data/unity.ui:979
msgid "Search online sources"
msgstr "Keresés az online források között"

#: ../data/unity.ui:983 ../data/unity.ui:984
msgid "If enabled, the dash will get suggestions from online sources."
msgstr ""

#: ../data/unity.ui:1002
msgid "Applications"
msgstr "Alkalmazások"

#: ../data/unity.ui:1022
msgid "Show \"Recently Used\" applications"
msgstr "„Nem rég használt” alkalmazások megjelenítése"

#: ../data/unity.ui:1026 ../data/unity.ui:1027
msgid "If enabled, show recently used applications in the Dash."
msgstr ""

#: ../data/unity.ui:1039
msgid "Show \"More Suggestions\""
msgstr "„További javaslatok” megjelenítése"

#: ../data/unity.ui:1043 ../data/unity.ui:1044
msgid "If enabled, show applications available for download in the Dash."
msgstr ""

#: ../data/unity.ui:1067
msgid "Files"
msgstr "Fájlok"

#: ../data/unity.ui:1080
msgid "Enable search of your files"
msgstr "Fájlok közötti keresés engedélyezése"

#: ../data/unity.ui:1085
msgid "If enabled, allow searches to find your files that aren't logged."
msgstr ""

#: ../data/unity.ui:1086
msgid "If enabled, allow searches to find your files that aren't logged."
msgstr ""

#: ../data/unity.ui:1104
msgid "Run Command"
msgstr "Parancsvégrehajtás"

#: ../data/unity.ui:1117
msgid "Clear History"
msgstr "Előzmények törlése"

#: ../data/unity.ui:1121 ../data/unity.ui:1122
msgid "Clear ALT+F2 command history."
msgstr ""

#: ../data/unity.ui:1140 ../data/unity.ui:1141
msgid "Restore the default Dash settings."
msgstr "Alapértelmezett Dash beállítások visszaállítása."

#: ../data/unity.ui:1205
msgid "Menu visible for:"
msgstr "Menü látható:"

#: ../data/unity.ui:1247 ../data/unity.ui:1248
msgid ""
"Select how long the application menu is visible when an application is first "
"opened"
msgstr ""

#: ../data/unity.ui:1269
msgid "seconds"
msgstr "másodpercig"

#: ../data/unity.ui:1292 ../data/unity.ui:1293
msgid "Set the level of transparency for the panel."
msgstr "A panel átlátszóságának megadása."

#: ../data/unity.ui:1308
msgid "Opaque panel for maximized windows"
msgstr "Nem átlátszó panel maximalizált ablakok esetén"

#: ../data/unity.ui:1313 ../data/unity.ui:1314
msgid "If selected, the panel will be opaque for maximized windows"
msgstr "Kiválasztás után a panel nem lesz átlátszó maximalizált ablakok esetén"

#: ../data/unity.ui:1348
msgid "Indicators"
msgstr "Indikátorok"

#: ../data/unity.ui:1381
msgid "Date & time"
msgstr "Dátum és idő"

#: ../data/unity.ui:1386
msgid "If enabled, the date & time indicator will be visible."
msgstr ""

#: ../data/unity.ui:1387
msgid "If enabled, the date & time indicator will be visible."
msgstr ""

#: ../data/unity.ui:1409
msgid "12-hour time"
msgstr "12 órás formátum"

#: ../data/unity.ui:1414 ../data/unity.ui:1415
msgid "Have the clock use 12-hour time."
msgstr "12 órás formátum használata az időhöz."

#: ../data/unity.ui:1429
msgid "24-hour time"
msgstr "24 órás formátum"

#: ../data/unity.ui:1434 ../data/unity.ui:1435
msgid "Have the clock use 24-hour time."
msgstr "24 órás formátum használata az időhöz."

#: ../data/unity.ui:1447
msgid "Seconds"
msgstr "Másodpercek"

#: ../data/unity.ui:1452 ../data/unity.ui:1453
msgid "If enabled, the clock will display seconds."
msgstr "Kiválasztás után az óra a másodperceket is kijelzi."

#: ../data/unity.ui:1466
msgid "Date"
msgstr "Dátum"

#: ../data/unity.ui:1471 ../data/unity.ui:1472
msgid "If enabled, the month and day will be visible in the panel."
msgstr ""

#: ../data/unity.ui:1485
msgid "Weekday"
msgstr "Hét napja"

#: ../data/unity.ui:1490 ../data/unity.ui:1491
msgid "If enabled, the day of the week will be visible in the panel."
msgstr "Kiválasztás után az óra a hét napját is megjeleníti a panelen."

#: ../data/unity.ui:1509
msgid "Include:"
msgstr "Tartalmaz:"

#: ../data/unity.ui:1518
msgid "Calendar"
msgstr "Naptár"

#: ../data/unity.ui:1523 ../data/unity.ui:1524
msgid "If enabled, the calendar will be visible in the indicator menu."
msgstr ""

#: ../data/unity.ui:1551
msgid "Bluetooth"
msgstr "Bluetooth"

#: ../data/unity.ui:1556 ../data/unity.ui:1557
msgid "If enabled, the bluetooth indicator is visible in the panel."
msgstr "Kiválasztás után az bluetooth indikátor is megjelenik a panelen."

#: ../data/unity.ui:1591
msgid "Power"
msgstr "Energia gazdálkodás"

#: ../data/unity.ui:1595 ../data/unity.ui:1596
msgid "If enabled, show the power menu in the panel."
msgstr "Kiválasztás után az energia gazdálkodás menü is megjelenik a panelen."

#: ../data/unity.ui:1618
msgid "Visible when charging or discharging"
msgstr "Töltés vagy merülés közben látszik"

#: ../data/unity.ui:1622 ../data/unity.ui:1623
msgid ""
"Set the power indicator to be visible when charging or discharging power."
msgstr ""

#: ../data/unity.ui:1635
msgid "Always visible"
msgstr "Mindig látható"

#: ../data/unity.ui:1639 ../data/unity.ui:1640
msgid "Set the power indicator to be always visible."
msgstr ""

#: ../data/unity.ui:1653
msgid "Display remaining battery life"
msgstr "Hátralévő akkuidő megjelenítése"

#: ../data/unity.ui:1658 ../data/unity.ui:1659
msgid "If enabled, show the remaining battery life in the power indicator."
msgstr ""

#: ../data/unity.ui:1689
msgid "Volume"
msgstr "Hangerő"

#: ../data/unity.ui:1693 ../data/unity.ui:1694
msgid "If enabled, show the sound menu in the panel."
msgstr ""

#: ../data/unity.ui:1717
msgid "Default player:"
msgstr "Alapértelmezett lejátszó:"

#: ../data/unity.ui:1728 ../data/unity.ui:1729
msgid ""
"Select which of the installed audio players is default in the sound menu."
msgstr ""

#: ../data/unity.ui:1745
msgid "Notifications when scrolling"
msgstr "Értesítés görgetés közben"

#: ../data/unity.ui:1749 ../data/unity.ui:1750
msgid ""
"When using scrolling to change the volume, show on-screen notifications."
msgstr ""

#: ../data/unity.ui:1770
msgid "Show my name"
msgstr "Név megjelenítése"

#: ../data/unity.ui:1775
msgid "If enabled, show the user's real name in the panel."
msgstr ""

#: ../data/unity.ui:1776
msgid "If enabled, show the user's real name in the panel."
msgstr ""

#: ../data/unity.ui:1810 ../data/unity.ui:1811
msgid "Restore the default Unity panel settings."
msgstr ""

#: ../data/unity.ui:1873
msgid "Switch between windows on all workspaces"
msgstr ""

#: ../data/unity.ui:1878 ../data/unity.ui:1879
msgid ""
"If enabled, the window switcher cycles through all windows on all workspaces"
msgstr ""

#: ../data/unity.ui:1892
msgid "Display \"Show Desktop\" icon"
msgstr "Az „Asztal megjelenítése” ikon megjelenítése"

#: ../data/unity.ui:1897
msgid ""
"If enabled, show the "Show Desktop" option in the window switcher"
msgstr ""

#: ../data/unity.ui:1898
msgid "If enabled, show the \"Show Desktop\" option in the window switcher"
msgstr ""

#: ../data/unity.ui:1910
msgid "Automatically expose windows"
msgstr ""

#: ../data/unity.ui:1915 ../data/unity.ui:1916
msgid "If enabled, the window switcher will expose minimized windows"
msgstr ""

#: ../data/unity.ui:1928
msgid "Switch between minimized windows"
msgstr ""

#: ../data/unity.ui:1933 ../data/unity.ui:1934
msgid "If enabled, the window switcher will switch through minimized windows"
msgstr ""

#: ../data/unity.ui:1957
msgid "Window switching shortcuts"
msgstr ""

#: ../data/unity.ui:1981 ../data/unity.ui:1982
msgid "Window switcher shortcuts"
msgstr ""

#: ../data/unity.ui:1992 ../data/unity.ui:2068 ../data/unity.ui:2405
#: ../data/windowmanager.ui:266 ../data/windowmanager.ui:536
#: ../data/windowmanager.ui:796 ../data/windowmanager.ui:1054
msgid "Title"
msgstr "Cím"

#: ../data/unity.ui:2005 ../data/unity.ui:2081 ../data/unity.ui:2418
#: ../data/windowmanager.ui:279 ../data/windowmanager.ui:549
#: ../data/windowmanager.ui:809 ../data/windowmanager.ui:1067
msgid "Accelerator"
msgstr "Gyorsítás"

#: ../data/unity.ui:2032
msgid "Launcher switching shortcuts"
msgstr ""

#: ../data/unity.ui:2057 ../data/unity.ui:2058
msgid "Launcher switcher shortcuts"
msgstr ""

#: ../data/unity.ui:2109
msgid "Restore the default window switcher settings."
msgstr ""

#: ../data/unity.ui:2171 ../data/unity.ui:2172
msgid "Enable prompts for webapp integration when visiting supported websites?"
msgstr ""

#: ../data/unity.ui:2187
msgid "Integration prompts:"
msgstr ""

#: ../data/unity.ui:2209
msgid "Preauthorized domains"
msgstr "Előreengedélyezett domainek"

#: ../data/unity.ui:2228
msgid "Amazon"
msgstr "Amazon"

#: ../data/unity.ui:2245
msgid "Ubuntu One"
msgstr "Ubuntu One"

#: ../data/unity.ui:2273 ../data/unity.ui:2274
msgid "Restore the default Unity Webapps settings."
msgstr ""

#: ../data/unity.ui:2316
msgid "HUD"
msgstr "HUD"

#: ../data/unity.ui:2329
msgid "Remember previous commands"
msgstr "Előző parancs megjegyzése"

#: ../data/unity.ui:2333 ../data/unity.ui:2334
msgid ""
"If enabled, the HUD will remember previously executed entries and sort them "
"by frequently used."
msgstr ""

#: ../data/unity.ui:2352
msgid "Keyboard Shortcuts"
msgstr "Gyorsbillentyűk"

#: ../data/unity.ui:2365
msgid "Hold Super for keyboard shortcuts"
msgstr ""

#: ../data/unity.ui:2370 ../data/unity.ui:2371
msgid ""
"When enabled, pressing the Super key displays an overlay of all Unity "
"keyboard shortcuts"
msgstr ""

#: ../data/unity.ui:2394 ../data/unity.ui:2395
msgid "List of Unity keyboard shortcuts"
msgstr ""

#: ../data/unity.ui:2446
msgid "Notifications"
msgstr "Értesítések"

#: ../data/unity.ui:2465
msgid "All displays"
msgstr "Összes kijelző"

#: ../data/unity.ui:2469 ../data/unity.ui:2470
msgid "For multiple displays, notifications are visible on all of them."
msgstr ""

#: ../data/unity.ui:2483
msgid "Active display"
msgstr "Aktív kijelző"

#: ../data/unity.ui:2487 ../data/unity.ui:2488
msgid "For multiple displays, notifications are visible on the active display."
msgstr ""

#: ../data/unity.ui:2511 ../data/unity.ui:2512
msgid "Restore the default Unity keyboard shortcut settings."
msgstr ""

#: ../data/windowmanager.ui:45
msgid "Close window"
msgstr "Ablak bezárása"

#: ../data/windowmanager.ui:46
msgid "Alt+F4"
msgstr "Alt+F4"

#: ../data/windowmanager.ui:49
msgid "Move window"
msgstr "Ablak áthelyezése"

#: ../data/windowmanager.ui:50
msgid "Alt+mouse button 1"
msgstr "Alt+bal egérgomb"

#: ../data/windowmanager.ui:53
msgid "Show desktop"
msgstr "Asztal megjelenítése"

#: ../data/windowmanager.ui:54
msgid "Super+D"
msgstr "Super+D"

#: ../data/windowmanager.ui:67
msgid "Zoom in"
msgstr "Nagyítás"

#: ../data/windowmanager.ui:68
msgid "Super++"
msgstr "Super++"

#: ../data/windowmanager.ui:71
msgid "Zoom out"
msgstr "Kicsinyítés"

#: ../data/windowmanager.ui:72
msgid "Super+-"
msgstr "Super+-"

#: ../data/windowmanager.ui:85
msgid "Start windows spread"
msgstr ""

#: ../data/windowmanager.ui:86
msgid "Super+W"
msgstr "Super+W"

#: ../data/windowmanager.ui:89
msgid "Start windows spread for all windows"
msgstr ""

#: ../data/windowmanager.ui:103
msgid "Start workspace switcher"
msgstr ""

#: ../data/windowmanager.ui:104
msgid "Super+S"
msgstr "Super+S"

#: ../data/windowmanager.ui:118
msgid "Toggle Desktop"
msgstr ""

#: ../data/windowmanager.ui:121
msgid "Show Workspaces"
msgstr "Munkaterületek megjelenítése"

#: ../data/windowmanager.ui:124
msgid "Window Spread"
msgstr ""

#: ../data/windowmanager.ui:127
msgid "Spread all Windows"
msgstr ""

#: ../data/windowmanager.ui:138
msgid "Do Nothing"
msgstr "Ne tegyen semmit"

#: ../data/windowmanager.ui:141
msgid "Bottom Left Corner"
msgstr "Bal alsó sarok"

#: ../data/windowmanager.ui:144
msgid "Bottom Half"
msgstr "Alsó fél"

#: ../data/windowmanager.ui:147
msgid "Bottom Right Corner"
msgstr "Jobb alsó sarok"

#: ../data/windowmanager.ui:150
msgid "Left Half"
msgstr "Bal fél"

#: ../data/windowmanager.ui:153
msgid "Fill Screen"
msgstr "A képernyő kitöltése"

#: ../data/windowmanager.ui:156
msgid "Right Half"
msgstr "Jobb fél"

#: ../data/windowmanager.ui:159
msgid "Top Left Corner"
msgstr "Bal felső sarok"

#: ../data/windowmanager.ui:162
msgid "Top Half"
msgstr "Felső fél"

#: ../data/windowmanager.ui:165
msgid "Top Right Corner"
msgstr "Jobb felső sarok"

#: ../data/windowmanager.ui:168 ../data/windowmanager.ui:2029
#: ../data/windowmanager.ui:2064 ../data/windowmanager.ui:2101
msgid "Maximize"
msgstr "Maximalizálás"

#: ../data/windowmanager.ui:192
msgid "Zoom"
msgstr "Nagyítás"

#: ../data/windowmanager.ui:214 ../data/windowmanager.ui:215
msgid "Enable desktop zoom?"
msgstr "Engedélyezi az asztal nagyítását?"

#: ../data/windowmanager.ui:230
msgid "Desktop magnification:"
msgstr "Asztal nagyítása:"

#: ../data/windowmanager.ui:255 ../data/windowmanager.ui:256
msgid "List of keyboard shortcuts for zoom"
msgstr "Gyorsbillentyűk a nagyításhoz"

#: ../data/windowmanager.ui:308
msgid "Hardware acceleration"
msgstr "Hardveres gyorsítás"

#: ../data/windowmanager.ui:331 ../data/windowmanager.ui:332
msgid "Select the level of texture rendering done by OpenGL"
msgstr "Az OpenGL textúra renderelési szintjének megválasztása"

#: ../data/windowmanager.ui:335
msgid "Texture quality: "
msgstr "Textúra minősége: "

#: ../data/windowmanager.ui:347
msgid "Fast"
msgstr "Gyors"

#: ../data/windowmanager.ui:348
msgid "Good"
msgstr "Jó"

#: ../data/windowmanager.ui:349
msgid "Best"
msgstr "Legjobb"

#: ../data/windowmanager.ui:371
msgid "Animations"
msgstr "Animációk"

#: ../data/windowmanager.ui:396
msgid "Minimize:"
msgstr "Minimalizáslás:"

#: ../data/windowmanager.ui:432
msgid "Unminimize:"
msgstr "Maximalizálás:"

#: ../data/windowmanager.ui:469
msgid "Window Animations:"
msgstr "Ablak animációk:"

#: ../data/windowmanager.ui:502
msgid "Keyboard shortcuts"
msgstr "Gyorsbillentyűk"

#: ../data/windowmanager.ui:524 ../data/windowmanager.ui:525
msgid "List of window manager keyboard shortcuts"
msgstr "Az ablakkezelő gyorsbillentyűi"

#: ../data/windowmanager.ui:577 ../data/windowmanager.ui:578
msgid "Restore default window manager settings"
msgstr "Az ablakkezelő alapértelmezett beállításainak visszaállítása"

#: ../data/windowmanager.ui:639 ../data/windowmanager.ui:640
msgid "Enable the window manager to draw multiple workspaces"
msgstr "Engedélyezi az ablakkezelőnek több munkaterület rajzolását"

#: ../data/windowmanager.ui:655
msgid "Workspace switcher:"
msgstr "Munkaterület-váltó"

#: ../data/windowmanager.ui:668 ../data/windowmanager.ui:669
msgid "Select the outline colour of the current workspace in the overview"
msgstr ""

#: ../data/windowmanager.ui:671
msgid "Current workspace colour:"
msgstr "Aktuális munkaterület színe:"

#: ../data/windowmanager.ui:696 ../data/windowmanager.ui:697
msgid "Select the number of vertical workspaces"
msgstr "Függőleges munkaterületek száma"

#: ../data/windowmanager.ui:699
msgid "Vertical workspaces:"
msgstr "Függőleges munkaterületek:"

#: ../data/windowmanager.ui:739 ../data/windowmanager.ui:740
msgid "Select the number of horizontal workspaces"
msgstr "Vízszintes munkaterületek száma"

#: ../data/windowmanager.ui:742
msgid "Horizontal workspaces:"
msgstr "Vízszintes munkaterületek:"

#: ../data/windowmanager.ui:763
msgid "Workspace shortcuts"
msgstr "Munkaterület gyorsbillentyűk"

#: ../data/windowmanager.ui:785 ../data/windowmanager.ui:786
msgid "List of workspace management keyboard shortcuts"
msgstr "A munkaterület kezelésének gyorsbillentyűi"

#: ../data/windowmanager.ui:838 ../data/windowmanager.ui:839
msgid "Restore default workspace configuration"
msgstr "A munkaterület alapértelmezett beállításainak visszaállítása"

#: ../data/windowmanager.ui:861
msgid "Workspace Settings"
msgstr "Munkaterület beállítások"

#: ../data/windowmanager.ui:904 ../data/windowmanager.ui:905
msgid "Enable the window spread?"
msgstr ""

#: ../data/windowmanager.ui:922
msgid "Window spread:"
msgstr ""

#: ../data/windowmanager.ui:948 ../data/windowmanager.ui:949
msgid "Select the space between window in the spead overview in pixels"
msgstr ""

#: ../data/windowmanager.ui:951
msgid "Spacing:"
msgstr "Térköz:"

#: ../data/windowmanager.ui:974
msgid "Icons on previews"
msgstr "Ikonok az előnézetnél"

#: ../data/windowmanager.ui:978 ../data/windowmanager.ui:979
msgid ""
"When enabled, show an application's icon on the window preview in the window "
"spread"
msgstr ""

#: ../data/windowmanager.ui:992
msgid "Click to access desktop"
msgstr ""

#: ../data/windowmanager.ui:996 ../data/windowmanager.ui:997
msgid ""
"When enabled, clicking on the desktop in the window spread will display the "
"desktop"
msgstr ""

#: ../data/windowmanager.ui:1021
msgid "Window spread shortcuts"
msgstr ""

#: ../data/windowmanager.ui:1043 ../data/windowmanager.ui:1044
msgid "List of window spread shortcuts"
msgstr ""

#: ../data/windowmanager.ui:1095 ../data/windowmanager.ui:1096
msgid "Restore default window spread settings"
msgstr ""

#: ../data/windowmanager.ui:1118
msgid "Window spread"
msgstr ""

#: ../data/windowmanager.ui:1176
msgid "Window snapping:"
msgstr ""

#: ../data/windowmanager.ui:1188 ../data/windowmanager.ui:2167
msgid "Fill colour:"
msgstr "Kitöltés színe:"

#: ../data/windowmanager.ui:1201 ../data/windowmanager.ui:2154
msgid "Outline colour:"
msgstr "Körvonal színe:"

#: ../data/windowmanager.ui:1494
msgid "Window snapping"
msgstr ""

#: ../data/windowmanager.ui:1551
msgid "Hotcorners:"
msgstr "Forrósarkok:"

#: ../data/windowmanager.ui:1838
msgid "Focus Behaviour"
msgstr ""

#: ../data/windowmanager.ui:1863
msgid "Auto-raise delay:"
msgstr ""

#: ../data/windowmanager.ui:1875 ../data/windowmanager.ui:1876
msgid "Set the delay for raising newly focused windows."
msgstr ""

#: ../data/windowmanager.ui:1891
msgid "If enabled, windows that take focus will be automatically raised."
msgstr ""

#: ../data/windowmanager.ui:1907
msgid "Focus mode:"
msgstr ""

#: ../data/windowmanager.ui:1920 ../data/windowmanager.ui:1921
msgid ""
"Select the window focus mode; \"click\" means windows must be clicked in "
"order to focus them, \"sloppy\" means windows are focused when the mouse "
"enters the window, and \"mouse\" means windows are focused when the mouse "
"enters the window and unfocused when the mouse leaves the window."
msgstr ""

#: ../data/windowmanager.ui:1924
msgid "Click"
msgstr "Kattintás"

#: ../data/windowmanager.ui:1925
msgid "Sloppy"
msgstr ""

#: ../data/windowmanager.ui:1926
msgid "Mouse"
msgstr "Egér"

#: ../data/windowmanager.ui:1940
msgid "Auto-raise:"
msgstr ""

#: ../data/windowmanager.ui:1952
#, fuzzy
msgid "Raise on click:"
msgstr "Jobb gomb:"

#: ../data/windowmanager.ui:1963
msgid "Whether raising should be a side-effect of other user interactions."
msgstr ""

#: ../data/windowmanager.ui:1987
msgid "Titlebar Actions"
msgstr "Címsor műveletek"

#: ../data/windowmanager.ui:2013
msgid "Double click:"
msgstr "Dupla kattintás:"

#: ../data/windowmanager.ui:2025 ../data/windowmanager.ui:2026
msgid "Select the titlebar's double click action."
msgstr ""

#: ../data/windowmanager.ui:2028
msgid "Toggle Shade"
msgstr ""

#: ../data/windowmanager.ui:2030 ../data/windowmanager.ui:2065
#: ../data/windowmanager.ui:2102
msgid "Horizontal expand"
msgstr "Vízszintes nyújtás"

#: ../data/windowmanager.ui:2031 ../data/windowmanager.ui:2066
#: ../data/windowmanager.ui:2103
msgid "Vertical expand"
msgstr "Függőleges nyújtás"

#: ../data/windowmanager.ui:2032 ../data/windowmanager.ui:2067
#: ../data/windowmanager.ui:2104
msgid "Minimize"
msgstr "Minimalizálás"

#: ../data/windowmanager.ui:2033 ../data/windowmanager.ui:2068
#: ../data/windowmanager.ui:2105
msgid "No action"
msgstr "Nincs művelet"

#: ../data/windowmanager.ui:2034 ../data/windowmanager.ui:2069
#: ../data/windowmanager.ui:2106
msgid "Lower"
msgstr "Süllyesztés"

#: ../data/windowmanager.ui:2035 ../data/windowmanager.ui:2070
#: ../data/windowmanager.ui:2107
msgid "Menu"
msgstr "Menü"

#: ../data/windowmanager.ui:2049
msgid "Middle click:"
msgstr "Középső gomb:"

#: ../data/windowmanager.ui:2060 ../data/windowmanager.ui:2061
msgid "Select the titlebar's middle click action."
msgstr ""

#: ../data/windowmanager.ui:2063 ../data/windowmanager.ui:2100
msgid "Toggle shade"
msgstr ""

#: ../data/windowmanager.ui:2085
msgid "Right click:"
msgstr "Jobb gomb:"

#: ../data/windowmanager.ui:2097 ../data/windowmanager.ui:2098
msgid "Select the titlebar's right click action."
msgstr ""

#: ../data/windowmanager.ui:2129
msgid "Resizing"
msgstr "Átméretezés"

#: ../data/windowmanager.ui:2211 ../data/windowmanager.ui:2212
msgid "Restore the default settings for the additional options."
msgstr ""

#~ msgid ""
#~ "Window\n"
#~ "Controls"
#~ msgstr ""
#~ "Ablak\n"
#~ "vezérlés"

#~ msgid "Reset Unity settings?"
#~ msgstr "Alaphelyzetbe állítja a Unity beállításait?"

#~ msgid "Cancel"
#~ msgstr "Mégse"

#~ msgid "Proceed"
#~ msgstr "Tovább"

#~ msgid ""
#~ "This will reset all your Unity settings.\n"
#~ "Are you sure you want to proceed?"
#~ msgstr ""
#~ "Ez visszaállítja az összes beállítást alaphelyzetbe.\n"
#~ "Biztos benne, hogy ezt szeretné?"

#~ msgid "Configuration frontend for the Unity desktop environment"
#~ msgstr "Beállítófelület a Unity asztali környezethez"

#~ msgid "Do you wish to continue?"
#~ msgstr "Folytatni kívánja?"

#~ msgid "Please log out and log back in."
#~ msgstr "Jelentkezzen ki, majd újra be."

#~ msgid "Layout"
#~ msgstr "Elrendezés"

#~ msgid "Right"
#~ msgstr "Jobb"

#~ msgid "Alignment:"
#~ msgstr "Igazítás:"

#~ msgid "Restore Defaults"
#~ msgstr "Alapértelmezések visszaállítása"

#~ msgid "Window Controls"
#~ msgstr "Ablakvezérlők"

#~ msgid "Window controls"
#~ msgstr "Ablakvezérlők"

#~ msgid "Killing Unity and Compiz"
#~ msgstr "Unity és Compiz leállítása"


/**
 * Copyright (c) 2015-present, Facebook, Inc.
 * All rights reserved.
 *
 * This source code is licensed under the BSD-style license found in the
 * LICENSE file in the root directory of this source tree. An additional grant
 * of patent rights can be found in the PATENTS file in the same directory.
 *
 * Declares, validates and defaults options.
 * var validate = declareOpts({
 *   foo: {
 *     type: 'bool',
 *     required: true,
 *   }
 * });
 *
 * var myOptions = validate(someOptions);
 */

'use strict';

var Joi = require('joi');

module.exports = function(descriptor) {
  var joiKeys = {};
  Object.keys(descriptor).forEach(function(prop) {
    var record = descriptor[prop];
    if (record.type == null) {
      throw new Error('Type is required');
    }

    if (record.type === 'function') {
      record.type = 'func';
    }

    var propValidator = Joi[record.type]();

    if (record.required) {
      propValidator = propValidator.required();
    }

    if (record.default) {
      propValidator = propValidator.default(record.default);
    }

    joiKeys[prop] = propValidator;
  });

  var schema = Joi.object().keys(joiKeys);

  return function(opts) {
    opts = opts || {};

    var res = Joi.validate(opts, schema, {
      abortEarly: true,
      allowUnknown: false,
    });

    if (res.error) {
      throw new Error('Error validating module options: ' + res.error.message);
    }
    return res.value;
  };
};


/*-------------------------------------------------------------------------
 *
 * option.c
 *		  FDW option handling for postgres_fdw
 *
 * Portions Copyright (c) 2012-2019, PostgreSQL Global Development Group
 *
 * IDENTIFICATION
 *		  contrib/postgres_fdw/option.c
 *
 *-------------------------------------------------------------------------
 */
#include "postgres.h"

#include "postgres_fdw.h"

#include "access/reloptions.h"
#include "catalog/pg_foreign_server.h"
#include "catalog/pg_foreign_table.h"
#include "catalog/pg_user_mapping.h"
#include "commands/defrem.h"
#include "commands/extension.h"
#include "utils/builtins.h"
#include "utils/varlena.h"

/*
 * Describes the valid options for objects that this wrapper uses.
 */
typedef struct PgFdwOption
{
	const char *keyword;
	Oid			optcontext;		/* OID of catalog in which option may appear */
	bool		is_libpq_opt;	/* true if it's used in libpq */
} PgFdwOption;

/*
 * Valid options for postgres_fdw.
 * Allocated and filled in InitPgFdwOptions.
 */
static PgFdwOption *postgres_fdw_options;

/*
 * Valid options for libpq.
 * Allocated and filled in InitPgFdwOptions.
 */
static PQconninfoOption *libpq_options;

/*
 * Helper functions
 */
static void InitPgFdwOptions(void);
static bool is_valid_option(const char *keyword, Oid context);
static bool is_libpq_option(const char *keyword);

/*
 * Validate the generic options given to a FOREIGN DATA WRAPPER, SERVER,
 * USER MAPPING or FOREIGN TABLE that uses postgres_fdw.
 *
 * Raise an ERROR if the option or its value is considered invalid.
 */
PG_FUNCTION_INFO_V1(postgres_fdw_validator);

Datum
postgres_fdw_validator(PG_FUNCTION_ARGS)
{
	List	   *options_list = untransformRelOptions(PG_GETARG_DATUM(0));
	Oid			catalog = PG_GETARG_OID(1);
	ListCell   *cell;

	/* Build our options lists if we didn't yet. */
	InitPgFdwOptions();

	/*
	 * Check that only options supported by postgres_fdw, and allowed for the
	 * current object type, are given.
	 */
	foreach(cell, options_list)
	{
		DefElem    *def = (DefElem *) lfirst(cell);

		if (!is_valid_option(def->defname, catalog))
		{
			/*
			 * Unknown option specified, complain about it. Provide a hint
			 * with list of valid options for the object.
			 */
			PgFdwOption *opt;
			StringInfoData buf;

			initStringInfo(&buf);
			for (opt = postgres_fdw_options; opt->keyword; opt++)
			{
				if (catalog == opt->optcontext)
					appendStringInfo(&buf, "%s%s", (buf.len > 0) ? ", " : "",
									 opt->keyword);
			}

			ereport(ERROR,
					(errcode(ERRCODE_FDW_INVALID_OPTION_NAME),
					 errmsg("invalid option \"%s\"", def->defname),
					 errhint("Valid options in this context are: %s",
							 buf.data)));
		}

		/*
		 * Validate option value, when we can do so without any context.
		 */
		if (strcmp(def->defname, "use_remote_estimate") == 0 ||
			strcmp(def->defname, "updatable") == 0)
		{
			/* these accept only boolean values */
			(void) defGetBoolean(def);
		}
		else if (strcmp(def->defname, "fdw_startup_cost") == 0 ||
				 strcmp(def->defname, "fdw_tuple_cost") == 0)
		{
			/* these must have a non-negative numeric value */
			double		val;
			char	   *endp;

			val = strtod(defGetString(def), &endp);
			if (*endp || val < 0)
				ereport(ERROR,
						(errcode(ERRCODE_SYNTAX_ERROR),
						 errmsg("%s requires a non-negative numeric value",
								def->defname)));
		}
		else if (strcmp(def->defname, "extensions") == 0)
		{
			/* check list syntax, warn about uninstalled extensions */
			(void) ExtractExtensionList(defGetString(def), true);
		}
		else if (strcmp(def->defname, "fetch_size") == 0)
		{
			int			fetch_size;

			fetch_size = strtol(defGetString(def), NULL, 10);
			if (fetch_size <= 0)
				ereport(ERROR,
						(errcode(ERRCODE_SYNTAX_ERROR),
						 errmsg("%s requires a non-negative integer value",
								def->defname)));
		}
	}

	PG_RETURN_VOID();
}

/*
 * Initialize option lists.
 */
static void
InitPgFdwOptions(void)
{
	int			num_libpq_opts;
	PQconninfoOption *lopt;
	PgFdwOption *popt;

	/* non-libpq FDW-specific FDW options */
	static const PgFdwOption non_libpq_options[] = {
		{"schema_name", ForeignTableRelationId, false},
		{"table_name", ForeignTableRelationId, false},
		{"column_name", AttributeRelationId, false},
		/* use_remote_estimate is available on both server and table */
		{"use_remote_estimate", ForeignServerRelationId, false},
		{"use_remote_estimate", ForeignTableRelationId, false},
		/* cost factors */
		{"fdw_startup_cost", ForeignServerRelationId, false},
		{"fdw_tuple_cost", ForeignServerRelationId, false},
		/* shippable extensions */
		{"extensions", ForeignServerRelationId, false},
		/* updatable is available on both server and table */
		{"updatable", ForeignServerRelationId, false},
		{"updatable", ForeignTableRelationId, false},
		/* fetch_size is available on both server and table */
		{"fetch_size", ForeignServerRelationId, false},
		{"fetch_size", ForeignTableRelationId, false},
		{NULL, InvalidOid, false}
	};

	/* Prevent redundant initialization. */
	if (postgres_fdw_options)
		return;

	/*
	 * Get list of valid libpq options.
	 *
	 * To avoid unnecessary work, we get the list once and use it throughout
	 * the lifetime of this backend process.  We don't need to care about
	 * memory context issues, because PQconndefaults allocates with malloc.
	 */
	libpq_options = PQconndefaults();
	if (!libpq_options)			/* assume reason for failure is OOM */
		ereport(ERROR,
				(errcode(ERRCODE_FDW_OUT_OF_MEMORY),
				 errmsg("out of memory"),
				 errdetail("Could not get libpq's default connection options.")));

	/* Count how many libpq options are available. */
	num_libpq_opts = 0;
	for (lopt = libpq_options; lopt->keyword; lopt++)
		num_libpq_opts++;

	/*
	 * Construct an array which consists of all valid options for
	 * postgres_fdw, by appending FDW-specific options to libpq options.
	 *
	 * We use plain malloc here to allocate postgres_fdw_options because it
	 * lives as long as the backend process does.  Besides, keeping
	 * libpq_options in memory allows us to avoid copying every keyword
	 * string.
	 */
	postgres_fdw_options = (PgFdwOption *)
		malloc(sizeof(PgFdwOption) * num_libpq_opts +
			   sizeof(non_libpq_options));
	if (postgres_fdw_options == NULL)
		ereport(ERROR,
				(errcode(ERRCODE_FDW_OUT_OF_MEMORY),
				 errmsg("out of memory")));

	popt = postgres_fdw_options;
	for (lopt = libpq_options; lopt->keyword; lopt++)
	{
		/* Hide debug options, as well as settings we override internally. */
		if (strchr(lopt->dispchar, 'D') ||
			strcmp(lopt->keyword, "fallback_application_name") == 0 ||
			strcmp(lopt->keyword, "client_encoding") == 0)
			continue;

		/* We don't have to copy keyword string, as described above. */
		popt->keyword = lopt->keyword;

		/*
		 * "user" and any secret options are allowed only on user mappings.
		 * Everything else is a server option.
		 */
		if (strcmp(lopt->keyword, "user") == 0 || strchr(lopt->dispchar, '*'))
			popt->optcontext = UserMappingRelationId;
		else
			popt->optcontext = ForeignServerRelationId;
		popt->is_libpq_opt = true;

		popt++;
	}

	/* Append FDW-specific options and dummy terminator. */
	memcpy(popt, non_libpq_options, sizeof(non_libpq_options));
}

/*
 * Check whether the given option is one of the valid postgres_fdw options.
 * context is the Oid of the catalog holding the object the option is for.
 */
static bool
is_valid_option(const char *keyword, Oid context)
{
	PgFdwOption *opt;

	Assert(postgres_fdw_options);	/* must be initialized already */

	for (opt = postgres_fdw_options; opt->keyword; opt++)
	{
		if (context == opt->optcontext && strcmp(opt->keyword, keyword) == 0)
			return true;
	}

	return false;
}

/*
 * Check whether the given option is one of the valid libpq options.
 */
static bool
is_libpq_option(const char *keyword)
{
	PgFdwOption *opt;

	Assert(postgres_fdw_options);	/* must be initialized already */

	for (opt = postgres_fdw_options; opt->keyword; opt++)
	{
		if (opt->is_libpq_opt && strcmp(opt->keyword, keyword) == 0)
			return true;
	}

	return false;
}

/*
 * Generate key-value arrays which include only libpq options from the
 * given list (which can contain any kind of options).  Caller must have
 * allocated large-enough arrays.  Returns number of options found.
 */
int
ExtractConnectionOptions(List *defelems, const char **keywords,
						 const char **values)
{
	ListCell   *lc;
	int			i;

	/* Build our options lists if we didn't yet. */
	InitPgFdwOptions();

	i = 0;
	foreach(lc, defelems)
	{
		DefElem    *d = (DefElem *) lfirst(lc);

		if (is_libpq_option(d->defname))
		{
			keywords[i] = d->defname;
			values[i] = defGetString(d);
			i++;
		}
	}
	return i;
}

/*
 * Parse a comma-separated string and return a List of the OIDs of the
 * extensions named in the string.  If any names in the list cannot be
 * found, report a warning if warnOnMissing is true, else just silently
 * ignore them.
 */
List *
ExtractExtensionList(const char *extensionsString, bool warnOnMissing)
{
	List	   *extensionOids = NIL;
	List	   *extlist;
	ListCell   *lc;

	/* SplitIdentifierString scribbles on its input, so pstrdup first */
	if (!SplitIdentifierString(pstrdup(extensionsString), ',', &extlist))
	{
		/* syntax error in name list */
		ereport(ERROR,
				(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
				 errmsg("parameter \"%s\" must be a list of extension names",
						"extensions")));
	}

	foreach(lc, extlist)
	{
		const char *extension_name = (const char *) lfirst(lc);
		Oid			extension_oid = get_extension_oid(extension_name, true);

		if (OidIsValid(extension_oid))
		{
			extensionOids = lappend_oid(extensionOids, extension_oid);
		}
		else if (warnOnMissing)
		{
			ereport(WARNING,
					(errcode(ERRCODE_UNDEFINED_OBJECT),
					 errmsg("extension \"%s\" is not installed",
							extension_name)));
		}
	}

	list_free(extlist);
	return extensionOids;
}


import {Component, Input, OnInit, ViewChild} from "@angular/core";
import {
    MatDialog,
    MatIconRegistry,
    MatPaginator,
    MatSort
} from "@angular/material";
import {AppSettings} from "../../app-settings";
import {TaskService} from "../task.service";
import {ReportService} from "../../report/report.service";
import {ModelAddDialogComponent} from "../../model/model-add-dialog.component";
import {DomSanitizer} from "@angular/platform-browser";
import {TaskInfoDialogComponent} from "./task-info-dialog.component";
import {Paginator} from "../../paginator";

@Component({
    selector: 'app-task-table',
    templateUrl: './task-table.component.html',
    styleUrls: ['./task-table.component.css']
})
export class TaskTableComponent implements OnInit {
    @Input() paginator: Paginator<any>;
    @Input() report: number;
    @Input() show_links: boolean = true;

    @Input() projects: any[];

    @ViewChild(MatPaginator) paginator_view: MatPaginator;
    @ViewChild(MatSort) sort_view: MatSort;

    displayed_columns: string[] = [
        'project',
        'dag',
        'id',
        'name',
        'status',
        'created',
        'started',
        'last_activity',
        'duration',
        'computer',
        'requirements',
        'steps',
        'progress',
        'score',
        'links'
    ];

    constructor(protected service: TaskService,
                private report_service: ReportService,
                public model_add_dialog: MatDialog,
                public task_info_dialog: MatDialog,
                iconRegistry: MatIconRegistry,
                sanitizer: DomSanitizer
    ) {
        iconRegistry.addSvgIcon('stop',
            sanitizer.bypassSecurityTrustResourceUrl(
                'assets/img/stop.svg'));
        iconRegistry.addSvgIcon('report',
            sanitizer.bypassSecurityTrustResourceUrl(
                'assets/img/report.svg'));
        iconRegistry.addSvgIcon('model',
            sanitizer.bypassSecurityTrustResourceUrl(
                'assets/img/model.svg'));
        iconRegistry.addSvgIcon('info',
            sanitizer.bypassSecurityTrustResourceUrl(
                'assets/img/info.svg'));
    }

    status_color(status: string) {
        return AppSettings.status_colors[status];
    }

    stop(task) {
        this.service.stop(task.id).subscribe(data => {
        });
    }

    unfinished(element) {
        return [
            'not_ran',
            'in_progress',
            'queued'].indexOf(element.status) != -1;
    }

    is_report_transparent(element: any) {
        if (this.report) {
            return false;
        }

        return !element.report;
    }

    is_report_transparent_active(element: any) {
        if (!this.report) {
            return false;
        }

        return !element.report_full;
    }

    report_click(element: any) {
        let self = this;
        if (this.report) {
            this.service.toogle_report(
                element.id,
                this.report,
                element.report_full).subscribe(data => {
                element.report_full = data.report_full;
                self.report_service.data_updated.emit();
            });
            return
        }
    }

    model(element) {
        this.model_add_dialog.open(ModelAddDialogComponent, {
            width: '500px', height: '400px',
            data: {
                'project': element.dag_rel.project.id,
                'projects': this.projects,
                'task': element.id,
                'file': 'best_full',
                'fold': 0
            }
        });
    }

    info(element) {
        this.task_info_dialog.open(TaskInfoDialogComponent, {
            width: '600px', height: '700px',
            data: {
                'id': element.id
            }
        });
    }

    router_link(element) {
        if (this.report) {
            return null;
        }
        return `/reports/report-detail/${element.report}`
    }

    ngOnInit(): void {
        this.paginator.paginator = this.paginator_view;
        this.paginator.sort = this.sort_view;
        this.paginator.init = true;
        this.paginator.ngOnInit();
    }

    pad(num, size) {
        let s = num + "";
        while (s.length < size) s = "0" + s;
        return s;
    }

    get_progress(element) {
        if(!element.loader_name){
            return ''
        }
        let duration_minutes = this.pad(Math.floor(element.epoch_duration / 60).toString(), 2);
        let duration_seconds = this.pad(Math.floor(element.epoch_duration % 60).toString(), 2);

        let epoch_time_remaining_minutes = this.pad(Math.floor(element.epoch_time_remaining / 60).toString(), 2);
        let epoch_time_remaining_seconds = this.pad(Math.floor(element.epoch_time_remaining % 60).toString(), 2);

        let res = `${element.loader_name}:
        ${element.batch_index}/${element.batch_total}
        ${duration_minutes}:${duration_seconds}/
        ${epoch_time_remaining_minutes}:${epoch_time_remaining_seconds}`;
        if(element.loss != null){
            res += `, loss=${element.loss}`
        }
        return res;
    }
}


<?php

/*
 * This file is part of SwiftMailer.
 * (c) 2004-2009 Chris Corbyn
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

/**
 * Allows StreamFilters to operate on a stream.
 *
 * @author Chris Corbyn
 */
interface Swift_Filterable
{
    /**
     * Add a new StreamFilter, referenced by $key.
     *
     * @param Swift_StreamFilter $filter
     * @param string             $key
     */
    public function addFilter(Swift_StreamFilter $filter, $key);

    /**
     * Remove an existing filter using $key.
     *
     * @param string $key
     */
    public function removeFilter($key);
}


<?php
namespace Psalm\Issue;

class InvalidGlobal extends CodeIssue
{
    public const ERROR_LEVEL = -1;
    public const SHORTCODE = 46;
}


_a_Music0_txt db '_MUSIC0.TXT',0


# Frontend stuff

페이지 링크 : https://github.com/moklick/frontend-stuff

이 프로젝트 또한 프로젝트 모임집 같은 프로젝트인데요, 특별히 프론트엔드 개발 프레임 워크들을 다루고 있습니다.
(Javascript에 집중하고 있다는 얘기를 하고 있습니다.)

UI framework 들을 살펴보면 semantic-ui 부터 materialize 까지 작성자가 찾은 UI 프레임 워크들을 소개하고 있습니다.

재미있는 것은 제가 이 프로젝트를 보면서 아래와 같이 Map카테고리에 Openlayers3를 추가해 달라고 했더니 금새 달렸습니다.
여러분들도 좋아하시는 프레임 워크들을 추천해 보는 것은 어떨까요?

![이미지](../img/004-15.png)

차트들은 상당히 일목요연하게 잘 정리되어 있네요.

![이미지](../img/004-15-2.png)


def f(a: Int) = {}

println(/* applicable: false */ f())


<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */

namespace Magento\Ui\Api\Data;

/**
 * Interface for bookmark search results
 *
 * @api
 * @since 100.0.2
 */
interface BookmarkSearchResultsInterface extends \Magento\Framework\Api\SearchResultsInterface
{
    /**
     * Get customers list
     *
     * @return \Magento\Ui\Api\Data\BookmarkInterface[]
     */
    public function getItems();

    /**
     * Set customers list
     *
     * @api
     * @param \Magento\Ui\Api\Data\BookmarkInterface[] $items
     * @return $this
     */
    public function setItems(array $items);
}


// Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
//
// You are hereby granted a non-exclusive, worldwide, royalty-free license to use,
// copy, modify, and distribute this software in source code or binary form for use
// in connection with the web services and APIs provided by Facebook.
//
// As with any software that integrates with the Facebook platform, your use of
// this software is subject to the Facebook Developer Principles and Policies
// [http://developers.facebook.com/policy/]. This copyright notice shall be
// included in all copies or substantial portions of the software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

#import <Foundation/Foundation.h>

#import <FBSDKCoreKit/FBSDKCopying.h>
#import <FBSDKCoreKit/FBSDKGraphRequestConnection.h>
#import <FBSDKCoreKit/FBSDKMacros.h>

/**
  Notification indicating that the `currentAccessToken` has changed.

 the userInfo dictionary of the notification will contain keys
 `FBSDKAccessTokenChangeOldKey` and
 `FBSDKAccessTokenChangeNewKey`.
 */
FBSDK_EXTERN NSString *const FBSDKAccessTokenDidChangeNotification;

/**
  A key in the notification's userInfo that will be set
  if and only if the user ID changed between the old and new tokens.

 Token refreshes can occur automatically with the SDK
  which do not change the user. If you're only interested in user
  changes (such as logging out), you should check for the existence
  of this key. The value is a NSNumber with a boolValue.

  On a fresh start of the app where the SDK reads in the cached value
  of an access token, this key will also exist since the access token
  is moving from a null state (no user) to a non-null state (user).
 */
FBSDK_EXTERN NSString *const FBSDKAccessTokenDidChangeUserID;

/*
  key in notification's userInfo object for getting the old token.

 If there was no old token, the key will not be present.
 */
FBSDK_EXTERN NSString *const FBSDKAccessTokenChangeOldKey;

/*
  key in notification's userInfo object for getting the new token.

 If there is no new token, the key will not be present.
 */
FBSDK_EXTERN NSString *const FBSDKAccessTokenChangeNewKey;

/**
  Represents an immutable access token for using Facebook services.
 */
@interface FBSDKAccessToken : NSObject<FBSDKCopying, NSSecureCoding>

/**
  Returns the app ID.
 */
@property (readonly, copy, nonatomic) NSString *appID;

/**
  Returns the known declined permissions.
 */
@property (readonly, copy, nonatomic) NSSet *declinedPermissions;

/**
  Returns the expiration date.
 */
@property (readonly, copy, nonatomic) NSDate *expirationDate;

/**
  Returns the known granted permissions.
 */
@property (readonly, copy, nonatomic) NSSet *permissions;

/**
  Returns the date the token was last refreshed.
*/
@property (readonly, copy, nonatomic) NSDate *refreshDate;

/**
  Returns the opaque token string.
 */
@property (readonly, copy, nonatomic) NSString *tokenString;

/**
  Returns the user ID.
 */
@property (readonly, copy, nonatomic) NSString *userID;

- (instancetype)init NS_UNAVAILABLE;
+ (instancetype)new NS_UNAVAILABLE;

/**
  Initializes a new instance.
 - Parameter tokenString: the opaque token string.
 - Parameter permissions: the granted permissions. Note this is converted to NSSet and is only
 an NSArray for the convenience of literal syntax.
 - Parameter declinedPermissions: the declined permissions. Note this is converted to NSSet and is only
 an NSArray for the convenience of literal syntax.
 - Parameter appID: the app ID.
 - Parameter userID: the user ID.
 - Parameter expirationDate: the optional expiration date (defaults to distantFuture).
 - Parameter refreshDate: the optional date the token was last refreshed (defaults to today).

 This initializer should only be used for advanced apps that
 manage tokens explicitly. Typical login flows only need to use `FBSDKLoginManager`
 along with `+currentAccessToken`.
 */
- (instancetype)initWithTokenString:(NSString *)tokenString
                        permissions:(NSArray *)permissions
                declinedPermissions:(NSArray *)declinedPermissions
                              appID:(NSString *)appID
                             userID:(NSString *)userID
                     expirationDate:(NSDate *)expirationDate
                        refreshDate:(NSDate *)refreshDate
NS_DESIGNATED_INITIALIZER;

/**
  Convenience getter to determine if a permission has been granted
 - Parameter permission:  The permission to check.
 */
- (BOOL)hasGranted:(NSString *)permission;

/**
  Compares the receiver to another FBSDKAccessToken
 - Parameter token: The other token
 - Returns: YES if the receiver's values are equal to the other token's values; otherwise NO
 */
- (BOOL)isEqualToAccessToken:(FBSDKAccessToken *)token;

/**
  Returns the "global" access token that represents the currently logged in user.

 The `currentAccessToken` is a convenient representation of the token of the
 current user and is used by other SDK components (like `FBSDKLoginManager`).
 */
+ (FBSDKAccessToken *)currentAccessToken;

/**
  Sets the "global" access token that represents the currently logged in user.
 - Parameter token: The access token to set.

 This will broadcast a notification and save the token to the app keychain.
 */
+ (void)setCurrentAccessToken:(FBSDKAccessToken *)token;

/**
  Refresh the current access token's permission state and extend the token's expiration date,
  if possible.
 - Parameter completionHandler: an optional callback handler that can surface any errors related to permission refreshing.

 On a successful refresh, the currentAccessToken will be updated so you typically only need to
  observe the `FBSDKAccessTokenDidChangeNotification` notification.

 If a token is already expired, it cannot be refreshed.
 */
+ (void)refreshCurrentAccessToken:(FBSDKGraphRequestHandler)completionHandler;

@end


<?xml version="1.0" encoding="utf-8"?>

<ScrollView android:layout_width="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/infoScreenScrollview" android:layout_height="fill_parent">
</ScrollView>


StartChar: eacute.sc
Encoding: 1881 -1 1605
Width: 443
VWidth: 0
Flags: HMW
LayerCount: 2
Fore
Refer: 1824 -1 N 1 0 0 1 213.688 47.0083 2
Refer: 1574 -1 N 1 0 0 1 0 0 3
Validated: 32769
EndChar


<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="11542" systemVersion="16A323" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
    <device id="retina4_7" orientation="portrait">
        <adaptation id="fullscreen"/>
    </device>
    <dependencies>
        <deployment identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11524"/>
        <capability name="Constraints to layout margins" minToolsVersion="6.0"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
    <scenes>
        <!--View Controller-->
        <scene sceneID="tne-QT-ifu">
            <objects>
                <viewController id="BYZ-38-t0r" customClass="ViewController" customModule="Project_36___ImagePicker" customModuleProvider="target" sceneMemberID="viewController">
                    <layoutGuides>
                        <viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
                        <viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
                    </layoutGuides>
                    <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                        <subviews>
                            <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="mine" translatesAutoresizingMaskIntoConstraints="NO" id="Y30-oS-14v">
                                <rect key="frame" x="-4" y="0.0" width="383" height="667"/>
                            </imageView>
                            <imageView contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="S8G-nm-vwH">
                                <rect key="frame" x="292" y="268" width="77" height="75"/>
                                <constraints>
                                    <constraint firstAttribute="width" constant="77" id="kYM-qz-IA9"/>
                                </constraints>
                            </imageView>
                        </subviews>
                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                        <constraints>
                            <constraint firstAttribute="trailingMargin" secondItem="Y30-oS-14v" secondAttribute="trailing" constant="-20" id="TAC-0S-vLE"/>
                            <constraint firstItem="wfy-db-euE" firstAttribute="top" secondItem="S8G-nm-vwH" secondAttribute="bottom" constant="324" id="UKp-gt-JX9"/>
                            <constraint firstItem="Y30-oS-14v" firstAttribute="leading" secondItem="8bC-Xf-vdC" secondAttribute="leadingMargin" constant="-20" id="dUu-NH-2qs"/>
                            <constraint firstItem="wfy-db-euE" firstAttribute="top" secondItem="Y30-oS-14v" secondAttribute="bottom" id="hzC-4E-6ia"/>
                            <constraint firstAttribute="trailingMargin" secondItem="S8G-nm-vwH" secondAttribute="trailing" constant="-10" id="k6R-2j-0Oe"/>
                            <constraint firstItem="Y30-oS-14v" firstAttribute="top" secondItem="y3c-jy-aDJ" secondAttribute="bottom" constant="-20" id="k9D-8n-gMI"/>
                            <constraint firstItem="S8G-nm-vwH" firstAttribute="top" secondItem="y3c-jy-aDJ" secondAttribute="bottom" constant="248" id="yqv-6l-EcH"/>
                        </constraints>
                    </view>
                    <connections>
                        <outlet property="headPicture" destination="S8G-nm-vwH" id="WvQ-Te-lSh"/>
                    </connections>
                </viewController>
                <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
            </objects>
            <point key="canvasLocation" x="305.5" y="388.5"/>
        </scene>
    </scenes>
    <resources>
        <image name="mine" width="375" height="670"/>
    </resources>
</document>


// SPDX-License-Identifier: GPL-2.0
/*
 * Zoned block device handling
 *
 * Copyright (c) 2015, Hannes Reinecke
 * Copyright (c) 2015, SUSE Linux GmbH
 *
 * Copyright (c) 2016, Damien Le Moal
 * Copyright (c) 2016, Western Digital
 */

#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/rbtree.h>
#include <linux/blkdev.h>
#include <linux/blk-mq.h>
#include <linux/mm.h>
#include <linux/vmalloc.h>
#include <linux/sched/mm.h>

#include "blk.h"

#define ZONE_COND_NAME(name) [BLK_ZONE_COND_##name] = #name
static const char *const zone_cond_name[] = {
	ZONE_COND_NAME(NOT_WP),
	ZONE_COND_NAME(EMPTY),
	ZONE_COND_NAME(IMP_OPEN),
	ZONE_COND_NAME(EXP_OPEN),
	ZONE_COND_NAME(CLOSED),
	ZONE_COND_NAME(READONLY),
	ZONE_COND_NAME(FULL),
	ZONE_COND_NAME(OFFLINE),
};
#undef ZONE_COND_NAME

/**
 * blk_zone_cond_str - Return string XXX in BLK_ZONE_COND_XXX.
 * @zone_cond: BLK_ZONE_COND_XXX.
 *
 * Description: Centralize block layer function to convert BLK_ZONE_COND_XXX
 * into string format. Useful in the debugging and tracing zone conditions. For
 * invalid BLK_ZONE_COND_XXX it returns string "UNKNOWN".
 */
const char *blk_zone_cond_str(enum blk_zone_cond zone_cond)
{
	static const char *zone_cond_str = "UNKNOWN";

	if (zone_cond < ARRAY_SIZE(zone_cond_name) && zone_cond_name[zone_cond])
		zone_cond_str = zone_cond_name[zone_cond];

	return zone_cond_str;
}
EXPORT_SYMBOL_GPL(blk_zone_cond_str);

static inline sector_t blk_zone_start(struct request_queue *q,
				      sector_t sector)
{
	sector_t zone_mask = blk_queue_zone_sectors(q) - 1;

	return sector & ~zone_mask;
}

/*
 * Return true if a request is a write requests that needs zone write locking.
 */
bool blk_req_needs_zone_write_lock(struct request *rq)
{
	if (!rq->q->seq_zones_wlock)
		return false;

	if (blk_rq_is_passthrough(rq))
		return false;

	switch (req_op(rq)) {
	case REQ_OP_WRITE_ZEROES:
	case REQ_OP_WRITE_SAME:
	case REQ_OP_WRITE:
		return blk_rq_zone_is_seq(rq);
	default:
		return false;
	}
}
EXPORT_SYMBOL_GPL(blk_req_needs_zone_write_lock);

bool blk_req_zone_write_trylock(struct request *rq)
{
	unsigned int zno = blk_rq_zone_no(rq);

	if (test_and_set_bit(zno, rq->q->seq_zones_wlock))
		return false;

	WARN_ON_ONCE(rq->rq_flags & RQF_ZONE_WRITE_LOCKED);
	rq->rq_flags |= RQF_ZONE_WRITE_LOCKED;

	return true;
}
EXPORT_SYMBOL_GPL(blk_req_zone_write_trylock);

void __blk_req_zone_write_lock(struct request *rq)
{
	if (WARN_ON_ONCE(test_and_set_bit(blk_rq_zone_no(rq),
					  rq->q->seq_zones_wlock)))
		return;

	WARN_ON_ONCE(rq->rq_flags & RQF_ZONE_WRITE_LOCKED);
	rq->rq_flags |= RQF_ZONE_WRITE_LOCKED;
}
EXPORT_SYMBOL_GPL(__blk_req_zone_write_lock);

void __blk_req_zone_write_unlock(struct request *rq)
{
	rq->rq_flags &= ~RQF_ZONE_WRITE_LOCKED;
	if (rq->q->seq_zones_wlock)
		WARN_ON_ONCE(!test_and_clear_bit(blk_rq_zone_no(rq),
						 rq->q->seq_zones_wlock));
}
EXPORT_SYMBOL_GPL(__blk_req_zone_write_unlock);

/**
 * blkdev_nr_zones - Get number of zones
 * @disk:	Target gendisk
 *
 * Return the total number of zones of a zoned block device.  For a block
 * device without zone capabilities, the number of zones is always 0.
 */
unsigned int blkdev_nr_zones(struct gendisk *disk)
{
	sector_t zone_sectors = blk_queue_zone_sectors(disk->queue);

	if (!blk_queue_is_zoned(disk->queue))
		return 0;
	return (get_capacity(disk) + zone_sectors - 1) >> ilog2(zone_sectors);
}
EXPORT_SYMBOL_GPL(blkdev_nr_zones);

/**
 * blkdev_report_zones - Get zones information
 * @bdev:	Target block device
 * @sector:	Sector from which to report zones
 * @nr_zones:	Maximum number of zones to report
 * @cb:		Callback function called for each reported zone
 * @data:	Private data for the callback
 *
 * Description:
 *    Get zone information starting from the zone containing @sector for at most
 *    @nr_zones, and call @cb for each zone reported by the device.
 *    To report all zones in a device starting from @sector, the BLK_ALL_ZONES
 *    constant can be passed to @nr_zones.
 *    Returns the number of zones reported by the device, or a negative errno
 *    value in case of failure.
 *
 *    Note: The caller must use memalloc_noXX_save/restore() calls to control
 *    memory allocations done within this function.
 */
int blkdev_report_zones(struct block_device *bdev, sector_t sector,
			unsigned int nr_zones, report_zones_cb cb, void *data)
{
	struct gendisk *disk = bdev->bd_disk;
	sector_t capacity = get_capacity(disk);

	if (!blk_queue_is_zoned(bdev_get_queue(bdev)) ||
	    WARN_ON_ONCE(!disk->fops->report_zones))
		return -EOPNOTSUPP;

	if (!nr_zones || sector >= capacity)
		return 0;

	return disk->fops->report_zones(disk, sector, nr_zones, cb, data);
}
EXPORT_SYMBOL_GPL(blkdev_report_zones);

static inline bool blkdev_allow_reset_all_zones(struct block_device *bdev,
						sector_t sector,
						sector_t nr_sectors)
{
	if (!blk_queue_zone_resetall(bdev_get_queue(bdev)))
		return false;

	/*
	 * REQ_OP_ZONE_RESET_ALL can be executed only if the number of sectors
	 * of the applicable zone range is the entire disk.
	 */
	return !sector && nr_sectors == get_capacity(bdev->bd_disk);
}

/**
 * blkdev_zone_mgmt - Execute a zone management operation on a range of zones
 * @bdev:	Target block device
 * @op:		Operation to be performed on the zones
 * @sector:	Start sector of the first zone to operate on
 * @nr_sectors:	Number of sectors, should be at least the length of one zone and
 *		must be zone size aligned.
 * @gfp_mask:	Memory allocation flags (for bio_alloc)
 *
 * Description:
 *    Perform the specified operation on the range of zones specified by
 *    @sector..@sector+@nr_sectors. Specifying the entire disk sector range
 *    is valid, but the specified range should not contain conventional zones.
 *    The operation to execute on each zone can be a zone reset, open, close
 *    or finish request.
 */
int blkdev_zone_mgmt(struct block_device *bdev, enum req_opf op,
		     sector_t sector, sector_t nr_sectors,
		     gfp_t gfp_mask)
{
	struct request_queue *q = bdev_get_queue(bdev);
	sector_t zone_sectors = blk_queue_zone_sectors(q);
	sector_t capacity = get_capacity(bdev->bd_disk);
	sector_t end_sector = sector + nr_sectors;
	struct bio *bio = NULL;
	int ret;

	if (!blk_queue_is_zoned(q))
		return -EOPNOTSUPP;

	if (bdev_read_only(bdev))
		return -EPERM;

	if (!op_is_zone_mgmt(op))
		return -EOPNOTSUPP;

	if (end_sector <= sector || end_sector > capacity)
		/* Out of range */
		return -EINVAL;

	/* Check alignment (handle eventual smaller last zone) */
	if (sector & (zone_sectors - 1))
		return -EINVAL;

	if ((nr_sectors & (zone_sectors - 1)) && end_sector != capacity)
		return -EINVAL;

	while (sector < end_sector) {
		bio = blk_next_bio(bio, 0, gfp_mask);
		bio_set_dev(bio, bdev);

		/*
		 * Special case for the zone reset operation that reset all
		 * zones, this is useful for applications like mkfs.
		 */
		if (op == REQ_OP_ZONE_RESET &&
		    blkdev_allow_reset_all_zones(bdev, sector, nr_sectors)) {
			bio->bi_opf = REQ_OP_ZONE_RESET_ALL;
			break;
		}

		bio->bi_opf = op | REQ_SYNC;
		bio->bi_iter.bi_sector = sector;
		sector += zone_sectors;

		/* This may take a while, so be nice to others */
		cond_resched();
	}

	ret = submit_bio_wait(bio);
	bio_put(bio);

	return ret;
}
EXPORT_SYMBOL_GPL(blkdev_zone_mgmt);

struct zone_report_args {
	struct blk_zone __user *zones;
};

static int blkdev_copy_zone_to_user(struct blk_zone *zone, unsigned int idx,
				    void *data)
{
	struct zone_report_args *args = data;

	if (copy_to_user(&args->zones[idx], zone, sizeof(struct blk_zone)))
		return -EFAULT;
	return 0;
}

/*
 * BLKREPORTZONE ioctl processing.
 * Called from blkdev_ioctl.
 */
int blkdev_report_zones_ioctl(struct block_device *bdev, fmode_t mode,
			      unsigned int cmd, unsigned long arg)
{
	void __user *argp = (void __user *)arg;
	struct zone_report_args args;
	struct request_queue *q;
	struct blk_zone_report rep;
	int ret;

	if (!argp)
		return -EINVAL;

	q = bdev_get_queue(bdev);
	if (!q)
		return -ENXIO;

	if (!blk_queue_is_zoned(q))
		return -ENOTTY;

	if (!capable(CAP_SYS_ADMIN))
		return -EACCES;

	if (copy_from_user(&rep, argp, sizeof(struct blk_zone_report)))
		return -EFAULT;

	if (!rep.nr_zones)
		return -EINVAL;

	args.zones = argp + sizeof(struct blk_zone_report);
	ret = blkdev_report_zones(bdev, rep.sector, rep.nr_zones,
				  blkdev_copy_zone_to_user, &args);
	if (ret < 0)
		return ret;

	rep.nr_zones = ret;
	if (copy_to_user(argp, &rep, sizeof(struct blk_zone_report)))
		return -EFAULT;
	return 0;
}

/*
 * BLKRESETZONE, BLKOPENZONE, BLKCLOSEZONE and BLKFINISHZONE ioctl processing.
 * Called from blkdev_ioctl.
 */
int blkdev_zone_mgmt_ioctl(struct block_device *bdev, fmode_t mode,
			   unsigned int cmd, unsigned long arg)
{
	void __user *argp = (void __user *)arg;
	struct request_queue *q;
	struct blk_zone_range zrange;
	enum req_opf op;

	if (!argp)
		return -EINVAL;

	q = bdev_get_queue(bdev);
	if (!q)
		return -ENXIO;

	if (!blk_queue_is_zoned(q))
		return -ENOTTY;

	if (!capable(CAP_SYS_ADMIN))
		return -EACCES;

	if (!(mode & FMODE_WRITE))
		return -EBADF;

	if (copy_from_user(&zrange, argp, sizeof(struct blk_zone_range)))
		return -EFAULT;

	switch (cmd) {
	case BLKRESETZONE:
		op = REQ_OP_ZONE_RESET;
		break;
	case BLKOPENZONE:
		op = REQ_OP_ZONE_OPEN;
		break;
	case BLKCLOSEZONE:
		op = REQ_OP_ZONE_CLOSE;
		break;
	case BLKFINISHZONE:
		op = REQ_OP_ZONE_FINISH;
		break;
	default:
		return -ENOTTY;
	}

	return blkdev_zone_mgmt(bdev, op, zrange.sector, zrange.nr_sectors,
				GFP_KERNEL);
}

static inline unsigned long *blk_alloc_zone_bitmap(int node,
						   unsigned int nr_zones)
{
	return kcalloc_node(BITS_TO_LONGS(nr_zones), sizeof(unsigned long),
			    GFP_NOIO, node);
}

void blk_queue_free_zone_bitmaps(struct request_queue *q)
{
	kfree(q->conv_zones_bitmap);
	q->conv_zones_bitmap = NULL;
	kfree(q->seq_zones_wlock);
	q->seq_zones_wlock = NULL;
}

struct blk_revalidate_zone_args {
	struct gendisk	*disk;
	unsigned long	*conv_zones_bitmap;
	unsigned long	*seq_zones_wlock;
	unsigned int	nr_zones;
	sector_t	zone_sectors;
	sector_t	sector;
};

/*
 * Helper function to check the validity of zones of a zoned block device.
 */
static int blk_revalidate_zone_cb(struct blk_zone *zone, unsigned int idx,
				  void *data)
{
	struct blk_revalidate_zone_args *args = data;
	struct gendisk *disk = args->disk;
	struct request_queue *q = disk->queue;
	sector_t capacity = get_capacity(disk);

	/*
	 * All zones must have the same size, with the exception on an eventual
	 * smaller last zone.
	 */
	if (zone->start == 0) {
		if (zone->len == 0 || !is_power_of_2(zone->len)) {
			pr_warn("%s: Invalid zoned device with non power of two zone size (%llu)\n",
				disk->disk_name, zone->len);
			return -ENODEV;
		}

		args->zone_sectors = zone->len;
		args->nr_zones = (capacity + zone->len - 1) >> ilog2(zone->len);
	} else if (zone->start + args->zone_sectors < capacity) {
		if (zone->len != args->zone_sectors) {
			pr_warn("%s: Invalid zoned device with non constant zone size\n",
				disk->disk_name);
			return -ENODEV;
		}
	} else {
		if (zone->len > args->zone_sectors) {
			pr_warn("%s: Invalid zoned device with larger last zone size\n",
				disk->disk_name);
			return -ENODEV;
		}
	}

	/* Check for holes in the zone report */
	if (zone->start != args->sector) {
		pr_warn("%s: Zone gap at sectors %llu..%llu\n",
			disk->disk_name, args->sector, zone->start);
		return -ENODEV;
	}

	/* Check zone type */
	switch (zone->type) {
	case BLK_ZONE_TYPE_CONVENTIONAL:
		if (!args->conv_zones_bitmap) {
			args->conv_zones_bitmap =
				blk_alloc_zone_bitmap(q->node, args->nr_zones);
			if (!args->conv_zones_bitmap)
				return -ENOMEM;
		}
		set_bit(idx, args->conv_zones_bitmap);
		break;
	case BLK_ZONE_TYPE_SEQWRITE_REQ:
	case BLK_ZONE_TYPE_SEQWRITE_PREF:
		if (!args->seq_zones_wlock) {
			args->seq_zones_wlock =
				blk_alloc_zone_bitmap(q->node, args->nr_zones);
			if (!args->seq_zones_wlock)
				return -ENOMEM;
		}
		break;
	default:
		pr_warn("%s: Invalid zone type 0x%x at sectors %llu\n",
			disk->disk_name, (int)zone->type, zone->start);
		return -ENODEV;
	}

	args->sector += zone->len;
	return 0;
}

/**
 * blk_revalidate_disk_zones - (re)allocate and initialize zone bitmaps
 * @disk:	Target disk
 * @update_driver_data:	Callback to update driver data on the frozen disk
 *
 * Helper function for low-level device drivers to (re) allocate and initialize
 * a disk request queue zone bitmaps. This functions should normally be called
 * within the disk ->revalidate method for blk-mq based drivers.  For BIO based
 * drivers only q->nr_zones needs to be updated so that the sysfs exposed value
 * is correct.
 * If the @update_driver_data callback function is not NULL, the callback is
 * executed with the device request queue frozen after all zones have been
 * checked.
 */
int blk_revalidate_disk_zones(struct gendisk *disk,
			      void (*update_driver_data)(struct gendisk *disk))
{
	struct request_queue *q = disk->queue;
	struct blk_revalidate_zone_args args = {
		.disk		= disk,
	};
	unsigned int noio_flag;
	int ret;

	if (WARN_ON_ONCE(!blk_queue_is_zoned(q)))
		return -EIO;
	if (WARN_ON_ONCE(!queue_is_mq(q)))
		return -EIO;

	/*
	 * Ensure that all memory allocations in this context are done as if
	 * GFP_NOIO was specified.
	 */
	noio_flag = memalloc_noio_save();
	ret = disk->fops->report_zones(disk, 0, UINT_MAX,
				       blk_revalidate_zone_cb, &args);
	memalloc_noio_restore(noio_flag);

	/*
	 * Install the new bitmaps and update nr_zones only once the queue is
	 * stopped and all I/Os are completed (i.e. a scheduler is not
	 * referencing the bitmaps).
	 */
	blk_mq_freeze_queue(q);
	if (ret >= 0) {
		blk_queue_chunk_sectors(q, args.zone_sectors);
		q->nr_zones = args.nr_zones;
		swap(q->seq_zones_wlock, args.seq_zones_wlock);
		swap(q->conv_zones_bitmap, args.conv_zones_bitmap);
		if (update_driver_data)
			update_driver_data(disk);
		ret = 0;
	} else {
		pr_warn("%s: failed to revalidate zones\n", disk->disk_name);
		blk_queue_free_zone_bitmaps(q);
	}
	blk_mq_unfreeze_queue(q);

	kfree(args.seq_zones_wlock);
	kfree(args.conv_zones_bitmap);
	return ret;
}
EXPORT_SYMBOL_GPL(blk_revalidate_disk_zones);


/**
 * Copyright 2016 The AMP HTML Authors. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS-IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import {loadScript, validateData} from '../3p/3p';
import {parseUrlDeprecated} from '../src/url';

/* global
__kxamp: false,
__kx_ad_slots: false,
__kx_ad_start: false,
__kx_viewability: false,
*/

/**
 * @param {!Window} global
 * @param {!Object} data
 */
export function kixer(global, data) {
  /*eslint "google-camelcase/google-camelcase": 0*/

  validateData(data, ['adslot'], []);

  let inView = false;
  let viewed = false;
  let viewTimer = null;

  const d = global.document.createElement('div');
  d.id = '__kx_ad_' + data.adslot;
  global.document.getElementById('c').appendChild(d);

  const kxload = function () {
    d.removeEventListener('load', kxload, false);
    if (d.childNodes.length > 0) {
      global.context.renderStart();
    } else {
      global.context.noContentAvailable();
    }
  };
  d.addEventListener('load', kxload, false); // Listen for the kixer load event

  const kxviewCheck = function (intersectionEntry) {
    inView = intersectionEntry.intersectionRatio > 0.5; // Half of the unit is in the viewport
    if (inView) {
      if (!viewed && viewTimer == null) {
        // If the ad hasn't been viewed and the timer is not set
        viewTimer = setTimeout(kxviewFire, 900); // Set a Timeout to check the ad in 900ms and fire the view
      }
    } else {
      if (viewTimer) {
        // If the Timeout is set
        clearTimeout(viewTimer); // Clear the Timeout
        viewTimer = null;
      }
    }
  };

  const kxviewFire = function () {
    if (inView) {
      // if the ad is still in the viewport
      if (typeof __kx_viewability.process_locked === 'function') {
        viewed = true;
        __kx_viewability.process_locked(data.adslot); // Fire kixer view
      }
    }
  };

  global.context.observeIntersection(function (changes) {
    /** @type {!Array} */ (changes).forEach(function (c) {
      kxviewCheck(c);
    });
  });

  loadScript(global, 'https://cdn.kixer.com/ad/load.js', () => {
    global.__kx_domain = parseUrlDeprecated(global.context.sourceUrl).hostname; // Get domain
    __kxamp[data.adslot] = 1;
    __kx_ad_slots.push(data.adslot);
    __kx_ad_start();
  });
}