프로그램 사용/VLC2010. 4. 22. 11:06
http://192.168.10.94:8080/?control=pause

현재 사용중인 PC의 ip가 192.168.10.94 이고, VLC 에서 웹 인터페이스를 켜놨을 경우
위와 같이 URL을 입력하면 플레이 중인 동영상이 일시정지 된다.
pause는 토글 방식으로, 한번 보내면 멈추고, 다시 보내면 재생된다.

위는 dreambox에서 PC의 VLC로 원격명령을 날리는 부분을, wireshark로 캡쳐한 화면

2010/04/21 - [프로그램 사용/VLC] - VLC를 웹 쿼리로 제어하기 - VLC web control

'프로그램 사용 > VLC' 카테고리의 다른 글

VLC - V4L2 modules  (0) 2010.07.03
VLC 1.1.0 Luggage  (0) 2010.07.03
VLC를 웹 쿼리로 제어하기 - VLC web control  (0) 2010.04.21
x264 와 h264의 관계?  (0) 2010.04.15
VLC nightly build  (0) 2010.04.13
Posted by 구차니
프로그램 사용/VLC2010. 4. 21. 15:08
VLC 에는 web interface 라는 넘이 있는데,
이녀석을 원격지에서 http query를 통해 제어가 가능하다.

윈도우에서 기본설치시
C:\Program Files\VideoLAN\VLC\http\requests 경로에 존재하는 파일을 읽어보면 될 듯 하다.

웹에서 접속시에는
http://localhost:8080/requests/filename.xml?query
식으로 하면된다.

아래는 readme.txt 파일
$Id$

This file describes commands available through the requests/ file:

Lines starting with < describe what the page sends back
Lines starting with > describe what you can send to the page

All parameters need to be URL encoded.
Examples:
 # -> %23
 % -> %25
 + -> %2B
 space -> +
 ...

status.xml:
===========
< Get VLC status information, current item info and meta.

> add <mrl> to playlist and start playback:
  ?command=in_play&input=<mrl>

> add <mrl> to playlist:
  ?command=in_enqueue&input=<mrl>

> play playlist item <id>:
  ?command=pl_play&id=<id>

> toggle pause. If current state was 'stop', play item <id>:
  ?command=pl_pause&id=<id>

> stop playback:
  ?command=pl_stop

> jump to next item:
  ?command=pl_next

> jump to previous item:
  ?command=pl_previous

> delete item <id> from playlist:
  ?command=pl_delete&id=<id>

> empty playlist:
  ?command=pl_empty

> sort playlist using sort mode <val> and order <id>:
  ?command=pl_sort&id=<id>&val=<val>
  If id=0 then items will be sorted in normal order, if id=1 they will be
  sorted in reverse order
  A non exhaustive list of sort modes:
    0 Id
    1 Name
    3 Author
    5 Random
    7 Track number

> toggle random playback:
  ?command=pl_random

> toggle loop:
  ?command=pl_loop

> toggle repeat:
  ?command=pl_repeat

> toggle enable service discovery module <val>:
  ?command=pl_sd&val=<val>
  Typical values are:
    sap
    shoutcast
    podcast
    hal

> toggle fullscreen:
  ?command=fullscreen

> set volume level to <val> (can be absolute integer, percent or +/- relative value):
  ?command=volume&val=<val>
  Allowed values are of the form:
    +<int>, -<int>, <int> or <int>%

> seek to <val>:
  ?command=seek&val=<val>
  Allowed values are of the form:
    [+ or -][<int><H or h>:][<int><M or m or '>:][<int><nothing or S or s or ">]
    or [+ or -]<int>%
    (value between [ ] are optional, value between < > are mandatory)
  examples:
    1000 -> seek to the 1000th second
    +1H:2M -> seek 1 hour and 2 minutes forward
    -10% -> seek 10% back

playlist.xml:
=============
< get the full playlist tree

browse.xml:
===========
< ?dir=<dir>
> get <dir>'s filelist

vlm.xml:
========
< get the full list of VLM elements

vlm_cmd.xml:
============
< execute VLM command <cmd>
  ?command=<cmd>
> get the error message from <cmd>



[링크 : http://forum.videolan.org/viewtopic.php?f=16&t=45842]

2009/12/08 - [프로그램 사용/VLC] - VLC 웹 인터페이스 원격지에서 안될경우
2009/11/24 - [프로그램 사용/VLC] - VLC web interface(웹 인터페이스)
Posted by 구차니
저번에 안되도록 막힌 방법처럼 간단하진 않지만.
어쩌면 구식 방법으로 다운로드 하는것과 유사한 방법으로 VLC에서 동영상 재생이 가능한 방법이다.

1. video ID를 알아낸다.
2. token을 알아낸다.
3. vlc에 네트워크 스트림에 붙여넣는다.
http://www.youtube.com/get_video?video_id=[video_id]&t=[token_value]

video ID는 주소표시줄에 나오지만,
token은 그 페이지에서 java script중에 &t= 으로 검색하면 나온다.

2010/04/13 - Dreambox youtube VLC
Posted by 구차니
회사일/enigma2010. 4. 13. 14:20
VLC 1.0.5 에서는 .hosts 파일을 수정해서 외부에서 접속을 하게 해도 컨트롤이 되지 않는다.
예전에 보안상의 차이점이 있는건 확인했지만, 내부적으로 얼마나 바뀐건진 모르겠고

VLC 0.8.6 버전은 Enigma의 YoutubeplayerE1 과 연동이 이상없이 잘된다.

위는 vlc web interface를 통해본 youtube 플레이 주소

http://www.youtube.com/get_video?video_id=SKApWIUdW04&amp;feature=youtube_gdata&sk=GKryLbgUV8stfYVg4AOwLbInoiMQKix_C&t=vjVQa1PpcFNAC3oy1pAOoTswIowYvc1anZx7GC2w-wU%3D

특이하게도(?) &t 값을 통해 토큰이 들어가 있다.


도움은 안된 관련내용
[링크 : http://forum.videolan.org/viewtopic.php?f=14&t=49538]
[링크 : http://www.techwatch.co.uk/forums/21899-streaming-from-linux-enigma-receivers-to-windows-ppc.html]
[링크 : http://www.satellites.co.uk/forums/dreambox-support-forum/]
Posted by 구차니
프로그램 사용/VLC2010. 3. 17. 14:38
build server는 Fedora Core6를 쓰고  glibc2.5를 사용한다.
그리고 target 역시 glibc2.5를 사용한다.


그런데.. vlc-1.0.5는 glibc2.5-2.8은 thread-safe 하지 않다고 거부한다 ㄱ-

아래와 같은 에러가 발생하는데
libtool: link: warning: library `/opt/STM/STLinux-2.2/devkit/sh4/target/usr/lib/libdbus-1.la' was moved.
...
../src/.libs/libvlc.so: undefined reference to `__vasprintf_chk'
../src/.libs/libvlc.so: undefined reference to `__asprintf_chk'
collect2: ld returned 1 exit status
내가 사용하는 타켓의 경로도 아니고.
묘한 곳에서 묘한 녀석을 링킹하면서 에러를 발생한다.

간단한 해결책이라고 생각했던 녀석으로
위의 la 파일의 libdir 변수를 수정해도 libtool: link: warning 하나만 사라질뿐 여전히 컴파일은 되지 않는다.
# libdbus-1.la - a libtool library file
# Generated by ltmain.sh - GNU libtool 1.5.10 (1.1220.2.130 2004/09/19 12:13:49)
#
# Please DO NOT delete this file!
# It is necessary for linking the library.

# The name that we can dlopen(3).
dlname='libdbus-1.so.2'

# Names of this library.
library_names='libdbus-1.so.2.0.0 libdbus-1.so.2 libdbus-1.so'

# The name of the static archive.
old_library='libdbus-1.a'

# Libraries that this one depends upon.
dependency_libs='-lnsl'

# Version information for libdbus-1.
current=2
age=0
revision=0

# Is this an already installed library?
installed=yes

# Should we warn about portability when linking against -modules?
shouldnotlink=no

# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''

# Directory that this library needs to be installed in:
libdir='/usr/lib'

그리고 지뢰밭을 피하는 방법으로 자주 검색되던 아래의 글역시
결과적으로 모든 la 파일의 내용을 변경해주어야 하는 번거로움이 생긴다.

[링크 : http://www.metastatic.org/text/libtool.html]

그런데, 저 wasprintf 가 머하는 녀석인가 검색을 해봤더니
glibc2.8에서 지원하는 함수라고 한다. 현재 사용하는건 2.5 버전이니 당연히 저런 함수가 존재할리 없고
그런 이유로 glibc를 업그레이드 하기 전에는 딱히 방법이 없어 보인다.

[링크 : http://infomaru.com/?mid=os_linux_basic&listStyle=gallery&document_srl=6197]

'프로그램 사용 > VLC' 카테고리의 다른 글

x264 와 h264의 관계?  (0) 2010.04.15
VLC nightly build  (0) 2010.04.13
VLC GLIBC runtime error  (0) 2010.03.16
VLC 1.0.5 컴파일시 magic.h 오류  (0) 2010.03.10
x264 , libavcodec 다운로드  (0) 2010.02.24
Posted by 구차니
프로그램 사용/VLC2010. 3. 16. 15:53
glibc 2.5 에서 2.7 사이의 gettext()는 쓰레드에 안전하기 않기 때문에
VLC에서 상기버전의 glibc를 사용하고 있다면 실행시에 에러를 발생하고 실행을 하지 않는다.

vlc-1.0.5/src/misc/linux_specific.c 파일의 75라인부터 아래의 내용이 존재한다.
#ifdef __GLIBC__
# include 
# include 
#endif

void system_Init (libvlc_int_t *libvlc, int *argc, const char *argv[])
{
#ifdef __GLIBC__
    const char *glcv = gnu_get_libc_version ();

    /* gettext in glibc 2.5-2.7 is not thread-safe. LibVLC keeps crashing,
     * especially in sterror_r(). Even if we have NLS disabled, the calling
     * process might have called setlocale(). */
    if (strverscmp (glcv, "2.5") >= 0 && strverscmp (glcv, "2.8") < 0)
    {
        fputs ("LibVLC has detected an unusable buggy GNU/libc version.\n"
               "Please update to version 2.8 or newer.\n", stderr);
        fflush (stderr);
#ifndef DISABLE_BUGGY_GLIBC_CHECK
        abort ();
#endif
    }
#endif

그리고 vlc-1.0.5/configure.ac 의 532 라인에는 다음과 같은 내용이 존재한다.
dnl
dnl Buggy glibc prevention. Purposedly not cached.
dnl Ubuntu alone has 20 bug numbers for this...
dnl
AC_MSG_CHECKING(for buggy GNU/libc versions)
AC_PREPROC_IFELSE([
#include <limits.h>
#if defined (__GLIBC__) && (__GLIBC__ == 2) \
  && (__GLIBC_MINOR__ >= 5) && (__GLIBC_MINOR__ <= 7)
# error GNU/libc with dcgettext killer bug!
#endif
], [
  AC_MSG_RESULT([not present])
], [
  AC_MSG_RESULT([found])
  AS_IF([test "x${enable_nls}" != "xno" || test "x${enable_mozilla}" != "xno"], [
    AC_MSG_ERROR([Buggy GNU/libc (version 2.5 - 2.7) present. VLC would crash; there is no viable
work-around for this. Check with your distribution vendor on how to update the
glibc run-time. Alternatively, build with --disable-nls --disable-mozilla and
be sure to not use LibVLC from other applications/wrappers.])
  ], [
    AC_DEFINE(DISABLE_BUGGY_GLIBC_CHECK, 1, [Disables runtime check for buggy glibc.])
  ])
])

위의 abort(); 를 주석처리 하거나
DISABLE_BUGGY_CLIBC_CHECK를 미리 선언하거나 하면 될꺼 같은데 어떻게 해야 하려나?
(아무튼 abort(); 를 주석처리 하면 실행은 된다.)

'프로그램 사용 > VLC' 카테고리의 다른 글

VLC nightly build  (0) 2010.04.13
VLC 크로스컴파일 - 멀고도 험하다 ㅠ.ㅠ  (0) 2010.03.17
VLC 1.0.5 컴파일시 magic.h 오류  (0) 2010.03.10
x264 , libavcodec 다운로드  (0) 2010.02.24
vlc-1.0.5 cross compile  (3) 2010.02.09
Posted by 구차니
회사일2010. 3. 11. 10:53
겨우겨우 컴파일 해놓고 보니.. 이런 레알 십라 ㄱ-

# vlc
VLC media player 1.0.5 Goldeneye
LibVLC has detected an unusable buggy GNU/libc version.
Please update to version 2.8 or newer.
Aborted

이런건 좀.. 컴파일이나 configure 레벨에서 경고를 하던가 에러를 내던가
경고도 눈에 좀 팍팍들어 오게 하던가!!! ㅠ.ㅠ



..
요즘 대세는 git인가 ㄱ-
예전에 git를 소스로 깔아놓아서 다행.. 안했음 또 삽질삽질 - 무한 삽질!!
[링크 : http://www.gnu.org/software/libc/]

'회사일' 카테고리의 다른 글

SH4 관련 정보  (0) 2010.05.03
oscam - open source CAM  (4) 2010.04.06
인증서 복사하기  (0) 2010.03.04
H.26x MPEG2, MPEG4  (6) 2010.01.19
ERP, SCM, CRM, EIS, MIS, DSS  (0) 2009.12.17
Posted by 구차니
프로그램 사용/VLC2010. 3. 10. 16:28
컴파일 하다보니 요런 에러를 뱉어 주신다.
혹시나 해서 모든 헤더파일을 검색해서 아래와 같은 정의는 Fedora Core 6에도 존재하지 않는다.
도대체.. FC6에서는 VLC도 설치 못하는건가?

아무튼, 아래의 *_SUPER_MAGIC 선언을 포함한 헤더는
/usr/include/linux/magic.h 에 존재해야 하며
/usr/include/magic.h 를 링크한다고 해서 되진않는다.

#ifndef __LINUX_MAGIC_H__
#define __LINUX_MAGIC_H__

#define ADFS_SUPER_MAGIC        0xadf5
#define AFFS_SUPER_MAGIC        0xadff
#define AFS_SUPER_MAGIC                0x5346414F
#define AUTOFS_SUPER_MAGIC      0x0187
#define CODA_SUPER_MAGIC        0x73757245
#define CRAMFS_MAGIC            0x28cd3d45      /* some random number */
#define CRAMFS_MAGIC_WEND       0x453dcd28      /* magic number with the wrong endianess */
#define DEBUGFS_MAGIC          0x64626720
#define SYSFS_MAGIC             0x62656572
#define SECURITYFS_MAGIC        0x73636673
#define SELINUX_MAGIC           0xf97cff8c
#define RAMFS_MAGIC             0x858458f6      /* some random number */
#define TMPFS_MAGIC             0x01021994
#define HUGETLBFS_MAGIC         0x958458f6      /* some random number */
#define SQUASHFS_MAGIC          0x73717368
#define EFS_SUPER_MAGIC         0x414A53
#define EXT2_SUPER_MAGIC        0xEF53
#define EXT3_SUPER_MAGIC        0xEF53
#define XENFS_SUPER_MAGIC       0xabba1974
#define EXT4_SUPER_MAGIC        0xEF53
#define BTRFS_SUPER_MAGIC       0x9123683E
#define HPFS_SUPER_MAGIC        0xf995e849
#define ISOFS_SUPER_MAGIC       0x9660
#define JFFS2_SUPER_MAGIC       0x72b6
#define ANON_INODE_FS_MAGIC     0x09041934

#define MINIX_SUPER_MAGIC       0x137F          /* original minix fs */
#define MINIX_SUPER_MAGIC2      0x138F          /* minix fs, 30 char names */
#define MINIX2_SUPER_MAGIC      0x2468          /* minix V2 fs */
#define MINIX2_SUPER_MAGIC2     0x2478          /* minix V2 fs, 30 char names */
#define MINIX3_SUPER_MAGIC      0x4d5a          /* minix V3 fs */

#define MSDOS_SUPER_MAGIC       0x4d44          /* MD */
#define NCP_SUPER_MAGIC         0x564c          /* Guess, what 0x564c is :-) */
#define NFS_SUPER_MAGIC         0x6969
#define OPENPROM_SUPER_MAGIC    0x9fa1
#define PROC_SUPER_MAGIC        0x9fa0
#define QNX4_SUPER_MAGIC        0x002f          /* qnx4 fs detection */

#define REISERFS_SUPER_MAGIC    0x52654973      /* used by gcc */
                                        /* used by file system utilities that
                                           look at the superblock, etc.  */
#define REISERFS_SUPER_MAGIC_STRING     "ReIsErFs"
#define REISER2FS_SUPER_MAGIC_STRING    "ReIsEr2Fs"
#define REISER2FS_JR_SUPER_MAGIC_STRING "ReIsEr3Fs"

#define SMB_SUPER_MAGIC         0x517B
#define USBDEVICE_SUPER_MAGIC   0x9fa2
#define CGROUP_SUPER_MAGIC      0x27e0eb

#define FUTEXFS_SUPER_MAGIC     0xBAD1DEA

#define STACK_END_MAGIC         0x57AC6E9D

#define DEVPTS_SUPER_MAGIC      0x1cd1
#define SOCKFS_MAGIC            0x534F434B

#endif /* __LINUX_MAGIC_H__ */


[링크 : http://tomoyo.sourceforge.jp/cgi-bin/lxr/source/include/linux/magic.h]

libtool: compile:  gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I../.. -I../../include -I../../include -DSYS_LINUX -I/usr/local/include -D_FI
LE_OFFSET_BITS=64 -D__USE_UNIX98 -D_LARGEFILE64_SOURCE -D_REENTRANT -D_THREAD_SAFE -D__LIBVLC__ -D__PLUGIN__ -DMODULE_NAME=access_fi
le -DMODULE_NAME_IS_access_file -DMODULE_STRING=\"access_file\" -O2 -ffast-math -funroll-loops -fomit-frame-pointer -Wall -Wextra -W
sign-compare -Wundef -Wpointer-arith -Wbad-function-cast -Wcast-align -Wwrite-strings -Wmissing-prototypes -Wvolatile-register-var -
Werror-implicit-function-declaration -MT libaccess_file_plugin_la-file.lo -MD -MP -MF .deps/libaccess_file_plugin_la-file.Tpo -c fil
e.c  -fPIC -DPIC -o .libs/libaccess_file_plugin_la-file.o
In file included from ../../include/vlc_common.h:516,
                 from file.c:33:
../../include/vlc_mtime.h:80: warning: 'error' attribute directive ignored
../../include/vlc_mtime.h:90: warning: 'warning' attribute directive ignored
../../include/vlc_mtime.h:108: warning: 'error' attribute directive ignored
file.c: In function 'IsRemote':
file.c:142: error: 'AFS_SUPER_MAGIC' undeclared (first use in this function)
file.c:142: error: (Each undeclared identifier is reported only once
file.c:142: error: for each function it appears in.)
file.c:143: error: 'CODA_SUPER_MAGIC' undeclared (first use in this function)
file.c:144: error: 'NCP_SUPER_MAGIC' undeclared (first use in this function)
file.c:145: error: 'NFS_SUPER_MAGIC' undeclared (first use in this function)
file.c:146: error: 'SMB_SUPER_MAGIC' undeclared (first use in this function)


'프로그램 사용 > VLC' 카테고리의 다른 글

VLC 크로스컴파일 - 멀고도 험하다 ㅠ.ㅠ  (0) 2010.03.17
VLC GLIBC runtime error  (0) 2010.03.16
x264 , libavcodec 다운로드  (0) 2010.02.24
vlc-1.0.5 cross compile  (3) 2010.02.09
VLC cross compile시 오류 (vlc-1.0.4)  (0) 2010.02.03
Posted by 구차니
회사일/STLinux2010. 3. 9. 15:55
pkg-config는 라이브러리의 컴파일 당시 옵션이나
링킹시 필요한 옵션을 알려주는 역활을 하는 녀석이라고 한다.

아무튼 pkg-config가 존재하지 않는 시스템에서(예를 들어 STLinux Target)
vlc를 컴파일하려고 하니 에러가 발생한다(Fedora Core 6에는 존재한다.)

이러니 별별 변수를 다 쓰고
/usr/local/lib/pkg-config/*.pc
파일까지 복사해줘도 안되지 ㄱ-

vlc 컴파일 옵션중
# ./configure --help | grep AVCODEC
  AVCODEC_CFLAGS
              C compiler flags for AVCODEC, overriding pkg-config
  AVCODEC_LIBS
              linker flags for AVCODEC, overriding pkg-config
이녀석을 설정해도 안되고,
컴파일 시에도 이러한 에러가 나오지만 무시하고 넘어간다.
checking pkg-config is at least version 0.9.0... ./configure: line 23831: pkg-config: command not found
no

중요한건
혹시 모를
PKG_CONFIG_PATH 경로를 확인해야 한다는 점이다.
FC6에서는 /usr/local/lib/pkgconfig 였는데
타겟에서는 /lib/pkgconfig 였다 ㄱ-

pkg-config is a helper tool used when compiling applications and libraries. It helps you insert the correct compiler options on the command line so an application can use  gcc -o test test.c `pkg-config --libs --cflags glib-2.0`  for instance, rather than hard-coding values on where to find glib (or other libraries). It is language-agnostic, so it can be used for defining the location of documentation tools, for instance.

[링크 : http://pkg-config.freedesktop.org/wiki/]

[링크 : http://pkgconfig.freedesktop.org/releases/]
          pkg-config-0.23.tar.gz    16-Jan-2008 14:54     1.0M
[링크 : http://forum.videolan.org/viewtopic.php?f=2&t=68869]
[링크 : http://kldp.org/node/47612]
Posted by 구차니
프로그램 사용/VLC2010. 2. 2. 16:48
VLC 1.0.4
ubuntu 9.10 에서 크로스 컴파일을 시도했다.

$ ./configure --disable-mmx --disable-sse --enable-run-as-root --with-tuning=no --host=sh4-linux --build=i686

$ vi configure.ac
1621 dnl
1622 dnl  Special arch tuning
1623 dnl
1624 AC_ARG_WITH(tuning,
1625 [  --with-tuning=ARCH      enable special tuning for an architecture
1626                           (default Pentium 2 on IA-32 and G4 on PPC)])
1627 if test -n "${with_tuning}"; then
1628     if test "${with_tuning}" != "no"; then
1629         CFLAGS_TUNING="-mtune=${with_tuning}"
1630     fi
1631 else
1632     if test "${SYS}" = "darwin" -a "${host_cpu}" != "powerpc"; then
1633         CFLAGS_TUNING="-march=pentium-m -mtune=prescott"
1634     elif test "${host_cpu}" = "i686" -o "${host_cpu}" = "i586" -o "${host_cpu}" = "i486" -o "${host_cpu}" = "i386"; then
1635         CFLAGS_TUNING="-mtune=pentium2"
1636     elif test "${host_cpu}" = "x86_64"; then
1637         CFLAGS_TUNING="-mtune=athlon64"
1638     elif test "${host_cpu}" = "powerpc"; then
1639         CFLAGS_TUNING="-mtune=G4";
1640     fi
1641 fi

그리고 ubuntu 에서 sudo vlc 하면
$ sudo vlc
VLC is not supposed to be run as root. Sorry. If you need to use real-time priorities and/or privileged TCP ports
you can use vlc-wrapper (make sure it is Set-UID root and cannot be run by non-trusted users first).
라는 메시지가 출력되면서 실행되지 않는다. busybox나 대부분의 embeded 에서는 root로 할테니
크로스 컴파일 시에 root로 실행가능하도록 수정하고 (--enable-run-as-root)
cpu 최적화 부분을 꺼준다음 (--disable-mmx --disable-sse --with-tuning=no)
크로스 컴파일 되서 돌아갈 host를 지정해준다. (--host=sh4-linux)

좀 특이한(?) 점인데 --host=HOST_ARCH(==i686) --target=TARGET_ARCH(==sh4-linux)
처럼 입력이 되는게 아니라 host는 프로그램이 돌아갈 플랫폼을 의미한다.
즉, 일반적인 크로스 컴파일 옵션의 host, target 옵션이 바뀌어 build, host 로 인식한다.

$ ./configure --help

System types:
  --build=BUILD     configure for building on BUILD [guessed]
  --host=HOST       cross-compile to build programs to run on HOST [BUILD]

'프로그램 사용 > VLC' 카테고리의 다른 글

vlc-1.0.5 cross compile  (3) 2010.02.09
VLC cross compile시 오류 (vlc-1.0.4)  (0) 2010.02.03
의미는 없는 Linux / Windows VLC 차이  (0) 2010.01.26
VLC로 youtube 동영상 감상하기  (0) 2010.01.26
youtube mobile on VLC  (0) 2010.01.18
Posted by 구차니