 .help-list-item:hover{background-color:#e0e0e0}@-moz-document url-prefix(){.note-modal .note-image-input{height:auto}}.help-list-item label{display:inline-block;margin-bottom:5px}/*
 * jsGrid v1.5.3 (http://js-grid.com)
 * (c) 2016 Artem Tabalin
 * Licensed under MIT (https://github.com/tabalinas/jsgrid/blob/master/LICENSE)
 */

.jsgrid{position:relative;overflow:hidden;font-size:1em}.jsgrid,.jsgrid *,.jsgrid :after,.jsgrid :before{box-sizing:border-box}.jsgrid input,.jsgrid select,.jsgrid textarea{font-size:1em}.jsgrid-grid-header{overflow-x:hidden;overflow-y:scroll;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.jsgrid-grid-body{overflow-x:auto;overflow-y:scroll;-webkit-overflow-scrolling:touch}.jsgrid-table{width:100%;table-layout:fixed;border-collapse:collapse;border-spacing:0}.jsgrid-cell{padding:.5em}.jsgrid-header-cell,.jsgrid-сell{box-sizing:border-box}.jsgrid-align-left{text-align:left}.jsgrid-align-center,.jsgrid-align-center input,.jsgrid-align-center select,.jsgrid-align-center textarea{text-align:center}.jsgrid-align-right,.jsgrid-align-right input,.jsgrid-align-right select,.jsgrid-align-right textarea{text-align:right}.jsgrid-header-cell{padding:.5em}.jsgrid-edit-row input,.jsgrid-edit-row select,.jsgrid-edit-row textarea,.jsgrid-filter-row input,.jsgrid-filter-row select,.jsgrid-filter-row textarea,.jsgrid-insert-row input,.jsgrid-insert-row select,.jsgrid-insert-row textarea{width:100%;padding:.3em .5em}.jsgrid-edit-row input[type=checkbox],.jsgrid-filter-row input[type=checkbox],.jsgrid-insert-row input[type=checkbox]{width:auto}.jsgrid-selected-row .jsgrid-cell{cursor:pointer}.jsgrid-nodata-row .jsgrid-cell{padding:.5em 0;text-align:center}.jsgrid-header-sort{cursor:pointer}.jsgrid-pager{padding:.5em 0}.jsgrid-pager-nav-button{padding:.2em .6em}.jsgrid-pager-nav-inactive-button{display:none;pointer-events:none}.jsgrid-pager-page{padding:.2em .6em}/*!
 * jQuery UI CSS Framework 1.13.0
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 *
 * http://api.jqueryui.com/category/theming/
 *
 * To view and modify this theme, visit http://jqueryui.com/themeroller/?bgShadowXPos=&bgOverlayXPos=&bgErrorXPos=&bgHighlightXPos=&bgContentXPos=&bgHeaderXPos=&bgActiveXPos=&bgHoverXPos=&bgDefaultXPos=&bgShadowYPos=&bgOverlayYPos=&bgErrorYPos=&bgHighlightYPos=&bgContentYPos=&bgHeaderYPos=&bgActiveYPos=&bgHoverYPos=&bgDefaultYPos=&bgShadowRepeat=&bgOverlayRepeat=&bgErrorRepeat=&bgHighlightRepeat=&bgContentRepeat=&bgHeaderRepeat=&bgActiveRepeat=&bgHoverRepeat=&bgDefaultRepeat=&iconsHover=url(%22images%2Fui-icons_555555_256x240.png%22)&iconsHighlight=url(%22images%2


 det)
    // o: occupied in refdet
    // e: electron (could be other particle, but typically electron, and this avoids confusion with the other meaning of "particle")
    // v: virtual (anything unoccupied in refdet; for better performance, can be restricted to only consist of particles in excited dets))
    // n: full orb list (o+v)

    // currently, "h" is handled the same as "o", but denoted separately below to clarify where we can reduce computation

    // quantities to compute are:
    // OD/D = tr( {a}^-1 . {S})
    // where {X} is subset of X corresponding to holes/particles (rows/cols) for a particular excited det D
    // a = Minv[h,e].M[e,v]
    // S = (Minv[h,e].B[e,v] - Minv[h,e].B[e,o].Minv[o,e].M[e,v]) ("M" from paper)

    // input mats:
    // Minv_Mv[o,v] = Minv[o,e].M[e,v]
    // Minv_B[h,n]  = Minv[h,e].B[e,n]

    /// NOTE: we only need Minv[o,e] for the third term in Minv.B.Minv.Mv; otherwise only need [h] for first dimension
    ///       can use Minv[h/o,e].B[e,o].Minv[o,e] if already available from elsewhere

    /// NOTE: gemm below is reversed from what is written in comments
    // c = a.b
    // c.T = (b.T) . (a.T)
    // a,b are row-major, but gemm assumes col-major layout, so reorder args
    // if we want output to be col-major, we can reverse inputs and use 't','t'

    // s[h,v] = -Minv_B[h,o].Minv_Mv[o,v]
    ValueMatrix s_hv(nocc, nvirt);
    BLAS::gemm('n', 'n', nvirt, nocc, nocc, -1.0, Minv_Mv[sid].data(), Minv_Mv[sid].cols(), Minv_B[sid].data(),
               Minv_B[sid].cols(), 0.0, s_hv.data(), s_hv.cols());

    // s[h,v] = Minv_B[h,v] - Minv_B[h,o].Minv_Mv[o,v]
    for (size_t i = 0; i < s_hv.rows(); i++)
      for (size_t j = 0; j < s_hv.cols(); j++)
        s_hv(i, j) += Minv_B[sid](i, j + virt_offset);

    // compute difference from ref here and add that term back later
    dvals_O[mdd_id][0] = 0.0;

    // dvals_O[idet] = tr(inv({Minv_Mv}).{s_hv})
    // build full mats for all required pairs, then select submatrices for each excited det
    // use exc index data to map into full arrays and create [k,k] tables

    // skip ref/ground state determinant
    size_t det_offset  = 1;
    size_t data_offset = 1;
    int max_exc_level  = multidiracdet_i.getMaxExcLevel();

    /// NOTE: this is only an OffloadVector because that's what is present in MultiDiracDeterminant
    const OffloadVector<int>& excdata = multidiracdet_i.getDetData();

    // update indices into list of determinants and excitation data
    auto update_offsets = [&](size_t exc_level) {
      det_offset += multidiracdet_i.getNdetPerExcLevel(exc_level);
      data_offset += multidiracdet_i.getNdetPerExcLevel(exc_level) * (3 * e


ndler(
            content=b"".join([REQWC_VERB, struct.pack(">B", seq)]),
            timeout=GeckoConfig.PROTOCOL_TIMEOUT_IN_SECONDS,
            on_retry_failed=GeckoPacketProtocolHandler.default_retry_failed_handler,
            **kwargs,
        )

    @staticmethod
    def get_response(
        _schedule: GeckoWatercareScheduleManager, **kwargs: Any
    ) -> GeckoGetWatercareScheduleListProtocolHandler:
        """Generate the response."""
        return GeckoGetWatercareScheduleListProtocolHandler(
            content=b"".join(
                [
                    WCREQ_VERB,
                    b"\x00\x00",
                    b"\x00\x01\x00\x00\x06\x00\x00\x00\x00",
                    b"\x02\x01\x00\x01\x05\x06\x00\x12\x00"
                    b"\x03\x01\x00\x00\x06\x06\x00\x12\x00"
                    b"\x04\x01\x00\x01\x05\x00\x00\x00\x00",
                ]
            ),
            **kwargs,
        )

    def can_handle(self, received_bytes: bytes, _sender: tuple) -> bool:
        """Can we handle the verb."""
        return received_bytes.startswith((REQWC_VERB, WCREQ_VERB))

    def handle(self, received_bytes: bytes, _sender: tuple) -> None:
        """Handle the verb."""
        remainder = received_bytes[5:]
        if received_bytes.startswith(REQWC_VERB):
            self._sequence = struct.unpack(">B", remainder)[0]
            return  # Stay in the handler list
        # Otherwise must be WCREQ
        self._should_remove_handler = True

class GeckoWatercareErrorHandler(GeckoPacketProtocolHandler):
    """Watercare error handler."""

    def can_handle(self, received_bytes: bytes, _sender: tuple) -> bool:
        """Can we handle this verb."""
        return received_bytes.startswith(WCERR_VERB)

    def handle(self, _received_bytes: bytes, _sender: tuple) -> None:
        """Handle this."""


.017.128.221zm9.158-.044.016.21.554.028c.597.027.525 0 1.184.481.011.006.06.194.11.41.095.425.128.459.493.547.288.072.293.133.072.78-.57 1.682-1.787 3.425-3.287 4.686-.642.542-.603.542-.559-.055.045-.614-.027-.935-.254-1.162-.26-.255-.526-.221-1.3.177-.51.26-.698.332-.897.332-.327 0-.631-.094-.825-.255l-.16-.127.393-.36c.42-.381.62-.73.525-.907-.16-.298-.453-.37-1.045-.26-.498.1-.864.105-1.013.028-.188-.105-.288-.376-.26-.741.028-.332.022-.343-.216-.62l-.238-.282v-1.765l.393-.271c.216-.144.559-.448.758-.675l.37-.404h5.17l.017.205zm-7.814 2.157v.758l-.276.282-.277.283.083.238c.1.282.105.52.022.674-.1.194-.293.222-.896.133a8.212 8.212 0 00-.764-.083c-.68 0-.703.482-.06 1.256.31.37.31.365-.084.564-.553.277-.902.25-1.389-.116-.41-.304-.647-.393-.968-.36-.21.017-.31.061-.443.2l-.177.177.006.686c0 .382-.011.691-.023.691-.06 0-1.023-.846-1.45-1.272-.442-.448-.995-1.123-.995-1.217 0-.044 1.516-.72 1.615-.72.034 0 .045.084.034.194-.011.105-.006.194.01.194.017 0 1.362-.747 2.989-1.66a204.276 204.276 0 013.005-1.66c.022 0 .038.343.038.758z"/></svg>';
  static const String roblox =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"><path fill="currentColor" d="m13.383 14.341-3.726-.958.959-3.726 3.726.959-.96 3.726zM4.913 0 0 19.088 19.088 24 24 4.912 4.912 0z"/></svg>';
  static const String robotframework =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"><path fill="currentColor" d="M4.957 10.225a3.405 3.405 0 013.4-3.403 3.406 3.406 0 013.402 3.403 1.235 1.235 0 11-2.469 0 .932.932 0 00-1.865 0 1.234 1.234 0 11-2.468 0m14.086 5.717c0 .684-.552 1.236-1.234 1.236H6.357a1.234 1.234 0 01-1.234-1.236c0-.684.553-1.237 1.234-1.237H17.81c.682 0 1.234.553 1.234 1.237m-5.35-5.025a1.235 1.235 0 01.333-


y()
  end
end

wildmenu_entries_view._select = function(self, selected_index, option)
  local is_next = self.selected_index < selected_index
  self.selected_index = selected_index
  self.active = (selected_index ~= 0)

  if self.active then
    local e = self:get_active_entry()
    if option.behavior == types.cmp.SelectBehavior.Insert then
      local cursor = api.get_cursor()
      local word = e:get_vim_item(self.offset).word
      vim.api.nvim_feedkeys(keymap.backspace(string.sub(api.get_current_line(), self.offset, cursor[2])) .. word, 'int', true)
    end
    vim.api.nvim_win_call(self.entries_win.win, function()
      local view = e:get_view(self.offset, self.entries_win:get_buffer())
      vim.api.nvim_win_set_cursor(0, { 1, self.offsets[selected_index] + (is_next and view.abbr.bytes or 0) })
      vim.cmd([[redraw!]]) -- Force refresh for vim.api.nvim_set_decoration_provider
    end)
  end

  self.event:emit('change')
end

wildmenu_entries_view._get_separator = function()
  local c = config.get()
  return (c and c.view and c.view.entries and c.view.entries.separator) or '  '
end

return wildmenu_entries_view


import cv2
import numpy as np

def draw(image, windows_name):
    clone = image.copy()
    cv2.imshow(f"Draw Line - {windows_name}", clone)
    points = []

    def click_event(event, x, y, flags, param):
        if event == cv2.EVENT_LBUTTONDOWN:
            points.append([x, y])
            cv2.circle(clone, (x, y), 4, (0, 0, 255), thickness=-1)
            cv2.imshow(f"Draw Line - {windows_name}", clone)

    cv2.setMouseCallback(f"Draw Line - {windows_name}", click_event)

    while True:
        if cv2.waitKey(1) & 0xFF == 13:  # 'Enter' key
            break

    cv2.destroyWindow(f"Draw Line - {windows_name}")

    if len(points) >= 2:
        if points[0] != points[-1]:
            points.append(points[0])
        line_coord = np.array(points, dtype=np.int32)
        print(f"Line coordinates saved for {windows_name}: {windows_name}")
        return line_coord, image

    else:
        print("Not enough points to form a line.")


trainerType: "Supporter",

}

export default card
import React from "react"

import { ActionType } from "./reducer"

export interface State {
  errors?: any
  register?: any
  handleSubmit?: any
  count: number
}

interface ContextProps {
  state: State
  dispatch: React.Dispatch<ActionType>
}
const context = React.createContext<ContextProps>({
  state: { count: 0 },
  dispatch: value => {},
})

export const useContext = () => {
  return React.useContext<ContextProps>(context)
}

export default context
/// <reference types="grecaptcha" />

export type RecaptchaScriptParams = {
  hl?: string;
};

declare let window: Window & {
  grecaptcha_onload: () => void;
  grecaptcha: ReCaptchaV2.ReCaptcha;
};

export const loadScript = (
  scriptParams: RecaptchaScriptParams,
): Promise<ReCaptchaV2.ReCaptcha> =>
  doesSdkExist()
    ? Promise.resolve(getSdk())
    : new Promise(resolve => {
        window.grecaptcha_onload = () => {
          resolve(getSdk());
        };
        window.document.body.append(createRecaptchaScriptElement(scriptParams));
      });

function doesSdkExist() {
  return Boolean(getSdk());
}

function getSdk() {
  return window.grecaptcha;
}

function createRecaptchaScriptElement(scriptParams: RecaptchaScriptParams) {
  const { hl } = scriptParams;
  const script = window.document.createElement('script');
  script.defer = true;
  script.async = true;
  const url = new URL('https://www.google.com/recaptcha/api.js');
  if (hl) {
    url.searchParams.append('hl', hl);
  }
  url.searchParams.append('onload', 'grecaptcha_onload');
  url.searchParams.append('render', 'explicit');
  script.src = url.toString();
  return script;
}
import { rand } from "../../func/num";
export class Bullet {
    static className() {
        return "bullet";
    };
    public stopped = false; //是否停止动画
    public startX = rand(window.innerWidth + 10, window.innerWidth * 1.25); //初始坐标的X
    public startY = rand(80, window.innerHeight - 80); //初始坐标的Y
    public stepDecrease = 2; //一帧修改的幅度
    public elm: HTMLElement;
    protected animeId;
    getRandStyleClass() {
        let randStyles = ["red", "cyan", "green", "blue"],
            randIndex = rand(randStyles.length);
        return randStyles[randIndex] + "-bullet";
    }
    constructor(material) {
        this.build(material);
    }
    private setClass(elm) {
        let cls = Bullet.className();
        cls += " " + this.getRandStyleClass();
        elm.setAttribute("class", cls);
    }
    private parseElm(elm) {
        this.setClass(elm);
        let bullet = this;
        $(elm).hover(function () {
            bullet.whenMouseOn();
        }, function () {
            bullet.whenMouseOut();
        });
    }
    whenMouseOn() {
        $(this.elm).addClass("on-hover");
        this.stopMove();
    }
    whenMouseOut() {
        let bullet = this;
        bullet.stopped = false;
        $(bullet.elm).removeClass("on-hover");
        bullet.move();
    }
    remove() {
        this.stopMove();
        this.elm.remove();
    }
    move() {
        if (this.stopped) {
            return;
        }
        let offsetLeft = this.elm.offsetLeft,
            width = this.elm.offsetWidth;
        if (offsetLeft < -width) {
            this.remove();
        } e


() {
  &:active,
  &:focus {
    clip: auto;
    height: auto;
    margin: 0;
    overflow: visible;
    position: static;
    width: auto;
  }
}
/*!
 * Bootstrap Grid v5.1.3 (https://getbootstrap.com/)
 * Copyright 2011-2021 The Bootstrap Authors
 * Copyright 2011-2021 Twitter, Inc.
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 */:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-color-rgb:33,37,41;--bs-body-bg-rgb:255,255,255;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-bg:#fff}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{width:100%;padding-left:var(--bs-gutter-x,.75rem);padding-right:var(--bs-gutter-x,.75rem);margin-left:auto;margin-right:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.co


viewModel.onRecordingPaused()
        viewModel.setCurrentTranscript(speechToEditText.text.toString().trim())
        recordingJob.cancel()
      }
      endButton.setOnClickListener {
        viewModel.onRecordingStopped()
        viewModel.setCurrentTranscript(speechToEditText.text.toString().trim())
        if (recordingJob.isActive) recordingJob.cancel()
        processTranscriptRecorded()
      }
      stopRecording = {
        viewModel.onRecordingStopped()
        if (recordingJob.isActive) recordingJob.cancel()
      }
    } else {
      if (
        ContextCompat.checkSelfPermission(
          requireContext(),
          Manifest.permission.RECORD_AUDIO,
        ) != PackageManager.PERMISSION_GRANTED
      ) {
        requireContext().showToast("Permission to record audio is not granted", Toast.LENGTH_SHORT)
      } else {
        requireContext()
          .showToast(
            getString(R.string.record_audio_error),
            Toast.LENGTH_SHORT,
          )
      }
      stopRecording?.invoke()
    }
  }

  private fun resumeRecording() {
    if (
      ContextCompat.checkSelfPermission(
        requireContext(),
        Manifest.permission.RECORD_AUDIO,
      ) != PackageManager.PERMISSION_GRANTED
    ) {
      requireContext()
        .showToast(
          getString(R.string.record_audio_denied),
          Toast.LENGTH_SHORT,
        )
      return
    }

    val audioRecord =
      AudioRecord(
        MIC_SOURCE,
        SAMPLE_RATE,
        MIC_CHANNELS,
        MIC_CHANNEL_ENCODING,
        BUFFER_SIZE,
      )

    viewModel.setCurrentTranscript(speechToEditText.text.toString().trim())

    val recordingJob = viewModel.resumeRecording(audioRecord)
    pauseButton.setOnClickListener {
      viewModel.onRecordingPaused()
      viewModel.setCurrentTranscript(speechToEditText.text.toString().trim())
      recordingJob.cancel()
    }
    endButton.setOnClickListener {
      viewModel.onRecordingStopped()
      viewModel.setCurrentTranscript(speechToEditText.text.toString().trim())
      if (recordingJob.isActive) recordingJob.cancel()
      processTranscriptRecorded()
    }
    stopRecording = {
      viewModel.onRecordingStopped()
      if (recordingJob.isActive) recordingJob.cancel()
    }
  }

  private fun processTranscriptRecorded() {
    speechToEditText.text
      .toString()
      .takeIf { it.isNotBlank() }
      ?.let {
        viewModel.processTranscriptQuestionnaireResponse(
          requireContext(),
          parentViewModel.currentQuestionnaire,
          it,
          { qr -> parentViewModel.showQuestionnaireResponse(qr) },
          { e -> requireContext().showToast(e.message.toString()) },
        )
      }
  }

  companion object {
    private const val MIC_CHANNELS = AudioFormat.CHANNEL_IN_MONO
    private const val MIC_CHANNEL_ENCODING = AudioFormat.ENCODING_PCM_16BIT
    private const val MIC_SOURCE = MediaRecorder.AudioSource.MIC
    private const val SAMPLE_RATE = 16000
    private const val CHUNK_SIZE_SAMPLES = 1280
    private const val BYTES_PER_SAMPLE = 2
    private val BUFFER_SIZE =
      AudioRecord.getMinBufferSize(
          SAMPLE_RATE,
          MIC_CHANNELS,
          MIC_CHANNEL_ENCODING,
        )
        .coerceAtLeast(2 * CHUNK_SIZE_SAMPLES * BYTES_PER_SAMPLE)
  }
}
/*
 * Copyright 2021-2024 Ona Systems, Inc
 *
 * 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,


# Copyright 2025 The Magenta Authors.
#
# 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.

"""Drums RNN model."""

from magenta.contrib import training as contrib_training
from magenta.models.shared import events_rnn_model
import note_seq
from note_seq.protobuf import generator_pb2

class DrumsRnnModel(events_rnn_model.EventSequenceRnnModel):
  """Class for RNN drum track generation models."""

  def generate_drum_track(self, num_steps, primer_drums, temperature=1.0,
                          beam_size=1, branch_factor=1, steps_per_iteration=1):
    """Generate a drum track from a primer drum track.

    Args:
      num_steps: The integer length in steps of the final drum track, after
          generation. Includes the primer.
      primer_drums: The primer drum track, a DrumTrack object.
      temperature: A float specifying how much to divide the logits by
         before computing the softmax. Greater than 1.0 makes drum tracks more
         random, less than 1.0 makes drum tracks less random.
      beam_size: An integer, beam size to use when generating drum tracks via
          beam search.
      branch_factor: An integer, beam search branch factor to use.
      steps_per_iteration: An integer, number of steps to take per beam search
          iteration.

    Returns:
      The generated DrumTrack object (which begins with the provided primer drum
          track).
    """
    return self._generate_events(num_steps, primer_drums, temperature,
                                 beam_size, branch_factor, steps_per_iteration)

  def drum_track_log_likelihood(self, drums):
    """Evaluate the log likelihood of a drum track under the model.

    Args:
      drums: The DrumTrack object for which to evaluate the log likelihood.

    Returns:
      The log likelihood of `drums` under this model.
    """
    return self._evaluate_log_likelihood([drums])[0]

# Default configurations.
default_configs = {
    'one_drum':
        events_rnn_model.EventSequenceRnnConfig(
            generator_pb2.GeneratorDetails(
                id='one_drum', description='Drums RNN with 2-state encoding.'),
            note_seq.OneHotEventSequenceEncoderDecoder(
                note_seq.MultiDrumOneHotEncoding(
                    [[39] +  # use hand clap as default when decoding
                     list(range(note_seq.MIN_MIDI_PITCH, 39)) +
                     list(range(39, note_seq.MAX_MIDI_PITCH + 1))])),
            contrib_training.HParams(
                batch_size=128,
                rnn_layer_sizes=[128, 128],
                dropout_keep_prob=0.5,
                clip_norm=5,
                learning_rate=0.001),
            steps_per_quarter=2),
    'drum_kit':
        events_rnn_model.EventSequenceRnnConfig(
            generator_pb2.GeneratorDetails(
                id='drum_kit',
                description='Drums RNN with multiple drums and binary counters.'
            ),
            note_seq.LookbackEventSequenceEncoderDecoder(
                note_seq.MultiDrumOneHotEncoding(),
                lookback_distances=[],
                binary_counter_bits=6),
            contrib_training.HParams(
                batch_size=128,
                rnn_layer_sizes=[256, 256, 256],
                dropout_keep_prob=0.5,
                attn_length=32,
                clip_norm=3,
                learning_rate=0.001))
}


内に存在しない場合には、
//	PhysicalFile::ConstValue::UndefinedAreaIDを返す。
//
//	※ 空き領域管理機能付き物理ファイルのみ利用可能。
//	　 （空き領域管理機能付き物理ファイル記述子クラスでのみ
//	　 　この関数をオーバーライドしている。）
//
//	ARGUMENTS
//	const PhysicalFile::Content&	Content_
//		関数PhysicalFile::Page::fixで得られる
//		物理ページのバッファリング内容への参照
//
//	RETURN
//	PhysicalFile::AreaID
//		物理エリア識別子順での最後の使用中物理エリアの識別子
//
//	EXCEPTIONS
//	なし
//
// virtual
AreaID
Page::getLastAreaID(const Content&	Content_) const
{
	throw Exception::NotSupported(moduleName, srcFile, __LINE__);
}

//
//	FUNCTION public
//	PhysicalFile::Page::getLastAreaID --
//		最後の使用中物理エリアの識別子を返す
//
//	NOTES
//	物理ページ内で（利用者が確保し、）使用中の物理エリアのうち、
//	物理エリア識別子順での最終物理エリアの識別子を返す。
//	（物理的に最後の物理エリアの識別子ではない。）
//	該当する物理エリアが物理ページ内に存在しない場合には、
//	PhysicalFile::ConstValue::UndefinedAreaIDを返す。
//
//	※ 空き領域管理機能付き物理ファイルのみ利用可能。
//	　 （空き領域管理機能付き物理ファイル記述子クラスでのみ
//	　 　この関数をオーバーライドしている。）
//
//	ARGUMENTS
//	const Trans::Transaction&	Transaction_
//		トランザクション記述子への参照
//
//	RETURN
//	PhysicalFile::AreaID
//		物理エリア識別子順での最後の使用中物理エリアの識別子
//
//	EXCEPTIONS
//	なし
//
// virtual
AreaID
Page::getLastAreaID(const Trans::Transaction&	Transaction_) const
{
	throw Exception::NotSupported(moduleName, srcFile, __LINE__);
}

//
//	FUNCTION public
//	PhysicalFile::Page::getNextAreaID --
//		次の使用中物理エリアの識別子を返す
//
//	NOTES
//	引数AreaID_で指定される物理エリアの、
//	物理エリア識別子順での次の使用中物理エリアの識別子を返す。
//	該当する物理エリアが物理ページ内に存在しない場合には、
//	PhysicalFile::ConstValue::UndefinedAreaIDを返す。
//
//	※ 空き領域管理機能付き物理ファイルのみ利用可能。
//	　 （空き領域管理機能付き物理ファイル記述子クラスでのみ
//	　 　この関数をオーバーライドしている。）
//
//	ARGUMENTS
//	const PhysicalFile::Content&	Content_
//


	}

	var tables = make(map[string]TestTable)
	for _, test := range group.tests {
		if _, exists := r.tests[test.Name]; exists {
			return fmt.Errorf("test %s already exists", test.Name)
		}

		r.tests[test.Name] = test

		if test.Table.TableName != "" {
			tables[test.Table.TableName] = test.Table
		}
	}

	for name, table := range tables {
		if _, exists := r.tables[name]; exists {
			return fmt.Errorf("table %s already exists", name)
		}
		r.tables[name] = table
	}

	r.groups[group.Name] = group

	return nil
}

// GetTestGroups returns all registered test groups
func (r *testGroupRegistry) GetTestGroups() []*TestGroup {
	r.mu.Lock()
	defer r.mu.Unlock()

	var groups []*TestGroup
	for _, group := range r.groups {
		groups = append(groups, group)
	}

	return groups
}

// GetTestByName returns a test by its name
func (r *testGroupRegistry) GetTestByName(testName string) *TestDesc {
	r.mu.Lock()
	defer r.mu.Unlock()

	if test, exists := r.tests[testName]; exists {
		return test
	}
	return nil
}

// GetTables returns all registered tables
func (r *testGroupRegistry) GetTables() map[string]TestTable {
	r.mu.Lock()
	defer r.mu.Unlock()

	tables := make(map[string]TestTable)
	for name, table := range r.tables {
		tables[name] = table
	}
	return tables
}

// GetTableByName returns a table by its name
func (r *testGroupRegistry) GetTableByName(tableName string) TestTable {
	r.mu.Lock()
	defer r.mu.Unlock()

	if table, exists := r.tables[tableName]; exists {
		return table
	}
	return TestTable{}
}

var (
	// testRegistry is the global test registry
	testRegistry TestGroupRegistry = NewTestGroupRegistry()
)

// GetTests returns all registered test groups and tests
func GetTests() ([]*TestGroup, map[string]*TestDesc) {
	groups := testRegistry.GetTestGroups()
	tests := make(map[string]*TestDesc)

	for _, group := range groups {
		for name, test := range group.tests {
			tests[name] = test
		}
	}

	return groups, tests
}

// RegisterTestGroup registers a new test group globally
func RegisterTestGroup(testGroup *TestGroup) error {
	return testRegistry.RegisterTestGroup(testGroup)
}

func executeAllTests(b *benchmark.Benchmark, testOpts *TestOpts) {
	if testOpts.BenchOpts.Chunk > testOpts.BenchOpts.Limit {
		b.Exit("--chunk option must not be less then --limit")
	}

	if testOpts.BenchOpts.Chunk < MinChunk {
		b.Exit("--chunk option must not be less then %d", MinChunk)
	}

	// Initialize Randomizer before CleanupTables
	b.Randomizer = benchmark.NewRandomizer(b.CommonOpts.RandSeed, b.CommonOpts.Workers)

	// Initialize DBTestData if not already initialized
	if b.Vault == nil {
		b.Vault = &DBTestData{
			Scores: make(map[string][]benchmark.Score),
		}
	}

	testData := b.Vault.(*DBTestData)
	if testData.Scores == nil {
		testData.Scores = make(map[string][]benchmark.Score)
	}

	// Initialize scores for each category
	for _, category := range TestCategories {


p, 0);
    await battle.activateSvtSkill(1, 1);
    expect(kazura2.np, 15000);

    expect(kazura1.logicalClassId, SvtClass.alterego.value);
    final traitIdsBefore1 = kazura1.getTraits();
    expect(traitIdsBefore1.contains(ConstData.classInfo[SvtClass.alterego.value]!.individuality), true);
    expect(traitIdsBefore1.contains(ConstData.classInfo[SvtClass.saber.value]!.individuality), false);
    for (final relationTraitId in ConstData.classInfo[SvtClass.saber.value]!.relationSvtIndividuality) {
      expect(traitIdsBefore1.contains(relationTraitId), false);
    }
    await battle.activateSvtSkill(0, 2);
    expect(kazura1.logicalClassId, SvtClass.saber.value);
    final traitIdsAfter1 = kazura1.getTraits();
    expect(traitIdsAfter1.contains(ConstData.classInfo[SvtClass.alterego.value]!.individuality), false);
    expect(traitIdsAfter1.contains(ConstData.classInfo[SvtClass.saber.value]!.individuality), true);
    for (final relationTraitId in ConstData.classInfo[SvtClass.saber.value]!.relationSvtIndividuality) {
      expect(traitIdsAfter1.contains(relationTraitId), true);
    }

    battle.enemyTargetIndex = 1;
    expect(kazura2.logicalClassId, SvtClass.alterego.value);
    final traitIdsBefore2 = kazura2.getTraits();
    expect(traitIdsBefore2.contains(ConstData.classInfo[SvtClass.alterego.value]!.individuality), true);
    expect(traitIdsBefore2.contains(ConstData.classInfo[SvtClass.caster.value]!.individuality), false);
    for (final relationTraitId in ConstData.classInfo[SvtClass.caster.value]!.relationSvtIndividuality) {
      expect(traitIdsBefore2.contains(relationTraitId), false);
    }
    await battle.activateSvtSkill(1, 2);
    expect(kazura2.logicalClassId, SvtClass.caster.value);
    final traitIdsAfter2 = kazura2.getTraits();
    expect(traitIdsAfter2.contains(ConstData.classInfo[SvtClass.alterego.value]!.individuality), false);
    expect(traitIdsAfter2.contains(ConstData.classInfo[SvtClass.caster.value]!.individuality), true);
    for (final relationTraitId in ConstData.classInfo[SvtClass.caster.value]!.relationSvtIndividuality) {
      expect(traitIdsAfter2.contains(relationTraitId), true);
    }

    battle.enemyTargetIndex = 0;
    final enemy = battle.onFieldEnemies[0]!;

    // test Kazura's passive
    final previousHp1 = enemy.hp;
    await battle.playerTurn([CombatAction(kazura1, kazura1.getCards()[0])]);
    expect(previousHp1 - enemy.hp, 4780);

    final previousHp2 = enemy.hp;
    await battle.playerTurn([CombatAction(kazura2, kazura2.getCards()[0])]);
    expect(previousHp2 - enemy.hp, 2458);

    // test start of turn effects
    await battle.activateSvtSkill(0, 0);
    await battle.activateSvtSkill(1, 0);
    await battle.skipTurn();
    final previousHp3 = enemy.hp;
    await battle.playerTurn([CombatAction(kazura1, kazura1.getCards()[0])]);
    expect(previousHp3 - enemy.hp, 1821);
  });


erIP
	}
	updateService.Spec = new.Spec
	updateService.Spec.ClusterIP = clusterIP
	updateService.Labels = new.Labels
	updateService.Annotations = new.Annotations
	return persistUpdate(updateService, clientSet)
}

func persistUpdate(service *corev1.Service, clientSet kubernetes.Interface) error {
	var err error
	for i := 0; i < clientRetryCount; i++ {
		_, err = clientSet.CoreV1().Services(service.Namespace).Update(context.Background(), service, metav1.UpdateOptions{})
		if err == nil {
			return nil
		}
		// If the object no longer exists, we don't want to recreate it. Just bail
		// out so that we can process the delete, which we should soon be receiving
		// if we haven't already.
		if errors.IsNotFound(err) {
			logrus.Infof("Not persisting update to service '%s/%s' that no longer exists: %v",
				service.Namespace, service.Name, err)
			return nil
		}
		// TODO: Try to resolve the conflict if the change was unrelated to load
		// balancer status. For now, just pass it up the stack.
		if errors.IsConflict(err) {
			return fmt.Errorf("not persisting update to service '%s/%s' that has been changed since we received it: %v",
				service.Namespace, service.Name, err)
		}
		logrus.Warningf("Failed to update service '%s/%s' %s", service.Namespace, service.Name, err)
		time.Sleep(clientRetryInterval)
	}
	return err
}

func ensureIngress(ingress *networkingv1.Ingress, clientSet kubernetes.Interface) {
	_, err := clientSet.NetworkingV1().Ingresses(ingress.Namespace).Update(context.Background(), ingress, metav1.UpdateOptions{})
	if err != nil {
		if k8sErrors.IsNotFound(err) {
			_, err := clientSet.NetworkingV1().Ingresses(ingress.Namespace).Create(context.Background(), ingress, metav1.CreateOptions{})
			if err != nil && !k8sErrors.IsAlreadyExists(err) {
				logrus.Errorf("error creating ingress %+v: %v", ingress, err)
			}
			return
		}
		logrus.Warningf("error updating ingress %+v: %v", ingress, err)
	}
}

func ensureBetaIngress(ingress *betav1.Ingress, clientSet kubernetes.Interface) {
	_, err := clientSet.NetworkingV1beta1().Ingresses(ingress.Namespace).Update(context.Background(), ingress, metav1.UpdateOptions{})
	if err != nil {
		if k8sErrors.IsNotFound(err) {
			_, err := clientSet.NetworkingV1beta1().Ingresses(ingress.Namespace).Create(context.Background(), ingress, metav1.CreateOptions{})
			if err != nil && !k8sErrors.IsAlreadyExists(err) {
				logrus.Errorf("error creating ingress %+v: %v", ingress, err)
			}
			return
		}
		logrus.Warningf("error updating ingress %+v: %v", ingress, err)
	}
}

func ensureSecret(secret *corev1.Secret, clientSet kubernetes.Interface) {
	_, err := clientSet.CoreV1().Secrets(secret.Namespace).Update(context.Background(), secret, metav1.UpdateOptions{})

	if err != nil {
		if k8sErrors.IsNotFound(err) {
			_, err := clientSet.CoreV1().Secrets(secret.Namespace).Create(context.Background(), secret, metav1.CreateOptions{})
			if err != nil && !k8sErrors.IsAlreadyExists(err) {
				logrus.Warningf("error creating secret %+v: %v", secret, err)
			}
			return
		}
		logrus.


 *BIO_new_fd(int fd, int close_flag) {
  BIO *ret = BIO_new(BIO_s_fd());
  if (ret == NULL) {
    return NULL;
  }
  BIO_set_fd(ret, fd, close_flag);
  return ret;
}

static int fd_new(BIO *bio) {
  // num is used to store the file descriptor.
  bio->num = -1;
  return 1;
}

static int fd_free(BIO *bio) {
  if (bio == NULL) {
    return 0;
  }

  if (bio->shutdown) {
    if (bio->init) {
      BORINGSSL_CLOSE(bio->num);
    }
    bio->init = 0;
  }
  return 1;
}

static int fd_read(BIO *b, char *out, int outl) {
  int ret = 0;

  ret = BORINGSSL_READ(b->num, out, outl);
  BIO_clear_retry_flags(b);
  if (ret <= 0) {
    if (bio_fd_should_retry(ret)) {
      BIO_set_retry_read(b);
    }
  }

  return ret;
}

static int fd_write(BIO *b, const char *in, int inl) {
  int ret = BORINGSSL_WRITE(b->num, in, inl);
  BIO_clear_retry_flags(b);
  if (ret <= 0) {
    if (bio_fd_should_retry(ret)) {
      BIO_set_retry_write(b);
    }
  }

  return ret;
}

static long fd_ctrl(BIO *b, int cmd, long num, void *ptr) {
  long ret = 1;
  int *ip;

  switch (cmd) {
    case BIO_CTRL_RESET:
      num = 0;
      OPENSSL_FALLTHROUGH;
    case BIO_C_FILE_SEEK:
      ret = 0;
      if (b->init) {
        ret = (long)BORINGSSL_LSEEK(b->num, num, SEEK_SET);
      }
      break;
    case BIO_C_FILE_TELL:
    case BIO_CTRL_INFO:
      ret = 0;
      if (b->init) {
        ret = (long)BORINGSSL_LSEEK(b->num, 0, SEEK_CUR);
      }
      break;
    case BIO_C_SET_FD:
      fd_free(b);
      b->num = *((int *)ptr);
      b->shutdown = (int)num;
      b->init = 1;
      break;
    case BIO_C_GET_FD:
      if (b->init) {
        ip = (int *)ptr;
        if (ip != NULL) {
          *ip = b->num;
        }
        return b->num;
      } else {
        ret = -1;
      }
      break;
    case BIO_CTRL_GET_CLOSE:
      ret = b->shutdown;
      break;
    case BIO_CTRL_SET_CLOSE:
      b->shutdown = (int)num;
      break;
    case BIO_CTRL_PENDING:
    case BIO_CTRL_WPENDING:
      ret = 0;
      break;
    case BIO_CTRL_FLUSH:
      ret = 1;
      break;
    default:
      ret = 0;
      break;
  }

  return ret;
}

static int fd_gets(BIO *bp, char *buf, int size) {
  char *ptr = buf;
  char *end = buf + size - 1;

  if (size <= 0) {
    return 0;
  }

  while (ptr < end && fd_read(bp, ptr, 1) > 0 && ptr[0] != '\n') {
    ptr++;
  }

  ptr[0] = '\0';

  return ptr - buf;
}

static const BIO_METHOD methods_fdp = {
    BIO_TYPE_FD, "file descriptor", fd_write, fd_read, NULL /* puts */,
    fd_gets,     fd_ctrl,           fd_new,   fd_free, NULL /* callback_ctrl */,
};

const BIO_METHOD *BIO_s_fd(void) { return &methods_fdp; }

int BIO_set_fd(BIO *bio, int fd, int close_flag) {
  return BIO_int_ctrl(bio, BIO_C_SET_FD, close_flag, fd);
}

int BIO_get_fd(BIO *bio, int *out_fd) {
  return BIO_ctrl(bio, BIO_C_GET_FD, 0, (char *) out_fd);
}


**イメージを埋め込む** (JSON & HTML のみ): 配信者のスタンプとバッジをダウンロードし、ダウンロードしたチャット内に保存します。ファイルサイズはかなり大きくなります。

**サードパーティスタンプ** (JSON & HTML のみ): 指定されたサードパーティプロバイダからスタンプをダウンロードし、チャット内に保存します。配信者が指定されたプロバイダに登録していない場合は、スキップされます。

**Download Threads**: 実行される並列ダウンロードスレッドの数。インターネット接続によっては、Twitch サーバーが1つ以上のチャットダウンロードスレッドの使用を拒否する場合があります。

**ダウンロード**: ダウンロードジョブを開始します。代わりにドロップダウンメニューを開くと、`ダウンロードをキューに追加`オプションで [タスクキュー](#タスクキュー)に送ることができます。どちらの方法でも、現在のダウンロード設定が使用されます。

### チャットの更新

ダウンロードした JSON チャットの埋め込みスタンプ、バッジ、ビッツ、トリミングを更新したり、JSON チャットを別のフォーマットに変換したりできます。

![Figure 4.1](Images/chatupdateExample.png)

図 4.1*

はじめに、**参照**ボタンをクリックし、以前にダウンロードした JSON チャットファイルを選択します。すると、更新オプションのロックが解除され、ジョブをカスタマイズすることができます。チャットの元のビデオがまだ存在する場合、その情報は情報セクションに読み込まれます。

**ダウンロードフォーマット**: ダウンロードしたチャットが保存されるファイルの形式。

- `JSON` はチャットの更新やレンダリングに使用できるチャットデータを出力します。
- `Text` はアーカイブを見ながらチャットを読むのに最適な生のテキストを出力します。
- `HTML` は Twitch ウェブサイトの外見を再現したローカルウェブページを出力します。

**圧縮** (JSON のみ): GZip 標準圧縮を使用して出力 JSON を圧縮し、ファイルサイズを 40~90 % 削減できます。[チャットの更新](#チャットの更新) を使用せずにチャットファイルの値を手動で変更する場合は推奨されません。

**タイムスタンプフォーマット** (Text のみ): テキストダウンロードのタイムスタンプ形式を変更する。 `UTC`（協定世界時） 、動画の開始位置からの相対的な時間の `Relative`、または `None` から選ぶ。

**トリミング**: 更新されたチャットをトリミングする開始時刻と終了時刻を設定します。フォーマットは左から \[時間\] \[分\] \[秒\]。チャットのトリミングを拡大すると、つまり現在の開始時刻よりも早く、現在の終了時刻よりも遅く


ateHeure.toIso8601String(),
      'lieu': lieu,
      'type_course': typeCourse,
      'distance': distance,
      'terrain': terrain,
      'num_course': numCourse,
      'libelle': libelle,
      'corde': corde,
      'discipline': discipline,
      'specialite': specialite,
    };
  }
}import 'package:flutter/material.dart';

class AppColors {
  // Couleurs principales
  static const Color primary = Color(0xFF276749); // Vert PMU
  static const Color secondary = Color(0xFFE6B323); // Or/Jaune PMU
  static const Color accent = Color(0xFF2C5282); // Bleu accentuation

  // Couleurs d'état
  static const Color success = Color(0xFF38A169);
  static const Color warning = Color(0xFFD69E2E);
  static const Color error = Color(0xFFE53E3E);
  static const Color info = Color(0xFF4299E1);

  // Nuances de gris
  static const Color background = Color(0xFFF7FAFC);
  static const Color surface = Colors.white;
  static const Color divider = Color(0xFFE2E8F0);

  // Texte
  static const Color textPrimary = Color(0xFF1A202C);
  static const Color textSecondary = Color(0xFF4A5568);
  static const Color textDisabled = Color(0xFFA0AEC0);
}

class AppTextStyles {
  static const TextStyle heading1 = TextStyle(
    fontSize: 28,
    fontWeight: FontWeight.bold,
    color: AppColors.textPrimary,
  );

  static const TextStyle heading2 = TextStyle(
    fontSize: 24,
    fontWeight: FontWeight.bold,
    color: AppColors.textPrimary,
  );

  static const TextStyle heading3 = TextStyle(
    fontSize: 20,
    fontWeight: FontWeight.bold,
    color: AppColors.textPrimary,
  );

  static const TextStyle subtitle = TextStyle(
    fontSize: 18,
    fontWeight: FontWeight.w600,
    color: AppColors.textPrimary,
  );

  static const TextStyle body = TextStyle(
    fontSize: 16,
    color: AppColors.textPrimary,
  );

  static const TextStyle bodySmall = TextStyle(
    fontSize: 14,
    color: AppColors.textSecondary,
  );

  static const TextStyle button = TextStyle(
    fontSize: 16,
    fontWeight: FontWeight.w600,
    color: Colors.white,
  );
}

class AppTheme {
  static ThemeData get lightTheme {
    return ThemeData(
      primaryColor: AppColors.primary,
      primarySwatch: MaterialColor(
        AppColors.primary.value,
        const <int, Color>{
          50: Color(0xFFEBF4EF),
          100: Color(0xFFCDE3D7),
          200: Color(0xFFADD0BD),
          300: Color(0xFF8DBDA3),
          400: Color(0xFF75AD8F),
          500: Color(0xFF5D9E7B),
          600: Color(0xFF559673),
          700: Color(0xFF4A8C68),
          800: Color(0xFF40825E),
          900: Color(0xFF276749),
        },
      ),
      scaffoldBackgroundColor: AppColors.background,
      colorScheme: ColorScheme.light(
        primary: AppColors.primary,
        secondary: AppColors.secondary,
        surface: AppColors.surface,
        background: AppColors.background,
        error: AppColors.error,
      ),
      textTheme: TextTheme(
        headlineLarge: AppTextStyles.heading1,
        headlineMedium: AppTextStyles.heading2,
        headlineSmall: AppTextStyles.heading3


火焰石",
[13702] = "末日草",
[13703] = "科多獸骨",
[13704] = "骷髏鑰匙",
[13724] = "可口的魔法點心",
[13725] = "卡斯迪諾夫的恐懼之袋",
[13752] = "禁錮靈魂的遺物",
[13754] = "新鮮的光滑大魚",
[13755] = "冬魷魚",
[13756] = "新鮮的夏日鱸魚",
[13757] = "電鰻",
[13758] = "新鮮的紅鰓魚",
[13759] = "新鮮的夜鱗鯛魚",
[13760] = "新鮮的陽鱗鮭魚",
[13761] = "冰凍的龍蛋",
[13810] = "受祝福的太陽果",
[13811] = "黎明項鍊",
[13812] = "黎明之戒",
[13813] = "受祝福的太陽果汁",
[13815] = "一些符文",
[13816] = "優質長劍",
[13817] = "錐形巨劍",
[13818] = "鋸齒斧",
[13819] = "平衡戰斧",
[13820] = "敲錘",
[13821] = "笨重的木槌",
[13822] = "尖刺匕首",
[13823] = "堅硬的戰爭法杖",
[13824] = "彎曲的長弓",
[13825] = "基礎步槍",
[13842] = "秋/冬之晨",
[13843] = "秋/冬之午",
[13844] = "秋/冬之傍晚",
[13845] = "秋/冬之夜",
[13846] = "春/夏之晨",
[13847] = "春/夏之午",
[13848] = "春/夏之傍晚",
[13849] = "春/夏之夜",
[13850] = "海格納的彈藥",
[13851] = "辣狼排",
[13852] = "大十字軍的命令",
[13853] = "食腐蟲肉塊",
[13856] = "符文布腰帶",
[13857] = "符文布外套",
[13858] = "符文布袍",
[13860] = "符文布披風",
[13863] = "符文布手套",
[13864] = "符文布靴",
[13865] = "符文布便褲",
[13866] = "符文布頭帶",
[13867] = "符文布護肩",
[13868] = "霜紋長袍",
[13869] = "霜紋外套",
[13870] = "霜紋手套",
[13871] = "霜紋便褲",
[13872] = "一捆木柴",
[13873] = "觀察室鑰匙",


ldr     r0, [r4, #0x14]
	bl      Function_200d3b8
	cmp     r0, #0x0
	bne     branch_21d367c
	ldr     r0, [r4, #0x0]
	add     sp, #0x10
	.hword  0x1c40 @ add r0, r0, #0x1
	str     r0, [r4, #0x0]
	pop     {r3-r5,pc}
@ 0x21d366a

.thumb
branch_21d366a: @ 21d366a :thumb
	ldr     r0, [r4, #0x14]
	bl      Function_200d0f4
	mov     r0, r4
	bl      free
	mov     r0, r5
	bl      Call_RemoveTaskFromTaskList
.thumb
branch_21d367c: @ 21d367c :thumb
	add     sp, #0x10
	pop     {r3-r5,pc}
@ 0x21d3680

.word 0x21d59e4 @ 0x21d3680
.thumb
Function_21d3684: @ 21d3684 :thumb
	push    {r4,r5,lr}
	add     sp, #-0x34
	mov     r5, r0
	mov     r0, #0x5f
	mov     r1, #0x18
	bl      malloc2
	mov     r4, r0
	mov     r2, r4
	mov     r1, #0x18
	mov     r0, #0x0
.thumb
branch_21d369a: @ 21d369a :thumb
	strb    r0, [r2, #0x0]
	.hword  0x1c52 @ add r2, r2, #0x1
	.hword  0x1e49 @ sub r1, r1, #0x1
	bne     branch_21d369a
	mov     r1, #0x80
	add     r0, sp, #0x0
	strh    r1, [r0, #0x0]
	mov     r1, #0x64
	strh    r1, [r0, #0x2]
	mov     r1, #0x0
	strh    r1, [r0, #0x4]
	strh    r1, [r0, #0x6]
	mov     r0, #0x1
	str     r0, [sp, #0x10]
	mov     r0, #0x4
	str     r0, [sp, #0x14]
	mov     r0, #0x5
	str     r0, [sp, #0x18]
	mov     r0, #0x6
	str     r0, [sp, #0x1c]
	mov     r0, #0x7
	str     r0, [sp, #0x20]
	sub     r0, #0x8
	str     r1, [sp, #0x8]
	str     r1, [sp, #0xc]
	str     r1, [sp, #0x2c]
	str     r1, [sp, #0x30]
	str     r0, [sp, #0x24]
	str     r0, [sp, #0x28]
	mov     r0, r5
	add     r1, sp, #0x0
	bl      Function_21d24e0
	str     r0, [r4, #0x14]
	bl      Function_200d330
	ldr     r0, [pc, #0x18] @ 0x21d36fc, (=0x21d3601)
	mov     r1, r4
	mov     r2, #0x0
	str     r5, [r4, #0x10]
	bl      AddTaskToTaskList1
	mov     r4, r0
	bne     branch_21d36f


b_plg_error(ctx->ins, "invalid partition number");
         }
         ctx->partition = part;
    }
    else {
        ctx->partition = -1;
    }

    /* Kafka: topic */
    tmp = flb_output_get_property("topic", ins);
    if (tmp) {
        ctx->topic = flb_strdup(tmp);
    }
    else {
        ctx->topic = flb_strdup("fluent-bit");
    }

    /* Set partition based on topic */
    tmp = flb_output_get_property("url_path", ins);
    if (tmp) {
        ctx->url_path = flb_strdup(tmp);
        snprintf(ctx->uri, sizeof(ctx->uri) - 1, "%s/topics/%s", ctx->url_path, ctx->topic);
    } else {
        ctx->url_path = NULL;
        snprintf(ctx->uri, sizeof(ctx->uri) - 1, "/topics/%s", ctx->topic);
    }

    /* Kafka: message key */
    tmp = flb_output_get_property("message_key", ins);
    if (tmp) {
        ctx->message_key = flb_strdup(tmp);
        ctx->message_key_len = strlen(tmp);
    }
    else {
        ctx->message_key = NULL;
        ctx->message_key_len = 0;
    }

    return ctx;
}

int flb_kr_conf_destroy(struct flb_kafka_rest *ctx)
{
    flb_free(ctx->topic);
    flb_free(ctx->http_user);
    flb_free(ctx->http_passwd);

    flb_free(ctx->time_key);
    flb_free(ctx->time_key_format);

    if (ctx->url_path) {
        flb_free(ctx->url_path);
    }

    if (ctx->include_tag_key) {
        flb_free(ctx->tag_key);
    }

    if (ctx->message_key) {
        flb_free(ctx->message_key);
    }

    flb_upstream_destroy(ctx->u);
    flb_free(ctx);

    return 0;
}


);
    qxt_d().lowerPressed = QStyle::SC_None;
    qxt_d().upperPressed = QStyle::SC_None;
    update();
}

/*!
    \reimp
 */
void QxtSpanSlider::paintEvent(QPaintEvent* event)
{
    Q_UNUSED(event);
    QStylePainter painter(this);

    // ticks
    QStyleOptionSlider opt;
    qxt_d().initStyleOption(&opt);
    opt.subControls = QStyle::SC_SliderTickmarks;
    painter.drawComplexControl(QStyle::CC_Slider, opt);

    // groove
    opt.sliderValue = 0;
    opt.sliderPosition = 0;
    opt.subControls = QStyle::SC_SliderGroove;
    painter.drawComplexControl(QStyle::CC_Slider, opt);

    // handle rects
    opt.sliderPosition = qxt_d().lowerPos;
    const QRect lr = style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderHandle, this);
    const int lrv  = qxt_d().pick(lr.center());
    opt.sliderPosition = qxt_d().upperPos;
    const QRect ur = style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderHandle, this);
    const int urv  = qxt_d().pick(ur.center());

    // span
    const int minv = qMin(lrv, urv);
    const int maxv = qMax(lrv, urv);
    const QPoint c = style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderGroove, this).center();
    QRect spanRect;
    if (orientation() == Qt::Horizontal)
        spanRect = QRect(QPoint(minv, c.y() - 2), QPoint(maxv, c.y() + 1));
    else
        spanRect = QRect(QPoint(c.x() - 2, minv), QPoint(c.x() + 1, maxv));
    qxt_d().drawSpan(&painter, spanRect);

    // handles
    switch (qxt_d().lastPressed)
    {
    case QxtSpanSliderPrivate::LowerHandle:
        qxt_d().drawHandle(&painter, QxtSpanSliderPrivate::UpperHandle);
        qxt_d().drawHandle(&painter, QxtSpanSliderPrivate::LowerHandle);
        break;
    case QxtSpanSliderPrivate::UpperHandle:
    default:
        qxt_d().drawHandle(&painter, QxtSpanSliderPrivate::LowerHandle);
        qxt_d().drawHandle(&painter, QxtSpanSliderPrivate::UpperHandle);
        break;
    }
}
/**
******************************************************************************
*
* @file       homeitem.cpp
* @author     The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012.
* @brief      A graphicsItem representing a trail point
* @see        The GNU Public License (GPL) Version 3
* @defgroup   OPMapWidget
* @{
*
*****************************************************************************/
/*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "homeitem.h"
namespace mapcontrol
{
    HomeItem::HomeItem(MapGraphicItem* map,OPMapWidget* parent):safe(true),map(map),mapwidget(parent),
        show


 \
    if ((j_) >> 4)                  \
	(_log2) += 4, (j_) >>= 4;   \
    if ((j_) >> 2)                  \
	(_log2) += 2, (j_) >>= 2;   \
    if ((j_) >> 1)                  \
	(_log2) += 1;               \
  PR_END_MACRO
#endif /* PR_HAVE_BUILTIN_BITSCAN32 */

/*
** Macro version of PR_FloorLog2: Compute the log of the greatest power of
** 2 less than or equal to _n. The result is returned in _log2.
**
** This is equivalent to finding the highest set bit in the word.
*/
#ifdef PR_HAVE_BUILTIN_BITSCAN32
#define PR_FLOOR_LOG2(_log2,_n)     \
  PR_BEGIN_MACRO                    \
    PRUint32 j_ = (PRUint32)(_n);   \
    (_log2) = 31 - pr_bitscan_clz32((j_) | 1); \
  PR_END_MACRO
#else
#define PR_FLOOR_LOG2(_log2,_n)   \
  PR_BEGIN_MACRO                    \
    PRUint32 j_ = (PRUint32)(_n); 	\
    (_log2) = 0;                    \
    if ((j_) >> 16)                 \
	(_log2) += 16, (j_) >>= 16; \
    if ((j_) >> 8)                  \
	(_log2) += 8, (j_) >>= 8;   \
    if ((j_) >> 4)                  \
	(_log2) += 4, (j_) >>= 4;   \
    if ((j_) >> 2)                  \
	(_log2) += 2, (j_) >>= 2;   \
    if ((j_) >> 1)                  \
	(_log2) += 1;               \
  PR_END_MACRO
#endif /* PR_HAVE_BUILTIN_BITSCAN32 */

/*
** Macros for rotate left and right. The argument 'a' must be an unsigned
** 32-bit integer type such as PRUint32.
**
** There is no rotate operation in the C Language, so the construct
** (a << 4) | (a >> 28) is frequently used instead. Most compilers convert
** this to a rotate instruction, but MSVC doesn't without a little help.
** To get MSVC to generate a rotate instruction, we have to use the _rotl
** or _rotr intrinsic and use a pragma to make it inline.
**
** Note: MSVC in VS2005 will do an inline rotate instruction on the above
** construct.
*/

#if defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_AMD64) || \
    defined(_M_X64))
#include <stdlib.h>
#pragma intrinsic(_rotl, _rotr)
#define PR_ROTATE_LEFT32(a, bits) _rotl(a, bits)
#define PR_ROTATE_RIGHT32(a, bits) _rotr(a, bits)
#else
#define PR_ROTATE_LEFT32(a, bits) (((a) << (bits)) | ((a) >> (32 - (bits))))
#define PR_ROTATE_RIGHT32(a, bits) (((a) >> (bits)) | ((a) << (32 - (bits))))
#endif

PR_END_EXTERN_C
#endif /* prbit_h___ */


  ),
                extraLarge = parseShapeAppearance(
                    context = context,
                    id = ta.getResourceIdOrThrow(R.styleable.ComposeThemeAdapterMaterial3Theme_shapeAppearanceCornerExtraLarge),
                    layoutDirection = layoutDirection,
                    fallbackShape = emptyShapes.extraLarge
                )
            )
        } else null

        Theme3Parameters(colorScheme, typography, shapes)
    }
}

private val emptyShapes = Shapes()

/**
 * This is gross, but we need a way to check for theme equality. Theme does not implement
 * `equals()` or `hashCode()`, but it does have a hidden method called `getKey()`.
 *
 * The cost of this reflective invoke is a lot cheaper than the full theme read which can
 * happen on each re-composition.
 */
private inline val Resources.Theme.key: Any?
    get() {
        if (!sThemeGetKeyMethodFetched) {
            try {
                @Suppress("PrivateApi")
                sThemeGetKeyMethod = Resources.Theme::class.java.getDeclaredMethod("getKey")
                    .apply { isAccessible = true }
            } catch (e: ReflectiveOperationException) {
                // Failed to retrieve Theme.getKey method
            }
            sThemeGetKeyMethodFetched = true
        }
        if (sThemeGetKeyMethod != null) {
            return try {
                sThemeGetKeyMethod?.invoke(this)
            } catch (e: ReflectiveOperationException) {
                // Failed to invoke Theme.getKey()
            }
        }
        return null
    }

private var sThemeGetKeyMethodFetched = false
private var sThemeGetKeyMethod: Method? = null
/*
 * Copyright 2025 Google LLC
 *
 * 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.
 */
package palettes

import hct.Hct
import kotlin.math.abs
import kotlin.math.roundToInt

/**
 * A convenience class for retrieving colors that are constant in hue and chroma, but vary in tone.
 *
 * TonalPalette is intended for use in a single thread due to its stateful caching.
 */
class TonalPalette
private constructor(
  /** The hue of the Tonal Palette, in HCT. Ranges from 0 to 360. */
  val hue: Double,
  /** The chroma of the Tonal Palette, in HCT. Ranges from 0 to ~130 (for sRGB gamut). */
  val chroma: Double,
  /** The key color is the first tone, starting from T50, that matches the palette's chroma. */
  val keyColor: Hct,
) {
  var cache: MutableMap<Int, Int> = mutableMapOf()

  /**
   * Create an ARGB color with HCT hue and chroma of this Tones instance, and the provided HCT tone.
   *
   * @param tone HCT tone, measured from 0 to 100.
   * @return ARGB representation of a color with that tone.
   */
  fun tone(tone: Int): Int {
    var color = cache[tone]
    if (color == null) {
      color =
        if (tone == 99 && Hct.isYellow(hue)) {
          averageArgb(tone(98), tone(100))
        } else {
          Hct.from(hue, chroma, tone.toDouble()).toInt()
        }
      cache[tone] = color
    }
    return color
  }

  /** Given a tone, use hue and chroma of palette to create a color, and return it as HCT. */
  fun getHct(tone: Double): Hct {
    return Hct.from(hue, chroma, tone)
  }

  private fun averageArgb(argb1: Int, argb2: Int): Int {
    val red1 = argb1 ushr 16 and 0xff
    val green1 = argb1 ushr 8 and 0xff
    val blue1 = argb1 and 0xff
    val red2 = argb2 ushr 16 and 0xff
    val green2 = argb2 ushr 8 and 0xff
    val blue2 = argb2 and 0xff
    val red = ((red1 + red2) / 2f).roundToInt()
    val green = ((green1 + green2) / 2f).roundToInt()
    val blue = ((blue1 + blue2) / 2f).roundToInt()
    return 255 shl 24 or (red and 255


e[data-tab-size="4"] {
  -moz-tab-size: 4;
  tab-size: 4;
}

.markdown-body .tab-size[data-tab-size="5"] {
  -moz-tab-size: 5;
  tab-size: 5;
}

.markdown-body .tab-size[data-tab-size="6"] {
  -moz-tab-size: 6;
  tab-size: 6;
}

.markdown-body .tab-size[data-tab-size="7"] {
  -moz-tab-size: 7;
  tab-size: 7;
}

.markdown-body .tab-size[data-tab-size="8"] {
  -moz-tab-size: 8;
  tab-size: 8;
}

.markdown-body .tab-size[data-tab-size="9"] {
  -moz-tab-size: 9;
  tab-size: 9;
}

.markdown-body .tab-size[data-tab-size="10"] {
  -moz-tab-size: 10;
  tab-size: 10;
}

.markdown-body .tab-size[data-tab-size="11"] {
  -moz-tab-size: 11;
  tab-size: 11;
}

.markdown-body .tab-size[data-tab-size="12"] {
  -moz-tab-size: 12;
  tab-size: 12;
}

.markdown-body .task-list-item {
  list-style-type: none;
}

.markdown-body .task-list-item+.task-list-item {
  margin-top: 3px;
}

.markdown-body .task-list-item input {
  margin: 0 .2em .25em -1.6em;
  vertical-align: middle;
}// Variables
//
//

@import "helpers/functions";

// Main class prefix
$prefix: "cs" !default;

// Grid breakpoints
//
// Breakpoints for responsive view

$grid-breakpoints: (
  xs: 0,
  sm: 576px,
  md: 768px,
  lg: 992px,
  xl: 1200px,
  xxl: 1400px
) !default;

// Default font family
//

$default-font-family: Helvetica Neue, Segoe UI, Helvetica, Arial, sans-serif;

// Colors
//

$color-primary: #c6e3fa !default;
$color-primary-light: #f6fbff !default;
$color-primary-dark: #6ea9d7 !default;
$color-primary-dark: #6EAAD8 !default;

$color-secondary: #91ECEC !default;
$color-secondary-light: #C2F9F9 !default;
$color-secondary-dark: #64D3D3 !default;

// Material text colors
// http://marcodiiga.github.io/rgba-to-rgb-conversion
// Hex values are calculated based on white background
// If you change background color rgb color will change, that is why its better to use rgba with opacity!
$color-text: rgba(0, 0, 0, .87) !default; // #212121
$color-text-medium: rgba(0, 0, 0, .60) !default; // #666666
$color-text-disabled: rgba(0, 0, 0, .38) !default; // #9e9e9e
$color-text-inverted: invert($color-text);

// Base colors
//
// It's not recommended to change this colors because white is white and black is... black :)
$color-white: #fff !default;
$color-black: #000 !default;

$default-bg-color: $color-white !default;

// Element colors
//

$default-border-color: rgba-to-rgb(rgba(scale-color($color-primary-dark, $saturation: -55%), 0.4), $default-bg-color) !default;

// State colors
//

$color-hover


/* sort/gsl_sort_vector_long_double.h
 *
 * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 3 of the License, or (at
 * your option) any later version.
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 */

#ifndef __GSL_SORT_VECTOR_LONG_DOUBLE_H__
#define __GSL_SORT_VECTOR_LONG_DOUBLE_H__

#include <stdlib.h>
#include <gsl/gsl_errno.h>
#include <gsl/gsl_permutation.h>
#include <gsl/gsl_vector_long_double.h>

#undef __BEGIN_DECLS
#undef __END_DECLS
#ifdef __cplusplus
# define __BEGIN_DECLS extern "C" {
# define __END_DECLS }
#else
# define __BEGIN_DECLS /* empty */
# define __END_DECLS /* empty */
#endif

__BEGIN_DECLS

void gsl_sort_vector_long_double (gsl_vector_long_double * v);
void gsl_sort_vector2_long_double (gsl_vector_long_double * v1, gsl_vector_long_double * v2);
int gsl_sort_vector_long_double_index (gsl_permutation * p, const gsl_vector_long_double * v);

int gsl_sort_vector_long_double_smallest (long double * dest, const size_t k, const gsl_vector_long_double * v);
int gsl_sort_vector_long_double_largest (long double * dest, const size_t k, const gsl_vector_long_double * v);

int gsl_sort_vector_long_double_smallest_index (size_t * p, const size_t k, const gsl_vector_long_double * v);
int gsl_sort_vector_long_double_largest_index (size_t * p, const size_t k, const gsl_vector_long_double * v);

__END_DECLS

#endif /* __GSL_SORT_VECTOR_LONG_DOUBLE_H__ */


.darken.sdmse.common.progress.updateProgressPrimary
import eu.darken.sdmse.common.progress.updateProgressSecondary
import eu.darken.sdmse.common.progress.withProgress
import eu.darken.sdmse.deduplicator.core.Duplicate
import eu.darken.sdmse.deduplicator.core.scanner.checksum.ChecksumDuplicate
import eu.darken.sdmse.deduplicator.core.scanner.checksum.ChecksumSleuth
import eu.darken.sdmse.deduplicator.core.scanner.phash.PHashDuplicate
import eu.darken.sdmse.deduplicator.core.scanner.phash.PHashSleuth
import eu.darken.sdmse.exclusion.core.ExclusionManager
import eu.darken.sdmse.exclusion.core.pathExclusions
import eu.darken.sdmse.exclusion.core.types.match
import eu.darken.sdmse.main.core.SDMTool
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asFlow
import kotlinx.coroutines.flow.buffer
import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.flatMapMerge
import kotlinx.coroutines.flow.flowOn
import java.util.UUID
import javax.inject.Inject
import javax.inject.Provider

class DuplicatesScanner @Inject constructor(
    private val checksumSleuthProvider: Provider<ChecksumSleuth>,
    private val pHashSleuthProvider: Provider<PHashSleuth>,
    private val exclusionManager: ExclusionManager,
    private val areaManager: DataAreaManager,
    private val dispatcherProvider: DispatcherProvider,
    private val gatewaySwitch: GatewaySwitch,
    private val commonFilesCheck: CommonFilesCheck,
    private val fileForensics: FileForensics,
) : Progress.Host, Progress.Client {

    private val progressPub = MutableStateFlow<Progress.Data?>(Progress.Data())
    override val progress: Flow<Progress.Data?> = progressPub.throttleLatest(250)

    override fun updateProgress(update: (Progress.Data?) -> Progress.Data?) {
        progressPub.value = update(progressPub.value)
    }

    private suspend fun defaultSearchFlow(): Flow<APathLookup<*>> {
        val currentAreas = areaManager.currentAreas()
        log(TAG) { "Current areas are: $currentAreas" }

        val targetAreas = run {
            val targetAreaTypes = setOf(
                DataArea.Type.SDCARD,
                DataArea.Type.PUBLIC_DATA,
                DataArea.Type.PUBLIC_MEDIA,
                DataArea.Type.PORTABLE,
            )
            currentAreas.filter { targetAreaTypes.contains(it.type) }.toSet()
        }
        log(TAG) { "Target areas: $targetAreas" }

        val sdcardSkips = mutableSetOf(
            segs("Android", "data"),
            segs("Android", "media"),
            segs("Android", "obb"),
        )

        val globalSkips = mutableSetOf<Segments>()
        if (targetAreas.all { it.path.segments != segs("", "data", "data") }) {
            globalSkips.add(segs("", "data", "data"))
            globalSkips.add(segs("", "data", "user", "0"))
        }
        globalSkips.add(segs("", "data", "media", "0"))
        log(TAG) { "Global skip segments: $globalSkips" }

        val exclusions = exclusionManager.pathExclusions(SDMTool.Type.DEDUPLICATOR)
        log(TAG) { "Deduplicator exclusions are: $exclusions" }


ddresses to read", "addresses", addressesToRead)

	// For testing purposes, there is no handling of index out of range or nil cases.
	// It allows for the configuration of empty addresses, a single address, or zero balances.
	// The happy-path scenario in the system tests guarantees there are at least two addresses present.
	// However, in real-world usage, it is advisable to implement
	// proper validation for the configuration and handle possible errors.
	addressToRead1 := addressesToRead[0]
	balanceAtOutput, err := evmClient.BalanceAt(runtime, &evm.BalanceAtRequest{
		Account:     addressToRead1.Bytes(),
		BlockNumber: nil,
	}).Await()
	if err != nil {
		runtime.Logger().Error(fmt.Sprintf("[logger] failed to get on-chain balance: %v", err))
		return "", fmt.Errorf("failed to get on-chain balance: %w", err)
	}
	runtime.Logger().With().Info(fmt.Sprintf("[logger] Got on-chain balance with BalanceAt() for address %s: %s", addressToRead1, balanceAtOutput.Balance.String()))
	// Convert protobuf BigInt to big.Int manually to avoid import conflicts
	balanceAtResult := values.ProtoToBigInt(balanceAtOutput.Balance)
	runtime.Logger().With().Info(fmt.Sprintf("[logger] Got on-chain balance with BalanceAt() for address %s: %s", addressToRead1, balanceAtResult.String()))

	// get balance with CallContract
	readBalancesParsedABI, err := getReadBalancesContractABI(runtime)
	if err != nil {
		runtime.Logger().Error(fmt.Sprintf("failed to get ReadBalances ABI: %v", err))
		return "", fmt.Errorf("failed to get ReadBalances ABI: %w", err)
	}

	// To test that reading the contract is operational, it is sufficient to use 1 address.
	// For testing purposes, there is no index out of range or nil handling,
	// see comments above for more details (TL:DR; implement your own proper validation)
	addressToRead2 := addressesToRead[1]
	readBalancesOutput, err := readBalancesFromContract([]common.Address{addressToRead2}, readBalancesParsedABI, evmClient, runtime, config)
	if err != nil {
		runtime.Logger().Error(fmt.Sprintf("failed to read balances from contract: %v", err))
		return "", fmt.Errorf("failed to read balances from contract: %w", err)
	}

	var readBalancePrices []*big.Int
	methodName := "getNativeBalances"
	err = readBalancesParsedABI.UnpackIntoInterface(&readBalancePrices, methodName, readBalancesOutput.Data)
	if err != nil {
		runtime.Logger().Error(fmt.Sprintf("failed to read CallContract output: %v", err))
		return "", fmt.Errorf("failed to read CallContract output: %w", err)
	}
	runtime.Logger().With().Info(fmt.Sprintf("Read on-onchain balances for addresses %v: %v", addressesToRead, &readBalancePrices))

	// get total on-chain balance
	allOnchainBalances := append(readBalancePrices, balanceAtResult)
	var totalOnChainBalance big.Int
	for _, balance := range allOnchainBalances {
		totalOnChainBalance = *totalOnChainBalance.Add(&totalOnChainBalance, balance)
	}
	runtime.Logger().With().Info(fmt.Sprintf("Total on-chain balance for addresses %v", &totalOnChainBalance))

	totalPriceOutput, err := cre.RunInNodeMode(config, runtime,
		func(config types.WorkflowConfig, nodeRuntime cre.NodeRuntime


}

function xyz2lab(xyz) {
  var x = xyz[0],
      y = xyz[1],
      z = xyz[2],
      l, a, b;

  x /= 95.047;
  y /= 100;
  z /= 108.883;

  x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116);
  y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116);
  z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116);

  l = (116 * y) - 16;
  a = 500 * (x - y);
  b = 200 * (y - z);

  return [l, a, b];
}

function xyz2lch(args) {
  return lab2lch(xyz2lab(args));
}

function lab2xyz(lab) {
  var l = lab[0],
      a = lab[1],
      b = lab[2],
      x, y, z, y2;

  if (l <= 8) {
    y = (l * 100) / 903.3;
    y2 = (7.787 * (y / 100)) + (16 / 116);
  } else {
    y = 100 * Math.pow((l + 16) / 116, 3);
    y2 = Math.pow(y / 100, 1/3);
  }

  x = x / 95.047 <= 0.008856 ? x = (95.047 * ((a / 500) + y2 - (16 / 116))) / 7.787 : 95.047 * Math.pow((a / 500) + y2, 3);

  z = z / 108.883 <= 0.008859 ? z = (108.883 * (y2 - (b / 200) - (16 / 116))) / 7.787 : 108.883 * Math.pow(y2 - (b / 200), 3);

  return [x, y, z];
}

function lab2lch(lab) {
  var l = lab[0],
      a = lab[1],
      b = lab[2],
      hr, h, c;

  hr = Math.atan2(b, a);
  h = hr * 360 / 2 / Math.PI;
  if (h < 0) {
    h += 360;
  }
  c = Math.sqrt(a * a + b * b);
  return [l, c, h];
}

function lab2rgb(args) {
  return xyz2rgb(lab2xyz(args));
}

function lch2lab(lch) {
  var l = lch[0],
      c = lch[1],
      h = lch[2],
      a, b, hr;

  hr = h / 360 * 2 * Math.PI;
  a = c * Math.cos(hr);
  b = c * Math.sin(hr);
  return [l, a, b];
}

function lch2xyz(args) {
  return lab2xyz(lch2lab(args));
}

function lch2rgb(args) {
  return lab2rgb(lch2lab(args));
}

function keyword2rgb(keyword) {
  return cssKeywords[keyword];
}

function keyword2hsl(args) {
  return rgb2hsl(keyword2rgb(args));
}

function keyword2hsv(args) {
  return rgb2hsv(keyword2rgb(args));
}

function keyword2hwb(args) {
  return rgb2hwb(keyword2rgb(args));
}

function keyword2cmyk(args) {
  return rgb2cmyk(keyword2rgb(args));
}

function keyword2lab(args) {
  return rgb2lab(keyword2rgb(args));
}

function keyword2xyz(a


     stressCentrality.calculate();
        assertCentrality( stressCentrality, "a", 1.0 );
        assertCentrality( stressCentrality, "b", 1.0 );
        assertCentrality( stressCentrality, "c", 1.0 );
        assertCentrality( stressCentrality, "d", 1.0 );
    }

    @Test
    public void testPlusShape()
    {
        graph.makeEdgeChain( "a,b,c" );
        graph.makeEdgeChain( "d,b,e" );
        StressCentrality<Double> stressCentrality = new StressCentrality<>( getSingleSourceShortestPath(), graph.getAllNodes() );
        stressCentrality.calculate();
        assertCentrality( stressCentrality, "a", 0.0 );
        assertCentrality( stressCentrality, "b", 6.0 );
        assertCentrality( stressCentrality, "c", 0.0 );
        assertCentrality( stressCentrality, "d", 0.0 );
        assertCentrality( stressCentrality, "e", 0.0 );
    }

    @Test
    public void testChain()
    {
        graph.makeEdgeChain( "a,b,c,d,e" );
        StressCentrality<Double> stressCentrality = new StressCentrality<>( getSingleSourceShortestPath(), graph.getAllNodes() );
        stressCentrality.calculate();
        assertCentrality( stressCentrality, "a", 0.0 );
        assertCentrality( stressCentrality, "b", 3.0 );
        assertCentrality( stressCentrality, "c", 4.0 );
        assertCentrality( stressCentrality, "d", 3.0 );
        assertCentrality( stressCentrality, "e", 0.0 );
    }

    @Test
    public void testStressUpdating()
    {
        graph.makeEdgeChain( "a,b,c,d,e,f" );
        new StressTest( getSingleSourceShortestPath(), graph.getAllNodes() )
            .test();
    }

    class StressTest extends StressCentrality<Double>
    {
        StressTest( SingleSourceShortestPath<Double> singleSourceShortestPath, Set<Node> nodeSet )
        {
            super( singleSourceShortestPath, nodeSet );
        }

        public void test()
        {
            // avoid starting the real calculation by mistake
            this.doneCalculation = true;
            // set things up
            Node startNode = graph.getNode( "c" );
            singleSourceShortestPath.reset();
            singleSourceShortestPath.setStartNode( startNode );
            processShortestPaths( startNode, singleSourceShortestPath );
            Double adjustment = 0.5; // since direction is BOTH
            assertCentrality( this, "a", 0.0 * adjustment );
            assertCentrality( this, "b", 1.0 * adjustment );
            assertCentrality( this, "c", 0.0 * adjustment );
            assertCentrality( this, "d", 2.0 * adjustment );
            assertCentrality( this, "e", 1.0 * adjustment );
            assertCentrality( this, "f", 0.0 * adjustment );
        }
    }
}
/*
 * Copyright (c) 2018-2020 "Graph Foundation,"
 * Graph Foundation, Inc. [https://graphfoundation.org]
 *
 * This file is part of ONgDB.
 *
 * ONgDB is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */


vmovdqu	%ymm8, (%rax,%r10,4)
	movq	%rsi, %r10
	subq	%r8, %r10
	leaq	(%r10,%rcx), %r8
	vmovmskps	%ymm2, %ecx
	vpbroadcastd	(%rdi,%rcx,4), %ymm2
	leaq	-56(%rdx,%r8), %r10
	vpsrlvd	%ymm0, %ymm2, %ymm2
	vpermd	%ymm7, %ymm2, %ymm7
	vpcmpgtd	%ymm1, %ymm6, %ymm2
	vmovdqu	%ymm7, (%rax,%r8,4)
	vmovdqu	%ymm7, (%rax,%r10,4)
	xorl	%r10d, %r10d
	popcntq	%rcx, %r10
	movq	%rsi, %rcx
	subq	%r10, %rcx
	addq	%r8, %rcx
	vmovmskps	%ymm2, %r8d
	vpbroadcastd	(%rdi,%r8,4), %ymm2
	leaq	-64(%rdx,%rcx), %rdx
	popcntq	%r8, %r8
	movq	-144(%rbp), %rdi
	subq	%r8, %rsi
	vpsrlvd	%ymm0, %ymm2, %ymm2
	vpermd	%ymm6, %ymm2, %ymm6
	vmovdqu	%ymm6, (%rax,%rcx,4)
	vmovdqu	%ymm6, (%rax,%rdx,4)
	leaq	(%rsi,%rcx), %rdx
	subq	%rdx, %rdi
	leaq	(%rax,%rdx,4), %rcx
.L1852:
	movq	%rcx, %rsi
	cmpq	$7, %rdi
	ja	.L1857
	movq	-144(%rbp), %rdi
	leaq	-32(%rax,%rdi,4), %rsi
.L1857:
	vpcmpgtd	%ymm1, %ymm5, %ymm1
	vpcmpeqd	%ymm2, %ymm2, %ymm2
	vmovdqu	(%rsi), %ymm7
	movq	-144(%rbp), %rdi
	vmovdqa	%ymm7, -176(%rbp)
	vpxor	%ymm2, %ymm1, %ymm2
	vmovdqu	%ymm7, (%rax,%rdi,4)
	vmovmskps	%ymm2, %esi
	vpbroadcastd	(%r9,%rsi,4), %ymm2
	popcntq	%rsi, %rsi
	addq	%rsi, %rdx
	leaq	(%r15,%rdx), %r14
	vpsrlvd	%ymm0, %ymm2, %ymm2
	vpslld	$28, %ymm2, %ymm3
	vpermd	%ymm5, %ymm2, %ymm2
	vpmaskmovd	%ymm2, %ymm3, (%rcx)
	vmovmskps	%ymm1, %ecx
	vpbroadcastd	(%r9,%rcx,4), %ymm1
	vpsrlvd	%ymm0, %ymm1, %ymm0
	vpslld	$28, %ymm0, %ymm1
	vpermd	%ymm5, %ymm0, %ymm5
	vpmaskmovd	%ymm5, %ymm1, (%rax,%rdx,4)
	movq	-96(%rbp), %r15
	subq	$1, %r15
	cmpl	$2, -112(%rbp)
	je	.L1952
	mov


#pragma once

#include <QAction>
#include <QMap>
#include <QMenu>
#include <QToolBar>

#include <memory>

class WideBar : public QToolBar {
    Q_OBJECT
    // Why: so we can enable / disable alt shortcuts in toolbuttons
    // with toolbuttons using setDefaultAction, theres no alt shortcuts
    Q_PROPERTY(bool useDefaultAction MEMBER m_use_default_action)

   public:
    explicit WideBar(const QString& title, QWidget* parent = nullptr);
    explicit WideBar(QWidget* parent = nullptr);
    ~WideBar() override = default;

    void addAction(QAction* action);
    void addSeparator();

    void insertSpacer(QAction* action);
    void insertSeparator(QAction* before);
    void insertActionBefore(QAction* before, QAction* action);
    void insertActionAfter(QAction* after, QAction* action);
    void insertWidgetBefore(QAction* before, QWidget* widget);

    QMenu* createContextMenu(QWidget* parent = nullptr, const QString& title = QString());
    void showVisibilityMenu(const QPoint&);

    void addContextMenuAction(QAction* action);

    // Ideally we would use a QBitArray for this, but it doesn't support string conversion,
    // so using it in settings is very messy.

    [[nodiscard]] QByteArray getVisibilityState() const;
    void setVisibilityState(QByteArray&&);

    void removeAction(QAction* action);

   private:
    struct BarEntry {
        enum class Type { None, Action, Separator, Spacer } type = Type::None;
        QAction* bar_action = nullptr;
        QAction* menu_action = nullptr;
    };

    auto getMatching(QAction* act) -> QList<BarEntry>::iterator;

    /** Used to distinguish between versions of the WideBar with different actions */
    [[nodiscard]] QByteArray getHash() const;
    [[nodiscard]] bool checkHash(QByteArray const&) const;

   private:
    QList<BarEntry> m_entries;

    QList<QAction*> m_context_menu_actions;

    bool m_use_default_action = false;

    // Menu to toggle visibility from buttons in the bar
    std::unique_ptr<QMenu> m_bar_menu = nullptr;
    enum class MenuState { Fresh, Dirty } m_menu_state = MenuState::Dirty;
};


itel ll",
	["CHAPTER.CHAPTER_3"] = "Kapitel lll",
	["CHAPTER.CHAPTER_4"] = "Kapitel IV",
	["CHAPTER.CHAPTER_5"] = "Kapitel V",
	["CHAPTER.CHAPTER_6"] = "Kapitel VI",
	["CHAPTER.CHAPTER_7"] = "Kapitel Vll",
	["CHAPTER.CHAPTER_8"] = "Kapitel Vlll",
	["CHAPTER.CHAPTER_9"] = "Kapitel IX",
	["CHAPTER.CHAPTER_10"] = "Kapitel X",
	["CHAPTER.CHAPTER_11"] = "Kapitel XI",
	["CHAPTER.CHAPTER_12"] = "Kapitel Xll",
	["CHAPTER.CHAPTER_13"] = "Kapitel Xlll",
	["CHAPTER.CHAPTER_14"] = "Kapitel XIV",
	["CHAPTER.NEW_EVIL"] = "Lord des Dragons",
	["CHAPTER.HERO_ACADEMY"] = "Held-Akademie",
	["CHAPTER.NAGA_SEA"] = "Naga See",
	["CHAPTER.NIGHT_ISLAND"] = "Dunkelheits-Insel",
	["CHAPTER.THORNS_VALLEY"] = "Thorns Tal",
	["CHAPTER.NORTHERN_TERRITORY"] = "Nordterritorium",
	["CHAPTER.FOREST_MOON"] = "Neumondwald",
	["CHAPTER.CAVE_BEAST"] = "Höhle des Monsters",
	["CHAPTER.TIME_RUINS"] = "Ruinen der Zeit",
	["CHAPTER.BRIGHT_TEMPLE"] = "Ehre Temple",
	["CHAPTER.FIELD_TRIALS"] = "Ausbildungsfeld",
	["CHAPTER.CAVERNS_OF_TIME"] = "Höhle der Zeit",
	["CHAPTER.EXPLORE_THE_TREASURES"] = "Entdecke die Schätze",
	["EQUIP.PARTS"] = "Teile",
	["EQUIP.BRANCH"] = "Zweig",
	["EQUIP.BRING_IT_TO_WIN_THE_GAME"] = "Bring es, um das Spiel zu gewinnen",
	["EQUIP.STRENGTH_GLOVES"] = "Kräftige Handschuhe",
	["EQUIP.AGILE_STOCKINGS"] = "Socken der Beweglichkeit",
	["EQUIP.COSPLAY_SPIDERMAN_SUIT_COMPONENTS"] = "Spiderman-Kostümspiel-Teile",
	["EQUIP.INTELLIGENCE_OF_THE_CANOPY"] = "Mantel der Intelligenz ",
	["EQUIP.DEFENSE_RING"] = "Verteidigungsring",
	["EQUIP.ARISTOCRATIC_HEAD_RING"] = "Königlicher Kopfring",
	["EQUIP.OBVIOUSLY_ITS_LOSERS_RING"] = "Offenbar ist es der Verlierer-Kopfring!",
	["EQUIP.SMALL_MAGIC_WAND"] = "Kleiner Magiestock",
	["EQUIP.I_CAN_COUNTER_KILL_"] = "Ich kann Gegenangriff ......",
	["EQUIP.COMPLEMENT_AX"] = "Mächtige Klinge",
	["EQUIP.BUCKLER"] = "Faustschild",
	["EQUIP.ONCE_SOMEONES_TOILET_LID"] = "Der Weinfassboden eines Mannes wird Schild eines anderen Mannes!",
	["EQUIP.ARTISTS_MASKS"] = "Seelenmaske",
	["EQUIP.INTENDS_TO_ENTER_THE_ENTERTAINMENT_BUSINESS"] = "Du möchtest also ein Superstar werden?",


即每一个sql造成的影响会记录.由于sql的执行是有上 下文的,因此在保存的时候需要保存相关的信息,同时还有一些使用了函数之类的语句无法 被记录复制.
*   row级别下,记录单元为每一行的改动,基本是可以全部记下来但是由于很多操作,会导致大 量行的改动(比如alter table),因此这种模式的文件保存的信息太多,日志量太大.
*   mixed. 一种折中的方案,普通操作使用statement记录,当无法使用statement的时候使 用row.

此外,新版的MySQL中对row级别也做了一些优化,当表结构发生变化的时候,会记录语句而不是 逐行记录。

# 超大分页怎么处理?

> 原文：[https://zwmst.com/699.html](https://zwmst.com/699.html)

超大的分页一般从两个方向上来解决.

*   数据库层面,这也是我们主要集中关注的(虽然收效没那么大),类似于select *from table where age > 20 limit 1000000,10这种查询其实也是有可以优化的余地 的. 这条语句需要load1000000数据然后基本上全部丢弃,只取10条当然比较慢. 当时我们 可以修改为select* from table where id in (select id from table where age > 20 limit 1000000,10).这样虽然也load了一百万的数据,但是由于索 引覆盖,要查询的所有字段都在索引中,所以速度会很快. 同时如果ID连续的好,我们还可以 select * from table where id > 1000000 limit 10,效率也是不错的,优化的 可能性有许多种,但是核心思想都一样,就是减少load的数据.
*   从需求的角度减少这种请求….主要是不做类似的需求(直接跳转到几百万页之后的具体某 一页.只允许逐页查看或者按照给定的路线走,这样可预测,可缓存)以及防止ID泄漏且连续 被人恶意攻击.

解决超大分页,其实主要是靠缓存,可预测性的提前查到内容,缓存至redis等k-V数据库中,直接 返回即可.

在阿里巴巴《Java开发手册》中,对超大分页的解决办法是类似于上面提到的第一种。

![image-20210813175148457](img/a8fcfd511c61758da797f2f695e461f1.png)

# 关心过业务系统里面的sql耗时吗?统计过慢查询吗?对慢查询都怎么优化过?

> 原文：[https://zwmst.com/701.html](https://zwmst.com/701.html)

在业务系统中,除了使用主键进行的查询,其他的我都会在测试库上测试其耗时,慢查询的统计主 要由运维在做,会定期将业务中的慢查询反


.h,bF).6I(0)+","+2Z(c.s,3k).hp(4)+"%"+","+2Z(c.l,3k).hp(4)+"%");u a=c.a;if(a>=1){a=1;W="1G("+5y+")"}N{if(a<=0){a=0}W="t4("+5y+","+a+")"}D.ho=W}F W},hl:G(){u c=D.1B;u 2Z=B.V.6F;u W=D.hn;if(!W){u 5y=(2Z(c.r,3h).6I(0)+","+2Z(c.g,3h).6I(0)+","+2Z(c.b,3h).6I(0));if(c.a!=1){W="t3("+5y+","+c.a+")"}N{W="1B("+5y+")"}D.hn=W}F W},6r:G(){F B.J.4L(D.1B)},t2:G(){u m=B.V;u c=D.1B;u 2Z=B.V.6F;u W=D.hm;if(!W){W=("#"+m.6E(2Z(c.r,3h))+m.6E(2Z(c.g,3h))+m.6E(2Z(c.b,3h)));D.hm=W}F W},t1:G(){u 2Q=D.2Q;u c=D.1B;if(H(2Q)=="L"||2Q===O){2Q=B.V.bA(D.1B);D.2Q=2Q}F B.J.4L(2Q)},41:G(){u 1G=D.1G;u c=D.1B;if(H(1G)=="L"||1G===O){1G=B.V.bC(D.1B);D.1G=1G}F B.J.4L(1G)},1l:G(){F D.hl()},U:G(){u c=D.1B;u hk=[c.r,c.g,c.b,c.a];F D.bX.1r+"("+hk.2b(", ")+")"}};B.J.2l(B.V.V,{3Y:G(1v,bW,1F,8H){u hj=B.V.V;if(M.K==1){u 1B=1v;1v=1B.r;bW=1B.g;1F=1B.b;if(H(1B.a)=="L"){8H=L}N{8H=1B.a}}F Y hj(1v,bW,1F,8H)},4H:G(1o,t0,sZ,sY){u m=B.V;F m.V.3Y(m.bB.1w(m,M))},sX:G(1o,sW,sV,sU){u m=B.V;F m.V.3Y(m.bz.1w(m,M))},hi:G(1b){u 8F=B.V.V;if(1b.3Z(0)=="\\""){1b=1b.3H(1,1b.K-2)}u bV=8F.by[1b.8G()];if(H(bV)=="1n"){F 8F.bT(bV)}N{if(1b=="aP"){F 8F.sT()}}F O},8f:G(4Q){u I=B.V.V;u bU=4Q.3H(0,3);if(bU=="1B"){F I.h9(4Q)}N{if(bU=="1G"){F I.h8(4Q)}N{if(4Q.3Z(0)=="#"){F I.bT(4Q)}}}F I.hi(4Q)},bT:G(4P){if(4P.3


�鹤，一路颠颠倒倒，询途问店，虽然受尽艰苦，亦直任而不辞。只身路行，傍人观之，有俨然不可犯之锋。时人有感而吟一绝：

　　柳营浑令实严威，天堑江河又峻巍。
　　欲到桃源不惮远，独行踽踽赞闺闱。 是夜，玉真在路中吟一首《寄与风月传闻爹娘得知》：

　　塞烟野草树轻襟，无奈蹇裳独自吟。
　　不惜微躯浑是胆，忍闻悲雁尽非音。
　　临行仰视月为瑟，须去和同风作音。
　　弹得情思难两全，只因势迫泪淋淋。

不数日，卜玉真到了霞漳，逐处寻访，未有踪迹。忽一日，走到大街，认见一位汉子，脚未行而头先趋，如饮马之奔江，身未动而手乱摆，如狂狗之爬沙，冒突风雪而来者，乃前日光棍也。玉真正要躲身避他，奈洪袖中乃是色中饿鬼，虽不敢认是玉真，但看见是个丰姿少年，遂近前施礼问道：“贤兄似非本省之人，敢问要寻贵产么？”玉真道：“弟闻贵漳才子康梦鹤，自来拜访，今未知康府在何处？”洪袖中道：“此乃天假之缘，幸问得人。梦鸽正是小弟亲朋，其屋与弟比邻，愿先引进。”袖中骗他穿入偏巷曲街，欺他心目认不行大街市，直引到破古庙极深处，内系坏墙破屋，树木丛草。及玉真入门去，意以为旧栅栏。袖中把庙站紧关。入到庙后，看见树木茂草，玉真意以为荒埔，殊不知至此四围并无去路。袖中就起不良之心，要调戏他，倘若不肯，便要行强。玉真自知中计，不能脱得身去，“况我一介女流，安能敌得他过？”正是：

　　冤家路隘为浓情，松柏经霜正见贞。
　　束手徬徨天地小，飘飘风雨动猿声。 玉真静思半响，因在路中耳闻吴翰林之事，忽生一计，心自思道：“这个痴汉，只可以理骗，不可以力争。”乃假笑脸


ier;
      }
      if (other.lureInfo_ != null) {
        if (lureInfo_ == null) {
          lureInfo_ = new global::POGOProtos.Map.Fort.FortLureInfo();
        }
        LureInfo.MergeFrom(other.LureInfo);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            Id = input.ReadString();
            break;
          }
          case 16: {
            LastModifiedTimestampMs = input.ReadInt64();
            break;
          }
          case 25: {
            Latitude = input.ReadDouble();
            break;
          }
          case 33: {
            Longitude = input.ReadDouble();
            break;
          }
          case 40: {
            ownedByTeam_ = (global::POGOProtos.Enums.TeamColor) input.ReadEnum();
            break;
          }
          case 48: {
            guardPokemonId_ = (global::POGOProtos.Enums.PokemonId) input.ReadEnum();
            break;
          }
          case 56: {
            GuardPokemonCp = input.ReadInt32();
            break;
          }
          case 64: {
            Enabled = input.ReadBool();
            break;
          }
          case 72: {
            type_ = (global::POGOProtos.Map.Fort.FortType) input.ReadEnum();
            break;
          }
          case 80: {
            GymPoints = input.ReadInt64();
            break;
          }
          case 88: {
            IsInBattle = input.ReadBool();
            break;
          }
          case 98: {
            ActiveFortModifier = input.ReadBytes();
            break;
          }
          case 106: {
            if (lureInfo_ == null) {
              lureInfo_ = new global::POGOProtos.Map.Fort.FortLureInfo();
            }
            input.ReadMessage(lureInfo_);
            break;
          }
          case 112: {
            CooldownCompleteTimestampMs = input.ReadInt64();
            break;
          }
          case 120: {
            sponsor_ = (global::POGOProtos.Map.Fort.FortSponsor) input.ReadEnum();
            break;
          }
          case 128: {
            renderingType_ = (global::POGOProtos.Map.Fort.FortRenderingType) input.ReadEnum();
            break;
          }
        }
      }
    }

  }

  #endregion

}

#endregion Designer generated code


l(handlerCapture.getValue());
    handlerCapture.getValue().onMessage(message);

    verify(session);

    assertEquals(message, messageCapture.getValue());
  }

  @Test
  public void testGetWebSocketContainerReturnsDefaultContainerFactory() {
    System.setProperty(WebSocketServiceImpl.WEB_SOCKET_CONTAINER_FACTORY_PROPERTY, "");

    WebSocketContainer webSocketContainer;

    webSocketContainer = WebSocketServiceImpl.getWebSocketContainer();
    assertTrue(webSocketContainer instanceof ClientManager);

    System.setProperty(
        WebSocketServiceImpl.WEB_SOCKET_CONTAINER_FACTORY_PROPERTY,
        CustomWebSocketContainerFactory.class.getName());
    webSocketContainer = WebSocketServiceImpl.getWebSocketContainer();
    assertNull(webSocketContainer);
  }

  @Test(expected = RuntimeException.class)
  public void testGetWebSocketContainerFailsOnUnknownFactoryClass() {
    System.setProperty(WebSocketServiceImpl.WEB_SOCKET_CONTAINER_FACTORY_PROPERTY, "non-existing");
    WebSocketServiceImpl.getWebSocketContainer();
  }

  @Test(expected = RuntimeException.class)
  public void testGetWebSocketContainerFailsOnNonImplementingFactoryClass() {
    System.setProperty(
        WebSocketServiceImpl.WEB_SOCKET_CONTAINER_FACTORY_PROPERTY,
        CustomNonImplementingWebSocketContainerFactory.class.getName());
    WebSocketServiceImpl.getWebSocketContainer();
  }

  private static Server startServer() {
    Server server;
    while (true) {
      server = new Server("localhost", randomPort(), "/ws", new HashMap<>(), SimpleEndpoint.class);
      try {
        server.start();
        break;
      } catch (DeploymentException e) {
        // Ignore...
      }
    }

    return server;
  }

  private static URI createURI(int port) {
    return URI.create(String.format("ws://%s:%s/ws/test", "localhost", port));
  }

  private static int randomPort() {
    return RESERVED_PORTS + (Math.abs(RANDOM_PORT.nextInt()) % (MAX_PORT - RESERVED_PORTS));
  }

  @ServerEndpoint(value = "/test")
  public static class SimpleEndpoint {
    @OnMessage
    public void onMessage(String message, Session session) {
      try {
        if (PING.equals(message)) {
          session.getBasicRemote().sendText(PONG);
        } else {
          if (EMIT_LARGE_MESSAGE.equals(message)) {
            final char[] chars = new char[LARGE_MESSAGE_SIZE];
            Arrays.fill(chars, 'K');
            session.getBasicRemote().sendText(new String(chars));
          }
        }
      } catch (IOException e) {
        // Ignore this exception.
      }
    }
  }

  public static class CustomWebSocketContainerFactory implements WebSocketContainerFactory {
    @Override
    public WebSocketContainer getWebSocketContainer() {
      return null;
    }
  }

  public static class CustomNonImplementingWebSocketContainerFactory {
    public WebSocketContainer getWebSocketContainer() {
      return null;
    }
  }
}
package com.github.kklisura.cdt.utils;

/*-
 * #%L
 * cdt-java-client
 * %%
 * Copyright (C) 2018 - 2021 Kenan Klisura
 * %%
 * 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.
 * #L%
 */

import com.github.kklisura.cdt.protocol.support.types.EventHandler;
import com.github.kklisura.cdt.protocol.support.types.EventListener;
import java.


dim==1) {
		edge=1024;
		GRID1D initGrid(2,0,edge); // field 0 is c, field 1 is mu
		for (int n=0; n<nodes(initGrid); n++)
			initGrid(n)[0] = C0 + 0.25*(double(rand())/RAND_MAX) - 0.125; // produces noise with amplitude 0.125 about C=C0

		ghostswap(initGrid); // otherwise, parallel jobs have a "window frame" artifact

		for (int n=0; n<nodes(initGrid); n++) {
			vector<int> x = position(initGrid,n);
			initGrid(n)[1] = full_dfdc(initGrid(n)[0]) - K*field_laplacian(initGrid, x, 0);
		}

		output(initGrid,filename);
		//reportEnergy(initGrid);
	} else if (dim==2) {
		GRID2D initGrid(2,0,2*edge,0,edge); // field 0 is c, field 1 is mu
		for (int d=0; d<dim; d++)
			dx(initGrid,d) = deltaX;

		#ifdef VANILLA
		for (int n=0; n<nodes(initGrid); n++)
			initGrid(n)[0] = C0 + 0.25*(double(rand())/RAND_MAX) - 0.125; // produces noise with amplitude 0.125 about C=C0
		#else
		// Initial conditions after CHiMaD Phase Field Workshop benchmark problem (October 2015)
		double q[2] = {0.1*sqrt(2.0), 0.1*sqrt(3.0)}; // {0.1*sqrt(2.0), 0.1*sqrt(3.0)} produces stripes oriented 45 degrees to horizontal
		for (int n=0; n<nodes(initGrid); n++) {
			vector<int> x = position(initGrid,n);
			double wave = x[0]*dx(initGrid,0)*q[0] + x[1]*dx(initGrid,1)*q[1];
			initGrid(n)[0] = C0*(1.0 + 0.1 * std::cos(wave));
		}
		#endif

		ghostswap(initGrid); // otherwise, parallel jobs have a "window frame" artifact

		for (int n=0; n<nodes(initGrid); n++) {
			vector<int> x = position(initGrid,n);
			initGrid(n)[1] = full_dfdc(initGrid(n)[0]) - K*field_laplacian(initGrid, x, 0);
		}

		output(initGrid,filename);
		//reportEnergy(initGrid);
	} else if (dim==3) {
		GRID3D initGrid(2,0,2*edge,0,edge,0,edge/4); // field 0 is c, field 1 is mu
		for (int n=0; n<nodes(initGrid); n++)
			initGrid(n)[0] = C0 + 0.25*(double(rand())/RAND_MAX) - 0.125; // produces noise with amplitude 0.125 about C=C0

		ghostswap(initGrid); // otherwise, parallel jobs have a "window frame" artifact

		for (int n=0; n<nodes(initGrid); n++) {
			vector<int> x = position(initGrid,n);
			initGrid(n)[1] = full_dfdc(initGrid(n)[0]) - K*field_laplacian(initGrid, x, 0);
		}

		output(initGrid,filename);
		//reportEnergy(initGrid);
	}
}

template<int dim, typename T>
void update(grid<dim,vector<T> >& oldGrid, int steps)
{
	int rank=0;
	#ifdef MPI_VERSION
    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
	#endif

	ghostswap(old


ConstructorsInSuperclass, 55, 1)],
    );
  }

  test_explicit_oneFactory() async {
    await assertErrorsInCode(
      r'''
class A {
  factory A() => throw '';
}
class B extends A {
  B() : super();
  factory B.second() => throw '';
}
''',
      [error(CompileTimeErrorCode.noGenerativeConstructorsInSuperclass, 55, 1)],
    );
  }

  test_hasFactories() async {
    await assertNoErrorsInCode(r'''
class A {
  factory A() => throw '';
}
class B extends A {
  factory B() => throw '';
  factory B.second() => throw '';
}
''');
  }

  test_hasFactory() async {
    await assertNoErrorsInCode(r'''
class A {
  factory A() => throw '';
}
class B extends A {
  factory B() => throw '';
}
''');
  }

  test_implicit() async {
    await assertErrorsInCode(
      r'''
class A {
  factory A() => throw '';
}
class B extends A {
  B();
}
''',
      [error(CompileTimeErrorCode.noGenerativeConstructorsInSuperclass, 55, 1)],
    );
  }

  test_implicit2() async {
    await assertErrorsInCode(
      r'''
class A {
  factory A() => throw '';
}
class B extends A {
}
''',
      [error(CompileTimeErrorCode.noGenerativeConstructorsInSuperclass, 55, 1)],
    );
  }
}
// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'package:analyzer/src/error/codes.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';

import '../dart/resolution/context_collection_resolution.dart';

void main() {
  defineReflectiveSuite(() {
    defineReflectiveTests(DocDirectiveMissingOneArgumentTest);
  });
}

@reflectiveTest
class DocDirectiveMissingOneArgumentTest extends PubPackageResolutionTest {
  test_animation_hasOptionalIdArgument() async {
    await assertNoErrorsInCode('''
/// {@animation 600 400 http://google.com id=my-id}
class C {}
''');
  }

  test_animation_hasThreeArguments() async {
    await assertNoErrorsInCode('''
/// {@animation 600 400 http://google.com}
class C {}
''');
  }

  test_canonicalFor_hasNoArguments() async {
    await assertErrorsInCode(
      '''
/// {@canonicalFor}
class C {}
''',
      [error(WarningCode.docDirectiveMissingOneArgument, 4, 16)],
    );
  }

  test_canonicalFor_hasOneArguments() async {
    await assertNoErrorsInCode('''
/// {@canonicalFor String}
class C {}
''');
  }

  test_macro_hasNoArguments() async {
    await assertErrorsInCode(
      '''
/// {@macro}
class C {}
''',
      [error(WarningCode.docDirectiveMissingOneArgument, 4, 9)],
    );
  }

  test_youtube_hasThreeArguments() async {
    await assertNoErrorsInCode('''
/// {@youtube 600 400 https://www.youtube.com/watch?v=123}
class C {}
''');
  }

  test_youtube_missingUrl() async {
    await assertErrorsInCode(
      '''
/// {@youtube 600 400}
class C {}
''',
      [error(WarningCode.docDirectiveMissingOneArgument, 4, 19)],
    );
  }

  test_youtube_missingUrl_andCurlyBrace() async {
    await assertErrorsInCode(
      '''
/// {@youtube 600 400
class C {}
'


#ifndef VRCWTRACKINGDIM_H
#define VRCWTRACKINGDIM_H

#include <QWidget>
#include "ui_vrcwtrackingdim.h"

#include "vrcwbase.h"
#include "vrcwutils.h"

class VRCWSensorTrackSysDim;
class trackHwValDim;

class VRCWTrackingDim : public QWidget, public VRCWBase
{
   Q_OBJECT

public:
   /*****
    * constructor - destructor
    *****/
   VRCWTrackingDim(QWidget *parent = 0);
   ~VRCWTrackingDim();

   /*****
    * functions
    *****/
   // Angepasste Version der virtuellen Funktion der Basisklasse VRCWBase
   // Bearbeitung und Ueberpruefung der Eingaben im GUI
   int processGuiInput(const QList<VRCWBase*>& vrcwList);

   //set thwvdData and setup GUI
   void setTHwVDData(trackHwValDim*& thwvd);

   //set head sensor 0 (ConstHead) Offset with vPos
   //from dimPowerwall or dimCave
   void setCHeadOffset(QVector<int>& vPos);

private:
   /*****
    * GUI Elements
    *****/
   Ui::VRCWTrackingDimClass ui;

   /*****
    * functions
    *****/
   // setup GUI
   void setupGui();

   // Auslesen des GUI

   /*****
    * variables
    *****/
   VRCWSensorTrackSysDim* trackingSystem;
   VRCWSensorTrackSysDim* handSensor_1;
   VRCWSensorTrackSysDim* handSensor_2;
   VRCWSensorTrackSysDim* handSensor_3;
   VRCWSensorTrackSysDim* headSensor_0;
   VRCWSensorTrackSysDim* headSensor_1;
   VRCWSensorTrackSysDim* headSensor_2;
   VRCWSensorTrackSysDim* headSensor_3;
   QVector<VRCWSensorTrackSysDim*> handSensors;
   QVector<VRCWSensorTrackSysDim*> headSensors;
   trackHwValDim* thwvdData;
   //store old values
   trackSys tSysOld;
   QVector<btnSys> bSysOld;

};

#endif // VRCWTRACKINGDIM_H


:12px 8px 3px;cursor:pointer}.ms-Breadcrumb-overflowMenu{display:none;position:absolute}.ms-Breadcrumb-overflowMenu.is-open{display:block;top:36px;left:0;box-shadow:0 0 5px 0 rgba(0,0,0,.4);background-color:#fff;border:1px solid #c8c8c8;z-index:105}.ms-Breadcrumb-overflowMenu:before{position:absolute;box-shadow:0 0 5px 0 rgba(0,0,0,.4);top:-6px;left:6px;content:' ';width:16px;height:16px;transform:rotate(45deg);background-color:#fff}.ms-Breadcrumb-overflowMenu .ms-ContextualMenu{border:none;box-shadow:none;position:relative;width:190px}.ms-Breadcrumb-overflowMenu .ms-ContextualMenu.is-open{margin-bottom:0}.ms-Breadcrumb-itemLink,.ms-Breadcrumb-overflowButton{text-decoration:none;outline:transparent}.ms-Breadcrumb-itemLink:hover,.ms-Breadcrumb-overflowButton:hover{background-color:#f4f4f4;cursor:pointer}.ms-Breadcrumb-itemLink:focus,.ms-Breadcrumb-overflowButton:focus{outline:1px solid #767676;color:#000}.ms-Breadcrumb-itemLink:active,.ms-Breadcrumb-overflowButton:active{outline:transparent;background-color:#c8c8c8}.ms-Breadcrumb-itemLink{color:#333;font-family:Segoe UI Light WestEuropean,Segoe UI Light,Segoe UI,Tahoma,Arial,sans-serif;font-size:21px;font-weight:400;display:inline-block;padding:0 4px;max-width:160px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}@media screen and (max-width:639px){.ms-Breadcrumb{margin:10px 0}.ms-Breadcrumb-itemLink{font-size:17px}.ms-Breadcrumb-chevron{font-size:14px;margin-top:7px}.ms-Breadcrumb-overflow .ms-Breadcrumb-overflowButton{padding-top:8px;padding-bottom:3px}}@media screen and (max-width:479px){.ms-Breadcrumb-itemLink{font-size:14px;max-width:116px}.ms-Breadcrumb-chevron{margin-top:4px}.ms-Breadcrumb-overflow .ms-Breadcrumb-overflowButton{padding-top:5px;padding-bottom:3px}}.ms-Button{color:#333;font-family:Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;font-size:14px;font-weight:400;box-sizing:border-box;margin:0;padding:0;box-shadow:none;background-color:#f4f4f4;border:1px solid #f4f4f4;cursor:pointer;display:inline-block;height:32px;min-width:80px;padding:4px 20px 6px}.ms-Button:hover{background-color:#eaeaea;border-color:#eaeaea;outline:1px solid transparent}.ms-Button:hover .ms-Button-label{color:#000}.ms-Button:focus{background-color:#eaeaea;border-color:#0078d7;outline:1px solid transparent}.ms-Button:focus .ms-Button-label{color:#000}.ms-Button:active{background-color:#0078d7;border-color:#0078d7}.ms-Button:active .ms-Button-label{color:#fff}.ms-Button.is-disabled,.ms-Button:disabled{background-color:#f4f4f4;border-color:#f4f4f4;cursor:default}.ms-Button.is-disabled .ms-Button-label,.ms-Button:disabled .ms-Button-label{color:#a6a6a6}.ms-Button.is-disabled:focus,.ms-Bu