VE Lua Documentation

Press F to search!

init

Definition


-- @/lua/vehicle/sounds.lua:1045

local function init()
  if not v.data.nodes then
    return
  end
  obj:deleteSFXSources()
  local cameraNode = 0
  if v.data.camerasInternal ~= nil then
    local _, c = next(v.data.camerasInternal)
    if c ~= nil then
      cameraNode = c.camNodeID
    end
  end

  --replace constants
  local maxrpm = 1
  M.refNode = 0
  M.engineNode = 0
  if v.data.refNodes and v.data.refNodes[0] then
    M.refNode = v.data.refNodes[0].ref or v.data.refNodes[0].leftCorner
    M.engineNode = v.data.refNodes[0].ref or v.data.refNodes[0].leftCorner
  end

  if #powertrain.engineData > 0 then
    for _, v in pairs(powertrain.engineData) do
      maxrpm = max(maxrpm, v.maxSoundRPM or 1)
    end

    -- Try to get a node on the engine. There is currently a libbeamng bug that
    -- causes sound sources at the camera to cause problems for multichannel
    -- setups, as small variations in position can cause sound to dither back
    -- and forth between the channels when in cockpit view.
    if powertrain.engineData[1].torqueReactionNodes then
      local t = powertrain.engineData[1].torqueReactionNodes
      if #t > 0 and v.data.nodes[t[1]] ~= nil then
        M.engineNode = t[1]
      end
    end
  end

  if not v.data.vehicleDirectory then
    return
  end

  local loadedFolder = v.data.vehicleDirectory .. "sounds/"

  --load sbeam files
  local sounds = loadSoundFiles(loadedFolder)
  M.usesOldCustomSounds = not tableIsEmpty(sounds)

  --no sbeam files on current vehicle, load defaults
  if not sounds then
    loadedFolder = "vehicles/common/sounds/"
    sounds = loadSoundFiles(loadedFolder)
  end

  if sounds then
    --store in module
    soundBank = sounds
    if usingNewEngineSounds then
      soundBank.sounds = {}
    end

    -- build node name index
    local nodeNameIdx = {}
    for _, node in pairs(v.data.nodes) do
      if node.name then
        nodeNameIdx[node.name] = node.cid
      end
    end

    --check and postprocess them
    for skey, s in pairs(soundBank.sounds) do
      -- set default values
      if s.volumeModifiers == nil then
        s.volumeModifiers = {}
      end
      if s.pitchModifiers == nil then
        s.pitchModifiers = {}
      end
      if s.profile == nil then
        s.profile = "AudioDefaultLoop3D"
      end

      -- create the sfxprofiles dynamically when filename and profile are specified
      if not s.sfxProfile and s.filename and s.profile then
        -- figure out if the filename was specified relative to the current folder
        s.filename = checkLocalFile(loadedFolder, s.filename)

        -- create the SFXProfile on the T3D - at least the supposed SFXprofilename
        s.sfxProfile = getNextProfile()
        s.waitforloading = 1 -- wait one frame before trying to load the sfxprofile
        s.autocreatedSFXProfile = true
      end

      --try to find our node, default to camera
      s.node = nodeNameIdx[s.nodeName]
      if s.nodeName == "CAMERA" then
        s.node = cameraNode
      end
      if s.nodeName == "ENGINE" then
        s.node = M.engineNode
      end
      s.node = s.node or cameraNode -- fall back to camera node

      s.clip = createSoundObj(s.filename, s.profile, s.sfxProfile, s.node)
      --log('D', 'sounds.update', 'createSFXSource('..s.sfxProfile..','..s.node..') = '..tostring(s.clip))
      if not s.clip then
        log("W", "sounds.update", "unable to create sound, removing it: " .. s.sfxProfile)
        soundBank.sounds[skey] = nil
      end
    end

    for _, snd in pairs(soundBank.sounds) do
      for k2, v2 in pairs(snd) do
        if v2 == "MAXRPM" then
          snd[k2] = maxrpm
        end
      end
    end

    --initialize groups
    local soundGroup = v.data.engine and v.data.engine.soundGroup
    for _, vl in pairs(soundBank.sounds) do
      vl.active = (vl.group == "default" or vl.group == soundGroup)
    end

    beamResetTimer = 0

    --initialize per beam suspension sounds
    if v.data.beams then
      for _, bm in pairs(v.data.beams) do
        if bm.soundFile ~= nil then
          local soundTable = {}

          --loop
          local soundProfileType = "AudioDefaultLoop3D"

          --setup our table
          local soundFile = checkLocalFile(v.data.vehicleDirectory, bm.soundFile)
          soundTable.soundType = bm.soundType
          soundTable.sfxProfile = getNextProfile()
          soundTable.clip = createSoundObj(soundFile, soundProfileType, soundTable.sfxProfile, bm.id1)
          if soundTable.clip then
            soundTable.volumeFactor = bm.volumeFactor or 1
            soundTable.pitchFactor = bm.pitchFactor or 0
            soundTable.maxStress = bm.maxStress or 35000
            soundTable.colorFactor = bm.colorFactor or 0.5

            soundTable.beam = bm.cid

            local attackFactor = bm.attackFactor or 10
            local decayFactor = bm.decayFactor or 10

            soundTable.smoothing = newTemporalSmoothingNonLinear(decayFactor, attackFactor) --first value = decay smoothing, second value = attack smoothing. The smaller the number, the more the smoothing

            soundTable.resonance = 0
            soundTable.clip:setVolumePitch(0, 0)
            soundTable.noiseFactor = bm.noiseFactor or 0
            soundTable.noiseTrail = 0

            -- Audio debug - display the current suspension setup from jbeam
            -- print (string.format("Suspension : %s color=%.2f  attack=%.0f  volume=%.2f  decay=%.0f  pitch=%.2f  maxStress=%.0f", bm.soundFile, bm.colorFactor, bm.attackFactor, bm.volumeFactor, bm.decayFactor, bm.pitchFactor, bm.maxStress))
            -- print (string.format("Suspension : %s color=%s  attack=%s  volume=%s  decay=%s  pitch=%s  maxStress=%s", dumps(bm.soundFile), dumps(bm.colorFactor), dumps(bm.attackFactor), dumps(bm.volumeFactor), dumps(bm.decayFactor), dumps(bm.pitchFactor), dumps(bm.maxStress)))

            -- finally, insert it for graphing
            table.insert(beamSounds, soundTable)
          else
            log("E", "sounds.init", "unable to load sound: " .. tostring(soundFile))
          end
        end
      end
    else
      log("E", "sounds.init", "unable to load any sound bank (*.sbeam), that is quite bad :/")
    end
  end

  cabinFilterCoef = 1
  windSoundEventNode = getSoundscapeNode("horn") or M.refNode or 0
  if v.data.sounds then
    --impacts
    impactGenericEvent = v.data.sounds.impactGeneric == nil and impactGenericEvent or v.data.sounds.impactGeneric
    impactMetalEvent = v.data.sounds.impactMetal == nil and impactMetalEvent or v.data.sounds.impactMetal
    impactPlasticEvent = v.data.sounds.impactPlastic == nil and impactPlasticEvent or v.data.sounds.impactPlastic
    impactSoundVolumeCoef = v.data.sounds.impactSoundVolumeCoef == nil and impactSoundVolumeCoef or v.data.sounds.impactSoundVolumeCoef
    --break
    breakGenericEvent = v.data.sounds.breakGeneric == nil and breakGenericEvent or v.data.sounds.breakGeneric
    --aero
    windSoundEvent = v.data.sounds.wind == nil and windSoundEvent or v.data.sounds.wind
    windSoundEventNode = (v.data.sounds.windNode and beamstate.nodeNameMap[v.data.sounds.windNode]) or windSoundEventNode
    --scrapes
    scrapeMap[2] = v.data.sounds.scrapeMetal == nil and scrapeMap[2] or v.data.sounds.scrapeMetal
    scrapeMap[3] = v.data.sounds.scrapePlastic == nil and scrapeMap[3] or v.data.sounds.scrapePlastic

    cabinFilterCoef = v.data.sounds.cabinFilterCoef == nil and 1 or v.data.sounds.cabinFilterCoef
  end

  for matId, event in pairs(scrapeMap) do
    if type(event) == "string" then --this can be nil (if nothing exists for a given material) or a boolean/false (if disabled via jbeam)
      if scrapeSounds[event] == nil then
        scrapeSounds[event] = obj:createSFXSource(event, "AudioDefaultLoop3D", "Scrape", -2)
      end
      scrapeMap[matId] = scrapeSounds[event]
    end
  end

  if wheelsSounds == nil then
    wheelsSounds = {}

    for wi, wd in pairs(wheels.wheels) do
      addWheelSounds(wi, wd)
    end
  end

  local soundscapes = v.data.soundscape
  if soundscapes then
    for name, soundscape in pairs(soundscapes) do
      bdebug.setNodeDebugText("Soundscape", type(soundscape.node) == "number" and soundscape.node or M.refNode, name .. ": " .. soundscape.src)
    end
  end

  M.updateObjType()
end

Callers

@/lua/ge/extensions/core/cameraModes/autozoom.lua

function C:init(smoother)
  self.isFilter = true
  setmetatable(o, C)
  o:init()
  return o
@/lua/ge/extensions/flowgraph/nodes/types/bool.lua

function C:init()
  self.data.value = true
@/lua/vehicle/controller/tech/tyreBarrier.lua
-- Initialisation callback (called once when this controller is instantiated).
local function init(data)
  isPreamble = true
@/lua/ge/extensions/flowgraph/nodes/mission/knockAwayCheck.lua

function C:init()
  self.data.zOffset = 0
        self.markers = require('scenario/race_marker')
        self.markers.init()
        local wps = {}
@/lua/ge/extensions/flowgraph/nodes/audio/fadeOut.lua

function C:init()
  self.timer = 0
@/lua/vehicle/wheels.lua

local function init()
  initWheels()
@/lua/ge/extensions/flowgraph/nodes/ui/updatedUI/endScreenBegin.lua

function C:init()
  self.open = false
@/lua/ge/extensions/flowgraph/nodes/debug/testDynamic.lua

function C:init(mgr, ...)
  self.timer = 0
@/lua/ge/extensions/editor/api/guiInstancer.lua

function C:init()
  self.instances = {} -- the instances for this gui window
  C.__index = C
  o:init()
  return o
@/lua/ge/extensions/gameplay/missions/missionTypes/editorHelper.lua
  if o.init then
    o:init()
  end
@/lua/ge/extensions/core/cameraModes/topDown.lua

function C:init()
  self.disabledByDefault = true
  setmetatable(o, C)
  o:init()
  return o
@/gameplay/missionTypes/simpleLapconfigScenario/constructor.lua

function C:init()
  self.latestVersion = version
@/lua/ge/extensions/flowgraph/nodes/vehicle/toShowroom.lua

function C:init() end
@/lua/ge/extensions/gameplay/markers/crawlMarker.lua
local screenObjTemp = nil
function C:init()
  self.visible = true
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/scene/particleEmitter.lua

function C:init(mgr, ...)
  self.position = {}
@/lua/common/utils/pixellib.lua

function LuaPixelBuffer:init(width, height)
  self.width = math.floor(width)
  local bitmap = GBitmap()
  bitmap:init(width, height, true)
  local pb = create()
  pb:init(250, 250)
  print(tostring(pb))
@/lua/ge/extensions/flowgraph/nodes/logic/sequencer.lua

function C:init()
  self.count = 1
@/lua/vehicle/controller/braking/brakedDifferentialSteering.lua

local function init(jbeamData)
  steeringPlay = jbeamData.steeringPlay or 0
@/lua/vehicle/controller/vehicleController/shiftLogic/sequentialGearbox.lua

local function init(jbeamData, sharedFunctionTable)
  sharedFunctions = sharedFunctionTable
@/lua/vehicle/controller/drivingDynamics/sensors/sensorHub.lua

local function init(jbeamData)
  M.gravity = obj:getGravity()
@/lua/ge/extensions/editor/flowgraph/history.lua

function C:init()
    editor.registerWindow(self.windowName, im.ImVec2(150,300), nil, false)
@/lua/ge/extensions/flowgraph/nodes/gameplay/race/raceDisqualify.lua

function C:init()
@/ui/ui-vue/src/modules/vehicleConfig/stores/tuningStore.js

  async function init() {
    editedTuningVars = {}
@/lua/vehicle/controller/etkGauges.lua

local function init(jbeamData)
  log("E", "etkGauges", "This controller is deprecated and shall not be used. It might be removed without further notice in the future! Please switch to the 'genericGauges' controller instead.")
@/lua/ge/extensions/core/cameraModes/trackir.lua

function C:init()
  self.isGlobal = true
  end
  if not TrackIR or not TrackIR.init() then
    --log('D', 'core_camera.trackir', 'TrackIR could not init')
  setmetatable(o, C)
  o:init()
  return o
@/lua/ge/extensions/gameplay/race/startPosition.lua

function C:init(race, name)
  self.race = race
  C.__index = C
  o:init(...)
  return o
@/lua/vehicle/protocols.lua
  if type(protocol.module.init) == "function" then
    protocol.module.init()
  end
local filesCache
local function init()
  destroy()
local function settingsChanged()
  init()
end
@/lua/ge/extensions/gameplay/missions/missionTypes/baseMission.lua
-- This is called when a mission of this type is being created. Load files, initialize variables etc
function C:init()
  self.missionTypeLabel = "bigMap.missionLabels."..self.missionType
  C.__index = C
  o:init()
  for k, v in pairs(derivedClass) do
  end
  local init = o:init()
  return o, init
@/lua/ge/extensions/scenario/raceMarkers/attention.lua
-- called when this object is created. initialize variables here (but dont spawn objects)
function C:init(id)
  self.id = id
  C.__index = C
  o:init(...)
  return o
@/lua/vehicle/powertrain/turbocharger.lua

local function init(device, jbeamData)
  turbo = deepcopy(jbeamData)
@/lua/vehicle/controller/advancedCouplerControl.lua

local function init(jbeamData)
  --print(M.name)
@/lua/ge/extensions/flowgraph/nodes/gameplay/race/racePacenoteReached.lua

function C:init(mgr, ...)
  self.data.detailed = false
@/lua/ge/extensions/flowgraph/nodes/debug/displayFlow.lua
C.tags = {'util'}
function C:init()
  self.lastTime = 1
@/lua/ge/extensions/flowgraph/pin.lua

function C:init(graph, node, direction, type, name, default, description)
  self.graph = graph
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/util/routePosition.lua

function C:init()
  self:onNodeReset()
@/lua/vehicle/controller/gauges/customModules/navigationData.lua

local function init(jbeamData)
end
@/lua/ge/extensions/gameplay/rally/notebook/structured/visualCompositor.lua

function C:init(textCompositor)
  self.textCompositor = textCompositor
  C.__index = C
  o:init(...)
  return o
@/lua/vehicle/thrusters.lua

local function init()
  -- update public interface
@/lua/ge/extensions/gameplay/race/pathnode.lua

function C:init(path, name, forceId)
  self.path = path
  C.__index = C
  o:init(...)
  return o
@/lua/vehicle/controller/pneumatics/lowAirPressureWarning.lua

local function init(jbeamData)
  lowAirWarningElectric = jbeamData.lowAirWarningElectric or "lowAirPressure"
@/lua/ge/extensions/editor/util/plotHelperUtil.lua
-- params.catmullromCurveLines = x or nil (x > 200 preferably)
function C:init(params)
  params = params or {
  idCounter = idCounter + 1
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/gameplay/rally/setNoteSearch.lua

-- function C:init()
-- end
@/lua/ge/extensions/editor/flowgraph/basewindow.lua

function C:init(fgEditor)
  self.fgEditor = fgEditor
  C.__index = C
  o:init(...)
  return o
  if o.init ~= baseInit then
    o:init()
  end
@/lua/ge/extensions/flowgraph/nodes/gameplay/traffic/trafficCustomGroup.lua

function C:init()
  self.mode = 'settings'
@/lua/ge/extensions/core/cameraModes/relative.lua

function C:init()
  self.resetCameraOnVehicleReset = false
  self.rot = slot.rot
  self.manualzoom:init(slot.fov)
  return true
function C:setFOV(fov)
  self.manualzoom:init(fov)
end
  setmetatable(o, C)
  o:init()
  return o
@/lua/ge/extensions/flowgraph/nodes/vehicle/freeze.lua

function C:init()
@/lua/vehicle/controller/tech/recorders.lua

local function init()
  if not nodeCache then
@/lua/ge/extensions/flowgraph/nodes/ui/updatedUI/endScreenWhole.lua

function C:init()
  self.open = false
@/lua/ge/extensions/flowgraph/nodes/ui/setUILayout.lua

function C:init()
  self.useFreeroamMenuWhenUnrestricted = true
@/lua/ge/extensions/flowgraph/modules/missionReplayModule.lua

function C:init()
  self.replayRecording = false
@/lua/ge/extensions/gameplay/rally/snaproad.lua

function C:init(driveline)
  self._driveline = driveline
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/editor/rallyEditor/missionSettings.lua

function C:init(rallyEditor)
  self.rallyEditor = rallyEditor
  C.__index = C
  o:init(...)
  return o
@/gameplay/missionTypes/knockAway/editor.lua

function C:init()
@/lua/ge/extensions/core/cameraModes/path.lua

function C:init()
  self.isGlobal = true
  setmetatable(o, C)
  o:init()
  return o
@/lua/ge/extensions/editor/flowgraph/main.lua

function C:init()
@/lua/vehicle/controller/twoStepLaunch.lua

local function init(jbeamData)
  local engineName = jbeamData.engineName or "mainEngine"
@/ui/ui-vue/src/main.js
// initialise systemInfo service
SysInfo.init()
@/lua/ge/extensions/editor/flowgraph/variables.lua
local scale = 1
function C:init()
  self.target = nil
@/ui/lib/ext/angular-material-paging.js
    $scope.$watch('wmpTotal', function() {
      vm_paging.init();
    });
@/gameplay/missionTypes/flowgraph/constructor.lua

function C:init()
  self.latestVersion = version
@/lua/vehicle/controller/propAnimation/googlyEyes.lua

local function init(jbeamData)
  local eyeBeamTag = jbeamData.eyeBeamTag or "eyeBeam"
@/lua/ge/extensions/gameplay/traffic/vehicle.lua

function C:init(id, role)
  id = id or 0
  C.__index = C
  o:init(o.id)
  return o.model and o -- returns nil if invalid object
@/gameplay/missionTypes/collection/customNodes/collectionMarkersNode.lua

function C:init(mgr)
  self.mgr.markerData = nil
@/lua/ge/extensions/flowgraph/nodes/vehicle/ai/followWaypoints.lua

function C:init()
  self:onNodeReset()
@/lua/ge/extensions/editor/rallyEditor/notebookInfo.lua

function C:init(rallyEditor)
  self.rallyEditor = rallyEditor
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/career/customTowAction.lua

function C:init()
  self.flags = {}
@/lua/ge/extensions/flowgraph/nodes/thread/sendMessage.lua

function C:init()
  self.savePins = true
@/lua/ge/extensions/flowgraph/nodes/ui/rtMessage.lua

function C:init()
@/lua/ge/extensions/flowgraph/nodes/vehicle/gForce.lua

function C:init()
  self:onNodeReset()
@/lua/ge/extensions/core/cameraModes/crash.lua

function C:init()
  self.camMode = 1
  setmetatable(o, C)
  o:init()
  return o
@/lua/ge/extensions/flowgraph/nodes/vehicle/moveTo.lua

function C:init()
  --self.data.useWheelCenter = false
@/lua/vehicle/controller/tech/mesh.lua
-- Initialises this sensor instance.
local function init(data)
    sensorId = data.sensorId
@/inspector/External/three.js/three.js

        function init() {

        function init() {

        function init() {

                init();
            currentRenderState = renderStates.get( scene, camera );
            currentRenderState.init();
            currentRenderState = renderStates.get( scene, camera );
            currentRenderState.init();
            _localClippingEnabled = this.localClippingEnabled;
            _clippingEnabled = _clipping.init( this.clippingPlanes, _localClippingEnabled, camera );
            currentRenderList = renderLists.get( scene, camera );
            currentRenderList.init();
         */
        function init( x0, x1, t0, t1 ) {

                init( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );

                init( x1, x2, t1, t2 );
@/lua/ge/extensions/flowgraph/nodes/vehicle/ai/stop.lua

function C:init()
  self.complete = false
@/lua/vehicle/controller/gauges/customModules/dynamicRedlineData.lua

local function init(jbeamData)
  minOutput = jbeamData.minOutput or 0
@/lua/ge/extensions/flowgraph/nodes/gameplay/sites/parkingspotByName.lua

function C:init(mgr, ...)
@/lua/ge/extensions/flowgraph/nodes/scene/storeStatics.lua

function C:init(mgr, ...)
  self.objects = {}
@/lua/ge/extensions/gameplay/sites/parkingSpot.lua

function C:init(sites, name, forceId)
  self.sites = sites
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/debug/debugCylinder.lua

function C:init()
end
@/lua/ge/extensions/gameplay/race/pacenote.lua

function C:init(path, name, forceId)
  self.path = path
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/editor/crawlEditor/trails.lua

function C:init()
  self.currentTab = "paths"
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/mission/selectHeistMissionSpots.lua

function C:init()
  self.spots = {}
@/lua/ge/extensions/core/cameraModes/observer.lua

function C:init()
  self.isGlobal = true
  setmetatable(o, C)
  o:init()
  return o
@/lua/vehicle/controller/vehicleController/shiftLogic/electricMotor.lua

local function init(jbeamData, sharedFunctionTable)
  sharedFunctions = sharedFunctionTable
@/lua/ge/extensions/editor/util/vehicleFilterUtil.lua

function C:init(element)
  self.element = element
  C.__index = C
  o:init(element)
  return o
@/lua/ge/extensions/gameplay/traffic/baseRole.lua

function C:init(veh, name, data)
  data = data or {}
  C.__index = C
  o:init(o.veh, o.name)

  o:init()
  o:postInit()
@/lua/ge/extensions/gameplay/race/segment.lua

function C:init(path, name, forceId)
  self.path = path
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/activity/aggregateAttempt.lua

function C:init()
@/lua/ge/extensions/flowgraph/modules/prefabModule.lua

function C:init()
  self.prefabs = {}
@/lua/ge/extensions/editor/api/gui.lua
  if atlas then
    atlas:init(editor.atlasWidth, editor.atlasHeight, true)
    atlas:loadFile(atlasPath)
@/lua/vehicle/controller/sound/linearMovement.lua

local function init(jbeamData)
  --used when the sound has a segment sound in addition to the base noise
@/lua/ge/extensions/flowgraph/nodes/vehicle/vehicleData.lua

function C:init(mgr, ...)
@/lua/ge/extensions/flowgraph/nodes/ui/imgui/elemental/imBegin.lua

function C:init()
  self.done = false
@/lua/ge/extensions/flowgraph/nodes/gameplay/race/raceNodeReached.lua
}
function C:init(mgr, ...)
  self.data.detailed = false
@/lua/vehicle/controller/hydraulics/orbitrolSteering.lua

local function init(jbeamData)
  steeringPID = newPIDParallel(jbeamData.steeringPIDKp or 0.5, jbeamData.steeringPIDKi or 0.3, jbeamData.steeringPIDKd or 0.01, -1, 1, 1000, 1000, -1, 1, 0.002)
@/lua/vehicle/controller/pneumatics.lua

local function init(jbeamData)
  local pressureLevels = {minPressure = 0, maxPressure = 0}
@/lua/ge/extensions/flowgraph/nodes/scene/spawnTSStatic.lua

function C:init(mgr, ...)
  self.objects = {}
@/lua/ge/extensions/flowgraph/nodes/util/time.lua

function C:init(mgr, ...)
end
@/lua/ge/extensions/flowgraph/nodes/util/customLua.lua

function C:init()
  self.clearOutPinsOnStart = false
@/lua/ge/extensions/editor/util/transformUtil.lua
-- initializes stuff for the helper.
function C:init(editName, objectName)
  self.id = getNextUniqueIdentifier()
  C.__index = C
  o:init(...)
  return o
@/lua/vehicle/bdebug.lua
    bdebugImpl = require('bdebugImpl')
    bdebugImpl.init(bdebugImplSavedState, _state)

local function init()
end
@/lua/ge/extensions/flowgraph/nodes/gameplay/traffic/signals/controllerByName.lua

function C:init()
  self:onNodeReset()
@/gameplay/missionTypes/cannon/customNodes/cannonBallTouchdownNode.lua

function C:init()
@/lua/vehicle/controller/controlModes.lua

local function init(jbeamData)
  controlModes = tableFromHeaderTable(jbeamData.modes)
@/lua/ge/extensions/editor/missionEditor/progressSingle.lua

function C:init(missionEditor)
  self.missionEditor = missionEditor
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/gameplay/markers/driftLineMarker.lua

function C:init()
  self.id = idCounter
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/math/quaternion/direction.lua

function C:init()
  self.oldIn = nil
@/lua/ge/extensions/flowgraph/nodes/mission/selectGarage2GarageZones.lua

function C:init()
  self.startSpot = nil
@/lua/ge/extensions/flowgraph/nodes/logic/compare.lua

function C:init()
  local mySortFunct = function (a,b)
@/lua/ge/extensions/editor/missionEditor/general.lua
local noTranslation = "No Translation found!"
function C:init(missionEditor)
  self.missionEditor = missionEditor
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/gameplay/race/imRaceTimes.lua

function C:init(mgr, ...)
  self.data.detailed = false
@/gameplay/missionTypes/rallyLoop/constructor.lua

function C:init()
  self.latestVersion = version
@/lua/ge/extensions/flowgraph/nodes/string/subString.lua

function C:init()
  self.data.from = 0
@/lua/ge/extensions/editor/sitesEditor/parkingSpots.lua

function C:init(sitesEditor, key)
  self.sitesEditor = sitesEditor
  C.__index = C
  o:init(...)
  return o
@/lua/vehicle/main.lua
  profilerPushEvent("3.1 init - compat")
  backwardsCompatibility.init()
  profilerPopEvent("3.1 init - compat")
  profilerPushEvent("3.2.X init - materials (sum)")
  material.init()
  profilerPopEvent("3.2.X init - materials (sum)")
  profilerPushEvent("3.2 init - first stage")
  bdebug.init()
  electrics.init()
  bdebug.init()
  electrics.init()
  damageTracker.init()
  electrics.init()
  damageTracker.init()
  beamstate.init() -- needs to go before powertrain and first controller init, needs to go after damageTracker
  damageTracker.init()
  beamstate.init() -- needs to go before powertrain and first controller init, needs to go after damageTracker
  protocols.init()
  beamstate.init() -- needs to go before powertrain and first controller init, needs to go after damageTracker
  protocols.init()
  wheels.init()
  protocols.init()
  wheels.init()
  powertrain.init()
  wheels.init()
  powertrain.init()
  energyStorage.init()
  powertrain.init()
  energyStorage.init()
  input.init()
  energyStorage.init()
  input.init()
  controller.init() -- needs to go after input first stage
  input.init()
  controller.init() -- needs to go after input first stage
  profilerPopEvent("3.2 init - first stage")
  controller.initSecondStage()
  drivetrain.init()
  profilerPopEvent("3.3 init - second stage")
  sensors.reset()
  thrusters.init()
  hydros.init()
  thrusters.init()
  hydros.init()
  profilerPopEvent("3.4 init - groupA")
  profilerPushEvent("3.5 init - audio")
  sounds.init()
  profilerPopEvent("3.5 init - audio")
  profilerPushEvent("3.6 init - groupB")
  props.init()
  input.initSecondStage() -- needs to go after sounds & electrics
  input.initSecondStage() -- needs to go after sounds & electrics
  recovery.init()
  sensors.init()
  recovery.init()
  sensors.init()
  fire.init()
  sensors.init()
  fire.init()
  wheels.initSounds()
  profilerPushEvent("3.8 init - last stage")
  mapmgr.init()

function init(path, initData)
  profilerPushEvent("4.X.X.X total (sum)")
@/lua/ge/extensions/flowgraph/nodes/tech/setupUltrasonicSensor.lua

function C:init()
@/lua/vehicle/controller/powertrainControl/antiLag.lua

local function init(jbeamData)
  local engineName = jbeamData.controlledEngine or "mainEngine"
@/lua/ge/extensions/flowgraph/nodes/util/loadLevel.lua

function C:init()
  self.state = 1
@/lua/ge/extensions/gameplay/rally/loop/stagedCountdownTest.lua

function C:init()
  self.epoch = 0
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/core/cameraModes/noise.lua

function C:init(factor)
  self.hidden = true
  setmetatable(o, C)
  o:init()
  return o
@/lua/vehicle/controller/vehicleController/shiftLogic/cvtGearbox2.lua

local function init(jbeamData, sharedFunctionTable)
  sharedFunctions = sharedFunctionTable
@/lua/vehicle/controller/propAnimation/hPattern.lua

local function init(jbeamData)
  local gearCoordinateTable = tableFromHeaderTable(jbeamData.gearCoordinates or {})
@/lua/ge/extensions/flowgraph/nodes/activity/missionAttemptStars.lua

function C:init()
  self.savePins = true
@/lua/ge/extensions/flowgraph/nodes/career/garageTutorialUtil.lua

function C:init()
  self.timer = 0
@/lua/vehicle/extensions/api.lua
        log('E', "default.init", "INIT WEBSERVER TO PORT "..port)
        httpJsonServer.init(bindHost, port, handleServerRequest)
        inited = true
@/lua/ge/extensions/flowgraph/variableStorage.lua

function C:init(mgr)
  self.mgr = mgr
  end
  self.variables[name].mergeFuns.init(self.variables[name])
  return true
    self.variables[name].mergeFuns.finalize(self.variables[name])
    self.variables[name].mergeFuns.init(self.variables[name])
  end
  C.__index = C
  o:init(...)
  return o
@/lua/ge/main.lua
-- Also called on reload (Control-L)
function init(reason)
  settings.initSettings(reason)
  -- Init the physics plugin.
  PhysicsPlugin.init("")
@/lua/ge/extensions/flowgraph/nodes/gameplay/race/moveVehicleToStartposition.lua

function C:init(mgr, ...)
  self.path = nil
@/lua/ge/extensions/flowgraph/nodes/gameplay/traffic/signals/fileTrafficSignals.lua

function C:init()
  self.signalsData = nil
@/lua/ge/extensions/flowgraph/nodes/util/closestPath.lua

function C:init()
  self.waypoint = im.BoolPtr(false)
@/gameplay/missionTypes/cannon/customNodes/cannonBallInfoNode.lua

function C:init()
@/lua/vehicle/controller/drivingDynamics/actuators/electronicDiffLock.lua

local function init(jbeamData)
  M.isActing = false
@/lua/vehicle/beamstate.lua

local function init()
  M.damage = 0
local function reset()
  init()
  M.lowpressure = false
@/lua/ge/extensions/flowgraph/nodes/vehicle/getElectricsValue.lua

function C:init()
  self:onNodeReset()
@/lua/ge/extensions/flowgraph/nodes/util/firstElement.lua

function C:init(mgr)
end
@/lua/vehicle/controller/vehicleController/vehicleController.lua
  if controlLogicModule then
    controlLogicModule.init(jbeamData, sharedFunctions)
    controlLogicModule.gearboxHandling = gearboxHandling

local function init(jbeamData)
  M.throttle = 0

  controlLogicModule.init(jbeamData, sharedFunctions)
  controlLogicModule.gearboxHandling = gearboxHandling
  --drivingStrategy.core = require(drivingStrategyCoreModulePath)
  --drivingStrategy.core.init(M)
  --  drivingStrategy[v] = require(drivingStrategyModuleDirectory .. v)
  --  drivingStrategy[v].init(M)
  --end
@/lua/ge/extensions/editor/crawlEditor/startingPositions.lua

function C:init()
  self.startingPosition = nil
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/logic/frameDelay.lua

function C:init(mgr, ...)
  self.counter = 0
@/lua/ge/extensions/gameplay/drag/display.lua

local function init()
  if dragData then
  end
  init()
  clearAll()
@/lua/ge/extensions/core/hotlapping.lua
    markers = require('scenario/race_marker')
    markers.init()
    local wps = {}
@/lua/ge/extensions/flowgraph/nodes/activity/getProgress.lua
C.allowCustomOutPins = true
function C:init()
  self.savePins = true
@/lua/ge/extensions/flowgraph/nodes/vehicle/ai/scriptAI/playRecording.lua

function C:init()
  self.recording = nil
@/lua/vehicle/controller/pneumatics/crossFlowValve.lua

local function init(jbeamData)
  local sourceTankName = jbeamData.sourceTankName or "mainAirTank"
@/lua/ge/extensions/flowgraph/nodes/gameplay/crash/onCrashDetected.lua

function C:init()
  self:reset()
@/lua/ge/extensions/scenario/raceMarkers/sideMarker.lua
-- called when this object is created. initialize variables here (but dont spawn objects)
function C:init(id)
  self.id = id
  C.__index = C
  o:init(...)
  return o
@/gameplay/missionTypes/drift/customNodes/extractWaypointsNode.lua

function C:init()
  self.extractedWaypoints = {}
@/lua/ge/extensions/flowgraph/nodes/timetrials/onRaceComplete.lua

function C:init(mgr, ...)
  self.complete = false
@/lua/ge/extensions/editor/missionEditor/careerSetup.lua

function C:init(missionEditor)
  self.missionEditor = missionEditor
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/editor/flowgraph/legend.lua

function C:init()
  editor.registerWindow(self.windowName, im.ImVec2(150,300), nil, false)
@/lua/ge/extensions/gameplay/rally/transcripts/entry.lua

function C:init(path, name, forceId)
  self.path = path
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/util/popActionMap.lua

function C:init(mgr, ...)
  self:_executionStopped()
@/lua/vehicle/controller/pyrotechnicCharge.lua

local function init(jbeamData)
  hasTriggered = false
@/lua/ge/extensions/flowgraph/nodes/ui/onBigmapStateChange.lua

function C:init()
  self.flags = {}
@/lua/ge/extensions/core/cameraModes/shake.lua

function C:init()
  self.isFilter = true
  setmetatable(o, C)
  o:init()
  return o
@/lua/ge/extensions/flowgraph/nodes/activity/requestAbandon.lua

function C:init(mgr, ...)
  self.reset = false
@/lua/vehicle/controller/propAnimation/singleAxisLever.lua

local function init(jbeamData)
  local gearCoordinateTable = tableFromHeaderTable(jbeamData.gearCoordinates or {})
@/lua/ge/extensions/flowgraph/nodes/gameplay/race/pathDefaultStartTransform.lua

function C:init(mgr, ...)
  self.path = nil
@/lua/ge/extensions/flowgraph/nodes/scene/pointOnDecalroad.lua
C.tags = {}
function C:init()
  self.point = vec3(0,0,0)
@/lua/ge/extensions/flowgraph/nodes/util/template.lua
-- This gets called when the node has been created for the first time. Init field here
function C:init(mgr)
  print("This node was initalized!")
@/lua/ge/extensions/flowgraph/nodes/vehicle/setGearbox.lua

function C:init()
@/gameplay/missionTypes/dragStripRace/constructor.lua

function C:init()
  self.latestVersion = version
@/lua/ge/extensions/ui/ambientSound.lua
]]
local function init(json)
  if not FS:fileExists(json) then
@/gameplay/missionTypes/chase/customNodes/suspectAiNode.lua

function C:init()
  self:onNodeReset()
@/lua/ge/extensions/flowgraph/nodes/environment/setGravity.lua

function C:init(mgr)
  self.data.restoreGravity = true
@/lua/ge/extensions/flowgraph/nodes/vehicle/getPowertrainData.lua

function C:init()
  self:onNodeReset()
@/lua/ge/extensions/flowgraph/nodes/vehicle/onVehicleDestroyed.lua

function C:init(mgr, ...)
@/lua/vehicle/controller/tech/GPS.lua
-- Initialises this GPS sensor instance.
local function init(data)
    sensorId = data.sensorId
@/lua/ge/extensions/flowgraph/nodes/states/transition.lua

function C:init()
  self.savePins = true
@/ui/ui-vue/src/modules/liveryEditor/stores/layerSettingsStore.js

  function init() {
    if (!active.value) rootStore.toggleShowDecalSelector()
@/lua/ge/extensions/flowgraph/nodes/vehicle/touching.lua

function C:init(mgr, ...)
@/lua/ge/extensions/flowgraph/nodes/career/onGarageEvent.lua

function C:init()
  self.flags = {}
@/lua/ge/extensions/flowgraph/nodes/math/ease.lua

function C:init()
  self.easeFuncName = 'linear'
@/lua/ge/extensions/flowgraph/nodes/vehicle/customPartsConfigProvider.lua

function C:init()
  self.models = {}
@/lua/ge/extensions/scenario/raceMarkers/crawlMarker.lua

function C:init(id)
  self.id = id
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/ui/updatedUI/endScreenResults.lua

function C:init()
end
@/lua/ge/extensions/core/cameraModes/chase.lua

function C:init()
  self.disabledByDefault = true
  self.collision = collision()
  self.collision:init()
  setmetatable(o, C)
  o:init()
  return o
@/lua/ge/extensions/flowgraph/nodes/gameplay/traffic/trafficMoveGroup.lua

function C:init()
  self:onNodeReset()
@/lua/ge/extensions/core/cameraModes/external.lua

function C:init()
  self.disabledByDefault = true
  self.noise = noise()
  self.noise:init(0.14)
  self.smooth = smooth()
  self.smooth = smooth()
  self.smooth:init(20, 2.0)
  self.handheld = handheld()
    if self.isFanMode then
      self.autozoom:init(newTemporalSmoothing(15, 15))
      self.autozoom.steps = { {  0, z*70}, {1.5, z*60}, {  3, z*40}, {  6, z*30}, { 10, z*25}, { 40, z*15}, { 90, z*15}, {150, z*15} }
    else
      self.autozoom:init(newTemporalSpring(15, 10))
      self.autozoom.steps = { {  0, z*70}, {1.5, z*60}, {  3, z*60}, {  8, z*60}, { 20, z*40}, { 50, z*30}, {125, z* 20}, {200, z* 15} }
    if carStopped then
      self.handheld:init(20, 5, 2)
      self.noise:init(0.02)
      self.handheld:init(20, 5, 2)
      self.noise:init(0.02)
    else
    else
      self.handheld:init(40, 9, dzRandom(0.25, 0.7))
      self.noise:init(0.04)
      self.handheld:init(40, 9, dzRandom(0.25, 0.7))
      self.noise:init(0.04)
    end
  else
    self.handheld:init(80, 15, 0.05)
    self.predictor.future = dzRandom(0.05,0.35)
  end
  self.smooth:init(nil, nil, self.camPos)
  self:applyOffset(nx, ny, nz, findRandomAttachedNodePosition(veh), openxrSessionRunning) -- distance to current vehicle center
  setmetatable(o, C)
  o:init()
  return o
@/lua/ge/extensions/editor/api/valueInspector.lua

function C:init()
  self.inputTextShortStringMaxSize = inputTextShortStringMaxSize
  C.__index = C
  o:init()
  return o
@/lua/ge/extensions/flowgraph/nodes/math/smoothers/nonLinear.lua

function C:init()
  C.oldSet = 0
@/lua/ge/extensions/editor/assetBrowser.lua
    local bitmap = GBitmap()
    bitmap:init(var.meshPreviewCacheThumbnailSize,var.meshPreviewCacheThumbnailSize)
    shapePrev:copyToBmp(bitmap:getPtr())
    local bitmap = GBitmap()
    bitmap:init(var.meshPreviewCacheThumbnailSize,var.meshPreviewCacheThumbnailSize)
    shapePrev:copyToBmp(bitmap:getPtr())
@/gameplay/missionTypes/rallyLoop/editor.lua

function C:init()
  self:addDecoHeader("Mission Screen Text",'orange')
@/lua/ge/extensions/flowgraph/nodes/gameplay/crawl/applyPenalty.lua

function C:init(mgr)
  self.bridge = require('ge/extensions/gameplay/crawl/flowgraphBridge')
@/ui/lib/ext/angular-material/angular-material.min.js
A100:"#82b1ff",A200:"#448aff",A400:"#2979ff",A700:"#2962ff",contrastDefaultColor:"light",contrastDarkColors:"100 200 300 400 A100",contrastStrongLightColors:"500 600 700 A200 A400 A700"},"light-blue":{50:"#e1f5fe",100:"#b3e5fc",200:"#81d4fa",300:"#4fc3f7",400:"#29b6f6",500:"#03a9f4",600:"#039be5",700:"#0288d1",800:"#0277bd",900:"#01579b",A100:"#80d8ff",A200:"#40c4ff",A400:"#00b0ff",A700:"#0091ea",contrastDefaultColor:"dark",contrastLightColors:"500 600 700 800 900 A700",contrastStrongLightColors:"500 600 700 800 A700"},cyan:{50:"#e0f7fa",100:"#b2ebf2",200:"#80deea",300:"#4dd0e1",400:"#26c6da",500:"#00bcd4",600:"#00acc1",700:"#0097a7",800:"#00838f",900:"#006064",A100:"#84ffff",A200:"#18ffff",A400:"#00e5ff",A700:"#00b8d4",contrastDefaultColor:"dark",contrastLightColors:"500 600 700 800 900",contrastStrongLightColors:"500 600 700 800"},teal:{50:"#e0f2f1",100:"#b2dfdb",200:"#80cbc4",300:"#4db6ac",400:"#26a69a",500:"#009688",600:"#00897b",700:"#00796b",800:"#00695c",900:"#004d40",A100:"#a7ffeb",A200:"#64ffda",A400:"#1de9b6",A700:"#00bfa5",contrastDefaultColor:"dark",contrastLightColors:"500 600 700 800 900",contrastStrongLightColors:"500 600 700"},green:{50:"#e8f5e9",100:"#c8e6c9",200:"#a5d6a7",300:"#81c784",400:"#66bb6a",500:"#4caf50",600:"#43a047",700:"#388e3c",800:"#2e7d32",900:"#1b5e20",A100:"#b9f6ca",A200:"#69f0ae",A400:"#00e676",A700:"#00c853",contrastDefaultColor:"dark",contrastLightColors:"500 600 700 800 900",contrastStrongLightColors:"500 600 700"},"light-green":{50:"#f1f8e9",100:"#dcedc8",200:"#c5e1a5",300:"#aed581",400:"#9ccc65",500:"#8bc34a",600:"#7cb342",700:"#689f38",800:"#558b2f",900:"#33691e",A100:"#ccff90",A200:"#b2ff59",A400:"#76ff03",A700:"#64dd17",contrastDefaultColor:"dark",contrastLightColors:"800 900",contrastStrongLightColors:"800 900"},lime:{50:"#f9fbe7",100:"#f0f4c3",200:"#e6ee9c",300:"#dce775",400:"#d4e157",500:"#cddc39",600:"#c0ca33",700:"#afb42b",800:"#9e9d24",900:"#827717",A100:"#f4ff81",A200:"#eeff41",A400:"#c6ff00",A700:"#aeea00",contrastDefaultColor:"dark",contrastLightColors:"900",contrastStrongLightColors:"900"},yellow:{50:"#fffde7",100:"#fff9c4",200:"#fff59d",300:"#fff176",400:"#ffee58",500:"#ffeb3b",600:"#fdd835",700:"#fbc02d",800:"#f9a825",900:"#f57f17",A100:"#ffff8d",A200:"#ffff00",A400:"#ffea00",A700:"#ffd600",contrastDefaultColor:"dark"},amber:{50:"#fff8e1",100:"#ffecb3",200:"#ffe082",300:"#ffd54f",400:"#ffca28",500:"#ffc107",600:"#ffb300",700:"#ffa000",800:"#ff8f00",900:"#ff6f00",A100:"#ffe57f",A200:"#ffd740",A400:"#ffc400",A700:"#ffab00",contrastDefaultColor:"dark"},orange:{50:"#fff3e0",100:"#ffe0b2",200:"#ffcc80",300:"#ffb74d",400:"#ffa726",500:"#ff9800",600:"#fb8c00",700:"#f57c00",800:"#ef6c00",900:"#e65100",A100:"#ffd180",A200:"#ffab40",A400:"#ff9100",A700:"#ff6d00",contrastDefaultColor:"dark",contrastLightColors:"800 900",contrastStrongLightColors:"800 900"},"deep-orange":{50:"#fbe9e7",100:"#ffccbc",200:"#ffab91",300:"#ff8a65",400:"#ff7043",500:"#ff5722",600:"#f4511e",700:"#e64a19",800:"#d84315",900:"#bf360c",A100:"#ff9e80",A200:"#ff6e40",A400:"#ff3d00",A700:"#dd2c00",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 300 400 A100 A200",contrastStrongLightColors:"500 600 700 800 900 A400 A700"},brown:{50:"#efebe9",100:"#d7ccc8",200:"#bcaaa4",300:"#a1887f",400:"#8d6e63",500:"#795548",600:"#6d4c41",700:"#5d4037",800:"#4e342e",900:"#3e2723",A100:"#d7ccc8",A200:"#bcaaa4",A400:"#8d6e63",A700:"#5d4037",contrastDefaultColor:"light",contrastDarkColors:"50 100 200",contrastStrongLightColors:"300 400"},grey:{50:"#fafafa",100:"#f5f5f5",200:"#eeeeee",300:"#e0e0e0",400:"#bdbdbd",500:"#9e9e9e",600:"#757575",700:"#616161",800:"#424242",900:"#212121",1000:"#000000",A100:"#ffffff",A200:"#eeeeee",A400:"#bdbdbd",A700:"#616161",contrastDefaultColor:"dark",contrastLightColors:"600 700 800 900"},"blue-grey":{50:"#eceff1",100:"#cfd8dc",200:"#b0bec5",300:"#90a4ae",400:"#78909c",500:"#607d8b",600:"#546e7a",700:"#455a64",800:"#37474f",900:"#263238",A100:"#cfd8dc",A200:"#b0bec5",A400:"#78909c",A700:"#455a64",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 300",contrastStrongLightColors:"400 500"}})}(),function(){function e(e){function o(e,t){return t=t||{},m[e]=a(e,t),g}function r(e,n){return a(e,t.extend({},m[e]||{},n))}function a(e,t){var n=C.filter(function(e){return!t[e]});if(n.length)throw new Error("Missing colors %1 in palette %2!".replace("%1",n.join(", ")).replace("%2",e));return t}function d(e,n){if(s[e])return s[e];n=n||"default";var o="string"==typeof n?s[n]:n,r=new c(e);return o&&t.forEach(o.colors,function(e,n){r.colors[n]={name:e.name,hues:t.extend({},e.hues)}}),s[e]=r,r}function c(e){function n(e){if(e=0===arguments.length?!0:!!e,e!==o.isDark){o.isDark=e,o.foregroundPalette=o.isDark?f:p,o.foregroundShadow=o.isDark?h:b;var n=o.isDark?T:A,r=o.isDark?A:T;return t.forEach(n,function(e,t){var n=o.colors[t],i=r[t];if(n)for(var a in n.hues)n.hues[a]===i[a]&&(n.hues[a]=e[a])}),o}}var o=this;o.name=e,o.colors={},o.dark=n,n(!1),M.forEach(function(e){var n=(o.isDark?T:A)[e];o[e+"Palette"]=function(r,i){var a=o.colors[e]={name:r,hues:t.extend({},n,i)};return Object.keys(a.hues).forEach(function(e){if(!n[e])throw new Error("Invalid hue name '%1' in theme %2's %3 color %4. Available hue names: %4".replace("%1",e).replace("%2",o.name).replace("%3",r).replace("%4",Object.keys(n).join(", ")))}),Object.keys(a.hues).map(function(e){return a.hues[e]}).forEach(function(t){if(-1==C.indexOf(t))throw new Error("Invalid hue value '%1' in theme %2's %3 color %4. Available hue values: %5".replace("%1",t).replace("%2",o.name).replace("%3",e).replace("%4",r).replace("%5",C.join(", ")))}),o},o[e+"Color"]=function(){var t=Array.prototype.slice.call(arguments);return console.warn("$mdThemingProviderTheme."+e+"Color() has been deprecated. Use $mdThemingProviderTheme."+e+"Palette() instead."),o[e+"Palette"].apply(o,t)}})}function u(e,o){function r(e){return e===n||""===e?!0:i.THEMES[e]!==n}function i(t,o){o===n&&(o=t,t=n),t===n&&(t=e),i.inherit(o,o)}return i.inherit=function(n,i){function a(e){r(e)||o.warn("Attempted to use unregistered theme '"+e+"'. Register it with $mdThemingProvider.theme().");var t=n.data("$mdThemeName");t&&n.removeClass("md-"+t+"-theme"),n.addClass("md-"+e+"-theme"),n.data("$mdThemeName",e),d&&n.data("$mdThemeController",d)}var d=i.controller("mdTheme"),c=n.attr("md-theme-watch");if((v||t.isDefined(c))&&"false"!=c){var l=e.$watch(function(){return d&&d.$mdTheme||E},a);n.on("$destroy",l)}else{var m=d&&d.$mdTheme||E;a(m)}},i.THEMES=t.extend({},s),i.defaultTheme=function(){return E},i.registered=r,i}m={},s={};var g,E="default",v=!1;return t.extend(m,e),u.$inject=["$rootScope","$log"],g={definePalette:o,extendPalette:r,theme:d,setDefaultTheme:function(e){E=e},alwaysWatchTheme:function(e){v=e},$get:u,_LIGHT_DEFAULT_HUES:A,_DARK_DEFAULT_HUES:T,_PALETTES:m,_THEMES:s,_parseRules:i,_rgba:l}}function o(e,t,n){return{priority:100,link:{pre:function(o,r,i){var a={$setTheme:function(t){e.registered(t)||n.warn("attempted to use unregistered theme '"+t+"'"),a.$mdTheme=t}};r.data("$mdThemeController",a),a.$setTheme(t(i.mdTheme)(o)),i.$observe("mdTheme",a.$setTheme)}}}}function r(e){return e}function i(e,n,o){d(e,n),o=o.replace(/THEME_NAME/g,e.name);var r=[],i=e.colors[n],a=new RegExp(".md-"+e.name+"-theme","g"),c=new RegExp("('|\")?{{\\s*("+n+")-(color|contrast)-?(\\d\\.?\\d*)?\\s*}}(\"|')?","g"),s=/'?"?\{\{\s*([a-zA-Z]+)-(A?\d+|hue\-[0-3]|shadow)-?(\d\.?\d*)?\s*\}\}'?"?/g,u=m[i.name];return o=o.replace(s,function(t,n,o,r){return"foreground"===n?"shadow"==o?e.foregroundShadow:e.foregroundPalette[o]||e.foregroundPalette[1]:(0===o.indexOf("hue")&&(o=e.colors[n].hues[o]),l((m[e.colors[n].name][o]||"").value,r))}),t.forEach(i.hues,function(t,n){var i=o.replace(c,function(e,n,o,r,i){return l(u[t]["color"===r?"value":"contrast"],i)});"default"!==n&&(i=i.replace(a,".md-"+e.name+"-theme.md-"+n)),"default"==e.name&&(i=i.replace(/\.md-default-theme/g,"")),r.push(i)}),r}function a(e){function n(e){var n=e.contrastDefaultColor,o=e.contrastLightColors||[],r=e.contrastStrongLightColors||[],i=e.contrastDarkColors||[];"string"==typeof o&&(o=o.split(" ")),"string"==typeof r&&(r=r.split(" ")),"string"==typeof i&&(i=i.split(" ")),delete e.contrastDefaultColor,delete e.contrastLightColors,delete e.contrastStrongLightColors,delete e.contrastDarkColors,t.forEach(e,function(a,d){function l(){return"light"===n?i.indexOf(d)>-1?g:r.indexOf(d)>-1?v:E:o.indexOf(d)>-1?r.indexOf(d)>-1?v:E:g}if(!t.isObject(a)){var m=c(a);if(!m)throw new Error("Color %1, in palette %2's hue %3, is invalid. Hex or rgb(a) color expected.".replace("%1",a).replace("%2",e.name).replace("%3",d));e[d]={value:m,contrast:l()}}})}var o=document.getElementsByTagName("head")[0],r=o?o.firstElementChild:null,a=e.has("$MD_THEME_CSS")?e.get("$MD_THEME_CSS"):"";if(r&&0!==a.length){t.forEach(m,n);var d={},l=a.split(/\}(?!(\}|'|"|;))/).filter(function(e){return e&&e.length}).map(function(e){return e.trim()+"}"}),p=new RegExp("md-("+M.join("|")+")","g");M.forEach(function(e){d[e]=""}),l.forEach(function(e){for(var t,n=(e.match(p),0);t=M[n];n++)if(e.indexOf(".md-"+t)>-1)return d[t]+=e;for(n=0;t=M[n];n++)if(e.indexOf(t)>-1)return d[t]+=e;return d[$]+=e}),t.forEach(s,function(e){u[e.name]||(M.forEach(function(t){for(var n=i(e,t,d[t]);n.length;){var a=document.createElement("style");a.setAttribute("type","text/css"),a.appendChild(document.createTextNode(n.shift())),o.insertBefore(a,r)}}),e.colors.primary.name==e.colors.accent.name&&console.warn("$mdThemingProvider: Using the same palette for primary and accent. This violates the material design spec."),u[e.name]=!0)})}}function d(e,t){if(!m[(e.colors[t]||{}).name])throw new Error("You supplied an invalid color palette for theme %1's %2 palette. Available palettes: %3".replace("%1",e.name).replace("%2",t).replace("%3",Object.keys(m).join(", ")))}function c(e){if(t.isArray(e)&&3==e.length)return e;if(/^rgb/.test(e))return e.replace(/(^\s*rgba?\(|\)\s*$)/g,"").split(",").map(function(e,t){return 3==t?parseFloat(e,10):parseInt(e,10)});if("#"==e.charAt(0)&&(e=e.substring(1)),/^([a-fA-F0-9]{3}){1,2}$/g.test(e)){var n=e.length/3,o=e.substr(0,n),r=e.substr(n,n),i=e.substr(2*n);return 1===n&&(o+=o,r+=r,i+=i),[parseInt(o,16),parseInt(r,16),parseInt(i,16)]}}function l(e,n){return e?(4==e.length&&(e=t.copy(e),n?e.pop():n=e.pop()),n&&("number"==typeof n||"string"==typeof n&&n.length)?"rgba("+e.join(",")+","+n+")":"rgb("+e.join(",")+")"):"rgb('0,0,0')"}t.module("material.core.theming",["material.core.theming.palette"]).directive("mdTheme",o).directive("mdThemable",r).provider("$mdTheming",e).run(a);var m,s,u={},p={name:"dark",1:"rgba(0,0,0,0.87)",2:"rgba(0,0,0,0.54)",3:"rgba(0,0,0,0.26)",4:"rgba(0,0,0,0.12)"},f={name:"light",1:"rgba(255,255,255,1.0)",2:"rgba(255,255,255,0.7)",3:"rgba(255,255,255,0.3)",4:"rgba(255,255,255,0.12)"},h="1px 1px 0px rgba(0,0,0,0.4), -1px -1px 0px rgba(0,0,0,0.4)",b="",g=c("rgba(0,0,0,0.87)"),E=c("rgba(255,255,255,0.87"),v=c("rgb(255,255,255)"),M=["primary","accent","warn","background"],$="primary",A={accent:{"default":"A200","hue-1":"A100","hue-2":"A400","hue-3":"A700"},background:{"default":"A100","hue-1":"300","hue-2":"800","hue-3":"900"}},T={background:{"default":"800","hue-1":"300","hue-2":"600","hue-3":"900"}};M.forEach(function(e){var t={"default":"500","hue-1":"300","hue-2":"800","hue-3":"A100"};A[e]||(A[e]=t),T[e]||(T[e]=t)});var C=["50","100","200","300","400","500","600","700","800","900","A100","A200","A400","A700"];e.$inject=["$mdColorPalette"],o.$inject=["$mdTheming","$interpolate","$log"],r.$inject=["$mdTheming"],a.$inject=["$injector"]}(),function(){t.module("material.components.autocomplete",["material.core","material.components.icon"])}(),function(){function e(){return{restrict:"E"}}function n(e){function n(e,n,i,a,d,c,l){function m(o,r,l){r=i.extractElementByName(r,"md-bottom-sheet"),p=i.createBackdrop(o,"md-bottom-sheet-backdrop md-opaque"),p.on("click",function(){i.nextTick(d.cancel,!0)}),a.inherit(p,l.parent),e.enter(p,l.parent,null);var m=new u(r,l.parent);return l.bottomSheet=m,l.targetEvent&&t.element(l.targetEvent.target).blur(),a.inherit(m.element,l.parent),l.disableParentScroll&&(l.lastOverflow=l.parent.css("overflow"),l.parent.css("overflow","hidden")),e.enter(m.element,l.parent).then(function(){var e=t.element(r[0].querySelector("button")||r[0].querySelector("a")||r[0].querySelector("[ng-click]"));e.focus(),l.escapeToClose&&(l.rootElementKeyupCallback=function(e){e.keyCode===n.KEY_CODE.ESCAPE&&i.nextTick(d.cancel,!0)},c.on("keyup",l.rootElementKeyupCallback))})}function s(n,o,r){var i=r.bottomSheet;return e.leave(p),e.leave(i.element).then(function(){r.disableParentScroll&&(r.parent.css("overflow",r.lastOverflow),delete r.lastOverflow),i.cleanup(),r.targetEvent&&t.element(r.targetEvent.target).focus()})}function u(e,t){function a(t){e.css(n.CSS.TRANSITION_DURATION,"0ms")}function c(t){var o=t.pointer.distanceY;5>o&&(o=Math.max(-r,o/2)),e.css(n.CSS.TRANSFORM,"translate3d(0,"+(r+o)+"px,0)")}function m(t){if(t.pointer.distanceY>0&&(t.pointer.distanceY>20||Math.abs(t.pointer.velocityY)>o)){var r=e.prop("offsetHeight")-t.pointer.distanceY,a=Math.min(r/t.pointer.velocityY*.75,500);e.css(n.CSS.TRANSITION_DURATION,a+"ms"),i.nextTick(d.cancel,!0)}else e.css(n.CSS.TRANSITION_DURATION,""),e.css(n.CSS.TRANSFORM,"")}var s=l.register(t,"drag",{horizontal:!1});return t.on("$md.dragstart",a).on("$md.drag",c).on("$md.dragend",m),{element:e,cleanup:function(){s(),t.off("$md.dragstart",a).off("$md.drag",c).off("$md.dragend",m)}}}var p;return{themable:!0,targetEvent:null,onShow:m,onRemove:s,escapeToClose:!0,disableParentScroll:!0}}var o=.5,r=80;return n.$inject=["$animate","$mdConstant","$mdUtil","$mdTheming","$mdBottomSheet","$rootElement","$mdGesture"],e("$mdBottomSheet").setDefaults({methods:["disableParentScroll","escapeToClose","targetEvent"],options:n})}t.module("material.components.bottomSheet",["material.core","material.components.backdrop"]).directive("mdBottomSheet",e).provider("$mdBottomSheet",n),n.$inject=["$$interimElementProvider"]}(),function(){t.module("material.components.backdrop",["material.core"]).directive("mdBackdrop",["$mdTheming","$animate","$rootElement","$window","$log","$$rAF","$document",function(e,t,n,o,r,i,a){function d(d,l,m){var s=o.getComputedStyle(a[0].body);if("fixed"==s.position){var u=parseInt(s.height,10)+Math.abs(parseInt(s.top,10));l.css({height:u+"px"})}t.pin&&t.pin(l,n),i(function(){var t=l.parent()[0];if(t){var n=o.getComputedStyle(t);"static"==n.position&&r.warn(c)}e.inherit(l,l.parent())})}var c=" may not work properly in a scrolled, static-positioned parent container.";return{restrict:"E",link:d}}])}(),function(){function e(e){return{restrict:"E",link:function(t,n,o){e(n)}}}t.module("material.components.card",["material.core"]).directive("mdCard",e),e.$inject=["$mdTheming"]}(),function(){function e(e,n,o,r,i,a,d){function c(n,c){return c.type="checkbox",c.tabindex=c.tabindex||"0",n.attr("role",c.type),function(n,c,m,s){function u(e,t,o){m[e]&&n.$watch(m[e],function(e){o[e]&&c.attr(t,o[e])})}function p(e){var t=e.which||e.keyCode;(t===r.KEY_CODE.SPACE||t===r.KEY_CODE.ENTER)&&(e.preventDefault(),c.hasClass("md-focused")||c.addClass("md-focused"),f(e))}function f(e){c[0].hasAttribute("disabled")||n.$apply(function(){var t=m.ngChecked?m.checked:!s.$viewValue;s.$setViewValue(t,e&&e.type),s.$render()})}function h(){s.$viewValue?c.addClass(l):c.removeClass(l)}s=s||a.fakeNgModel(),i(c),m.ngChecked&&n.$watch(n.$eval.bind(n,m.ngChecked),s.$setViewValue.bind(s)),u("ngDisabled","tabindex",{"true":"-1","false":m.tabindex}),o.expectWithText(c,"aria-label"),e.link.pre(n,{on:t.noop,0:{}},m,[s]),n.mouseActive=!1,c.on("click",f).on("keypress",p).on("mousedown",function(){n.mouseActive=!0,d(function(){n.mouseActive=!1},100)}).on("focus",function(){n.mouseActive===!1&&c.addClass("md-focused")}).on("blur",function(){c.removeClass("md-focused")}),s.$render=h}}e=e[0];var l="md-checked";return{restrict:"E",transclude:!0,require:"?ngModel",priority:210,template:'
',compile:c}}t.module("material.components.checkbox",["material.core"]).directive("mdCheckbox",e),e.$inject=["inputDirective","$mdInkRipple","$mdAria","$mdConstant","$mdTheming","$mdUtil","$timeout"]}(),function(){function e(e){function t(e,t){this.$scope=e,this.$element=t}return{restrict:"E",controller:["$scope","$element",t],link:function(t,o,r){o[0];e(o),t.$broadcast("$mdContentLoaded",o),n(o[0])}}}function n(e){t.element(e).on("$md.pressdown",function(t){"t"===t.pointer.type&&(t.$materialScrollFixed||(t.$materialScrollFixed=!0,0===e.scrollTop?e.scrollTop=1:e.scrollHeight===e.scrollTop+e.offsetHeight&&(e.scrollTop-=1)))})}t.module("material.components.content",["material.core"]).directive("mdContent",e),e.$inject=["$mdTheming"]}(),function(){function e(e,n,o,r){function i(e){return t.isDefined(e.href)||t.isDefined(e.ngHref)||t.isDefined(e.ngLink)||t.isDefined(e.uiSref)}function a(e,t){return i(t)?'':''}function d(a,d,c){var l=d[0];n(d),e.attach(a,d);var m=l.textContent.trim();m||o.expect(d,"aria-label"),i(c)&&t.isDefined(c.ngDisabled)&&a.$watch(c.ngDisabled,function(e){d.attr("tabindex",e?-1:0)}),d.on("click",function(e){c.disabled===!0&&(e.preventDefault(),e.stopImmediatePropagation())}),a.mouseActive=!1,d.on("mousedown",function(){a.mouseActive=!0,r(function(){a.mouseActive=!1},100)}).on("focus",function(){a.mouseActive===!1&&d.addClass("md-focused")}).on("blur",function(){d.removeClass("md-focused")})}return{restrict:"EA",replace:!0,transclude:!0,template:a,link:d}}t.module("material.components.button",["material.core"]).directive("mdButton",e),e.$inject=["$mdButtonInkRipple","$mdTheming","$mdAria","$timeout"]}(),function(){function e(e){return{restrict:"E",link:e}}t.module("material.components.divider",["material.core"]).directive("mdDivider",e),e.$inject=["$mdTheming"]}(),function(){t.module("material.components.chips",["material.core","material.components.autocomplete"])}(),function(){function e(e,n){return{restrict:"E",link:function(o,r,i){n(r),e(function(){function e(){r.toggleClass("md-content-overflow",o.scrollHeight>o.clientHeight)}var n,o=r[0].querySelector("md-dialog-content");o&&(n=o.getElementsByTagName("img"),e(),t.element(n).on("load",e))})}}}function n(e){function n(e,t){return{template:['',' ','

{{ dialog.title }}

',"

{{ dialog.content }}

","
",'
',' '," {{ dialog.cancel }}"," ",' '," {{ dialog.ok }}"," ","
","
"].join("").replace(/\s\s+/g,""),controller:function(){this.hide=function(){e.hide(!0)},this.abort=function(){e.cancel()}},controllerAs:"dialog",bindToController:!0,theme:t.defaultTheme()}}function o(e,n,o,r,i,a,d,c){function l(e,n,r){function i(){function e(){var e=n[0].querySelector(".dialog-close");if(!e){var o=n[0].querySelectorAll(".md-actions button");e=o[o.length-1]}return t.element(e)}if(r.focusOnOpen){var o="alert"===r.$type?n.find("md-dialog-content"):e();o.focus()}}return n=o.extractElementByName(n,"md-dialog"),t.element(a[0].body).addClass("md-dialog-is-showing"),s(n,r),f(n.find("md-dialog"),r),p(e,n,r),g(n,r).then(function(){u(n,r),h(n,r),i()})}function m(e,n,o){return o.deactivateListeners(),o.unlockScreenReader(),o.hideBackdrop(),E(n,o)["finally"](function(){t.element(a[0].body).removeClass("md-dialog-is-showing"),n.remove(),o.origin.focus()})}function s(e,n){var r={element:null,bounds:null,focus:t.noop};n.origin=t.extend({},r,n.origin||{});var i=t.element((n.targetEvent||{}).target);i&&i.length&&(n.origin.element=i,n.origin.bounds=i[0].getBoundingClientRect(),n.origin.focus=function(){i.focus()}),n.parent=t.element(n.parent||c),n.disableParentScroll&&(n.restoreScroll=o.disableScrollAround(e,n.parent))}function u(t,n){var i=[],a=function(){var t="alert"==n.$type?e.hide:e.cancel;o.nextTick(t,!0)};if(n.escapeToClose){var d=n.parent,c=function(e){e.keyCode===r.KEY_CODE.ESCAPE&&(e.stopPropagation(),e.preventDefault(),a())};t.on("keyup",c),d.on("keyup",c),i.push(function(){t.off("keyup",c),d.off("keyup",c)})}if(n.clickOutsideToClose){var d=t,l=function(e){e.target===d[0]&&(e.stopPropagation(),e.preventDefault(),a())};d.on("click",l),i.push(function(){d.off("click",l)})}n.deactivateListeners=function(){i.forEach(function(e){e()}),n.deactivateListeners=null}}function p(e,t,n){n.hasBackdrop&&(n.backdrop=o.createBackdrop(e,"md-dialog-backdrop md-opaque"),i.enter(n.backdrop,n.parent)),n.hideBackdrop=function(){n.backdrop&&i.leave(n.backdrop),n.disableParentScroll&&n.restoreScroll(),n.hideBackdrop=null}}function f(e,t){var r="alert"===t.$type?"alertdialog":"dialog",i=e.find("md-dialog-content"),a=e.attr("id")||"dialog_"+o.nextUid();e.attr({role:r,tabIndex:"-1"}),0===i.length&&(i=e),i.attr("id",a),e.attr("aria-describedby",a),t.ariaLabel?n.expect(e,"aria-label",t.ariaLabel):n.expectAsync(e,"aria-label",function(){var e=i.text().split(/\s+/);return e.length>3&&(e=e.slice(0,3).concat("...")),e.join(" ")})}function h(e,t){function n(e){for(;e.parentNode;){if(e===document.body)return;for(var t=e.parentNode.children,r=0;r'+e+"
"}}}return n.$inject=["$mdDialog","$mdTheming"],o.$inject=["$mdDialog","$mdAria","$mdUtil","$mdConstant","$animate","$document","$window","$rootElement"],e("$mdDialog").setDefaults({methods:["disableParentScroll","hasBackdrop","clickOutsideToClose","escapeToClose","targetEvent","parent"],options:o}).addPreset("alert",{methods:["title","content","ariaLabel","ok","theme"],options:n}).addPreset("confirm",{methods:["title","content","ariaLabel","ok","cancel","theme"],options:n})}t.module("material.components.dialog",["material.core","material.components.backdrop"]).directive("mdDialog",e).provider("$mdDialog",n),e.$inject=["$$rAF","$mdTheming"],n.$inject=["$$interimElementProvider"]}(),function(){!function(){function e(){function e(e,t){t.prepend('
')}function t(e,t,n,o){function r(){d.direction=d.direction||"down",d.isOpen=d.isOpen||!1}function i(){t.on("mouseenter",d.mouseenter),t.on("mouseleave",d.mouseleave)}function a(){e.$watch("vm.direction",function(e,o){n.removeClass(t,"md-"+o),n.addClass(t,"md-"+e)}),e.$watch("vm.isOpen",function(e){var o=e?"md-is-open":"",r=e?"":"md-is-open";n.setClass(t,o,r)})}var d=this;d.open=function(){e.$evalAsync("vm.isOpen = true")},d.close=function(){!d.moused&&e.$evalAsync("vm.isOpen = false")},d.mouseenter=function(){d.moused=!0,d.open()},d.mouseleave=function(){d.moused=!1,d.close()},r(),i(),a(),o.nextTick(function(){n.addClass(t,"md-noop")})}return t.$inject=["$scope","$element","$animate","$mdUtil"],{restrict:"E",scope:{direction:"@?mdDirection",isOpen:"=?mdOpen"},bindToController:!0,controller:t,controllerAs:"vm",link:e}}function n(){function e(e){var n=e[0],o=e.controller("mdFabSpeedDial"),r=n.querySelectorAll(".md-fab-action-item"),i=n.querySelector(".md-css-variables"),a=i.style.zIndex;t.forEach(r,function(e,t){var n=e.style;n.transform=n.webkitTransform="",n.transitionDelay="",n.opacity=1,n.zIndex=r.length-t+a}),o.isOpen||t.forEach(r,function(e,t){var n,r,i=e.style;switch(o.direction){case"up":n=e.scrollHeight*(t+1),r="Y";break;case"down":n=-e.scrollHeight*(t+1),r="Y";break;case"left":n=e.scrollWidth*(t+1),r="X";break;case"right":n=-e.scrollWidth*(t+1),r="X"}var a="translate"+r+"("+n+"px)";i.transform=i.webkitTransform=a})}return{addClass:function(t,n,o){t.hasClass("md-fling")&&(e(t),o())},removeClass:function(t,n,o){e(t),o()}}}function o(){function e(e){var o=e[0],r=e.controller("mdFabSpeedDial"),i=o.querySelectorAll(".md-fab-action-item");t.forEach(i,function(e,t){var o=e.style,a=t*n;o.opacity=r.isOpen?1:0,o.transform=o.webkitTransform=r.isOpen?"scale(1)":"scale(0)",o.transitionDelay=(r.isOpen?a:i.length-a)+"ms"})}var n=65;return{addClass:function(t,n,o){e(t),o()},removeClass:function(t,n,o){e(t),o()}}}t.module("material.components.fabSpeedDial",["material.core","material.components.fabTrigger","material.components.fabActions"]).directive("mdFabSpeedDial",e).animation(".md-fling",n).animation(".md-scale",o).service("mdFabSpeedDialFlingAnimation",n).service("mdFabSpeedDialScaleAnimation",o)}()}(),function(){!function(){function e(){return{restrict:"E",require:["^?mdFabSpeedDial","^?mdFabToolbar"],compile:function(e,n){var o=e.children();return o.attr("ng-repeat")?o.addClass("md-fab-action-item"):o.wrap('
'),function(e,n,o,r){var i=r[0]||r[1];i&&t.forEach(n.children(),function(e){e=t.element(e).children()[0],t.element(e).on("focus",i.open),t.element(e).on("blur",i.close)})}}}}t.module("material.components.fabActions",["material.core"]).directive("mdFabActions",e)}()}(),function(){!function(){function n(){function e(e,t,n){var o=this;o.isOpen=o.isOpen||!1,o.open=function(){o.isOpen=!0,e.$apply()},o.close=function(){o.isOpen=!1,e.$apply()},t.addClass("md-fab-toolbar"),t.on("mouseenter",o.open),t.on("mouseleave",o.close),e.$watch("vm.isOpen",function(e){var o=e?"md-is-open":"",r=e?"":"md-is-open";n.setClass(t,o,r)})}function t(e,t,n){t.find("md-fab-trigger").find("button").attr("tabindex","-1"),t.find("md-fab-trigger").find("button").prepend('
')}return e.$inject=["$scope","$element","$animate"],{restrict:"E",transclude:!0,template:'
',scope:{isOpen:"=?mdOpen"},bindToController:!0,controller:e,controllerAs:"vm",link:t}}function o(){function n(n,o,r){var i=n[0],a=n.controller("mdFabToolbar"),d=i.querySelector(".md-fab-toolbar-background"),c=i.querySelector("md-fab-trigger button"),l=i.querySelector("md-fab-trigger button md-icon"),m=n.find("md-fab-actions").children();if(c&&d){var s=e.getComputedStyle(c).getPropertyValue("background-color"),u=i.offsetWidth,p=(i.offsetHeight,2*u);d.style.backgroundColor=s,d.style.borderRadius=u+"px",a.isOpen?(d.style.width=p+"px",d.style.height=p+"px",d.style.top=-(p/2)+"px",n.hasClass("md-left")&&(d.style.left=-(p/2)+"px",d.style.right=null),n.hasClass("md-right")&&(d.style.right=-(p/2)+"px",d.style.left=null),d.style.transitionDelay="0ms",l&&(l.style.transitionDelay=".3s"),t.forEach(m,function(e,t){e.style.transitionDelay=25*(m.length-t)+"ms"})):(d.style.width=c.offsetWidth+"px",d.style.height=c.offsetHeight+"px",d.style.top="0px",n.hasClass("md-left")&&(d.style.left="0px",d.style.right=null),n.hasClass("md-right")&&(d.style.right="0px",d.style.left=null),d.style.transitionDelay="200ms",l&&(l.style.transitionDelay="0ms"),t.forEach(m,function(e,t){e.style.transitionDelay=25*t+"ms"}))}}return{addClass:function(e,t,o){n(e,t,o),o()},removeClass:function(e,t,o){n(e,t,o),o()}}}t.module("material.components.fabToolbar",["material.core","material.components.fabTrigger","material.components.fabActions"]).directive("mdFabToolbar",n).animation(".md-fab-toolbar",o).service("mdFabToolbarAnimation",o)}()}(),function(){!function(){function e(){return{restrict:"E",require:["^?mdFabSpeedDial","^?mdFabToolbar"],link:function(e,n,o,r){var i=r[0]||r[1];i&&t.forEach(n.children(),function(e){t.element(e).on("focus",i.open),t.element(e).on("blur",i.close)})}}}t.module("material.components.fabTrigger",["material.core"]).directive("mdFabTrigger",e)}()}(),function(){function e(e,o,r,i){function a(n,a,d,c){function l(){for(var e in o.MEDIA)i(e),i.getQuery(o.MEDIA[e]).addListener(T);return i.watchResponsiveAttributes(["md-cols","md-row-height"],d,s)}function m(){c.layoutDelegate=t.noop,C();for(var e in o.MEDIA)i.getQuery(o.MEDIA[e]).removeListener(T)}function s(e){null==e?c.invalidateLayout():i(e)&&c.invalidateLayout()}function u(e){var o=b(),i={tileSpans:g(o),colCount:E(),rowMode:$(),rowHeight:M(),gutter:v()};if(e||!t.equals(i,y)){var d=r(i.colCount,i.tileSpans,o).map(function(e,n){return{grid:{element:a,style:h(i.colCount,n,i.gutter,i.rowMode,i.rowHeight)},tiles:e.map(function(e,n){return{element:t.element(o[n]),style:f(e.position,e.spans,i.colCount,i.rowCount,i.gutter,i.rowMode,i.rowHeight)}})}}).reflow().performance();n.mdOnLayout({$event:{performance:d}}),y=i}}function p(e){return w+e+k}function f(e,t,n,o,r,i,a){var d=1/n*100,c=(n-1)/n,l=x({share:d,gutterShare:c,gutter:r}),m={left:N({unit:l,offset:e.col,gutter:r}),width:_({unit:l,span:t.col,gutter:r}),paddingTop:"",marginTop:"",top:"",height:""};switch(i){case"fixed":m.top=N({unit:a,offset:e.row,gutter:r}),m.height=_({unit:a,span:t.row,gutter:r});break;case"ratio":var s=d/a,u=x({share:s,gutterShare:c,gutter:r});m.paddingTop=_({unit:u,span:t.row,gutter:r}),m.marginTop=N({unit:u,offset:e.row,gutter:r});break;case"fit":var p=(o-1)/o,s=1/o*100,u=x({share:s,gutterShare:p,gutter:r});m.top=N({unit:u,offset:e.row,gutter:r}),m.height=_({unit:u,span:t.row,gutter:r})}return m}function h(e,t,n,o,r){var i={height:"",paddingBottom:""};switch(o){case"fixed":i.height=_({unit:r,span:t,gutter:n});break;case"ratio":var a=1===e?0:(e-1)/e,d=1/e*100,c=d*(1/r),l=x({share:c,gutterShare:a,gutter:n});i.paddingBottom=_({unit:l,span:t,gutter:n});break;case"fit":}return i}function b(){return[].filter.call(a.children(),function(e){return"MD-GRID-TILE"==e.tagName})}function g(e){return[].map.call(e,function(e){var n=t.element(e).controller("mdGridTile");return{row:parseInt(i.getResponsiveAttribute(n.$attrs,"md-rowspan"),10)||1,col:parseInt(i.getResponsiveAttribute(n.$attrs,"md-colspan"),10)||1}})}function E(){var e=parseInt(i.getResponsiveAttribute(d,"md-cols"),10);if(isNaN(e))throw"md-grid-list: md-cols attribute was not found, or contained a non-numeric value";return e}function v(){return A(i.getResponsiveAttribute(d,"md-gutter")||1)}function M(){var e=i.getResponsiveAttribute(d,"md-row-height");switch($()){case"fixed":return A(e);case"ratio":var t=e.split(":");return parseFloat(t[0])/parseFloat(t[1]);case"fit":return 0}}function $(){var e=i.getResponsiveAttribute(d,"md-row-height");return"fit"==e?"fit":-1!==e.indexOf(":")?"ratio":"fixed"}function A(e){return/\D$/.test(e)?e:e+"px"}a.attr("role","list"),c.layoutDelegate=u;var T=t.bind(c,c.invalidateLayout),C=l();n.$on("$destroy",m);var y,w=e.startSymbol(),k=e.endSymbol(),x=e(p("share")+"% - ("+p("gutter")+" * "+p("gutterShare")+")"),N=e("calc(("+p("unit")+" + "+p("gutter")+") * "+p("offset")+")"),_=e("calc(("+p("unit")+") * "+p("span")+" + ("+p("span")+" - 1) * "+p("gutter")+")")}return{restrict:"E",controller:n, scope:{mdOnLayout:"&"},link:a}}function n(e){this.layoutInvalidated=!1,this.tilesInvalidated=!1,this.$timeout_=e.nextTick,this.layoutDelegate=t.noop}function o(e){function n(t,n){var o,a,d,c,l,m;return c=e.time(function(){a=r(t,n)}),o={layoutInfo:function(){return a},map:function(t){return l=e.time(function(){var e=o.layoutInfo();d=t(e.positioning,e.rowCount)}),o},reflow:function(t){return m=e.time(function(){var e=t||i;e(d.grid,d.tiles)}),o},performance:function(){return{tileCount:n.length,layoutTime:c,mapTime:l,reflowTime:m,totalTime:c+l+m}}}}function o(e,t){e.element.css(e.style),t.forEach(function(e){e.element.css(e.style)})}function r(e,t){function n(t,n){if(t.col>e)throw"md-grid-list: Tile at position "+n+" has a colspan ("+t.col+") that exceeds the column count ("+e+")";for(var a=0,m=0;m-a=e?o():(a=l.indexOf(0,d),-1!==a&&-1!==(m=i(a+1))?d=m+1:(a=m=0,o()));return r(a,t.col,t.row),d=a+t.col,{col:a,row:c}}function o(){d=0,c++,r(0,e,-1)}function r(e,t,n){for(var o=e;e+t>o;o++)l[o]=Math.max(l[o]+n,0)}function i(e){var t;for(t=e;tn;n++)t.push(0);return t}var d=0,c=0,l=a();return{positioning:t.map(function(e,t){return{spans:e,position:n(e,t)}}),rowCount:c+Math.max.apply(Math,l)}}var i=o;return n.animateWith=function(e){i=t.isFunction(e)?e:o},n}function r(e){function n(n,o,r,i){o.attr("role","listitem");var a=e.watchResponsiveAttributes(["md-colspan","md-rowspan"],r,t.bind(i,i.invalidateLayout));i.invalidateTiles(),n.$on("$destroy",function(){a(),i.invalidateLayout()}),t.isDefined(n.$parent.$index)&&n.$watch(function(){return n.$parent.$index},function(e,t){e!==t&&i.invalidateTiles()})}return{restrict:"E",require:"^mdGridList",template:"
",transclude:!0,scope:{},controller:["$attrs",function(e){this.$attrs=e}],link:n}}function i(){return{template:"
",transclude:!0}}t.module("material.components.gridList",["material.core"]).directive("mdGridList",e).directive("mdGridTile",r).directive("mdGridTileFooter",i).directive("mdGridTileHeader",i).factory("$mdGridLayout",o),e.$inject=["$interpolate","$mdConstant","$mdGridLayout","$mdMedia"],n.$inject=["$mdUtil"],n.prototype={invalidateTiles:function(){this.tilesInvalidated=!0,this.invalidateLayout()},invalidateLayout:function(){this.layoutInvalidated||(this.layoutInvalidated=!0,this.$timeout_(t.bind(this,this.layout)))},layout:function(){try{this.layoutDelegate(this.tilesInvalidated)}finally{this.layoutInvalidated=!1,this.tilesInvalidated=!1}}},o.$inject=["$mdUtil"],r.$inject=["$mdMedia"]}(),function(){function e(e,t,n){function o(o,r,i){function a(){var e=r.parent();return e.attr("aria-label")||e.text()?!0:e.parent().attr("aria-label")||e.parent().text()?!0:!1}function d(){function t(){return!o.fontIcon&&!o.fontSet&&!i.hasOwnProperty("class")}o.svgIcon||o.svgSrc||(o.fontIcon&&r.addClass("md-font "+o.fontIcon),o.fontSet&&r.addClass(e.fontSet(o.fontSet)),t()&&r.addClass(e.fontSet()))}t(r),d();var c=i.alt||o.fontIcon||o.svgIcon||r.text(),l=i.$normalize(i.$attr.mdSvgIcon||i.$attr.mdSvgSrc||"");i["aria-label"]||(""==c||a()?r.text()||n.expect(r,"aria-hidden","true"):(n.expect(r,"aria-label",c),n.expect(r,"role","img"))),l&&i.$observe(l,function(t){r.empty(),t&&e(t).then(function(e){r.append(e)})})}return{scope:{fontSet:"@mdFontSet",fontIcon:"@mdFontIcon",svgIcon:"@mdSvgIcon",svgSrc:"@mdSvgSrc"},restrict:"E",link:o}}t.module("material.components.icon",["material.core"]).directive("mdIcon",e),e.$inject=["$mdIcon","$mdTheming","$mdAria"]}(),function(){function e(){}function n(e,t){this.url=e,this.viewBoxSize=t||r.defaultViewBoxSize}function o(e,n,o,r,i){function a(e){return e=e||"",E[e]?o.when(E[e].clone()):v.test(e)?s(e).then(c(e)):(-1==e.indexOf(":")&&(e="$default:"+e),l(e)["catch"](m)["catch"](u)["catch"](p).then(c(e)))}function d(n){var o=t.isUndefined(n)||!(n&&n.length);if(o)return e.defaultFontSet;var r=n;return t.forEach(e.fontSets,function(e){e.alias==n&&(r=e.fontSet||r)}),r}function c(t){return function(n){return E[t]=f(n)?n:new h(n,e[t]),E[t].clone()}}function l(t){var n=e[t];return n?s(n.url).then(function(e){return new h(e,n)}):o.reject(t)}function m(t){function n(e){var n=t.slice(t.lastIndexOf(":")+1),r=e.querySelector("#"+n);return r?new h(r,i):o.reject(t)}var r=t.substring(0,t.lastIndexOf(":"))||"$default",i=e[r];return i?s(i.url).then(n):o.reject(t)}function s(e){return n.get(e,{cache:i}).then(function(e){return t.element("
").append(e.data).find("svg")[0]})}function u(e){var n;return t.isString(e)&&(n="icon "+e+" not found",r.warn(n)),o.reject(n||e)}function p(e){var n=t.isString(e)?e:e.message||e.data||e.statusText;return r.warn(n),o.reject(n)}function f(e){return t.isDefined(e.element)&&t.isDefined(e.config)}function h(e,n){"svg"!=e.tagName&&(e=t.element('').append(e)[0]),e.getAttribute("xmlns")||e.setAttribute("xmlns","http://www.w3.org/2000/svg"),this.element=e,this.config=n,this.prepare()}function b(){var n=this.config?this.config.viewBoxSize:e.defaultViewBoxSize;t.forEach({fit:"",height:"100%",width:"100%",preserveAspectRatio:"xMidYMid meet",viewBox:this.element.getAttribute("viewBox")||"0 0 "+n+" "+n},function(e,t){this.element.setAttribute(t,e)},this),t.forEach({"pointer-events":"none",display:"block"},function(e,t){this.element.style[t]=e},this)}function g(){return this.element.cloneNode(!0)}var E={},v=/[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/i;return h.prototype={clone:g,prepare:b},a.fontSet=d,a}t.module("material.components.icon").provider("$mdIcon",e);var r={defaultViewBoxSize:24,defaultFontSet:"material-icons",fontSets:[]};e.prototype={icon:function(e,t,o){return-1==e.indexOf(":")&&(e="$default:"+e),r[e]=new n(t,o),this},iconSet:function(e,t,o){return r[e]=new n(t,o),this},defaultIconSet:function(e,t){var o="$default";return r[o]||(r[o]=new n(e,t)),r[o].viewBoxSize=t||r.defaultViewBoxSize,this},defaultViewBoxSize:function(e){return r.defaultViewBoxSize=e,this},fontSet:function(e,t){return r.fontSets.push({alias:e,fontSet:t||e}),this},defaultFontSet:function(e){return r.defaultFontSet=e?e:"",this},defaultIconSize:function(e){return r.defaultIconSize=e,this},preloadIcons:function(e){var t=this,n=[{id:"md-tabs-arrow",url:"md-tabs-arrow.svg",svg:''},{id:"md-close",url:"md-close.svg",svg:''},{id:"md-cancel",url:"md-cancel.svg",svg:''},{id:"md-menu",url:"md-menu.svg",svg:''},{id:"md-toggle-arrow",url:"md-toggle-arrow-svg",svg:''}];n.forEach(function(n){t.icon(n.id,n.url),e.put(n.url,n.svg)})},$get:["$http","$q","$log","$templateCache",function(e,t,n,i){return this.preloadIcons(i),o(r,e,t,n,i)}]}}(),function(){function e(e,t){function n(t,n,o){e(n)}function o(e,n,o){var r=this;r.isErrorGetter=o.mdIsError&&t(o.mdIsError),r.delegateClick=function(){r.input.focus()},r.element=n,r.setFocused=function(e){n.toggleClass("md-input-focused",!!e)},r.setHasValue=function(e){n.toggleClass("md-input-has-value",!!e)},r.setInvalid=function(e){n.toggleClass("md-input-invalid",!!e)},e.$watch(function(){return r.label&&r.input},function(e){e&&!r.label.attr("for")&&r.label.attr("for",r.input.attr("id"))})}return o.$inject=["$scope","$element","$attrs"],{restrict:"E",link:n,controller:o}}function n(){return{restrict:"E",require:"^?mdInputContainer",link:function(e,t,n,o){o&&!n.mdNoFloat&&(o.label=t,e.$on("$destroy",function(){o.label=null}))}}}function o(e,n,o){function r(r,i,a,d){function c(e){return s.setHasValue(!u.$isEmpty(e)),e}function l(){s.setHasValue(i.val().length>0||(i[0].validity||{}).badInput)}function m(){function o(e){return h(),e}function a(){if(m.style.height=m.offsetHeight+"px",i.addClass("md-no-flex"),isNaN(p)){l.style.height="auto",l.scrollTop=0;var e=d();e&&(l.style.height=e+"px")}else{l.setAttribute("rows",1),f||(l.style.minHeight="0",f=i.prop("clientHeight"),l.style.minHeight=null);var t=Math.max(p,Math.round(l.scrollHeight/f));l.setAttribute("rows",t)}i.removeClass("md-no-flex"),m.style.height="auto"}function d(){var e=l.scrollHeight-l.offsetHeight;return l.offsetHeight+(e>0?e:0)}function c(e){l.scrollTop=0;var t=l.scrollHeight-l.offsetHeight,n=l.offsetHeight+t;l.style.height=n+"px"}if(!t.isDefined(i.attr("md-no-autogrow"))){var l=i[0],m=s.element[0],p=0/0,f=null;l.hasAttribute("rows")&&(p=parseInt(l.getAttribute("rows")));var h=e.debounce(a,1);u?(u.$formatters.push(o),u.$viewChangeListeners.push(o)):h(),i.on("keydown input",h),isNaN(p)&&(i.attr("rows","1"),i.on("scroll",c)),t.element(n).on("resize",h),r.$on("$destroy",function(){t.element(n).off("resize",h)})}}var s=d[0],u=d[1]||e.fakeNgModel(),p=t.isDefined(a.readonly);if(s){if(s.input)throw new Error(" can only have *one*
');r.$set("ngTrim","false"),l.element.append(m),c.$formatters.push(a),c.$viewChangeListeners.push(a),o.on("input keydown",function(){a()}),n.$watch(r.mdMaxlength,function(n){d=n,t.isNumber(n)&&n>0?(m.parent().length||e.enter(m,l.element,t.element(l.element[0].lastElementChild)),a()):e.leave(m)}),c.$validators["md-maxlength"]=function(e,n){return!t.isNumber(d)||0>d?!0:(e||o.val()||n||"").length<=d}}return{restrict:"A",require:["ngModel","^mdInputContainer"],link:n}}function i(e){function n(n,o,r,i){if(i&&!t.isDefined(i.element.attr("md-no-float"))){var a=r.placeholder;if(o.removeAttr("placeholder"),0==i.element.find("label").length){if(i.input&&"MD-SELECT"!=i.input[0].nodeName){var d='";i.element.addClass("md-icon-float"),i.element.prepend(d)}}else"MD-SELECT"!=o[0].nodeName&&e.warn("The placeholder='"+a+"' will be ignored since this md-input-container has a child label element.")}}return{restrict:"A",require:"^^?mdInputContainer",priority:200,link:n}}t.module("material.components.input",["material.core"]).directive("mdInputContainer",e).directive("label",n).directive("input",o).directive("textarea",o).directive("mdMaxlength",r).directive("placeholder",i),e.$inject=["$mdTheming","$parse"],o.$inject=["$mdUtil","$window","$mdAria"],r.$inject=["$animate"],i.$inject=["$log"]}(),function(){function e(e){return{restrict:"E",compile:function(t){return t[0].setAttribute("role","list"),e}}}function n(e,n,o){var r=["md-checkbox","md-switch"];return{restrict:"E",controller:"MdListController",compile:function(i,a){function d(){for(var e,t,n=["md-switch","md-checkbox"],o=0;t=n[o];++o)if((e=i.find(t)[0])&&!e.hasAttribute("aria-label")){var r=i.find("p")[0];if(!r)return;e.setAttribute("aria-label","Toggle "+r.textContent)}}function c(n){var o;if("div"==n)o=t.element('
'),o.append(i.contents()),i.addClass("md-proxy-focus");else{o=t.element('
');var r=["ng-click","aria-label","ng-disabled"];t.forEach(r,function(e){i[0].hasAttribute(e)&&(o[0].setAttribute(e,i[0].getAttribute(e)),i[0].removeAttribute(e))}),o.children().eq(0).append(i.contents())}if(i[0].setAttribute("tabindex","-1"),i.append(o),p&&p.hasAttribute("ng-click")){e.expect(p,"aria-label");var d=t.element('');d.attr("ng-click",p.getAttribute("ng-click")),p.removeAttribute("ng-click"),p.setAttribute("tabindex","-1"),p.classList.remove("md-secondary"),d.append(p),p=d[0]}p&&(p.hasAttribute("ng-click")||a.ngClick&&l(p))&&(i.addClass("md-with-secondary"),i.append(p))}function l(e){return-1!=r.indexOf(e.nodeName.toLowerCase())}function m(e,i,a,d){function c(){var e=i.children();e.length&&!e[0].hasAttribute("ng-click")&&t.forEach(r,function(e){t.forEach(s.querySelectorAll(e),function(e){m.push(e)})})}function l(){(m.length||u)&&(i.addClass("md-clickable"),d.attachRipple(e,t.element(i[0].querySelector(".md-no-style"))))}var m=[],s=i[0].firstElementChild,u=s&&s.hasAttribute("ng-click");c(),l(),i.hasClass("md-proxy-focus")&&m.length&&t.forEach(m,function(n){n=t.element(n),e.mouseActive=!1,n.on("mousedown",function(){e.mouseActive=!0,o(function(){e.mouseActive=!1},100)}).on("focus",function(){e.mouseActive===!1&&i.addClass("md-focused"),n.on("blur",function t(){i.removeClass("md-focused"),n.off("blur",t)})})}),u||m.length||s&&s.addEventListener("keypress",function(e){if("INPUT"!=e.target.nodeName&&"TEXTAREA"!=e.target.nodeName){var t=e.which||e.keyCode;t==n.KEY_CODE.SPACE&&s&&(s.click(),e.preventDefault(),e.stopPropagation())}}),i.off("click"),i.off("keypress"),m.length&&s&&i.children().eq(0).on("click",function(e){s.contains(e.target)&&t.forEach(m,function(n){e.target===n||n.contains(e.target)||t.element(n).triggerHandler("click")})})}var s,u,p=i[0].querySelector(".md-secondary");if(i[0].setAttribute("role","listitem"),a.ngClick)c("button");else{for(var f,h=0;f=r[h];++h)if(u=i[0].querySelector(f)){s=!0;break}s?c("div"):i[0].querySelector("md-button")||i.addClass("md-no-proxy")}return d(),m}}}function o(e,t,n){function o(e,t){var o={};n.attach(e,t,o)}var r=this;r.attachRipple=o}t.module("material.components.list",["material.core"]).controller("MdListController",o).directive("mdList",e).directive("mdListItem",n),e.$inject=["$mdTheming"],n.$inject=["$mdAria","$mdConstant","$timeout"],o.$inject=["$scope","$element","$mdListInkRipple"]}(),function(){function e(e){function n(e){e.addClass("md-menu");var t=e.children()[0];if(t.hasAttribute("ng-click")||(t=t.querySelector("[ng-click]")),t&&t.setAttribute("aria-haspopup","true"),2!=e.children().length)throw Error("Invalid HTML for md-menu. Expected two children elements.");return o}function o(e,n,o,r){var i=t.element('
'),a=n.children()[1];i.append(a),r.init(i),e.$on("$destroy",function(){i.remove(),r.close()})}return{restrict:"E",require:"mdMenu",controller:"mdMenuCtrl",scope:!0,compile:n}}function n(e,t,n,o){var r,i,a=this;this.init=function(e){r=e,i=n[0].querySelector("[ng-click]")},this.open=function(t){t&&t.stopPropagation(),a.isOpen=!0,i.setAttribute("aria-expanded","true"),e.show({scope:o,mdMenuCtrl:a,element:r,target:n[0]})},o.$mdOpenMenu=this.open,this.close=function(t){a.isOpen&&(a.isOpen=!1,i.setAttribute("aria-expanded","false"),e.hide(),t||n.children()[0].focus())},this.positionMode=function(){var e=(t.mdPositionMode||"target").split(" ");return 1==e.length&&e.push(e[0]),{left:e[0],top:e[1]}},this.offsets=function(){var e=(t.mdOffset||"0 0").split(" ").map(parseFloat);if(2==e.length)return{left:e[0],top:e[1]};if(1==e.length)return{top:e[0],left:e[0]};throw Error("Invalid offsets specified. Please follow format or ")}}t.module("material.components.menu",["material.core","material.components.backdrop"]).directive("mdMenu",e).controller("mdMenuCtrl",n),e.$inject=["$mdMenu"],n.$inject=["$mdMenu","$attrs","$element","$scope"]}(),function(){function o(o){function r(o,r,a,d,c,l){function m(e,n,i){function l(){if(!i.target)throw Error("$mdMenu.show() expected a target to animate from in options.target");t.extend(i,{alreadyOpen:!1,isRemoved:!1,target:t.element(i.target),parent:t.element(i.parent),menuContentEl:t.element(n[0].querySelector("md-menu-content")),backdrop:i.hasBackdrop&&a.createBackdrop(e,"md-menu-backdrop md-click-catcher")})}function m(){i.resizeFn=function(){f(n,i)},t.element(r).on("resize",i.resizeFn),t.element(r).on("orientationchange",i.resizeFn)}function u(){i.parent.append(n),n.removeClass("md-leave"),o(function(){o(function(){f(n,i),o(function(){n.addClass("md-active"),i.alreadyOpen=!0,n[0].style[c.CSS.TRANSFORM]=""})})})}function p(){n.addClass("md-clickable"),i.backdrop&&i.backdrop.on("click",function(t){t.preventDefault(),t.stopPropagation(),e.$apply(function(){i.mdMenuCtrl.close(!0)})}),i.menuContentEl.on("keydown",function(t){e.$apply(function(){switch(t.keyCode){case c.KEY_CODE.ESCAPE:i.mdMenuCtrl.close();break;case c.KEY_CODE.UP_ARROW:s(t,i.menuContentEl,i,-1);break;case c.KEY_CODE.DOWN_ARROW:s(t,i.menuContentEl,i,1)}})});var t=function(t){function n(){e.$apply(function(){i.mdMenuCtrl.close()})}function o(e,t){if(!e)return!1;for(var n,o=0;n=t[o];++o)for(var r,i=[n,"data-"+n,"x-"+n],a=0;r=i[a];++a)if(e.hasAttribute(r))return!0;return!1}var r=t.target;do{if(r==i.menuContentEl[0])return;if(o(r,["ng-click","ng-href","ui-sref"])){r.hasAttribute("disabled")||n();break}}while(r=r.parentNode)};i.menuContentEl[0].addEventListener("click",t,!0);var o=i.menuContentEl[0].querySelector("[md-menu-focus-target]");return o||(o=i.menuContentEl[0].firstElementChild.firstElementChild),o.focus(),function(){n.removeClass("md-clickable"),i.backdrop.off("click"),i.menuContentEl.off("keydown"),i.menuContentEl[0].removeEventListener("click",t,!0)}}return l(i),d.inherit(i.menuContentEl,i.target),m(),i.disableParentScroll&&(i.restoreScroll=a.disableScrollAround(i.element)),i.backdrop&&(d.inherit(i.backdrop,i.parent),i.parent.append(i.backdrop)),u(),h.waitTransitionEnd(n,{timeout:370})["finally"](function(e){return i.cleanupInteraction=p(),e})}function s(e,t,n,o){for(var r=a.getClosest(e.target,"MD-MENU-ITEM"),i=a.nodesToArray(t[0].children),d=i.indexOf(r),c=d+o;c>=0&&c
',compile:n}}t.module("material.components.progressCircular",["material.core"]).directive("mdProgressCircular",e),e.$inject=["$mdConstant","$mdTheming"]}(),function(){function e(e,o,r){function i(e,t,n){return e.attr("aria-valuemin",0),e.attr("aria-valuemax",100),e.attr("role","progressbar"),a}function a(i,a,c){r(a);var l=a[0].querySelector(".md-bar1").style,m=a[0].querySelector(".md-bar2").style,s=t.element(a[0].querySelector(".md-container"));c.$observe("value",function(e){if("query"!=c.mdMode){var t=d(e);a.attr("aria-valuenow",t),m[o.CSS.TRANSFORM]=n[t]}}),c.$observe("mdBufferValue",function(e){l[o.CSS.TRANSFORM]=n[d(e)]}),e(function(){s.addClass("md-ready")})}function d(e){return e>100?100:0>e?0:Math.ceil(e||0)}return{restrict:"E",template:'
',compile:i}}t.module("material.components.progressLinear",["material.core"]).directive("mdProgressLinear",e),e.$inject=["$$rAF","$mdConstant","$mdTheming"];var n=function(){function e(e){var t=e/100,n=(e-100)/2;return"translateX("+n.toString()+"%) scale("+t.toString()+", 1)"}for(var t=new Array(101),n=0;101>n;n++)t[n]=e(n);return t}()}(),function(){function e(e,n,o,r){function i(i,a,d,c){function l(){a.hasClass("md-focused")||a.addClass("md-focused")}function m(o){var r=o.which||o.keyCode;switch(r){case n.KEY_CODE.LEFT_ARROW:case n.KEY_CODE.UP_ARROW:o.preventDefault(),s.selectPrevious(),l();break;case n.KEY_CODE.RIGHT_ARROW:case n.KEY_CODE.DOWN_ARROW:o.preventDefault(),s.selectNext(),l();break;case n.KEY_CODE.ENTER:var i=t.element(e.getClosest(a[0],"form"));i.length>0&&i.triggerHandler("submit")}}o(a);var s=c[0],u=c[1]||e.fakeNgModel();s.init(u),i.mouseActive=!1,a.attr({role:"radiogroup",tabIndex:a.attr("tabindex")||"0"}).on("keydown",m).on("mousedown",function(e){i.mouseActive=!0,r(function(){i.mouseActive=!1},100)}).on("focus",function(){i.mouseActive===!1&&s.$element.addClass("md-focused")}).on("blur",function(){s.$element.removeClass("md-focused")})}function a(e){this._radioButtonRenderFns=[],this.$element=e}function d(){return{init:function(e){this._ngModelCtrl=e,this._ngModelCtrl.$render=t.bind(this,this.render)},add:function(e){this._radioButtonRenderFns.push(e)},remove:function(e){var t=this._radioButtonRenderFns.indexOf(e);-1!==t&&this._radioButtonRenderFns.splice(t,1)},render:function(){this._radioButtonRenderFns.forEach(function(e){e()})},setViewValue:function(e,t){this._ngModelCtrl.$setViewValue(e,t),this.render()},getViewValue:function(){return this._ngModelCtrl.$viewValue},selectNext:function(){return c(this.$element,1)},selectPrevious:function(){return c(this.$element,-1)},setActiveDescendant:function(e){this.$element.attr("aria-activedescendant",e)}}}function c(n,o){var r=e.iterator(n[0].querySelectorAll("md-radio-button"),!0);if(r.count()){var i=function(e){return!t.element(e).attr("disabled")},a=n[0].querySelector("md-radio-button.md-checked"),d=r[0>o?"previous":"next"](a,i)||r.first();t.element(d).triggerHandler("click")}}return a.prototype=d(),{restrict:"E",controller:["$element",a],require:["mdRadioGroup","?ngModel"],link:{pre:i}}}function n(e,t,n){function o(o,i,a,d){function c(e){i[0].hasAttribute("disabled")||o.$apply(function(){d.setViewValue(a.value,e&&e.type)})}function l(){var e=d.getViewValue()==a.value;e!==s&&(s=e,i.attr("aria-checked",e),e?(i.addClass(r),d.setActiveDescendant(i.attr("id"))):i.removeClass(r))}function m(n,o){function r(){return a.id||"radio_"+t.nextUid()}o.ariaId=r(),n.attr({id:o.ariaId,role:"radio","aria-checked":"false"}),e.expectWithText(n,"aria-label")}var s;n(i),m(i,o),d.add(l),a.$observe("value",l),i.on("click",c).on("$destroy",function(){d.remove(l)})}var r="md-checked";return{restrict:"E",require:"^mdRadioGroup",transclude:!0,template:'
',link:o}}t.module("material.components.radioButton",["material.core"]).directive("mdRadioGroup",e).directive("mdRadioButton",n),e.$inject=["$mdUtil","$mdConstant","$mdTheming","$timeout"],n.$inject=["$mdAria","$mdUtil","$mdTheming"]}(),function(){function e(e,o,r,i,a,d,c){function l(a,l){var m=t.element("");if(m.append(''),m.addClass("md-select-value"),m[0].hasAttribute("id")||m.attr("id","select_value_label_"+o.nextUid()),a.find("md-content").length||a.append(t.element("").append(a.contents())),l.mdOnOpen&&a.find("md-content").prepend(t.element("").attr("md-mode","indeterminate").attr("ng-hide","$$loadingAsyncDone").wrap("
").parent()),l.name){var s=t.element(',